Skip to content

Conversation

@DhairyaLGandhi
Copy link
Contributor

Helps downstream by not requiring checking that the returned value is nothing. While helpful to demonstrate that the rule failed to apply, it can simplify the chain by always returning IR.

@github-actions
Copy link
Contributor

github-actions bot commented Jan 7, 2026

Benchmark Results (Julia v1)

Time benchmarks
master b65020f... master / b65020f...
arithmetic/2-arg mul 9.98 ± 0.11 μs 10 ± 0.1 μs 0.997 ± 0.015
arithmetic/addition 0.0654 ± 0.00067 ms 0.0648 ± 0.00061 ms 1.01 ± 0.014
arithmetic/division 21.2 ± 0.26 μs 21.4 ± 0.31 μs 0.992 ± 0.019
arithmetic/multiplication 0.0481 ± 0.0021 ms 0.0515 ± 0.0026 ms 0.934 ± 0.062
overhead/acrule/a+2 2.05 ± 0.044 μs 2.18 ± 0.057 μs 0.939 ± 0.032
overhead/acrule/a+2+b 0.067 ± 0.002 μs 0.066 ± 0.002 μs 1.02 ± 0.043
overhead/acrule/a+b 3.38 ± 0.077 μs 3.62 ± 0.1 μs 0.934 ± 0.033
overhead/acrule/noop:Int 18 ± 0 ns 18 ± 1 ns 1 ± 0.056
overhead/acrule/noop:Sym 0.046 ± 0.001 μs 0.046 ± 0.001 μs 1 ± 0.031
overhead/get_degrees/large_poly 0.081 ± 0.004 μs 0.078 ± 0.002 μs 1.04 ± 0.058
overhead/rule/noop:Int 0.061 ± 0.003 μs 0.061 ± 0.001 μs 1 ± 0.052
overhead/rule/noop:Sym 0.057 ± 0.005 μs 0.06 ± 0.001 μs 0.95 ± 0.085
overhead/rule/noop:Term 0.058 ± 0.004 μs 0.059 ± 0.001 μs 0.983 ± 0.07
overhead/ruleset/noop:Int 18 ± 0 ns 18 ± 0 ns 1 ± 0
overhead/ruleset/noop:Sym 0.304 ± 0.006 μs 0.33 ± 0.012 μs 0.921 ± 0.038
overhead/ruleset/noop:Term 1.2 ± 0.043 μs 1.27 ± 0.034 μs 0.949 ± 0.042
overhead/simplify/noop:Int 28 ± 2 ns 18 ± 1 ns 1.56 ± 0.14
overhead/simplify/noop:Sym 28 ± 1 ns 24 ± 1 ns 1.17 ± 0.064
overhead/simplify/noop:Term 23 ± 0.8 μs 23.9 ± 0.46 μs 0.962 ± 0.038
overhead/simplify/randterm (+, *):serial 0.171 ± 0.017 s 0.179 ± 0.015 s 0.954 ± 0.12
overhead/simplify/randterm (+, *):thread 0.211 ± 0.0057 s 0.222 ± 0.0059 s 0.952 ± 0.036
overhead/simplify/randterm (/, *):serial 0.0755 ± 0.0024 ms 0.0779 ± 0.0022 ms 0.969 ± 0.041
overhead/simplify/randterm (/, *):thread 0.0851 ± 0.0055 ms 0.0852 ± 0.0047 ms 0.998 ± 0.085
overhead/substitute/a 0.0365 ± 0.00049 ms 0.0365 ± 0.00042 ms 0.999 ± 0.018
overhead/substitute/a,b 0.0462 ± 0.00058 ms 0.0464 ± 0.00053 ms 0.995 ± 0.017
overhead/substitute/a,b,c 0.0444 ± 0.00073 ms 0.0445 ± 0.0005 ms 0.997 ± 0.02
polyform/easy_iszero 17.5 ± 0.18 μs 18 ± 0.21 μs 0.972 ± 0.015
polyform/isone 0.826 ± 0.018 ms 0.824 ± 0.016 ms 1 ± 0.029
polyform/isone:noop 0.08 ± 0.001 μs 0.083 ± 0.001 μs 0.964 ± 0.017
polyform/iszero 0.702 ± 0.014 ms 0.704 ± 0.014 ms 0.997 ± 0.027
polyform/iszero:noop 0.083 ± 0.019 μs 0.083 ± 0.002 μs 1 ± 0.23
polyform/simplify_fractions 0.899 ± 0.027 ms 0.9 ± 0.027 ms 0.999 ± 0.043
printing/large_poly 0.206 ± 0.016 s 0.191 ± 0.019 s 1.08 ± 0.14
time_to_load 1.24 ± 0.014 s 1.22 ± 0.0098 s 1.01 ± 0.014
Memory benchmarks
master b65020f... master / b65020f...
arithmetic/2-arg mul 0.053 k allocs: 1.7 kB 0.053 k allocs: 1.7 kB 1
arithmetic/addition 0.3 k allocs: 10.3 kB 0.3 k allocs: 10.3 kB 1
arithmetic/division 0.129 k allocs: 4.69 kB 0.129 k allocs: 4.69 kB 1
arithmetic/multiplication 0.25 k allocs: 6.44 kB 0.25 k allocs: 6.44 kB 1
overhead/acrule/a+2 0.033 k allocs: 1.11 kB 0.033 k allocs: 1.11 kB 1
overhead/acrule/a+2+b 0 allocs: 0 B 0 allocs: 0 B
overhead/acrule/a+b 0.044 k allocs: 1.52 kB 0.044 k allocs: 1.52 kB 1
overhead/acrule/noop:Int 0 allocs: 0 B 0 allocs: 0 B
overhead/acrule/noop:Sym 0 allocs: 0 B 0 allocs: 0 B
overhead/get_degrees/large_poly 2 allocs: 32 B 2 allocs: 32 B 1
overhead/rule/noop:Int 2 allocs: 0.0625 kB 2 allocs: 0.0625 kB 1
overhead/rule/noop:Sym 2 allocs: 0.0625 kB 2 allocs: 0.0625 kB 1
overhead/rule/noop:Term 2 allocs: 0.0625 kB 2 allocs: 0.0625 kB 1
overhead/ruleset/noop:Int 0 allocs: 0 B 0 allocs: 0 B
overhead/ruleset/noop:Sym 3 allocs: 0.109 kB 3 allocs: 0.109 kB 1
overhead/ruleset/noop:Term 12 allocs: 0.391 kB 12 allocs: 0.391 kB 1
overhead/simplify/noop:Int 0 allocs: 0 B 0 allocs: 0 B
overhead/simplify/noop:Sym 0 allocs: 0 B 0 allocs: 0 B
overhead/simplify/noop:Term 0.276 k allocs: 9.89 kB 0.276 k allocs: 9.89 kB 1
overhead/simplify/randterm (+, *):serial 2.09 M allocs: 0.0743 GB 2.09 M allocs: 0.0743 GB 1
overhead/simplify/randterm (+, *):thread 2.25 M allocs: 0.236 GB 2.26 M allocs: 0.236 GB 1
overhead/simplify/randterm (/, *):serial 0.776 k allocs: 28.1 kB 0.776 k allocs: 28.1 kB 1
overhead/simplify/randterm (/, *):thread 0.911 k allocs: 0.0324 MB 0.911 k allocs: 0.0324 MB 1
overhead/substitute/a 0.204 k allocs: 6.77 kB 0.204 k allocs: 6.77 kB 1
overhead/substitute/a,b 0.268 k allocs: 8.86 kB 0.268 k allocs: 8.86 kB 1
overhead/substitute/a,b,c 0.268 k allocs: 8.67 kB 0.268 k allocs: 8.67 kB 1
polyform/easy_iszero 0.088 k allocs: 2.83 kB 0.088 k allocs: 2.83 kB 1
polyform/isone 10.9 k allocs: 0.576 MB 10.9 k allocs: 0.576 MB 1
polyform/isone:noop 1 allocs: 16 B 1 allocs: 16 B 1
polyform/iszero 8.97 k allocs: 0.476 MB 8.97 k allocs: 0.476 MB 1
polyform/iszero:noop 1 allocs: 16 B 1 allocs: 16 B 1
polyform/simplify_fractions 11.4 k allocs: 0.593 MB 11.4 k allocs: 0.593 MB 1
printing/large_poly 2.15 M allocs: 0.079 GB 2.15 M allocs: 0.079 GB 1
time_to_load 0.145 k allocs: 11 kB 0.145 k allocs: 11 kB 1

