Details

Time bar (total: 4.7s)

analyze790.0ms (16.9%)

Algorithm
search
Search
ProbabilityValidUnknownPreconditionInfiniteDomainCan'tIter
0%0%99.9%0.1%0%0%0%0
0%0%99.9%0.1%0%0%0%1
0%0%99.9%0.1%0%0%0%2
0%0%99.9%0.1%0%0%0%3
0%0%99.9%0.1%0%0%0%4
0%0%99.9%0.1%0%0%0%5
0%0%99.9%0.1%0%0%0%6
12.5%12.5%87.4%0.1%0%0%0%7
14.8%12.5%71.8%0.1%15.6%0%0%8
22.6%18.7%64%0.1%17.2%0%0%9
32.7%25%51.5%0.1%23.4%0%0%10
41%31.2%44.9%0.1%23.8%0%0%11
49.5%37.1%37.8%0.1%25%0%0%12
Compiler

Compiled 13 to 9 computations (30.8% saved)

sample2.4s (51.9%)

Results
1.7s8256×body256valid
743.0ms1185×body256infinite
Bogosity

preprocess104.0ms (2.2%)

Algorithm
egg-herbie
Rules
1158×rational.json-simplify-51
1086×rational.json-simplify-19
972×rational.json-simplify-46
898×rational.json-simplify-54
874×rational.json-simplify-49
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
020100
131100
253100
3115100
4558100
53939100
66485100
033
133
Stop Event
unsound
node limit
Calls
Call 1
Inputs
0
1
2
Outputs
0
1
2
1
Call 2
Inputs
(-.f64 (*.f64 x x) (*.f64 (*.f64 y 4) z))
(-.f64 (*.f64 y y) (*.f64 (*.f64 x 4) z))
(-.f64 (*.f64 z z) (*.f64 (*.f64 y 4) x))
(-.f64 (*.f64 x x) (*.f64 (*.f64 z 4) y))
Outputs
(-.f64 (*.f64 x x) (*.f64 (*.f64 y 4) z))
(-.f64 (*.f64 x x) (*.f64 y (*.f64 4 z)))
(-.f64 (*.f64 x x) (*.f64 4 (*.f64 y z)))
(-.f64 (*.f64 y y) (*.f64 (*.f64 x 4) z))
(-.f64 (*.f64 y y) (*.f64 z (*.f64 x 4)))
(-.f64 (*.f64 y y) (*.f64 x (*.f64 4 z)))
(-.f64 (*.f64 y y) (*.f64 4 (*.f64 x z)))
(-.f64 (*.f64 z z) (*.f64 (*.f64 y 4) x))
(-.f64 (*.f64 z z) (*.f64 x (*.f64 y 4)))
(-.f64 (*.f64 z z) (*.f64 4 (*.f64 y x)))
(-.f64 (*.f64 z z) (*.f64 4 (*.f64 x y)))
(-.f64 (*.f64 x x) (*.f64 (*.f64 z 4) y))
(-.f64 (*.f64 x x) (*.f64 (*.f64 y 4) z))
(-.f64 (*.f64 x x) (*.f64 y (*.f64 4 z)))
(-.f64 (*.f64 x x) (*.f64 4 (*.f64 y z)))
Symmetry

(sort y z)

Compiler

Compiled 15 to 11 computations (26.7% saved)

simplify139.0ms (3%)

Algorithm
egg-herbie
Rules
1812×rational.json-simplify-35
1350×rational.json-simplify-53
996×rational.json-simplify-39
864×rational.json-simplify-59
638×rational.json-simplify-1
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01025
11425
22225
34425
419325
5198825
6595525
7784425
Stop Event
node limit
Counts
1 → 2
Calls
Call 1
Inputs
(-.f64 (*.f64 x x) (*.f64 (*.f64 y 4) z))
Outputs
(-.f64 (*.f64 x x) (*.f64 (*.f64 y 4) z))
(-.f64 (*.f64 x x) (*.f64 y (*.f64 4 z)))

eval0.0ms (0%)

Compiler

Compiled 21 to 12 computations (42.9% saved)

prune1.0ms (0%)

Pruning

2 alts after pruning (2 fresh and 0 done)

PrunedKeptTotal
New112
Fresh011
Picked000
Done000
Total123
Error
0.0b
Counts
3 → 1
Alt Table
Click to see full alt table
StatusErrorProgram
0.0b
(-.f64 (*.f64 x x) (*.f64 (*.f64 y 4) z))
Compiler

Compiled 12 to 8 computations (33.3% saved)

localize9.0ms (0.2%)

Local error

Found 1 expressions with local error:

NewErrorProgram
0.0b
(-.f64 (*.f64 x x) (*.f64 (*.f64 y 4) z))
Compiler

Compiled 27 to 14 computations (48.1% saved)

series3.0ms (0.1%)

Counts
1 → 36
Calls

9 calls:

TimeVariablePointExpression
1.0ms
y
@0
(-.f64 (*.f64 x x) (*.f64 (*.f64 y 4) z))
0.0ms
x
@0
(-.f64 (*.f64 x x) (*.f64 (*.f64 y 4) z))
0.0ms
y
@inf
(-.f64 (*.f64 x x) (*.f64 (*.f64 y 4) z))
0.0ms
x
@inf
(-.f64 (*.f64 x x) (*.f64 (*.f64 y 4) z))
0.0ms
z
@0
(-.f64 (*.f64 x x) (*.f64 (*.f64 y 4) z))

