Generator

The two halves, and the two parts one of them does not need

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.
The two halves, and the two parts one of them does not needA bidirectional index over 8,192 characters, sampling every 32 rows, drawn as the five parts each half is made of. The reverse half exists to be counted in: an extension asks it for ranks and never for a position, because its rows are positions in a text written backwards and the occurrences a search reports come out of the forward interval. So the marks and the sampled positions — the pale rows — can go, and what is left still answers every question anything asks it. That is 11,791 bits of 70,610, or 16.7% of the whole structure.forward · wavelet tree18,377forward · rank directories5,037forward · C table100forward · sample marks8,193forward · sampled positions3,598reverse · wavelet tree18,377reverse · rank directories5,037reverse · C table100reverse · sample marks8,193droppedreverse · sampled positions3,598dropped8,192 characters · sampling every 3216.7% of both halves

The two halves, and the two parts one of them does not need

A bidirectional index over 8,192 characters, sampling every 32 rows, drawn as the five parts each half is made of. The reverse half exists to be counted in: an extension asks it for ranks and never for a position, because its rows are positions in a text written backwards and the occurrences a search reports come out of the forward interval. So the marks and the sampled positions — the pale rows — can go, and what is left still answers every question anything asks it. That is 11,791 bits of 70,610, or 16.7% of the whole structure.

Drawn at 700 × 362, wide on the page. Everything above is what half-index 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 half-index. 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 2 of 5 — where half-index sits