Neither sparse nor dense

An offset that bends twice

A hierarchical matrix's cheapest leaf can be named by one build at a leaf of 8, and a rank guessed from the tolerance alone names it on smooth kernels and misses on oscillatory ones. The repair proposed was a term in the frequency: the oscillatory kernels sat two thirds of a rank and one and a half ranks above 1/r at frequencies 40 and 120, and the prediction was a fixed step each time the frequency triples. On five frequencies from 13⅓ to 1,080 the step is a third of a rank, then one, then one and a half, then a third again — a curve that bends twice. The last bend is the smallest blocks filling up: at the tightest tolerance every 8-wide block is at full rank from 360 on. No fixed term reproduces it, and the one build that reads it directly still names the cheapest leaf on thirteen cells of fifteen, never storing two per cent too much, where the uncorrected guess misses seven by up to nine.

Worth reading first: The offset that moved the slope · Which pairs are allowed to be small · A block nobody can call sparse.

One build tells the leaf settled what a hierarchical-matrix code needs to know to choose its leaf. The rule from a quarter of the leaf — halve the leaf while the mean rank at half the leaf is below a quarter of it — names the cheapest leaf on almost every one of thirty cells, six kernels at five tolerances, but it reads ranks that exist only after the matrix has been compressed at every candidate leaf. Fed instead the mean rank of a single build at a leaf of 8, it named the cheapest leaf on twenty-nine cells of thirty. Fed a rank guessed from the tolerance alone, one rank per two decades, it named twenty-three and was blind to the kernel. And doubling the guess for the two oscillatory kernels made it worse, because an oscillation does not double the rank. It adds to it.

Its last section proposed to measure what the oscillation adds and turn it into a formula. “The two oscillatory kernels sit two thirds of a rank and about one and a half ranks above 1/r1/r, at frequencies of 40 and 120. If the offset grows like the logarithm of the frequency times the block size — the number of wavelengths a block spans — a guess of the form ‘half a rank a decade, plus a term in the wavelengths’ would put the rule of thumb’s oscillatory cells right without constructing anything. The prediction is that the offset at a leaf of 8 rises by a fixed amount each time the frequency triples. Three more frequencies on the same grid would say.”

Three more frequencies say no. The offset rises slowly, then by about a rank a tripling, then slowly again, and the reason for each bend is a different property of the same blocks.

Five frequencies a tripling apart

The setting is the earlier essays’, built on the partition which pairs are allowed to be small introduced: four numbers per pair of clusters decide whether their block may be compressed, and no entry of the matrix is read to decide it. The kernel cos⁡(κr)/r\cos(\kappa r)/r is sampled on 512 points of the unit interval, shifted by one grid spacing off the singularity, and represented as a hierarchical matrix with strong admissibility: a pair of clusters is stored as two thin factors when they are far enough apart relative to their size, and densely otherwise. Each admissible block keeps as many singular values as are above the tolerance times its largest, so its rank is a number of digits as much as a property of the kernel, the dependence a rank that is a number of digits measured on a smooth kernel at about half a column a decade. The partition is geometric and the same at every frequency: at a leaf of 8 it has 532 blocks, 342 of them low-rank and 186 of those exactly 8 wide.

The frequencies are κ=1313\kappa = 13\tfrac13, 40, 120, 360 and 1,080 — the earlier essay’s two, one below them and two above, each three times the last. The offset is the mean rank of the low-rank blocks at a leaf of 8, less the same mean for 1/r1/r at the same tolerance. It is measured at five tolerances, from 10−410^{-4} to 10−1210^{-12}.

How far cos(κr)/r's mean rank at a leaf of 8 sits above 1/r's, against the frequency, at a tolerance of 10 to the minus 8On a 512-point grid, the mean rank of the low-rank blocks at a leaf of 8 for the oscillatory kernel less that for 1/r, at frequencies 13⅓, 40, 120, 360 and 1,080, each three times the last, on a logarithmic axis. At this tolerance: 13⅓, 0.30; 40, 0.65; 120, 1.81; 360, 3.04; 1080, 3.76. The dashed line extends the step from 40 to 120 at a fixed amount a tripling; the other tolerances are drawn faint.10 to the minus 8κ = 13⅓: offset0.3κ = 40: offset0.65κ = 120: offset1.8κ = 360: offset3κ = 1080: offset3.801234frequency κ, each tick three times the lastranks above 1/r13⅓401203601080fixed step a triplingmeasuredfaint: the other four tolerancesthe curve bends twice
Fig. 1 The oscillatory kernel’s mean rank above 1/r1/r’s at a leaf of 8 against the frequency, each tick three times the last. The dashed line extends the step from 40 to 120 at a fixed amount a tripling; the other tolerances are faint. The dial sets the tolerance.