rewrite321.0ms (6.9%)

Algorithm
batch-egg-rewrite
Rules
2046×rational.json-simplify-35
1158×rational.json-1
1158×rational.json-2
1158×rational.json-4
1158×rational.json-3
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01025
16625
214825
336725
4125525
5405325
Stop Event
node limit
Counts
1 → 27
Calls
Call 1
Inputs
(-.f64 (*.f64 x x) (*.f64 (*.f64 y 4) z))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 x x) (neg.f64 (*.f64 y (*.f64 4 z))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (-.f64 (*.f64 x x) (*.f64 y (*.f64 4 z))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (-.f64 (*.f64 x x) (*.f64 y (*.f64 4 z))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (neg.f64 (*.f64 y (*.f64 4 z))) (*.f64 x x))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 -1 (+.f64 1 (-.f64 (*.f64 x x) (*.f64 y (*.f64 4 z)))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (+.f64 1 (-.f64 (*.f64 x x) (*.f64 y (*.f64 4 z)))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (/.f64 (-.f64 (*.f64 x x) (*.f64 y (*.f64 4 z))) 2) (/.f64 (-.f64 (*.f64 x x) (*.f64 y (*.f64 4 z))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (-.f64 -1 (*.f64 y (*.f64 4 z))) (-.f64 1 (*.f64 x (neg.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 (*.f64 x x) (*.f64 y (*.f64 4 z))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (-.f64 (*.f64 x x) (*.f64 y (*.f64 4 z))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (/.f64 (-.f64 (*.f64 x x) (*.f64 y (*.f64 4 z))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (-.f64 (*.f64 x x) (*.f64 y (*.f64 4 z))) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 (*.f64 y (*.f64 4 z)) (*.f64 x x)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 -1 (-.f64 (*.f64 y (*.f64 4 z)) (*.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 (-.f64 (*.f64 x x) (*.f64 y (*.f64 4 z))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (-.f64 (*.f64 x x) (*.f64 y (*.f64 4 z))) 2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 x x) (*.f64 y (*.f64 4 z))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 (*.f64 x x) (*.f64 y (*.f64 4 z))) 2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 y (*.f64 4 z)) (*.f64 x x)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 4 (-.f64 (*.f64 x x) (*.f64 y (*.f64 4 z)))) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (-.f64 (*.f64 y (*.f64 4 z)) (*.f64 x x))) -2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 4 (-.f64 (*.f64 x x) (*.f64 y (*.f64 4 z))))) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 4 (-.f64 (*.f64 x x) (*.f64 y (*.f64 4 z)))))) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (-.f64 (*.f64 y (*.f64 4 z)) (*.f64 x x)))) -4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 4 (-.f64 (*.f64 x x) (*.f64 y (*.f64 4 z)))))) (*.f64 2 (*.f64 2 (*.f64 4 (-.f64 (*.f64 x x) (*.f64 y (*.f64 4 z))))))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (-.f64 (*.f64 x x) (*.f64 y (*.f64 4 z))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (-.f64 (*.f64 y (*.f64 4 z)) (*.f64 x x)))))))

simplify267.0ms (5.7%)

