JuliaSymbolics / SymbolicUtils.jl

Symbolic expressions, rewriting and simplification
https://docs.sciml.ai/SymbolicUtils/stable/
Other
524 stars 99 forks source link

Update to MultivariatePolynomials v0.5 #531

Closed blegat closed 11 months ago

blegat commented 1 year ago

Most of the breaking changes were done in order to make it faster notably to resolve https://github.com/JuliaAlgebra/MultivariatePolynomials.jl/issues/194 (I should update the benchmarks in this issue by the way, they should be much better now). The performance of multivariate gcd should be much better now.

shashi commented 12 months ago

CI is erroring with:

  `variable_union_type` not implemented for MultivariatePolynomials.AbstractVariable.
github-actions[bot] commented 12 months ago

Benchmark Results

master c6ffe2f1bd77d6... t[master]/t[c6ffe2f1bd77d6...]
overhead/acrule/a+2 1.2 ± 0.2 μs 1.18 ± 0.19 μs 1.02
overhead/acrule/a+2+b 1.19 ± 0.2 μs 1.17 ± 0.21 μs 1.02
overhead/acrule/a+b 0.401 ± 0.0055 μs 0.396 ± 0.007 μs 1.01
overhead/acrule/noop:Int 27.2 ± 0.4 ns 25.1 ± 0.2 ns 1.08
overhead/acrule/noop:Sym 0.0436 ± 0.0067 μs 0.0396 ± 0.0064 μs 1.1
overhead/rule/noop:Int 0.0421 ± 0.0026 μs 0.0397 ± 0.0022 μs 1.06
overhead/rule/noop:Sym 0.0528 ± 0.0014 μs 0.0517 ± 0.0023 μs 1.02
overhead/rule/noop:Term 0.0528 ± 0.0015 μs 0.0514 ± 0.0016 μs 1.03
overhead/ruleset/noop:Int 0.157 ± 0.0018 μs 0.145 ± 0.0021 μs 1.08
overhead/ruleset/noop:Sym 0.179 ± 0.0024 μs 0.187 ± 0.0039 μs 0.957
overhead/ruleset/noop:Term 4.47 ± 0.2 μs 4.56 ± 0.23 μs 0.981
overhead/simplify/noop:Int 0.206 ± 0.0071 μs 0.196 ± 0.0093 μs 1.05
overhead/simplify/noop:Sym 0.213 ± 0.0031 μs 0.218 ± 0.003 μs 0.978
overhead/simplify/noop:Term 0.0417 ± 0.0012 ms 0.0421 ± 0.0021 ms 0.991
overhead/simplify/randterm (+, *):serial 0.111 ± 0.0016 s 0.113 ± 0.0015 s 0.99
overhead/simplify/randterm (+, *):thread 0.0756 ± 0.011 s 0.0734 ± 0.012 s 1.03
overhead/simplify/randterm (/, *):serial 0.251 ± 0.005 ms 0.252 ± 0.0057 ms 0.995
overhead/simplify/randterm (/, *):thread 0.292 ± 0.0069 ms 0.296 ± 0.0071 ms 0.987
overhead/substitute/a 0.0955 ± 0.0013 ms 0.0936 ± 0.0013 ms 1.02
overhead/substitute/a,b 0.0844 ± 0.0012 ms 0.0836 ± 0.0013 ms 1.01
overhead/substitute/a,b,c 0.0409 ± 0.0008 ms 0.0406 ± 0.0007 ms 1.01
polyform/easy_iszero 0.0413 ± 0.0017 ms 0.0417 ± 0.0019 ms 0.99
polyform/isone 2.8 ± 0.1 ns 3.6 ± 0.1 ns 0.778
polyform/iszero 1.62 ± 0.026 ms 1.68 ± 0.027 ms 0.964
polyform/simplify_fractions 2.47 ± 0.034 ms 2.55 ± 0.04 ms 0.969
time_to_load 5.15 ± 0.0052 s 5.09 ± 0.0065 s 1.01

Benchmark Plots

A plot of the benchmark results have been uploaded as an artifact to the workflow run for this PR. Go to "Actions"->"Benchmark a pull request"->[the most recent run]->"Artifacts" (at the bottom).

schillic commented 11 months ago

If this looks good to you, could you please merge and tag a new release? This is holding back changes in other packages.

shashi commented 11 months ago

Thanks!