Skip to content

Eigenbox#753

Open
blegat wants to merge 9 commits intomasterfrom
eigenbox
Open

Eigenbox#753
blegat wants to merge 9 commits intomasterfrom
eigenbox

Conversation

@blegat
Copy link
Copy Markdown

@blegat blegat commented Apr 15, 2026

As discussed during the meeting, the current implementation in the LinearAlgebra extension is incorrect for large intervals while the implementation in IntervalLinearAlgebra works for large interval but is its computation of eigvals for the matrix of centers and radius is just using floating point computation. By combining both, we have a fully rigorous eigen function for matrices of intervals.

This was done by Claude Code, still need to read it carefully

  • Not sure why Claude named it eigenbox, should be renamed to eigen
  • Add tests
  • Allow the user to choose it with alg

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Apr 15, 2026

Benchmark Results (Julia v1)

Time benchmarks
master fcf8252... master / fcf8252...
BigFloat MPFI/basics/* 25.3 ± 3.6 μs 25.1 ± 3.5 μs 1.01 ± 0.2
BigFloat MPFI/basics/+ 12.7 ± 3.6 μs 12.7 ± 3.5 μs 0.998 ± 0.39
BigFloat MPFI/basics/- 17.5 ± 3.6 μs 18.6 ± 3.5 μs 0.939 ± 0.26
BigFloat MPFI/basics// 19.2 ± 3.5 μs 19.4 ± 3.5 μs 0.987 ± 0.25
BigFloat MPFI/basics/abs 10.8 ± 3.4 μs 10.9 ± 3.5 μs 0.984 ± 0.44
BigFloat MPFI/basics/acos 0.668 ± 0.01 ms 0.673 ± 0.01 ms 0.994 ± 0.021
BigFloat MPFI/basics/asin 0.65 ± 0.012 ms 0.652 ± 0.012 ms 0.997 ± 0.026
BigFloat MPFI/basics/atan 2.07 ± 0.019 ms 2.1 ± 0.011 ms 0.986 ± 0.011
BigFloat MPFI/basics/cos 0.356 ± 0.01 ms 0.356 ± 0.0099 ms 1 ± 0.04
BigFloat MPFI/basics/cosh 0.429 ± 0.013 ms 0.428 ± 0.012 ms 1 ± 0.04
BigFloat MPFI/basics/exp 0.501 ± 0.011 ms 0.501 ± 0.011 ms 1 ± 0.032
BigFloat MPFI/basics/inv 19.4 ± 4.2 μs 19 ± 3.3 μs 1.02 ± 0.28
BigFloat MPFI/basics/log 0.467 ± 0.01 ms 0.468 ± 0.011 ms 0.998 ± 0.032
BigFloat MPFI/basics/sin 0.46 ± 0.012 ms 0.46 ± 0.012 ms 1 ± 0.036
BigFloat MPFI/basics/sinh 0.567 ± 0.01 ms 0.567 ± 0.01 ms 1 ± 0.025
BigFloat MPFI/basics/sqrt 27.5 ± 6.7 μs 27.5 ± 5.3 μs 0.998 ± 0.31
BigFloat MPFI/basics/tan 0.381 ± 0.01 ms 0.38 ± 0.01 ms 1 ± 0.039
BigFloat MPFI/basics/tanh 0.578 ± 0.011 ms 0.579 ± 0.011 ms 1 ± 0.027
BigFloat bareinterval/basics/* 0.0407 ± 0.0028 ms 0.0423 ± 0.0026 ms 0.96 ± 0.088
BigFloat bareinterval/basics/+ 22.6 ± 3.3 μs 23.4 ± 3.9 μs 0.969 ± 0.21
BigFloat bareinterval/basics/- 22.4 ± 4.1 μs 22.2 ± 3.3 μs 1.01 ± 0.24
BigFloat bareinterval/basics// 19.9 ± 4.9 μs 20.8 ± 4.8 μs 0.954 ± 0.32
BigFloat bareinterval/basics/abs 15.3 ± 3.2 μs 16 ± 3.2 μs 0.959 ± 0.28
BigFloat bareinterval/basics/acos 0.707 ± 0.017 ms 0.707 ± 0.023 ms 1 ± 0.04
BigFloat bareinterval/basics/asin 0.69 ± 0.022 ms 0.69 ± 0.016 ms 0.999 ± 0.04
BigFloat bareinterval/basics/atan 2.08 ± 0.0091 ms 2.08 ± 0.012 ms 1 ± 0.0071
BigFloat bareinterval/basics/cos 0.343 ± 0.086 ms 0.342 ± 0.085 ms 1 ± 0.36
BigFloat bareinterval/basics/cosh 0.472 ± 0.024 ms 0.473 ± 0.023 ms 0.999 ± 0.07
BigFloat bareinterval/basics/exp 0.508 ± 0.01 ms 0.51 ± 0.01 ms 0.998 ± 0.029
BigFloat bareinterval/basics/inv 27.2 ± 4.5 μs 27.3 ± 3.4 μs 0.997 ± 0.2
BigFloat bareinterval/basics/log 0.516 ± 0.014 ms 0.516 ± 0.014 ms 1 ± 0.038
BigFloat bareinterval/basics/sin 0.48 ± 0.097 ms 0.481 ± 0.094 ms 0.998 ± 0.28
BigFloat bareinterval/basics/sinh 0.577 ± 0.011 ms 0.576 ± 0.011 ms 1 ± 0.027
BigFloat bareinterval/basics/sqrt 0.0355 ± 0.0028 ms 0.0351 ± 0.0028 ms 1.01 ± 0.12
BigFloat bareinterval/basics/tan 0.326 ± 0.057 ms 0.325 ± 0.056 ms 1 ± 0.25
BigFloat bareinterval/basics/tanh 0.587 ± 0.011 ms 0.589 ± 0.011 ms 0.997 ± 0.026
BigFloat interval/basics/* 0.0449 ± 0.0019 ms 0.0455 ± 0.002 ms 0.987 ± 0.059
BigFloat interval/basics/+ 25.8 ± 9.4 μs 26.2 ± 8.1 μs 0.985 ± 0.47
BigFloat interval/basics/- 25.7 ± 8.9 μs 25.2 ± 8.1 μs 1.02 ± 0.48
BigFloat interval/basics// 24.9 ± 4.9 μs 25.9 ± 4.7 μs 0.964 ± 0.26
BigFloat interval/basics/abs 14.8 ± 7.7 μs 15.1 ± 7.5 μs 0.983 ± 0.71
BigFloat interval/basics/acos 0.704 ± 0.045 ms 0.703 ± 0.045 ms 1 ± 0.09
BigFloat interval/basics/asin 0.686 ± 0.037 ms 0.687 ± 0.034 ms 0.999 ± 0.072
BigFloat interval/basics/atan 2.09 ± 0.0061 ms 2.09 ± 0.0087 ms 0.997 ± 0.005
BigFloat interval/basics/cos 0.34 ± 0.016 ms 0.337 ± 0.014 ms 1.01 ± 0.064
BigFloat interval/basics/cosh 0.467 ± 0.025 ms 0.47 ± 0.024 ms 0.993 ± 0.073
BigFloat interval/basics/exp 0.518 ± 0.011 ms 0.518 ± 0.012 ms 0.999 ± 0.031
BigFloat interval/basics/inv 30.8 ± 7.5 μs 0.032 ± 0.004 ms 0.963 ± 0.26
BigFloat interval/basics/log 0.51 ± 0.044 ms 0.509 ± 0.044 ms 1 ± 0.12
BigFloat interval/basics/sin 0.484 ± 0.018 ms 0.483 ± 0.034 ms 1 ± 0.079
BigFloat interval/basics/sinh 0.585 ± 0.011 ms 0.584 ± 0.011 ms 1 ± 0.027
BigFloat interval/basics/sqrt 0.0427 ± 0.03 ms 0.0426 ± 0.031 ms 1 ± 1
BigFloat interval/basics/tan 0.28 ± 0.015 ms 0.281 ± 0.015 ms 0.998 ± 0.077
BigFloat interval/basics/tanh 0.596 ± 0.011 ms 0.598 ± 0.012 ms 0.997 ± 0.028
bareinterval/basics/* 2.03 ± 0.07 μs 1.93 ± 0.051 μs 1.05 ± 0.046
bareinterval/basics/+ 0.521 ± 0.01 μs 0.521 ± 0.01 μs 1 ± 0.027
bareinterval/basics/- 0.541 ± 0.009 μs 0.541 ± 0 μs 1 ± 0.017
bareinterval/basics// 1.19 ± 0.04 μs 1.18 ± 0.04 μs 1.01 ± 0.048
bareinterval/basics/abs 0.201 ± 0.011 μs 0.211 ± 0.03 μs 0.953 ± 0.15
bareinterval/basics/acos 2.94 ± 0.041 μs 2.92 ± 0.031 μs 1.01 ± 0.018
bareinterval/basics/asin 3.15 ± 0.021 μs 3.15 ± 0.021 μs 1 ± 0.0094
bareinterval/basics/atan 13 ± 0.2 μs 13 ± 0.21 μs 0.999 ± 0.022
bareinterval/basics/cos 0.0496 ± 0.011 ms 0.0496 ± 0.012 ms 1 ± 0.32
bareinterval/basics/cosh 7.24 ± 0.03 μs 7.24 ± 0.03 μs 1 ± 0.0059
bareinterval/basics/exp 4.25 ± 0.05 μs 4.29 ± 0.05 μs 0.991 ± 0.016
bareinterval/basics/inv 1.07 ± 0.02 μs 1.09 ± 0.031 μs 0.982 ± 0.033
bareinterval/basics/log 2.11 ± 4.1 μs 2.1 ± 0.02 μs 1 ± 2
bareinterval/basics/sin 0.0483 ± 0.018 ms 0.0486 ± 0.018 ms 0.994 ± 0.53
bareinterval/basics/sinh 9.98 ± 0.06 μs 9.96 ± 0.051 μs 1 ± 0.0079
bareinterval/basics/sqrt 1.19 ± 0.03 μs 1.2 ± 0.021 μs 0.992 ± 0.03
bareinterval/basics/tan 28.3 ± 0.26 μs 28.4 ± 0.27 μs 0.999 ± 0.013
bareinterval/basics/tanh 0.297 ± 0.0093 ms 0.292 ± 0.0089 ms 1.02 ± 0.044
interval/basics/* 3.29 ± 0.069 μs 3.13 ± 0.05 μs 1.05 ± 0.028
interval/basics/+ 1.4 ± 0.04 μs 1.4 ± 0.05 μs 1 ± 0.046
interval/basics/- 1.41 ± 0.04 μs 1.42 ± 0.039 μs 0.993 ± 0.039
interval/basics// 2.37 ± 0.039 μs 2.37 ± 0.04 μs 0.996 ± 0.023
interval/basics/abs 0.811 ± 0.04 μs 0.811 ± 0.05 μs 1 ± 0.079
interval/basics/acos 4.92 ± 0.05 μs 4.93 ± 0.059 μs 0.998 ± 0.016
interval/basics/asin 5.07 ± 0.05 μs 5.07 ± 0.049 μs 1 ± 0.014
interval/basics/atan 14.8 ± 0.2 μs 14.9 ± 0.26 μs 0.997 ± 0.022
interval/basics/cos 0.0674 ± 0.0034 ms 0.0676 ± 0.0036 ms 0.996 ± 0.074
interval/basics/cosh 10.2 ± 0.06 μs 10.2 ± 0.08 μs 0.999 ± 0.0098
interval/basics/exp 6.56 ± 0.07 μs 6.54 ± 0.071 μs 1 ± 0.015
interval/basics/inv 1.93 ± 0.051 μs 1.94 ± 0.05 μs 0.994 ± 0.037
interval/basics/log 8.9 ± 0.061 μs 4.83 ± 0.07 μs 1.84 ± 0.03
interval/basics/sin 0.0663 ± 0.0033 ms 0.0665 ± 0.0035 ms 0.997 ± 0.072
interval/basics/sinh 13.1 ± 0.07 μs 13.1 ± 0.07 μs 0.999 ± 0.0076
interval/basics/sqrt 2.04 ± 0.02 μs 2.03 ± 0.02 μs 1 ± 0.014
interval/basics/tan 0.0385 ± 0.0019 ms 0.0386 ± 0.0022 ms 0.997 ± 0.075
interval/basics/tanh 0.309 ± 0.007 ms 0.305 ± 0.008 ms 1.01 ± 0.035
time_to_load 0.111 ± 0.0018 s 0.113 ± 0.00079 s 0.978 ± 0.017
Memory benchmarks
master fcf8252... master / fcf8252...
BigFloat MPFI/basics/* 0.424 k allocs: 21.3 kB 0.424 k allocs: 21.3 kB 1
BigFloat MPFI/basics/+ 0.302 k allocs: 16.5 kB 0.302 k allocs: 16.5 kB 1
BigFloat MPFI/basics/- 0.402 k allocs: 20.4 kB 0.402 k allocs: 20.4 kB 1
BigFloat MPFI/basics// 0.345 k allocs: 18.2 kB 0.345 k allocs: 18.2 kB 1
BigFloat MPFI/basics/abs 0.324 k allocs: 17.4 kB 0.324 k allocs: 17.4 kB 1
BigFloat MPFI/basics/acos 1.24 k allocs: 0.0445 MB 1.24 k allocs: 0.0445 MB 1
BigFloat MPFI/basics/asin 1.08 k allocs: 0.0355 MB 1.08 k allocs: 0.0355 MB 1
BigFloat MPFI/basics/atan 2.14 k allocs: 0.0543 MB 2.14 k allocs: 0.0543 MB 1
BigFloat MPFI/basics/cos 2.9 k allocs: 0.0975 MB 2.9 k allocs: 0.0975 MB 1
BigFloat MPFI/basics/cosh 0.781 k allocs: 0.0322 MB 0.781 k allocs: 0.0322 MB 1
BigFloat MPFI/basics/exp 0.902 k allocs: 0.036 MB 0.902 k allocs: 0.036 MB 1
BigFloat MPFI/basics/inv 0.351 k allocs: 18.4 kB 0.351 k allocs: 18.4 kB 1
BigFloat MPFI/basics/log 0.407 k allocs: 20.6 kB 0.407 k allocs: 20.6 kB 1
BigFloat MPFI/basics/sin 3.18 k allocs: 0.106 MB 3.18 k allocs: 0.106 MB 1
BigFloat MPFI/basics/sinh 0.915 k allocs: 0.0369 MB 0.915 k allocs: 0.0369 MB 1
BigFloat MPFI/basics/sqrt 0.302 k allocs: 16.5 kB 0.302 k allocs: 16.5 kB 1
BigFloat MPFI/basics/tan 2.8 k allocs: 0.098 MB 2.8 k allocs: 0.098 MB 1
BigFloat MPFI/basics/tanh 0.908 k allocs: 0.0362 MB 0.908 k allocs: 0.0362 MB 1
BigFloat bareinterval/basics/* 0.262 k allocs: 26 kB 0.262 k allocs: 26 kB 1
BigFloat bareinterval/basics/+ 0.202 k allocs: 20.4 kB 0.202 k allocs: 20.4 kB 1
BigFloat bareinterval/basics/- 0.202 k allocs: 20.4 kB 0.202 k allocs: 20.4 kB 1
BigFloat bareinterval/basics// 0.1 k allocs: 10.8 kB 0.1 k allocs: 10.8 kB 1
BigFloat bareinterval/basics/abs 0.199 k allocs: 20.1 kB 0.199 k allocs: 20.1 kB 1
BigFloat bareinterval/basics/acos 1.33 k allocs: 0.0741 MB 1.33 k allocs: 0.0741 MB 1
BigFloat bareinterval/basics/asin 1.23 k allocs: 0.0647 MB 1.23 k allocs: 0.0647 MB 1
BigFloat bareinterval/basics/atan 2.04 k allocs: 0.08 MB 2.04 k allocs: 0.08 MB 1
BigFloat bareinterval/basics/cos 2.45 k allocs: 0.185 MB 2.45 k allocs: 0.185 MB 1
BigFloat bareinterval/basics/cosh 1.01 k allocs: 0.0671 MB 1.01 k allocs: 0.0671 MB 1
BigFloat bareinterval/basics/exp 0.802 k allocs: 0.0397 MB 0.802 k allocs: 0.0397 MB 1
BigFloat bareinterval/basics/inv 0.198 k allocs: 20 kB 0.198 k allocs: 20 kB 1
BigFloat bareinterval/basics/log 0.804 k allocs: 0.0694 MB 0.804 k allocs: 0.0694 MB 1
BigFloat bareinterval/basics/sin 2.9 k allocs: 0.197 MB 2.9 k allocs: 0.197 MB 1
BigFloat bareinterval/basics/sinh 0.815 k allocs: 0.0407 MB 0.815 k allocs: 0.0407 MB 1
BigFloat bareinterval/basics/sqrt 0.304 k allocs: 29.9 kB 0.304 k allocs: 29.9 kB 1
BigFloat bareinterval/basics/tan 1.67 k allocs: 0.124 MB 1.67 k allocs: 0.124 MB 1
BigFloat bareinterval/basics/tanh 0.808 k allocs: 0.0399 MB 0.808 k allocs: 0.0399 MB 1
BigFloat interval/basics/* 0.263 k allocs: 26.8 kB 0.263 k allocs: 26.8 kB 1
BigFloat interval/basics/+ 0.203 k allocs: 21.2 kB 0.203 k allocs: 21.2 kB 1
BigFloat interval/basics/- 0.203 k allocs: 21.2 kB 0.203 k allocs: 21.2 kB 1
BigFloat interval/basics// 0.101 k allocs: 11.6 kB 0.101 k allocs: 11.6 kB 1
BigFloat interval/basics/abs 0.2 k allocs: 20.9 kB 0.2 k allocs: 20.9 kB 1
BigFloat interval/basics/acos 1.77 k allocs: 0.115 MB 1.77 k allocs: 0.115 MB 1
BigFloat interval/basics/asin 1.53 k allocs: 0.093 MB 1.53 k allocs: 0.0929 MB 1
BigFloat interval/basics/atan 2.04 k allocs: 0.0813 MB 2.04 k allocs: 0.0813 MB 1
BigFloat interval/basics/cos 2.45 k allocs: 0.186 MB 2.45 k allocs: 0.186 MB 1
BigFloat interval/basics/cosh 1.01 k allocs: 0.0682 MB 1.01 k allocs: 0.0682 MB 1
BigFloat interval/basics/exp 0.803 k allocs: 0.0408 MB 0.803 k allocs: 0.0408 MB 1
BigFloat interval/basics/inv 0.199 k allocs: 20.8 kB 0.199 k allocs: 20.8 kB 1
BigFloat interval/basics/log 1.1 k allocs: 0.0977 MB 1.1 k allocs: 0.0977 MB 1
BigFloat interval/basics/sin 2.9 k allocs: 0.198 MB 2.9 k allocs: 0.198 MB 1
BigFloat interval/basics/sinh 0.816 k allocs: 0.0419 MB 0.816 k allocs: 0.0418 MB 1
BigFloat interval/basics/sqrt 0.758 k allocs: 0.0715 MB 0.758 k allocs: 0.0715 MB 1
BigFloat interval/basics/tan 1.67 k allocs: 0.125 MB 1.67 k allocs: 0.125 MB 1
BigFloat interval/basics/tanh 0.809 k allocs: 0.041 MB 0.809 k allocs: 0.0412 MB 0.995
bareinterval/basics/* 2 allocs: 1.62 kB 2 allocs: 1.62 kB 1
bareinterval/basics/+ 2 allocs: 1.62 kB 2 allocs: 1.62 kB 1
bareinterval/basics/- 2 allocs: 1.62 kB 2 allocs: 1.62 kB 1
bareinterval/basics// 2 allocs: 1.62 kB 2 allocs: 1.62 kB 1
bareinterval/basics/abs 2 allocs: 1.62 kB 2 allocs: 1.62 kB 1
bareinterval/basics/acos 2 allocs: 1.62 kB 2 allocs: 1.62 kB 1
bareinterval/basics/asin 2 allocs: 1.62 kB 2 allocs: 1.62 kB 1
bareinterval/basics/atan 2 allocs: 1.62 kB 2 allocs: 1.62 kB 1
bareinterval/basics/cos 0.56 k allocs: 0.0423 MB 0.56 k allocs: 0.0423 MB 1
bareinterval/basics/cosh 2 allocs: 1.62 kB 2 allocs: 1.62 kB 1
bareinterval/basics/exp 2 allocs: 1.62 kB 2 allocs: 1.62 kB 1
bareinterval/basics/inv 2 allocs: 1.62 kB 2 allocs: 1.62 kB 1
bareinterval/basics/log 2 allocs: 1.62 kB 2 allocs: 1.62 kB 1
bareinterval/basics/sin 0.56 k allocs: 0.0423 MB 0.56 k allocs: 0.0423 MB 1
bareinterval/basics/sinh 2 allocs: 1.62 kB 2 allocs: 1.62 kB 1
bareinterval/basics/sqrt 2 allocs: 1.62 kB 2 allocs: 1.62 kB 1
bareinterval/basics/tan 0.29 k allocs: 23 kB 0.29 k allocs: 23 kB 1
bareinterval/basics/tanh 1.03 k allocs: 0.0359 MB 1.03 k allocs: 0.0359 MB 1
interval/basics/* 3 allocs: 2.45 kB 3 allocs: 2.45 kB 1
interval/basics/+ 3 allocs: 2.45 kB 3 allocs: 2.45 kB 1
interval/basics/- 3 allocs: 2.45 kB 3 allocs: 2.45 kB 1
interval/basics// 3 allocs: 2.45 kB 3 allocs: 2.45 kB 1
interval/basics/abs 3 allocs: 2.45 kB 3 allocs: 2.45 kB 1
interval/basics/acos 3 allocs: 2.45 kB 3 allocs: 2.45 kB 1
interval/basics/asin 3 allocs: 2.45 kB 3 allocs: 2.45 kB 1
interval/basics/atan 3 allocs: 2.45 kB 3 allocs: 2.45 kB 1
interval/basics/cos 0.561 k allocs: 0.0431 MB 0.561 k allocs: 0.0431 MB 1
interval/basics/cosh 3 allocs: 2.45 kB 3 allocs: 2.45 kB 1
interval/basics/exp 3 allocs: 2.45 kB 3 allocs: 2.45 kB 1
interval/basics/inv 3 allocs: 2.45 kB 3 allocs: 2.45 kB 1
interval/basics/log 3 allocs: 2.45 kB 3 allocs: 2.45 kB 1
interval/basics/sin 0.561 k allocs: 0.0431 MB 0.561 k allocs: 0.0431 MB 1
interval/basics/sinh 3 allocs: 2.45 kB 3 allocs: 2.45 kB 1
interval/basics/sqrt 3 allocs: 2.45 kB 3 allocs: 2.45 kB 1
interval/basics/tan 0.291 k allocs: 24.4 kB 0.291 k allocs: 24.4 kB 1
interval/basics/tanh 1.03 k allocs: 0.0367 MB 1.03 k allocs: 0.0367 MB 1
time_to_load 0.154 k allocs: 11.4 kB 0.154 k allocs: 11.4 kB 1

@codecov-commenter
Copy link
Copy Markdown

codecov-commenter commented Apr 17, 2026

⚠️ Please install the 'codecov app svg image' to ensure uploads and comments are reliably processed by Codecov.

Codecov Report

❌ Patch coverage is 82.07547% with 19 lines in your changes missing coverage. Please review.
✅ Project coverage is 77.91%. Comparing base (a0267ae) to head (c62879d).
⚠️ Report is 1 commits behind head on master.

Files with missing lines Patch % Lines
ext/IntervalArithmeticLinearAlgebraExt.jl 81.37% 19 Missing ⚠️
❗ Your organization needs to install the Codecov GitHub app to enable full functionality.
Additional details and impacted files
@@            Coverage Diff             @@
##           master     #753      +/-   ##
==========================================
+ Coverage   74.11%   77.91%   +3.80%     
==========================================
  Files          32       32              
  Lines        3021     3170     +149     
==========================================
+ Hits         2239     2470     +231     
+ Misses        782      700      -82     

☔ View full report in Codecov by Sentry.
📢 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.

@blegat blegat marked this pull request as ready for review May 2, 2026 20:41
@blegat
Copy link
Copy Markdown
Author

blegat commented May 2, 2026

Ready for review :)

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.

2 participants