Algorithm
egg-herbie
Rules
1172×rational.json-simplify-45
950×rational.json-simplify-51
810×rational.json-simplify-1
626×rational.json-simplify-59
616×rational.json-simplify-53
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0671551
11371443
22801443
36151443
418191443
541571443
657291443
Stop Event
node limit
Counts
63 → 33
Calls
Call 1
Inputs
(*.f64 -4 (*.f64 y z))
(+.f64 (pow.f64 x 2) (*.f64 -4 (*.f64 y z)))
(+.f64 (pow.f64 x 2) (*.f64 -4 (*.f64 y z)))
(+.f64 (pow.f64 x 2) (*.f64 -4 (*.f64 y z)))
(pow.f64 x 2)
(+.f64 (pow.f64 x 2) (*.f64 -4 (*.f64 y z)))
(+.f64 (pow.f64 x 2) (*.f64 -4 (*.f64 y z)))
(+.f64 (pow.f64 x 2) (*.f64 -4 (*.f64 y z)))
(pow.f64 x 2)
(+.f64 (pow.f64 x 2) (*.f64 -4 (*.f64 y z)))
(+.f64 (pow.f64 x 2) (*.f64 -4 (*.f64 y z)))
(+.f64 (pow.f64 x 2) (*.f64 -4 (*.f64 y z)))
(pow.f64 x 2)
(+.f64 (pow.f64 x 2) (*.f64 -4 (*.f64 y z)))
(+.f64 (pow.f64 x 2) (*.f64 -4 (*.f64 y z)))
(+.f64 (pow.f64 x 2) (*.f64 -4 (*.f64 y z)))
(*.f64 -4 (*.f64 y z))
(+.f64 (pow.f64 x 2) (*.f64 -4 (*.f64 y z)))
(+.f64 (pow.f64 x 2) (*.f64 -4 (*.f64 y z)))
(+.f64 (pow.f64 x 2) (*.f64 -4 (*.f64 y z)))
(*.f64 -4 (*.f64 y z))
(+.f64 (pow.f64 x 2) (*.f64 -4 (*.f64 y z)))
(+.f64 (pow.f64 x 2) (*.f64 -4 (*.f64 y z)))
(+.f64 (pow.f64 x 2) (*.f64 -4 (*.f64 y z)))
(pow.f64 x 2)
(+.f64 (pow.f64 x 2) (*.f64 -4 (*.f64 y z)))
(+.f64 (pow.f64 x 2) (*.f64 -4 (*.f64 y z)))
(+.f64 (pow.f64 x 2) (*.f64 -4 (*.f64 y z)))
(*.f64 -4 (*.f64 y z))
(+.f64 (pow.f64 x 2) (*.f64 -4 (*.f64 y z)))
(+.f64 (pow.f64 x 2) (*.f64 -4 (*.f64 y z)))
(+.f64 (pow.f64 x 2) (*.f64 -4 (*.f64 y z)))
(*.f64 -4 (*.f64 y z))
(+.f64 (pow.f64 x 2) (*.f64 -4 (*.f64 y z)))
(+.f64 (pow.f64 x 2) (*.f64 -4 (*.f64 y z)))
(+.f64 (pow.f64 x 2) (*.f64 -4 (*.f64 y z)))
(+.f64 (*.f64 x x) (neg.f64 (*.f64 y (*.f64 4 z))))
(+.f64 (-.f64 (*.f64 x x) (*.f64 y (*.f64 4 z))) 0)
(+.f64 0 (-.f64 (*.f64 x x) (*.f64 y (*.f64 4 z))))
(+.f64 (neg.f64 (*.f64 y (*.f64 4 z))) (*.f64 x x))
(+.f64 -1 (+.f64 1 (-.f64 (*.f64 x x) (*.f64 y (*.f64 4 z)))))
(+.f64 (+.f64 1 (-.f64 (*.f64 x x) (*.f64 y (*.f64 4 z)))) -1)
(+.f64 (/.f64 (-.f64 (*.f64 x x) (*.f64 y (*.f64 4 z))) 2) (/.f64 (-.f64 (*.f64 x x) (*.f64 y (*.f64 4 z))) 2))
(+.f64 (-.f64 -1 (*.f64 y (*.f64 4 z))) (-.f64 1 (*.f64 x (neg.f64 x))))
(*.f64 (-.f64 (*.f64 x x) (*.f64 y (*.f64 4 z))) 1)
(*.f64 1 (-.f64 (*.f64 x x) (*.f64 y (*.f64 4 z))))
(*.f64 2 (/.f64 (-.f64 (*.f64 x x) (*.f64 y (*.f64 4 z))) 2))
(*.f64 (*.f64 (-.f64 (*.f64 x x) (*.f64 y (*.f64 4 z))) 2) 1/2)
(*.f64 (-.f64 (*.f64 y (*.f64 4 z)) (*.f64 x x)) -1)
(*.f64 -1 (-.f64 (*.f64 y (*.f64 4 z)) (*.f64 x x)))
(*.f64 1/2 (*.f64 (-.f64 (*.f64 x x) (*.f64 y (*.f64 4 z))) 2))
(*.f64 (/.f64 (-.f64 (*.f64 x x) (*.f64 y (*.f64 4 z))) 2) 2)
(/.f64 (-.f64 (*.f64 x x) (*.f64 y (*.f64 4 z))) 1)
(/.f64 (*.f64 (-.f64 (*.f64 x x) (*.f64 y (*.f64 4 z))) 2) 2)
(/.f64 (-.f64 (*.f64 y (*.f64 4 z)) (*.f64 x x)) -1)
(/.f64 (*.f64 4 (-.f64 (*.f64 x x) (*.f64 y (*.f64 4 z)))) 4)
(/.f64 (*.f64 2 (-.f64 (*.f64 y (*.f64 4 z)) (*.f64 x x))) -2)
(/.f64 (*.f64 2 (*.f64 4 (-.f64 (*.f64 x x) (*.f64 y (*.f64 4 z))))) 8)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 4 (-.f64 (*.f64 x x) (*.f64 y (*.f64 4 z)))))) 16)
(/.f64 (*.f64 2 (*.f64 2 (-.f64 (*.f64 y (*.f64 4 z)) (*.f64 x x)))) -4)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 4 (-.f64 (*.f64 x x) (*.f64 y (*.f64 4 z)))))) (*.f64 2 (*.f64 2 (*.f64 4 (-.f64 (*.f64 x x) (*.f64 y (*.f64 4 z))))))) 32)
(pow.f64 (-.f64 (*.f64 x x) (*.f64 y (*.f64 4 z))) 1)
(neg.f64 (-.f64 (*.f64 y (*.f64 4 z)) (*.f64 x x)))
Outputs
(*.f64 -4 (*.f64 y z))
(+.f64 (pow.f64 x 2) (*.f64 -4 (*.f64 y z)))
(+.f64 (*.f64 -4 (*.f64 y z)) (pow.f64 x 2))
(+.f64 (pow.f64 x 2) (*.f64 -4 (*.f64 y z)))
(+.f64 (*.f64 -4 (*.f64 y z)) (pow.f64 x 2))
(+.f64 (pow.f64 x 2) (*.f64 -4 (*.f64 y z)))
(+.f64 (*.f64 -4 (*.f64 y z)) (pow.f64 x 2))
(pow.f64 x 2)
(+.f64 (pow.f64 x 2) (*.f64 -4 (*.f64 y z)))
(+.f64 (*.f64 -4 (*.f64 y z)) (pow.f64 x 2))
(+.f64 (pow.f64 x 2) (*.f64 -4 (*.f64 y z)))
(+.f64 (*.f64 -4 (*.f64 y z)) (pow.f64 x 2))
(+.f64 (pow.f64 x 2) (*.f64 -4 (*.f64 y z)))
(+.f64 (*.f64 -4 (*.f64 y z)) (pow.f64 x 2))
(pow.f64 x 2)
(+.f64 (pow.f64 x 2) (*.f64 -4 (*.f64 y z)))
(+.f64 (*.f64 -4 (*.f64 y z)) (pow.f64 x 2))
(+.f64 (pow.f64 x 2) (*.f64 -4 (*.f64 y z)))
(+.f64 (*.f64 -4 (*.f64 y z)) (pow.f64 x 2))
(+.f64 (pow.f64 x 2) (*.f64 -4 (*.f64 y z)))
(+.f64 (*.f64 -4 (*.f64 y z)) (pow.f64 x 2))
(pow.f64 x 2)
(+.f64 (pow.f64 x 2) (*.f64 -4 (*.f64 y z)))
(+.f64 (*.f64 -4 (*.f64 y z)) (pow.f64 x 2))
(+.f64 (pow.f64 x 2) (*.f64 -4 (*.f64 y z)))
(+.f64 (*.f64 -4 (*.f64 y z)) (pow.f64 x 2))
(+.f64 (pow.f64 x 2) (*.f64 -4 (*.f64 y z)))
(+.f64 (*.f64 -4 (*.f64 y z)) (pow.f64 x 2))
(*.f64 -4 (*.f64 y z))
(+.f64 (pow.f64 x 2) (*.f64 -4 (*.f64 y z)))
(+.f64 (*.f64 -4 (*.f64 y z)) (pow.f64 x 2))
(+.f64 (pow.f64 x 2) (*.f64 -4 (*.f64 y z)))
(+.f64 (*.f64 -4 (*.f64 y z)) (pow.f64 x 2))
(+.f64 (pow.f64 x 2) (*.f64 -4 (*.f64 y z)))
(+.f64 (*.f64 -4 (*.f64 y z)) (pow.f64 x 2))
(*.f64 -4 (*.f64 y z))
(+.f64 (pow.f64 x 2) (*.f64 -4 (*.f64 y z)))
(+.f64 (*.f64 -4 (*.f64 y z)) (pow.f64 x 2))
(+.f64 (pow.f64 x 2) (*.f64 -4 (*.f64 y z)))
(+.f64 (*.f64 -4 (*.f64 y z)) (pow.f64 x 2))
(+.f64 (pow.f64 x 2) (*.f64 -4 (*.f64 y z)))
(+.f64 (*.f64 -4 (*.f64 y z)) (pow.f64 x 2))
(pow.f64 x 2)
(+.f64 (pow.f64 x 2) (*.f64 -4 (*.f64 y z)))
(+.f64 (*.f64 -4 (*.f64 y z)) (pow.f64 x 2))
(+.f64 (pow.f64 x 2) (*.f64 -4 (*.f64 y z)))
(+.f64 (*.f64 -4 (*.f64 y z)) (pow.f64 x 2))
(+.f64 (pow.f64 x 2) (*.f64 -4 (*.f64 y z)))
(+.f64 (*.f64 -4 (*.f64 y z)) (pow.f64 x 2))
(*.f64 -4 (*.f64 y z))
(+.f64 (pow.f64 x 2) (*.f64 -4 (*.f64 y z)))
(+.f64 (*.f64 -4 (*.f64 y z)) (pow.f64 x 2))
(+.f64 (pow.f64 x 2) (*.f64 -4 (*.f64 y z)))
(+.f64 (*.f64 -4 (*.f64 y z)) (pow.f64 x 2))
(+.f64 (pow.f64 x 2) (*.f64 -4 (*.f64 y z)))
(+.f64 (*.f64 -4 (*.f64 y z)) (pow.f64 x 2))
(*.f64 -4 (*.f64 y z))
(+.f64 (pow.f64 x 2) (*.f64 -4 (*.f64 y z)))
(+.f64 (*.f64 -4 (*.f64 y z)) (pow.f64 x 2))
(+.f64 (pow.f64 x 2) (*.f64 -4 (*.f64 y z)))
(+.f64 (*.f64 -4 (*.f64 y z)) (pow.f64 x 2))
(+.f64 (pow.f64 x 2) (*.f64 -4 (*.f64 y z)))
(+.f64 (*.f64 -4 (*.f64 y z)) (pow.f64 x 2))
(+.f64 (*.f64 x x) (neg.f64 (*.f64 y (*.f64 4 z))))
(+.f64 (*.f64 x x) (neg.f64 (*.f64 y (*.f64 z 4))))
(+.f64 (*.f64 x x) (*.f64 -4 (*.f64 y z)))
(+.f64 (-.f64 (*.f64 x x) (*.f64 y (*.f64 4 z))) 0)
(+.f64 (*.f64 x x) (neg.f64 (*.f64 y (*.f64 z 4))))
(+.f64 (*.f64 x x) (*.f64 -4 (*.f64 y z)))
(+.f64 0 (-.f64 (*.f64 x x) (*.f64 y (*.f64 4 z))))
(+.f64 (*.f64 x x) (neg.f64 (*.f64 y (*.f64 z 4))))
(+.f64 (*.f64 x x) (*.f64 -4 (*.f64 y z)))
(+.f64 (neg.f64 (*.f64 y (*.f64 4 z))) (*.f64 x x))
(+.f64 (*.f64 x x) (neg.f64 (*.f64 y (*.f64 z 4))))
(+.f64 (*.f64 x x) (*.f64 -4 (*.f64 y z)))
(+.f64 -1 (+.f64 1 (-.f64 (*.f64 x x) (*.f64 y (*.f64 4 z)))))
(+.f64 (*.f64 x x) (neg.f64 (*.f64 y (*.f64 z 4))))
(+.f64 (*.f64 x x) (*.f64 -4 (*.f64 y z)))
(+.f64 (+.f64 1 (-.f64 (*.f64 x x) (*.f64 y (*.f64 4 z)))) -1)
(+.f64 (*.f64 x x) (neg.f64 (*.f64 y (*.f64 z 4))))
(+.f64 (*.f64 x x) (*.f64 -4 (*.f64 y z)))
(+.f64 (/.f64 (-.f64 (*.f64 x x) (*.f64 y (*.f64 4 z))) 2) (/.f64 (-.f64 (*.f64 x x) (*.f64 y (*.f64 4 z))) 2))
(+.f64 (*.f64 x x) (neg.f64 (*.f64 y (*.f64 z 4))))
(+.f64 (*.f64 x x) (*.f64 -4 (*.f64 y z)))
(+.f64 (-.f64 -1 (*.f64 y (*.f64 4 z))) (-.f64 1 (*.f64 x (neg.f64 x))))
(+.f64 (*.f64 x x) (neg.f64 (*.f64 y (*.f64 z 4))))
(+.f64 (*.f64 x x) (*.f64 -4 (*.f64 y z)))
(*.f64 (-.f64 (*.f64 x x) (*.f64 y (*.f64 4 z))) 1)
(+.f64 (*.f64 x x) (neg.f64 (*.f64 y (*.f64 z 4))))
(+.f64 (*.f64 x x) (*.f64 -4 (*.f64 y z)))
(*.f64 1 (-.f64 (*.f64 x x) (*.f64 y (*.f64 4 z))))
(+.f64 (*.f64 x x) (neg.f64 (*.f64 y (*.f64 z 4))))
(+.f64 (*.f64 x x) (*.f64 -4 (*.f64 y z)))
(*.f64 2 (/.f64 (-.f64 (*.f64 x x) (*.f64 y (*.f64 4 z))) 2))
(+.f64 (*.f64 x x) (neg.f64 (*.f64 y (*.f64 z 4))))
(+.f64 (*.f64 x x) (*.f64 -4 (*.f64 y z)))
(*.f64 (*.f64 (-.f64 (*.f64 x x) (*.f64 y (*.f64 4 z))) 2) 1/2)
(+.f64 (*.f64 x x) (neg.f64 (*.f64 y (*.f64 z 4))))
(+.f64 (*.f64 x x) (*.f64 -4 (*.f64 y z)))
(*.f64 (-.f64 (*.f64 y (*.f64 4 z)) (*.f64 x x)) -1)
(+.f64 (*.f64 x x) (neg.f64 (*.f64 y (*.f64 z 4))))
(+.f64 (*.f64 x x) (*.f64 -4 (*.f64 y z)))
(*.f64 -1 (-.f64 (*.f64 y (*.f64 4 z)) (*.f64 x x)))
(+.f64 (*.f64 x x) (neg.f64 (*.f64 y (*.f64 z 4))))
(+.f64 (*.f64 x x) (*.f64 -4 (*.f64 y z)))
(*.f64 1/2 (*.f64 (-.f64 (*.f64 x x) (*.f64 y (*.f64 4 z))) 2))
(+.f64 (*.f64 x x) (neg.f64 (*.f64 y (*.f64 z 4))))
(+.f64 (*.f64 x x) (*.f64 -4 (*.f64 y z)))
(*.f64 (/.f64 (-.f64 (*.f64 x x) (*.f64 y (*.f64 4 z))) 2) 2)
(+.f64 (*.f64 x x) (neg.f64 (*.f64 y (*.f64 z 4))))
(+.f64 (*.f64 x x) (*.f64 -4 (*.f64 y z)))
(/.f64 (-.f64 (*.f64 x x) (*.f64 y (*.f64 4 z))) 1)
(+.f64 (*.f64 x x) (neg.f64 (*.f64 y (*.f64 z 4))))
(+.f64 (*.f64 x x) (*.f64 -4 (*.f64 y z)))
(/.f64 (*.f64 (-.f64 (*.f64 x x) (*.f64 y (*.f64 4 z))) 2) 2)
(+.f64 (*.f64 x x) (neg.f64 (*.f64 y (*.f64 z 4))))
(+.f64 (*.f64 x x) (*.f64 -4 (*.f64 y z)))
(/.f64 (-.f64 (*.f64 y (*.f64 4 z)) (*.f64 x x)) -1)
(+.f64 (*.f64 x x) (neg.f64 (*.f64 y (*.f64 z 4))))
(+.f64 (*.f64 x x) (*.f64 -4 (*.f64 y z)))
(/.f64 (*.f64 4 (-.f64 (*.f64 x x) (*.f64 y (*.f64 4 z)))) 4)
(+.f64 (*.f64 x x) (neg.f64 (*.f64 y (*.f64 z 4))))
(+.f64 (*.f64 x x) (*.f64 -4 (*.f64 y z)))
(/.f64 (*.f64 2 (-.f64 (*.f64 y (*.f64 4 z)) (*.f64 x x))) -2)
(+.f64 (*.f64 x x) (neg.f64 (*.f64 y (*.f64 z 4))))
(+.f64 (*.f64 x x) (*.f64 -4 (*.f64 y z)))
(/.f64 (*.f64 2 (*.f64 4 (-.f64 (*.f64 x x) (*.f64 y (*.f64 4 z))))) 8)
(+.f64 (*.f64 x x) (neg.f64 (*.f64 y (*.f64 z 4))))
(+.f64 (*.f64 x x) (*.f64 -4 (*.f64 y z)))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 4 (-.f64 (*.f64 x x) (*.f64 y (*.f64 4 z)))))) 16)
(+.f64 (*.f64 x x) (neg.f64 (*.f64 y (*.f64 z 4))))
(+.f64 (*.f64 x x) (*.f64 -4 (*.f64 y z)))
(/.f64 (*.f64 2 (*.f64 2 (-.f64 (*.f64 y (*.f64 4 z)) (*.f64 x x)))) -4)
(+.f64 (*.f64 x x) (neg.f64 (*.f64 y (*.f64 z 4))))
(+.f64 (*.f64 x x) (*.f64 -4 (*.f64 y z)))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 4 (-.f64 (*.f64 x x) (*.f64 y (*.f64 4 z)))))) (*.f64 2 (*.f64 2 (*.f64 4 (-.f64 (*.f64 x x) (*.f64 y (*.f64 4 z))))))) 32)
(+.f64 (*.f64 x x) (neg.f64 (*.f64 y (*.f64 z 4))))
(+.f64 (*.f64 x x) (*.f64 -4 (*.f64 y z)))
(pow.f64 (-.f64 (*.f64 x x) (*.f64 y (*.f64 4 z))) 1)
(+.f64 (*.f64 x x) (neg.f64 (*.f64 y (*.f64 z 4))))
(+.f64 (*.f64 x x) (*.f64 -4 (*.f64 y z)))
(neg.f64 (-.f64 (*.f64 y (*.f64 4 z)) (*.f64 x x)))
(+.f64 (*.f64 x x) (neg.f64 (*.f64 y (*.f64 z 4))))
(+.f64 (*.f64 x x) (*.f64 -4 (*.f64 y z)))

