Generator

One cost follows the array and the other does not

Rendered here at the parameters it defaults to, with every essay that calls it — which is the same list as the blast radius of changing it.
One cost follows the array and the other does notReads a query, averaged over 80 random ranges at each size. One act is one memory access the structure chose to make: a node visited in the segment tree, a table or array entry read in the succinct one. The tree goes from 23.1 to 41.9 across a 64x growth in the array, which is its two logarithms; the succinct structure goes from 15.4 to 16.9, which is flat, because a query is a fixed number of lookups whatever the array holds. The two answered every range identically.0102030401e+42e+43e+4values in the arrayreads a querythe segment treesuccinct80 queries a size2.49x apart

One cost follows the array and the other does not

Reads a query, averaged over 80 random ranges at each size. One act is one memory access the structure chose to make: a node visited in the segment tree, a table or array entry read in the succinct one. The tree goes from 23.1 to 41.9 across a 64x growth in the array, which is its two logarithms; the succinct structure goes from 15.4 to 16.9, which is flat, because a query is a fixed number of lookups whatever the array holds. The two answered every range identically.

Drawn at 700 × 420, wide on the page. Everything above is what rmq-work returns with no arguments; the caption is the generator's own, computed from the numbers in the drawing rather than written beside it.

4 essays call rmq-work. The drawing above is what it returns with no arguments at all; every call below passes it something, because a placement that passes nothing draws whichever member of the family the generator happens to default to rather than the one its essay argues about — which is what optcheck and figfill exist to catch.

Where it is called

Changing this generator changes every one of these figures.

The library, page 3 of 5 — where rmq-work sits