At a tolerance of 10−810^{-8} the offsets are 0.30, 0.65, 1.81, 3.04 and 3.76. A fixed step a tripling would draw a straight line on that axis. The measured curve starts below the line, rises above it, and flattens. The dial shows the same shape at every tolerance: at 10−410^{-4} the offsets are 0.35, 0.58, 1.41, 2.30 and 2.67; at 10−1210^{-12}, 0.21, 0.59, 1.58, 3.24 and 3.42.

The steps, and how far they are from fixed

How much the oscillatory rank offset grows each time the frequency triples, averaged over five tolerances, with the rangeThe increase in the offset over 1/r at a leaf of 8 from each frequency to three times it. 13⅓ to 40: 0.28 ranks on average, from 0.10 to 0.38; 40 to 120: 0.95 ranks on average, from 0.67 to 1.15; 120 to 360: 1.39 ranks on average, from 0.89 to 1.94; 360 to 1080: 0.38 ranks on average, from 0.00 to 0.72.00.511.52ranks added by one triplingκ from 13⅓ to 400.28κ from 40 to 1200.95κ from 120 to 3601.39κ from 360 to 10800.38dot: mean over tolerances · bar: rangeno fixed step
Fig. 2 How much the oscillatory kernel’s rank offset grows each time the frequency triples, averaged over five tolerances, with the range across them.

The figure above reduces the curves to their steps. Averaged over the five tolerances, the offset rises by 0.28 of a rank from 131313\tfrac13 to 40, 0.95 from 40 to 120, 1.39 from 120 to 360, and 0.38 from 360 to 1,080. The largest step is five times the smallest, and the ranges at the separate tolerances do not overlap between the middle two steps and the outer two. There is no fixed amount a tripling for a formula to add.

The first bend has an explanation the earlier essays already hold. At κ=1313\kappa = 13\tfrac13 a wavelength is about half the interval, and the 8-wide blocks span a thirtieth of a wavelength; the kernel inside them is essentially 1/r1/r with a slowly varying factor, and the oscillation adds almost nothing. The added rank starts to count when a block spans a fair fraction of a wavelength, and the kernel with nothing to compress measured what happens after that: at a fixed geometry the oscillatory rank grows with the number of wavelengths across the block, without limit, roughly in proportion once there are several. On the frequency axis that is growth faster than logarithmic, which is what the middle steps show. A guess that adds a fixed amount per tripling would be calibrated on the middle of the curve and wrong at both ends.

An offset in ranks, not in digits

The offset has one property the proposal assumed and the measurement confirms: it is added, not multiplied, and below the point where blocks fill it barely depends on the tolerance. At κ=40\kappa = 40 it is 0.58, 0.58, 0.65, 0.63 and 0.59 across tolerances from 10−410^{-4} to 10−1210^{-12} — the same two thirds of a rank whether the matrix is asked for four digits or twelve — while 1/r1/r’s own mean rank at a leaf of 8 climbs from 2.67 to 6.67 over the same range, one rank for every two decades. At κ=120\kappa = 120 the offset wanders between 1.30 and 1.81 with no trend. That is what one build tells the leaf meant by an oscillation adding a rank rather than a factor: the oscillation contributes a fixed number of singular values above every tolerance, the ones that carry its wavelengths, and the tolerance then decides how many of the smooth part’s decaying singular values come along.

