Details

Time bar (total: 8.6s)

analyze1.6s (18.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
18.8%18.7%81.1%0.1%0%0%0%8
25.8%25%71.8%0.1%3.1%0%0%9
36.4%34.3%60.1%0.1%5.5%0%0%10
43%40.6%53.8%0.1%5.5%0%0%11
51.5%46.8%44.1%0.1%9%0%0%12
Compiler

Compiled 13 to 9 computations (30.8% saved)

sample1.2s (13.8%)

Results
1.0s8256×body256valid
139.0ms1282×body256infinite
Bogosity

preprocess14.0ms (0.2%)

Algorithm
egg-herbie
Rules
14×rational.json-simplify-2
rational.json-simplify-1
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
021100
133100
033
Stop Event
saturated
saturated
Calls
Call 1
Inputs
0
1
2
Outputs
0
1
2
Call 2
Inputs
(+.f64 (*.f64 x y) (*.f64 z (-.f64 1 y)))
(+.f64 (*.f64 y x) (*.f64 z (-.f64 1 x)))
(+.f64 (*.f64 z y) (*.f64 x (-.f64 1 y)))
(+.f64 (*.f64 x z) (*.f64 y (-.f64 1 z)))
Outputs
(+.f64 (*.f64 x y) (*.f64 z (-.f64 1 y)))
(+.f64 (*.f64 z (-.f64 1 y)) (*.f64 x y))
(+.f64 (*.f64 y x) (*.f64 z (-.f64 1 x)))
(+.f64 (*.f64 x y) (*.f64 z (-.f64 1 x)))
(+.f64 (*.f64 z y) (*.f64 x (-.f64 1 y)))
(+.f64 (*.f64 y z) (*.f64 x (-.f64 1 y)))
(+.f64 (*.f64 x z) (*.f64 y (-.f64 1 z)))
Compiler

Compiled 15 to 11 computations (26.7% saved)

simplify8.0ms (0.1%)

Algorithm
egg-herbie
Rules
rational.json-simplify-2
rational.json-simplify-1
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01025
11325
Stop Event
saturated
Counts
1 → 1
Calls
Call 1
Inputs
(+.f64 (*.f64 x y) (*.f64 z (-.f64 1 y)))
Outputs
(+.f64 (*.f64 x y) (*.f64 z (-.f64 1 y)))

eval0.0ms (0%)

Compiler

Compiled 12 to 8 computations (33.3% saved)

prune1.0ms (0%)

Pruning

2 alts after pruning (2 fresh and 0 done)

PrunedKeptTotal
New011
Fresh011
Picked000
Done000
Total022
Error
0.0b
Counts
2 → 1
Alt Table
Click to see full alt table
StatusErrorProgram
0.0b
(+.f64 (*.f64 x y) (*.f64 z (-.f64 1 y)))
Compiler

Compiled 12 to 8 computations (33.3% saved)

localize11.0ms (0.1%)

Local error

Found 2 expressions with local error:

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

Compiled 27 to 14 computations (48.1% saved)

series4.0ms (0%)

Counts
2 → 48
Calls

15 calls:

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

rewrite240.0ms (2.8%)

Algorithm
batch-egg-rewrite
Rules
1904×rational.json-simplify-1
1382×exponential.json-3
1382×rational.json-1
1382×rational.json-2
1382×rational.json-4
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01038
17538
216038
330638
457338
5128638
6293438
7508638
8632138
9742538
10750538
11759738
12768638
Stop Event
node limit
Counts
2 → 33
Calls
Call 1
Inputs
(+.f64 (*.f64 x y) (*.f64 z (-.f64 1 y)))
(*.f64 z (-.f64 1 y))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 (*.f64 x y) (*.f64 z (-.f64 1 y))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (+.f64 (*.f64 x y) (*.f64 z (-.f64 1 y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (*.f64 x y) (*.f64 z (-.f64 1 y))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 (+.f64 (*.f64 x y) (*.f64 z (-.f64 1 y))) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 (*.f64 x y) (*.f64 z (-.f64 1 y))) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (/.f64 (+.f64 (*.f64 x y) (*.f64 z (-.f64 1 y))) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 (*.f64 x y) (*.f64 z (-.f64 1 y))) 4) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 (+.f64 (*.f64 x y) (*.f64 z (-.f64 1 y))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 (*.f64 x y) (*.f64 z (-.f64 1 y))) 1/2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 (+.f64 (*.f64 x y) (*.f64 z (-.f64 1 y))) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (+.f64 (*.f64 x y) (*.f64 z (-.f64 1 y))) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 x y) (*.f64 z (-.f64 1 y))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 (*.f64 x y) (*.f64 z (-.f64 1 y))) 2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 (*.f64 x y) (*.f64 z (-.f64 1 y))) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 (*.f64 x y) (*.f64 z (-.f64 1 y))) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (+.f64 (*.f64 x y) (*.f64 z (-.f64 1 y))) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 x y) (*.f64 z (-.f64 1 y))) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 x y) (*.f64 z (-.f64 1 y))) 8)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 x y) (*.f64 z (-.f64 1 y))) 8))))) 128)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (+.f64 (*.f64 x y) (*.f64 z (-.f64 1 y))) 1)))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 z (-.f64 1 y)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 z (-.f64 1 y)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (-.f64 1 y) (*.f64 z 1/2)) (*.f64 (-.f64 1 y) (*.f64 z 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 z (-.f64 1 y)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 z (-.f64 1 y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 1 y) (+.f64 z z)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 z (*.f64 (-.f64 1 y) 4)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 z (-.f64 1 y)) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (*.f64 z (-.f64 1 y)) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 z (-.f64 1 y)) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (*.f64 z (-.f64 1 y)) 8)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (*.f64 z (-.f64 1 y)) 8))))) 128)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 z (-.f64 1 y)) 1)))))

simplify656.0ms (7.6%)