eval8.0ms (0.2%)

Compiler

Compiled 411 to 246 computations (40.1% saved)

prune5.0ms (0.1%)

Pruning

2 alts after pruning (1 fresh and 1 done)

PrunedKeptTotal
New32133
Fresh000
Picked011
Done000
Total32234
Error
0.0b
Counts
34 → 2
Alt Table
Click to see full alt table
StatusErrorProgram
0.0b
(-.f64 (*.f64 x x) (*.f64 (*.f64 y 4) z))
21.6b
(*.f64 -4 (*.f64 y z))
Compiler

Compiled 20 to 14 computations (30% saved)

localize5.0ms (0.1%)

Local error

Found 1 expressions with local error:

NewErrorProgram
0.0b
(*.f64 -4 (*.f64 y z))
Compiler

Compiled 14 to 7 computations (50% saved)

series2.0ms (0%)

Counts
1 → 0
Calls

6 calls:

TimeVariablePointExpression
1.0ms
y
@-inf
(*.f64 -4 (*.f64 y z))
0.0ms
y
@0
(*.f64 -4 (*.f64 y z))
0.0ms
z
@0
(*.f64 -4 (*.f64 y z))
0.0ms
y
@inf
(*.f64 -4 (*.f64 y z))
0.0ms
z
@inf
(*.f64 -4 (*.f64 y z))