From κ=360\kappa = 360 on that stops being true. The offset at 360 rises from 2.30 at 10−410^{-4} to 3.24 at 10−1210^{-12}, and at 1,080 from 2.67 to 3.85 and back to 3.42. Once a block spans several wavelengths, the oscillatory part’s own singular values decay instead of stopping, so a tighter tolerance keeps more of them — and the smallest blocks then reach their cap, which takes some of the growth away again. A correction term would have to be a function of the frequency and the tolerance from there on, which is one more reason a fixed step was never going to describe it. A geometry setting that is a second accuracy found the admissibility constant moving both the number of blocks and their ranks; the frequency here moves the ranks alone, and moves them in a way that depends on the digits asked for only once the blocks are long enough to see the oscillation as more than a phase.

The smallest blocks fill first

The last step is small for a reason that has nothing to do with the kernel getting easier.

At a tolerance of ten to the minus twelve, the mean rank of the 8-wide admissible blocks and of the larger ones, against the frequencyThe 186 admissible blocks whose shorter side is 8 cannot exceed rank 8. κ = 13⅓: 8-wide blocks 6.67, 0 at full rank; larger blocks 7.13; κ = 40: 8-wide blocks 6.67, 0 at full rank; larger blocks 7.96; κ = 120: 8-wide blocks 7.00, 0 at full rank; larger blocks 9.74; κ = 360: 8-wide blocks 8.00, 186 at full rank; larger blocks 12.18; κ = 1080: 8-wide blocks 8.00, 186 at full rank; larger blocks 12.56.of 186κ = 13⅓: 8-wide blocks at rank 80κ = 40: 8-wide blocks at rank 80κ = 120: 8-wide blocks at rank 80κ = 360: 8-wide blocks at rank 8186κ = 1080: 8-wide blocks at rank 8186567891011121314frequency κmean rank13⅓4012036010808-wide blockslarger blocksdashed: the most an 8-wide block can holdthe smallest blocks fill first
Fig. 3 At a tolerance of 10−1210^{-12}, the mean rank of the 8-wide admissible blocks and of the larger ones against the frequency. The dashed line is rank 8, the most an 8-wide block can hold.

An 8-wide block cannot have a rank above 8. At the tightest tolerance the 186 such blocks have mean ranks of 6.67, 6.67, 7.00, 8.00 and 8.00 across the five frequencies: from κ=360\kappa = 360 on every one of them is at full rank, where at 120 none is. The larger blocks keep climbing — 7.13, 7.96, 9.74, 12.18 and 12.56 — but they are 156 of the 342, and the mean over all of them is pulled flat by the 186 that have nowhere to go. At 10−1010^{-10} the 8-wide blocks fill between 360 and 1,080, 124 of them at 360 and all 186 at 1,080; at 10−810^{-8}, 124 of them fill at 1,080.

At the two loosest tolerances no 8-wide block is full even at 1,080, and the last step is still small — zero at 10−610^{-6}, where the offsets at 360 and 1,080 are both 2.94. Full blocks do not explain that. What is left at those tolerances is the grid. At κ=1,080\kappa = 1{,}080 a wavelength is under three grid spacings, so the sampled kernel is close to the shortest oscillation 512 points can carry, and blocks of a given number of points can hold only so many independent oscillations however high the frequency is set. Whether that is the whole of it is a question for a finer grid, which this one cannot answer.

The cheapest leaf moves with the frequency

What a formula for the offset was for is the leaf. A higher frequency raises the ranks, which raises the cost of a large leaf’s off-diagonal blocks relative to its dense ones, and the cheapest leaf should move up.

Storage of cos(κr)/r as a hierarchical matrix against the leaf size, over the cheapest leaf's, at five frequencies and a tolerance of 10 to the minus 8κ = 13⅓: cheapest leaf 16; 4: 1.157, 8: 1.026, 16: 1.000, 32: 1.112, 64: 1.473. κ = 40: cheapest leaf 16; 4: 1.138, 8: 1.023, 16: 1.000, 32: 1.077, 64: 1.384. κ = 120: cheapest leaf 16; 4: 1.150, 8: 1.049, 16: 1.000, 32: 1.038, 64: 1.252. κ = 360: cheapest leaf 32; 4: 1.185, 8: 1.091, 16: 1.018, 32: 1.000, 64: 1.166. κ = 1080: cheapest leaf 32; 4: 1.230, 8: 1.137, 16: 1.036, 32: 1.000, 64: 1.166.10 to the minus 8κ = 13⅓: cheapest leaf16κ = 40: cheapest leaf16κ = 120: cheapest leaf16κ = 360: cheapest leaf32κ = 1080: cheapest leaf3211.11.21.31.41.51.6leaf sizestorage over the cheapest leaf's48163264κ = 13⅓κ = 40κ = 120κ = 360κ = 1080higher frequency, larger leafthe cheapest leaf moves with κ
Fig. 4 Storage over the cheapest leaf’s against the leaf size at a tolerance of 10−810^{-8}, one line for each frequency.

