FN-ASINH-001: ASINH is LN(|x|+SQRT(x*x+1)) with every step stored, so small inputs lose their digits
Excel differs from the mathematical answer · measured · recorded 2026-11-04
ASINH is not the correctly rounded inverse hyperbolic sine. Its answers are those of SIGN(x)*LN(|x|+SQRT(x*x+1)), with x*x, the +1, the SQRT and the |x|+root each rounded to 64 bits and then to 53 bits before the next step, and the LN rounded to binary64. That route loses most of the digits of a small input: once x*x+1 rounds to 1, the answer is LN of |x|+1 after rounding, so it moves in steps of about 2.2E-16. ASINH(-1.4901631254755754E-16) is -2.22E-16, about 1.5 times the true value, and in the recorded rows every |x| up to 1.05E-16, including every subnormal, gives 0 on either sign. At the other end the x*x overflows: answers are finite up to the largest recorded input below it, 9.23E153, and #NUM! from the next recorded input, 2.38E154, although the true value there is about 356. In Excel build 20430 this route reproduces all 4,534 recorded rows (3,017 distinct inputs): 3,427 numbers and 1,107 #NUM!. The correctly rounded asinh matches only 1,224 of the 3,427.
| Call and input route | Inputs | Excel | Correct value | Recorded in |
|---|---|---|---|---|
ASINH(-1.0126103340069186e-11)cell-value2 | number: -1.0126103340069186e-110xbda6447d498e6f26 | -1.0126122162949859e-110xbda6447fffff840a | -1.0126103340069186e-110xbda6447d498e6f26 | Excel 16.0 build 20430, Windows 64-bit, AMD Ryzen 7 4800H |
ASINH(-1.4901631254755754e-16)cell-value2 | number: -1.4901631254755754e-160xbca579bb4790a498 | -2.2204460492503128e-160xbcafffffffffffff | -1.4901631254755754e-160xbca579bb4790a498 | Excel 16.0 build 20430, Windows 64-bit, AMD Ryzen 7 4800H |
ASINH(1.0501151062119094e-16)cell-value2 | number: 1.0501151062119094e-160x3c9e447b5a2fd072 | 00x0000000000000000 | 1.0501151062119094e-160x3c9e447b5a2fd072 | Excel 16.0 build 20430, Windows 64-bit, AMD Ryzen 7 4800H |
ASINH(5e-324)cell-value2 | number: 5e-3240x0000000000000001 | 00x0000000000000000 | 5e-3240x0000000000000001 | Excel 16.0 build 20430, Windows 64-bit, AMD Ryzen 7 4800H |
ASINH(7.193439987815484e-08)cell-value2 | number: 7.193439987815484e-080x3e734f4b587c834b | 7.19343998474134e-080x3e734f4b58591206 | 7.193439987815477e-080x3e734f4b587c8346 | Excel 16.0 build 20430, Windows 64-bit, AMD Ryzen 7 4800H |
ASINH(9.234293629925394e+153)cell-value2 | number: 9.234293629925394e+1530x5fe60a092f72d845 | 355.21159053100720x40763362acc0ad1b | — | Excel 16.0 build 20430, Windows 64-bit, AMD Ryzen 7 4800H |
ASINH(2.3842260672008416e+154)cell-value2 | number: 2.3842260672008416e+1540x5ffc73a8ae6c7c25 | #NUM! | 356.16012607319630x4076428fe05b79d7 | Excel 16.0 build 20430, Windows 64-bit, AMD Ryzen 7 4800H |
Correct value: mpmath asinh at 2000 bits, rounded to the nearest binary64
Correct value: mpmath asinh at 2000 bits, rounded to the nearest binary64
Correct value: mpmath asinh at 2000 bits, rounded to the nearest binary64
Correct value: mpmath asinh at 2000 bits, rounded to the nearest binary64
Correct value: mpmath asinh at 2000 bits, rounded to the nearest binary64
Correct value: mpmath asinh at 2000 bits, rounded to the nearest binary64
Basis: All 4,534 rows of two recorded sets, 3,017 and 1,517 rows, from Excel build 20430. The route was recomputed independently in exact rational arithmetic with a correctly rounded LN, and matched every row. The stored steps matter on 5 of the rows (3 distinct inputs): the same formula in plain binary64 misses exactly those 5.
Inferred: That Excel's code is this expression, in this order, is inferred; what is measured is that the route reproduces every recorded row. The overflow boundary at |x| = 2^512, about 1.34E154, is inferred from x*x overflowing there: the recorded rows only bracket it, between 9.23E153 and 2.38E154. Excel reads a subnormal written to a cell back as 0, so the 0 at subnormal inputs may come from that step and not from this route.
Open: Only one Excel build, 20430, has been read over this range.
Evidence and capture sources
- DnaCalc · crates/calc-func/src/ported/asinh.rs b28be6662097cc6e405878befd8564f90fdbd951 · asinh_kernel the route as implemented
- DnaCalc · crates/calc-func/tests/f1_math.rs b28be6662097cc6e405878befd8564f90fdbd951 · asinh_stores_each_identity_operation_from_pc64 the three inputs that need the stored steps
- DnaCalc · crates/calc-func/witness-status.tsv 2d0eddcac86413014643af81d646581d54ba57bc · ASINH matched rows per function
- CalcFunc-Evidence · cache/oracle-20430/build-20430/ASINH.jsonl.gz 4d5320dfdc385354469b4d506153357bb932ab08 · 3,017 recorded rows
- CalcFunc-Evidence · runs/w111-5-20260924/answers/answers-w1115-asinh.json.gz 4d5320dfdc385354469b4d506153357bb932ab08 · 1,517 recorded rows, the same inputs read again
- CalcFunc-Evidence · cache/oracle-20430/build-20430/ASINH.jsonl.gz 4d5320dfdc385354469b4d506153357bb932ab08 · ASINH|0xbda6447d498e6f26
- CalcFunc-Evidence · cache/oracle-20430/build-20430/ASINH.jsonl.gz 4d5320dfdc385354469b4d506153357bb932ab08 · ASINH|0xbca579bb4790a498
- CalcFunc-Evidence · cache/oracle-20430/build-20430/ASINH.jsonl.gz 4d5320dfdc385354469b4d506153357bb932ab08 · ASINH|0x3c9e447b5a2fd072
- CalcFunc-Evidence · cache/oracle-20430/build-20430/ASINH.jsonl.gz 4d5320dfdc385354469b4d506153357bb932ab08 · ASINH|0x0000000000000001
- CalcFunc-Evidence · cache/oracle-20430/build-20430/ASINH.jsonl.gz 4d5320dfdc385354469b4d506153357bb932ab08 · ASINH|0x3e734f4b587c834b
- CalcFunc-Evidence · cache/oracle-20430/build-20430/ASINH.jsonl.gz 4d5320dfdc385354469b4d506153357bb932ab08 · ASINH|0x5fe60a092f72d845
- CalcFunc-Evidence · cache/oracle-20430/build-20430/ASINH.jsonl.gz 4d5320dfdc385354469b4d506153357bb932ab08 · ASINH|0x5ffc73a8ae6c7c25