rewrite337.0ms (7.2%)

Algorithm
batch-egg-rewrite
Rules
2344×rational.json-simplify-35
1436×rational.json-1
1436×rational.json-2
1436×rational.json-3
1244×rational.json-simplify-1
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0713
14813
211413
323913
443313
598313
6218013
7373513
8463813
9558913
10640613
11643313
12647713
13656113
14659713
15760013
Stop Event
node limit
Counts
1 → 27
Calls
Call 1
Inputs
(*.f64 -4 (*.f64 y z))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 -4 (*.f64 y z)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 -4 (*.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 -2 (-.f64 1 (+.f64 (*.f64 (*.f64 y z) 4) -1)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 y (*.f64 z -2)) (*.f64 y (*.f64 z -2)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 -1 (-.f64 1 (*.f64 (*.f64 y z) 4)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (-.f64 1 (*.f64 (*.f64 y z) 4)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (-.f64 1 (+.f64 (*.f64 (*.f64 y z) 4) -1)) -2)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 -4 (*.f64 y z)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 0 (*.f64 (*.f64 y z) 4))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 1 (+.f64 1 (*.f64 (*.f64 y z) 4)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 -1 (+.f64 (*.f64 (*.f64 y z) 4) -1))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (-.f64 1 (*.f64 (*.f64 y z) 4)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 -4 (*.f64 y z)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 y (*.f64 z -8)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 y z) 4) -1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 y (*.f64 z -16)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 y z) 8) -2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 y (*.f64 z -8)) 4) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (*.f64 y z) 8)) -4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (*.f64 y (*.f64 z -8)) 4)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 y (*.f64 z -8)) 4))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (*.f64 y (*.f64 z -8)) 4)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (*.f64 y (*.f64 z -8)) 4))))) 128)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (*.f64 y (*.f64 z -8)) 4)))))) 256)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (*.f64 y (*.f64 z -8)) 4)))))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (*.f64 y (*.f64 z -8)) 4))))))) 512)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 -4 (*.f64 y z)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (*.f64 (*.f64 y z) 4))))))