@github-actions
Copy link
Contributor

github-actions bot commented Jan 7, 2026

Benchmark Results (Julia vlts)

Time benchmarks
master b65020f... master / b65020f...
arithmetic/2-arg mul 13.1 ± 0.37 μs 12.9 ± 0.28 μs 1.01 ± 0.036
arithmetic/addition 0.0773 ± 0.0011 ms 0.0793 ± 0.0011 ms 0.975 ± 0.019
arithmetic/division 26.8 ± 0.8 μs 25.9 ± 0.6 μs 1.03 ± 0.039
arithmetic/multiplication 0.0611 ± 0.0015 ms 0.0593 ± 0.00071 ms 1.03 ± 0.028
overhead/acrule/a+2 2.33 ± 0.05 μs 2.33 ± 0.04 μs 1 ± 0.027
overhead/acrule/a+2+b 0.07 ± 0.01 μs 0.07 ± 0.01 μs 1 ± 0.2
overhead/acrule/a+b 4.13 ± 0.24 μs 4.11 ± 0.27 μs 1 ± 0.088
overhead/acrule/noop:Int 0.05 ± 0.01 μs 0.05 ± 0.01 μs 1 ± 0.28
overhead/acrule/noop:Sym 0.051 ± 0.01 μs 0.05 ± 0.01 μs 1.02 ± 0.29
overhead/get_degrees/large_poly 0.1 ± 0.01 μs 0.089 ± 0.01 μs 1.12 ± 0.17
overhead/rule/noop:Int 0.06 ± 0.01 μs 0.061 ± 0.01 μs 0.984 ± 0.23
overhead/rule/noop:Sym 0.06 ± 0.01 μs 0.07 ± 0.01 μs 0.857 ± 0.19
overhead/rule/noop:Term 0.061 ± 0.01 μs 0.07 ± 0.01 μs 0.871 ± 0.19
overhead/ruleset/noop:Int 30 ± 0 ns 30 ± 0 ns 1 ± 0
overhead/ruleset/noop:Sym 0.311 ± 0.001 μs 0.3 ± 0.01 μs 1.04 ± 0.035
overhead/ruleset/noop:Term 1.19 ± 0.02 μs 1.19 ± 0.021 μs 1 ± 0.024
overhead/simplify/noop:Int 30 ± 0 ns 30 ± 0 ns 1 ± 0
overhead/simplify/noop:Sym 30 ± 10 ns 30 ± 10 ns 1 ± 0.47
overhead/simplify/noop:Term 28.5 ± 0.8 μs 28 ± 0.94 μs 1.02 ± 0.045
overhead/simplify/randterm (+, *):serial 0.231 ± 0.0029 s 0.235 ± 0.0023 s 0.984 ± 0.016
overhead/simplify/randterm (+, *):thread 0.265 ± 0.018 s 0.262 ± 0.019 s 1.01 ± 0.1
overhead/simplify/randterm (/, *):serial 0.0865 ± 0.0022 ms 0.0846 ± 0.0024 ms 1.02 ± 0.038
overhead/simplify/randterm (/, *):thread 0.0903 ± 0.0027 ms 0.0884 ± 0.0026 ms 1.02 ± 0.042
overhead/substitute/a 0.05 ± 0.0011 ms 0.0494 ± 0.001 ms 1.01 ± 0.031
overhead/substitute/a,b 0.0622 ± 0.0011 ms 0.0613 ± 0.0013 ms 1.01 ± 0.028
overhead/substitute/a,b,c 0.0556 ± 0.0013 ms 0.0542 ± 0.0012 ms 1.03 ± 0.032
polyform/easy_iszero 22.7 ± 0.5 μs 22.9 ± 0.48 μs 0.988 ± 0.03
polyform/isone 1.05 ± 0.033 ms 1.08 ± 0.037 ms 0.972 ± 0.045
polyform/isone:noop 0.09 ± 0.01 μs 0.09 ± 0.01 μs 1 ± 0.16
polyform/iszero 0.892 ± 0.026 ms 0.924 ± 0.028 ms 0.965 ± 0.041
polyform/iszero:noop 0.09 ± 0.01 μs 0.09 ± 0 μs 1 ± 0.11
polyform/simplify_fractions 1.14 ± 0.035 ms 1.17 ± 0.045 ms 0.971 ± 0.048
printing/large_poly 0.211 ± 0.0025 s 0.212 ± 0.0038 s 0.995 ± 0.022
time_to_load 1.23 ± 0.013 s 1.22 ± 0.019 s 1.02 ± 0.019
Memory benchmarks
master b65020f... master / b65020f...
arithmetic/2-arg mul 0.076 k allocs: 2.62 kB 0.076 k allocs: 2.62 kB 1
arithmetic/addition 0.438 k allocs: 16 kB 0.438 k allocs: 16 kB 1
arithmetic/division 0.14 k allocs: 5.38 kB 0.14 k allocs: 5.38 kB 1
arithmetic/multiplication 0.354 k allocs: 11.6 kB 0.354 k allocs: 11.6 kB 1
overhead/acrule/a+2 0.034 k allocs: 1.25 kB 0.034 k allocs: 1.25 kB 1
overhead/acrule/a+2+b 0 allocs: 0 B 0 allocs: 0 B
overhead/acrule/a+b 0.047 k allocs: 1.8 kB 0.047 k allocs: 1.8 kB 1
overhead/acrule/noop:Int 0 allocs: 0 B 0 allocs: 0 B
overhead/acrule/noop:Sym 0 allocs: 0 B 0 allocs: 0 B
overhead/get_degrees/large_poly 2 allocs: 32 B 2 allocs: 32 B 1
overhead/rule/noop:Int 2 allocs: 0.0625 kB 2 allocs: 0.0625 kB 1
overhead/rule/noop:Sym 2 allocs: 0.0625 kB 2 allocs: 0.0625 kB 1
overhead/rule/noop:Term 2 allocs: 0.0625 kB 2 allocs: 0.0625 kB 1
overhead/ruleset/noop:Int 0 allocs: 0 B 0 allocs: 0 B
overhead/ruleset/noop:Sym 3 allocs: 0.109 kB 3 allocs: 0.109 kB 1
overhead/ruleset/noop:Term 12 allocs: 0.391 kB 12 allocs: 0.391 kB 1
overhead/simplify/noop:Int 0 allocs: 0 B 0 allocs: 0 B
overhead/simplify/noop:Sym 0 allocs: 0 B 0 allocs: 0 B
overhead/simplify/noop:Term 0.298 k allocs: 11.6 kB 0.298 k allocs: 11.6 kB 1
overhead/simplify/randterm (+, *):serial 2.3 M allocs: 0.0882 GB 2.31 M allocs: 0.0883 GB 0.999
overhead/simplify/randterm (+, *):thread 2.35 M allocs: 0.246 GB 2.35 M allocs: 0.246 GB 1
overhead/simplify/randterm (/, *):serial 0.844 k allocs: 30.4 kB 0.844 k allocs: 30.4 kB 1
overhead/simplify/randterm (/, *):thread 0.879 k allocs: 31.5 kB 0.879 k allocs: 31.5 kB 1
overhead/substitute/a 0.272 k allocs: 9.83 kB 0.272 k allocs: 9.83 kB 1
overhead/substitute/a,b 0.34 k allocs: 12.2 kB 0.34 k allocs: 12.2 kB 1
overhead/substitute/a,b,c 0.301 k allocs: 10.4 kB 0.301 k allocs: 10.4 kB 1
polyform/easy_iszero 0.13 k allocs: 4.44 kB 0.13 k allocs: 4.44 kB 1
polyform/isone 8.3 k allocs: 0.565 MB 8.3 k allocs: 0.565 MB 1
polyform/isone:noop 1 allocs: 16 B 1 allocs: 16 B 1
polyform/iszero 6.83 k allocs: 0.465 MB 6.83 k allocs: 0.465 MB 1
polyform/iszero:noop 1 allocs: 16 B 1 allocs: 16 B 1
polyform/simplify_fractions 8.77 k allocs: 0.587 MB 8.77 k allocs: 0.587 MB 1
printing/large_poly 1.86 M allocs: 0.082 GB 1.86 M allocs: 0.082 GB 1
time_to_load 0.153 k allocs: 14.5 kB 0.153 k allocs: 14.5 kB 1

@AayushSabharwal AayushSabharwal merged commit 3a165d3 into JuliaSymbolics:master Jan 12, 2026
12 of 18 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.

2 participants