It does. At 10−810^{-8} the cheapest leaf is 16 for the three lower frequencies and 32 for the two higher ones; at 10−1210^{-12} it moves from 16 to 32 already at 120; at 10−410^{-4} it is 8 below 360 and 16 from there. The curves are shallow near their minimum — at κ=360\kappa = 360 and 10−810^{-8} a leaf of 16 costs 1.8 per cent more than 32 — so a guess that is one halving out is a guess that costs a few per cent, not a factor.

One build still tells the leaf

The cheapest leaf at five frequencies and three tolerances, against the leaf named by the rule of thumb and by one build at a leaf of 8Each cell gives the cheapest leaf, then the thumb's and the probe's. The thumb names it on 8 of 15 cells and the probe on 13. κ = 13⅓, 10 to the minus 4: cheapest 8, thumb 8 (1.000), probe 8 (1.000); κ = 13⅓, 10 to the minus 8: cheapest 16, thumb 16 (1.000), probe 16 (1.000); κ = 13⅓, 10 to the minus 12: cheapest 16, thumb 16 (1.000), probe 16 (1.000); κ = 40, 10 to the minus 4: cheapest 8, thumb 8 (1.000), probe 8 (1.000); κ = 40, 10 to the minus 8: cheapest 16, thumb 16 (1.000), probe 16 (1.000); κ = 40, 10 to the minus 12: cheapest 16, thumb 16 (1.000), probe 16 (1.000); κ = 120, 10 to the minus 4: cheapest 8, thumb 8 (1.000), probe 16 (1.014); κ = 120, 10 to the minus 8: cheapest 16, thumb 16 (1.000), probe 16 (1.000); κ = 120, 10 to the minus 12: cheapest 32, thumb 16 (1.015), probe 32 (1.000); κ = 360, 10 to the minus 4: cheapest 16, thumb 8 (1.027), probe 16 (1.000); κ = 360, 10 to the minus 8: cheapest 32, thumb 16 (1.018), probe 16 (1.018); κ = 360, 10 to the minus 12: cheapest 32, thumb 16 (1.072), probe 32 (1.000); κ = 1080, 10 to the minus 4: cheapest 16, thumb 8 (1.053), probe 16 (1.000); κ = 1080, 10 to the minus 8: cheapest 32, thumb 16 (1.036), probe 32 (1.000); κ = 1080, 10 to the minus 12: cheapest 32, thumb 16 (1.086), probe 32 (1.000).ε = 1e−4ε = 1e−8ε = 1e−12κ = 13⅓κ = 40κ = 120κ = 360κ = 108088816161616161688816161616161688161616163216321681632161632163216816321632321632each cell: cheapest · thumb · probe — thumb right on 8 of 15, probe on 13colour: right or wrongone build still tells the leaf
Fig. 5 For each frequency and three tolerances: the cheapest leaf, the leaf the rule of thumb names, and the leaf one build at a leaf of 8 names. Coloured right or wrong.

The rule of thumb — half a rank a decade, the same at every frequency — names the cheapest leaf on all six cells at the two lower frequencies, on two of three at 120, and on none of the six at 360 and 1,080. Its misses store 1.5 to 8.6 per cent too much, and the miss grows with the frequency, because the thumb’s leaf stays where it was while the cheapest leaf moves. The probe — the mean rank of one build at a leaf of 8 — names the cheapest leaf on thirteen cells of fifteen. Its two misses are at κ=120\kappa = 120 and 10−410^{-4}, where it names 16 for a cheapest leaf of 8 and stores 1.4 per cent more, and at κ=360\kappa = 360 and 10−810^{-8}, where it names 16 for 32 and stores 1.8 per cent more.