Algorithm
egg-herbie
Rules
3216×rational.json-simplify-35
2674×rational.json-simplify-41
1772×rational.json-simplify-2
678×rational.json-simplify-51
526×exponential.json-simplify-26
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0881665
12091613
25071613
313931613
427491613
535141613
638421613
740971613
842711613
944161613
1066111613
1169541613
1270431613
1371141613
1471581613
1571951613
1672121613
1773431613
1874701613
1976161613
2077431613
2178701613
2279971613
Stop Event
node limit
Counts
81 → 60
Calls
Call 1
Inputs
(*.f64 z (-.f64 1 y))
(+.f64 (*.f64 y x) (*.f64 z (-.f64 1 y)))
(+.f64 (*.f64 y x) (*.f64 z (-.f64 1 y)))
(+.f64 (*.f64 y x) (*.f64 z (-.f64 1 y)))
(*.f64 y x)
(+.f64 (*.f64 y x) (*.f64 z (-.f64 1 y)))
(+.f64 (*.f64 y x) (*.f64 z (-.f64 1 y)))
(+.f64 (*.f64 y x) (*.f64 z (-.f64 1 y)))
(*.f64 y x)
(+.f64 (*.f64 y x) (*.f64 z (-.f64 1 y)))
(+.f64 (*.f64 y x) (*.f64 z (-.f64 1 y)))
(+.f64 (*.f64 y x) (*.f64 z (-.f64 1 y)))
z
(+.f64 z (*.f64 y (+.f64 (*.f64 -1 z) x)))
(+.f64 z (*.f64 y (+.f64 (*.f64 -1 z) x)))
(+.f64 z (*.f64 y (+.f64 (*.f64 -1 z) x)))
(*.f64 y (+.f64 (*.f64 -1 z) x))
(+.f64 z (*.f64 y (+.f64 (*.f64 -1 z) x)))
(+.f64 z (*.f64 y (+.f64 (*.f64 -1 z) x)))
(+.f64 z (*.f64 y (+.f64 (*.f64 -1 z) x)))
(*.f64 -1 (*.f64 y (+.f64 (*.f64 -1 x) z)))
(+.f64 (*.f64 -1 (*.f64 y (+.f64 (*.f64 -1 x) z))) z)
(+.f64 (*.f64 -1 (*.f64 y (+.f64 (*.f64 -1 x) z))) z)
(+.f64 (*.f64 -1 (*.f64 y (+.f64 (*.f64 -1 x) z))) z)
(*.f64 y x)
(+.f64 (*.f64 y x) (*.f64 z (-.f64 1 y)))
(+.f64 (*.f64 y x) (*.f64 z (-.f64 1 y)))
(+.f64 (*.f64 y x) (*.f64 z (-.f64 1 y)))
(*.f64 z (-.f64 1 y))
(+.f64 (*.f64 y x) (*.f64 z (-.f64 1 y)))
(+.f64 (*.f64 y x) (*.f64 z (-.f64 1 y)))
(+.f64 (*.f64 y x) (*.f64 z (-.f64 1 y)))
(*.f64 z (-.f64 1 y))
(+.f64 (*.f64 y x) (*.f64 z (-.f64 1 y)))
(+.f64 (*.f64 y x) (*.f64 z (-.f64 1 y)))
(+.f64 (*.f64 y x) (*.f64 z (-.f64 1 y)))
z
(+.f64 (*.f64 -1 (*.f64 y z)) z)
(+.f64 (*.f64 -1 (*.f64 y z)) z)
(+.f64 (*.f64 -1 (*.f64 y z)) z)
(*.f64 -1 (*.f64 y z))
(+.f64 (*.f64 -1 (*.f64 y z)) z)
(+.f64 (*.f64 -1 (*.f64 y z)) z)
(+.f64 (*.f64 -1 (*.f64 y z)) z)
(*.f64 -1 (*.f64 y z))
(+.f64 (*.f64 -1 (*.f64 y z)) z)
(+.f64 (*.f64 -1 (*.f64 y z)) z)
(+.f64 (*.f64 -1 (*.f64 y z)) z)
(-.f64 (+.f64 (*.f64 x y) (*.f64 z (-.f64 1 y))) 0)
(*.f64 1 (+.f64 (*.f64 x y) (*.f64 z (-.f64 1 y))))
(*.f64 (+.f64 (*.f64 x y) (*.f64 z (-.f64 1 y))) 1)
(*.f64 2 (*.f64 (+.f64 (*.f64 x y) (*.f64 z (-.f64 1 y))) 1/2))
(*.f64 (*.f64 (+.f64 (*.f64 x y) (*.f64 z (-.f64 1 y))) 2) 1/2)
(*.f64 4 (/.f64 (+.f64 (*.f64 x y) (*.f64 z (-.f64 1 y))) 4))
(*.f64 (*.f64 (+.f64 (*.f64 x y) (*.f64 z (-.f64 1 y))) 4) 1/4)
(*.f64 1/2 (*.f64 (+.f64 (*.f64 x y) (*.f64 z (-.f64 1 y))) 2))
(*.f64 (*.f64 (+.f64 (*.f64 x y) (*.f64 z (-.f64 1 y))) 1/2) 2)
(*.f64 1/4 (*.f64 (+.f64 (*.f64 x y) (*.f64 z (-.f64 1 y))) 4))
(*.f64 (/.f64 (+.f64 (*.f64 x y) (*.f64 z (-.f64 1 y))) 4) 4)
(/.f64 (+.f64 (*.f64 x y) (*.f64 z (-.f64 1 y))) 1)
(/.f64 (*.f64 (+.f64 (*.f64 x y) (*.f64 z (-.f64 1 y))) 2) 2)
(/.f64 (*.f64 (+.f64 (*.f64 x y) (*.f64 z (-.f64 1 y))) 4) 4)
(/.f64 (*.f64 (+.f64 (*.f64 x y) (*.f64 z (-.f64 1 y))) 8) 8)
(/.f64 (*.f64 2 (*.f64 (+.f64 (*.f64 x y) (*.f64 z (-.f64 1 y))) 8)) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 x y) (*.f64 z (-.f64 1 y))) 8))) 32)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 x y) (*.f64 z (-.f64 1 y))) 8)))) 64)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 x y) (*.f64 z (-.f64 1 y))) 8))))) 128)
(pow.f64 (+.f64 (*.f64 x y) (*.f64 z (-.f64 1 y))) 1)
(+.f64 (*.f64 z (-.f64 1 y)) 0)
(+.f64 0 (*.f64 z (-.f64 1 y)))
(+.f64 (*.f64 (-.f64 1 y) (*.f64 z 1/2)) (*.f64 (-.f64 1 y) (*.f64 z 1/2)))
(-.f64 (*.f64 z (-.f64 1 y)) 0)
(/.f64 (*.f64 z (-.f64 1 y)) 1)
(/.f64 (*.f64 (-.f64 1 y) (+.f64 z z)) 2)
(/.f64 (*.f64 z (*.f64 (-.f64 1 y) 4)) 4)
(/.f64 (*.f64 (*.f64 z (-.f64 1 y)) 8) 8)
(/.f64 (*.f64 2 (*.f64 (*.f64 z (-.f64 1 y)) 8)) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 z (-.f64 1 y)) 8))) 32)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (*.f64 z (-.f64 1 y)) 8)))) 64)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (*.f64 z (-.f64 1 y)) 8))))) 128)
(pow.f64 (*.f64 z (-.f64 1 y)) 1)
Outputs
(*.f64 z (-.f64 1 y))
(+.f64 (*.f64 y x) (*.f64 z (-.f64 1 y)))
(+.f64 (*.f64 z (-.f64 1 y)) (*.f64 y x))
(+.f64 (*.f64 y x) (*.f64 z (-.f64 1 y)))
(+.f64 (*.f64 z (-.f64 1 y)) (*.f64 y x))
(+.f64 (*.f64 y x) (*.f64 z (-.f64 1 y)))
(+.f64 (*.f64 z (-.f64 1 y)) (*.f64 y x))
(*.f64 y x)
(+.f64 (*.f64 y x) (*.f64 z (-.f64 1 y)))
(+.f64 (*.f64 z (-.f64 1 y)) (*.f64 y x))
(+.f64 (*.f64 y x) (*.f64 z (-.f64 1 y)))
(+.f64 (*.f64 z (-.f64 1 y)) (*.f64 y x))
(+.f64 (*.f64 y x) (*.f64 z (-.f64 1 y)))
(+.f64 (*.f64 z (-.f64 1 y)) (*.f64 y x))
(*.f64 y x)
(+.f64 (*.f64 y x) (*.f64 z (-.f64 1 y)))
(+.f64 (*.f64 z (-.f64 1 y)) (*.f64 y x))
(+.f64 (*.f64 y x) (*.f64 z (-.f64 1 y)))
(+.f64 (*.f64 z (-.f64 1 y)) (*.f64 y x))
(+.f64 (*.f64 y x) (*.f64 z (-.f64 1 y)))
(+.f64 (*.f64 z (-.f64 1 y)) (*.f64 y x))
z
(+.f64 z (*.f64 y (+.f64 (*.f64 -1 z) x)))
(+.f64 z (*.f64 y (+.f64 x (*.f64 z -1))))
(+.f64 z (*.f64 y (+.f64 x (neg.f64 z))))
(+.f64 z (*.f64 y (+.f64 (*.f64 -1 z) x)))
(+.f64 z (*.f64 y (+.f64 x (*.f64 z -1))))
(+.f64 z (*.f64 y (+.f64 x (neg.f64 z))))
(+.f64 z (*.f64 y (+.f64 (*.f64 -1 z) x)))
(+.f64 z (*.f64 y (+.f64 x (*.f64 z -1))))
(+.f64 z (*.f64 y (+.f64 x (neg.f64 z))))
(*.f64 y (+.f64 (*.f64 -1 z) x))
(*.f64 y (+.f64 x (*.f64 z -1)))
(*.f64 y (+.f64 x (neg.f64 z)))
(+.f64 z (*.f64 y (+.f64 (*.f64 -1 z) x)))
(+.f64 z (*.f64 y (+.f64 x (*.f64 z -1))))
(+.f64 z (*.f64 y (+.f64 x (neg.f64 z))))
(+.f64 z (*.f64 y (+.f64 (*.f64 -1 z) x)))
(+.f64 z (*.f64 y (+.f64 x (*.f64 z -1))))
(+.f64 z (*.f64 y (+.f64 x (neg.f64 z))))
(+.f64 z (*.f64 y (+.f64 (*.f64 -1 z) x)))
(+.f64 z (*.f64 y (+.f64 x (*.f64 z -1))))
(+.f64 z (*.f64 y (+.f64 x (neg.f64 z))))
(*.f64 -1 (*.f64 y (+.f64 (*.f64 -1 x) z)))
(*.f64 -1 (*.f64 y (+.f64 z (*.f64 x -1))))
(*.f64 y (neg.f64 (+.f64 z (neg.f64 x))))
(*.f64 (+.f64 z (neg.f64 x)) (neg.f64 y))
(+.f64 (*.f64 -1 (*.f64 y (+.f64 (*.f64 -1 x) z))) z)
(+.f64 z (*.f64 -1 (*.f64 y (+.f64 z (*.f64 x -1)))))
(+.f64 z (*.f64 y (neg.f64 (+.f64 z (neg.f64 x)))))
(+.f64 z (*.f64 (+.f64 z (neg.f64 x)) (neg.f64 y)))
(+.f64 (*.f64 -1 (*.f64 y (+.f64 (*.f64 -1 x) z))) z)
(+.f64 z (*.f64 -1 (*.f64 y (+.f64 z (*.f64 x -1)))))
(+.f64 z (*.f64 y (neg.f64 (+.f64 z (neg.f64 x)))))
(+.f64 z (*.f64 (+.f64 z (neg.f64 x)) (neg.f64 y)))
(+.f64 (*.f64 -1 (*.f64 y (+.f64 (*.f64 -1 x) z))) z)
(+.f64 z (*.f64 -1 (*.f64 y (+.f64 z (*.f64 x -1)))))
(+.f64 z (*.f64 y (neg.f64 (+.f64 z (neg.f64 x)))))
(+.f64 z (*.f64 (+.f64 z (neg.f64 x)) (neg.f64 y)))
(*.f64 y x)
(+.f64 (*.f64 y x) (*.f64 z (-.f64 1 y)))
(+.f64 (*.f64 z (-.f64 1 y)) (*.f64 y x))
(+.f64 (*.f64 y x) (*.f64 z (-.f64 1 y)))
(+.f64 (*.f64 z (-.f64 1 y)) (*.f64 y x))
(+.f64 (*.f64 y x) (*.f64 z (-.f64 1 y)))
(+.f64 (*.f64 z (-.f64 1 y)) (*.f64 y x))
(*.f64 z (-.f64 1 y))
(+.f64 (*.f64 y x) (*.f64 z (-.f64 1 y)))
(+.f64 (*.f64 z (-.f64 1 y)) (*.f64 y x))
(+.f64 (*.f64 y x) (*.f64 z (-.f64 1 y)))
(+.f64 (*.f64 z (-.f64 1 y)) (*.f64 y x))
(+.f64 (*.f64 y x) (*.f64 z (-.f64 1 y)))
(+.f64 (*.f64 z (-.f64 1 y)) (*.f64 y x))
(*.f64 z (-.f64 1 y))
(+.f64 (*.f64 y x) (*.f64 z (-.f64 1 y)))
(+.f64 (*.f64 z (-.f64 1 y)) (*.f64 y x))
(+.f64 (*.f64 y x) (*.f64 z (-.f64 1 y)))
(+.f64 (*.f64 z (-.f64 1 y)) (*.f64 y x))
(+.f64 (*.f64 y x) (*.f64 z (-.f64 1 y)))
(+.f64 (*.f64 z (-.f64 1 y)) (*.f64 y x))
z
(+.f64 (*.f64 -1 (*.f64 y z)) z)
(+.f64 z (*.f64 y (*.f64 z -1)))
(+.f64 z (*.f64 y (neg.f64 z)))
(+.f64 z (*.f64 z (neg.f64 y)))
(+.f64 (*.f64 -1 (*.f64 y z)) z)
(+.f64 z (*.f64 y (*.f64 z -1)))
(+.f64 z (*.f64 y (neg.f64 z)))
(+.f64 z (*.f64 z (neg.f64 y)))
(+.f64 (*.f64 -1 (*.f64 y z)) z)
(+.f64 z (*.f64 y (*.f64 z -1)))
(+.f64 z (*.f64 y (neg.f64 z)))
(+.f64 z (*.f64 z (neg.f64 y)))
(*.f64 -1 (*.f64 y z))
(*.f64 y (*.f64 z -1))
(*.f64 y (neg.f64 z))
(*.f64 z (neg.f64 y))
(+.f64 (*.f64 -1 (*.f64 y z)) z)
(+.f64 z (*.f64 y (*.f64 z -1)))
(+.f64 z (*.f64 y (neg.f64 z)))
(+.f64 z (*.f64 z (neg.f64 y)))
(+.f64 (*.f64 -1 (*.f64 y z)) z)
(+.f64 z (*.f64 y (*.f64 z -1)))
(+.f64 z (*.f64 y (neg.f64 z)))
(+.f64 z (*.f64 z (neg.f64 y)))
(+.f64 (*.f64 -1 (*.f64 y z)) z)
(+.f64 z (*.f64 y (*.f64 z -1)))
(+.f64 z (*.f64 y (neg.f64 z)))
(+.f64 z (*.f64 z (neg.f64 y)))
(*.f64 -1 (*.f64 y z))
(*.f64 y (*.f64 z -1))
(*.f64 y (neg.f64 z))
(*.f64 z (neg.f64 y))
(+.f64 (*.f64 -1 (*.f64 y z)) z)
(+.f64 z (*.f64 y (*.f64 z -1)))
(+.f64 z (*.f64 y (neg.f64 z)))
(+.f64 z (*.f64 z (neg.f64 y)))
(+.f64 (*.f64 -1 (*.f64 y z)) z)
(+.f64 z (*.f64 y (*.f64 z -1)))
(+.f64 z (*.f64 y (neg.f64 z)))
(+.f64 z (*.f64 z (neg.f64 y)))
(+.f64 (*.f64 -1 (*.f64 y z)) z)
(+.f64 z (*.f64 y (*.f64 z -1)))
(+.f64 z (*.f64 y (neg.f64 z)))
(+.f64 z (*.f64 z (neg.f64 y)))
(-.f64 (+.f64 (*.f64 x y) (*.f64 z (-.f64 1 y))) 0)
(+.f64 (*.f64 z (-.f64 1 y)) (*.f64 y x))
(*.f64 1 (+.f64 (*.f64 x y) (*.f64 z (-.f64 1 y))))
(+.f64 (*.f64 z (-.f64 1 y)) (*.f64 y x))
(*.f64 (+.f64 (*.f64 x y) (*.f64 z (-.f64 1 y))) 1)
(+.f64 (*.f64 z (-.f64 1 y)) (*.f64 y x))
(*.f64 2 (*.f64 (+.f64 (*.f64 x y) (*.f64 z (-.f64 1 y))) 1/2))
(+.f64 (*.f64 z (-.f64 1 y)) (*.f64 y x))
(*.f64 (*.f64 (+.f64 (*.f64 x y) (*.f64 z (-.f64 1 y))) 2) 1/2)
(+.f64 (*.f64 z (-.f64 1 y)) (*.f64 y x))
(*.f64 4 (/.f64 (+.f64 (*.f64 x y) (*.f64 z (-.f64 1 y))) 4))
(+.f64 (*.f64 z (-.f64 1 y)) (*.f64 y x))
(*.f64 (*.f64 (+.f64 (*.f64 x y) (*.f64 z (-.f64 1 y))) 4) 1/4)
(+.f64 (*.f64 z (-.f64 1 y)) (*.f64 y x))
(*.f64 1/2 (*.f64 (+.f64 (*.f64 x y) (*.f64 z (-.f64 1 y))) 2))
(+.f64 (*.f64 z (-.f64 1 y)) (*.f64 y x))
(*.f64 (*.f64 (+.f64 (*.f64 x y) (*.f64 z (-.f64 1 y))) 1/2) 2)
(+.f64 (*.f64 z (-.f64 1 y)) (*.f64 y x))
(*.f64 1/4 (*.f64 (+.f64 (*.f64 x y) (*.f64 z (-.f64 1 y))) 4))
(+.f64 (*.f64 z (-.f64 1 y)) (*.f64 y x))
(*.f64 (/.f64 (+.f64 (*.f64 x y) (*.f64 z (-.f64 1 y))) 4) 4)
(+.f64 (*.f64 z (-.f64 1 y)) (*.f64 y x))
(/.f64 (+.f64 (*.f64 x y) (*.f64 z (-.f64 1 y))) 1)
(+.f64 (*.f64 z (-.f64 1 y)) (*.f64 y x))
(/.f64 (*.f64 (+.f64 (*.f64 x y) (*.f64 z (-.f64 1 y))) 2) 2)
(+.f64 (*.f64 z (-.f64 1 y)) (*.f64 y x))
(/.f64 (*.f64 (+.f64 (*.f64 x y) (*.f64 z (-.f64 1 y))) 4) 4)
(+.f64 (*.f64 z (-.f64 1 y)) (*.f64 y x))
(/.f64 (*.f64 (+.f64 (*.f64 x y) (*.f64 z (-.f64 1 y))) 8) 8)
(+.f64 (*.f64 z (-.f64 1 y)) (*.f64 y x))
(/.f64 (*.f64 2 (*.f64 (+.f64 (*.f64 x y) (*.f64 z (-.f64 1 y))) 8)) 16)
(+.f64 (*.f64 z (-.f64 1 y)) (*.f64 y x))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 x y) (*.f64 z (-.f64 1 y))) 8))) 32)
(+.f64 (*.f64 z (-.f64 1 y)) (*.f64 y x))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 x y) (*.f64 z (-.f64 1 y))) 8)))) 64)
(+.f64 (*.f64 z (-.f64 1 y)) (*.f64 y x))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 x y) (*.f64 z (-.f64 1 y))) 8))))) 128)
(+.f64 (*.f64 z (-.f64 1 y)) (*.f64 y x))
(pow.f64 (+.f64 (*.f64 x y) (*.f64 z (-.f64 1 y))) 1)
(+.f64 (*.f64 z (-.f64 1 y)) (*.f64 y x))
(+.f64 (*.f64 z (-.f64 1 y)) 0)
(*.f64 z (-.f64 1 y))
(+.f64 0 (*.f64 z (-.f64 1 y)))
(*.f64 z (-.f64 1 y))
(+.f64 (*.f64 (-.f64 1 y) (*.f64 z 1/2)) (*.f64 (-.f64 1 y) (*.f64 z 1/2)))
(*.f64 z (-.f64 1 y))
(-.f64 (*.f64 z (-.f64 1 y)) 0)
(*.f64 z (-.f64 1 y))
(/.f64 (*.f64 z (-.f64 1 y)) 1)
(*.f64 z (-.f64 1 y))
(/.f64 (*.f64 (-.f64 1 y) (+.f64 z z)) 2)
(*.f64 z (-.f64 1 y))
(/.f64 (*.f64 z (*.f64 (-.f64 1 y) 4)) 4)
(*.f64 z (-.f64 1 y))
(/.f64 (*.f64 (*.f64 z (-.f64 1 y)) 8) 8)
(*.f64 z (-.f64 1 y))
(/.f64 (*.f64 2 (*.f64 (*.f64 z (-.f64 1 y)) 8)) 16)
(*.f64 z (-.f64 1 y))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 z (-.f64 1 y)) 8))) 32)
(*.f64 z (-.f64 1 y))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (*.f64 z (-.f64 1 y)) 8)))) 64)
(*.f64 z (-.f64 1 y))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (*.f64 z (-.f64 1 y)) 8))))) 128)
(*.f64 z (-.f64 1 y))
(pow.f64 (*.f64 z (-.f64 1 y)) 1)
(*.f64 z (-.f64 1 y))

