Skip to content

Pass the inverse Hessian in the initial_invH tests - #1300

Merged
pkofod merged 1 commit into
masterfrom
pkm/initial-invh-test
Oct 23, 2026
Merged

pkofod merged 1 commit into
masterfrom
pkm/initial-invh-test

Conversation

@pkofod

@pkofod pkofod commented Oct 23, 2026

Copy link
Copy Markdown
Member

The BFGS initial_invH test passed the Hessian diag(1, η) rather than its inverse. It checked only convergence, which holds whether or not initial_invH is used. This PR passes diag(1, 1/η). On this quadratic the first step is then the Newton step, so the test now asserts that BFGS stops after one iteration. It takes 4 iterations without initial_invH and 5 with the Hessian, so the check fails if the keyword is ignored or misapplied.

The block appears in both test/general/optimize.jl and test/multivariate/optimize/optimize.jl, and this PR fixes both. This changes tests only.

🤖 Generated with Claude Code

The BFGS `initial_invH` test passed the Hessian diag(1, eta) rather than
its inverse and checked only convergence, which holds whether or not
`initial_invH` is used. Pass diag(1, 1/eta). On this quadratic the first
step is then the Newton step, so assert that BFGS stops after one
iteration. It takes 4 iterations without `initial_invH` and 5 with the
Hessian, so the check fails if the keyword is ignored or misapplied.

The block appears in both test/general/optimize.jl and
test/multivariate/optimize/optimize.jl; fix both.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@codecov

codecov Bot commented Oct 23, 2026 •

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 87.55%. Comparing base (16eb4cc) to head (c6bad85).
⚠️ Report is 1 commits behind head on master.

Additional details and impacted files
@@           Coverage Diff           @@
##           master    #1300   +/-   ##
=======================================
  Coverage   87.55%   87.55%           
=======================================
  Files          52       52           
  Lines        5032     5032           
=======================================
  Hits         4406     4406           
  Misses        626      626           

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@github-actions

Copy link
Copy Markdown
Contributor

Benchmark Results (Julia v1)