That last result answers a worry the saturation raises. At the high frequencies and tight tolerances the probe’s own blocks are full: its mean rank at a leaf of 8 cannot grow past what the 8-wide blocks allow, so it understates how much the kernel’s rank is rising. It names the cheapest leaf anyway, on five of the six cells at 360 and 1,080, because the halving rule needs only to know whether the rank at half a leaf is above or below a quarter of the leaf, and a saturated probe at 8 is already well above a quarter of 16. A probe that cannot see the full rank can still see which side of a threshold it is on.

Put in terms of what a code pays, the comparison is this. The halving rule fed every leaf’s ranks needs five compressions, one at each candidate leaf; the probe needs one, at the smallest leaf, which is also the cheapest of the five to compress because its blocks are smallest; the thumb needs none. On these fifteen cells the thumb’s worst choice stores 8.6 per cent too much and the probe’s 1.8. For a matrix that is compressed once and multiplied a thousand times, the probe’s single build is repaid by the first few products that the thumb’s extra storage would have slowed; for one compressed once and used once, the thumb’s misses may be the cheaper mistake. The measurement prices both and does not choose.

What a formula would have needed

A term that corrects the thumb has to know the offset at the frequency and tolerance in hand. The measurement shows the offset is not a function of the frequency alone: it depends on how many wavelengths the blocks span, on whether the smallest blocks are full at that tolerance, and on how close the frequency is to what the grid can carry. Each of those is computable — the first from the geometry, the second from the tolerance and the leaf, the third from the grid — but together they are a model of the compression, and the cheapest way to evaluate a model of the compression is to compress a little. One build at a leaf of 8 is that evaluation. The smaller cluster sets the rank found the quantity a formula would read — the product of the two clusters’ lengths over their distance, in wavelengths — and it is the right quantity for one block; summed over a partition, with the small blocks’ caps, it is the probe again.

The offset that moved the slope found, at the start of this line of measurement, that a tolerance’s effect on storage is not a constant lift but a change of slope. The frequency is the same lesson in a second variable: its effect is not a constant added rank but one that depends on where the blocks sit relative to a wavelength, and on whether they have room left. So the earlier essay’s conclusion stands, with its reason sharpened. A guess from the tolerance is blind to the kernel, and no single correction term restores its sight, because what the kernel adds is not one number. One compression at the smallest leaf reads what the kernel adds, caps and all, at no more than its own cost.

What fifteen cells do not show

One kernel family, one grid, one admissibility rule, five frequencies and three tolerances for the leaf. A grid of 1,024 points would put a wavelength at κ=1,080\kappa = 1{,}080 at six spacings instead of three and would say whether the flat last step at loose tolerances is the grid’s; the dense reference this measurement needs is not affordable there. The leaf candidates are powers of two from 4 to 64, so a cheapest leaf between 16 and 32 is reported as one of them. The tolerance is relative to each block’s largest singular value, which is what the earlier essays used and not what every code does; an absolute tolerance would make the far blocks’ ranks smaller and could move the cheapest leaf down. The probe is scored against the cheapest of the five leaves, not against a leaf chosen continuously, and the storage it is scored on is the count of stored numbers, not the time a product takes, which a real code would also weigh.

Still open: a finer grid, and a probe that reads the near blocks

A finer grid. At loose tolerances the offset stops growing between 360 and 1,080 with no block at full rank. The prediction with a sign is that on a grid of 1,024 points the step from 360 to 1,080 at 10−610^{-6} is at least as large as the step from 120 to 360 — that the flat step on this grid is the grid’s resolution, not the kernel’s — and that at κ=3,240\kappa = 3{,}240 on the finer grid it flattens again.

A probe of the blocks a halving creates. The earlier essay’s first question stands. The halving rule compares the rank at half a leaf with a quarter of the leaf; the blocks that comparison is about are the ones a halving creates, nearest the diagonal. A probe that compresses only a handful of those, at a leaf of 8, costs a few blocks instead of a matrix. The prediction is that it names the cheapest leaf on at least as many of these fifteen cells as the full build at 8, because the far blocks the full build averages in are the ones the leaf decision does not depend on.

Shares its objects with

Essays that name at least two of the same things, and that neither author linked.

Named objects

A flat tag is an object no other essay names yet.

AdmissibilityHeuristicHierarchical matrixKernel matrixNumerical rankOff-diagonal rankStorageTolerance