eval12.0ms (0.1%)

Compiler

Compiled 679 to 384 computations (43.4% saved)

prune10.0ms (0.1%)

Pruning

5 alts after pruning (5 fresh and 0 done)

PrunedKeptTotal
New55560
Fresh000
Picked101
Done000
Total56561
Error
0.0b
Counts
61 → 5
Alt Table
Click to see full alt table
StatusErrorProgram
0.0b
(+.f64 z (*.f64 y (+.f64 x (neg.f64 z))))
19.3b
(*.f64 z (-.f64 1 y))
30.4b
(*.f64 y (+.f64 x (neg.f64 z)))
43.8b
(*.f64 y x)
33.0b
z
Compiler

Compiled 38 to 26 computations (31.6% saved)

localize4.0ms (0%)

Compiler

Compiled 8 to 4 computations (50% saved)

localize6.0ms (0.1%)

Local error

Found 1 expressions with local error:

NewErrorProgram
0.0b
(*.f64 y (+.f64 x (neg.f64 z)))
Compiler

Compiled 18 to 6 computations (66.7% saved)

series3.0ms (0%)

Counts
1 → 36
Calls

9 calls:

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

rewrite221.0ms (2.6%)

Algorithm
batch-egg-rewrite
Rules
1746×rational.json-simplify-1
1390×rational.json-1
1390×rational.json-2
1390×rational.json-3
1370×exponential.json-3
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0917
16217
213917
329217
458617
5141117
6276717
7417017
8541817
9645717
10699317
11740517
12762717
Stop Event
node limit
Counts
1 → 22
Calls
Call 1
Inputs
(*.f64 y (+.f64 x (neg.f64 z)))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 y (+.f64 x (neg.f64 z))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 y (+.f64 x (neg.f64 z))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (+.f64 x (neg.f64 z)) (*.f64 y 1/2)) (*.f64 (+.f64 x (neg.f64 z)) (*.f64 y 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (/.f64 y 4) (*.f64 (+.f64 x (neg.f64 z)) 2)) (*.f64 (/.f64 y 4) (*.f64 (+.f64 x (neg.f64 z)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (/.f64 (+.f64 x (neg.f64 z)) 4) (+.f64 y y)) (*.f64 (/.f64 (+.f64 x (neg.f64 z)) 4) (+.f64 y y)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (*.f64 1/2 (*.f64 y 1/2)) (*.f64 (+.f64 x (neg.f64 z)) 2)) (*.f64 (*.f64 1/2 (*.f64 y 1/2)) (*.f64 (+.f64 x (neg.f64 z)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (*.f64 1/2 (*.f64 (+.f64 x (neg.f64 z)) 1/2)) (+.f64 y y)) (*.f64 (*.f64 1/2 (*.f64 (+.f64 x (neg.f64 z)) 1/2)) (+.f64 y y)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (*.f64 1/4 (*.f64 (+.f64 x (neg.f64 z)) 1/2)) (*.f64 y 4)) (*.f64 (*.f64 1/4 (*.f64 (+.f64 x (neg.f64 z)) 1/2)) (*.f64 y 4)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (*.f64 1/4 (*.f64 y 1/2)) (*.f64 (+.f64 x (neg.f64 z)) 4)) (*.f64 (*.f64 1/4 (*.f64 y 1/2)) (*.f64 (+.f64 x (neg.f64 z)) 4)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (*.f64 1/2 (*.f64 y 1/2)) (+.f64 (*.f64 z -2) (+.f64 x x))) (*.f64 (*.f64 1/2 (*.f64 y 1/2)) (+.f64 (*.f64 z -2) (+.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (*.f64 1/2 (/.f64 (+.f64 x (neg.f64 z)) 4)) (*.f64 y 4)) (*.f64 (*.f64 1/2 (/.f64 (+.f64 x (neg.f64 z)) 4)) (*.f64 y 4)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (*.f64 1/2 (/.f64 y 4)) (*.f64 (+.f64 x (neg.f64 z)) 4)) (*.f64 (*.f64 1/2 (/.f64 y 4)) (*.f64 (+.f64 x (neg.f64 z)) 4)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 y (+.f64 x (neg.f64 z))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 y (+.f64 x (neg.f64 z))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 x (neg.f64 z)) (+.f64 y y)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 x (neg.f64 z)) (*.f64 y 4)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 y (*.f64 (+.f64 x (neg.f64 z)) 8)) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 16 (*.f64 y (+.f64 x (neg.f64 z)))) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 16 (*.f64 y (+.f64 x (neg.f64 z))))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 16 (*.f64 y (+.f64 x (neg.f64 z)))))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 16 (*.f64 y (+.f64 x (neg.f64 z))))))) 128)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 y (+.f64 x (neg.f64 z))) 1)))))

simplify175.0ms (2%)

