Skip to content

Commit 7b96d76

Browse files
committed
Add bench.txt
1 parent 58b166d commit 7b96d76

1 file changed

Lines changed: 27 additions & 0 deletions

File tree

docs/bench.txt

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
Benchmark results 15.02.2026c
2+
3+
Julia 12.4
4+
5+
- bench3.jl
6+
609 612 613
7+
8+
- bench4.jl
9+
1096 1097 1100
10+
11+
Julia 11.8
12+
13+
- bench3.jl
14+
615 614 612
15+
16+
- bench4.jl
17+
934 935 931
18+
19+
Root cause: NLSolversBase 7.10.0 switched from direct FiniteDiff to DifferentiationInterface for Jacobian computation.
20+
The DI backend produces subnormal values (~5.6e-305) in near-zero Jacobian columns instead of exact zeros.
21+
NLsolve's autoscale computes column norms d[j], and when d[j] is subnormal (not zero), its guard if d[j] == 0; d[j] = 1;
22+
end doesn't trigger. The subsequent g ./ d.^2 underflows d[j]^2 to 0.0, producing NaN that propagates through the solver.
23+
24+
Fix: Both KPS4.jl:688-710 and KPS3.jl:513-535 now provide an explicit Jacobian function (jac!) to nlsolve using manual
25+
central finite differences (matching FiniteDiff's defaults: step = cbrt(eps)). After computing the Jacobian, entries
26+
below sqrt(floatmin) (~1.5e-154) are flushed to zero—this prevents any value whose square would underflow from reaching
27+
NLsolve's autoscale.

0 commit comments

Comments
 (0)