Skip to content

v0.2.2 — recursive torontonian enclosure soundness fix

Latest

Choose a tag to compare

@chaofanzhougit chaofanzhougit released this 28 Jul 06:37

Correctness

The recursive-torontonian double-double leaf accumulation now charges its enclosure radius against the operand magnitudes instead of the post-addition result.

The signed accumulation uses the sloppy double-word dd_add, whose represented-value error scales with the operand magnitudes. The previous u_DD * md_hi(total) charge could under-bound that error whenever a single accumulation step cancels the running sum by more than ~16× (where quick_two_sum's |s| >= |e| precondition can fail). The fix charges u_DD * (md_hi(total_before) + md_hi(c)), matching the operand-scaled Cholesky dot-chain charge already used in the kernel.

  • Returned values are unchanged — centers are bit-identical; only the returned enclosure radius grows, and only at deeply-cancelling steps.
  • Validated on an RTX 4090 (nvcc 12.4): the differential gate suite including check_tor_recursive (double-double certified enclosure) passes with the fixed kernel.

See CHANGELOG.md for details.