Algorithm
egg-herbie
Rules
2774×rational.json-simplify-51
1842×rational.json-simplify-1
1406×rational.json-simplify-2
1394×rational.json-simplify-35
1178×rational.json-simplify-41
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0861130
1205890
2460890
31062890
43133890
54726890
64965890
75088890
85183890
95276890
107399890
Stop Event
node limit
Counts
58 → 30
Calls
Call 1
Inputs
(*.f64 y (-.f64 x z))
(*.f64 y (-.f64 x z))
(*.f64 y (-.f64 x z))
(*.f64 y (-.f64 x z))
(*.f64 y (-.f64 x z))
(*.f64 y (-.f64 x z))
(*.f64 y (-.f64 x z))
(*.f64 y (-.f64 x z))
(*.f64 y (-.f64 x z))
(*.f64 y (-.f64 x z))
(*.f64 y (-.f64 x z))
(*.f64 y (-.f64 x z))
(*.f64 -1 (*.f64 y z))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z)))
(*.f64 y x)
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(*.f64 y x)
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(*.f64 y x)
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(*.f64 -1 (*.f64 y z))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z)))
(*.f64 -1 (*.f64 y z))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z)))
(+.f64 (*.f64 y (+.f64 x (neg.f64 z))) 0)
(+.f64 0 (*.f64 y (+.f64 x (neg.f64 z))))
(+.f64 (*.f64 (+.f64 x (neg.f64 z)) (*.f64 y 1/2)) (*.f64 (+.f64 x (neg.f64 z)) (*.f64 y 1/2)))
(+.f64 (*.f64 (/.f64 y 4) (*.f64 (+.f64 x (neg.f64 z)) 2)) (*.f64 (/.f64 y 4) (*.f64 (+.f64 x (neg.f64 z)) 2)))
(+.f64 (*.f64 (/.f64 (+.f64 x (neg.f64 z)) 4) (+.f64 y y)) (*.f64 (/.f64 (+.f64 x (neg.f64 z)) 4) (+.f64 y y)))
(+.f64 (*.f64 (*.f64 1/2 (*.f64 y 1/2)) (*.f64 (+.f64 x (neg.f64 z)) 2)) (*.f64 (*.f64 1/2 (*.f64 y 1/2)) (*.f64 (+.f64 x (neg.f64 z)) 2)))
(+.f64 (*.f64 (*.f64 1/2 (*.f64 (+.f64 x (neg.f64 z)) 1/2)) (+.f64 y y)) (*.f64 (*.f64 1/2 (*.f64 (+.f64 x (neg.f64 z)) 1/2)) (+.f64 y y)))
(+.f64 (*.f64 (*.f64 1/4 (*.f64 (+.f64 x (neg.f64 z)) 1/2)) (*.f64 y 4)) (*.f64 (*.f64 1/4 (*.f64 (+.f64 x (neg.f64 z)) 1/2)) (*.f64 y 4)))
(+.f64 (*.f64 (*.f64 1/4 (*.f64 y 1/2)) (*.f64 (+.f64 x (neg.f64 z)) 4)) (*.f64 (*.f64 1/4 (*.f64 y 1/2)) (*.f64 (+.f64 x (neg.f64 z)) 4)))
(+.f64 (*.f64 (*.f64 1/2 (*.f64 y 1/2)) (+.f64 (*.f64 z -2) (+.f64 x x))) (*.f64 (*.f64 1/2 (*.f64 y 1/2)) (+.f64 (*.f64 z -2) (+.f64 x x))))
(+.f64 (*.f64 (*.f64 1/2 (/.f64 (+.f64 x (neg.f64 z)) 4)) (*.f64 y 4)) (*.f64 (*.f64 1/2 (/.f64 (+.f64 x (neg.f64 z)) 4)) (*.f64 y 4)))
(+.f64 (*.f64 (*.f64 1/2 (/.f64 y 4)) (*.f64 (+.f64 x (neg.f64 z)) 4)) (*.f64 (*.f64 1/2 (/.f64 y 4)) (*.f64 (+.f64 x (neg.f64 z)) 4)))
(-.f64 (*.f64 y (+.f64 x (neg.f64 z))) 0)
(/.f64 (*.f64 y (+.f64 x (neg.f64 z))) 1)
(/.f64 (*.f64 (+.f64 x (neg.f64 z)) (+.f64 y y)) 2)
(/.f64 (*.f64 (+.f64 x (neg.f64 z)) (*.f64 y 4)) 4)
(/.f64 (*.f64 y (*.f64 (+.f64 x (neg.f64 z)) 8)) 8)
(/.f64 (*.f64 16 (*.f64 y (+.f64 x (neg.f64 z)))) 16)
(/.f64 (*.f64 2 (*.f64 16 (*.f64 y (+.f64 x (neg.f64 z))))) 32)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 16 (*.f64 y (+.f64 x (neg.f64 z)))))) 64)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 16 (*.f64 y (+.f64 x (neg.f64 z))))))) 128)
(pow.f64 (*.f64 y (+.f64 x (neg.f64 z))) 1)
Outputs
(*.f64 y (-.f64 x z))
(*.f64 y (-.f64 x z))
(*.f64 y (-.f64 x z))
(*.f64 y (-.f64 x z))
(*.f64 y (-.f64 x z))
(*.f64 y (-.f64 x z))
(*.f64 y (-.f64 x z))
(*.f64 y (-.f64 x z))
(*.f64 y (-.f64 x z))
(*.f64 y (-.f64 x z))
(*.f64 y (-.f64 x z))
(*.f64 y (-.f64 x z))
(*.f64 -1 (*.f64 y z))
(*.f64 y (neg.f64 z))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z)))
(+.f64 (*.f64 y (neg.f64 z)) (*.f64 y x))
(*.f64 y (+.f64 x (neg.f64 z)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z)))
(+.f64 (*.f64 y (neg.f64 z)) (*.f64 y x))
(*.f64 y (+.f64 x (neg.f64 z)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z)))
(+.f64 (*.f64 y (neg.f64 z)) (*.f64 y x))
(*.f64 y (+.f64 x (neg.f64 z)))
(*.f64 y x)
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(+.f64 (*.f64 y (neg.f64 z)) (*.f64 y x))
(*.f64 y (+.f64 x (neg.f64 z)))
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(+.f64 (*.f64 y (neg.f64 z)) (*.f64 y x))
(*.f64 y (+.f64 x (neg.f64 z)))
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(+.f64 (*.f64 y (neg.f64 z)) (*.f64 y x))
(*.f64 y (+.f64 x (neg.f64 z)))
(*.f64 y x)
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(+.f64 (*.f64 y (neg.f64 z)) (*.f64 y x))
(*.f64 y (+.f64 x (neg.f64 z)))
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(+.f64 (*.f64 y (neg.f64 z)) (*.f64 y x))
(*.f64 y (+.f64 x (neg.f64 z)))
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(+.f64 (*.f64 y (neg.f64 z)) (*.f64 y x))
(*.f64 y (+.f64 x (neg.f64 z)))
(*.f64 y x)
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(+.f64 (*.f64 y (neg.f64 z)) (*.f64 y x))
(*.f64 y (+.f64 x (neg.f64 z)))
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(+.f64 (*.f64 y (neg.f64 z)) (*.f64 y x))
(*.f64 y (+.f64 x (neg.f64 z)))
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(+.f64 (*.f64 y (neg.f64 z)) (*.f64 y x))
(*.f64 y (+.f64 x (neg.f64 z)))
(*.f64 -1 (*.f64 y z))
(*.f64 y (neg.f64 z))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z)))
(+.f64 (*.f64 y (neg.f64 z)) (*.f64 y x))
(*.f64 y (+.f64 x (neg.f64 z)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z)))
(+.f64 (*.f64 y (neg.f64 z)) (*.f64 y x))
(*.f64 y (+.f64 x (neg.f64 z)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z)))
(+.f64 (*.f64 y (neg.f64 z)) (*.f64 y x))
(*.f64 y (+.f64 x (neg.f64 z)))
(*.f64 -1 (*.f64 y z))
(*.f64 y (neg.f64 z))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z)))
(+.f64 (*.f64 y (neg.f64 z)) (*.f64 y x))
(*.f64 y (+.f64 x (neg.f64 z)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z)))
(+.f64 (*.f64 y (neg.f64 z)) (*.f64 y x))
(*.f64 y (+.f64 x (neg.f64 z)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z)))
(+.f64 (*.f64 y (neg.f64 z)) (*.f64 y x))
(*.f64 y (+.f64 x (neg.f64 z)))
(+.f64 (*.f64 y (+.f64 x (neg.f64 z))) 0)
(+.f64 (*.f64 y (neg.f64 z)) (*.f64 y x))
(*.f64 y (+.f64 x (neg.f64 z)))
(+.f64 0 (*.f64 y (+.f64 x (neg.f64 z))))
(+.f64 (*.f64 y (neg.f64 z)) (*.f64 y x))
(*.f64 y (+.f64 x (neg.f64 z)))
(+.f64 (*.f64 (+.f64 x (neg.f64 z)) (*.f64 y 1/2)) (*.f64 (+.f64 x (neg.f64 z)) (*.f64 y 1/2)))
(+.f64 (*.f64 y (neg.f64 z)) (*.f64 y x))
(*.f64 y (+.f64 x (neg.f64 z)))
(+.f64 (*.f64 (/.f64 y 4) (*.f64 (+.f64 x (neg.f64 z)) 2)) (*.f64 (/.f64 y 4) (*.f64 (+.f64 x (neg.f64 z)) 2)))
(+.f64 (*.f64 y (neg.f64 z)) (*.f64 y x))
(*.f64 y (+.f64 x (neg.f64 z)))
(+.f64 (*.f64 (/.f64 (+.f64 x (neg.f64 z)) 4) (+.f64 y y)) (*.f64 (/.f64 (+.f64 x (neg.f64 z)) 4) (+.f64 y y)))
(+.f64 (*.f64 y (neg.f64 z)) (*.f64 y x))
(*.f64 y (+.f64 x (neg.f64 z)))
(+.f64 (*.f64 (*.f64 1/2 (*.f64 y 1/2)) (*.f64 (+.f64 x (neg.f64 z)) 2)) (*.f64 (*.f64 1/2 (*.f64 y 1/2)) (*.f64 (+.f64 x (neg.f64 z)) 2)))
(+.f64 (*.f64 y (neg.f64 z)) (*.f64 y x))
(*.f64 y (+.f64 x (neg.f64 z)))
(+.f64 (*.f64 (*.f64 1/2 (*.f64 (+.f64 x (neg.f64 z)) 1/2)) (+.f64 y y)) (*.f64 (*.f64 1/2 (*.f64 (+.f64 x (neg.f64 z)) 1/2)) (+.f64 y y)))
(+.f64 (*.f64 y (neg.f64 z)) (*.f64 y x))
(*.f64 y (+.f64 x (neg.f64 z)))
(+.f64 (*.f64 (*.f64 1/4 (*.f64 (+.f64 x (neg.f64 z)) 1/2)) (*.f64 y 4)) (*.f64 (*.f64 1/4 (*.f64 (+.f64 x (neg.f64 z)) 1/2)) (*.f64 y 4)))
(+.f64 (*.f64 y (neg.f64 z)) (*.f64 y x))
(*.f64 y (+.f64 x (neg.f64 z)))
(+.f64 (*.f64 (*.f64 1/4 (*.f64 y 1/2)) (*.f64 (+.f64 x (neg.f64 z)) 4)) (*.f64 (*.f64 1/4 (*.f64 y 1/2)) (*.f64 (+.f64 x (neg.f64 z)) 4)))
(+.f64 (*.f64 y (neg.f64 z)) (*.f64 y x))
(*.f64 y (+.f64 x (neg.f64 z)))
(+.f64 (*.f64 (*.f64 1/2 (*.f64 y 1/2)) (+.f64 (*.f64 z -2) (+.f64 x x))) (*.f64 (*.f64 1/2 (*.f64 y 1/2)) (+.f64 (*.f64 z -2) (+.f64 x x))))
(+.f64 (*.f64 y (neg.f64 z)) (*.f64 y x))
(*.f64 y (+.f64 x (neg.f64 z)))
(+.f64 (*.f64 (*.f64 1/2 (/.f64 (+.f64 x (neg.f64 z)) 4)) (*.f64 y 4)) (*.f64 (*.f64 1/2 (/.f64 (+.f64 x (neg.f64 z)) 4)) (*.f64 y 4)))
(+.f64 (*.f64 y (neg.f64 z)) (*.f64 y x))
(*.f64 y (+.f64 x (neg.f64 z)))
(+.f64 (*.f64 (*.f64 1/2 (/.f64 y 4)) (*.f64 (+.f64 x (neg.f64 z)) 4)) (*.f64 (*.f64 1/2 (/.f64 y 4)) (*.f64 (+.f64 x (neg.f64 z)) 4)))
(+.f64 (*.f64 y (neg.f64 z)) (*.f64 y x))
(*.f64 y (+.f64 x (neg.f64 z)))
(-.f64 (*.f64 y (+.f64 x (neg.f64 z))) 0)
(+.f64 (*.f64 y (neg.f64 z)) (*.f64 y x))
(*.f64 y (+.f64 x (neg.f64 z)))
(/.f64 (*.f64 y (+.f64 x (neg.f64 z))) 1)
(+.f64 (*.f64 y (neg.f64 z)) (*.f64 y x))
(*.f64 y (+.f64 x (neg.f64 z)))
(/.f64 (*.f64 (+.f64 x (neg.f64 z)) (+.f64 y y)) 2)
(+.f64 (*.f64 y (neg.f64 z)) (*.f64 y x))
(*.f64 y (+.f64 x (neg.f64 z)))
(/.f64 (*.f64 (+.f64 x (neg.f64 z)) (*.f64 y 4)) 4)
(+.f64 (*.f64 y (neg.f64 z)) (*.f64 y x))
(*.f64 y (+.f64 x (neg.f64 z)))
(/.f64 (*.f64 y (*.f64 (+.f64 x (neg.f64 z)) 8)) 8)
(+.f64 (*.f64 y (neg.f64 z)) (*.f64 y x))
(*.f64 y (+.f64 x (neg.f64 z)))
(/.f64 (*.f64 16 (*.f64 y (+.f64 x (neg.f64 z)))) 16)
(+.f64 (*.f64 y (neg.f64 z)) (*.f64 y x))
(*.f64 y (+.f64 x (neg.f64 z)))
(/.f64 (*.f64 2 (*.f64 16 (*.f64 y (+.f64 x (neg.f64 z))))) 32)
(+.f64 (*.f64 y (neg.f64 z)) (*.f64 y x))
(*.f64 y (+.f64 x (neg.f64 z)))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 16 (*.f64 y (+.f64 x (neg.f64 z)))))) 64)
(+.f64 (*.f64 y (neg.f64 z)) (*.f64 y x))
(*.f64 y (+.f64 x (neg.f64 z)))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 16 (*.f64 y (+.f64 x (neg.f64 z))))))) 128)
(+.f64 (*.f64 y (neg.f64 z)) (*.f64 y x))
(*.f64 y (+.f64 x (neg.f64 z)))
(pow.f64 (*.f64 y (+.f64 x (neg.f64 z))) 1)
(+.f64 (*.f64 y (neg.f64 z)) (*.f64 y x))
(*.f64 y (+.f64 x (neg.f64 z)))

localize6.0ms (0.1%)

Local error

Found 1 expressions with local error:

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

Compiled 14 to 9 computations (35.7% saved)

localize9.0ms (0.1%)

Local error

Found 2 expressions with local error:

NewErrorProgram
0.0b
(+.f64 z (*.f64 y (+.f64 x (neg.f64 z))))
0.0b
(*.f64 y (+.f64 x (neg.f64 z)))
Compiler

Compiled 26 to 7 computations (73.1% saved)

series1.0ms (0%)

Counts
1 → 36
Calls

9 calls:

TimeVariablePointExpression
0.0ms
y
@inf
(+.f64 z (*.f64 y (+.f64 x (neg.f64 z))))
0.0ms
z
@0
(+.f64 z (*.f64 y (+.f64 x (neg.f64 z))))
0.0ms
z
@-inf
(+.f64 z (*.f64 y (+.f64 x (neg.f64 z))))
0.0ms
x
@0
(+.f64 z (*.f64 y (+.f64 x (neg.f64 z))))
0.0ms
z
@inf
(+.f64 z (*.f64 y (+.f64 x (neg.f64 z))))

rewrite141.0ms (1.6%)

Algorithm
batch-egg-rewrite
Rules
1472×rational.json-simplify-35
1406×rational.json-1
1406×rational.json-2
1406×rational.json-3
1390×exponential.json-3
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01023
16923
215023
331723
465023
5158123
6318923
7489623
8632523
9750223
Stop Event
node limit
Counts
1 → 22
Calls
Call 1
Inputs
(+.f64 z (*.f64 y (+.f64 x (neg.f64 z))))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 z (*.f64 y (+.f64 x (neg.f64 z)))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 z (*.f64 y (+.f64 x (neg.f64 z)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (+.f64 z (*.f64 y (+.f64 x (neg.f64 z)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 (+.f64 z (*.f64 y (+.f64 x (neg.f64 z)))) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 z (*.f64 y (+.f64 x (neg.f64 z)))) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (/.f64 (+.f64 z (*.f64 y (+.f64 x (neg.f64 z)))) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 z (*.f64 y (+.f64 x (neg.f64 z)))) 4) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 (+.f64 z (*.f64 y (+.f64 x (neg.f64 z)))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (+.f64 (*.f64 y (*.f64 (+.f64 x (neg.f64 z)) 2)) (+.f64 z z)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 z (*.f64 y (+.f64 x (neg.f64 z)))) 1/2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 (+.f64 z (*.f64 y (+.f64 x (neg.f64 z)))) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (+.f64 z (*.f64 y (+.f64 x (neg.f64 z)))) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (*.f64 y (*.f64 (+.f64 x (neg.f64 z)) 2)) (+.f64 z z)) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 z (*.f64 y (+.f64 x (neg.f64 z)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 z (*.f64 y (+.f64 x (neg.f64 z)))) 2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 z (*.f64 y (+.f64 x (neg.f64 z)))) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 z (*.f64 y (+.f64 x (neg.f64 z)))) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (+.f64 z (*.f64 y (+.f64 x (neg.f64 z)))) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 z (*.f64 y (+.f64 x (neg.f64 z)))) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 z (*.f64 y (+.f64 x (neg.f64 z)))) 8)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 z (*.f64 y (+.f64 x (neg.f64 z)))) 8))))) 128)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (+.f64 z (*.f64 y (+.f64 x (neg.f64 z)))) 1)))))

simplify344.0ms (4%)