Time benchmarks
master c6bad85... master / c6bad85...
multivariate/problems/rosenbrock/100/KrylovTrustRegion 0.168 ± 0.0099 ms 0.172 ± 0.011 ms 0.975 ± 0.085
multivariate/problems/rosenbrock/100/Newton 1.33 ± 0.022 ms 1.32 ± 0.019 ms 1.01 ± 0.022
multivariate/problems/rosenbrock/100/NewtonTrustRegion 6 ± 0.66 ms 6.04 ± 0.55 ms 0.994 ± 0.14
multivariate/problems/rosenbrock/2/KrylovTrustRegion 22.2 ± 5.7 μs 21.9 ± 5.5 μs 1.01 ± 0.37
multivariate/problems/rosenbrock/2/Newton 26.9 ± 5.8 μs 27.1 ± 5.3 μs 0.991 ± 0.29
multivariate/problems/rosenbrock/2/NewtonTrustRegion 0.0359 ± 0.0083 ms 0.0363 ± 0.0081 ms 0.989 ± 0.32
multivariate/problems/rosenbrock/20/KrylovTrustRegion 0.039 ± 0.002 ms 0.0392 ± 0.0025 ms 0.995 ± 0.083
multivariate/problems/rosenbrock/20/Newton 0.0749 ± 0.0012 ms 0.0756 ± 0.0011 ms 0.991 ± 0.021
multivariate/problems/rosenbrock/20/NewtonTrustRegion 0.327 ± 0.014 ms 0.325 ± 0.013 ms 1.01 ± 0.058
multivariate/problems/saddle/100/KrylovTrustRegion 0.0602 ± 0.003 ms 0.0615 ± 0.0037 ms 0.979 ± 0.076
multivariate/problems/saddle/100/Newton 0.253 ± 0.013 ms 0.254 ± 0.015 ms 0.994 ± 0.08
multivariate/problems/saddle/100/NewtonTrustRegion 3.17 ± 0.068 ms 3.18 ± 0.061 ms 0.997 ± 0.029
multivariate/problems/saddle/2/KrylovTrustRegion 8.58 ± 0.28 μs 8.55 ± 0.31 μs 1 ± 0.049
multivariate/problems/saddle/2/Newton 5.8 ± 0.35 μs 5.84 ± 0.4 μs 0.993 ± 0.091
multivariate/problems/saddle/2/NewtonTrustRegion 12.4 ± 1.2 μs 12.6 ± 1.1 μs 0.986 ± 0.13
multivariate/problems/saddle/20/KrylovTrustRegion 13.8 ± 6.9 μs 12.8 ± 5.1 μs 1.07 ± 0.68
multivariate/problems/saddle/20/Newton 16 ± 0.57 μs 16.1 ± 0.51 μs 0.998 ± 0.048
multivariate/problems/saddle/20/NewtonTrustRegion 0.114 ± 0.0036 ms 0.115 ± 0.0044 ms 0.995 ± 0.049
multivariate/solvers/first_order/AdaMax 0.641 ± 0.0094 ms 0.64 ± 0.0092 ms 1 ± 0.02
multivariate/solvers/first_order/Adam 0.639 ± 0.0094 ms 0.638 ± 0.0093 ms 1 ± 0.021
multivariate/solvers/first_order/BFGS 0.132 ± 0.0021 ms 0.132 ± 0.0022 ms 1 ± 0.023
multivariate/solvers/first_order/ConjugateGradient 0.219 ± 0.0063 ms 0.219 ± 0.0056 ms 1 ± 0.039
multivariate/solvers/first_order/GradientDescent 0.947 ± 0.0065 ms 0.951 ± 0.0075 ms 0.995 ± 0.01
multivariate/solvers/first_order/LBFGS 0.149 ± 0.0024 ms 0.149 ± 0.0026 ms 0.997 ± 0.024
multivariate/solvers/first_order/MomentumGradientDescent 1.92 ± 0.017 ms 1.92 ± 0.016 ms 0.999 ± 0.012
multivariate/solvers/first_order/NGMRES 0.94 ± 0.0071 ms 0.949 ± 0.012 ms 0.99 ± 0.014
multivariate/solvers/second_order/KrylovTrustRegion 0.331 ± 0.0096 ms 0.33 ± 0.01 ms 1 ± 0.042
multivariate/solvers/second_order/Newton 0.222 ± 0.0095 ms 0.222 ± 0.0063 ms 1 ± 0.051
multivariate/solvers/second_order/NewtonTrustRegion 0.241 ± 0.0099 ms 0.241 ± 0.01 ms 0.997 ± 0.059
time_to_load 0.36 ± 0.0022 s 0.365 ± 0.0032 s 0.988 ± 0.011
Memory benchmarks
master c6bad85... master / c6bad85...
multivariate/problems/rosenbrock/100/KrylovTrustRegion 0.561 k allocs: 0.36 MB 0.561 k allocs: 0.36 MB 1
multivariate/problems/rosenbrock/100/Newton 0.496 k allocs: 0.34 MB 0.496 k allocs: 0.34 MB 1
multivariate/problems/rosenbrock/100/NewtonTrustRegion 0.554 k allocs: 4.65 MB 0.554 k allocs: 4.65 MB 1
multivariate/problems/rosenbrock/2/KrylovTrustRegion 0.574 k allocs: 21.3 kB 0.574 k allocs: 21.3 kB 1
multivariate/problems/rosenbrock/2/Newton 0.492 k allocs: 18.4 kB 0.492 k allocs: 18.4 kB 1
multivariate/problems/rosenbrock/2/NewtonTrustRegion 0.458 k allocs: 0.0326 MB 0.458 k allocs: 0.0326 MB 1
multivariate/problems/rosenbrock/20/KrylovTrustRegion 0.595 k allocs: 0.0616 MB 0.595 k allocs: 0.0616 MB 1
multivariate/problems/rosenbrock/20/Newton 0.496 k allocs: 0.033 MB 0.496 k allocs: 0.033 MB 1
multivariate/problems/rosenbrock/20/NewtonTrustRegion 0.511 k allocs: 0.319 MB 0.511 k allocs: 0.319 MB 1
multivariate/problems/saddle/100/KrylovTrustRegion 0.173 k allocs: 0.211 MB 0.173 k allocs: 0.211 MB 1
multivariate/problems/saddle/100/Newton 0.141 k allocs: 0.352 MB 0.141 k allocs: 0.352 MB 1
multivariate/problems/saddle/100/NewtonTrustRegion 0.338 k allocs: 2.58 MB 0.338 k allocs: 2.58 MB 1
multivariate/problems/saddle/2/KrylovTrustRegion 0.183 k allocs: 7.09 kB 0.183 k allocs: 7.09 kB 1
multivariate/problems/saddle/2/Newton 0.129 k allocs: 5.75 kB 0.129 k allocs: 5.75 kB 1
multivariate/problems/saddle/2/NewtonTrustRegion 0.18 k allocs: 12.3 kB 0.18 k allocs: 12.3 kB 1
multivariate/problems/saddle/20/KrylovTrustRegion 0.17 k allocs: 21.9 kB 0.17 k allocs: 21.9 kB 1
multivariate/problems/saddle/20/Newton 0.133 k allocs: 20.8 kB 0.133 k allocs: 20.8 kB 1
multivariate/problems/saddle/20/NewtonTrustRegion 0.222 k allocs: 0.127 MB 0.222 k allocs: 0.127 MB 1
multivariate/solvers/first_order/AdaMax 0.356 k allocs: 7.27 kB 0.356 k allocs: 7.27 kB 1
multivariate/solvers/first_order/Adam 0.356 k allocs: 7.27 kB 0.356 k allocs: 7.27 kB 1
multivariate/solvers/first_order/BFGS 0.23 k allocs: 8.8 kB 0.23 k allocs: 8.8 kB 1
multivariate/solvers/first_order/ConjugateGradient 0.392 k allocs: 16 kB 0.392 k allocs: 16 kB 1
multivariate/solvers/first_order/GradientDescent 1.52 k allocs: 0.0611 MB 1.52 k allocs: 0.0611 MB 1
multivariate/solvers/first_order/LBFGS 0.325 k allocs: 14 kB 0.325 k allocs: 14 kB 1
multivariate/solvers/first_order/MomentumGradientDescent 1.91 k allocs: 0.0666 MB 1.91 k allocs: 0.0666 MB 1
multivariate/solvers/first_order/NGMRES 3.14 k allocs: 0.156 MB 3.14 k allocs: 0.156 MB 1
multivariate/solvers/second_order/KrylovTrustRegion 0.284 k allocs: 11.3 kB 0.284 k allocs: 11.3 kB 1
multivariate/solvers/second_order/Newton 0.251 k allocs: 10.2 kB 0.251 k allocs: 10.2 kB 1
multivariate/solvers/second_order/NewtonTrustRegion 0.302 k allocs: 19.1 kB 0.302 k allocs: 19.1 kB 1
time_to_load 0.204 k allocs: 11.9 kB 0.2 k allocs: 11.7 kB 1.02