simplify167.0ms (3.6%)

Algorithm
egg-herbie
Rules
2448×rational.json-simplify-2
1416×rational.json-simplify-35
1308×rational.json-simplify-1
1018×exponential.json-simplify-26
942×rational.json-simplify-43
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
070411
1175411
2349411
3905411
43037411
54675411
65838411
76088411
86267411
96522411
Stop Event
node limit
Counts
27 → 30
Calls
Call 1
Inputs
(+.f64 (*.f64 -4 (*.f64 y z)) 0)
(+.f64 0 (*.f64 -4 (*.f64 y z)))
(+.f64 -2 (-.f64 1 (+.f64 (*.f64 (*.f64 y z) 4) -1)))
(+.f64 (*.f64 y (*.f64 z -2)) (*.f64 y (*.f64 z -2)))
(+.f64 -1 (-.f64 1 (*.f64 (*.f64 y z) 4)))
(+.f64 (-.f64 1 (*.f64 (*.f64 y z) 4)) -1)
(+.f64 (-.f64 1 (+.f64 (*.f64 (*.f64 y z) 4) -1)) -2)
(-.f64 (*.f64 -4 (*.f64 y z)) 0)
(-.f64 0 (*.f64 (*.f64 y z) 4))
(-.f64 1 (+.f64 1 (*.f64 (*.f64 y z) 4)))
(-.f64 -1 (+.f64 (*.f64 (*.f64 y z) 4) -1))
(-.f64 (-.f64 1 (*.f64 (*.f64 y z) 4)) 1)
(/.f64 (*.f64 -4 (*.f64 y z)) 1)
(/.f64 (*.f64 y (*.f64 z -8)) 2)
(/.f64 (*.f64 (*.f64 y z) 4) -1)
(/.f64 (*.f64 y (*.f64 z -16)) 4)
(/.f64 (*.f64 (*.f64 y z) 8) -2)
(/.f64 (*.f64 (*.f64 y (*.f64 z -8)) 4) 8)
(/.f64 (*.f64 2 (*.f64 (*.f64 y z) 8)) -4)
(/.f64 (*.f64 2 (*.f64 (*.f64 y (*.f64 z -8)) 4)) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 y (*.f64 z -8)) 4))) 32)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (*.f64 y (*.f64 z -8)) 4)))) 64)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (*.f64 y (*.f64 z -8)) 4))))) 128)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (*.f64 y (*.f64 z -8)) 4)))))) 256)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (*.f64 y (*.f64 z -8)) 4)))))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (*.f64 y (*.f64 z -8)) 4))))))) 512)
(pow.f64 (*.f64 -4 (*.f64 y z)) 1)
(neg.f64 (*.f64 (*.f64 y z) 4))
Outputs
(+.f64 (*.f64 -4 (*.f64 y z)) 0)
(*.f64 -4 (*.f64 y z))
(+.f64 0 (*.f64 -4 (*.f64 y z)))
(*.f64 -4 (*.f64 y z))
(+.f64 -2 (-.f64 1 (+.f64 (*.f64 (*.f64 y z) 4) -1)))
(+.f64 -2 (-.f64 1 (+.f64 (*.f64 y (*.f64 z 4)) -1)))
(+.f64 (*.f64 y (*.f64 z -2)) (*.f64 y (*.f64 z -2)))
(*.f64 -4 (*.f64 y z))
(+.f64 -1 (-.f64 1 (*.f64 (*.f64 y z) 4)))
(*.f64 -4 (*.f64 y z))
(+.f64 (-.f64 1 (*.f64 (*.f64 y z) 4)) -1)
(*.f64 -4 (*.f64 y z))
(+.f64 (-.f64 1 (+.f64 (*.f64 (*.f64 y z) 4) -1)) -2)
(+.f64 -2 (-.f64 1 (+.f64 (*.f64 (*.f64 y z) 4) -1)))
(+.f64 -2 (-.f64 1 (+.f64 (*.f64 y (*.f64 z 4)) -1)))
(-.f64 (*.f64 -4 (*.f64 y z)) 0)
(*.f64 -4 (*.f64 y z))
(-.f64 0 (*.f64 (*.f64 y z) 4))
(*.f64 -4 (*.f64 y z))
(-.f64 1 (+.f64 1 (*.f64 (*.f64 y z) 4)))
(-.f64 1 (+.f64 1 (*.f64 y (*.f64 z 4))))
(-.f64 -1 (+.f64 (*.f64 (*.f64 y z) 4) -1))
(-.f64 1 (+.f64 1 (*.f64 (*.f64 y z) 4)))
(-.f64 1 (+.f64 1 (*.f64 y (*.f64 z 4))))
(-.f64 (-.f64 1 (*.f64 (*.f64 y z) 4)) 1)
(*.f64 -4 (*.f64 y z))
(/.f64 (*.f64 -4 (*.f64 y z)) 1)
(*.f64 -4 (*.f64 y z))
(/.f64 (*.f64 y (*.f64 z -8)) 2)
(*.f64 -4 (*.f64 y z))
(/.f64 (*.f64 (*.f64 y z) 4) -1)
(*.f64 -4 (*.f64 y z))
(/.f64 (*.f64 y (*.f64 z -16)) 4)
(*.f64 -4 (*.f64 y z))
(/.f64 (*.f64 (*.f64 y z) 8) -2)
(*.f64 -4 (*.f64 y z))
(/.f64 (*.f64 (*.f64 y (*.f64 z -8)) 4) 8)
(*.f64 -4 (*.f64 y z))
(/.f64 (*.f64 2 (*.f64 (*.f64 y z) 8)) -4)
(*.f64 -4 (*.f64 y z))
(/.f64 (*.f64 2 (*.f64 (*.f64 y (*.f64 z -8)) 4)) 16)
(*.f64 -4 (*.f64 y z))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 y (*.f64 z -8)) 4))) 32)
(*.f64 -4 (*.f64 y z))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (*.f64 y (*.f64 z -8)) 4)))) 64)
(*.f64 -4 (*.f64 y z))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (*.f64 y (*.f64 z -8)) 4))))) 128)
(*.f64 -4 (*.f64 y z))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (*.f64 y (*.f64 z -8)) 4)))))) 256)
(*.f64 -4 (*.f64 y z))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (*.f64 y (*.f64 z -8)) 4)))))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (*.f64 y (*.f64 z -8)) 4))))))) 512)
(*.f64 -4 (*.f64 y z))
(pow.f64 (*.f64 -4 (*.f64 y z)) 1)
(*.f64 -4 (*.f64 y z))
(neg.f64 (*.f64 (*.f64 y z) 4))
(*.f64 -4 (*.f64 y z))

eval7.0ms (0.1%)

Compiler

Compiled 312 to 231 computations (26% saved)

prune5.0ms (0.1%)

Pruning

3 alts after pruning (1 fresh and 2 done)

PrunedKeptTotal
New29130
Fresh000
Picked011
Done011
Total29332
Error
0.0b
Counts
32 → 3
Alt Table
Click to see full alt table
StatusErrorProgram
21.5b
(/.f64 (*.f64 y (*.f64 z -8)) 2)
0.0b
(-.f64 (*.f64 x x) (*.f64 (*.f64 y 4) z))
21.6b
(*.f64 -4 (*.f64 y z))
Compiler

Compiled 30 to 22 computations (26.7% saved)

localize8.0ms (0.2%)

Compiler

Compiled 22 to 15 computations (31.8% saved)

eval0.0ms (0%)

Compiler

Compiled 3 to 3 computations (0% saved)

prune1.0ms (0%)

Pruning

3 alts after pruning (0 fresh and 3 done)

PrunedKeptTotal
New000
Fresh000
Picked011
Done022
Total033
Error
0.0b
Counts
3 → 3
Alt Table
Click to see full alt table
StatusErrorProgram
21.5b
(/.f64 (*.f64 y (*.f64 z -8)) 2)
0.0b
(-.f64 (*.f64 x x) (*.f64 (*.f64 y 4) z))
21.6b
(*.f64 -4 (*.f64 y z))
Compiler

Compiled 30 to 22 computations (26.7% saved)

regimes28.0ms (0.6%)

Counts
3 → 1
Calls
Call 1
Inputs
(*.f64 -4 (*.f64 y z))
(/.f64 (*.f64 y (*.f64 z -8)) 2)
(-.f64 (*.f64 x x) (*.f64 (*.f64 y 4) z))
Outputs
(-.f64 (*.f64 x x) (*.f64 (*.f64 y 4) z))
Calls

7 calls:

5.0ms
(-.f64 (*.f64 x x) (*.f64 (*.f64 y 4) z))
5.0ms
(*.f64 y 4)
4.0ms
x
3.0ms
y
3.0ms
z
Results
ErrorSegmentsBranch
0.0b1x
0.0b1y
0.0b1z
0.0b1(-.f64 (*.f64 x x) (*.f64 (*.f64 y 4) z))
0.0b1(*.f64 x x)
0.0b1(*.f64 (*.f64 y 4) z)
0.0b1(*.f64 y 4)
Compiler

Compiled 68 to 48 computations (29.4% saved)

regimes10.0ms (0.2%)

Accuracy

Total -0.0b remaining (-0%)

Threshold costs -0.0b (-0%)

Counts
2 → 1
Calls
Call 1
Inputs
(*.f64 -4 (*.f64 y z))
(/.f64 (*.f64 y (*.f64 z -8)) 2)
Outputs
(/.f64 (*.f64 y (*.f64 z -8)) 2)
Calls

3 calls:

3.0ms
z
3.0ms
x
3.0ms
y
Results
ErrorSegmentsBranch
21.5b1x
21.5b1y
21.5b1z
Compiler

Compiled 27 to 20 computations (25.9% saved)

simplify4.0ms (0.1%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01857
Stop Event
done
saturated
Calls
Call 1
Inputs
(-.f64 (*.f64 x x) (*.f64 (*.f64 y 4) z))
(/.f64 (*.f64 y (*.f64 z -8)) 2)
(*.f64 -4 (*.f64 y z))
Outputs
(-.f64 (*.f64 x x) (*.f64 (*.f64 y 4) z))
(/.f64 (*.f64 y (*.f64 z -8)) 2)
(*.f64 -4 (*.f64 y z))
Compiler

Compiled 30 to 22 computations (26.7% saved)

soundness0.0ms (0%)

end22.0ms (0.5%)

Remove

(sort y z)

Compiler

Compiled 48 to 32 computations (33.3% saved)

Profiling

Loading profile data...