Algorithm
egg-herbie
Rules
3212×rational.json-simplify-51
1870×rational.json-simplify-35
1606×rational.json-simplify-1
1470×rational.json-simplify-49
1134×rational.json-simplify-41
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
0751476
11661454
23731280
310121236
416741236
528061236
628781236
729421236
829871236
930301236
1035261236
1143291236
1244151236
1344991236
1445561236
1546131236
1646691236
1747251236
1847811236
1957651236
Stop Event
node limit
Counts
58 → 47
Calls
Call 1
Inputs
(*.f64 y x)
(+.f64 (*.f64 y x) (*.f64 (+.f64 1 (*.f64 -1 y)) z))
(+.f64 (*.f64 y x) (*.f64 (+.f64 1 (*.f64 -1 y)) z))
(+.f64 (*.f64 y x) (*.f64 (+.f64 1 (*.f64 -1 y)) z))
(*.f64 (+.f64 1 (*.f64 -1 y)) z)
(+.f64 (*.f64 y x) (*.f64 (+.f64 1 (*.f64 -1 y)) z))
(+.f64 (*.f64 y x) (*.f64 (+.f64 1 (*.f64 -1 y)) z))
(+.f64 (*.f64 y x) (*.f64 (+.f64 1 (*.f64 -1 y)) z))
(*.f64 -1 (*.f64 z (-.f64 y 1)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 z (-.f64 y 1))))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 z (-.f64 y 1))))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 z (-.f64 y 1))))
z
(+.f64 (*.f64 y (-.f64 x z)) z)
(+.f64 (*.f64 y (-.f64 x z)) z)
(+.f64 (*.f64 y (-.f64 x z)) z)
(*.f64 y (-.f64 x z))
(+.f64 (*.f64 y (-.f64 x z)) z)
(+.f64 (*.f64 y (-.f64 x z)) z)
(+.f64 (*.f64 y (-.f64 x z)) z)
(*.f64 y (-.f64 x z))
(+.f64 (*.f64 y (-.f64 x z)) z)
(+.f64 (*.f64 y (-.f64 x z)) z)
(+.f64 (*.f64 y (-.f64 x z)) z)
(+.f64 (*.f64 -1 (*.f64 y z)) z)
(+.f64 (*.f64 y x) (+.f64 (*.f64 -1 (*.f64 y z)) z))
(+.f64 (*.f64 y x) (+.f64 (*.f64 -1 (*.f64 y z)) z))
(+.f64 (*.f64 y x) (+.f64 (*.f64 -1 (*.f64 y z)) z))
(*.f64 y x)
(+.f64 (*.f64 -1 (*.f64 y z)) (+.f64 (*.f64 y x) z))
(+.f64 (*.f64 -1 (*.f64 y z)) (+.f64 (*.f64 y x) z))
(+.f64 (*.f64 -1 (*.f64 y z)) (+.f64 (*.f64 y x) z))
(*.f64 y x)
(+.f64 (*.f64 -1 (*.f64 y z)) (+.f64 (*.f64 y x) z))
(+.f64 (*.f64 -1 (*.f64 y z)) (+.f64 (*.f64 y x) z))
(+.f64 (*.f64 -1 (*.f64 y z)) (+.f64 (*.f64 y x) z))
(-.f64 (+.f64 z (*.f64 y (+.f64 x (neg.f64 z)))) 0)
(*.f64 (+.f64 z (*.f64 y (+.f64 x (neg.f64 z)))) 1)
(*.f64 1 (+.f64 z (*.f64 y (+.f64 x (neg.f64 z)))))
(*.f64 2 (*.f64 (+.f64 z (*.f64 y (+.f64 x (neg.f64 z)))) 1/2))
(*.f64 (*.f64 (+.f64 z (*.f64 y (+.f64 x (neg.f64 z)))) 2) 1/2)
(*.f64 4 (/.f64 (+.f64 z (*.f64 y (+.f64 x (neg.f64 z)))) 4))
(*.f64 (*.f64 (+.f64 z (*.f64 y (+.f64 x (neg.f64 z)))) 4) 1/4)
(*.f64 1/2 (*.f64 (+.f64 z (*.f64 y (+.f64 x (neg.f64 z)))) 2))
(*.f64 1/2 (+.f64 (*.f64 y (*.f64 (+.f64 x (neg.f64 z)) 2)) (+.f64 z z)))
(*.f64 (*.f64 (+.f64 z (*.f64 y (+.f64 x (neg.f64 z)))) 1/2) 2)
(*.f64 1/4 (*.f64 (+.f64 z (*.f64 y (+.f64 x (neg.f64 z)))) 4))
(*.f64 (/.f64 (+.f64 z (*.f64 y (+.f64 x (neg.f64 z)))) 4) 4)
(*.f64 (+.f64 (*.f64 y (*.f64 (+.f64 x (neg.f64 z)) 2)) (+.f64 z z)) 1/2)
(/.f64 (+.f64 z (*.f64 y (+.f64 x (neg.f64 z)))) 1)
(/.f64 (*.f64 (+.f64 z (*.f64 y (+.f64 x (neg.f64 z)))) 2) 2)
(/.f64 (*.f64 (+.f64 z (*.f64 y (+.f64 x (neg.f64 z)))) 4) 4)
(/.f64 (*.f64 (+.f64 z (*.f64 y (+.f64 x (neg.f64 z)))) 8) 8)
(/.f64 (*.f64 2 (*.f64 (+.f64 z (*.f64 y (+.f64 x (neg.f64 z)))) 8)) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 z (*.f64 y (+.f64 x (neg.f64 z)))) 8))) 32)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 z (*.f64 y (+.f64 x (neg.f64 z)))) 8)))) 64)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 z (*.f64 y (+.f64 x (neg.f64 z)))) 8))))) 128)
(pow.f64 (+.f64 z (*.f64 y (+.f64 x (neg.f64 z)))) 1)
Outputs
(*.f64 y x)
(+.f64 (*.f64 y x) (*.f64 (+.f64 1 (*.f64 -1 y)) z))
(+.f64 (*.f64 y x) (*.f64 (+.f64 1 (*.f64 y -1)) z))
(+.f64 (*.f64 y x) (*.f64 (+.f64 1 (neg.f64 y)) z))
(+.f64 (*.f64 y x) (*.f64 (-.f64 1 y) z))
(+.f64 (*.f64 y x) (*.f64 (+.f64 1 (*.f64 -1 y)) z))
(+.f64 (*.f64 y x) (*.f64 (+.f64 1 (*.f64 y -1)) z))
(+.f64 (*.f64 y x) (*.f64 (+.f64 1 (neg.f64 y)) z))
(+.f64 (*.f64 y x) (*.f64 (-.f64 1 y) z))
(+.f64 (*.f64 y x) (*.f64 (+.f64 1 (*.f64 -1 y)) z))
(+.f64 (*.f64 y x) (*.f64 (+.f64 1 (*.f64 y -1)) z))
(+.f64 (*.f64 y x) (*.f64 (+.f64 1 (neg.f64 y)) z))
(+.f64 (*.f64 y x) (*.f64 (-.f64 1 y) z))
(*.f64 (+.f64 1 (*.f64 -1 y)) z)
(*.f64 (+.f64 1 (*.f64 y -1)) z)
(*.f64 (+.f64 1 (neg.f64 y)) z)
(*.f64 (-.f64 1 y) z)
(+.f64 (*.f64 y x) (*.f64 (+.f64 1 (*.f64 -1 y)) z))
(+.f64 (*.f64 y x) (*.f64 (+.f64 1 (*.f64 y -1)) z))
(+.f64 (*.f64 y x) (*.f64 (+.f64 1 (neg.f64 y)) z))
(+.f64 (*.f64 y x) (*.f64 (-.f64 1 y) z))
(+.f64 (*.f64 y x) (*.f64 (+.f64 1 (*.f64 -1 y)) z))
(+.f64 (*.f64 y x) (*.f64 (+.f64 1 (*.f64 y -1)) z))
(+.f64 (*.f64 y x) (*.f64 (+.f64 1 (neg.f64 y)) z))
(+.f64 (*.f64 y x) (*.f64 (-.f64 1 y) z))
(+.f64 (*.f64 y x) (*.f64 (+.f64 1 (*.f64 -1 y)) z))
(+.f64 (*.f64 y x) (*.f64 (+.f64 1 (*.f64 y -1)) z))
(+.f64 (*.f64 y x) (*.f64 (+.f64 1 (neg.f64 y)) z))
(+.f64 (*.f64 y x) (*.f64 (-.f64 1 y) z))
(*.f64 -1 (*.f64 z (-.f64 y 1)))
(*.f64 (+.f64 1 (*.f64 y -1)) z)
(*.f64 (+.f64 1 (neg.f64 y)) z)
(*.f64 (-.f64 1 y) z)
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 z (-.f64 y 1))))
(+.f64 (*.f64 y x) (*.f64 (+.f64 1 (*.f64 y -1)) z))
(+.f64 (*.f64 y x) (*.f64 (+.f64 1 (neg.f64 y)) z))
(+.f64 (*.f64 y x) (*.f64 (-.f64 1 y) z))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 z (-.f64 y 1))))
(+.f64 (*.f64 y x) (*.f64 (+.f64 1 (*.f64 y -1)) z))
(+.f64 (*.f64 y x) (*.f64 (+.f64 1 (neg.f64 y)) z))
(+.f64 (*.f64 y x) (*.f64 (-.f64 1 y) z))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 z (-.f64 y 1))))
(+.f64 (*.f64 y x) (*.f64 (+.f64 1 (*.f64 y -1)) z))
(+.f64 (*.f64 y x) (*.f64 (+.f64 1 (neg.f64 y)) z))
(+.f64 (*.f64 y x) (*.f64 (-.f64 1 y) z))
z
(+.f64 (*.f64 y (-.f64 x z)) z)
(+.f64 z (*.f64 y (-.f64 x z)))
(+.f64 (*.f64 y (-.f64 x z)) z)
(+.f64 z (*.f64 y (-.f64 x z)))
(+.f64 (*.f64 y (-.f64 x z)) z)
(+.f64 z (*.f64 y (-.f64 x z)))
(*.f64 y (-.f64 x z))
(+.f64 (*.f64 y (-.f64 x z)) z)
(+.f64 z (*.f64 y (-.f64 x z)))
(+.f64 (*.f64 y (-.f64 x z)) z)
(+.f64 z (*.f64 y (-.f64 x z)))
(+.f64 (*.f64 y (-.f64 x z)) z)
(+.f64 z (*.f64 y (-.f64 x z)))
(*.f64 y (-.f64 x z))
(+.f64 (*.f64 y (-.f64 x z)) z)
(+.f64 z (*.f64 y (-.f64 x z)))
(+.f64 (*.f64 y (-.f64 x z)) z)
(+.f64 z (*.f64 y (-.f64 x z)))
(+.f64 (*.f64 y (-.f64 x z)) z)
(+.f64 z (*.f64 y (-.f64 x z)))
(+.f64 (*.f64 -1 (*.f64 y z)) z)
(+.f64 z (*.f64 y (neg.f64 z)))
(+.f64 z (*.f64 (neg.f64 y) z))
(+.f64 (*.f64 y x) (+.f64 (*.f64 -1 (*.f64 y z)) z))
(+.f64 (*.f64 y x) (+.f64 z (*.f64 y (neg.f64 z))))
(+.f64 (*.f64 y (neg.f64 z)) (+.f64 (*.f64 y x) z))
(+.f64 z (*.f64 y (+.f64 x (neg.f64 z))))
(+.f64 (*.f64 y x) (+.f64 (*.f64 -1 (*.f64 y z)) z))
(+.f64 (*.f64 y x) (+.f64 z (*.f64 y (neg.f64 z))))
(+.f64 (*.f64 y (neg.f64 z)) (+.f64 (*.f64 y x) z))
(+.f64 z (*.f64 y (+.f64 x (neg.f64 z))))
(+.f64 (*.f64 y x) (+.f64 (*.f64 -1 (*.f64 y z)) z))
(+.f64 (*.f64 y x) (+.f64 z (*.f64 y (neg.f64 z))))
(+.f64 (*.f64 y (neg.f64 z)) (+.f64 (*.f64 y x) z))
(+.f64 z (*.f64 y (+.f64 x (neg.f64 z))))
(*.f64 y x)
(+.f64 (*.f64 -1 (*.f64 y z)) (+.f64 (*.f64 y x) z))
(+.f64 (*.f64 y x) (+.f64 z (*.f64 y (neg.f64 z))))
(+.f64 (*.f64 y (neg.f64 z)) (+.f64 (*.f64 y x) z))
(+.f64 z (*.f64 y (+.f64 x (neg.f64 z))))
(+.f64 (*.f64 -1 (*.f64 y z)) (+.f64 (*.f64 y x) z))
(+.f64 (*.f64 y x) (+.f64 z (*.f64 y (neg.f64 z))))
(+.f64 (*.f64 y (neg.f64 z)) (+.f64 (*.f64 y x) z))
(+.f64 z (*.f64 y (+.f64 x (neg.f64 z))))
(+.f64 (*.f64 -1 (*.f64 y z)) (+.f64 (*.f64 y x) z))
(+.f64 (*.f64 y x) (+.f64 z (*.f64 y (neg.f64 z))))
(+.f64 (*.f64 y (neg.f64 z)) (+.f64 (*.f64 y x) z))
(+.f64 z (*.f64 y (+.f64 x (neg.f64 z))))
(*.f64 y x)
(+.f64 (*.f64 -1 (*.f64 y z)) (+.f64 (*.f64 y x) z))
(+.f64 (*.f64 y x) (+.f64 z (*.f64 y (neg.f64 z))))
(+.f64 (*.f64 y (neg.f64 z)) (+.f64 (*.f64 y x) z))
(+.f64 z (*.f64 y (+.f64 x (neg.f64 z))))
(+.f64 (*.f64 -1 (*.f64 y z)) (+.f64 (*.f64 y x) z))
(+.f64 (*.f64 y x) (+.f64 z (*.f64 y (neg.f64 z))))
(+.f64 (*.f64 y (neg.f64 z)) (+.f64 (*.f64 y x) z))
(+.f64 z (*.f64 y (+.f64 x (neg.f64 z))))
(+.f64 (*.f64 -1 (*.f64 y z)) (+.f64 (*.f64 y x) z))
(+.f64 (*.f64 y x) (+.f64 z (*.f64 y (neg.f64 z))))
(+.f64 (*.f64 y (neg.f64 z)) (+.f64 (*.f64 y x) z))
(+.f64 z (*.f64 y (+.f64 x (neg.f64 z))))
(-.f64 (+.f64 z (*.f64 y (+.f64 x (neg.f64 z)))) 0)
(+.f64 (*.f64 y x) (+.f64 z (*.f64 y (neg.f64 z))))
(+.f64 (*.f64 y (neg.f64 z)) (+.f64 (*.f64 y x) z))
(+.f64 z (*.f64 y (+.f64 x (neg.f64 z))))
(*.f64 (+.f64 z (*.f64 y (+.f64 x (neg.f64 z)))) 1)
(+.f64 (*.f64 y x) (+.f64 z (*.f64 y (neg.f64 z))))
(+.f64 (*.f64 y (neg.f64 z)) (+.f64 (*.f64 y x) z))
(+.f64 z (*.f64 y (+.f64 x (neg.f64 z))))
(*.f64 1 (+.f64 z (*.f64 y (+.f64 x (neg.f64 z)))))
(+.f64 (*.f64 y x) (+.f64 z (*.f64 y (neg.f64 z))))
(+.f64 (*.f64 y (neg.f64 z)) (+.f64 (*.f64 y x) z))
(+.f64 z (*.f64 y (+.f64 x (neg.f64 z))))
(*.f64 2 (*.f64 (+.f64 z (*.f64 y (+.f64 x (neg.f64 z)))) 1/2))
(+.f64 (*.f64 y x) (+.f64 z (*.f64 y (neg.f64 z))))
(+.f64 (*.f64 y (neg.f64 z)) (+.f64 (*.f64 y x) z))
(+.f64 z (*.f64 y (+.f64 x (neg.f64 z))))
(*.f64 (*.f64 (+.f64 z (*.f64 y (+.f64 x (neg.f64 z)))) 2) 1/2)
(+.f64 (*.f64 y x) (+.f64 z (*.f64 y (neg.f64 z))))
(+.f64 (*.f64 y (neg.f64 z)) (+.f64 (*.f64 y x) z))
(+.f64 z (*.f64 y (+.f64 x (neg.f64 z))))
(*.f64 4 (/.f64 (+.f64 z (*.f64 y (+.f64 x (neg.f64 z)))) 4))
(+.f64 (*.f64 y x) (+.f64 z (*.f64 y (neg.f64 z))))
(+.f64 (*.f64 y (neg.f64 z)) (+.f64 (*.f64 y x) z))
(+.f64 z (*.f64 y (+.f64 x (neg.f64 z))))
(*.f64 (*.f64 (+.f64 z (*.f64 y (+.f64 x (neg.f64 z)))) 4) 1/4)
(+.f64 (*.f64 y x) (+.f64 z (*.f64 y (neg.f64 z))))
(+.f64 (*.f64 y (neg.f64 z)) (+.f64 (*.f64 y x) z))
(+.f64 z (*.f64 y (+.f64 x (neg.f64 z))))
(*.f64 1/2 (*.f64 (+.f64 z (*.f64 y (+.f64 x (neg.f64 z)))) 2))
(+.f64 (*.f64 y x) (+.f64 z (*.f64 y (neg.f64 z))))
(+.f64 (*.f64 y (neg.f64 z)) (+.f64 (*.f64 y x) z))
(+.f64 z (*.f64 y (+.f64 x (neg.f64 z))))
(*.f64 1/2 (+.f64 (*.f64 y (*.f64 (+.f64 x (neg.f64 z)) 2)) (+.f64 z z)))
(*.f64 1/2 (+.f64 (*.f64 (+.f64 x (neg.f64 z)) (*.f64 y 2)) (+.f64 z z)))
(*.f64 1/2 (+.f64 z (+.f64 z (*.f64 y (*.f64 (+.f64 x (neg.f64 z)) 2)))))
(*.f64 (*.f64 (+.f64 z (*.f64 y (+.f64 x (neg.f64 z)))) 1/2) 2)
(+.f64 (*.f64 y x) (+.f64 z (*.f64 y (neg.f64 z))))
(+.f64 (*.f64 y (neg.f64 z)) (+.f64 (*.f64 y x) z))
(+.f64 z (*.f64 y (+.f64 x (neg.f64 z))))
(*.f64 1/4 (*.f64 (+.f64 z (*.f64 y (+.f64 x (neg.f64 z)))) 4))
(+.f64 (*.f64 y x) (+.f64 z (*.f64 y (neg.f64 z))))
(+.f64 (*.f64 y (neg.f64 z)) (+.f64 (*.f64 y x) z))
(+.f64 z (*.f64 y (+.f64 x (neg.f64 z))))
(*.f64 (/.f64 (+.f64 z (*.f64 y (+.f64 x (neg.f64 z)))) 4) 4)
(+.f64 (*.f64 y x) (+.f64 z (*.f64 y (neg.f64 z))))
(+.f64 (*.f64 y (neg.f64 z)) (+.f64 (*.f64 y x) z))
(+.f64 z (*.f64 y (+.f64 x (neg.f64 z))))
(*.f64 (+.f64 (*.f64 y (*.f64 (+.f64 x (neg.f64 z)) 2)) (+.f64 z z)) 1/2)
(*.f64 1/2 (+.f64 (*.f64 y (*.f64 (+.f64 x (neg.f64 z)) 2)) (+.f64 z z)))
(*.f64 1/2 (+.f64 (*.f64 (+.f64 x (neg.f64 z)) (*.f64 y 2)) (+.f64 z z)))
(*.f64 1/2 (+.f64 z (+.f64 z (*.f64 y (*.f64 (+.f64 x (neg.f64 z)) 2)))))
(/.f64 (+.f64 z (*.f64 y (+.f64 x (neg.f64 z)))) 1)
(+.f64 (*.f64 y x) (+.f64 z (*.f64 y (neg.f64 z))))
(+.f64 (*.f64 y (neg.f64 z)) (+.f64 (*.f64 y x) z))
(+.f64 z (*.f64 y (+.f64 x (neg.f64 z))))
(/.f64 (*.f64 (+.f64 z (*.f64 y (+.f64 x (neg.f64 z)))) 2) 2)
(+.f64 (*.f64 y x) (+.f64 z (*.f64 y (neg.f64 z))))
(+.f64 (*.f64 y (neg.f64 z)) (+.f64 (*.f64 y x) z))
(+.f64 z (*.f64 y (+.f64 x (neg.f64 z))))
(/.f64 (*.f64 (+.f64 z (*.f64 y (+.f64 x (neg.f64 z)))) 4) 4)
(+.f64 (*.f64 y x) (+.f64 z (*.f64 y (neg.f64 z))))
(+.f64 (*.f64 y (neg.f64 z)) (+.f64 (*.f64 y x) z))
(+.f64 z (*.f64 y (+.f64 x (neg.f64 z))))
(/.f64 (*.f64 (+.f64 z (*.f64 y (+.f64 x (neg.f64 z)))) 8) 8)
(+.f64 (*.f64 y x) (+.f64 z (*.f64 y (neg.f64 z))))
(+.f64 (*.f64 y (neg.f64 z)) (+.f64 (*.f64 y x) z))
(+.f64 z (*.f64 y (+.f64 x (neg.f64 z))))
(/.f64 (*.f64 2 (*.f64 (+.f64 z (*.f64 y (+.f64 x (neg.f64 z)))) 8)) 16)
(+.f64 (*.f64 y x) (+.f64 z (*.f64 y (neg.f64 z))))
(+.f64 (*.f64 y (neg.f64 z)) (+.f64 (*.f64 y x) z))
(+.f64 z (*.f64 y (+.f64 x (neg.f64 z))))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 z (*.f64 y (+.f64 x (neg.f64 z)))) 8))) 32)
(+.f64 (*.f64 y x) (+.f64 z (*.f64 y (neg.f64 z))))
(+.f64 (*.f64 y (neg.f64 z)) (+.f64 (*.f64 y x) z))
(+.f64 z (*.f64 y (+.f64 x (neg.f64 z))))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 z (*.f64 y (+.f64 x (neg.f64 z)))) 8)))) 64)
(+.f64 (*.f64 y x) (+.f64 z (*.f64 y (neg.f64 z))))
(+.f64 (*.f64 y (neg.f64 z)) (+.f64 (*.f64 y x) z))
(+.f64 z (*.f64 y (+.f64 x (neg.f64 z))))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 z (*.f64 y (+.f64 x (neg.f64 z)))) 8))))) 128)
(+.f64 (*.f64 y x) (+.f64 z (*.f64 y (neg.f64 z))))
(+.f64 (*.f64 y (neg.f64 z)) (+.f64 (*.f64 y x) z))
(+.f64 z (*.f64 y (+.f64 x (neg.f64 z))))
(pow.f64 (+.f64 z (*.f64 y (+.f64 x (neg.f64 z)))) 1)
(+.f64 (*.f64 y x) (+.f64 z (*.f64 y (neg.f64 z))))
(+.f64 (*.f64 y (neg.f64 z)) (+.f64 (*.f64 y x) z))
(+.f64 z (*.f64 y (+.f64 x (neg.f64 z))))

eval23.0ms (0.3%)

Compiler

Compiled 1536 to 714 computations (53.5% saved)

prune18.0ms (0.2%)

Pruning

6 alts after pruning (4 fresh and 2 done)

PrunedKeptTotal
New1253128
Fresh011
Picked101
Done123
Total1276133
Error
0.0b
Counts
133 → 6
Alt Table
Click to see full alt table
StatusErrorProgram
14.1b
(+.f64 z (*.f64 y x))
19.3b
(*.f64 z (-.f64 1 y))
49.0b
(*.f64 z (neg.f64 y))
30.4b
(*.f64 y (-.f64 x z))
43.8b
(*.f64 y x)
33.0b
z
Compiler

Compiled 41 to 28 computations (31.7% saved)

localize5.0ms (0.1%)

Local error

Found 1 expressions with local error:

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

Compiled 14 to 5 computations (64.3% saved)

series1.0ms (0%)

Counts
1 → 24
Calls

9 calls:

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

rewrite102.0ms (1.2%)

Algorithm
batch-egg-rewrite
Rules
1388×rational.json-1
1388×rational.json-2
1388×rational.json-3
1384×exponential.json-3
1384×rational.json-4
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0713
14513
210313
322313
441013
594313
6257013
7499313
8656813
Stop Event
node limit
Counts
1 → 23
Calls
Call 1
Inputs
(*.f64 y (-.f64 x z))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 y (-.f64 x z)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 y (-.f64 x z)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 -1 (-.f64 1 (*.f64 y (-.f64 z x))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 -1 (-.f64 1 (*.f64 (+.f64 y y) (*.f64 (-.f64 z x) 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 y (*.f64 (-.f64 x z) 1/2)) (*.f64 y (*.f64 (-.f64 x z) 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 y (-.f64 x z)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 0 (*.f64 y (-.f64 z x)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 0 (*.f64 (+.f64 y y) (*.f64 (-.f64 z x) 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 y (-.f64 z x)) (*.f64 y (*.f64 (-.f64 x z) -2)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 (+.f64 y y) (*.f64 (-.f64 z x) 1/2)) (*.f64 2 (*.f64 (+.f64 y y) (*.f64 (-.f64 z x) 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 y (-.f64 x z)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 y (*.f64 (-.f64 x z) 2)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 y (*.f64 (-.f64 x z) 4)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 y (*.f64 (-.f64 x z) 8)) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 y (*.f64 (-.f64 x z) 8))) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 y (*.f64 (-.f64 x z) 8)))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 y (-.f64 z x)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 y y) (*.f64 (-.f64 z x) 1/2)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 y (*.f64 (-.f64 x z) 8))))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 y (*.f64 (-.f64 x z) 8)))))) 128)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 y (-.f64 x z)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (*.f64 y (-.f64 z x)))))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (*.f64 (+.f64 y y) (*.f64 (-.f64 z x) 1/2)))))))

simplify154.0ms (1.8%)