A plot of the benchmark results has been uploaded as an artifact at .

@github-actions

Copy link
Copy Markdown
Contributor

Benchmark Results (Julia vlts)

Time benchmarks
master c6bad85... master / c6bad85...
multivariate/problems/rosenbrock/100/KrylovTrustRegion 0.187 ± 0.0061 ms 0.191 ± 0.008 ms 0.979 ± 0.052
multivariate/problems/rosenbrock/100/Newton 1.31 ± 0.017 ms 1.32 ± 0.028 ms 0.992 ± 0.025
multivariate/problems/rosenbrock/100/NewtonTrustRegion 6.5 ± 0.12 ms 6.62 ± 0.27 ms 0.983 ± 0.044
multivariate/problems/rosenbrock/2/KrylovTrustRegion 26.5 ± 0.45 μs 25.4 ± 0.58 μs 1.04 ± 0.03
multivariate/problems/rosenbrock/2/Newton 0.0325 ± 0.00051 ms 0.033 ± 0.00055 ms 0.984 ± 0.023
multivariate/problems/rosenbrock/2/NewtonTrustRegion 0.0386 ± 0.00081 ms 0.0394 ± 0.00088 ms 0.98 ± 0.03
multivariate/problems/rosenbrock/20/KrylovTrustRegion 0.0465 ± 0.0011 ms 0.0465 ± 0.0012 ms 0.999 ± 0.034
multivariate/problems/rosenbrock/20/Newton 0.0842 ± 0.001 ms 0.085 ± 0.0011 ms 0.991 ± 0.018
multivariate/problems/rosenbrock/20/NewtonTrustRegion 0.358 ± 0.013 ms 0.361 ± 0.013 ms 0.992 ± 0.051
multivariate/problems/saddle/100/KrylovTrustRegion 0.0677 ± 0.0024 ms 0.0695 ± 0.002 ms 0.974 ± 0.045
multivariate/problems/saddle/100/Newton 0.252 ± 0.013 ms 0.254 ± 0.013 ms 0.991 ± 0.071
multivariate/problems/saddle/100/NewtonTrustRegion 3.47 ± 0.14 ms 3.45 ± 0.046 ms 1 ± 0.043
multivariate/problems/saddle/2/KrylovTrustRegion 9.87 ± 0.31 μs 9.56 ± 0.4 μs 1.03 ± 0.054
multivariate/problems/saddle/2/Newton 7.05 ± 0.24 μs 7.04 ± 0.29 μs 1 ± 0.053
multivariate/problems/saddle/2/NewtonTrustRegion 14.1 ± 0.52 μs 14.1 ± 0.57 μs 0.999 ± 0.055
multivariate/problems/saddle/20/KrylovTrustRegion 14.5 ± 0.66 μs 14.7 ± 0.66 μs 0.985 ± 0.063
multivariate/problems/saddle/20/Newton 17.8 ± 0.57 μs 17.9 ± 0.63 μs 0.996 ± 0.047
multivariate/problems/saddle/20/NewtonTrustRegion 0.126 ± 0.0032 ms 0.128 ± 0.0028 ms 0.983 ± 0.033
multivariate/solvers/first_order/AdaMax 0.546 ± 0.01 ms 0.546 ± 0.014 ms 1 ± 0.032
multivariate/solvers/first_order/Adam 0.545 ± 0.01 ms 0.544 ± 0.01 ms 1 ± 0.027
multivariate/solvers/first_order/BFGS 0.0951 ± 0.0014 ms 0.0948 ± 0.0014 ms 1 ± 0.02
multivariate/solvers/first_order/ConjugateGradient 0.3 ± 0.01 ms 0.299 ± 0.01 ms 1 ± 0.049
multivariate/solvers/first_order/GradientDescent 0.79 ± 0.0062 ms 0.79 ± 0.0054 ms 0.999 ± 0.01
multivariate/solvers/first_order/LBFGS 0.111 ± 0.0018 ms 0.111 ± 0.0016 ms 0.994 ± 0.022
multivariate/solvers/first_order/MomentumGradientDescent 1.53 ± 0.015 ms 1.53 ± 0.014 ms 0.999 ± 0.013
multivariate/solvers/first_order/NGMRES 0.451 ± 0.013 ms 0.453 ± 0.013 ms 0.997 ± 0.041
multivariate/solvers/second_order/KrylovTrustRegion 0.474 ± 0.013 ms 0.472 ± 0.01 ms 1 ± 0.035
multivariate/solvers/second_order/Newton 0.162 ± 0.0027 ms 0.161 ± 0.0027 ms 1.01 ± 0.024
multivariate/solvers/second_order/NewtonTrustRegion 0.233 ± 0.0099 ms 0.232 ± 0.0097 ms 1 ± 0.06
time_to_load 0.33 ± 0.002 s 0.34 ± 0.0023 s 0.97 ± 0.009
Memory benchmarks
master c6bad85... master / c6bad85...
multivariate/problems/rosenbrock/100/KrylovTrustRegion 0.328 k allocs: 0.352 MB 0.328 k allocs: 0.352 MB 1
multivariate/problems/rosenbrock/100/Newton 0.369 k allocs: 0.339 MB 0.369 k allocs: 0.339 MB 1
multivariate/problems/rosenbrock/100/NewtonTrustRegion 0.416 k allocs: 6.43 MB 0.416 k allocs: 6.43 MB 1
multivariate/problems/rosenbrock/2/KrylovTrustRegion 0.332 k allocs: 21.4 kB 0.332 k allocs: 21.4 kB 1
multivariate/problems/rosenbrock/2/Newton 0.365 k allocs: 18.7 kB 0.365 k allocs: 18.7 kB 1
multivariate/problems/rosenbrock/2/NewtonTrustRegion 0.343 k allocs: 0.0348 MB 0.343 k allocs: 0.0348 MB 1
multivariate/problems/rosenbrock/20/KrylovTrustRegion 0.343 k allocs: 0.0618 MB 0.343 k allocs: 0.0618 MB 1
multivariate/problems/rosenbrock/20/Newton 0.365 k allocs: 0.0334 MB 0.365 k allocs: 0.0334 MB 1
multivariate/problems/rosenbrock/20/NewtonTrustRegion 0.33 k allocs: 0.396 MB 0.33 k allocs: 0.396 MB 1
multivariate/problems/saddle/100/KrylovTrustRegion 0.107 k allocs: 0.209 MB 0.107 k allocs: 0.209 MB 1
multivariate/problems/saddle/100/Newton 0.096 k allocs: 0.351 MB 0.096 k allocs: 0.351 MB 1
multivariate/problems/saddle/100/NewtonTrustRegion 0.255 k allocs: 3.51 MB 0.255 k allocs: 3.51 MB 1
multivariate/problems/saddle/2/KrylovTrustRegion 0.114 k allocs: 7.16 kB 0.114 k allocs: 7.16 kB 1
multivariate/problems/saddle/2/Newton 0.088 k allocs: 5.52 kB 0.088 k allocs: 5.52 kB 1
multivariate/problems/saddle/2/NewtonTrustRegion 0.129 k allocs: 13 kB 0.129 k allocs: 13 kB 1
multivariate/problems/saddle/20/KrylovTrustRegion 0.102 k allocs: 22.1 kB 0.102 k allocs: 22.1 kB 1
multivariate/problems/saddle/20/Newton 0.088 k allocs: 20.7 kB 0.088 k allocs: 20.7 kB 1
multivariate/problems/saddle/20/NewtonTrustRegion 0.139 k allocs: 0.155 MB 0.139 k allocs: 0.155 MB 1
multivariate/solvers/first_order/AdaMax 0.341 k allocs: 7.36 kB 0.341 k allocs: 7.36 kB 1
multivariate/solvers/first_order/Adam 0.341 k allocs: 7.36 kB 0.341 k allocs: 7.36 kB 1
multivariate/solvers/first_order/BFGS 0.157 k allocs: 8.67 kB 0.157 k allocs: 8.67 kB 1
multivariate/solvers/first_order/ConjugateGradient 0.471 k allocs: 24.4 kB 0.471 k allocs: 24.4 kB 1
multivariate/solvers/first_order/GradientDescent 1.22 k allocs: 0.065 MB 1.22 k allocs: 0.065 MB 1
multivariate/solvers/first_order/LBFGS 0.226 k allocs: 14 kB 0.226 k allocs: 14 kB 1
multivariate/solvers/first_order/MomentumGradientDescent 1.62 k allocs: 0.0713 MB 1.62 k allocs: 0.0713 MB 1
multivariate/solvers/first_order/NGMRES 1.68 k allocs: 0.142 MB 1.68 k allocs: 0.142 MB 1
multivariate/solvers/second_order/KrylovTrustRegion 0.229 k allocs: 13.5 kB 0.229 k allocs: 13.5 kB 1
multivariate/solvers/second_order/Newton 0.174 k allocs: 10.3 kB 0.174 k allocs: 10.3 kB 1
multivariate/solvers/second_order/NewtonTrustRegion 0.253 k allocs: 23 kB 0.253 k allocs: 23 kB 1
time_to_load 0.153 k allocs: 14.5 kB 0.153 k allocs: 14.5 kB 1

A plot of the benchmark results has been uploaded as an artifact at .

@pkofod
pkofod merged commit e80ddb3 into master Oct 23, 2026
23 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant