Skip to content

Fix negative fraction simplification (issue JuliaSymbolics/Symbolic.jl#1773)#896

Open
ParthsarthiSingh-glang wants to merge 1 commit into
JuliaSymbolics:masterfrom
ParthsarthiSingh-glang:fix-1773
Open

Fix negative fraction simplification (issue JuliaSymbolics/Symbolic.jl#1773)#896
ParthsarthiSingh-glang wants to merge 1 commit into
JuliaSymbolics:masterfrom
ParthsarthiSingh-glang:fix-1773

Conversation

@ParthsarthiSingh-glang

Copy link
Copy Markdown
Contributor

@github-actions

Copy link
Copy Markdown
Contributor

Benchmark Results (Julia vlts)

Time benchmarks
master e3e56f5... master / e3e56f5...
arithmetic/2-arg mul 12.5 ± 0.35 μs 12.9 ± 0.34 μs 0.971 ± 0.037
arithmetic/addition 0.0777 ± 0.0013 ms 0.0778 ± 0.0012 ms 0.998 ± 0.023
arithmetic/division 23.9 ± 0.72 μs 24 ± 0.64 μs 0.996 ± 0.04
arithmetic/multiplication 0.061 ± 0.0025 ms 0.0614 ± 0.0018 ms 0.994 ± 0.05
overhead/acrule/a+2 2.43 ± 0.1 μs 2.34 ± 0.1 μs 1.04 ± 0.062
overhead/acrule/a+2+b 0.06 ± 0.01 μs 0.06 ± 0.01 μs 1 ± 0.24
overhead/acrule/a+b 4.35 ± 0.18 μs 4.14 ± 0.34 μs 1.05 ± 0.097
overhead/acrule/noop:Int 0.05 ± 0.009 μs 0.05 ± 0 μs 1 ± 0.18
overhead/acrule/noop:Sym 0.05 ± 0.01 μs 0.05 ± 0.01 μs 1 ± 0.28
overhead/get_degrees/large_poly 0.08 ± 0 μs 0.08 ± 0.02 μs 1 ± 0.25
overhead/rule/noop:Int 0.06 ± 0.01 μs 0.06 ± 0.001 μs 1 ± 0.17
overhead/rule/noop:Sym 0.06 ± 0.001 μs 0.06 ± 0.01 μs 1 ± 0.17
overhead/rule/noop:Term 0.06 ± 0.001 μs 0.06 ± 0.01 μs 1 ± 0.17
overhead/ruleset/noop:Int 30 ± 0 ns 30 ± 0 ns 1 ± 0
overhead/ruleset/noop:Sym 0.24 ± 0.01 μs 0.231 ± 0.01 μs 1.04 ± 0.062
overhead/ruleset/noop:Term 1.03 ± 0.029 μs 1.03 ± 0.029 μs 1 ± 0.04
overhead/simplify/noop:Int 30 ± 0 ns 30 ± 0 ns 1 ± 0
overhead/simplify/noop:Sym 0.04 ± 0.01 μs 0.04 ± 0.01 μs 1 ± 0.35
overhead/simplify/noop:Term 27.9 ± 0.92 μs 26.8 ± 0.9 μs 1.04 ± 0.049
overhead/simplify/randterm (+, *):serial 0.274 ± 0.0032 s 0.233 ± 0.0011 s 1.18 ± 0.015
overhead/simplify/randterm (+, *):thread 0.304 ± 0.016 s 0.261 ± 0.018 s 1.17 ± 0.1
overhead/simplify/randterm (/, *):serial 0.165 ± 0.0055 ms 0.0753 ± 0.0016 ms 2.19 ± 0.087
overhead/simplify/randterm (/, *):thread 0.168 ± 0.0057 ms 0.0786 ± 0.0017 ms 2.14 ± 0.085
overhead/substitute/a 0.038 ± 0.00071 ms 0.0404 ± 0.00071 ms 0.941 ± 0.024
overhead/substitute/a,b 0.0455 ± 0.00077 ms 0.048 ± 0.00078 ms 0.947 ± 0.022
overhead/substitute/a,b,c 0.0417 ± 0.0007 ms 0.0423 ± 0.00072 ms 0.986 ± 0.024
polyform/easy_iszero 22.2 ± 0.45 μs 22.8 ± 0.44 μs 0.972 ± 0.027
polyform/isone 1.02 ± 0.028 ms 1.05 ± 0.027 ms 0.973 ± 0.037
polyform/isone:noop 0.08 ± 0 μs 0.08 ± 0 μs 1 ± 0
polyform/iszero 0.853 ± 0.025 ms 0.886 ± 0.021 ms 0.963 ± 0.037
polyform/iszero:noop 0.08 ± 0.01 μs 0.08 ± 0.001 μs 1 ± 0.13
polyform/simplify_fractions 1.1 ± 0.031 ms 1.13 ± 0.026 ms 0.98 ± 0.035
printing/large_poly 0.218 ± 0.0028 s 0.216 ± 0.0023 s 1.01 ± 0.017
time_to_load 1.59 ± 0.0073 s 1.29 ± 0.0053 s 1.24 ± 0.0077
Memory benchmarks
master e3e56f5... master / e3e56f5...
arithmetic/2-arg mul 0.078 k allocs: 2.72 kB 0.077 k allocs: 2.69 kB 1.01
arithmetic/addition 0.468 k allocs: 16.9 kB 0.438 k allocs: 16 kB 1.06
arithmetic/division 0.142 k allocs: 5.47 kB 0.14 k allocs: 5.41 kB 1.01
arithmetic/multiplication 0.356 k allocs: 11.7 kB 0.356 k allocs: 11.7 kB 1
overhead/acrule/a+2 0.034 k allocs: 1.25 kB 0.033 k allocs: 1.23 kB 1.01
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.045 k allocs: 1.77 kB 1.02
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.5 kB 0.282 k allocs: 11.4 kB 1.01
overhead/simplify/randterm (+, *):serial 2.55 M allocs: 0.0975 GB 2.22 M allocs: 0.0871 GB 1.12
overhead/simplify/randterm (+, *):thread 2.6 M allocs: 0.255 GB 2.26 M allocs: 0.245 GB 1.04
overhead/simplify/randterm (/, *):serial 2.04 k allocs: 0.0733 MB 0.781 k allocs: 29.4 kB 2.55
overhead/simplify/randterm (/, *):thread 2.07 k allocs: 0.0743 MB 0.816 k allocs: 30.5 kB 2.5
overhead/substitute/a 0.22 k allocs: 8.42 kB 0.22 k allocs: 8.42 kB 1
overhead/substitute/a,b 0.267 k allocs: 10.1 kB 0.267 k allocs: 10.1 kB 1
overhead/substitute/a,b,c 0.238 k allocs: 8.62 kB 0.238 k allocs: 8.62 kB 1
polyform/easy_iszero 0.133 k allocs: 4.58 kB 0.127 k allocs: 4.48 kB 1.02
polyform/isone 8.33 k allocs: 0.573 MB 7.98 k allocs: 0.568 MB 1.01
polyform/isone:noop 1 allocs: 16 B 1 allocs: 16 B 1
polyform/iszero 6.86 k allocs: 0.474 MB 6.7 k allocs: 0.471 MB 1.01
polyform/iszero:noop 1 allocs: 16 B 1 allocs: 16 B 1
polyform/simplify_fractions 8.81 k allocs: 0.596 MB 8.64 k allocs: 0.593 MB 1.01
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

@github-actions

Copy link
Copy Markdown
Contributor

Benchmark Results (Julia v1)

Time benchmarks
master e3e56f5... master / e3e56f5...
arithmetic/2-arg mul 10.2 ± 0.27 μs 10.5 ± 0.26 μs 0.967 ± 0.035
arithmetic/addition 0.0687 ± 0.00091 ms 0.0684 ± 0.00082 ms 1.01 ± 0.018
arithmetic/division 24.8 ± 0.66 μs 24.6 ± 0.59 μs 1.01 ± 0.036
arithmetic/multiplication 0.0528 ± 0.0023 ms 0.055 ± 0.0025 ms 0.959 ± 0.06
overhead/acrule/a+2 2.2 ± 0.04 μs 2.15 ± 0.061 μs 1.02 ± 0.034
overhead/acrule/a+2+b 0.071 ± 0.01 μs 0.07 ± 0.01 μs 1.01 ± 0.2
overhead/acrule/a+b 3.73 ± 0.069 μs 3.68 ± 0.07 μs 1.01 ± 0.027
overhead/acrule/noop:Int 30 ± 0 ns 30 ± 0 ns 1 ± 0
overhead/acrule/noop:Sym 0.06 ± 0 μs 0.06 ± 0 μs 1 ± 0
overhead/get_degrees/large_poly 0.071 ± 0.01 μs 0.07 ± 0.001 μs 1.01 ± 0.14
overhead/rule/noop:Int 0.06 ± 0.01 μs 0.06 ± 0.001 μs 1 ± 0.17
overhead/rule/noop:Sym 0.07 ± 0.01 μs 0.06 ± 0.01 μs 1.17 ± 0.26
overhead/rule/noop:Term 0.07 ± 0.01 μs 0.06 ± 0.01 μs 1.17 ± 0.26
overhead/ruleset/noop:Int 30 ± 0 ns 30 ± 0 ns 1 ± 0
overhead/ruleset/noop:Sym 0.311 ± 0.001 μs 0.311 ± 0.001 μs 1 ± 0.0045
overhead/ruleset/noop:Term 1.15 ± 0.02 μs 1.13 ± 0.03 μs 1.02 ± 0.032
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 26.2 ± 0.6 μs 26.2 ± 0.6 μs 1 ± 0.033
overhead/simplify/randterm (+, *):serial 0.226 ± 0.028 s 0.196 ± 0.022 s 1.15 ± 0.19
overhead/simplify/randterm (+, *):thread 0.286 ± 0.038 s 0.253 ± 0.042 s 1.13 ± 0.24
overhead/simplify/randterm (/, *):serial 0.159 ± 0.02 ms 0.085 ± 0.0029 ms 1.87 ± 0.25
overhead/simplify/randterm (/, *):thread 0.167 ± 0.02 ms 0.0949 ± 0.0082 ms 1.76 ± 0.26
overhead/substitute/a 0.0338 ± 0.00078 ms 0.0345 ± 0.0009 ms 0.981 ± 0.034
overhead/substitute/a,b 0.0424 ± 0.0011 ms 0.043 ± 0.001 ms 0.986 ± 0.035
overhead/substitute/a,b,c 0.0406 ± 0.0011 ms 0.0405 ± 0.00094 ms 1 ± 0.036
polyform/easy_iszero 18.7 ± 0.42 μs 19.2 ± 0.4 μs 0.973 ± 0.03
polyform/isone 0.95 ± 0.024 ms 0.929 ± 0.018 ms 1.02 ± 0.032
polyform/isone:noop 0.07 ± 0 μs 0.07 ± 0 μs 1 ± 0
polyform/iszero 0.824 ± 0.023 ms 0.806 ± 0.02 ms 1.02 ± 0.039
polyform/iszero:noop 0.07 ± 0.001 μs 0.08 ± 0.01 μs 0.875 ± 0.11
polyform/simplify_fractions 1.02 ± 0.027 ms 0.999 ± 0.023 ms 1.02 ± 0.035
printing/large_poly 0.197 ± 0.013 s 0.192 ± 0.013 s 1.02 ± 0.096
time_to_load 1.74 ± 0.034 s 1.45 ± 0.018 s 1.2 ± 0.028
Memory benchmarks
master e3e56f5... master / e3e56f5...
arithmetic/2-arg mul 0.056 k allocs: 1.78 kB 0.056 k allocs: 1.78 kB 1
arithmetic/addition 0.33 k allocs: 11.3 kB 0.3 k allocs: 10.3 kB 1.09
arithmetic/division 0.132 k allocs: 4.77 kB 0.132 k allocs: 4.77 kB 1
arithmetic/multiplication 0.252 k allocs: 6.5 kB 0.252 k allocs: 6.5 kB 1
overhead/acrule/a+2 0.034 k allocs: 1.12 kB 0.034 k allocs: 1.12 kB 1
overhead/acrule/a+2+b 0 allocs: 0 B 0 allocs: 0 B
overhead/acrule/a+b 0.046 k allocs: 1.55 kB 0.046 k allocs: 1.55 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.284 k allocs: 9.91 kB 0.284 k allocs: 10 kB 0.989
overhead/simplify/randterm (+, *):serial 2.39 M allocs: 0.0828 GB 2.16 M allocs: 0.0755 GB 1.1
overhead/simplify/randterm (+, *):thread 2.54 M allocs: 0.245 GB 2.32 M allocs: 0.237 GB 1.03
overhead/simplify/randterm (/, *):serial 1.91 k allocs: 0.0655 MB 0.783 k allocs: 28.2 kB 2.37
overhead/simplify/randterm (/, *):thread 2.05 k allocs: 0.0704 MB 0.918 k allocs: 0.0325 MB 2.17
overhead/substitute/a 0.172 k allocs: 6.05 kB 0.172 k allocs: 6.05 kB 1
overhead/substitute/a,b 0.223 k allocs: 7.69 kB 0.223 k allocs: 7.69 kB 1
overhead/substitute/a,b,c 0.229 k allocs: 7.81 kB 0.229 k allocs: 7.81 kB 1
polyform/easy_iszero 0.092 k allocs: 2.94 kB 0.092 k allocs: 2.94 kB 1
polyform/isone 10.9 k allocs: 0.578 MB 10.9 k allocs: 0.578 MB 1
polyform/isone:noop 1 allocs: 16 B 1 allocs: 16 B 1
polyform/iszero 8.96 k allocs: 0.48 MB 8.96 k allocs: 0.48 MB 1
polyform/iszero:noop 1 allocs: 16 B 1 allocs: 16 B 1
polyform/simplify_fractions 11.4 k allocs: 0.595 MB 11.4 k allocs: 0.595 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

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.

A fraction with "negative" numerator and "negative" denominator should be simplified

1 participant