Algorithm
egg-herbie
Rules
2562×rational.json-simplify-2
1362×rational.json-simplify-35
1182×rational.json-simplify-43
1148×rational.json-simplify-48
890×rational.json-simplify-1
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
070809
1173659
2345659
3809659
42803659
54532659
65184659
75524659
86316659
97825659
Stop Event
node limit
Counts
47 → 30
Calls
Call 1
Inputs
(*.f64 -1 (*.f64 y z))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z)))
(*.f64 y x)
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(*.f64 y x)
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(*.f64 y x)
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(*.f64 -1 (*.f64 y z))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z)))
(*.f64 -1 (*.f64 y z))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z)))
(+.f64 (*.f64 y (-.f64 x z)) 0)
(+.f64 0 (*.f64 y (-.f64 x z)))
(+.f64 -1 (-.f64 1 (*.f64 y (-.f64 z x))))
(+.f64 -1 (-.f64 1 (*.f64 (+.f64 y y) (*.f64 (-.f64 z x) 1/2))))
(+.f64 (*.f64 y (*.f64 (-.f64 x z) 1/2)) (*.f64 y (*.f64 (-.f64 x z) 1/2)))
(-.f64 (*.f64 y (-.f64 x z)) 0)
(-.f64 0 (*.f64 y (-.f64 z x)))
(-.f64 0 (*.f64 (+.f64 y y) (*.f64 (-.f64 z x) 1/2)))
(-.f64 (*.f64 y (-.f64 z x)) (*.f64 y (*.f64 (-.f64 x z) -2)))
(-.f64 (*.f64 (+.f64 y y) (*.f64 (-.f64 z x) 1/2)) (*.f64 2 (*.f64 (+.f64 y y) (*.f64 (-.f64 z x) 1/2))))
(/.f64 (*.f64 y (-.f64 x z)) 1)
(/.f64 (*.f64 y (*.f64 (-.f64 x z) 2)) 2)
(/.f64 (*.f64 y (*.f64 (-.f64 x z) 4)) 4)
(/.f64 (*.f64 y (*.f64 (-.f64 x z) 8)) 8)
(/.f64 (*.f64 2 (*.f64 y (*.f64 (-.f64 x z) 8))) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 y (*.f64 (-.f64 x z) 8)))) 32)
(/.f64 (*.f64 y (-.f64 z x)) -1)
(/.f64 (*.f64 (+.f64 y y) (*.f64 (-.f64 z x) 1/2)) -1)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 y (*.f64 (-.f64 x z) 8))))) 64)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 y (*.f64 (-.f64 x z) 8)))))) 128)
(pow.f64 (*.f64 y (-.f64 x z)) 1)
(neg.f64 (*.f64 y (-.f64 z x)))
(neg.f64 (*.f64 (+.f64 y y) (*.f64 (-.f64 z x) 1/2)))
Outputs
(*.f64 -1 (*.f64 y z))
(*.f64 y (neg.f64 z))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z)))
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(*.f64 y (+.f64 x (neg.f64 z)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z)))
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(*.f64 y (+.f64 x (neg.f64 z)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z)))
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(*.f64 y (+.f64 x (neg.f64 z)))
(*.f64 y x)
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(*.f64 y (+.f64 x (neg.f64 z)))
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(*.f64 y (+.f64 x (neg.f64 z)))
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(*.f64 y (+.f64 x (neg.f64 z)))
(*.f64 y x)
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(*.f64 y (+.f64 x (neg.f64 z)))
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(*.f64 y (+.f64 x (neg.f64 z)))
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(*.f64 y (+.f64 x (neg.f64 z)))
(*.f64 y x)
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(*.f64 y (+.f64 x (neg.f64 z)))
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(*.f64 y (+.f64 x (neg.f64 z)))
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(*.f64 y (+.f64 x (neg.f64 z)))
(*.f64 -1 (*.f64 y z))
(*.f64 y (neg.f64 z))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z)))
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(*.f64 y (+.f64 x (neg.f64 z)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z)))
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(*.f64 y (+.f64 x (neg.f64 z)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z)))
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(*.f64 y (+.f64 x (neg.f64 z)))
(*.f64 -1 (*.f64 y z))
(*.f64 y (neg.f64 z))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z)))
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(*.f64 y (+.f64 x (neg.f64 z)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z)))
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(*.f64 y (+.f64 x (neg.f64 z)))
(+.f64 (*.f64 y x) (*.f64 -1 (*.f64 y z)))
(+.f64 (*.f64 -1 (*.f64 y z)) (*.f64 y x))
(*.f64 y (+.f64 x (neg.f64 z)))
(+.f64 (*.f64 y (-.f64 x z)) 0)
(*.f64 y (-.f64 x z))
(+.f64 0 (*.f64 y (-.f64 x z)))
(*.f64 y (-.f64 x z))
(+.f64 -1 (-.f64 1 (*.f64 y (-.f64 z x))))
(*.f64 y (-.f64 x z))
(+.f64 -1 (-.f64 1 (*.f64 (+.f64 y y) (*.f64 (-.f64 z x) 1/2))))
(*.f64 y (-.f64 x z))
(+.f64 (*.f64 y (*.f64 (-.f64 x z) 1/2)) (*.f64 y (*.f64 (-.f64 x z) 1/2)))
(*.f64 y (-.f64 x z))
(-.f64 (*.f64 y (-.f64 x z)) 0)
(*.f64 y (-.f64 x z))
(-.f64 0 (*.f64 y (-.f64 z x)))
(*.f64 y (-.f64 x z))
(-.f64 0 (*.f64 (+.f64 y y) (*.f64 (-.f64 z x) 1/2)))
(*.f64 y (-.f64 x z))
(-.f64 (*.f64 y (-.f64 z x)) (*.f64 y (*.f64 (-.f64 x z) -2)))
(*.f64 y (-.f64 x z))
(-.f64 (*.f64 (+.f64 y y) (*.f64 (-.f64 z x) 1/2)) (*.f64 2 (*.f64 (+.f64 y y) (*.f64 (-.f64 z x) 1/2))))
(*.f64 y (-.f64 x z))
(/.f64 (*.f64 y (-.f64 x z)) 1)
(*.f64 y (-.f64 x z))
(/.f64 (*.f64 y (*.f64 (-.f64 x z) 2)) 2)
(*.f64 y (-.f64 x z))
(/.f64 (*.f64 y (*.f64 (-.f64 x z) 4)) 4)
(*.f64 y (-.f64 x z))
(/.f64 (*.f64 y (*.f64 (-.f64 x z) 8)) 8)
(*.f64 y (-.f64 x z))
(/.f64 (*.f64 2 (*.f64 y (*.f64 (-.f64 x z) 8))) 16)
(*.f64 y (-.f64 x z))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 y (*.f64 (-.f64 x z) 8)))) 32)
(*.f64 y (-.f64 x z))
(/.f64 (*.f64 y (-.f64 z x)) -1)
(*.f64 y (-.f64 x z))
(/.f64 (*.f64 (+.f64 y y) (*.f64 (-.f64 z x) 1/2)) -1)
(*.f64 y (-.f64 x z))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 y (*.f64 (-.f64 x z) 8))))) 64)
(*.f64 y (-.f64 x z))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 y (*.f64 (-.f64 x z) 8)))))) 128)
(*.f64 y (-.f64 x z))
(pow.f64 (*.f64 y (-.f64 x z)) 1)
(*.f64 y (-.f64 x z))
(neg.f64 (*.f64 y (-.f64 z x)))
(*.f64 y (-.f64 x z))
(neg.f64 (*.f64 (+.f64 y y) (*.f64 (-.f64 z x) 1/2)))
(*.f64 y (-.f64 x z))

localize5.0ms (0.1%)

Compiler

Compiled 11 to 5 computations (54.5% saved)

localize5.0ms (0.1%)

Local error

Found 1 expressions with local error:

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

Compiled 14 to 5 computations (64.3% saved)

series1.0ms (0%)

Counts
1 → 36
Calls

9 calls:

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

rewrite185.0ms (2.1%)

Algorithm
batch-egg-rewrite
Rules
1524×rational.json-simplify-35
1424×rational.json-simplify-1
1386×exponential.json-3
1386×rational.json-1
1386×rational.json-2
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0713
14613
210213
321413
439713
589613
6231213
7417413
8535813
9686913
10768013
11768013
Stop Event
node limit
Counts
1 → 23
Calls
Call 1
Inputs
(+.f64 z (*.f64 y x))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 z (*.f64 y x)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 z (*.f64 y x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (+.f64 z (*.f64 y x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 (+.f64 z (*.f64 y x)) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 z (*.f64 y x)) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (*.f64 (+.f64 z (*.f64 y x)) 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 z (*.f64 y x)) 4) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 z (*.f64 y x)) 8) 1/8)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 (+.f64 z (*.f64 y x)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 z (*.f64 y x)) 1/2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 (+.f64 z (*.f64 y x)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 z (*.f64 y x)) 1/4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/8 (*.f64 (+.f64 z (*.f64 y x)) 8))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 z (*.f64 y x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 z (*.f64 y x)) 2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 z (*.f64 y x)) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 z (*.f64 y x)) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (+.f64 z (*.f64 y x)) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 z (*.f64 y x)) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 z (*.f64 y x)) 8)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 z (*.f64 y x)) 8))))) 128)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 z (*.f64 y x)) 8)))))) 256)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (+.f64 z (*.f64 y x)) 1)))))

simplify797.0ms (9.3%)

Algorithm
egg-herbie
Rules
5824×rational.json-simplify-51
3524×rational.json-simplify-35
1364×rational.json-simplify-49
1152×rational.json-simplify-2
1114×rational.json-simplify-1
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
054689
1121689
2420689
31176689
41869689
52750689
63233689
73307689
83355689
93387689
103419689
113451689
123483689
133515689
143547689
153579689
163611689
173643689
183675689
194583689
204842689
214935689
225024689
235111689
245197689
255410689
265410689
275496689
285582689
295668689
305754689
315840689
325926689
336012689
346098689
356184689
Stop Event
node limit
Counts
59 → 26
Calls
Call 1
Inputs
(*.f64 y x)
(+.f64 (*.f64 y x) z)
(+.f64 (*.f64 y x) z)
(+.f64 (*.f64 y x) z)
z
(+.f64 (*.f64 y x) z)
(+.f64 (*.f64 y x) z)
(+.f64 (*.f64 y x) z)
z
(+.f64 (*.f64 y x) z)
(+.f64 (*.f64 y x) z)
(+.f64 (*.f64 y x) z)
z
(+.f64 (*.f64 y x) z)
(+.f64 (*.f64 y x) z)
(+.f64 (*.f64 y x) z)
(*.f64 y x)
(+.f64 (*.f64 y x) z)
(+.f64 (*.f64 y x) z)
(+.f64 (*.f64 y x) z)
(*.f64 y x)
(+.f64 (*.f64 y x) z)
(+.f64 (*.f64 y x) z)
(+.f64 (*.f64 y x) z)
z
(+.f64 (*.f64 y x) z)
(+.f64 (*.f64 y x) z)
(+.f64 (*.f64 y x) z)
(*.f64 y x)
(+.f64 (*.f64 y x) z)
(+.f64 (*.f64 y x) z)
(+.f64 (*.f64 y x) z)
(*.f64 y x)
(+.f64 (*.f64 y x) z)
(+.f64 (*.f64 y x) z)
(+.f64 (*.f64 y x) z)
(-.f64 (+.f64 z (*.f64 y x)) 0)
(*.f64 (+.f64 z (*.f64 y x)) 1)
(*.f64 1 (+.f64 z (*.f64 y x)))
(*.f64 2 (*.f64 (+.f64 z (*.f64 y x)) 1/2))
(*.f64 (*.f64 (+.f64 z (*.f64 y x)) 2) 1/2)
(*.f64 4 (*.f64 (+.f64 z (*.f64 y x)) 1/4))
(*.f64 (*.f64 (+.f64 z (*.f64 y x)) 4) 1/4)
(*.f64 (*.f64 (+.f64 z (*.f64 y x)) 8) 1/8)
(*.f64 1/2 (*.f64 (+.f64 z (*.f64 y x)) 2))
(*.f64 (*.f64 (+.f64 z (*.f64 y x)) 1/2) 2)
(*.f64 1/4 (*.f64 (+.f64 z (*.f64 y x)) 4))
(*.f64 (*.f64 (+.f64 z (*.f64 y x)) 1/4) 4)
(*.f64 1/8 (*.f64 (+.f64 z (*.f64 y x)) 8))
(/.f64 (+.f64 z (*.f64 y x)) 1)
(/.f64 (*.f64 (+.f64 z (*.f64 y x)) 2) 2)
(/.f64 (*.f64 (+.f64 z (*.f64 y x)) 4) 4)
(/.f64 (*.f64 (+.f64 z (*.f64 y x)) 8) 8)
(/.f64 (*.f64 2 (*.f64 (+.f64 z (*.f64 y x)) 8)) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 z (*.f64 y x)) 8))) 32)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 z (*.f64 y x)) 8)))) 64)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 z (*.f64 y x)) 8))))) 128)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 z (*.f64 y x)) 8)))))) 256)
(pow.f64 (+.f64 z (*.f64 y x)) 1)
Outputs
(*.f64 y x)
(+.f64 (*.f64 y x) z)
(+.f64 (*.f64 y x) z)
(+.f64 (*.f64 y x) z)
z
(+.f64 (*.f64 y x) z)
(+.f64 (*.f64 y x) z)
(+.f64 (*.f64 y x) z)
z
(+.f64 (*.f64 y x) z)
(+.f64 (*.f64 y x) z)
(+.f64 (*.f64 y x) z)
z
(+.f64 (*.f64 y x) z)
(+.f64 (*.f64 y x) z)
(+.f64 (*.f64 y x) z)
(*.f64 y x)
(+.f64 (*.f64 y x) z)
(+.f64 (*.f64 y x) z)
(+.f64 (*.f64 y x) z)
(*.f64 y x)
(+.f64 (*.f64 y x) z)
(+.f64 (*.f64 y x) z)
(+.f64 (*.f64 y x) z)
z
(+.f64 (*.f64 y x) z)
(+.f64 (*.f64 y x) z)
(+.f64 (*.f64 y x) z)
(*.f64 y x)
(+.f64 (*.f64 y x) z)
(+.f64 (*.f64 y x) z)
(+.f64 (*.f64 y x) z)
(*.f64 y x)
(+.f64 (*.f64 y x) z)
(+.f64 (*.f64 y x) z)
(+.f64 (*.f64 y x) z)
(-.f64 (+.f64 z (*.f64 y x)) 0)
(+.f64 (*.f64 y x) z)
(*.f64 (+.f64 z (*.f64 y x)) 1)
(+.f64 (*.f64 y x) z)
(*.f64 1 (+.f64 z (*.f64 y x)))
(+.f64 (*.f64 y x) z)
(*.f64 2 (*.f64 (+.f64 z (*.f64 y x)) 1/2))
(+.f64 (*.f64 y x) z)
(*.f64 (*.f64 (+.f64 z (*.f64 y x)) 2) 1/2)
(+.f64 (*.f64 y x) z)
(*.f64 4 (*.f64 (+.f64 z (*.f64 y x)) 1/4))
(+.f64 (*.f64 y x) z)
(*.f64 (*.f64 (+.f64 z (*.f64 y x)) 4) 1/4)
(+.f64 (*.f64 y x) z)
(*.f64 (*.f64 (+.f64 z (*.f64 y x)) 8) 1/8)
(+.f64 (*.f64 y x) z)
(*.f64 1/2 (*.f64 (+.f64 z (*.f64 y x)) 2))
(+.f64 (*.f64 y x) z)
(*.f64 (*.f64 (+.f64 z (*.f64 y x)) 1/2) 2)
(+.f64 (*.f64 y x) z)
(*.f64 1/4 (*.f64 (+.f64 z (*.f64 y x)) 4))
(+.f64 (*.f64 y x) z)
(*.f64 (*.f64 (+.f64 z (*.f64 y x)) 1/4) 4)
(+.f64 (*.f64 y x) z)
(*.f64 1/8 (*.f64 (+.f64 z (*.f64 y x)) 8))
(+.f64 (*.f64 y x) z)
(/.f64 (+.f64 z (*.f64 y x)) 1)
(+.f64 (*.f64 y x) z)
(/.f64 (*.f64 (+.f64 z (*.f64 y x)) 2) 2)
(+.f64 (*.f64 y x) z)
(/.f64 (*.f64 (+.f64 z (*.f64 y x)) 4) 4)
(+.f64 (*.f64 y x) z)
(/.f64 (*.f64 (+.f64 z (*.f64 y x)) 8) 8)
(+.f64 (*.f64 y x) z)
(/.f64 (*.f64 2 (*.f64 (+.f64 z (*.f64 y x)) 8)) 16)
(+.f64 (*.f64 y x) z)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 z (*.f64 y x)) 8))) 32)
(+.f64 (*.f64 y x) z)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 z (*.f64 y x)) 8)))) 64)
(+.f64 (*.f64 y x) z)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 z (*.f64 y x)) 8))))) 128)
(+.f64 (*.f64 y x) z)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 z (*.f64 y x)) 8)))))) 256)
(+.f64 (*.f64 y x) z)
(pow.f64 (+.f64 z (*.f64 y x)) 1)
(+.f64 (*.f64 y x) z)

eval182.0ms (2.1%)

Compiler

Compiled 521 to 251 computations (51.8% saved)

prune8.0ms (0.1%)

Pruning

6 alts after pruning (1 fresh and 5 done)

PrunedKeptTotal
New56056
Fresh011
Picked011
Done044
Total56662
Error
0.0b
Counts
62 → 6
Alt Table
Click to see full alt table
StatusErrorProgram
14.1b
(+.f64 z (*.f64 y x))
19.3b
(*.f64 z (-.f64 1 y))
49.0b
(*.f64 z (neg.f64 y))
30.4b
(*.f64 y (-.f64 x z))
43.8b
(*.f64 y x)
33.0b
z
Compiler

Compiled 41 to 28 computations (31.7% saved)

eval0.0ms (0%)

Compiler

Compiled 3 to 3 computations (0% saved)

prune2.0ms (0%)

Pruning

6 alts after pruning (1 fresh and 5 done)

PrunedKeptTotal
New000
Fresh011
Picked000
Done055
Total066
Error
0.0b
Counts
6 → 6
Alt Table
Click to see full alt table
StatusErrorProgram
14.1b
(+.f64 z (*.f64 y x))
19.3b
(*.f64 z (-.f64 1 y))
49.0b
(*.f64 z (neg.f64 y))
30.4b
(*.f64 y (-.f64 x z))
43.8b
(*.f64 y x)
33.0b
z
Compiler

Compiled 41 to 28 computations (31.7% saved)

regimes158.0ms (1.8%)

Counts
9 → 1
Calls
Call 1
Inputs
z
(*.f64 y x)
(*.f64 z (neg.f64 y))
(*.f64 y (-.f64 x z))
(*.f64 z (-.f64 1 y))
(+.f64 z (*.f64 y x))
(*.f64 y (+.f64 x (neg.f64 z)))
(+.f64 z (*.f64 y (+.f64 x (neg.f64 z))))
(+.f64 (*.f64 x y) (*.f64 z (-.f64 1 y)))
Outputs
(+.f64 z (*.f64 y (+.f64 x (neg.f64 z))))
Calls

4 calls:

139.0ms
(+.f64 (*.f64 x y) (*.f64 z (-.f64 1 y)))
6.0ms
x
6.0ms
z
6.0ms
y
Results
ErrorSegmentsBranch
0.0b1x
0.0b1y
0.0b1z
0.0b1(+.f64 (*.f64 x y) (*.f64 z (-.f64 1 y)))
Compiler

Compiled 73 to 38 computations (47.9% saved)

regimes283.0ms (3.3%)

Counts
7 → 3
Calls
Call 1
Inputs
z
(*.f64 y x)
(*.f64 z (neg.f64 y))
(*.f64 y (-.f64 x z))
(*.f64 z (-.f64 1 y))
(+.f64 z (*.f64 y x))
(*.f64 y (+.f64 x (neg.f64 z)))
Outputs
(*.f64 y (-.f64 x z))
(+.f64 z (*.f64 y x))
(*.f64 y (-.f64 x z))
Calls

3 calls:

181.0ms
x
86.0ms
z
15.0ms
y
Results
ErrorSegmentsBranch
9.1b3x
1.0b3y
6.5b3z
Compiler

Compiled 44 to 24 computations (45.5% saved)

bsearch510.0ms (5.9%)

Algorithm
binary-search
Steps
TimeLeftRight
495.0ms
0.005435004672853423
15.187925365984942
15.0ms
-17125446338875.316
-1497564.1220553424
Results
507.0ms272×body256valid
0.0msbody256infinite
Compiler

Compiled 324 to 217 computations (33% saved)

regimes42.0ms (0.5%)

Counts
5 → 3
Calls
Call 1
Inputs
z
(*.f64 y x)
(*.f64 z (neg.f64 y))
(*.f64 y (-.f64 x z))
(*.f64 z (-.f64 1 y))
Outputs
(*.f64 y (-.f64 x z))
(*.f64 z (-.f64 1 y))
(*.f64 y (-.f64 x z))
Calls

3 calls:

16.0ms
z
13.0ms
y
12.0ms
x
Results
ErrorSegmentsBranch
16.4b2x
8.8b3y
9.2b3z
Compiler

Compiled 33 to 20 computations (39.4% saved)

bsearch23.0ms (0.3%)

Algorithm
binary-search
Steps
TimeLeftRight
13.0ms
22229685061.843113
5078583587945.699
10.0ms
-6.628146463061744e-17
-5.606741777361069e-18
Results
20.0ms208×body256valid
1.0msbody256infinite
Compiler

Compiled 252 to 182 computations (27.8% saved)

regimes327.0ms (3.8%)

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

3 calls:

145.0ms
z
94.0ms
x
87.0ms
y
Results
ErrorSegmentsBranch
20.7b12x
9.4b3y
14.9b9z
Compiler

Compiled 28 to 17 computations (39.3% saved)

bsearch77.0ms (0.9%)

Algorithm
binary-search
Steps
TimeLeftRight
67.0ms
6.380633327867485e-27
1.3114874735328386e-18
10.0ms
-6.628146463061744e-17
-5.606741777361069e-18
Results
75.0ms240×body256valid
Compiler

Compiled 228 to 163 computations (28.5% saved)

regimes173.0ms (2%)

Counts
3 → 4
Calls
Call 1
Inputs
z
(*.f64 y x)
(*.f64 z (neg.f64 y))
Outputs
(*.f64 y x)
(*.f64 z (neg.f64 y))
z
(*.f64 z (neg.f64 y))
Calls

3 calls:

86.0ms
y
66.0ms
x
19.0ms
z
Results
ErrorSegmentsBranch
27.7b6x
18.4b4y
21.9b6z
Compiler

Compiled 23 to 15 computations (34.8% saved)

bsearch42.0ms (0.5%)

Algorithm
binary-search
Steps
TimeLeftRight
14.0ms
0.005435004672853423
15.187925365984942
17.0ms
-1497564.1220553424
-0.00013386203356199541
10.0ms
-7.2098261606046e+75
-2.3876545645090056e+75
Results
36.0ms368×body256valid
2.0ms20×body256infinite
Compiler

Compiled 327 to 248 computations (24.2% saved)

regimes81.0ms (0.9%)

Accuracy

Total -39.3b remaining (-173.1%)

Threshold costs -39.3b (-173.1%)

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

3 calls:

60.0ms
z
11.0ms
x
10.0ms
y
Results
ErrorSegmentsBranch
28.9b4x
22.7b3y
23.2b3z
Compiler

Compiled 19 to 13 computations (31.6% saved)

bsearch26.0ms (0.3%)

Algorithm
binary-search
Steps
TimeLeftRight
16.0ms
6.380633327867485e-27
1.3114874735328386e-18
11.0ms
-6.628146463061744e-17
-5.606741777361069e-18
Results
24.0ms240×body256valid
Compiler

Compiled 198 to 148 computations (25.3% saved)

simplify5.0ms (0.1%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
052273
Stop Event
fuel
saturated
Calls
Call 1
Inputs
(+.f64 z (*.f64 y (+.f64 x (neg.f64 z))))
(if (<=.f64 y -1500000) (*.f64 y (-.f64 x z)) (if (<=.f64 y 1) (+.f64 z (*.f64 y x)) (*.f64 y (-.f64 x z))))
(if (<=.f64 y -2758407706096627/324518553658426726783156020576256) (*.f64 y (-.f64 x z)) (if (<=.f64 y 23000000000) (*.f64 z (-.f64 1 y)) (*.f64 y (-.f64 x z))))
(if (<=.f64 y -8924260225606735/162259276829213363391578010288128) (*.f64 y (-.f64 x z)) (if (<=.f64 y 5399988732876221/83076749736557242056487941267521536) z (*.f64 y (-.f64 x z))))
(if (<=.f64 y -3999999999999999706159124705924795694035212860797871549050585679121449222144) (*.f64 y x) (if (<=.f64 y -1) (*.f64 z (neg.f64 y)) (if (<=.f64 y 1) z (*.f64 z (neg.f64 y)))))
(if (<=.f64 y -4867778304876401/162259276829213363391578010288128) (*.f64 y x) (if (<=.f64 y 6805647338418769/85070591730234615865843651857942052864) z (*.f64 y x)))
z
Outputs
(+.f64 z (*.f64 y (+.f64 x (neg.f64 z))))
(if (<=.f64 y -1500000) (*.f64 y (-.f64 x z)) (if (<=.f64 y 1) (+.f64 z (*.f64 y x)) (*.f64 y (-.f64 x z))))
(if (<=.f64 y -2758407706096627/324518553658426726783156020576256) (*.f64 y (-.f64 x z)) (if (<=.f64 y 23000000000) (*.f64 z (-.f64 1 y)) (*.f64 y (-.f64 x z))))
(if (<=.f64 y -8924260225606735/162259276829213363391578010288128) (*.f64 y (-.f64 x z)) (if (<=.f64 y 5399988732876221/83076749736557242056487941267521536) z (*.f64 y (-.f64 x z))))
(if (<=.f64 y -3999999999999999706159124705924795694035212860797871549050585679121449222144) (*.f64 y x) (if (<=.f64 y -1) (*.f64 z (neg.f64 y)) (if (<=.f64 y 1) z (*.f64 z (neg.f64 y)))))
(if (<=.f64 y -4867778304876401/162259276829213363391578010288128) (*.f64 y x) (if (<=.f64 y 6805647338418769/85070591730234615865843651857942052864) z (*.f64 y x)))
z
Compiler

Compiled 134 to 73 computations (45.5% saved)

soundness632.0ms (7.3%)

Algorithm
egg-herbie
Rules
3216×rational.json-simplify-35
2674×rational.json-simplify-41
1772×rational.json-simplify-2
678×rational.json-simplify-51
526×exponential.json-simplify-26
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0881665
12091613
25071613
313931613
427491613
535141613
638421613
740971613
842711613
944161613
1066111613
1169541613
1270431613
1371141613
1471581613
1571951613
1672121613
1773431613
1874701613
1976161613
2077431613
2178701613
2279971613
Stop Event
node limit
Compiler

Compiled 38 to 22 computations (42.1% saved)

end55.0ms (0.6%)

Compiler

Compiled 116 to 49 computations (57.8% saved)

Profiling

Loading profile data...