Details

Time bar (total: 7.5s)

analyze189.0ms (2.5%)

Algorithm
search
Search
TrueOtherFalseIter
0%99.9%0.1%0
0%99.9%0.1%1
0%99.9%0.1%2
0%99.9%0.1%3
0%99.9%0.1%4
0%99.9%0.1%5
0%99.9%0.1%6
12.5%87.4%0.1%7
18.7%81.1%0.1%8
25%71.8%3.3%9
34.3%57.7%7.9%10
41.3%50.3%8.3%11
46.8%42.3%10.9%12
Compiler

Compiled 13 to 10 computations (23.1% saved)

sample954.0ms (12.7%)

Results
834.0ms8256×body256valid
106.0ms1030×body256invalid

preprocess253.0ms (3.4%)

Algorithm
egg-herbie
Rules
2243×fma-neg_binary64
416×unsub-neg_binary64
263×associate--r+_binary64
226×distribute-rgt-in_binary64
214×sub-neg_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
02052
15552
214444
352144
4165344
5302844
6369744
7380344
8384144
9385744
10404544
11412644
12417244
13423944
14428944
15428944
16634344
17634344
033
Stop Event
saturated
saturated
Calls
Call 1
Inputs
0
1
2
Outputs
0
1
2
Call 2
Inputs
(*.f64 x (-.f64 1 (*.f64 (-.f64 1 y) z)))
(*.f64 y (-.f64 1 (*.f64 (-.f64 1 x) z)))
(*.f64 z (-.f64 1 (*.f64 (-.f64 1 y) x)))
(*.f64 x (-.f64 1 (*.f64 (-.f64 1 z) y)))
Outputs
(*.f64 x (-.f64 1 (*.f64 (-.f64 1 y) z)))
(*.f64 x (fma.f64 z (+.f64 y -1) 1))
(*.f64 x (fma.f64 y z (-.f64 1 z)))
(*.f64 y (-.f64 1 (*.f64 (-.f64 1 x) z)))
(*.f64 y (-.f64 1 (*.f64 z (-.f64 1 x))))
(*.f64 y (fma.f64 z (+.f64 x -1) 1))
(*.f64 y (fma.f64 x z (-.f64 1 z)))
(*.f64 z (-.f64 1 (*.f64 (-.f64 1 y) x)))
(*.f64 z (-.f64 1 (*.f64 x (-.f64 1 y))))
(*.f64 z (fma.f64 x (+.f64 y -1) 1))
(fma.f64 z (-.f64 (*.f64 x y) x) z)
(*.f64 z (fma.f64 x y (-.f64 1 x)))
(*.f64 x (-.f64 1 (*.f64 (-.f64 1 z) y)))
(*.f64 x (-.f64 1 (*.f64 y (-.f64 1 z))))
(*.f64 x (fma.f64 y (+.f64 z -1) 1))
(*.f64 x (fma.f64 y z (-.f64 1 y)))
Compiler

Compiled 15 to 12 computations (20% saved)

simplify58.0ms (0.8%)

Algorithm
egg-herbie
Rules
710×fma-def_binary64
419×fma-neg_binary64
203×distribute-rgt-in_binary64
160×distribute-lft-in_binary64
141×unsub-neg_binary64
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
0913
12013
24911
316111
449311
5114911
6189511
7259811
8270811
9270811
Stop Event
saturated
Counts
1 → 2
Calls
Call 1
Inputs
(*.f64 x (-.f64 1 (*.f64 (-.f64 1 y) z)))
Outputs
(*.f64 x (-.f64 1 (*.f64 (-.f64 1 y) z)))
(*.f64 x (fma.f64 z (+.f64 y -1) 1))
(fma.f64 x (fma.f64 y z (neg.f64 z)) x)

eval1.0ms (0%)

Compiler

Compiled 20 to 12 computations (40% saved)

prune1.0ms (0%)

Pruning

3 alts after pruning (3 fresh and 0 done)

PrunedKeptTotal
New022
Fresh011
Picked000
Done000
Total033
Error
3.6b
Counts
3 → 2
Alt Table
Click to see full alt table
StatusErrorProgram
3.6b
(fma.f64 x (fma.f64 y z (neg.f64 z)) x)
3.6b
(*.f64 x (-.f64 1 (*.f64 (-.f64 1 y) z)))
Compiler

Compiled 23 to 15 computations (34.8% saved)

localize13.0ms (0.2%)

Local error

Found 2 expressions with local error:

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

Compiled 31 to 20 computations (35.5% saved)

series8.0ms (0.1%)

Counts
2 → 60
Calls

15 calls:

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

rewrite70.0ms (0.9%)

Algorithm
batch-egg-rewrite
Rules
555×prod-diff_binary64
479×log-prod_binary64
360×exp-prod_binary64
300×pow-prod-down_binary64
259×pow2_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0920
119320
2255920
Stop Event
node limit
Counts
2 → 84
Calls
Call 1
Inputs
(*.f64 x (-.f64 1 (*.f64 (-.f64 1 y) z)))
(*.f64 (-.f64 1 y) z)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 x (*.f64 (*.f64 (-.f64 1 y) (neg.f64 z)) x))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 x (*.f64 x (*.f64 (-.f64 1 y) (neg.f64 z))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 x (-.f64 1 (*.f64 (-.f64 1 y) z))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (pow.f64 (exp.f64 x) (-.f64 1 (*.f64 (-.f64 1 y) z)))) 2)) (log.f64 (cbrt.f64 (pow.f64 (exp.f64 x) (-.f64 1 (*.f64 (-.f64 1 y) z))))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (pow.f64 (exp.f64 x) (-.f64 1 (*.f64 (-.f64 1 y) z))))) (log.f64 (sqrt.f64 (pow.f64 (exp.f64 x) (-.f64 1 (*.f64 (-.f64 1 y) z))))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (*.f64 x (-.f64 1 (*.f64 (-.f64 1 y) z))))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 1 (pow.f64 (*.f64 (-.f64 1 y) z) 3)) x) (fma.f64 (*.f64 (-.f64 1 y) z) (fma.f64 (-.f64 1 y) z 1) 1))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 1 (pow.f64 (*.f64 (-.f64 1 y) z) 2)) x) (fma.f64 (-.f64 1 y) z 1))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (-.f64 1 (pow.f64 (*.f64 (-.f64 1 y) z) 3))) (fma.f64 (*.f64 (-.f64 1 y) z) (fma.f64 (-.f64 1 y) z 1) 1))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (-.f64 1 (pow.f64 (*.f64 (-.f64 1 y) z) 2))) (fma.f64 (-.f64 1 y) z 1))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 x (-.f64 1 (*.f64 (-.f64 1 y) z))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (E.f64) (log.f64 (*.f64 x (-.f64 1 (*.f64 (-.f64 1 y) z)))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 x (-.f64 1 (*.f64 (-.f64 1 y) z))) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 x (-.f64 1 (*.f64 (-.f64 1 y) z))) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 x (-.f64 1 (*.f64 (-.f64 1 y) z)))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 x (-.f64 1 (*.f64 (-.f64 1 y) z)))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (log.f64 (*.f64 x (-.f64 1 (*.f64 (-.f64 1 y) z))))) 2)) (cbrt.f64 (log.f64 (*.f64 x (-.f64 1 (*.f64 (-.f64 1 y) z))))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (sqrt.f64 (log.f64 (*.f64 x (-.f64 1 (*.f64 (-.f64 1 y) z)))))) (sqrt.f64 (log.f64 (*.f64 x (-.f64 1 (*.f64 (-.f64 1 y) z))))))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 x (-.f64 1 (*.f64 (-.f64 1 y) z))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 x) (-.f64 1 (*.f64 (-.f64 1 y) z))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (*.f64 x (-.f64 1 (*.f64 (-.f64 1 y) z))))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 x (-.f64 1 (*.f64 (-.f64 1 y) z))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 x (-.f64 1 (*.f64 (-.f64 1 y) z)))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 x (-.f64 1 (*.f64 (-.f64 1 y) z)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 x (-.f64 1 (*.f64 (-.f64 1 y) z)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (*.f64 x (-.f64 1 (*.f64 (-.f64 1 y) z)))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 3 (log.f64 (*.f64 x (-.f64 1 (*.f64 (-.f64 1 y) z))))) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (cbrt.f64 (*.f64 x (-.f64 1 (*.f64 (-.f64 1 y) z))))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (sqrt.f64 (*.f64 x (-.f64 1 (*.f64 (-.f64 1 y) z))))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (log.f64 (*.f64 x (-.f64 1 (*.f64 (-.f64 1 y) z)))) 1) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 x 1 (*.f64 (*.f64 (-.f64 1 y) (neg.f64 z)) x))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 x 1 (*.f64 x (*.f64 (-.f64 1 y) (neg.f64 z))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 x (*.f64 (*.f64 (-.f64 1 y) (neg.f64 z)) x))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 x (*.f64 x (*.f64 (-.f64 1 y) (neg.f64 z))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 x) (cbrt.f64 (*.f64 x x)) (*.f64 (*.f64 (-.f64 1 y) (neg.f64 z)) x))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 x) (cbrt.f64 (*.f64 x x)) (*.f64 x (*.f64 (-.f64 1 y) (neg.f64 z))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (*.f64 x x)) (cbrt.f64 x) (*.f64 (*.f64 (-.f64 1 y) (neg.f64 z)) x))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (*.f64 x x)) (cbrt.f64 x) (*.f64 x (*.f64 (-.f64 1 y) (neg.f64 z))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 x) (sqrt.f64 x) (*.f64 (*.f64 (-.f64 1 y) (neg.f64 z)) x))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 x) (sqrt.f64 x) (*.f64 x (*.f64 (-.f64 1 y) (neg.f64 z))))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 z (*.f64 (neg.f64 y) z))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 z (*.f64 z (neg.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 (-.f64 1 y) z))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (pow.f64 (exp.f64 z) (-.f64 1 y))) 2)) (log.f64 (cbrt.f64 (pow.f64 (exp.f64 z) (-.f64 1 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (pow.f64 (exp.f64 z) (-.f64 1 y)))) (log.f64 (sqrt.f64 (pow.f64 (exp.f64 z) (-.f64 1 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (fma.f64 (-.f64 1 y) z 1) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 1 (pow.f64 y 3)) z) (fma.f64 y (+.f64 1 y) 1))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 1 (*.f64 y y)) z) (+.f64 1 y))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 z (-.f64 1 (pow.f64 y 3))) (fma.f64 y (+.f64 1 y) 1))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 z (-.f64 1 (*.f64 y y))) (+.f64 1 y))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (-.f64 1 y) z) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (E.f64) (log.f64 (*.f64 (-.f64 1 y) z)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 (-.f64 1 y) z) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 (-.f64 1 y) z)) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 (-.f64 1 y) z)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 (-.f64 1 y) z) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (log.f64 (*.f64 (-.f64 1 y) z))) 2)) (cbrt.f64 (log.f64 (*.f64 (-.f64 1 y) z))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (sqrt.f64 (log.f64 (*.f64 (-.f64 1 y) z)))) (sqrt.f64 (log.f64 (*.f64 (-.f64 1 y) z))))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 (-.f64 1 y) z) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 z) (-.f64 1 y)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (*.f64 (-.f64 1 y) z))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 (-.f64 1 y) z) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 (-.f64 1 y) z)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 (-.f64 1 y) z)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 (-.f64 1 y) z)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (*.f64 (-.f64 1 y) z)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (cbrt.f64 (*.f64 (-.f64 1 y) z))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (sqrt.f64 (*.f64 (-.f64 1 y) z))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 3 (log.f64 (*.f64 (-.f64 1 y) z))) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (log.f64 (*.f64 (-.f64 1 y) z)) 1) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (log.f64 (*.f64 (-.f64 1 y) z)) 3) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 z (*.f64 (neg.f64 y) z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 z (*.f64 z (neg.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (fma.f64 (-.f64 1 y) z 1) -1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 z 1 (*.f64 (neg.f64 y) z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 z 1 (*.f64 z (neg.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 z) (pow.f64 (cbrt.f64 z) 2) (*.f64 (neg.f64 y) z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 z) (pow.f64 (cbrt.f64 z) 2) (*.f64 z (neg.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 z) 2) (cbrt.f64 z) (*.f64 (neg.f64 y) z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 z) 2) (cbrt.f64 z) (*.f64 z (neg.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 z) (sqrt.f64 z) (*.f64 (neg.f64 y) z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 z) (sqrt.f64 z) (*.f64 z (neg.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (fma.f64 (-.f64 1 y) z 1)) 2) (cbrt.f64 (fma.f64 (-.f64 1 y) z 1)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (fma.f64 (-.f64 1 y) z 1)) (sqrt.f64 (fma.f64 (-.f64 1 y) z 1)) -1)))))

simplify84.0ms (1.1%)

Algorithm
egg-herbie
Rules
788×fma-def_binary64
408×fma-neg_binary64
140×distribute-rgt-in_binary64
125×unsub-neg_binary64
104×distribute-lft-in_binary64
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
026613
168592
2169532
3419532
4929532
51582532
62419532
72582532
82584532
92584532
Stop Event
saturated
Counts
144 → 102
Calls
Call 1
Inputs
(*.f64 (-.f64 1 (*.f64 z (-.f64 1 y))) x)
(*.f64 (-.f64 1 (*.f64 z (-.f64 1 y))) x)
(*.f64 (-.f64 1 (*.f64 z (-.f64 1 y))) x)
(*.f64 (-.f64 1 (*.f64 z (-.f64 1 y))) x)
(*.f64 (-.f64 1 (*.f64 z (-.f64 1 y))) x)
(*.f64 (-.f64 1 (*.f64 z (-.f64 1 y))) x)
(*.f64 (-.f64 1 (*.f64 z (-.f64 1 y))) x)
(*.f64 (-.f64 1 (*.f64 z (-.f64 1 y))) x)
(*.f64 (-.f64 1 (*.f64 z (-.f64 1 y))) x)
(*.f64 (-.f64 1 (*.f64 z (-.f64 1 y))) x)
(*.f64 (-.f64 1 (*.f64 z (-.f64 1 y))) x)
(*.f64 (-.f64 1 (*.f64 z (-.f64 1 y))) x)
(*.f64 (-.f64 1 z) x)
(+.f64 (*.f64 y (*.f64 z x)) (*.f64 (-.f64 1 z) x))
(+.f64 (*.f64 y (*.f64 z x)) (*.f64 (-.f64 1 z) x))
(+.f64 (*.f64 y (*.f64 z x)) (*.f64 (-.f64 1 z) x))
(*.f64 y (*.f64 z x))
(+.f64 (*.f64 y (*.f64 z x)) (*.f64 (-.f64 1 z) x))
(+.f64 (*.f64 y (*.f64 z x)) (*.f64 (-.f64 1 z) x))
(+.f64 (*.f64 y (*.f64 z x)) (*.f64 (-.f64 1 z) x))
(*.f64 y (*.f64 z x))
(+.f64 (*.f64 y (*.f64 z x)) (*.f64 (-.f64 1 z) x))
(+.f64 (*.f64 y (*.f64 z x)) (*.f64 (-.f64 1 z) x))
(+.f64 (*.f64 y (*.f64 z x)) (*.f64 (-.f64 1 z) x))
x
(+.f64 (*.f64 z (*.f64 (-.f64 y 1) x)) x)
(+.f64 (*.f64 z (*.f64 (-.f64 y 1) x)) x)
(+.f64 (*.f64 z (*.f64 (-.f64 y 1) x)) x)
(*.f64 z (*.f64 (-.f64 y 1) x))
(+.f64 (*.f64 z (*.f64 (-.f64 y 1) x)) x)
(+.f64 (*.f64 z (*.f64 (-.f64 y 1) x)) x)
(+.f64 (*.f64 z (*.f64 (-.f64 y 1) x)) x)
(*.f64 -1 (*.f64 z (*.f64 (-.f64 1 y) x)))
(+.f64 (*.f64 -1 (*.f64 z (*.f64 (-.f64 1 y) x))) x)
(+.f64 (*.f64 -1 (*.f64 z (*.f64 (-.f64 1 y) x))) x)
(+.f64 (*.f64 -1 (*.f64 z (*.f64 (-.f64 1 y) x))) x)
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 z (-.f64 1 y))
(*.f64 z (-.f64 1 y))
(*.f64 z (-.f64 1 y))
(*.f64 z (-.f64 1 y))
(*.f64 z (-.f64 1 y))
(*.f64 z (-.f64 1 y))
(*.f64 z (-.f64 1 y))
(*.f64 z (-.f64 1 y))
(*.f64 z (-.f64 1 y))
(*.f64 z (-.f64 1 y))
(*.f64 z (-.f64 1 y))
(*.f64 z (-.f64 1 y))
Outputs
(*.f64 (-.f64 1 (*.f64 z (-.f64 1 y))) x)
(*.f64 (-.f64 1 (-.f64 z (*.f64 z y))) x)
(*.f64 (fma.f64 z y (-.f64 1 z)) x)
(*.f64 (-.f64 (fma.f64 z y 1) z) x)
(*.f64 (-.f64 1 (*.f64 z (-.f64 1 y))) x)
(*.f64 (-.f64 1 (-.f64 z (*.f64 z y))) x)
(*.f64 (fma.f64 z y (-.f64 1 z)) x)
(*.f64 (-.f64 (fma.f64 z y 1) z) x)
(*.f64 (-.f64 1 (*.f64 z (-.f64 1 y))) x)
(*.f64 (-.f64 1 (-.f64 z (*.f64 z y))) x)
(*.f64 (fma.f64 z y (-.f64 1 z)) x)
(*.f64 (-.f64 (fma.f64 z y 1) z) x)
(*.f64 (-.f64 1 (*.f64 z (-.f64 1 y))) x)
(*.f64 (-.f64 1 (-.f64 z (*.f64 z y))) x)
(*.f64 (fma.f64 z y (-.f64 1 z)) x)
(*.f64 (-.f64 (fma.f64 z y 1) z) x)
(*.f64 (-.f64 1 (*.f64 z (-.f64 1 y))) x)
(*.f64 (-.f64 1 (-.f64 z (*.f64 z y))) x)
(*.f64 (fma.f64 z y (-.f64 1 z)) x)
(*.f64 (-.f64 (fma.f64 z y 1) z) x)
(*.f64 (-.f64 1 (*.f64 z (-.f64 1 y))) x)
(*.f64 (-.f64 1 (-.f64 z (*.f64 z y))) x)
(*.f64 (fma.f64 z y (-.f64 1 z)) x)
(*.f64 (-.f64 (fma.f64 z y 1) z) x)
(*.f64 (-.f64 1 (*.f64 z (-.f64 1 y))) x)
(*.f64 (-.f64 1 (-.f64 z (*.f64 z y))) x)
(*.f64 (fma.f64 z y (-.f64 1 z)) x)
(*.f64 (-.f64 (fma.f64 z y 1) z) x)
(*.f64 (-.f64 1 (*.f64 z (-.f64 1 y))) x)
(*.f64 (-.f64 1 (-.f64 z (*.f64 z y))) x)
(*.f64 (fma.f64 z y (-.f64 1 z)) x)
(*.f64 (-.f64 (fma.f64 z y 1) z) x)
(*.f64 (-.f64 1 (*.f64 z (-.f64 1 y))) x)
(*.f64 (-.f64 1 (-.f64 z (*.f64 z y))) x)
(*.f64 (fma.f64 z y (-.f64 1 z)) x)
(*.f64 (-.f64 (fma.f64 z y 1) z) x)
(*.f64 (-.f64 1 (*.f64 z (-.f64 1 y))) x)
(*.f64 (-.f64 1 (-.f64 z (*.f64 z y))) x)
(*.f64 (fma.f64 z y (-.f64 1 z)) x)
(*.f64 (-.f64 (fma.f64 z y 1) z) x)
(*.f64 (-.f64 1 (*.f64 z (-.f64 1 y))) x)
(*.f64 (-.f64 1 (-.f64 z (*.f64 z y))) x)
(*.f64 (fma.f64 z y (-.f64 1 z)) x)
(*.f64 (-.f64 (fma.f64 z y 1) z) x)
(*.f64 (-.f64 1 (*.f64 z (-.f64 1 y))) x)
(*.f64 (-.f64 1 (-.f64 z (*.f64 z y))) x)
(*.f64 (fma.f64 z y (-.f64 1 z)) x)
(*.f64 (-.f64 (fma.f64 z y 1) z) x)
(*.f64 (-.f64 1 z) x)
(*.f64 x (-.f64 1 z))
(-.f64 x (*.f64 z x))
(+.f64 (*.f64 y (*.f64 z x)) (*.f64 (-.f64 1 z) x))
(*.f64 (-.f64 1 (*.f64 z (-.f64 1 y))) x)
(*.f64 (-.f64 1 (-.f64 z (*.f64 z y))) x)
(*.f64 (fma.f64 z y (-.f64 1 z)) x)
(*.f64 (-.f64 (fma.f64 z y 1) z) x)
(+.f64 (*.f64 y (*.f64 z x)) (*.f64 (-.f64 1 z) x))
(*.f64 (-.f64 1 (*.f64 z (-.f64 1 y))) x)
(*.f64 (-.f64 1 (-.f64 z (*.f64 z y))) x)
(*.f64 (fma.f64 z y (-.f64 1 z)) x)
(*.f64 (-.f64 (fma.f64 z y 1) z) x)
(+.f64 (*.f64 y (*.f64 z x)) (*.f64 (-.f64 1 z) x))
(*.f64 (-.f64 1 (*.f64 z (-.f64 1 y))) x)
(*.f64 (-.f64 1 (-.f64 z (*.f64 z y))) x)
(*.f64 (fma.f64 z y (-.f64 1 z)) x)
(*.f64 (-.f64 (fma.f64 z y 1) z) x)
(*.f64 y (*.f64 z x))
(+.f64 (*.f64 y (*.f64 z x)) (*.f64 (-.f64 1 z) x))
(*.f64 (-.f64 1 (*.f64 z (-.f64 1 y))) x)
(*.f64 (-.f64 1 (-.f64 z (*.f64 z y))) x)
(*.f64 (fma.f64 z y (-.f64 1 z)) x)
(*.f64 (-.f64 (fma.f64 z y 1) z) x)
(+.f64 (*.f64 y (*.f64 z x)) (*.f64 (-.f64 1 z) x))
(*.f64 (-.f64 1 (*.f64 z (-.f64 1 y))) x)
(*.f64 (-.f64 1 (-.f64 z (*.f64 z y))) x)
(*.f64 (fma.f64 z y (-.f64 1 z)) x)
(*.f64 (-.f64 (fma.f64 z y 1) z) x)
(+.f64 (*.f64 y (*.f64 z x)) (*.f64 (-.f64 1 z) x))
(*.f64 (-.f64 1 (*.f64 z (-.f64 1 y))) x)
(*.f64 (-.f64 1 (-.f64 z (*.f64 z y))) x)
(*.f64 (fma.f64 z y (-.f64 1 z)) x)
(*.f64 (-.f64 (fma.f64 z y 1) z) x)
(*.f64 y (*.f64 z x))
(+.f64 (*.f64 y (*.f64 z x)) (*.f64 (-.f64 1 z) x))
(*.f64 (-.f64 1 (*.f64 z (-.f64 1 y))) x)
(*.f64 (-.f64 1 (-.f64 z (*.f64 z y))) x)
(*.f64 (fma.f64 z y (-.f64 1 z)) x)
(*.f64 (-.f64 (fma.f64 z y 1) z) x)
(+.f64 (*.f64 y (*.f64 z x)) (*.f64 (-.f64 1 z) x))
(*.f64 (-.f64 1 (*.f64 z (-.f64 1 y))) x)
(*.f64 (-.f64 1 (-.f64 z (*.f64 z y))) x)
(*.f64 (fma.f64 z y (-.f64 1 z)) x)
(*.f64 (-.f64 (fma.f64 z y 1) z) x)
(+.f64 (*.f64 y (*.f64 z x)) (*.f64 (-.f64 1 z) x))
(*.f64 (-.f64 1 (*.f64 z (-.f64 1 y))) x)
(*.f64 (-.f64 1 (-.f64 z (*.f64 z y))) x)
(*.f64 (fma.f64 z y (-.f64 1 z)) x)
(*.f64 (-.f64 (fma.f64 z y 1) z) x)
x
(+.f64 (*.f64 z (*.f64 (-.f64 y 1) x)) x)
(*.f64 (-.f64 1 (*.f64 z (-.f64 1 y))) x)
(*.f64 (-.f64 1 (-.f64 z (*.f64 z y))) x)
(*.f64 (fma.f64 z y (-.f64 1 z)) x)
(*.f64 (-.f64 (fma.f64 z y 1) z) x)
(+.f64 (*.f64 z (*.f64 (-.f64 y 1) x)) x)
(*.f64 (-.f64 1 (*.f64 z (-.f64 1 y))) x)
(*.f64 (-.f64 1 (-.f64 z (*.f64 z y))) x)
(*.f64 (fma.f64 z y (-.f64 1 z)) x)
(*.f64 (-.f64 (fma.f64 z y 1) z) x)
(+.f64 (*.f64 z (*.f64 (-.f64 y 1) x)) x)
(*.f64 (-.f64 1 (*.f64 z (-.f64 1 y))) x)
(*.f64 (-.f64 1 (-.f64 z (*.f64 z y))) x)
(*.f64 (fma.f64 z y (-.f64 1 z)) x)
(*.f64 (-.f64 (fma.f64 z y 1) z) x)
(*.f64 z (*.f64 (-.f64 y 1) x))
(*.f64 z (*.f64 x (+.f64 y -1)))
(*.f64 x (-.f64 (*.f64 z y) z))
(*.f64 z (-.f64 (*.f64 y x) x))
(+.f64 (*.f64 z (*.f64 (-.f64 y 1) x)) x)
(*.f64 (-.f64 1 (*.f64 z (-.f64 1 y))) x)
(*.f64 (-.f64 1 (-.f64 z (*.f64 z y))) x)
(*.f64 (fma.f64 z y (-.f64 1 z)) x)
(*.f64 (-.f64 (fma.f64 z y 1) z) x)
(+.f64 (*.f64 z (*.f64 (-.f64 y 1) x)) x)
(*.f64 (-.f64 1 (*.f64 z (-.f64 1 y))) x)
(*.f64 (-.f64 1 (-.f64 z (*.f64 z y))) x)
(*.f64 (fma.f64 z y (-.f64 1 z)) x)
(*.f64 (-.f64 (fma.f64 z y 1) z) x)
(+.f64 (*.f64 z (*.f64 (-.f64 y 1) x)) x)
(*.f64 (-.f64 1 (*.f64 z (-.f64 1 y))) x)
(*.f64 (-.f64 1 (-.f64 z (*.f64 z y))) x)
(*.f64 (fma.f64 z y (-.f64 1 z)) x)
(*.f64 (-.f64 (fma.f64 z y 1) z) x)
(*.f64 -1 (*.f64 z (*.f64 (-.f64 1 y) x)))
(*.f64 z (*.f64 x (+.f64 y -1)))
(*.f64 x (-.f64 (*.f64 z y) z))
(*.f64 z (-.f64 (*.f64 y x) x))
(+.f64 (*.f64 -1 (*.f64 z (*.f64 (-.f64 1 y) x))) x)
(*.f64 (-.f64 1 (*.f64 z (-.f64 1 y))) x)
(*.f64 (-.f64 1 (-.f64 z (*.f64 z y))) x)
(*.f64 (fma.f64 z y (-.f64 1 z)) x)
(*.f64 (-.f64 (fma.f64 z y 1) z) x)
(+.f64 (*.f64 -1 (*.f64 z (*.f64 (-.f64 1 y) x))) x)
(*.f64 (-.f64 1 (*.f64 z (-.f64 1 y))) x)
(*.f64 (-.f64 1 (-.f64 z (*.f64 z y))) x)
(*.f64 (fma.f64 z y (-.f64 1 z)) x)
(*.f64 (-.f64 (fma.f64 z y 1) z) x)
(+.f64 (*.f64 -1 (*.f64 z (*.f64 (-.f64 1 y) x))) x)
(*.f64 (-.f64 1 (*.f64 z (-.f64 1 y))) x)
(*.f64 (-.f64 1 (-.f64 z (*.f64 z y))) x)
(*.f64 (fma.f64 z y (-.f64 1 z)) x)
(*.f64 (-.f64 (fma.f64 z y 1) z) x)
z
(+.f64 (*.f64 -1 (*.f64 y z)) z)
(fma.f64 -1 (*.f64 z y) z)
(-.f64 z (*.f64 z y))
(fma.f64 y (neg.f64 z) z)
(+.f64 (*.f64 -1 (*.f64 y z)) z)
(fma.f64 -1 (*.f64 z y) z)
(-.f64 z (*.f64 z y))
(fma.f64 y (neg.f64 z) z)
(+.f64 (*.f64 -1 (*.f64 y z)) z)
(fma.f64 -1 (*.f64 z y) z)
(-.f64 z (*.f64 z y))
(fma.f64 y (neg.f64 z) z)
(*.f64 -1 (*.f64 y z))
(neg.f64 (*.f64 z y))
(*.f64 z (neg.f64 y))
(*.f64 y (neg.f64 z))
(+.f64 (*.f64 -1 (*.f64 y z)) z)
(fma.f64 -1 (*.f64 z y) z)
(-.f64 z (*.f64 z y))
(fma.f64 y (neg.f64 z) z)
(+.f64 (*.f64 -1 (*.f64 y z)) z)
(fma.f64 -1 (*.f64 z y) z)
(-.f64 z (*.f64 z y))
(fma.f64 y (neg.f64 z) z)
(+.f64 (*.f64 -1 (*.f64 y z)) z)
(fma.f64 -1 (*.f64 z y) z)
(-.f64 z (*.f64 z y))
(fma.f64 y (neg.f64 z) z)
(*.f64 -1 (*.f64 y z))
(neg.f64 (*.f64 z y))
(*.f64 z (neg.f64 y))
(*.f64 y (neg.f64 z))
(+.f64 (*.f64 -1 (*.f64 y z)) z)
(fma.f64 -1 (*.f64 z y) z)
(-.f64 z (*.f64 z y))
(fma.f64 y (neg.f64 z) z)
(+.f64 (*.f64 -1 (*.f64 y z)) z)
(fma.f64 -1 (*.f64 z y) z)
(-.f64 z (*.f64 z y))
(fma.f64 y (neg.f64 z) z)
(+.f64 (*.f64 -1 (*.f64 y z)) z)
(fma.f64 -1 (*.f64 z y) z)
(-.f64 z (*.f64 z y))
(fma.f64 y (neg.f64 z) z)
(*.f64 z (-.f64 1 y))
(fma.f64 -1 (*.f64 z y) z)
(-.f64 z (*.f64 z y))
(fma.f64 y (neg.f64 z) z)
(*.f64 z (-.f64 1 y))
(fma.f64 -1 (*.f64 z y) z)
(-.f64 z (*.f64 z y))
(fma.f64 y (neg.f64 z) z)
(*.f64 z (-.f64 1 y))
(fma.f64 -1 (*.f64 z y) z)
(-.f64 z (*.f64 z y))
(fma.f64 y (neg.f64 z) z)
(*.f64 z (-.f64 1 y))
(fma.f64 -1 (*.f64 z y) z)
(-.f64 z (*.f64 z y))
(fma.f64 y (neg.f64 z) z)
(*.f64 z (-.f64 1 y))
(fma.f64 -1 (*.f64 z y) z)
(-.f64 z (*.f64 z y))
(fma.f64 y (neg.f64 z) z)
(*.f64 z (-.f64 1 y))
(fma.f64 -1 (*.f64 z y) z)
(-.f64 z (*.f64 z y))
(fma.f64 y (neg.f64 z) z)
(*.f64 z (-.f64 1 y))
(fma.f64 -1 (*.f64 z y) z)
(-.f64 z (*.f64 z y))
(fma.f64 y (neg.f64 z) z)
(*.f64 z (-.f64 1 y))
(fma.f64 -1 (*.f64 z y) z)
(-.f64 z (*.f64 z y))
(fma.f64 y (neg.f64 z) z)
(*.f64 z (-.f64 1 y))
(fma.f64 -1 (*.f64 z y) z)
(-.f64 z (*.f64 z y))
(fma.f64 y (neg.f64 z) z)
(*.f64 z (-.f64 1 y))
(fma.f64 -1 (*.f64 z y) z)
(-.f64 z (*.f64 z y))
(fma.f64 y (neg.f64 z) z)
(*.f64 z (-.f64 1 y))
(fma.f64 -1 (*.f64 z y) z)
(-.f64 z (*.f64 z y))
(fma.f64 y (neg.f64 z) z)
(*.f64 z (-.f64 1 y))
(fma.f64 -1 (*.f64 z y) z)
(-.f64 z (*.f64 z y))
(fma.f64 y (neg.f64 z) z)

localize8.0ms (0.1%)

Local error

Found 1 expressions with local error:

NewErrorProgram
3.4b
(fma.f64 x (fma.f64 y z (neg.f64 z)) x)
Compiler

Compiled 21 to 6 computations (71.4% saved)

series7.0ms (0.1%)

Counts
1 → 36
Calls

9 calls:

TimeVariablePointExpression
2.0ms
z
@-inf
(fma.f64 x (fma.f64 y z (neg.f64 z)) x)
1.0ms
x
@0
(fma.f64 x (fma.f64 y z (neg.f64 z)) x)
1.0ms
x
@-inf
(fma.f64 x (fma.f64 y z (neg.f64 z)) x)
1.0ms
x
@inf
(fma.f64 x (fma.f64 y z (neg.f64 z)) x)
1.0ms
y
@-inf
(fma.f64 x (fma.f64 y z (neg.f64 z)) x)

rewrite50.0ms (0.7%)

Algorithm
batch-egg-rewrite
Rules
626×pow1_binary64
574×add-log-exp_binary64
573×log1p-expm1-u_binary64
573×expm1-log1p-u_binary64
560×add-exp-log_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0711
11429
217739
Stop Event
node limit
Counts
1 → 21
Calls
Call 1
Inputs
(fma.f64 x (fma.f64 y z (neg.f64 z)) x)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 x (*.f64 x (fma.f64 y z z)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 x (fma.f64 y z z)) x)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (*.f64 x (fma.f64 y z z)) 1) x)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (fma.f64 x (fma.f64 y z z) x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (fma.f64 x (fma.f64 y z z) x) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (fma.f64 x (fma.f64 y z z) x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (fma.f64 x (fma.f64 y z z) x)) (pow.f64 (cbrt.f64 (fma.f64 x (fma.f64 y z z) x)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (fma.f64 x (fma.f64 y z z) x)) 2) (cbrt.f64 (fma.f64 x (fma.f64 y z z) x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (fma.f64 x (fma.f64 y z z) x)) (sqrt.f64 (fma.f64 x (fma.f64 y z z) x)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (*.f64 x (fma.f64 y z z)) 3) (pow.f64 x 3)) (+.f64 (*.f64 (*.f64 x (fma.f64 y z z)) (*.f64 x (fma.f64 y z z))) (-.f64 (*.f64 x x) (*.f64 (*.f64 x (fma.f64 y z z)) x))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 (*.f64 x (fma.f64 y z z)) (*.f64 x (fma.f64 y z z))) (*.f64 x x)) (-.f64 (*.f64 x (fma.f64 y z z)) x))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (fma.f64 x (fma.f64 y z z) x) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (fma.f64 x (fma.f64 y z z) x) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (fma.f64 x (fma.f64 y z z) x)) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (fma.f64 x (fma.f64 y z z) x)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (fma.f64 x (fma.f64 y z z) x) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (fma.f64 x (fma.f64 y z z) x)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (fma.f64 x (fma.f64 y z z) x) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (fma.f64 x (fma.f64 y z z) x)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (fma.f64 x (fma.f64 y z z) x)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (fma.f64 x (fma.f64 y z z) x)))))))

simplify68.0ms (0.9%)

Algorithm
egg-herbie
Rules
749×fma-def_binary64
578×fma-neg_binary64
205×distribute-rgt-in_binary64
164×distribute-lft-in_binary64
154×unsub-neg_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
029373
183372
2233372
3653372
41599372
52812372
63164372
73219372
83219372
Stop Event
saturated
Counts
57 → 34
Calls
Call 1
Inputs
(*.f64 (-.f64 (+.f64 (*.f64 y z) 1) z) x)
(*.f64 (-.f64 (+.f64 (*.f64 y z) 1) z) x)
(*.f64 (-.f64 (+.f64 (*.f64 y z) 1) z) x)
(*.f64 (-.f64 (+.f64 (*.f64 y z) 1) z) x)
(*.f64 (-.f64 (+.f64 (*.f64 y z) 1) z) x)
(*.f64 (-.f64 (+.f64 (*.f64 y z) 1) z) x)
(*.f64 (-.f64 (+.f64 (*.f64 y z) 1) z) x)
(*.f64 (-.f64 (+.f64 (*.f64 y z) 1) z) x)
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 (-.f64 (*.f64 y z) z)) 1) x))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 (-.f64 (*.f64 y z) z)) 1) x))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 (-.f64 (*.f64 y z) z)) 1) x))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 (-.f64 (*.f64 y z) z)) 1) x))
(+.f64 (*.f64 -1 (*.f64 z x)) x)
(+.f64 (*.f64 y (*.f64 z x)) (+.f64 (*.f64 -1 (*.f64 z x)) x))
(+.f64 (*.f64 y (*.f64 z x)) (+.f64 (*.f64 -1 (*.f64 z x)) x))
(+.f64 (*.f64 y (*.f64 z x)) (+.f64 (*.f64 -1 (*.f64 z x)) x))
(*.f64 y (*.f64 z x))
(+.f64 (*.f64 y (*.f64 z x)) (+.f64 (*.f64 -1 (*.f64 z x)) x))
(+.f64 (*.f64 y (*.f64 z x)) (+.f64 (*.f64 -1 (*.f64 z x)) x))
(+.f64 (*.f64 y (*.f64 z x)) (+.f64 (*.f64 -1 (*.f64 z x)) x))
(*.f64 y (*.f64 z x))
(+.f64 (*.f64 y (*.f64 z x)) (+.f64 (*.f64 -1 (*.f64 z x)) x))
(+.f64 (*.f64 y (*.f64 z x)) (+.f64 (*.f64 -1 (*.f64 z x)) x))
(+.f64 (*.f64 y (*.f64 z x)) (+.f64 (*.f64 -1 (*.f64 z x)) x))
x
(+.f64 (*.f64 z (*.f64 (-.f64 y 1) x)) x)
(+.f64 (*.f64 z (*.f64 (-.f64 y 1) x)) x)
(+.f64 (*.f64 z (*.f64 (-.f64 y 1) x)) x)
(*.f64 z (*.f64 (-.f64 y 1) x))
(+.f64 (*.f64 z (*.f64 (-.f64 y 1) x)) x)
(+.f64 (*.f64 z (*.f64 (-.f64 y 1) x)) x)
(+.f64 (*.f64 z (*.f64 (-.f64 y 1) x)) x)
(*.f64 -1 (*.f64 (+.f64 1 (*.f64 -1 y)) (*.f64 z x)))
(+.f64 (*.f64 -1 (*.f64 (+.f64 1 (*.f64 -1 y)) (*.f64 z x))) x)
(+.f64 (*.f64 -1 (*.f64 (+.f64 1 (*.f64 -1 y)) (*.f64 z x))) x)
(+.f64 (*.f64 -1 (*.f64 (+.f64 1 (*.f64 -1 y)) (*.f64 z x))) x)
Outputs
(*.f64 (-.f64 (+.f64 (*.f64 y z) 1) z) x)
(*.f64 (-.f64 (fma.f64 y z 1) z) x)
(*.f64 x (-.f64 (fma.f64 y z 1) z))
(*.f64 (-.f64 (+.f64 (*.f64 y z) 1) z) x)
(*.f64 (-.f64 (fma.f64 y z 1) z) x)
(*.f64 x (-.f64 (fma.f64 y z 1) z))
(*.f64 (-.f64 (+.f64 (*.f64 y z) 1) z) x)
(*.f64 (-.f64 (fma.f64 y z 1) z) x)
(*.f64 x (-.f64 (fma.f64 y z 1) z))
(*.f64 (-.f64 (+.f64 (*.f64 y z) 1) z) x)
(*.f64 (-.f64 (fma.f64 y z 1) z) x)
(*.f64 x (-.f64 (fma.f64 y z 1) z))
(*.f64 (-.f64 (+.f64 (*.f64 y z) 1) z) x)
(*.f64 (-.f64 (fma.f64 y z 1) z) x)
(*.f64 x (-.f64 (fma.f64 y z 1) z))
(*.f64 (-.f64 (+.f64 (*.f64 y z) 1) z) x)
(*.f64 (-.f64 (fma.f64 y z 1) z) x)
(*.f64 x (-.f64 (fma.f64 y z 1) z))
(*.f64 (-.f64 (+.f64 (*.f64 y z) 1) z) x)
(*.f64 (-.f64 (fma.f64 y z 1) z) x)
(*.f64 x (-.f64 (fma.f64 y z 1) z))
(*.f64 (-.f64 (+.f64 (*.f64 y z) 1) z) x)
(*.f64 (-.f64 (fma.f64 y z 1) z) x)
(*.f64 x (-.f64 (fma.f64 y z 1) z))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 (-.f64 (*.f64 y z) z)) 1) x))
(*.f64 (-.f64 (fma.f64 y z 1) z) x)
(*.f64 x (-.f64 (fma.f64 y z 1) z))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 (-.f64 (*.f64 y z) z)) 1) x))
(*.f64 (-.f64 (fma.f64 y z 1) z) x)
(*.f64 x (-.f64 (fma.f64 y z 1) z))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 (-.f64 (*.f64 y z) z)) 1) x))
(*.f64 (-.f64 (fma.f64 y z 1) z) x)
(*.f64 x (-.f64 (fma.f64 y z 1) z))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 (-.f64 (*.f64 y z) z)) 1) x))
(*.f64 (-.f64 (fma.f64 y z 1) z) x)
(*.f64 x (-.f64 (fma.f64 y z 1) z))
(+.f64 (*.f64 -1 (*.f64 z x)) x)
(fma.f64 -1 (*.f64 z x) x)
(-.f64 x (*.f64 z x))
(+.f64 (*.f64 y (*.f64 z x)) (+.f64 (*.f64 -1 (*.f64 z x)) x))
(*.f64 (-.f64 (fma.f64 y z 1) z) x)
(*.f64 x (-.f64 (fma.f64 y z 1) z))
(+.f64 (*.f64 y (*.f64 z x)) (+.f64 (*.f64 -1 (*.f64 z x)) x))
(*.f64 (-.f64 (fma.f64 y z 1) z) x)
(*.f64 x (-.f64 (fma.f64 y z 1) z))
(+.f64 (*.f64 y (*.f64 z x)) (+.f64 (*.f64 -1 (*.f64 z x)) x))
(*.f64 (-.f64 (fma.f64 y z 1) z) x)
(*.f64 x (-.f64 (fma.f64 y z 1) z))
(*.f64 y (*.f64 z x))
(+.f64 (*.f64 y (*.f64 z x)) (+.f64 (*.f64 -1 (*.f64 z x)) x))
(*.f64 (-.f64 (fma.f64 y z 1) z) x)
(*.f64 x (-.f64 (fma.f64 y z 1) z))
(+.f64 (*.f64 y (*.f64 z x)) (+.f64 (*.f64 -1 (*.f64 z x)) x))
(*.f64 (-.f64 (fma.f64 y z 1) z) x)
(*.f64 x (-.f64 (fma.f64 y z 1) z))
(+.f64 (*.f64 y (*.f64 z x)) (+.f64 (*.f64 -1 (*.f64 z x)) x))
(*.f64 (-.f64 (fma.f64 y z 1) z) x)
(*.f64 x (-.f64 (fma.f64 y z 1) z))
(*.f64 y (*.f64 z x))
(+.f64 (*.f64 y (*.f64 z x)) (+.f64 (*.f64 -1 (*.f64 z x)) x))
(*.f64 (-.f64 (fma.f64 y z 1) z) x)
(*.f64 x (-.f64 (fma.f64 y z 1) z))
(+.f64 (*.f64 y (*.f64 z x)) (+.f64 (*.f64 -1 (*.f64 z x)) x))
(*.f64 (-.f64 (fma.f64 y z 1) z) x)
(*.f64 x (-.f64 (fma.f64 y z 1) z))
(+.f64 (*.f64 y (*.f64 z x)) (+.f64 (*.f64 -1 (*.f64 z x)) x))
(*.f64 (-.f64 (fma.f64 y z 1) z) x)
(*.f64 x (-.f64 (fma.f64 y z 1) z))
x
(+.f64 (*.f64 z (*.f64 (-.f64 y 1) x)) x)
(*.f64 (-.f64 (fma.f64 y z 1) z) x)
(*.f64 x (-.f64 (fma.f64 y z 1) z))
(+.f64 (*.f64 z (*.f64 (-.f64 y 1) x)) x)
(*.f64 (-.f64 (fma.f64 y z 1) z) x)
(*.f64 x (-.f64 (fma.f64 y z 1) z))
(+.f64 (*.f64 z (*.f64 (-.f64 y 1) x)) x)
(*.f64 (-.f64 (fma.f64 y z 1) z) x)
(*.f64 x (-.f64 (fma.f64 y z 1) z))
(*.f64 z (*.f64 (-.f64 y 1) x))
(*.f64 z (*.f64 x (-.f64 y 1)))
(*.f64 z (*.f64 x (+.f64 y -1)))
(+.f64 (*.f64 z (*.f64 (-.f64 y 1) x)) x)
(*.f64 (-.f64 (fma.f64 y z 1) z) x)
(*.f64 x (-.f64 (fma.f64 y z 1) z))
(+.f64 (*.f64 z (*.f64 (-.f64 y 1) x)) x)
(*.f64 (-.f64 (fma.f64 y z 1) z) x)
(*.f64 x (-.f64 (fma.f64 y z 1) z))
(+.f64 (*.f64 z (*.f64 (-.f64 y 1) x)) x)
(*.f64 (-.f64 (fma.f64 y z 1) z) x)
(*.f64 x (-.f64 (fma.f64 y z 1) z))
(*.f64 -1 (*.f64 (+.f64 1 (*.f64 -1 y)) (*.f64 z x)))
(*.f64 z (*.f64 x (-.f64 y 1)))
(*.f64 z (*.f64 x (+.f64 y -1)))
(+.f64 (*.f64 -1 (*.f64 (+.f64 1 (*.f64 -1 y)) (*.f64 z x))) x)
(*.f64 (-.f64 (fma.f64 y z 1) z) x)
(*.f64 x (-.f64 (fma.f64 y z 1) z))
(+.f64 (*.f64 -1 (*.f64 (+.f64 1 (*.f64 -1 y)) (*.f64 z x))) x)
(*.f64 (-.f64 (fma.f64 y z 1) z) x)
(*.f64 x (-.f64 (fma.f64 y z 1) z))
(+.f64 (*.f64 -1 (*.f64 (+.f64 1 (*.f64 -1 y)) (*.f64 z x))) x)
(*.f64 (-.f64 (fma.f64 y z 1) z) x)
(*.f64 x (-.f64 (fma.f64 y z 1) z))

eval32.0ms (0.4%)

Compiler

Compiled 1727 to 997 computations (42.3% saved)

prune27.0ms (0.4%)

Pruning

10 alts after pruning (10 fresh and 0 done)

PrunedKeptTotal
New12610136
Fresh000
Picked101
Done101
Total12810138
Error
0.0b
Counts
138 → 10
Alt Table
Click to see full alt table
StatusErrorProgram
4.8b
(pow.f64 (cbrt.f64 (*.f64 x (-.f64 1 (*.f64 (-.f64 1 y) z)))) 3)
17.4b
(*.f64 x (-.f64 1 (*.f64 y (neg.f64 z))))
3.6b
(*.f64 (-.f64 (+.f64 (*.f64 y z) 1) z) x)
19.8b
(*.f64 (-.f64 1 z) x)
32.9b
x
44.3b
(*.f64 y (*.f64 z x))
19.8b
(-.f64 x (*.f64 z x))
33.3b
(*.f64 z (-.f64 (*.f64 y x) x))
33.3b
(*.f64 z (*.f64 (-.f64 y 1) x))
3.8b
(+.f64 (*.f64 z (*.f64 (-.f64 y 1) x)) x)
Compiler

Compiled 192 to 133 computations (30.7% saved)

localize10.0ms (0.1%)

Local error

Found 2 expressions with local error:

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

Compiled 31 to 14 computations (54.8% saved)

series7.0ms (0.1%)

Counts
2 → 39
Calls

15 calls:

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

rewrite74.0ms (1%)

Algorithm
batch-egg-rewrite
Rules
797×prod-diff_binary64
472×log-prod_binary64
423×fma-def_binary64
368×pow-prod-down_binary64
258×pow2_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0919
119519
2269419
Stop Event
node limit
Counts
2 → 171
Calls
Call 1
Inputs
(*.f64 (-.f64 (+.f64 (*.f64 y z) 1) z) x)
(-.f64 (+.f64 (*.f64 y z) 1) z)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 (-.f64 (fma.f64 y z 1) z) x))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (*.f64 y z) x) (*.f64 (-.f64 1 z) x))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (fma.f64 y z 1) x) (*.f64 (neg.f64 z) x))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 x (*.f64 y z)) (*.f64 x (-.f64 1 z)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 x (fma.f64 y z 1)) (*.f64 x (neg.f64 z)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (pow.f64 (exp.f64 x) (-.f64 (fma.f64 y z 1) z))) 2)) (log.f64 (cbrt.f64 (pow.f64 (exp.f64 x) (-.f64 (fma.f64 y z 1) z)))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (pow.f64 (exp.f64 x) (-.f64 (fma.f64 y z 1) z)))) (log.f64 (sqrt.f64 (pow.f64 (exp.f64 x) (-.f64 (fma.f64 y z 1) z)))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (*.f64 (-.f64 (fma.f64 y z 1) z) x))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 (pow.f64 (fma.f64 y z 1) 3) (pow.f64 z 3)) x) (fma.f64 z (+.f64 z (fma.f64 y z 1)) (pow.f64 (fma.f64 y z 1) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 (pow.f64 (fma.f64 y z 1) 2) (*.f64 z z)) x) (+.f64 z (fma.f64 y z 1)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (-.f64 (pow.f64 (fma.f64 y z 1) 3) (pow.f64 z 3))) (fma.f64 z (+.f64 z (fma.f64 y z 1)) (pow.f64 (fma.f64 y z 1) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (-.f64 (pow.f64 (fma.f64 y z 1) 2) (*.f64 z z))) (+.f64 z (fma.f64 y z 1)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (-.f64 (fma.f64 y z 1) z) x) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 (-.f64 (fma.f64 y z 1) z) x) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 (-.f64 (fma.f64 y z 1) z) x) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 (-.f64 (fma.f64 y z 1) z) x)) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 (-.f64 (fma.f64 y z 1) z) x)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 (-.f64 (fma.f64 y z 1) z) x) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 x) (-.f64 (fma.f64 y z 1) z)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (*.f64 (-.f64 (fma.f64 y z 1) z) x))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 (-.f64 (fma.f64 y z 1) z) x) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 (-.f64 (fma.f64 y z 1) z) x)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 (-.f64 (fma.f64 y z 1) z) x)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 (-.f64 (fma.f64 y z 1) z) x)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (*.f64 (-.f64 (fma.f64 y z 1) z) x)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 y z) x (*.f64 (-.f64 1 z) x))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (fma.f64 y z 1) x (*.f64 (neg.f64 z) x))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 x (*.f64 y z) (*.f64 x (-.f64 1 z)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 x (fma.f64 y z 1) (*.f64 x (neg.f64 z)))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 y z) (-.f64 1 z))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 y z) (*.f64 (-.f64 1 z) 1))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 1 (-.f64 (*.f64 y z) z))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (fma.f64 y z 1) (neg.f64 z))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (fma.f64 y z 1) (*.f64 (neg.f64 z) 1))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (-.f64 (fma.f64 y z 1) z) (fma.f64 (neg.f64 z) 1 z))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (-.f64 (fma.f64 y z 1) z) (fma.f64 (neg.f64 (cbrt.f64 z)) (pow.f64 (cbrt.f64 z) 2) z))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (-.f64 (fma.f64 y z 1) z) (+.f64 (neg.f64 z) z))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (-.f64 (fma.f64 y z 1) z) (fma.f64 -1 z z))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (-.f64 (fma.f64 y z 1) z) (fma.f64 (neg.f64 (pow.f64 (cbrt.f64 z) 2)) (cbrt.f64 z) z))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (-.f64 (fma.f64 y z 1) z))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (neg.f64 z) (fma.f64 y z 1))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (-.f64 1 z) (*.f64 y z))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (exp.f64 (-.f64 (fma.f64 y z 1) z))) 2)) (log.f64 (cbrt.f64 (exp.f64 (-.f64 (fma.f64 y z 1) z)))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (exp.f64 (-.f64 (fma.f64 y z 1) z)))) (log.f64 (sqrt.f64 (exp.f64 (-.f64 (fma.f64 y z 1) z)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (-.f64 (fma.f64 y z 1) z))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 (fma.f64 y z 1) z) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (-.f64 (fma.f64 y z 1) z)) (pow.f64 (cbrt.f64 (-.f64 (fma.f64 y z 1) z)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (-.f64 (fma.f64 y z 1) z)) 2) (cbrt.f64 (-.f64 (fma.f64 y z 1) z)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (-.f64 (fma.f64 y z 1) z)) (sqrt.f64 (-.f64 (fma.f64 y z 1) z)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 (pow.f64 (fma.f64 y z 1) 3) (pow.f64 z 3)) (/.f64 1 (fma.f64 z (+.f64 z (fma.f64 y z 1)) (pow.f64 (fma.f64 y z 1) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 (pow.f64 (fma.f64 y z 1) 2) (*.f64 z z)) (/.f64 1 (+.f64 z (fma.f64 y z 1))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (sqrt.f64 (fma.f64 y z 1)) (sqrt.f64 z)) (-.f64 (sqrt.f64 (fma.f64 y z 1)) (sqrt.f64 z)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (fma.f64 z (+.f64 z (fma.f64 y z 1)) (pow.f64 (fma.f64 y z 1) 2)) (-.f64 (pow.f64 (fma.f64 y z 1) 3) (pow.f64 z 3))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (+.f64 z (fma.f64 y z 1)) (-.f64 (pow.f64 (fma.f64 y z 1) 2) (*.f64 z z))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 (fma.f64 y z 1) 3) (pow.f64 z 3)) (fma.f64 z (+.f64 z (fma.f64 y z 1)) (pow.f64 (fma.f64 y z 1) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 (fma.f64 y z 1) 2) (*.f64 z z)) (+.f64 z (fma.f64 y z 1)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (-.f64 (pow.f64 (fma.f64 y z 1) 3) (pow.f64 z 3))) (neg.f64 (fma.f64 z (+.f64 z (fma.f64 y z 1)) (pow.f64 (fma.f64 y z 1) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (-.f64 (pow.f64 (fma.f64 y z 1) 2) (*.f64 z z))) (neg.f64 (+.f64 z (fma.f64 y z 1))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (*.f64 y z) 3) (pow.f64 (-.f64 1 z) 3)) (+.f64 (pow.f64 (*.f64 y z) 2) (-.f64 (pow.f64 (-.f64 1 z) 2) (*.f64 (*.f64 y z) (-.f64 1 z)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (fma.f64 y z 1) 3) (pow.f64 (neg.f64 z) 3)) (+.f64 (pow.f64 (fma.f64 y z 1) 2) (-.f64 (pow.f64 (neg.f64 z) 2) (*.f64 (fma.f64 y z 1) (neg.f64 z)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 (*.f64 y z) 2) (pow.f64 (-.f64 1 z) 2)) (-.f64 (*.f64 y z) (-.f64 1 z)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 (fma.f64 y z 1) 2) (pow.f64 (neg.f64 z) 2)) (-.f64 (fma.f64 y z 1) (neg.f64 z)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (-.f64 (fma.f64 y z 1) z) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (-.f64 (fma.f64 y z 1) z) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (-.f64 (fma.f64 y z 1) z) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (-.f64 (fma.f64 y z 1) z)) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (-.f64 (fma.f64 y z 1) z)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (fma.f64 z (+.f64 z (fma.f64 y z 1)) (pow.f64 (fma.f64 y z 1) 2)) (-.f64 (pow.f64 (fma.f64 y z 1) 3) (pow.f64 z 3))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (+.f64 z (fma.f64 y z 1)) (-.f64 (pow.f64 (fma.f64 y z 1) 2) (*.f64 z z))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (-.f64 (fma.f64 y z 1) z) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (-.f64 (fma.f64 y z 1) z)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (-.f64 (fma.f64 y z 1) z))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (/.f64 (+.f64 1 (expm1.f64 (fma.f64 y z 1))) (exp.f64 z)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (/.f64 (exp.f64 (fma.f64 y z 1)) (+.f64 1 (expm1.f64 z))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (/.f64 (+.f64 1 (expm1.f64 (fma.f64 y z 1))) (+.f64 1 (expm1.f64 z))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 (*.f64 y z))) (exp.f64 (-.f64 1 z))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 (fma.f64 y z 1))) (exp.f64 (neg.f64 z))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 (fma.f64 y z 1))) (/.f64 1 (exp.f64 z))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (exp.f64 (neg.f64 z)) (exp.f64 (fma.f64 y z 1))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (exp.f64 (neg.f64 z)) (+.f64 1 (expm1.f64 (fma.f64 y z 1)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (/.f64 1 (exp.f64 z)) (+.f64 1 (expm1.f64 (fma.f64 y z 1)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (exp.f64 (-.f64 1 z)) (pow.f64 (exp.f64 y) z)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (exp.f64 (-.f64 1 z)) (+.f64 1 (expm1.f64 (*.f64 y z)))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (-.f64 (fma.f64 y z 1) z) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (-.f64 (fma.f64 y z 1) z)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (-.f64 (fma.f64 y z 1) z)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log1p.f64 (-.f64 (*.f64 y z) z)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log1p.f64 (-.f64 (*.f64 y z) z)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 y z (-.f64 1 z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 y z (*.f64 (-.f64 1 z) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 z y (-.f64 1 z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 z y (*.f64 (-.f64 1 z) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 y z) 1 (-.f64 1 z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 y z) 1 (*.f64 (-.f64 1 z) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (*.f64 y z) (-.f64 1 z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (*.f64 y z) (*.f64 (-.f64 1 z) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (fma.f64 y z 1) (neg.f64 z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (fma.f64 y z 1) (*.f64 (neg.f64 z) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (-.f64 (fma.f64 y z 1) z) (fma.f64 (neg.f64 z) 1 z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (-.f64 (fma.f64 y z 1) z) (fma.f64 (neg.f64 (cbrt.f64 z)) (pow.f64 (cbrt.f64 z) 2) z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (-.f64 (fma.f64 y z 1) z) (+.f64 (neg.f64 z) z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (neg.f64 z) (fma.f64 y z 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (-.f64 1 z) (*.f64 y z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (fma.f64 y z 1) 1 (neg.f64 z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (fma.f64 y z 1) 1 (*.f64 (neg.f64 z) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (-.f64 (fma.f64 y z 1) z) 1 (fma.f64 (neg.f64 z) 1 z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (-.f64 (fma.f64 y z 1) z) 1 (fma.f64 (neg.f64 (cbrt.f64 z)) (pow.f64 (cbrt.f64 z) 2) z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (-.f64 (fma.f64 y z 1) z) 1 (+.f64 (neg.f64 z) z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 y) 2) (*.f64 (cbrt.f64 y) z) (-.f64 1 z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 y) 2) (*.f64 (cbrt.f64 y) z) (*.f64 (-.f64 1 z) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (fma.f64 y z 1)) (pow.f64 (cbrt.f64 (fma.f64 y z 1)) 2) (neg.f64 z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (fma.f64 y z 1)) (pow.f64 (cbrt.f64 (fma.f64 y z 1)) 2) (*.f64 (neg.f64 z) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (fma.f64 y z 1)) 2) (cbrt.f64 (fma.f64 y z 1)) (neg.f64 z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (fma.f64 y z 1)) 2) (cbrt.f64 (fma.f64 y z 1)) (*.f64 (neg.f64 z) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 z) 2) (neg.f64 (cbrt.f64 z)) (fma.f64 y z 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 z) 2) (*.f64 (cbrt.f64 z) y) (-.f64 1 z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 z) 2) (*.f64 (cbrt.f64 z) y) (*.f64 (-.f64 1 z) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (-.f64 (fma.f64 y z 1) z)) (pow.f64 (cbrt.f64 (-.f64 (fma.f64 y z 1) z)) 2) (fma.f64 (neg.f64 z) 1 z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (-.f64 (fma.f64 y z 1) z)) (pow.f64 (cbrt.f64 (-.f64 (fma.f64 y z 1) z)) 2) (fma.f64 (neg.f64 (cbrt.f64 z)) (pow.f64 (cbrt.f64 z) 2) z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (-.f64 (fma.f64 y z 1) z)) (pow.f64 (cbrt.f64 (-.f64 (fma.f64 y z 1) z)) 2) (+.f64 (neg.f64 z) z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (-.f64 (fma.f64 y z 1) z)) 2) (cbrt.f64 (-.f64 (fma.f64 y z 1) z)) (fma.f64 (neg.f64 z) 1 z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (-.f64 (fma.f64 y z 1) z)) 2) (cbrt.f64 (-.f64 (fma.f64 y z 1) z)) (fma.f64 (neg.f64 (cbrt.f64 z)) (pow.f64 (cbrt.f64 z) 2) z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (-.f64 (fma.f64 y z 1) z)) 2) (cbrt.f64 (-.f64 (fma.f64 y z 1) z)) (+.f64 (neg.f64 z) z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (*.f64 y z)) (pow.f64 (cbrt.f64 (*.f64 y z)) 2) (-.f64 1 z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (*.f64 y z)) (pow.f64 (cbrt.f64 (*.f64 y z)) 2) (*.f64 (-.f64 1 z) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (*.f64 y z)) 2) (cbrt.f64 (*.f64 y z)) (-.f64 1 z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (*.f64 y z)) 2) (cbrt.f64 (*.f64 y z)) (*.f64 (-.f64 1 z) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (*.f64 y z)) 2) (*.f64 (cbrt.f64 (*.f64 y z)) 1) (-.f64 1 z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (*.f64 y z)) 2) (*.f64 (cbrt.f64 (*.f64 y z)) 1) (*.f64 (-.f64 1 z) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 y) (*.f64 (sqrt.f64 y) z) (-.f64 1 z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 y) (*.f64 (sqrt.f64 y) z) (*.f64 (-.f64 1 z) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (fma.f64 y z 1)) (sqrt.f64 (fma.f64 y z 1)) (neg.f64 z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (fma.f64 y z 1)) (sqrt.f64 (fma.f64 y z 1)) (*.f64 (neg.f64 z) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 z) (neg.f64 (sqrt.f64 z)) (fma.f64 y z 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 z) (*.f64 (sqrt.f64 z) y) (-.f64 1 z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 z) (*.f64 (sqrt.f64 z) y) (*.f64 (-.f64 1 z) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (-.f64 (fma.f64 y z 1) z)) (sqrt.f64 (-.f64 (fma.f64 y z 1) z)) (fma.f64 (neg.f64 z) 1 z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (-.f64 (fma.f64 y z 1) z)) (sqrt.f64 (-.f64 (fma.f64 y z 1) z)) (fma.f64 (neg.f64 (cbrt.f64 z)) (pow.f64 (cbrt.f64 z) 2) z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (-.f64 (fma.f64 y z 1) z)) (sqrt.f64 (-.f64 (fma.f64 y z 1) z)) (+.f64 (neg.f64 z) z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (*.f64 y z)) (sqrt.f64 (*.f64 y z)) (-.f64 1 z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (*.f64 y z)) (sqrt.f64 (*.f64 y z)) (*.f64 (-.f64 1 z) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (*.f64 y z)) (*.f64 (sqrt.f64 (*.f64 y z)) 1) (-.f64 1 z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (*.f64 y z)) (*.f64 (sqrt.f64 (*.f64 y z)) 1) (*.f64 (-.f64 1 z) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (-.f64 (pow.f64 (fma.f64 y z 1) 3) (pow.f64 z 3)) (/.f64 1 (fma.f64 z (+.f64 z (fma.f64 y z 1)) (pow.f64 (fma.f64 y z 1) 2))) (fma.f64 (neg.f64 z) 1 z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (-.f64 (pow.f64 (fma.f64 y z 1) 3) (pow.f64 z 3)) (/.f64 1 (fma.f64 z (+.f64 z (fma.f64 y z 1)) (pow.f64 (fma.f64 y z 1) 2))) (fma.f64 (neg.f64 (cbrt.f64 z)) (pow.f64 (cbrt.f64 z) 2) z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (-.f64 (pow.f64 (fma.f64 y z 1) 3) (pow.f64 z 3)) (/.f64 1 (fma.f64 z (+.f64 z (fma.f64 y z 1)) (pow.f64 (fma.f64 y z 1) 2))) (+.f64 (neg.f64 z) z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (+.f64 1 (pow.f64 (*.f64 y z) 3)) (/.f64 1 (+.f64 (pow.f64 (*.f64 y z) 2) (-.f64 1 (*.f64 y z)))) (neg.f64 z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (+.f64 1 (pow.f64 (*.f64 y z) 3)) (/.f64 1 (+.f64 (pow.f64 (*.f64 y z) 2) (-.f64 1 (*.f64 y z)))) (*.f64 (neg.f64 z) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (-.f64 (pow.f64 (fma.f64 y z 1) 2) (*.f64 z z)) (/.f64 1 (+.f64 z (fma.f64 y z 1))) (fma.f64 (neg.f64 z) 1 z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (-.f64 (pow.f64 (fma.f64 y z 1) 2) (*.f64 z z)) (/.f64 1 (+.f64 z (fma.f64 y z 1))) (fma.f64 (neg.f64 (cbrt.f64 z)) (pow.f64 (cbrt.f64 z) 2) z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (-.f64 (pow.f64 (fma.f64 y z 1) 2) (*.f64 z z)) (/.f64 1 (+.f64 z (fma.f64 y z 1))) (+.f64 (neg.f64 z) z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (+.f64 (pow.f64 (*.f64 y z) 2) -1) (/.f64 1 (fma.f64 y z -1)) (neg.f64 z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (+.f64 (pow.f64 (*.f64 y z) 2) -1) (/.f64 1 (fma.f64 y z -1)) (*.f64 (neg.f64 z) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (-.f64 1 z)) 2) (cbrt.f64 (-.f64 1 z)) (*.f64 y z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (neg.f64 z)) 2) (cbrt.f64 (neg.f64 z)) (fma.f64 y z 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (-.f64 1 z)) (sqrt.f64 (-.f64 1 z)) (*.f64 y z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (neg.f64 z)) (sqrt.f64 (neg.f64 z)) (fma.f64 y z 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (neg.f64 (sqrt.f64 z)) (sqrt.f64 z) (fma.f64 y z 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 -1 z (fma.f64 y z 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (+.f64 (sqrt.f64 (fma.f64 y z 1)) (sqrt.f64 z)) (-.f64 (sqrt.f64 (fma.f64 y z 1)) (sqrt.f64 z)) (fma.f64 (neg.f64 z) 1 z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (+.f64 (sqrt.f64 (fma.f64 y z 1)) (sqrt.f64 z)) (-.f64 (sqrt.f64 (fma.f64 y z 1)) (sqrt.f64 z)) (fma.f64 (neg.f64 (cbrt.f64 z)) (pow.f64 (cbrt.f64 z) 2) z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (+.f64 (sqrt.f64 (fma.f64 y z 1)) (sqrt.f64 z)) (-.f64 (sqrt.f64 (fma.f64 y z 1)) (sqrt.f64 z)) (+.f64 (neg.f64 z) z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (neg.f64 (pow.f64 (cbrt.f64 z) 2)) (cbrt.f64 z) (fma.f64 y z 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 y (pow.f64 (cbrt.f64 z) 2)) (cbrt.f64 z) (-.f64 1 z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 y (pow.f64 (cbrt.f64 z) 2)) (cbrt.f64 z) (*.f64 (-.f64 1 z) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 y (sqrt.f64 z)) (sqrt.f64 z) (-.f64 1 z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 y (sqrt.f64 z)) (sqrt.f64 z) (*.f64 (-.f64 1 z) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 z (pow.f64 (cbrt.f64 y) 2)) (cbrt.f64 y) (-.f64 1 z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 z (pow.f64 (cbrt.f64 y) 2)) (cbrt.f64 y) (*.f64 (-.f64 1 z) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 z (sqrt.f64 y)) (sqrt.f64 y) (-.f64 1 z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 z (sqrt.f64 y)) (sqrt.f64 y) (*.f64 (-.f64 1 z) 1))))))

simplify77.0ms (1%)

Algorithm
egg-herbie
Rules
987×fma-def_binary64
588×fma-neg_binary64
151×cancel-sign-sub-inv_binary64
128×distribute-rgt-in_binary64
109×unsub-neg_binary64
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
026411
163375
2166339
3440339
4945339
51730339
62788339
73077339
83093339
93093339
Stop Event
saturated
Counts
210 → 192
Calls
Call 1
Inputs
(*.f64 (-.f64 1 z) x)
(+.f64 (*.f64 y (*.f64 z x)) (*.f64 (-.f64 1 z) x))
(+.f64 (*.f64 y (*.f64 z x)) (*.f64 (-.f64 1 z) x))
(+.f64 (*.f64 y (*.f64 z x)) (*.f64 (-.f64 1 z) x))
(*.f64 y (*.f64 z x))
(+.f64 (*.f64 y (*.f64 z x)) (*.f64 (-.f64 1 z) x))
(+.f64 (*.f64 y (*.f64 z x)) (*.f64 (-.f64 1 z) x))
(+.f64 (*.f64 y (*.f64 z x)) (*.f64 (-.f64 1 z) x))
(*.f64 y (*.f64 z x))
(+.f64 (*.f64 y (*.f64 z x)) (*.f64 (-.f64 1 z) x))
(+.f64 (*.f64 y (*.f64 z x)) (*.f64 (-.f64 1 z) x))
(+.f64 (*.f64 y (*.f64 z x)) (*.f64 (-.f64 1 z) x))
x
(+.f64 (*.f64 z (*.f64 (-.f64 y 1) x)) x)
(+.f64 (*.f64 z (*.f64 (-.f64 y 1) x)) x)
(+.f64 (*.f64 z (*.f64 (-.f64 y 1) x)) x)
(*.f64 z (*.f64 (-.f64 y 1) x))
(+.f64 (*.f64 z (*.f64 (-.f64 y 1) x)) x)
(+.f64 (*.f64 z (*.f64 (-.f64 y 1) x)) x)
(+.f64 (*.f64 z (*.f64 (-.f64 y 1) x)) x)
(*.f64 -1 (*.f64 (+.f64 1 (*.f64 -1 y)) (*.f64 z x)))
(+.f64 (*.f64 -1 (*.f64 (+.f64 1 (*.f64 -1 y)) (*.f64 z x))) x)
(+.f64 (*.f64 -1 (*.f64 (+.f64 1 (*.f64 -1 y)) (*.f64 z x))) x)
(+.f64 (*.f64 -1 (*.f64 (+.f64 1 (*.f64 -1 y)) (*.f64 z x))) x)
(-.f64 1 z)
(*.f64 y z)
(*.f64 y z)
1
(+.f64 1 (*.f64 z (-.f64 y 1)))
(+.f64 1 (*.f64 z (-.f64 y 1)))
(+.f64 1 (*.f64 z (-.f64 y 1)))
(*.f64 z (-.f64 y 1))
(+.f64 1 (*.f64 z (-.f64 y 1)))
(+.f64 1 (*.f64 z (-.f64 y 1)))
(+.f64 1 (*.f64 z (-.f64 y 1)))
(*.f64 -1 (*.f64 (+.f64 1 (*.f64 -1 y)) z))
(+.f64 (*.f64 -1 (*.f64 (+.f64 1 (*.f64 -1 y)) z)) 1)
(+.f64 (*.f64 -1 (*.f64 (+.f64 1 (*.f64 -1 y)) z)) 1)
(+.f64 (*.f64 -1 (*.f64 (+.f64 1 (*.f64 -1 y)) z)) 1)
Outputs
(*.f64 (-.f64 1 z) x)
(+.f64 (*.f64 y (*.f64 z x)) (*.f64 (-.f64 1 z) x))
(fma.f64 y (*.f64 z x) (*.f64 (-.f64 1 z) x))
(*.f64 x (+.f64 (-.f64 1 z) (*.f64 z y)))
(*.f64 x (fma.f64 z y (-.f64 1 z)))
(*.f64 x (-.f64 (fma.f64 z y 1) z))
(+.f64 (*.f64 y (*.f64 z x)) (*.f64 (-.f64 1 z) x))
(fma.f64 y (*.f64 z x) (*.f64 (-.f64 1 z) x))
(*.f64 x (+.f64 (-.f64 1 z) (*.f64 z y)))
(*.f64 x (fma.f64 z y (-.f64 1 z)))
(*.f64 x (-.f64 (fma.f64 z y 1) z))
(+.f64 (*.f64 y (*.f64 z x)) (*.f64 (-.f64 1 z) x))
(fma.f64 y (*.f64 z x) (*.f64 (-.f64 1 z) x))
(*.f64 x (+.f64 (-.f64 1 z) (*.f64 z y)))
(*.f64 x (fma.f64 z y (-.f64 1 z)))
(*.f64 x (-.f64 (fma.f64 z y 1) z))
(*.f64 y (*.f64 z x))
(*.f64 x (*.f64 z y))
(+.f64 (*.f64 y (*.f64 z x)) (*.f64 (-.f64 1 z) x))
(fma.f64 y (*.f64 z x) (*.f64 (-.f64 1 z) x))
(*.f64 x (+.f64 (-.f64 1 z) (*.f64 z y)))
(*.f64 x (fma.f64 z y (-.f64 1 z)))
(*.f64 x (-.f64 (fma.f64 z y 1) z))
(+.f64 (*.f64 y (*.f64 z x)) (*.f64 (-.f64 1 z) x))
(fma.f64 y (*.f64 z x) (*.f64 (-.f64 1 z) x))
(*.f64 x (+.f64 (-.f64 1 z) (*.f64 z y)))
(*.f64 x (fma.f64 z y (-.f64 1 z)))
(*.f64 x (-.f64 (fma.f64 z y 1) z))
(+.f64 (*.f64 y (*.f64 z x)) (*.f64 (-.f64 1 z) x))
(fma.f64 y (*.f64 z x) (*.f64 (-.f64 1 z) x))
(*.f64 x (+.f64 (-.f64 1 z) (*.f64 z y)))
(*.f64 x (fma.f64 z y (-.f64 1 z)))
(*.f64 x (-.f64 (fma.f64 z y 1) z))
(*.f64 y (*.f64 z x))
(*.f64 x (*.f64 z y))
(+.f64 (*.f64 y (*.f64 z x)) (*.f64 (-.f64 1 z) x))
(fma.f64 y (*.f64 z x) (*.f64 (-.f64 1 z) x))
(*.f64 x (+.f64 (-.f64 1 z) (*.f64 z y)))
(*.f64 x (fma.f64 z y (-.f64 1 z)))
(*.f64 x (-.f64 (fma.f64 z y 1) z))
(+.f64 (*.f64 y (*.f64 z x)) (*.f64 (-.f64 1 z) x))
(fma.f64 y (*.f64 z x) (*.f64 (-.f64 1 z) x))
(*.f64 x (+.f64 (-.f64 1 z) (*.f64 z y)))
(*.f64 x (fma.f64 z y (-.f64 1 z)))
(*.f64 x (-.f64 (fma.f64 z y 1) z))
(+.f64 (*.f64 y (*.f64 z x)) (*.f64 (-.f64 1 z) x))
(fma.f64 y (*.f64 z x) (*.f64 (-.f64 1 z) x))
(*.f64 x (+.f64 (-.f64 1 z) (*.f64 z y)))
(*.f64 x (fma.f64 z y (-.f64 1 z)))
(*.f64 x (-.f64 (fma.f64 z y 1) z))
x
(+.f64 (*.f64 z (*.f64 (-.f64 y 1) x)) x)
(fma.f64 y (*.f64 z x) (*.f64 (-.f64 1 z) x))
(*.f64 x (+.f64 (-.f64 1 z) (*.f64 z y)))
(*.f64 x (fma.f64 z y (-.f64 1 z)))
(*.f64 x (-.f64 (fma.f64 z y 1) z))
(+.f64 (*.f64 z (*.f64 (-.f64 y 1) x)) x)
(fma.f64 y (*.f64 z x) (*.f64 (-.f64 1 z) x))
(*.f64 x (+.f64 (-.f64 1 z) (*.f64 z y)))
(*.f64 x (fma.f64 z y (-.f64 1 z)))
(*.f64 x (-.f64 (fma.f64 z y 1) z))
(+.f64 (*.f64 z (*.f64 (-.f64 y 1) x)) x)
(fma.f64 y (*.f64 z x) (*.f64 (-.f64 1 z) x))
(*.f64 x (+.f64 (-.f64 1 z) (*.f64 z y)))
(*.f64 x (fma.f64 z y (-.f64 1 z)))
(*.f64 x (-.f64 (fma.f64 z y 1) z))
(*.f64 z (*.f64 (-.f64 y 1) x))
(*.f64 z (*.f64 x (+.f64 y -1)))
(*.f64 z (-.f64 (*.f64 x y) x))
(+.f64 (*.f64 z (*.f64 (-.f64 y 1) x)) x)
(fma.f64 y (*.f64 z x) (*.f64 (-.f64 1 z) x))
(*.f64 x (+.f64 (-.f64 1 z) (*.f64 z y)))
(*.f64 x (fma.f64 z y (-.f64 1 z)))
(*.f64 x (-.f64 (fma.f64 z y 1) z))
(+.f64 (*.f64 z (*.f64 (-.f64 y 1) x)) x)
(fma.f64 y (*.f64 z x) (*.f64 (-.f64 1 z) x))
(*.f64 x (+.f64 (-.f64 1 z) (*.f64 z y)))
(*.f64 x (fma.f64 z y (-.f64 1 z)))
(*.f64 x (-.f64 (fma.f64 z y 1) z))
(+.f64 (*.f64 z (*.f64 (-.f64 y 1) x)) x)
(fma.f64 y (*.f64 z x) (*.f64 (-.f64 1 z) x))
(*.f64 x (+.f64 (-.f64 1 z) (*.f64 z y)))
(*.f64 x (fma.f64 z y (-.f64 1 z)))
(*.f64 x (-.f64 (fma.f64 z y 1) z))
(*.f64 -1 (*.f64 (+.f64 1 (*.f64 -1 y)) (*.f64 z x)))
(*.f64 z (*.f64 x (+.f64 y -1)))
(*.f64 z (-.f64 (*.f64 x y) x))
(+.f64 (*.f64 -1 (*.f64 (+.f64 1 (*.f64 -1 y)) (*.f64 z x))) x)
(fma.f64 y (*.f64 z x) (*.f64 (-.f64 1 z) x))
(*.f64 x (+.f64 (-.f64 1 z) (*.f64 z y)))
(*.f64 x (fma.f64 z y (-.f64 1 z)))
(*.f64 x (-.f64 (fma.f64 z y 1) z))
(+.f64 (*.f64 -1 (*.f64 (+.f64 1 (*.f64 -1 y)) (*.f64 z x))) x)
(fma.f64 y (*.f64 z x) (*.f64 (-.f64 1 z) x))
(*.f64 x (+.f64 (-.f64 1 z) (*.f64 z y)))
(*.f64 x (fma.f64 z y (-.f64 1 z)))
(*.f64 x (-.f64 (fma.f64 z y 1) z))
(+.f64 (*.f64 -1 (*.f64 (+.f64 1 (*.f64 -1 y)) (*.f64 z x))) x)
(fma.f64 y (*.f64 z x) (*.f64 (-.f64 1 z) x))
(*.f64 x (+.f64 (-.f64 1 z) (*.f64 z y)))
(*.f64 x (fma.f64 z y (-.f64 1 z)))
(*.f64 x (-.f64 (fma.f64 z y 1) z))
(-.f64 1 z)
(*.f64 y z)
(*.f64 z y)
(*.f64 y z)
(*.f64 z y)
1
(+.f64 1 (*.f64 z (-.f64 y 1)))
(+.f64 1 (*.f64 z (+.f64 y -1)))
(fma.f64 z (+.f64 y -1) 1)
(fma.f64 z y (-.f64 1 z))
(-.f64 (fma.f64 z y 1) z)
(+.f64 1 (*.f64 z (-.f64 y 1)))
(+.f64 1 (*.f64 z (+.f64 y -1)))
(fma.f64 z (+.f64 y -1) 1)
(fma.f64 z y (-.f64 1 z))
(-.f64 (fma.f64 z y 1) z)
(+.f64 1 (*.f64 z (-.f64 y 1)))
(+.f64 1 (*.f64 z (+.f64 y -1)))
(fma.f64 z (+.f64 y -1) 1)
(fma.f64 z y (-.f64 1 z))
(-.f64 (fma.f64 z y 1) z)
(*.f64 z (-.f64 y 1))
(*.f64 z (+.f64 y -1))
(-.f64 (*.f64 z y) z)
(+.f64 1 (*.f64 z (-.f64 y 1)))
(+.f64 1 (*.f64 z (+.f64 y -1)))
(fma.f64 z (+.f64 y -1) 1)
(fma.f64 z y (-.f64 1 z))
(-.f64 (fma.f64 z y 1) z)
(+.f64 1 (*.f64 z (-.f64 y 1)))
(+.f64 1 (*.f64 z (+.f64 y -1)))
(fma.f64 z (+.f64 y -1) 1)
(fma.f64 z y (-.f64 1 z))
(-.f64 (fma.f64 z y 1) z)
(+.f64 1 (*.f64 z (-.f64 y 1)))
(+.f64 1 (*.f64 z (+.f64 y -1)))
(fma.f64 z (+.f64 y -1) 1)
(fma.f64 z y (-.f64 1 z))
(-.f64 (fma.f64 z y 1) z)
(*.f64 -1 (*.f64 (+.f64 1 (*.f64 -1 y)) z))
(*.f64 z (+.f64 y -1))
(-.f64 (*.f64 z y) z)
(+.f64 (*.f64 -1 (*.f64 (+.f64 1 (*.f64 -1 y)) z)) 1)
(+.f64 1 (*.f64 z (+.f64 y -1)))
(fma.f64 z (+.f64 y -1) 1)
(fma.f64 z y (-.f64 1 z))
(-.f64 (fma.f64 z y 1) z)
(+.f64 (*.f64 -1 (*.f64 (+.f64 1 (*.f64 -1 y)) z)) 1)
(+.f64 1 (*.f64 z (+.f64 y -1)))
(fma.f64 z (+.f64 y -1) 1)
(fma.f64 z y (-.f64 1 z))
(-.f64 (fma.f64 z y 1) z)
(+.f64 (*.f64 -1 (*.f64 (+.f64 1 (*.f64 -1 y)) z)) 1)
(+.f64 1 (*.f64 z (+.f64 y -1)))
(fma.f64 z (+.f64 y -1) 1)
(fma.f64 z y (-.f64 1 z))
(-.f64 (fma.f64 z y 1) z)

localize6.0ms (0.1%)

Local error

Found 1 expressions with local error:

NewErrorProgram
2.8b
(*.f64 y (*.f64 z x))
Compiler

Compiled 14 to 5 computations (64.3% saved)

series5.0ms (0.1%)

Counts
1 → 0
Calls

9 calls:

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

rewrite47.0ms (0.6%)

Algorithm
batch-egg-rewrite
Rules
582×pow1_binary64
532×add-log-exp_binary64
532×log1p-expm1-u_binary64
532×expm1-log1p-u_binary64
519×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
067
11197
214547
Stop Event
node limit
Counts
1 → 11
Calls
Call 1
Inputs
(*.f64 y (*.f64 z x))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 y (*.f64 z x))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 y (*.f64 z x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 y (*.f64 z x)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 y (*.f64 z x))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 y (*.f64 z x))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 y (*.f64 z x)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 y) (*.f64 z x)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 y (*.f64 z x)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 y (*.f64 z x))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 y (*.f64 z x))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 y (*.f64 z x))))))))

simplify8.0ms (0.1%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
000
Stop Event
saturated
Counts
11 → 11
Calls
Call 1
Inputs
Outputs

localize6.0ms (0.1%)

Local error

Found 1 expressions with local error:

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

Compiled 13 to 5 computations (61.5% saved)

series2.0ms (0%)

Counts
1 → 24
Calls

6 calls:

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

rewrite55.0ms (0.7%)

Algorithm
batch-egg-rewrite
Rules
651×pow1_binary64
606×add-log-exp_binary64
606×log1p-expm1-u_binary64
606×expm1-log1p-u_binary64
593×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
057
11137
216547
Stop Event
node limit
Counts
1 → 40
Calls
Call 1
Inputs
(-.f64 x (*.f64 z x))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 x (*.f64 x (neg.f64 z)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 x (*.f64 (*.f64 x (neg.f64 z)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (-.f64 x (*.f64 x z)) (fma.f64 (neg.f64 z) x (*.f64 x z)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (-.f64 x (*.f64 x z)) (fma.f64 (neg.f64 x) z (*.f64 x z)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (-.f64 x (*.f64 x z)) (fma.f64 (*.f64 x (neg.f64 z)) 1 (*.f64 x z)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (-.f64 x (*.f64 x z)) (fma.f64 (neg.f64 (cbrt.f64 (*.f64 x z))) (pow.f64 (cbrt.f64 (*.f64 x z)) 2) (*.f64 x z)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (-.f64 x (*.f64 x z)) (fma.f64 (neg.f64 (sqrt.f64 (*.f64 x z))) (sqrt.f64 (*.f64 x z)) (*.f64 x z)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 x (neg.f64 z)) x)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 x (-.f64 1 z))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 x (+.f64 1 (neg.f64 z)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 x (*.f64 x z)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (-.f64 x (*.f64 x z)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (-.f64 x (*.f64 x z))) (pow.f64 (cbrt.f64 (-.f64 x (*.f64 x z))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (-.f64 x (*.f64 x z))) 2) (cbrt.f64 (-.f64 x (*.f64 x z))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (-.f64 x (*.f64 x z))) (sqrt.f64 (-.f64 x (*.f64 x z))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 (pow.f64 x 3) (pow.f64 (*.f64 x z) 3)) (/.f64 1 (fma.f64 x x (*.f64 (*.f64 x z) (+.f64 x (*.f64 x z))))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 (*.f64 x x) (pow.f64 (*.f64 x z) 2)) (/.f64 1 (+.f64 x (*.f64 x z))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (sqrt.f64 x) (sqrt.f64 (*.f64 x z))) (-.f64 (sqrt.f64 x) (sqrt.f64 (*.f64 x z))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (neg.f64 z) 1) x)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (fma.f64 x x (*.f64 (*.f64 x z) (+.f64 x (*.f64 x z)))) (-.f64 (pow.f64 x 3) (pow.f64 (*.f64 x z) 3))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (+.f64 x (*.f64 x z)) (-.f64 (*.f64 x x) (pow.f64 (*.f64 x z) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 x 3) (pow.f64 (*.f64 x z) 3)) (fma.f64 x x (*.f64 (*.f64 x z) (+.f64 x (*.f64 x z)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 x x) (pow.f64 (*.f64 x z) 2)) (+.f64 x (*.f64 x z)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (-.f64 (pow.f64 x 3) (pow.f64 (*.f64 x z) 3))) (neg.f64 (fma.f64 x x (*.f64 (*.f64 x z) (+.f64 x (*.f64 x z))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (-.f64 (*.f64 x x) (pow.f64 (*.f64 x z) 2))) (neg.f64 (+.f64 x (*.f64 x z))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 x 3) (pow.f64 (*.f64 x (neg.f64 z)) 3)) (+.f64 (*.f64 x x) (-.f64 (*.f64 (*.f64 x (neg.f64 z)) (*.f64 x (neg.f64 z))) (*.f64 x (*.f64 x (neg.f64 z))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 x x) (*.f64 (*.f64 x (neg.f64 z)) (*.f64 x (neg.f64 z)))) (-.f64 x (*.f64 x (neg.f64 z))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (-.f64 x (*.f64 x z)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (-.f64 x (*.f64 x z)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (-.f64 x (*.f64 x z))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (-.f64 x (*.f64 x z))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (-.f64 x (*.f64 x z)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (-.f64 x (*.f64 x z))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (-.f64 x (*.f64 x z)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (-.f64 x (*.f64 x z))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (-.f64 x (*.f64 x z))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (-.f64 x (*.f64 x z))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 x (*.f64 x (neg.f64 z)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 x) 2) (cbrt.f64 x) (*.f64 x (neg.f64 z)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 x) (sqrt.f64 x) (*.f64 x (neg.f64 z)))))))

simplify24.0ms (0.3%)

Algorithm
egg-herbie
Rules
145×fma-def_binary64
71×fma-neg_binary64
21×cancel-sign-sub-inv_binary64
19×associate-*r*_binary64
18×sub-neg_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
013160
128160
249160
388160
4136160
5223160
6371160
7450160
8518160
9524160
Stop Event
saturated
Counts
64 → 47
Calls
Call 1
Inputs
(*.f64 (-.f64 1 z) x)
(*.f64 (-.f64 1 z) x)
(*.f64 (-.f64 1 z) x)
(*.f64 (-.f64 1 z) x)
(*.f64 (-.f64 1 z) x)
(*.f64 (-.f64 1 z) x)
(*.f64 (-.f64 1 z) x)
(*.f64 (-.f64 1 z) x)
(*.f64 (+.f64 (*.f64 -1 z) 1) x)
(*.f64 (+.f64 (*.f64 -1 z) 1) x)
(*.f64 (+.f64 (*.f64 -1 z) 1) x)
(*.f64 (+.f64 (*.f64 -1 z) 1) x)
x
(+.f64 (*.f64 -1 (*.f64 z x)) x)
(+.f64 (*.f64 -1 (*.f64 z x)) x)
(+.f64 (*.f64 -1 (*.f64 z x)) x)
(*.f64 -1 (*.f64 z x))
(+.f64 (*.f64 -1 (*.f64 z x)) x)
(+.f64 (*.f64 -1 (*.f64 z x)) x)
(+.f64 (*.f64 -1 (*.f64 z x)) x)
(*.f64 -1 (*.f64 z x))
(+.f64 (*.f64 -1 (*.f64 z x)) x)
(+.f64 (*.f64 -1 (*.f64 z x)) x)
(+.f64 (*.f64 -1 (*.f64 z x)) x)
Outputs
(*.f64 (-.f64 1 z) x)
(*.f64 x (-.f64 1 z))
(fma.f64 (neg.f64 z) x x)
(fma.f64 z (neg.f64 x) x)
(*.f64 (-.f64 1 z) x)
(*.f64 x (-.f64 1 z))
(fma.f64 (neg.f64 z) x x)
(fma.f64 z (neg.f64 x) x)
(*.f64 (-.f64 1 z) x)
(*.f64 x (-.f64 1 z))
(fma.f64 (neg.f64 z) x x)
(fma.f64 z (neg.f64 x) x)
(*.f64 (-.f64 1 z) x)
(*.f64 x (-.f64 1 z))
(fma.f64 (neg.f64 z) x x)
(fma.f64 z (neg.f64 x) x)
(*.f64 (-.f64 1 z) x)
(*.f64 x (-.f64 1 z))
(fma.f64 (neg.f64 z) x x)
(fma.f64 z (neg.f64 x) x)
(*.f64 (-.f64 1 z) x)
(*.f64 x (-.f64 1 z))
(fma.f64 (neg.f64 z) x x)
(fma.f64 z (neg.f64 x) x)
(*.f64 (-.f64 1 z) x)
(*.f64 x (-.f64 1 z))
(fma.f64 (neg.f64 z) x x)
(fma.f64 z (neg.f64 x) x)
(*.f64 (-.f64 1 z) x)
(*.f64 x (-.f64 1 z))
(fma.f64 (neg.f64 z) x x)
(fma.f64 z (neg.f64 x) x)
(*.f64 (+.f64 (*.f64 -1 z) 1) x)
(*.f64 x (-.f64 1 z))
(fma.f64 (neg.f64 z) x x)
(fma.f64 z (neg.f64 x) x)
(*.f64 (+.f64 (*.f64 -1 z) 1) x)
(*.f64 x (-.f64 1 z))
(fma.f64 (neg.f64 z) x x)
(fma.f64 z (neg.f64 x) x)
(*.f64 (+.f64 (*.f64 -1 z) 1) x)
(*.f64 x (-.f64 1 z))
(fma.f64 (neg.f64 z) x x)
(fma.f64 z (neg.f64 x) x)
(*.f64 (+.f64 (*.f64 -1 z) 1) x)
(*.f64 x (-.f64 1 z))
(fma.f64 (neg.f64 z) x x)
(fma.f64 z (neg.f64 x) x)
x
(+.f64 (*.f64 -1 (*.f64 z x)) x)
(*.f64 x (-.f64 1 z))
(fma.f64 (neg.f64 z) x x)
(fma.f64 z (neg.f64 x) x)
(+.f64 (*.f64 -1 (*.f64 z x)) x)
(*.f64 x (-.f64 1 z))
(fma.f64 (neg.f64 z) x x)
(fma.f64 z (neg.f64 x) x)
(+.f64 (*.f64 -1 (*.f64 z x)) x)
(*.f64 x (-.f64 1 z))
(fma.f64 (neg.f64 z) x x)
(fma.f64 z (neg.f64 x) x)
(*.f64 -1 (*.f64 z x))
(*.f64 (neg.f64 z) x)
(*.f64 z (neg.f64 x))
(+.f64 (*.f64 -1 (*.f64 z x)) x)
(*.f64 x (-.f64 1 z))
(fma.f64 (neg.f64 z) x x)
(fma.f64 z (neg.f64 x) x)
(+.f64 (*.f64 -1 (*.f64 z x)) x)
(*.f64 x (-.f64 1 z))
(fma.f64 (neg.f64 z) x x)
(fma.f64 z (neg.f64 x) x)
(+.f64 (*.f64 -1 (*.f64 z x)) x)
(*.f64 x (-.f64 1 z))
(fma.f64 (neg.f64 z) x x)
(fma.f64 z (neg.f64 x) x)
(*.f64 -1 (*.f64 z x))
(*.f64 (neg.f64 z) x)
(*.f64 z (neg.f64 x))
(+.f64 (*.f64 -1 (*.f64 z x)) x)
(*.f64 x (-.f64 1 z))
(fma.f64 (neg.f64 z) x x)
(fma.f64 z (neg.f64 x) x)
(+.f64 (*.f64 -1 (*.f64 z x)) x)
(*.f64 x (-.f64 1 z))
(fma.f64 (neg.f64 z) x x)
(fma.f64 z (neg.f64 x) x)
(+.f64 (*.f64 -1 (*.f64 z x)) x)
(*.f64 x (-.f64 1 z))
(fma.f64 (neg.f64 z) x x)
(fma.f64 z (neg.f64 x) x)

localize7.0ms (0.1%)

Local error

Found 2 expressions with local error:

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

Compiled 21 to 6 computations (71.4% saved)

series11.0ms (0.1%)

Counts
2 → 60
Calls

15 calls:

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

rewrite63.0ms (0.8%)

Algorithm
batch-egg-rewrite
Rules
826×pow1_binary64
764×add-log-exp_binary64
764×log1p-expm1-u_binary64
764×expm1-log1p-u_binary64
747×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0717
115017
2206117
Stop Event
node limit
Counts
2 → 57
Calls
Call 1
Inputs
(*.f64 z (-.f64 (*.f64 y x) x))
(-.f64 (*.f64 y x) x)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (*.f64 y x) z) (*.f64 (neg.f64 x) z))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 z (*.f64 y x)) (*.f64 z (neg.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 z (*.f64 x (-.f64 y 1)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 (pow.f64 (*.f64 y x) 3) (pow.f64 x 3)) z) (+.f64 (pow.f64 (*.f64 y x) 2) (*.f64 x (fma.f64 y x x))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 (pow.f64 (*.f64 y x) 2) (*.f64 x x)) z) (fma.f64 y x x))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 z (-.f64 (pow.f64 (*.f64 y x) 3) (pow.f64 x 3))) (+.f64 (pow.f64 (*.f64 y x) 2) (*.f64 x (fma.f64 y x x))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 z (-.f64 (pow.f64 (*.f64 y x) 2) (*.f64 x x))) (fma.f64 y x x))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 z (*.f64 x (-.f64 y 1))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 z (*.f64 x (-.f64 y 1))) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 z (*.f64 x (-.f64 y 1)))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 z (*.f64 x (-.f64 y 1)))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 z (*.f64 x (-.f64 y 1))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 (*.f64 x (-.f64 y 1))) z))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 z (*.f64 x (-.f64 y 1))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 z 3) (pow.f64 (*.f64 x (-.f64 y 1)) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 (*.f64 x (-.f64 y 1)) 3) (pow.f64 z 3)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 z (*.f64 x (-.f64 y 1)))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 z (*.f64 x (-.f64 y 1)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 z (*.f64 x (-.f64 y 1)))))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 y x) (neg.f64 x))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 y x) (*.f64 (neg.f64 x) 1))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 x (-.f64 y 1)) (fma.f64 (neg.f64 x) 1 x))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 x (-.f64 y 1)) (fma.f64 (neg.f64 (cbrt.f64 x)) (pow.f64 (cbrt.f64 x) 2) x))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 x (-.f64 y 1)) (fma.f64 (neg.f64 (sqrt.f64 x)) (sqrt.f64 x) x))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (neg.f64 x) (*.f64 y x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 x (-.f64 y 1))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x (-.f64 y 1)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (*.f64 x (-.f64 y 1)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 x (-.f64 y 1))) (pow.f64 (cbrt.f64 (*.f64 x (-.f64 y 1))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (*.f64 x (-.f64 y 1))) 2) (cbrt.f64 (*.f64 x (-.f64 y 1))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 x (-.f64 y 1))) (sqrt.f64 (*.f64 x (-.f64 y 1))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 (pow.f64 (*.f64 y x) 3) (pow.f64 x 3)) (/.f64 1 (+.f64 (pow.f64 (*.f64 y x) 2) (*.f64 x (fma.f64 y x x)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 (pow.f64 (*.f64 y x) 2) (*.f64 x x)) (/.f64 1 (fma.f64 y x x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (sqrt.f64 (*.f64 y x)) (sqrt.f64 x)) (-.f64 (sqrt.f64 (*.f64 y x)) (sqrt.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (+.f64 (pow.f64 (*.f64 y x) 2) (*.f64 x (fma.f64 y x x))) (-.f64 (pow.f64 (*.f64 y x) 3) (pow.f64 x 3))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (fma.f64 y x x) (-.f64 (pow.f64 (*.f64 y x) 2) (*.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 (*.f64 y x) 3) (pow.f64 x 3)) (+.f64 (pow.f64 (*.f64 y x) 2) (*.f64 x (fma.f64 y x x))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 (*.f64 y x) 2) (*.f64 x x)) (fma.f64 y x x))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (-.f64 (pow.f64 (*.f64 y x) 3) (pow.f64 x 3))) (neg.f64 (+.f64 (pow.f64 (*.f64 y x) 2) (*.f64 x (fma.f64 y x x)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (-.f64 (pow.f64 (*.f64 y x) 2) (*.f64 x x))) (neg.f64 (fma.f64 y x x)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (*.f64 y x) 3) (pow.f64 (neg.f64 x) 3)) (+.f64 (pow.f64 (*.f64 y x) 2) (-.f64 (*.f64 (neg.f64 x) (neg.f64 x)) (*.f64 (*.f64 y x) (neg.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 (*.f64 y x) 2) (*.f64 (neg.f64 x) (neg.f64 x))) (-.f64 (*.f64 y x) (neg.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 x (-.f64 y 1)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 x (-.f64 y 1)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 x (-.f64 y 1))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 x (-.f64 y 1))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 x (-.f64 y 1)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (*.f64 x (-.f64 y 1))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 x (-.f64 y 1)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 x (-.f64 y 1))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 x (-.f64 y 1))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 x (-.f64 y 1))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 y x (neg.f64 x))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 x y (neg.f64 x))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (*.f64 y x) (neg.f64 x))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (*.f64 y x)) 2) (cbrt.f64 (*.f64 y x)) (neg.f64 x))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (*.f64 y x)) (sqrt.f64 (*.f64 y x)) (neg.f64 x))))))

simplify118.0ms (1.6%)

Algorithm
egg-herbie
Rules
427×fma-def_binary64
226×fma-neg_binary64
80×cancel-sign-sub-inv_binary64
75×associate-*l*_binary64
75×distribute-rgt-in_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
024508
165508
2156508
3335508
4739508
51153508
61541508
71612508
Stop Event
saturated
Counts
117 → 73
Calls
Call 1
Inputs
(*.f64 (-.f64 (*.f64 y x) x) z)
(*.f64 (-.f64 (*.f64 y x) x) z)
(*.f64 (-.f64 (*.f64 y x) x) z)
(*.f64 (-.f64 (*.f64 y x) x) z)
(*.f64 (-.f64 (*.f64 y x) x) z)
(*.f64 (-.f64 (*.f64 y x) x) z)
(*.f64 (-.f64 (*.f64 y x) x) z)
(*.f64 (-.f64 (*.f64 y x) x) z)
(*.f64 (-.f64 (*.f64 y x) x) z)
(*.f64 (-.f64 (*.f64 y x) x) z)
(*.f64 (-.f64 (*.f64 y x) x) z)
(*.f64 (-.f64 (*.f64 y x) x) z)
(*.f64 -1 (*.f64 z x))
(+.f64 (*.f64 y (*.f64 z x)) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 y (*.f64 z x)) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 y (*.f64 z x)) (*.f64 -1 (*.f64 z x)))
(*.f64 y (*.f64 z x))
(+.f64 (*.f64 y (*.f64 z x)) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 y (*.f64 z x)) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 y (*.f64 z x)) (*.f64 -1 (*.f64 z x)))
(*.f64 y (*.f64 z x))
(+.f64 (*.f64 y (*.f64 z x)) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 y (*.f64 z x)) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 y (*.f64 z x)) (*.f64 -1 (*.f64 z x)))
(*.f64 z (*.f64 (-.f64 y 1) x))
(*.f64 z (*.f64 (-.f64 y 1) x))
(*.f64 z (*.f64 (-.f64 y 1) x))
(*.f64 z (*.f64 (-.f64 y 1) x))
(*.f64 z (*.f64 (-.f64 y 1) x))
(*.f64 z (*.f64 (-.f64 y 1) x))
(*.f64 z (*.f64 (-.f64 y 1) x))
(*.f64 z (*.f64 (-.f64 y 1) x))
(*.f64 -1 (*.f64 (+.f64 1 (*.f64 -1 y)) (*.f64 z x)))
(*.f64 -1 (*.f64 (+.f64 1 (*.f64 -1 y)) (*.f64 z x)))
(*.f64 -1 (*.f64 (+.f64 1 (*.f64 -1 y)) (*.f64 z x)))
(*.f64 -1 (*.f64 (+.f64 1 (*.f64 -1 y)) (*.f64 z x)))
(*.f64 -1 x)
(+.f64 (*.f64 y x) (*.f64 -1 x))
(+.f64 (*.f64 y x) (*.f64 -1 x))
(+.f64 (*.f64 y x) (*.f64 -1 x))
(*.f64 y x)
(+.f64 (*.f64 y x) (*.f64 -1 x))
(+.f64 (*.f64 y x) (*.f64 -1 x))
(+.f64 (*.f64 y x) (*.f64 -1 x))
(*.f64 y x)
(+.f64 (*.f64 y x) (*.f64 -1 x))
(+.f64 (*.f64 y x) (*.f64 -1 x))
(+.f64 (*.f64 y x) (*.f64 -1 x))
(*.f64 (-.f64 y 1) x)
(*.f64 (-.f64 y 1) x)
(*.f64 (-.f64 y 1) x)
(*.f64 (-.f64 y 1) x)
(*.f64 (-.f64 y 1) x)
(*.f64 (-.f64 y 1) x)
(*.f64 (-.f64 y 1) x)
(*.f64 (-.f64 y 1) x)
(*.f64 -1 (*.f64 (+.f64 1 (*.f64 -1 y)) x))
(*.f64 -1 (*.f64 (+.f64 1 (*.f64 -1 y)) x))
(*.f64 -1 (*.f64 (+.f64 1 (*.f64 -1 y)) x))
(*.f64 -1 (*.f64 (+.f64 1 (*.f64 -1 y)) x))
Outputs
(*.f64 (-.f64 (*.f64 y x) x) z)
(*.f64 z (-.f64 (*.f64 y x) x))
(*.f64 x (*.f64 z (+.f64 y -1)))
(*.f64 x (-.f64 (*.f64 y z) z))
(*.f64 (-.f64 (*.f64 y x) x) z)
(*.f64 z (-.f64 (*.f64 y x) x))
(*.f64 x (*.f64 z (+.f64 y -1)))
(*.f64 x (-.f64 (*.f64 y z) z))
(*.f64 (-.f64 (*.f64 y x) x) z)
(*.f64 z (-.f64 (*.f64 y x) x))
(*.f64 x (*.f64 z (+.f64 y -1)))
(*.f64 x (-.f64 (*.f64 y z) z))
(*.f64 (-.f64 (*.f64 y x) x) z)
(*.f64 z (-.f64 (*.f64 y x) x))
(*.f64 x (*.f64 z (+.f64 y -1)))
(*.f64 x (-.f64 (*.f64 y z) z))
(*.f64 (-.f64 (*.f64 y x) x) z)
(*.f64 z (-.f64 (*.f64 y x) x))
(*.f64 x (*.f64 z (+.f64 y -1)))
(*.f64 x (-.f64 (*.f64 y z) z))
(*.f64 (-.f64 (*.f64 y x) x) z)
(*.f64 z (-.f64 (*.f64 y x) x))
(*.f64 x (*.f64 z (+.f64 y -1)))
(*.f64 x (-.f64 (*.f64 y z) z))
(*.f64 (-.f64 (*.f64 y x) x) z)
(*.f64 z (-.f64 (*.f64 y x) x))
(*.f64 x (*.f64 z (+.f64 y -1)))
(*.f64 x (-.f64 (*.f64 y z) z))
(*.f64 (-.f64 (*.f64 y x) x) z)
(*.f64 z (-.f64 (*.f64 y x) x))
(*.f64 x (*.f64 z (+.f64 y -1)))
(*.f64 x (-.f64 (*.f64 y z) z))
(*.f64 (-.f64 (*.f64 y x) x) z)
(*.f64 z (-.f64 (*.f64 y x) x))
(*.f64 x (*.f64 z (+.f64 y -1)))
(*.f64 x (-.f64 (*.f64 y z) z))
(*.f64 (-.f64 (*.f64 y x) x) z)
(*.f64 z (-.f64 (*.f64 y x) x))
(*.f64 x (*.f64 z (+.f64 y -1)))
(*.f64 x (-.f64 (*.f64 y z) z))
(*.f64 (-.f64 (*.f64 y x) x) z)
(*.f64 z (-.f64 (*.f64 y x) x))
(*.f64 x (*.f64 z (+.f64 y -1)))
(*.f64 x (-.f64 (*.f64 y z) z))
(*.f64 (-.f64 (*.f64 y x) x) z)
(*.f64 z (-.f64 (*.f64 y x) x))
(*.f64 x (*.f64 z (+.f64 y -1)))
(*.f64 x (-.f64 (*.f64 y z) z))
(*.f64 -1 (*.f64 z x))
(neg.f64 (*.f64 x z))
(*.f64 x (neg.f64 z))
(+.f64 (*.f64 y (*.f64 z x)) (*.f64 -1 (*.f64 z x)))
(*.f64 z (-.f64 (*.f64 y x) x))
(*.f64 x (*.f64 z (+.f64 y -1)))
(*.f64 x (-.f64 (*.f64 y z) z))
(+.f64 (*.f64 y (*.f64 z x)) (*.f64 -1 (*.f64 z x)))
(*.f64 z (-.f64 (*.f64 y x) x))
(*.f64 x (*.f64 z (+.f64 y -1)))
(*.f64 x (-.f64 (*.f64 y z) z))
(+.f64 (*.f64 y (*.f64 z x)) (*.f64 -1 (*.f64 z x)))
(*.f64 z (-.f64 (*.f64 y x) x))
(*.f64 x (*.f64 z (+.f64 y -1)))
(*.f64 x (-.f64 (*.f64 y z) z))
(*.f64 y (*.f64 z x))
(*.f64 (*.f64 y z) x)
(*.f64 x (*.f64 y z))
(*.f64 y (*.f64 x z))
(*.f64 (*.f64 y x) z)
(+.f64 (*.f64 y (*.f64 z x)) (*.f64 -1 (*.f64 z x)))
(*.f64 z (-.f64 (*.f64 y x) x))
(*.f64 x (*.f64 z (+.f64 y -1)))
(*.f64 x (-.f64 (*.f64 y z) z))
(+.f64 (*.f64 y (*.f64 z x)) (*.f64 -1 (*.f64 z x)))
(*.f64 z (-.f64 (*.f64 y x) x))
(*.f64 x (*.f64 z (+.f64 y -1)))
(*.f64 x (-.f64 (*.f64 y z) z))
(+.f64 (*.f64 y (*.f64 z x)) (*.f64 -1 (*.f64 z x)))
(*.f64 z (-.f64 (*.f64 y x) x))
(*.f64 x (*.f64 z (+.f64 y -1)))
(*.f64 x (-.f64 (*.f64 y z) z))
(*.f64 y (*.f64 z x))
(*.f64 (*.f64 y z) x)
(*.f64 x (*.f64 y z))
(*.f64 y (*.f64 x z))
(*.f64 (*.f64 y x) z)
(+.f64 (*.f64 y (*.f64 z x)) (*.f64 -1 (*.f64 z x)))
(*.f64 z (-.f64 (*.f64 y x) x))
(*.f64 x (*.f64 z (+.f64 y -1)))
(*.f64 x (-.f64 (*.f64 y z) z))
(+.f64 (*.f64 y (*.f64 z x)) (*.f64 -1 (*.f64 z x)))
(*.f64 z (-.f64 (*.f64 y x) x))
(*.f64 x (*.f64 z (+.f64 y -1)))
(*.f64 x (-.f64 (*.f64 y z) z))
(+.f64 (*.f64 y (*.f64 z x)) (*.f64 -1 (*.f64 z x)))
(*.f64 z (-.f64 (*.f64 y x) x))
(*.f64 x (*.f64 z (+.f64 y -1)))
(*.f64 x (-.f64 (*.f64 y z) z))
(*.f64 z (*.f64 (-.f64 y 1) x))
(*.f64 z (-.f64 (*.f64 y x) x))
(*.f64 x (*.f64 z (+.f64 y -1)))
(*.f64 x (-.f64 (*.f64 y z) z))
(*.f64 z (*.f64 (-.f64 y 1) x))
(*.f64 z (-.f64 (*.f64 y x) x))
(*.f64 x (*.f64 z (+.f64 y -1)))
(*.f64 x (-.f64 (*.f64 y z) z))
(*.f64 z (*.f64 (-.f64 y 1) x))
(*.f64 z (-.f64 (*.f64 y x) x))
(*.f64 x (*.f64 z (+.f64 y -1)))
(*.f64 x (-.f64 (*.f64 y z) z))
(*.f64 z (*.f64 (-.f64 y 1) x))
(*.f64 z (-.f64 (*.f64 y x) x))
(*.f64 x (*.f64 z (+.f64 y -1)))
(*.f64 x (-.f64 (*.f64 y z) z))
(*.f64 z (*.f64 (-.f64 y 1) x))
(*.f64 z (-.f64 (*.f64 y x) x))
(*.f64 x (*.f64 z (+.f64 y -1)))
(*.f64 x (-.f64 (*.f64 y z) z))
(*.f64 z (*.f64 (-.f64 y 1) x))
(*.f64 z (-.f64 (*.f64 y x) x))
(*.f64 x (*.f64 z (+.f64 y -1)))
(*.f64 x (-.f64 (*.f64 y z) z))
(*.f64 z (*.f64 (-.f64 y 1) x))
(*.f64 z (-.f64 (*.f64 y x) x))
(*.f64 x (*.f64 z (+.f64 y -1)))
(*.f64 x (-.f64 (*.f64 y z) z))
(*.f64 z (*.f64 (-.f64 y 1) x))
(*.f64 z (-.f64 (*.f64 y x) x))
(*.f64 x (*.f64 z (+.f64 y -1)))
(*.f64 x (-.f64 (*.f64 y z) z))
(*.f64 -1 (*.f64 (+.f64 1 (*.f64 -1 y)) (*.f64 z x)))
(*.f64 z (-.f64 (*.f64 y x) x))
(*.f64 x (*.f64 z (+.f64 y -1)))
(*.f64 x (-.f64 (*.f64 y z) z))
(*.f64 -1 (*.f64 (+.f64 1 (*.f64 -1 y)) (*.f64 z x)))
(*.f64 z (-.f64 (*.f64 y x) x))
(*.f64 x (*.f64 z (+.f64 y -1)))
(*.f64 x (-.f64 (*.f64 y z) z))
(*.f64 -1 (*.f64 (+.f64 1 (*.f64 -1 y)) (*.f64 z x)))
(*.f64 z (-.f64 (*.f64 y x) x))
(*.f64 x (*.f64 z (+.f64 y -1)))
(*.f64 x (-.f64 (*.f64 y z) z))
(*.f64 -1 (*.f64 (+.f64 1 (*.f64 -1 y)) (*.f64 z x)))
(*.f64 z (-.f64 (*.f64 y x) x))
(*.f64 x (*.f64 z (+.f64 y -1)))
(*.f64 x (-.f64 (*.f64 y z) z))
(*.f64 -1 x)
(neg.f64 x)
(+.f64 (*.f64 y x) (*.f64 -1 x))
(-.f64 (*.f64 y x) x)
(+.f64 (*.f64 y x) (*.f64 -1 x))
(-.f64 (*.f64 y x) x)
(+.f64 (*.f64 y x) (*.f64 -1 x))
(-.f64 (*.f64 y x) x)
(*.f64 y x)
(+.f64 (*.f64 y x) (*.f64 -1 x))
(-.f64 (*.f64 y x) x)
(+.f64 (*.f64 y x) (*.f64 -1 x))
(-.f64 (*.f64 y x) x)
(+.f64 (*.f64 y x) (*.f64 -1 x))
(-.f64 (*.f64 y x) x)
(*.f64 y x)
(+.f64 (*.f64 y x) (*.f64 -1 x))
(-.f64 (*.f64 y x) x)
(+.f64 (*.f64 y x) (*.f64 -1 x))
(-.f64 (*.f64 y x) x)
(+.f64 (*.f64 y x) (*.f64 -1 x))
(-.f64 (*.f64 y x) x)
(*.f64 (-.f64 y 1) x)
(-.f64 (*.f64 y x) x)
(*.f64 (-.f64 y 1) x)
(-.f64 (*.f64 y x) x)
(*.f64 (-.f64 y 1) x)
(-.f64 (*.f64 y x) x)
(*.f64 (-.f64 y 1) x)
(-.f64 (*.f64 y x) x)
(*.f64 (-.f64 y 1) x)
(-.f64 (*.f64 y x) x)
(*.f64 (-.f64 y 1) x)
(-.f64 (*.f64 y x) x)
(*.f64 (-.f64 y 1) x)
(-.f64 (*.f64 y x) x)
(*.f64 (-.f64 y 1) x)
(-.f64 (*.f64 y x) x)
(*.f64 -1 (*.f64 (+.f64 1 (*.f64 -1 y)) x))
(-.f64 (*.f64 y x) x)
(*.f64 -1 (*.f64 (+.f64 1 (*.f64 -1 y)) x))
(-.f64 (*.f64 y x) x)
(*.f64 -1 (*.f64 (+.f64 1 (*.f64 -1 y)) x))
(-.f64 (*.f64 y x) x)
(*.f64 -1 (*.f64 (+.f64 1 (*.f64 -1 y)) x))
(-.f64 (*.f64 y x) x)

localize13.0ms (0.2%)

Local error

Found 3 expressions with local error:

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

Compiled 31 to 18 computations (41.9% saved)

series10.0ms (0.1%)

Counts
3 → 51
Calls

24 calls:

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

rewrite94.0ms (1.2%)

Algorithm
batch-egg-rewrite
Rules
489×log-prod_binary64
379×pow-prod-down_binary64
367×fma-def_binary64
358×exp-prod_binary64
253×pow2_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0928
119628
2271428
Stop Event
node limit
Counts
3 → 132
Calls
Call 1
Inputs
(*.f64 z (*.f64 (-.f64 y 1) x))
(*.f64 (-.f64 y 1) x)
(+.f64 (*.f64 z (*.f64 (-.f64 y 1) x)) x)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 z (*.f64 (+.f64 y -1) x)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (pow.f64 (exp.f64 z) (*.f64 (+.f64 y -1) x))) 2)) (log.f64 (cbrt.f64 (pow.f64 (exp.f64 z) (*.f64 (+.f64 y -1) x)))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (pow.f64 (exp.f64 z) (*.f64 (+.f64 y -1) x)))) (log.f64 (sqrt.f64 (pow.f64 (exp.f64 z) (*.f64 (+.f64 y -1) x)))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (*.f64 z (*.f64 (+.f64 y -1) x)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 z (*.f64 (+.f64 y -1) x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (E.f64) (log.f64 (*.f64 z (*.f64 (+.f64 y -1) x))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 z (*.f64 (+.f64 y -1) x)) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 z (*.f64 (+.f64 y -1) x))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 z (*.f64 (+.f64 y -1) x))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 z (*.f64 (+.f64 y -1) x)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (log.f64 (*.f64 z (*.f64 (+.f64 y -1) x)))) 2)) (cbrt.f64 (log.f64 (*.f64 z (*.f64 (+.f64 y -1) x)))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (sqrt.f64 (log.f64 (*.f64 z (*.f64 (+.f64 y -1) x))))) (sqrt.f64 (log.f64 (*.f64 z (*.f64 (+.f64 y -1) x)))))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 z (*.f64 (+.f64 y -1) x)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 z) (*.f64 (+.f64 y -1) x)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (*.f64 z (*.f64 (+.f64 y -1) x)))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 z (*.f64 (+.f64 y -1) x)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 z (*.f64 (+.f64 y -1) x))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 z (*.f64 (+.f64 y -1) x))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 z (*.f64 (+.f64 y -1) x))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (*.f64 z (*.f64 (+.f64 y -1) x))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (cbrt.f64 (*.f64 z (*.f64 (+.f64 y -1) x)))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (sqrt.f64 (*.f64 z (*.f64 (+.f64 y -1) x)))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 3 (log.f64 (*.f64 z (*.f64 (+.f64 y -1) x)))) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (log.f64 (*.f64 z (*.f64 (+.f64 y -1) x))) 1) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (log.f64 (*.f64 z (*.f64 (+.f64 y -1) x))) 3) 1/3))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 (+.f64 y -1) x))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 y x) (*.f64 -1 x))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 x y) (*.f64 x -1))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (pow.f64 (exp.f64 x) (+.f64 y -1))) 2)) (log.f64 (cbrt.f64 (pow.f64 (exp.f64 x) (+.f64 y -1)))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (pow.f64 (exp.f64 x) (+.f64 y -1)))) (log.f64 (sqrt.f64 (pow.f64 (exp.f64 x) (+.f64 y -1)))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (*.f64 (+.f64 y -1) x))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 (pow.f64 y 3) -1) x) (fma.f64 y y (+.f64 y 1)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (fma.f64 y y -1) x) (+.f64 y 1))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (+.f64 (pow.f64 y 3) -1)) (fma.f64 y y (+.f64 y 1)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (fma.f64 y y -1)) (+.f64 y 1))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (+.f64 y -1) x) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (E.f64) (log.f64 (*.f64 (+.f64 y -1) x)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 (+.f64 y -1) x) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 (+.f64 y -1) x) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 (+.f64 y -1) x)) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 (+.f64 y -1) x)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (log.f64 (*.f64 (+.f64 y -1) x))) 2)) (cbrt.f64 (log.f64 (*.f64 (+.f64 y -1) x))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (sqrt.f64 (log.f64 (*.f64 (+.f64 y -1) x)))) (sqrt.f64 (log.f64 (*.f64 (+.f64 y -1) x))))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 (+.f64 y -1) x) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 x) (+.f64 y -1)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (*.f64 (+.f64 y -1) x))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 (+.f64 y -1) x) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 (+.f64 y -1) x)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 (+.f64 y -1) x)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 (+.f64 y -1) x)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (*.f64 (+.f64 y -1) x)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 3 (log.f64 (*.f64 (+.f64 y -1) x))) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (cbrt.f64 (*.f64 (+.f64 y -1) x))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (sqrt.f64 (*.f64 (+.f64 y -1) x))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (log.f64 (*.f64 (+.f64 y -1) x)) 1) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 y x (*.f64 -1 x))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 x y (*.f64 x -1))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (fma.f64 z (*.f64 (+.f64 y -1) x) x))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (/.f64 (pow.f64 (*.f64 z (*.f64 (+.f64 y -1) x)) 2) (*.f64 x (fma.f64 z (+.f64 y -1) -1))) (/.f64 (*.f64 x x) (*.f64 x (fma.f64 z (+.f64 y -1) -1))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (fma.f64 z (*.f64 (+.f64 y -1) x) x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 x (fma.f64 z (+.f64 y -1) 1))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 x (+.f64 1 (*.f64 z (+.f64 y -1))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (fma.f64 z (*.f64 (+.f64 y -1) x) x) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (fma.f64 z (*.f64 (+.f64 y -1) x) x)) (pow.f64 (cbrt.f64 (fma.f64 z (*.f64 (+.f64 y -1) x) x)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (fma.f64 z (*.f64 (+.f64 y -1) x) x)) 2) (cbrt.f64 (fma.f64 z (*.f64 (+.f64 y -1) x) x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (fma.f64 z (*.f64 (+.f64 y -1) x) x)) (sqrt.f64 (fma.f64 z (*.f64 (+.f64 y -1) x) x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (pow.f64 (*.f64 z (*.f64 (+.f64 y -1) x)) 3) (pow.f64 x 3)) (/.f64 1 (fma.f64 x (-.f64 x (*.f64 z (*.f64 (+.f64 y -1) x))) (pow.f64 (*.f64 z (*.f64 (+.f64 y -1) x)) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 (pow.f64 (*.f64 z (*.f64 (+.f64 y -1) x)) 2) (*.f64 x x)) (/.f64 1 (*.f64 x (fma.f64 z (+.f64 y -1) -1))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (fma.f64 z (+.f64 y -1) 1) x)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (fma.f64 x (-.f64 x (*.f64 z (*.f64 (+.f64 y -1) x))) (pow.f64 (*.f64 z (*.f64 (+.f64 y -1) x)) 2)) (+.f64 (pow.f64 (*.f64 z (*.f64 (+.f64 y -1) x)) 3) (pow.f64 x 3))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (*.f64 x (fma.f64 z (+.f64 y -1) -1)) (-.f64 (pow.f64 (*.f64 z (*.f64 (+.f64 y -1) x)) 2) (*.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (*.f64 z (*.f64 (+.f64 y -1) x)) 3) (pow.f64 x 3)) (fma.f64 x (-.f64 x (*.f64 z (*.f64 (+.f64 y -1) x))) (pow.f64 (*.f64 z (*.f64 (+.f64 y -1) x)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (*.f64 z (*.f64 (+.f64 y -1) x)) 3) (pow.f64 x 3)) (fma.f64 x x (-.f64 (pow.f64 (*.f64 z (*.f64 (+.f64 y -1) x)) 2) (*.f64 z (*.f64 (*.f64 (+.f64 y -1) x) x)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 (*.f64 z (*.f64 (+.f64 y -1) x)) 2) (*.f64 x x)) (*.f64 x (fma.f64 z (+.f64 y -1) -1)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (+.f64 (pow.f64 (*.f64 z (*.f64 (+.f64 y -1) x)) 3) (pow.f64 x 3))) (neg.f64 (fma.f64 x (-.f64 x (*.f64 z (*.f64 (+.f64 y -1) x))) (pow.f64 (*.f64 z (*.f64 (+.f64 y -1) x)) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (-.f64 (pow.f64 (*.f64 z (*.f64 (+.f64 y -1) x)) 2) (*.f64 x x))) (neg.f64 (*.f64 x (fma.f64 z (+.f64 y -1) -1))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 x x) (pow.f64 (*.f64 z (*.f64 (+.f64 y -1) x)) 2)) (-.f64 x (*.f64 z (*.f64 (+.f64 y -1) x))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (fma.f64 z (*.f64 (+.f64 y -1) x) x) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (E.f64) (log.f64 (fma.f64 z (*.f64 (+.f64 y -1) x) x)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (fma.f64 z (*.f64 (+.f64 y -1) x) x) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (fma.f64 z (*.f64 (+.f64 y -1) x) x) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (fma.f64 z (*.f64 (+.f64 y -1) x) x)) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (fma.f64 z (*.f64 (+.f64 y -1) x) x)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (fma.f64 x (-.f64 x (*.f64 z (*.f64 (+.f64 y -1) x))) (pow.f64 (*.f64 z (*.f64 (+.f64 y -1) x)) 2)) (+.f64 (pow.f64 (*.f64 z (*.f64 (+.f64 y -1) x)) 3) (pow.f64 x 3))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (*.f64 x (fma.f64 z (+.f64 y -1) -1)) (-.f64 (pow.f64 (*.f64 z (*.f64 (+.f64 y -1) x)) 2) (*.f64 x x))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (log.f64 (fma.f64 z (*.f64 (+.f64 y -1) x) x))) 2)) (cbrt.f64 (log.f64 (fma.f64 z (*.f64 (+.f64 y -1) x) x))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (sqrt.f64 (log.f64 (fma.f64 z (*.f64 (+.f64 y -1) x) x)))) (sqrt.f64 (log.f64 (fma.f64 z (*.f64 (+.f64 y -1) x) x))))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (fma.f64 z (*.f64 (+.f64 y -1) x) x) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 x) (fma.f64 z (+.f64 y -1) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (fma.f64 z (*.f64 (+.f64 y -1) x) x))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 x)) (pow.f64 (exp.f64 z) (*.f64 (+.f64 y -1) x))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (exp.f64 x) (+.f64 1 (expm1.f64 (*.f64 z (*.f64 (+.f64 y -1) x))))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 x)) (+.f64 1 (expm1.f64 (*.f64 z (*.f64 (+.f64 y -1) x))))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 (*.f64 z (*.f64 (+.f64 y -1) x)))) (exp.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (pow.f64 (exp.f64 z) (*.f64 (+.f64 y -1) x)) (+.f64 1 (expm1.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 (*.f64 z (*.f64 (+.f64 y -1) x)))) (+.f64 1 (expm1.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (fma.f64 z (*.f64 (+.f64 y -1) x) x) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (fma.f64 z (*.f64 (+.f64 y -1) x) x)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (fma.f64 z (*.f64 (+.f64 y -1) x) x)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (fma.f64 z (*.f64 (+.f64 y -1) x) x)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (fma.f64 z (*.f64 (+.f64 y -1) x) x)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 3 (log.f64 (fma.f64 z (*.f64 (+.f64 y -1) x) x))) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (cbrt.f64 (fma.f64 z (*.f64 (+.f64 y -1) x) x))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (sqrt.f64 (fma.f64 z (*.f64 (+.f64 y -1) x) x))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (log.f64 (fma.f64 z (*.f64 (+.f64 y -1) x) x)) 1) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 z (*.f64 (+.f64 y -1) x) x)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 x (*.f64 z (*.f64 (+.f64 y -1) x)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (*.f64 z (*.f64 (+.f64 y -1) x)) x)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (+.f64 y -1) (*.f64 x z) x)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 x 1 (*.f64 z (*.f64 (+.f64 y -1) x)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 x (*.f64 z (+.f64 y -1)) x)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (+.f64 y -1) x) z x)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 z (*.f64 (+.f64 y -1) x)) 1 x)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (*.f64 z (*.f64 (+.f64 y -1) x))) (pow.f64 (cbrt.f64 (*.f64 z (*.f64 (+.f64 y -1) x))) 2) x)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (*.f64 z (*.f64 (+.f64 y -1) x))) 2) (cbrt.f64 (*.f64 z (*.f64 (+.f64 y -1) x))) x)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (*.f64 z z)) (*.f64 (cbrt.f64 z) (*.f64 (+.f64 y -1) x)) x)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 x) (pow.f64 (cbrt.f64 x) 2) (*.f64 z (*.f64 (+.f64 y -1) x)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 x) 2) (cbrt.f64 x) (*.f64 z (*.f64 (+.f64 y -1) x)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (pow.f64 (*.f64 (+.f64 y -1) x) 2)) (*.f64 (cbrt.f64 (*.f64 (+.f64 y -1) x)) z) x)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (*.f64 z (*.f64 (+.f64 y -1) x))) (sqrt.f64 (*.f64 z (*.f64 (+.f64 y -1) x))) x)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 z) (*.f64 (sqrt.f64 z) (*.f64 (+.f64 y -1) x)) x)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 x) (sqrt.f64 x) (*.f64 z (*.f64 (+.f64 y -1) x)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (*.f64 (+.f64 y -1) x)) (*.f64 (sqrt.f64 (*.f64 (+.f64 y -1) x)) z) x)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 z (+.f64 y -1)) x x)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 z x) (+.f64 y -1) x)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 z (cbrt.f64 (pow.f64 (*.f64 (+.f64 y -1) x) 2))) (cbrt.f64 (*.f64 (+.f64 y -1) x)) x)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 z (sqrt.f64 (*.f64 (+.f64 y -1) x))) (sqrt.f64 (*.f64 (+.f64 y -1) x)) x)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (*.f64 (+.f64 y -1) x) (cbrt.f64 (*.f64 z z))) (cbrt.f64 z) x)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (*.f64 (+.f64 y -1) x) (sqrt.f64 z)) (sqrt.f64 z) x)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (*.f64 z (+.f64 y -1)) 1) x x)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (*.f64 z (+.f64 y -1)) (pow.f64 (cbrt.f64 x) 2)) (cbrt.f64 x) x)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (*.f64 z (+.f64 y -1)) (sqrt.f64 x)) (sqrt.f64 x) x)))))

simplify208.0ms (2.8%)

Algorithm
egg-herbie
Rules
486×fma-neg_binary64
472×fma-def_binary64
186×distribute-rgt-in_binary64
175×distribute-lft-in_binary64
124×associate-*l*_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
025500
166457
2164457
3391457
41076457
52209457
62541457
72630457
82640457
92640457
Stop Event
saturated
Counts
183 → 151
Calls
Call 1
Inputs
(*.f64 -1 (*.f64 z x))
(+.f64 (*.f64 y (*.f64 z x)) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 y (*.f64 z x)) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 y (*.f64 z x)) (*.f64 -1 (*.f64 z x)))
(*.f64 y (*.f64 z x))
(+.f64 (*.f64 y (*.f64 z x)) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 y (*.f64 z x)) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 y (*.f64 z x)) (*.f64 -1 (*.f64 z x)))
(*.f64 y (*.f64 z x))
(+.f64 (*.f64 y (*.f64 z x)) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 y (*.f64 z x)) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 y (*.f64 z x)) (*.f64 -1 (*.f64 z x)))
(*.f64 -1 x)
(+.f64 (*.f64 y x) (*.f64 -1 x))
(+.f64 (*.f64 y x) (*.f64 -1 x))
(+.f64 (*.f64 y x) (*.f64 -1 x))
(*.f64 y x)
(+.f64 (*.f64 y x) (*.f64 -1 x))
(+.f64 (*.f64 y x) (*.f64 -1 x))
(+.f64 (*.f64 y x) (*.f64 -1 x))
(*.f64 y x)
(+.f64 (*.f64 y x) (*.f64 -1 x))
(+.f64 (*.f64 y x) (*.f64 -1 x))
(+.f64 (*.f64 y x) (*.f64 -1 x))
x
(*.f64 z (*.f64 (-.f64 y 1) x))
(*.f64 z (*.f64 (-.f64 y 1) x))
(+.f64 (*.f64 -1 (*.f64 z x)) x)
(+.f64 (*.f64 y (*.f64 z x)) (+.f64 (*.f64 -1 (*.f64 z x)) x))
(+.f64 (*.f64 y (*.f64 z x)) (+.f64 (*.f64 -1 (*.f64 z x)) x))
(+.f64 (*.f64 y (*.f64 z x)) (+.f64 (*.f64 -1 (*.f64 z x)) x))
(*.f64 y (*.f64 z x))
(+.f64 (*.f64 y (*.f64 z x)) (+.f64 (*.f64 -1 (*.f64 z x)) x))
(+.f64 (*.f64 y (*.f64 z x)) (+.f64 (*.f64 -1 (*.f64 z x)) x))
(+.f64 (*.f64 y (*.f64 z x)) (+.f64 (*.f64 -1 (*.f64 z x)) x))
(*.f64 y (*.f64 z x))
(+.f64 (*.f64 y (*.f64 z x)) (+.f64 (*.f64 -1 (*.f64 z x)) x))
(+.f64 (*.f64 y (*.f64 z x)) (+.f64 (*.f64 -1 (*.f64 z x)) x))
(+.f64 (*.f64 y (*.f64 z x)) (+.f64 (*.f64 -1 (*.f64 z x)) x))
(*.f64 (+.f64 1 (*.f64 z (-.f64 y 1))) x)
(*.f64 (+.f64 1 (*.f64 z (-.f64 y 1))) x)
(*.f64 (+.f64 1 (*.f64 z (-.f64 y 1))) x)
(*.f64 (+.f64 1 (*.f64 z (-.f64 y 1))) x)
(*.f64 (+.f64 1 (*.f64 z (-.f64 y 1))) x)
(*.f64 (+.f64 1 (*.f64 z (-.f64 y 1))) x)
(*.f64 (+.f64 1 (*.f64 z (-.f64 y 1))) x)
(*.f64 (+.f64 1 (*.f64 z (-.f64 y 1))) x)
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 (*.f64 z (-.f64 y 1))) 1) x))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 (*.f64 z (-.f64 y 1))) 1) x))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 (*.f64 z (-.f64 y 1))) 1) x))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 (*.f64 z (-.f64 y 1))) 1) x))
Outputs
(*.f64 -1 (*.f64 z x))
(neg.f64 (*.f64 z x))
(*.f64 x (neg.f64 z))
(+.f64 (*.f64 y (*.f64 z x)) (*.f64 -1 (*.f64 z x)))
(*.f64 (*.f64 z x) (+.f64 y -1))
(*.f64 z (-.f64 (*.f64 x y) x))
(*.f64 z (*.f64 x (+.f64 -1 y)))
(+.f64 (*.f64 y (*.f64 z x)) (*.f64 -1 (*.f64 z x)))
(*.f64 (*.f64 z x) (+.f64 y -1))
(*.f64 z (-.f64 (*.f64 x y) x))
(*.f64 z (*.f64 x (+.f64 -1 y)))
(+.f64 (*.f64 y (*.f64 z x)) (*.f64 -1 (*.f64 z x)))
(*.f64 (*.f64 z x) (+.f64 y -1))
(*.f64 z (-.f64 (*.f64 x y) x))
(*.f64 z (*.f64 x (+.f64 -1 y)))
(*.f64 y (*.f64 z x))
(*.f64 (*.f64 z x) y)
(*.f64 z (*.f64 x y))
(+.f64 (*.f64 y (*.f64 z x)) (*.f64 -1 (*.f64 z x)))
(*.f64 (*.f64 z x) (+.f64 y -1))
(*.f64 z (-.f64 (*.f64 x y) x))
(*.f64 z (*.f64 x (+.f64 -1 y)))
(+.f64 (*.f64 y (*.f64 z x)) (*.f64 -1 (*.f64 z x)))
(*.f64 (*.f64 z x) (+.f64 y -1))
(*.f64 z (-.f64 (*.f64 x y) x))
(*.f64 z (*.f64 x (+.f64 -1 y)))
(+.f64 (*.f64 y (*.f64 z x)) (*.f64 -1 (*.f64 z x)))
(*.f64 (*.f64 z x) (+.f64 y -1))
(*.f64 z (-.f64 (*.f64 x y) x))
(*.f64 z (*.f64 x (+.f64 -1 y)))
(*.f64 y (*.f64 z x))
(*.f64 (*.f64 z x) y)
(*.f64 z (*.f64 x y))
(+.f64 (*.f64 y (*.f64 z x)) (*.f64 -1 (*.f64 z x)))
(*.f64 (*.f64 z x) (+.f64 y -1))
(*.f64 z (-.f64 (*.f64 x y) x))
(*.f64 z (*.f64 x (+.f64 -1 y)))
(+.f64 (*.f64 y (*.f64 z x)) (*.f64 -1 (*.f64 z x)))
(*.f64 (*.f64 z x) (+.f64 y -1))
(*.f64 z (-.f64 (*.f64 x y) x))
(*.f64 z (*.f64 x (+.f64 -1 y)))
(+.f64 (*.f64 y (*.f64 z x)) (*.f64 -1 (*.f64 z x)))
(*.f64 (*.f64 z x) (+.f64 y -1))
(*.f64 z (-.f64 (*.f64 x y) x))
(*.f64 z (*.f64 x (+.f64 -1 y)))
(*.f64 -1 x)
(neg.f64 x)
(+.f64 (*.f64 y x) (*.f64 -1 x))
(*.f64 x (+.f64 y -1))
(-.f64 (*.f64 x y) x)
(*.f64 x (+.f64 -1 y))
(+.f64 (*.f64 y x) (*.f64 -1 x))
(*.f64 x (+.f64 y -1))
(-.f64 (*.f64 x y) x)
(*.f64 x (+.f64 -1 y))
(+.f64 (*.f64 y x) (*.f64 -1 x))
(*.f64 x (+.f64 y -1))
(-.f64 (*.f64 x y) x)
(*.f64 x (+.f64 -1 y))
(*.f64 y x)
(*.f64 x y)
(+.f64 (*.f64 y x) (*.f64 -1 x))
(*.f64 x (+.f64 y -1))
(-.f64 (*.f64 x y) x)
(*.f64 x (+.f64 -1 y))
(+.f64 (*.f64 y x) (*.f64 -1 x))
(*.f64 x (+.f64 y -1))
(-.f64 (*.f64 x y) x)
(*.f64 x (+.f64 -1 y))
(+.f64 (*.f64 y x) (*.f64 -1 x))
(*.f64 x (+.f64 y -1))
(-.f64 (*.f64 x y) x)
(*.f64 x (+.f64 -1 y))
(*.f64 y x)
(*.f64 x y)
(+.f64 (*.f64 y x) (*.f64 -1 x))
(*.f64 x (+.f64 y -1))
(-.f64 (*.f64 x y) x)
(*.f64 x (+.f64 -1 y))
(+.f64 (*.f64 y x) (*.f64 -1 x))
(*.f64 x (+.f64 y -1))
(-.f64 (*.f64 x y) x)
(*.f64 x (+.f64 -1 y))
(+.f64 (*.f64 y x) (*.f64 -1 x))
(*.f64 x (+.f64 y -1))
(-.f64 (*.f64 x y) x)
(*.f64 x (+.f64 -1 y))
x
(*.f64 z (*.f64 (-.f64 y 1) x))
(*.f64 (*.f64 z x) (+.f64 y -1))
(*.f64 z (-.f64 (*.f64 x y) x))
(*.f64 z (*.f64 x (+.f64 -1 y)))
(*.f64 z (*.f64 (-.f64 y 1) x))
(*.f64 (*.f64 z x) (+.f64 y -1))
(*.f64 z (-.f64 (*.f64 x y) x))
(*.f64 z (*.f64 x (+.f64 -1 y)))
(+.f64 (*.f64 -1 (*.f64 z x)) x)
(fma.f64 -1 (*.f64 z x) x)
(fma.f64 (neg.f64 z) x x)
(fma.f64 x (neg.f64 z) x)
(fma.f64 z (neg.f64 x) x)
(+.f64 (*.f64 y (*.f64 z x)) (+.f64 (*.f64 -1 (*.f64 z x)) x))
(+.f64 (*.f64 (*.f64 z x) (+.f64 y -1)) x)
(fma.f64 (*.f64 z x) (+.f64 -1 y) x)
(fma.f64 z (*.f64 x (+.f64 -1 y)) x)
(fma.f64 z (-.f64 (*.f64 x y) x) x)
(+.f64 (*.f64 y (*.f64 z x)) (+.f64 (*.f64 -1 (*.f64 z x)) x))
(+.f64 (*.f64 (*.f64 z x) (+.f64 y -1)) x)
(fma.f64 (*.f64 z x) (+.f64 -1 y) x)
(fma.f64 z (*.f64 x (+.f64 -1 y)) x)
(fma.f64 z (-.f64 (*.f64 x y) x) x)
(+.f64 (*.f64 y (*.f64 z x)) (+.f64 (*.f64 -1 (*.f64 z x)) x))
(+.f64 (*.f64 (*.f64 z x) (+.f64 y -1)) x)
(fma.f64 (*.f64 z x) (+.f64 -1 y) x)
(fma.f64 z (*.f64 x (+.f64 -1 y)) x)
(fma.f64 z (-.f64 (*.f64 x y) x) x)
(*.f64 y (*.f64 z x))
(*.f64 (*.f64 z x) y)
(*.f64 z (*.f64 x y))
(+.f64 (*.f64 y (*.f64 z x)) (+.f64 (*.f64 -1 (*.f64 z x)) x))
(+.f64 (*.f64 (*.f64 z x) (+.f64 y -1)) x)
(fma.f64 (*.f64 z x) (+.f64 -1 y) x)
(fma.f64 z (*.f64 x (+.f64 -1 y)) x)
(fma.f64 z (-.f64 (*.f64 x y) x) x)
(+.f64 (*.f64 y (*.f64 z x)) (+.f64 (*.f64 -1 (*.f64 z x)) x))
(+.f64 (*.f64 (*.f64 z x) (+.f64 y -1)) x)
(fma.f64 (*.f64 z x) (+.f64 -1 y) x)
(fma.f64 z (*.f64 x (+.f64 -1 y)) x)
(fma.f64 z (-.f64 (*.f64 x y) x) x)
(+.f64 (*.f64 y (*.f64 z x)) (+.f64 (*.f64 -1 (*.f64 z x)) x))
(+.f64 (*.f64 (*.f64 z x) (+.f64 y -1)) x)
(fma.f64 (*.f64 z x) (+.f64 -1 y) x)
(fma.f64 z (*.f64 x (+.f64 -1 y)) x)
(fma.f64 z (-.f64 (*.f64 x y) x) x)
(*.f64 y (*.f64 z x))
(*.f64 (*.f64 z x) y)
(*.f64 z (*.f64 x y))
(+.f64 (*.f64 y (*.f64 z x)) (+.f64 (*.f64 -1 (*.f64 z x)) x))
(+.f64 (*.f64 (*.f64 z x) (+.f64 y -1)) x)
(fma.f64 (*.f64 z x) (+.f64 -1 y) x)
(fma.f64 z (*.f64 x (+.f64 -1 y)) x)
(fma.f64 z (-.f64 (*.f64 x y) x) x)
(+.f64 (*.f64 y (*.f64 z x)) (+.f64 (*.f64 -1 (*.f64 z x)) x))
(+.f64 (*.f64 (*.f64 z x) (+.f64 y -1)) x)
(fma.f64 (*.f64 z x) (+.f64 -1 y) x)
(fma.f64 z (*.f64 x (+.f64 -1 y)) x)
(fma.f64 z (-.f64 (*.f64 x y) x) x)
(+.f64 (*.f64 y (*.f64 z x)) (+.f64 (*.f64 -1 (*.f64 z x)) x))
(+.f64 (*.f64 (*.f64 z x) (+.f64 y -1)) x)
(fma.f64 (*.f64 z x) (+.f64 -1 y) x)
(fma.f64 z (*.f64 x (+.f64 -1 y)) x)
(fma.f64 z (-.f64 (*.f64 x y) x) x)
(*.f64 (+.f64 1 (*.f64 z (-.f64 y 1))) x)
(+.f64 (*.f64 (*.f64 z x) (+.f64 y -1)) x)
(fma.f64 (*.f64 z x) (+.f64 -1 y) x)
(fma.f64 z (*.f64 x (+.f64 -1 y)) x)
(fma.f64 z (-.f64 (*.f64 x y) x) x)
(*.f64 (+.f64 1 (*.f64 z (-.f64 y 1))) x)
(+.f64 (*.f64 (*.f64 z x) (+.f64 y -1)) x)
(fma.f64 (*.f64 z x) (+.f64 -1 y) x)
(fma.f64 z (*.f64 x (+.f64 -1 y)) x)
(fma.f64 z (-.f64 (*.f64 x y) x) x)
(*.f64 (+.f64 1 (*.f64 z (-.f64 y 1))) x)
(+.f64 (*.f64 (*.f64 z x) (+.f64 y -1)) x)
(fma.f64 (*.f64 z x) (+.f64 -1 y) x)
(fma.f64 z (*.f64 x (+.f64 -1 y)) x)
(fma.f64 z (-.f64 (*.f64 x y) x) x)
(*.f64 (+.f64 1 (*.f64 z (-.f64 y 1))) x)
(+.f64 (*.f64 (*.f64 z x) (+.f64 y -1)) x)
(fma.f64 (*.f64 z x) (+.f64 -1 y) x)
(fma.f64 z (*.f64 x (+.f64 -1 y)) x)
(fma.f64 z (-.f64 (*.f64 x y) x) x)
(*.f64 (+.f64 1 (*.f64 z (-.f64 y 1))) x)
(+.f64 (*.f64 (*.f64 z x) (+.f64 y -1)) x)
(fma.f64 (*.f64 z x) (+.f64 -1 y) x)
(fma.f64 z (*.f64 x (+.f64 -1 y)) x)
(fma.f64 z (-.f64 (*.f64 x y) x) x)
(*.f64 (+.f64 1 (*.f64 z (-.f64 y 1))) x)
(+.f64 (*.f64 (*.f64 z x) (+.f64 y -1)) x)
(fma.f64 (*.f64 z x) (+.f64 -1 y) x)
(fma.f64 z (*.f64 x (+.f64 -1 y)) x)
(fma.f64 z (-.f64 (*.f64 x y) x) x)
(*.f64 (+.f64 1 (*.f64 z (-.f64 y 1))) x)
(+.f64 (*.f64 (*.f64 z x) (+.f64 y -1)) x)
(fma.f64 (*.f64 z x) (+.f64 -1 y) x)
(fma.f64 z (*.f64 x (+.f64 -1 y)) x)
(fma.f64 z (-.f64 (*.f64 x y) x) x)
(*.f64 (+.f64 1 (*.f64 z (-.f64 y 1))) x)
(+.f64 (*.f64 (*.f64 z x) (+.f64 y -1)) x)
(fma.f64 (*.f64 z x) (+.f64 -1 y) x)
(fma.f64 z (*.f64 x (+.f64 -1 y)) x)
(fma.f64 z (-.f64 (*.f64 x y) x) x)
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 (*.f64 z (-.f64 y 1))) 1) x))
(+.f64 (*.f64 (*.f64 z x) (+.f64 y -1)) x)
(fma.f64 (*.f64 z x) (+.f64 -1 y) x)
(fma.f64 z (*.f64 x (+.f64 -1 y)) x)
(fma.f64 z (-.f64 (*.f64 x y) x) x)
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 (*.f64 z (-.f64 y 1))) 1) x))
(+.f64 (*.f64 (*.f64 z x) (+.f64 y -1)) x)
(fma.f64 (*.f64 z x) (+.f64 -1 y) x)
(fma.f64 z (*.f64 x (+.f64 -1 y)) x)
(fma.f64 z (-.f64 (*.f64 x y) x) x)
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 (*.f64 z (-.f64 y 1))) 1) x))
(+.f64 (*.f64 (*.f64 z x) (+.f64 y -1)) x)
(fma.f64 (*.f64 z x) (+.f64 -1 y) x)
(fma.f64 z (*.f64 x (+.f64 -1 y)) x)
(fma.f64 z (-.f64 (*.f64 x y) x) x)
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 (*.f64 z (-.f64 y 1))) 1) x))
(+.f64 (*.f64 (*.f64 z x) (+.f64 y -1)) x)
(fma.f64 (*.f64 z x) (+.f64 -1 y) x)
(fma.f64 z (*.f64 x (+.f64 -1 y)) x)
(fma.f64 z (-.f64 (*.f64 x y) x) x)

eval131.0ms (1.7%)

Compiler

Compiled 6539 to 3519 computations (46.2% saved)

prune126.0ms (1.7%)

Pruning

13 alts after pruning (10 fresh and 3 done)

PrunedKeptTotal
New46410474
Fresh505
Picked101
Done134
Total47113484
Error
0b
Counts
484 → 13
Alt Table
Click to see full alt table
StatusErrorProgram
49.6b
(*.f64 z (neg.f64 x))
44.7b
(pow.f64 (cbrt.f64 (*.f64 y (*.f64 z x))) 3)
19.8b
(-.f64 x (*.f64 z x))
46.1b
(*.f64 (*.f64 y x) z)
32.9b
x
17.7b
(+.f64 (*.f64 z (*.f64 y x)) x)
43.0b
(*.f64 z (/.f64 1 (/.f64 (fma.f64 y x x) (-.f64 (pow.f64 (*.f64 y x) 2) (*.f64 x x)))))
3.6b
(*.f64 (-.f64 (+.f64 (*.f64 y z) 1) z) x)
34.0b
(*.f64 (-.f64 (*.f64 z y) z) x)
19.8b
(*.f64 (-.f64 1 z) x)
46.8b
(*.f64 (*.f64 z y) x)
44.3b
(*.f64 y (*.f64 z x))
33.3b
(*.f64 z (*.f64 (-.f64 y 1) x))
Compiler

Compiled 218 to 143 computations (34.4% saved)

localize7.0ms (0.1%)

Local error

Found 1 expressions with local error:

NewErrorProgram
4.9b
(*.f64 z (*.f64 y x))
Compiler

Compiled 21 to 6 computations (71.4% saved)

series2.0ms (0%)

Counts
1 → 36
Calls

9 calls:

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

rewrite87.0ms (1.2%)

Algorithm
batch-egg-rewrite
Rules
582×pow1_binary64
532×add-log-exp_binary64
532×log1p-expm1-u_binary64
532×expm1-log1p-u_binary64
519×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
067
11197
214547
Stop Event
node limit
Counts
1 → 11
Calls
Call 1
Inputs
(*.f64 z (*.f64 y x))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 z (*.f64 y x))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 z (*.f64 y x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 z (*.f64 y x)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 z (*.f64 y x))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 z (*.f64 y x))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 z (*.f64 y x)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 z) (*.f64 y x)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 z (*.f64 y x)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 z (*.f64 y x))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 z (*.f64 y x))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 z (*.f64 y x))))))))

simplify12.0ms (0.2%)

Algorithm
egg-herbie
Rules
*-commutative_binary64
associate-*r*_binary64
associate-*l*_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
06252
110252
217252
319252
Stop Event
saturated
Counts
47 → 12
Calls
Call 1
Inputs
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
Outputs
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))

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
6.0b
(*.f64 (*.f64 z y) x)
Compiler

Compiled 14 to 5 computations (64.3% saved)

series2.0ms (0%)

Counts
1 → 36
Calls

9 calls:

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

rewrite50.0ms (0.7%)

Algorithm
batch-egg-rewrite
Rules
581×pow1_binary64
531×add-log-exp_binary64
531×log1p-expm1-u_binary64
531×expm1-log1p-u_binary64
518×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
067
11197
214527
Stop Event
node limit
Counts
1 → 11
Calls
Call 1
Inputs
(*.f64 (*.f64 z y) x)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 z (*.f64 y x))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 z (*.f64 y x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 z (*.f64 y x)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 z (*.f64 y x))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 z (*.f64 y x))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 z (*.f64 y x)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 x) (*.f64 z y)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 z (*.f64 y x)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 z (*.f64 y x))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 z (*.f64 y x))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 z (*.f64 y x))))))))

simplify11.0ms (0.2%)

Algorithm
egg-herbie
Rules
*-commutative_binary64
associate-*r*_binary64
associate-*l*_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
06252
110252
217252
319252
Stop Event
saturated
Counts
47 → 12
Calls
Call 1
Inputs
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
Outputs
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))

localize10.0ms (0.1%)

Local error

Found 2 expressions with local error:

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

Compiled 22 to 13 computations (40.9% saved)

localize10.0ms (0.1%)

Local error

Found 3 expressions with local error:

NewErrorProgram
0.6b
(pow.f64 (cbrt.f64 (*.f64 y (*.f64 z x))) 3)
2.8b
(*.f64 y (*.f64 z x))
12.6b
(cbrt.f64 (*.f64 y (*.f64 z x)))
Compiler

Compiled 29 to 9 computations (69% saved)

series14.0ms (0.2%)

Counts
2 → 0
Calls

18 calls:

TimeVariablePointExpression
1.0ms
y
@-inf
(pow.f64 (cbrt.f64 (*.f64 y (*.f64 z x))) 3)
1.0ms
x
@inf
(cbrt.f64 (*.f64 y (*.f64 z x)))
1.0ms
y
@0
(pow.f64 (cbrt.f64 (*.f64 y (*.f64 z x))) 3)
1.0ms
y
@0
(cbrt.f64 (*.f64 y (*.f64 z x)))
1.0ms
z
@-inf
(pow.f64 (cbrt.f64 (*.f64 y (*.f64 z x))) 3)

rewrite70.0ms (0.9%)

Algorithm
batch-egg-rewrite
Rules
759×pow1_binary64
707×add-log-exp_binary64
707×log1p-expm1-u_binary64
707×expm1-log1p-u_binary64
689×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0916
118816
2197916
Stop Event
node limit
Counts
2 → 63
Calls
Call 1
Inputs
(cbrt.f64 (*.f64 y (*.f64 z x)))
(pow.f64 (cbrt.f64 (*.f64 y (*.f64 z x))) 3)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (cbrt.f64 (*.f64 y (*.f64 z x)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 y (*.f64 z x))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (cbrt.f64 (*.f64 y (*.f64 z x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 z x)) (cbrt.f64 y))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 y) (cbrt.f64 (*.f64 z x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (cbrt.f64 (*.f64 y (*.f64 z x)))) (cbrt.f64 (pow.f64 (cbrt.f64 (*.f64 y (*.f64 z x))) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (cbrt.f64 (*.f64 y (*.f64 z x)))) (pow.f64 (pow.f64 (cbrt.f64 (*.f64 y (*.f64 z x))) 2) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (pow.f64 (cbrt.f64 (*.f64 y (*.f64 z x))) 2)) (cbrt.f64 (cbrt.f64 (*.f64 y (*.f64 z x)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 y (*.f64 z x)) 1/6) (pow.f64 (*.f64 y (*.f64 z x)) 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 y z)) (cbrt.f64 x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (cbrt.f64 (*.f64 y (*.f64 z x))) 2) 1/3) (cbrt.f64 (cbrt.f64 (*.f64 y (*.f64 z x)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 1 1/3) (cbrt.f64 (*.f64 y (*.f64 z x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (sqrt.f64 (*.f64 y (*.f64 z x))) 1/3) (pow.f64 (sqrt.f64 (*.f64 y (*.f64 z x))) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 y z) 1/3) (cbrt.f64 x))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 y (*.f64 z x)) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 y (*.f64 z x))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (cbrt.f64 (*.f64 y (*.f64 z x)))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 y (*.f64 z x)) 1/6) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (cbrt.f64 (*.f64 y (*.f64 z x))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (cbrt.f64 (*.f64 y (*.f64 z x)))))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (cbrt.f64 (*.f64 y (*.f64 z x)))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (cbrt.f64 (*.f64 y (*.f64 z x)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (cbrt.f64 (*.f64 y (*.f64 z x)))))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 y (*.f64 z x))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 y (*.f64 z x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 z (*.f64 x y))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 x (*.f64 y z))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 z x) y)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 y (*.f64 z x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 y (*.f64 z x))) (pow.f64 (cbrt.f64 (*.f64 y (*.f64 z x))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (*.f64 y (*.f64 z x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (*.f64 y (*.f64 z x))) 2) (cbrt.f64 (*.f64 y (*.f64 z x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (*.f64 z x)) 2) (*.f64 (cbrt.f64 (*.f64 z x)) y))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 y) (*.f64 (cbrt.f64 (*.f64 z x)) (pow.f64 (cbrt.f64 (*.f64 y (*.f64 z x))) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 y) 2) (*.f64 (cbrt.f64 y) (*.f64 z x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (pow.f64 (cbrt.f64 (*.f64 y (*.f64 z x))) 2)) (*.f64 (cbrt.f64 (cbrt.f64 (*.f64 y (*.f64 z x)))) (pow.f64 (cbrt.f64 (*.f64 y (*.f64 z x))) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 z x)) (*.f64 (sqrt.f64 (*.f64 z x)) y))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 y) (*.f64 (sqrt.f64 y) (*.f64 z x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 y (*.f64 z x))) (sqrt.f64 (*.f64 y (*.f64 z x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 y (*.f64 z x)) 1/6) (*.f64 (pow.f64 (*.f64 y (*.f64 z x)) 1/6) (pow.f64 (cbrt.f64 (*.f64 y (*.f64 z x))) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 y z) x)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (pow.f64 (cbrt.f64 (*.f64 y (*.f64 z x))) 2)) 3) (cbrt.f64 (*.f64 y (*.f64 z x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (*.f64 y (*.f64 z x)) 1/6) 3) (pow.f64 (pow.f64 (*.f64 y (*.f64 z x)) 1/6) 3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 y x) z)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 y (pow.f64 (cbrt.f64 (*.f64 z x)) 2)) (cbrt.f64 (*.f64 z x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 y (sqrt.f64 (*.f64 z x))) (sqrt.f64 (*.f64 z x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 z x) (pow.f64 (cbrt.f64 y) 2)) (cbrt.f64 y))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 z x) (sqrt.f64 y)) (sqrt.f64 y))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 (cbrt.f64 (*.f64 y (*.f64 z x))) 2) 1) (cbrt.f64 (*.f64 y (*.f64 z x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 (cbrt.f64 (*.f64 y (*.f64 z x))) 2) (cbrt.f64 y)) (cbrt.f64 (*.f64 z x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 (cbrt.f64 (*.f64 y (*.f64 z x))) 2) (cbrt.f64 (pow.f64 (cbrt.f64 (*.f64 y (*.f64 z x))) 2))) (cbrt.f64 (cbrt.f64 (*.f64 y (*.f64 z x)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 (cbrt.f64 (*.f64 y (*.f64 z x))) 2) (pow.f64 (*.f64 y (*.f64 z x)) 1/6)) (pow.f64 (*.f64 y (*.f64 z x)) 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 y z) 1) x)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 y z) (cbrt.f64 (*.f64 x x))) (cbrt.f64 x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 y z) (sqrt.f64 x)) (sqrt.f64 x))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 y (*.f64 z x)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 y) (*.f64 z x)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 y (*.f64 z x)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 y 3) (pow.f64 (*.f64 z x) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 (*.f64 z x) 3) (pow.f64 y 3)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 y (*.f64 z x))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 y (*.f64 z x))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 y (*.f64 z x))))))))

simplify8.0ms (0.1%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
000
Stop Event
saturated
Counts
63 → 63
Calls
Call 1
Inputs
Outputs

eval36.0ms (0.5%)

Compiler

Compiled 1821 to 877 computations (51.8% saved)

prune32.0ms (0.4%)

Pruning

13 alts after pruning (5 fresh and 8 done)

PrunedKeptTotal
New1651166
Fresh145
Picked011
Done077
Total16613179
Error
0b
Counts
179 → 13
Alt Table
Click to see full alt table
StatusErrorProgram
49.6b
(*.f64 z (neg.f64 x))
44.7b
(pow.f64 (cbrt.f64 (*.f64 y (*.f64 z x))) 3)
19.8b
(-.f64 x (*.f64 z x))
46.1b
(*.f64 (*.f64 y x) z)
32.9b
x
17.7b
(+.f64 (*.f64 z (*.f64 y x)) x)
3.6b
(*.f64 (-.f64 (+.f64 (*.f64 y z) 1) z) x)
34.0b
(*.f64 (-.f64 (*.f64 z y) z) x)
53.4b
(*.f64 (*.f64 y (sqrt.f64 (*.f64 z x))) (sqrt.f64 (*.f64 z x)))
19.8b
(*.f64 (-.f64 1 z) x)
46.8b
(*.f64 (*.f64 z y) x)
44.3b
(*.f64 y (*.f64 z x))
33.3b
(*.f64 z (*.f64 (-.f64 y 1) x))
Compiler

Compiled 118 to 76 computations (35.6% saved)

localize5.0ms (0.1%)

Local error

Found 1 expressions with local error:

NewErrorProgram
4.9b
(*.f64 (*.f64 y x) z)
Compiler

Compiled 14 to 5 computations (64.3% saved)

series5.0ms (0.1%)

Counts
1 → 36
Calls

9 calls:

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

rewrite49.0ms (0.6%)

Algorithm
batch-egg-rewrite
Rules
581×pow1_binary64
531×add-log-exp_binary64
531×log1p-expm1-u_binary64
531×expm1-log1p-u_binary64
518×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
067
11197
214527
Stop Event
node limit
Counts
1 → 11
Calls
Call 1
Inputs
(*.f64 (*.f64 y x) z)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 y (*.f64 x z))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 y (*.f64 x z)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 y (*.f64 x z)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 y (*.f64 x z))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 y (*.f64 x z))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 y (*.f64 x z)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 z) (*.f64 y x)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 y (*.f64 x z)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 y (*.f64 x z))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 y (*.f64 x z))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 y (*.f64 x z))))))))

simplify13.0ms (0.2%)

Algorithm
egg-herbie
Rules
*-commutative_binary64
associate-*r*_binary64
associate-*l*_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
06252
110252
217252
319252
Stop Event
saturated
Counts
47 → 12
Calls
Call 1
Inputs
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
Outputs
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))

localize8.0ms (0.1%)

Local error

Found 3 expressions with local error:

NewErrorProgram
0.1b
(*.f64 y (sqrt.f64 (*.f64 z x)))
0.1b
(*.f64 (*.f64 y (sqrt.f64 (*.f64 z x))) (sqrt.f64 (*.f64 z x)))
8.3b
(sqrt.f64 (*.f64 z x))
Compiler

Compiled 30 to 7 computations (76.7% saved)

series15.0ms (0.2%)

Counts
3 → 36
Calls

24 calls:

TimeVariablePointExpression
2.0ms
x
@-inf
(sqrt.f64 (*.f64 z x))
1.0ms
z
@-inf
(*.f64 (*.f64 y (sqrt.f64 (*.f64 z x))) (sqrt.f64 (*.f64 z x)))
1.0ms
x
@-inf
(*.f64 (*.f64 y (sqrt.f64 (*.f64 z x))) (sqrt.f64 (*.f64 z x)))
1.0ms
z
@0
(sqrt.f64 (*.f64 z x))
1.0ms
z
@-inf
(*.f64 y (sqrt.f64 (*.f64 z x)))

rewrite63.0ms (0.8%)

Algorithm
batch-egg-rewrite
Rules
747×pow1_binary64
685×add-log-exp_binary64
685×log1p-expm1-u_binary64
685×expm1-log1p-u_binary64
668×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0822
115922
2191522
Stop Event
node limit
Counts
3 → 49
Calls
Call 1
Inputs
(sqrt.f64 (*.f64 z x))
(*.f64 (*.f64 y (sqrt.f64 (*.f64 z x))) (sqrt.f64 (*.f64 z x)))
(*.f64 y (sqrt.f64 (*.f64 z x)))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (sqrt.f64 (*.f64 z x))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 z x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (sqrt.f64 (*.f64 z x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (sqrt.f64 (*.f64 z x))) (cbrt.f64 (*.f64 z x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 z x)) (cbrt.f64 (sqrt.f64 (*.f64 z x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 z x) 1/4) (pow.f64 (*.f64 z x) 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 z) (sqrt.f64 x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 x) (sqrt.f64 z))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (pow.f64 (cbrt.f64 (*.f64 z x)) 2)) (sqrt.f64 (cbrt.f64 (*.f64 z x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 1 1/2) (sqrt.f64 (*.f64 z x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (cbrt.f64 (*.f64 z x)) 2) 1/2) (pow.f64 (cbrt.f64 (*.f64 z x)) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 z x) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 z x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 z x) 3/2) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (sqrt.f64 (*.f64 z x))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 z x) 1/4) 2)))) (#(struct:change #<rule egg-rr> (2) ((x fabs.f64 (sqrt.f64 (*.f64 z x)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (sqrt.f64 (*.f64 z x))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 z x) 3/2))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (sqrt.f64 (*.f64 z x))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (sqrt.f64 (*.f64 z x))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (sqrt.f64 (*.f64 z x))))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 (*.f64 z x) y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (*.f64 z x) y) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 (*.f64 z x) y) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 (*.f64 z x) y)) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 (*.f64 z x) y)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 (*.f64 z x) y) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 y) (*.f64 z x)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 (*.f64 z x) y) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 (*.f64 z x) 3/2) (pow.f64 (*.f64 (sqrt.f64 (*.f64 z x)) y) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 y 3) (pow.f64 (*.f64 z x) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 (*.f64 (sqrt.f64 (*.f64 z x)) y) 3) (pow.f64 (*.f64 z x) 3/2)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 (*.f64 z x) y)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 (*.f64 z x) y)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 (*.f64 z x) y)))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 (sqrt.f64 (*.f64 z x)) y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (sqrt.f64 (*.f64 z x)) y) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 (sqrt.f64 (*.f64 z x)) y) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 (sqrt.f64 (*.f64 z x)) y)) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 (sqrt.f64 (*.f64 z x)) y)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (*.f64 (*.f64 z x) (*.f64 y y)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 (sqrt.f64 (*.f64 z x))) y))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 (sqrt.f64 (*.f64 z x)) y) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 (*.f64 z x) 3/2) (pow.f64 y 3)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 y 3) (pow.f64 (*.f64 z x) 3/2)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 (sqrt.f64 (*.f64 z x)) y)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 (sqrt.f64 (*.f64 z x)) y)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 (sqrt.f64 (*.f64 z x)) y)))))))

simplify85.0ms (1.1%)

Algorithm
egg-herbie
Rules
786×fma-def_binary64
450×distribute-rgt-neg-in_binary64
423×cube-prod_binary64
417×fma-neg_binary64
335×distribute-lft-neg-in_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
012252
128252
293252
3298252
41124252
52462252
63921252
74833252
85510252
96913252
Stop Event
unsound
Counts
85 → 52
Calls
Call 1
Inputs
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (*.f64 y (*.f64 z x))))
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (*.f64 y (*.f64 z x))))
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (*.f64 y (*.f64 z x))))
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (*.f64 y (*.f64 z x))))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 y (*.f64 z x))
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (*.f64 y (*.f64 z x))))
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (*.f64 y (*.f64 z x))))
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (*.f64 y (*.f64 z x))))
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (*.f64 y (*.f64 z x))))
Outputs
(*.f64 y (*.f64 z x))
(*.f64 (*.f64 y z) x)
(*.f64 z (*.f64 y x))
(*.f64 y (*.f64 z x))
(*.f64 (*.f64 y z) x)
(*.f64 z (*.f64 y x))
(*.f64 y (*.f64 z x))
(*.f64 (*.f64 y z) x)
(*.f64 z (*.f64 y x))
(*.f64 y (*.f64 z x))
(*.f64 (*.f64 y z) x)
(*.f64 z (*.f64 y x))
(*.f64 y (*.f64 z x))
(*.f64 (*.f64 y z) x)
(*.f64 z (*.f64 y x))
(*.f64 y (*.f64 z x))
(*.f64 (*.f64 y z) x)
(*.f64 z (*.f64 y x))
(*.f64 y (*.f64 z x))
(*.f64 (*.f64 y z) x)
(*.f64 z (*.f64 y x))
(*.f64 y (*.f64 z x))
(*.f64 (*.f64 y z) x)
(*.f64 z (*.f64 y x))
(*.f64 y (*.f64 z x))
(*.f64 (*.f64 y z) x)
(*.f64 z (*.f64 y x))
(*.f64 y (*.f64 z x))
(*.f64 (*.f64 y z) x)
(*.f64 z (*.f64 y x))
(*.f64 y (*.f64 z x))
(*.f64 (*.f64 y z) x)
(*.f64 z (*.f64 y x))
(*.f64 y (*.f64 z x))
(*.f64 (*.f64 y z) x)
(*.f64 z (*.f64 y x))
(*.f64 y (*.f64 z x))
(*.f64 (*.f64 y z) x)
(*.f64 z (*.f64 y x))
(*.f64 y (*.f64 z x))
(*.f64 (*.f64 y z) x)
(*.f64 z (*.f64 y x))
(*.f64 y (*.f64 z x))
(*.f64 (*.f64 y z) x)
(*.f64 z (*.f64 y x))
(*.f64 y (*.f64 z x))
(*.f64 (*.f64 y z) x)
(*.f64 z (*.f64 y x))
(*.f64 y (*.f64 z x))
(*.f64 (*.f64 y z) x)
(*.f64 z (*.f64 y x))
(*.f64 y (*.f64 z x))
(*.f64 (*.f64 y z) x)
(*.f64 z (*.f64 y x))
(*.f64 y (*.f64 z x))
(*.f64 (*.f64 y z) x)
(*.f64 z (*.f64 y x))
(*.f64 y (*.f64 z x))
(*.f64 (*.f64 y z) x)
(*.f64 z (*.f64 y x))
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (*.f64 y (*.f64 z x))))
(*.f64 (*.f64 y z) x)
(*.f64 y (*.f64 z x))
(*.f64 z (*.f64 y x))
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (*.f64 y (*.f64 z x))))
(*.f64 (*.f64 y z) x)
(*.f64 y (*.f64 z x))
(*.f64 z (*.f64 y x))
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (*.f64 y (*.f64 z x))))
(*.f64 (*.f64 y z) x)
(*.f64 y (*.f64 z x))
(*.f64 z (*.f64 y x))
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (*.f64 y (*.f64 z x))))
(*.f64 (*.f64 y z) x)
(*.f64 y (*.f64 z x))
(*.f64 z (*.f64 y x))
(*.f64 y (*.f64 z x))
(*.f64 (*.f64 y z) x)
(*.f64 z (*.f64 y x))
(*.f64 y (*.f64 z x))
(*.f64 (*.f64 y z) x)
(*.f64 z (*.f64 y x))
(*.f64 y (*.f64 z x))
(*.f64 (*.f64 y z) x)
(*.f64 z (*.f64 y x))
(*.f64 y (*.f64 z x))
(*.f64 (*.f64 y z) x)
(*.f64 z (*.f64 y x))
(*.f64 y (*.f64 z x))
(*.f64 (*.f64 y z) x)
(*.f64 z (*.f64 y x))
(*.f64 y (*.f64 z x))
(*.f64 (*.f64 y z) x)
(*.f64 z (*.f64 y x))
(*.f64 y (*.f64 z x))
(*.f64 (*.f64 y z) x)
(*.f64 z (*.f64 y x))
(*.f64 y (*.f64 z x))
(*.f64 (*.f64 y z) x)
(*.f64 z (*.f64 y x))
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (*.f64 y (*.f64 z x))))
(*.f64 (*.f64 y z) x)
(*.f64 y (*.f64 z x))
(*.f64 z (*.f64 y x))
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (*.f64 y (*.f64 z x))))
(*.f64 (*.f64 y z) x)
(*.f64 y (*.f64 z x))
(*.f64 z (*.f64 y x))
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (*.f64 y (*.f64 z x))))
(*.f64 (*.f64 y z) x)
(*.f64 y (*.f64 z x))
(*.f64 z (*.f64 y x))
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (*.f64 y (*.f64 z x))))
(*.f64 (*.f64 y z) x)
(*.f64 y (*.f64 z x))
(*.f64 z (*.f64 y x))

localize8.0ms (0.1%)

Local error

Found 1 expressions with local error:

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

Compiled 14 to 9 computations (35.7% saved)

series3.0ms (0%)

Counts
1 → 12
Calls

6 calls:

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

rewrite173.0ms (2.3%)

Algorithm
batch-egg-rewrite
Rules
617×pow1_binary64
572×add-log-exp_binary64
572×log1p-expm1-u_binary64
572×expm1-log1p-u_binary64
561×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
067
11227
215107
Stop Event
node limit
Counts
1 → 17
Calls
Call 1
Inputs
(*.f64 (-.f64 1 z) x)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 x (*.f64 (neg.f64 z) x))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 x (*.f64 x (neg.f64 z)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 (-.f64 1 z) x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 1 (pow.f64 z 3)) x) (+.f64 1 (fma.f64 z z z)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 1 (*.f64 z z)) x) (+.f64 1 z))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (-.f64 1 (pow.f64 z 3))) (+.f64 1 (fma.f64 z z z)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (-.f64 1 (*.f64 z z))) (+.f64 1 z))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (-.f64 1 z) x) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 (-.f64 1 z) x) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 (-.f64 1 z) x)) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 (-.f64 1 z) x)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 (-.f64 1 z) x) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 x) (-.f64 1 z)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 (-.f64 1 z) x) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 (-.f64 1 z) x)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 (-.f64 1 z) x)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 (-.f64 1 z) x)))))))

simplify40.0ms (0.5%)

Algorithm
egg-herbie
Rules
140×fma-def_binary64
84×fma-neg_binary64
22×cancel-sign-sub-inv_binary64
21×associate-*r*_binary64
19×associate-*l*_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0785
11476
23376
35176
47276
514676
628376
739276
847576
953976
Stop Event
saturated
Counts
29 → 22
Calls
Call 1
Inputs
x
(+.f64 (*.f64 -1 (*.f64 z x)) x)
(+.f64 (*.f64 -1 (*.f64 z x)) x)
(+.f64 (*.f64 -1 (*.f64 z x)) x)
(*.f64 -1 (*.f64 z x))
(+.f64 (*.f64 -1 (*.f64 z x)) x)
(+.f64 (*.f64 -1 (*.f64 z x)) x)
(+.f64 (*.f64 -1 (*.f64 z x)) x)
(*.f64 -1 (*.f64 z x))
(+.f64 (*.f64 -1 (*.f64 z x)) x)
(+.f64 (*.f64 -1 (*.f64 z x)) x)
(+.f64 (*.f64 -1 (*.f64 z x)) x)
Outputs
x
(+.f64 (*.f64 -1 (*.f64 z x)) x)
(fma.f64 -1 (*.f64 x z) x)
(-.f64 x (*.f64 x z))
(+.f64 (*.f64 -1 (*.f64 z x)) x)
(fma.f64 -1 (*.f64 x z) x)
(-.f64 x (*.f64 x z))
(+.f64 (*.f64 -1 (*.f64 z x)) x)
(fma.f64 -1 (*.f64 x z) x)
(-.f64 x (*.f64 x z))
(*.f64 -1 (*.f64 z x))
(neg.f64 (*.f64 x z))
(*.f64 x (neg.f64 z))
(*.f64 z (neg.f64 x))
(+.f64 (*.f64 -1 (*.f64 z x)) x)
(fma.f64 -1 (*.f64 x z) x)
(-.f64 x (*.f64 x z))
(+.f64 (*.f64 -1 (*.f64 z x)) x)
(fma.f64 -1 (*.f64 x z) x)
(-.f64 x (*.f64 x z))
(+.f64 (*.f64 -1 (*.f64 z x)) x)
(fma.f64 -1 (*.f64 x z) x)
(-.f64 x (*.f64 x z))
(*.f64 -1 (*.f64 z x))
(neg.f64 (*.f64 x z))
(*.f64 x (neg.f64 z))
(*.f64 z (neg.f64 x))
(+.f64 (*.f64 -1 (*.f64 z x)) x)
(fma.f64 -1 (*.f64 x z) x)
(-.f64 x (*.f64 x z))
(+.f64 (*.f64 -1 (*.f64 z x)) x)
(fma.f64 -1 (*.f64 x z) x)
(-.f64 x (*.f64 x z))
(+.f64 (*.f64 -1 (*.f64 z x)) x)
(fma.f64 -1 (*.f64 x z) x)
(-.f64 x (*.f64 x z))

localize13.0ms (0.2%)

Local error

Found 2 expressions with local error:

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

Compiled 21 to 6 computations (71.4% saved)

series10.0ms (0.1%)

Counts
2 → 60
Calls

15 calls:

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

rewrite104.0ms (1.4%)

Algorithm
batch-egg-rewrite
Rules
826×pow1_binary64
764×add-log-exp_binary64
764×log1p-expm1-u_binary64
764×expm1-log1p-u_binary64
747×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0717
115017
2206017
Stop Event
node limit
Counts
2 → 57
Calls
Call 1
Inputs
(*.f64 (-.f64 (*.f64 z y) z) x)
(-.f64 (*.f64 z y) z)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (*.f64 z y) x) (*.f64 (neg.f64 z) x))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 x (*.f64 z y)) (*.f64 x (neg.f64 z)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 (-.f64 (*.f64 z y) z) x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 (pow.f64 (*.f64 z y) 3) (pow.f64 z 3)) x) (+.f64 (pow.f64 (*.f64 z y) 2) (*.f64 z (fma.f64 z y z))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 (pow.f64 (*.f64 z y) 2) (*.f64 z z)) x) (fma.f64 z y z))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (-.f64 (pow.f64 (*.f64 z y) 3) (pow.f64 z 3))) (+.f64 (pow.f64 (*.f64 z y) 2) (*.f64 z (fma.f64 z y z))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (-.f64 (pow.f64 (*.f64 z y) 2) (*.f64 z z))) (fma.f64 z y z))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (-.f64 (*.f64 z y) z) x) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 (-.f64 (*.f64 z y) z) x) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 (-.f64 (*.f64 z y) z) x)) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 (-.f64 (*.f64 z y) z) x)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 (-.f64 (*.f64 z y) z) x) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 x) (-.f64 (*.f64 z y) z)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 (-.f64 (*.f64 z y) z) x) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 (-.f64 (*.f64 z y) z) 3) (pow.f64 x 3)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 x 3) (pow.f64 (-.f64 (*.f64 z y) z) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 (-.f64 (*.f64 z y) z) x)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 (-.f64 (*.f64 z y) z) x)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 (-.f64 (*.f64 z y) z) x)))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 z y) (neg.f64 z))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 z y) (*.f64 (neg.f64 z) 1))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (-.f64 (*.f64 z y) z) (fma.f64 (neg.f64 z) 1 z))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (-.f64 (*.f64 z y) z) (fma.f64 (neg.f64 (cbrt.f64 z)) (pow.f64 (cbrt.f64 z) 2) z))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (-.f64 (*.f64 z y) z) (fma.f64 (neg.f64 (sqrt.f64 z)) (sqrt.f64 z) z))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (neg.f64 z) (*.f64 z y))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 z (-.f64 y 1))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 (*.f64 z y) z) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (-.f64 (*.f64 z y) z))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (-.f64 (*.f64 z y) z)) (pow.f64 (cbrt.f64 (-.f64 (*.f64 z y) z)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (-.f64 (*.f64 z y) z)) 2) (cbrt.f64 (-.f64 (*.f64 z y) z)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (-.f64 (*.f64 z y) z)) (sqrt.f64 (-.f64 (*.f64 z y) z)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 (pow.f64 (*.f64 z y) 3) (pow.f64 z 3)) (/.f64 1 (+.f64 (pow.f64 (*.f64 z y) 2) (*.f64 z (fma.f64 z y z)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 (pow.f64 (*.f64 z y) 2) (*.f64 z z)) (/.f64 1 (fma.f64 z y z)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (sqrt.f64 (*.f64 z y)) (sqrt.f64 z)) (-.f64 (sqrt.f64 (*.f64 z y)) (sqrt.f64 z)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (+.f64 (pow.f64 (*.f64 z y) 2) (*.f64 z (fma.f64 z y z))) (-.f64 (pow.f64 (*.f64 z y) 3) (pow.f64 z 3))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (fma.f64 z y z) (-.f64 (pow.f64 (*.f64 z y) 2) (*.f64 z z))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 (*.f64 z y) 3) (pow.f64 z 3)) (+.f64 (pow.f64 (*.f64 z y) 2) (*.f64 z (fma.f64 z y z))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 (*.f64 z y) 2) (*.f64 z z)) (fma.f64 z y z))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (-.f64 (pow.f64 (*.f64 z y) 3) (pow.f64 z 3))) (neg.f64 (+.f64 (pow.f64 (*.f64 z y) 2) (*.f64 z (fma.f64 z y z)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (-.f64 (pow.f64 (*.f64 z y) 2) (*.f64 z z))) (neg.f64 (fma.f64 z y z)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (*.f64 z y) 3) (pow.f64 (neg.f64 z) 3)) (+.f64 (pow.f64 (*.f64 z y) 2) (-.f64 (*.f64 (neg.f64 z) (neg.f64 z)) (*.f64 (*.f64 z y) (neg.f64 z)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 (*.f64 z y) 2) (*.f64 (neg.f64 z) (neg.f64 z))) (-.f64 (*.f64 z y) (neg.f64 z)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (-.f64 (*.f64 z y) z) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (-.f64 (*.f64 z y) z) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (-.f64 (*.f64 z y) z)) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (-.f64 (*.f64 z y) z)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (-.f64 (*.f64 z y) z) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (-.f64 (*.f64 z y) z)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (-.f64 (*.f64 z y) z) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (-.f64 (*.f64 z y) z)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (-.f64 (*.f64 z y) z)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (-.f64 (*.f64 z y) z)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 z y (neg.f64 z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 y z (neg.f64 z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (*.f64 z y) (neg.f64 z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (*.f64 z y)) 2) (cbrt.f64 (*.f64 z y)) (neg.f64 z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (*.f64 z y)) (sqrt.f64 (*.f64 z y)) (neg.f64 z))))))

simplify52.0ms (0.7%)

Algorithm
egg-herbie
Rules
423×fma-def_binary64
226×fma-neg_binary64
82×associate-*l*_binary64
78×distribute-rgt-in_binary64
75×cancel-sign-sub-inv_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
026508
166508
2151508
3365508
4749508
51158508
61537508
71605508
Stop Event
saturated
Counts
117 → 74
Calls
Call 1
Inputs
(*.f64 z (*.f64 (-.f64 y 1) x))
(*.f64 z (*.f64 (-.f64 y 1) x))
(*.f64 z (*.f64 (-.f64 y 1) x))
(*.f64 z (*.f64 (-.f64 y 1) x))
(*.f64 z (*.f64 (-.f64 y 1) x))
(*.f64 z (*.f64 (-.f64 y 1) x))
(*.f64 z (*.f64 (-.f64 y 1) x))
(*.f64 z (*.f64 (-.f64 y 1) x))
(*.f64 -1 (*.f64 (+.f64 1 (*.f64 -1 y)) (*.f64 z x)))
(*.f64 -1 (*.f64 (+.f64 1 (*.f64 -1 y)) (*.f64 z x)))
(*.f64 -1 (*.f64 (+.f64 1 (*.f64 -1 y)) (*.f64 z x)))
(*.f64 -1 (*.f64 (+.f64 1 (*.f64 -1 y)) (*.f64 z x)))
(*.f64 -1 (*.f64 z x))
(+.f64 (*.f64 y (*.f64 z x)) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 y (*.f64 z x)) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 y (*.f64 z x)) (*.f64 -1 (*.f64 z x)))
(*.f64 y (*.f64 z x))
(+.f64 (*.f64 y (*.f64 z x)) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 y (*.f64 z x)) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 y (*.f64 z x)) (*.f64 -1 (*.f64 z x)))
(*.f64 y (*.f64 z x))
(+.f64 (*.f64 y (*.f64 z x)) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 y (*.f64 z x)) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 y (*.f64 z x)) (*.f64 -1 (*.f64 z x)))
(*.f64 (-.f64 (*.f64 y z) z) x)
(*.f64 (-.f64 (*.f64 y z) z) x)
(*.f64 (-.f64 (*.f64 y z) z) x)
(*.f64 (-.f64 (*.f64 y z) z) x)
(*.f64 (-.f64 (*.f64 y z) z) x)
(*.f64 (-.f64 (*.f64 y z) z) x)
(*.f64 (-.f64 (*.f64 y z) z) x)
(*.f64 (-.f64 (*.f64 y z) z) x)
(*.f64 (-.f64 (*.f64 y z) z) x)
(*.f64 (-.f64 (*.f64 y z) z) x)
(*.f64 (-.f64 (*.f64 y z) z) x)
(*.f64 (-.f64 (*.f64 y z) z) x)
(*.f64 z (-.f64 y 1))
(*.f64 z (-.f64 y 1))
(*.f64 z (-.f64 y 1))
(*.f64 z (-.f64 y 1))
(*.f64 z (-.f64 y 1))
(*.f64 z (-.f64 y 1))
(*.f64 z (-.f64 y 1))
(*.f64 z (-.f64 y 1))
(*.f64 -1 (*.f64 (+.f64 1 (*.f64 -1 y)) z))
(*.f64 -1 (*.f64 (+.f64 1 (*.f64 -1 y)) z))
(*.f64 -1 (*.f64 (+.f64 1 (*.f64 -1 y)) z))
(*.f64 -1 (*.f64 (+.f64 1 (*.f64 -1 y)) z))
(*.f64 -1 z)
(+.f64 (*.f64 y z) (*.f64 -1 z))
(+.f64 (*.f64 y z) (*.f64 -1 z))
(+.f64 (*.f64 y z) (*.f64 -1 z))
(*.f64 y z)
(+.f64 (*.f64 -1 z) (*.f64 y z))
(+.f64 (*.f64 -1 z) (*.f64 y z))
(+.f64 (*.f64 -1 z) (*.f64 y z))
(*.f64 y z)
(+.f64 (*.f64 -1 z) (*.f64 y z))
(+.f64 (*.f64 -1 z) (*.f64 y z))
(+.f64 (*.f64 -1 z) (*.f64 y z))
Outputs
(*.f64 z (*.f64 (-.f64 y 1) x))
(*.f64 x (fma.f64 y z (neg.f64 z)))
(*.f64 x (fma.f64 z y (neg.f64 z)))
(*.f64 z (*.f64 (+.f64 y -1) x))
(*.f64 z (-.f64 (*.f64 y x) x))
(*.f64 z (*.f64 (-.f64 y 1) x))
(*.f64 x (fma.f64 y z (neg.f64 z)))
(*.f64 x (fma.f64 z y (neg.f64 z)))
(*.f64 z (*.f64 (+.f64 y -1) x))
(*.f64 z (-.f64 (*.f64 y x) x))
(*.f64 z (*.f64 (-.f64 y 1) x))
(*.f64 x (fma.f64 y z (neg.f64 z)))
(*.f64 x (fma.f64 z y (neg.f64 z)))
(*.f64 z (*.f64 (+.f64 y -1) x))
(*.f64 z (-.f64 (*.f64 y x) x))
(*.f64 z (*.f64 (-.f64 y 1) x))
(*.f64 x (fma.f64 y z (neg.f64 z)))
(*.f64 x (fma.f64 z y (neg.f64 z)))
(*.f64 z (*.f64 (+.f64 y -1) x))
(*.f64 z (-.f64 (*.f64 y x) x))
(*.f64 z (*.f64 (-.f64 y 1) x))
(*.f64 x (fma.f64 y z (neg.f64 z)))
(*.f64 x (fma.f64 z y (neg.f64 z)))
(*.f64 z (*.f64 (+.f64 y -1) x))
(*.f64 z (-.f64 (*.f64 y x) x))
(*.f64 z (*.f64 (-.f64 y 1) x))
(*.f64 x (fma.f64 y z (neg.f64 z)))
(*.f64 x (fma.f64 z y (neg.f64 z)))
(*.f64 z (*.f64 (+.f64 y -1) x))
(*.f64 z (-.f64 (*.f64 y x) x))
(*.f64 z (*.f64 (-.f64 y 1) x))
(*.f64 x (fma.f64 y z (neg.f64 z)))
(*.f64 x (fma.f64 z y (neg.f64 z)))
(*.f64 z (*.f64 (+.f64 y -1) x))
(*.f64 z (-.f64 (*.f64 y x) x))
(*.f64 z (*.f64 (-.f64 y 1) x))
(*.f64 x (fma.f64 y z (neg.f64 z)))
(*.f64 x (fma.f64 z y (neg.f64 z)))
(*.f64 z (*.f64 (+.f64 y -1) x))
(*.f64 z (-.f64 (*.f64 y x) x))
(*.f64 -1 (*.f64 (+.f64 1 (*.f64 -1 y)) (*.f64 z x)))
(*.f64 x (fma.f64 y z (neg.f64 z)))
(*.f64 x (fma.f64 z y (neg.f64 z)))
(*.f64 z (*.f64 (+.f64 y -1) x))
(*.f64 z (-.f64 (*.f64 y x) x))
(*.f64 -1 (*.f64 (+.f64 1 (*.f64 -1 y)) (*.f64 z x)))
(*.f64 x (fma.f64 y z (neg.f64 z)))
(*.f64 x (fma.f64 z y (neg.f64 z)))
(*.f64 z (*.f64 (+.f64 y -1) x))
(*.f64 z (-.f64 (*.f64 y x) x))
(*.f64 -1 (*.f64 (+.f64 1 (*.f64 -1 y)) (*.f64 z x)))
(*.f64 x (fma.f64 y z (neg.f64 z)))
(*.f64 x (fma.f64 z y (neg.f64 z)))
(*.f64 z (*.f64 (+.f64 y -1) x))
(*.f64 z (-.f64 (*.f64 y x) x))
(*.f64 -1 (*.f64 (+.f64 1 (*.f64 -1 y)) (*.f64 z x)))
(*.f64 x (fma.f64 y z (neg.f64 z)))
(*.f64 x (fma.f64 z y (neg.f64 z)))
(*.f64 z (*.f64 (+.f64 y -1) x))
(*.f64 z (-.f64 (*.f64 y x) x))
(*.f64 -1 (*.f64 z x))
(*.f64 (neg.f64 z) x)
(*.f64 z (neg.f64 x))
(+.f64 (*.f64 y (*.f64 z x)) (*.f64 -1 (*.f64 z x)))
(*.f64 x (fma.f64 y z (neg.f64 z)))
(*.f64 x (fma.f64 z y (neg.f64 z)))
(*.f64 z (*.f64 (+.f64 y -1) x))
(*.f64 z (-.f64 (*.f64 y x) x))
(+.f64 (*.f64 y (*.f64 z x)) (*.f64 -1 (*.f64 z x)))
(*.f64 x (fma.f64 y z (neg.f64 z)))
(*.f64 x (fma.f64 z y (neg.f64 z)))
(*.f64 z (*.f64 (+.f64 y -1) x))
(*.f64 z (-.f64 (*.f64 y x) x))
(+.f64 (*.f64 y (*.f64 z x)) (*.f64 -1 (*.f64 z x)))
(*.f64 x (fma.f64 y z (neg.f64 z)))
(*.f64 x (fma.f64 z y (neg.f64 z)))
(*.f64 z (*.f64 (+.f64 y -1) x))
(*.f64 z (-.f64 (*.f64 y x) x))
(*.f64 y (*.f64 z x))
(*.f64 z (*.f64 y x))
(+.f64 (*.f64 y (*.f64 z x)) (*.f64 -1 (*.f64 z x)))
(*.f64 x (fma.f64 y z (neg.f64 z)))
(*.f64 x (fma.f64 z y (neg.f64 z)))
(*.f64 z (*.f64 (+.f64 y -1) x))
(*.f64 z (-.f64 (*.f64 y x) x))
(+.f64 (*.f64 y (*.f64 z x)) (*.f64 -1 (*.f64 z x)))
(*.f64 x (fma.f64 y z (neg.f64 z)))
(*.f64 x (fma.f64 z y (neg.f64 z)))
(*.f64 z (*.f64 (+.f64 y -1) x))
(*.f64 z (-.f64 (*.f64 y x) x))
(+.f64 (*.f64 y (*.f64 z x)) (*.f64 -1 (*.f64 z x)))
(*.f64 x (fma.f64 y z (neg.f64 z)))
(*.f64 x (fma.f64 z y (neg.f64 z)))
(*.f64 z (*.f64 (+.f64 y -1) x))
(*.f64 z (-.f64 (*.f64 y x) x))
(*.f64 y (*.f64 z x))
(*.f64 z (*.f64 y x))
(+.f64 (*.f64 y (*.f64 z x)) (*.f64 -1 (*.f64 z x)))
(*.f64 x (fma.f64 y z (neg.f64 z)))
(*.f64 x (fma.f64 z y (neg.f64 z)))
(*.f64 z (*.f64 (+.f64 y -1) x))
(*.f64 z (-.f64 (*.f64 y x) x))
(+.f64 (*.f64 y (*.f64 z x)) (*.f64 -1 (*.f64 z x)))
(*.f64 x (fma.f64 y z (neg.f64 z)))
(*.f64 x (fma.f64 z y (neg.f64 z)))
(*.f64 z (*.f64 (+.f64 y -1) x))
(*.f64 z (-.f64 (*.f64 y x) x))
(+.f64 (*.f64 y (*.f64 z x)) (*.f64 -1 (*.f64 z x)))
(*.f64 x (fma.f64 y z (neg.f64 z)))
(*.f64 x (fma.f64 z y (neg.f64 z)))
(*.f64 z (*.f64 (+.f64 y -1) x))
(*.f64 z (-.f64 (*.f64 y x) x))
(*.f64 (-.f64 (*.f64 y z) z) x)
(*.f64 x (fma.f64 y z (neg.f64 z)))
(*.f64 x (fma.f64 z y (neg.f64 z)))
(*.f64 z (*.f64 (+.f64 y -1) x))
(*.f64 z (-.f64 (*.f64 y x) x))
(*.f64 (-.f64 (*.f64 y z) z) x)
(*.f64 x (fma.f64 y z (neg.f64 z)))
(*.f64 x (fma.f64 z y (neg.f64 z)))
(*.f64 z (*.f64 (+.f64 y -1) x))
(*.f64 z (-.f64 (*.f64 y x) x))
(*.f64 (-.f64 (*.f64 y z) z) x)
(*.f64 x (fma.f64 y z (neg.f64 z)))
(*.f64 x (fma.f64 z y (neg.f64 z)))
(*.f64 z (*.f64 (+.f64 y -1) x))
(*.f64 z (-.f64 (*.f64 y x) x))
(*.f64 (-.f64 (*.f64 y z) z) x)
(*.f64 x (fma.f64 y z (neg.f64 z)))
(*.f64 x (fma.f64 z y (neg.f64 z)))
(*.f64 z (*.f64 (+.f64 y -1) x))
(*.f64 z (-.f64 (*.f64 y x) x))
(*.f64 (-.f64 (*.f64 y z) z) x)
(*.f64 x (fma.f64 y z (neg.f64 z)))
(*.f64 x (fma.f64 z y (neg.f64 z)))
(*.f64 z (*.f64 (+.f64 y -1) x))
(*.f64 z (-.f64 (*.f64 y x) x))
(*.f64 (-.f64 (*.f64 y z) z) x)
(*.f64 x (fma.f64 y z (neg.f64 z)))
(*.f64 x (fma.f64 z y (neg.f64 z)))
(*.f64 z (*.f64 (+.f64 y -1) x))
(*.f64 z (-.f64 (*.f64 y x) x))
(*.f64 (-.f64 (*.f64 y z) z) x)
(*.f64 x (fma.f64 y z (neg.f64 z)))
(*.f64 x (fma.f64 z y (neg.f64 z)))
(*.f64 z (*.f64 (+.f64 y -1) x))
(*.f64 z (-.f64 (*.f64 y x) x))
(*.f64 (-.f64 (*.f64 y z) z) x)
(*.f64 x (fma.f64 y z (neg.f64 z)))
(*.f64 x (fma.f64 z y (neg.f64 z)))
(*.f64 z (*.f64 (+.f64 y -1) x))
(*.f64 z (-.f64 (*.f64 y x) x))
(*.f64 (-.f64 (*.f64 y z) z) x)
(*.f64 x (fma.f64 y z (neg.f64 z)))
(*.f64 x (fma.f64 z y (neg.f64 z)))
(*.f64 z (*.f64 (+.f64 y -1) x))
(*.f64 z (-.f64 (*.f64 y x) x))
(*.f64 (-.f64 (*.f64 y z) z) x)
(*.f64 x (fma.f64 y z (neg.f64 z)))
(*.f64 x (fma.f64 z y (neg.f64 z)))
(*.f64 z (*.f64 (+.f64 y -1) x))
(*.f64 z (-.f64 (*.f64 y x) x))
(*.f64 (-.f64 (*.f64 y z) z) x)
(*.f64 x (fma.f64 y z (neg.f64 z)))
(*.f64 x (fma.f64 z y (neg.f64 z)))
(*.f64 z (*.f64 (+.f64 y -1) x))
(*.f64 z (-.f64 (*.f64 y x) x))
(*.f64 (-.f64 (*.f64 y z) z) x)
(*.f64 x (fma.f64 y z (neg.f64 z)))
(*.f64 x (fma.f64 z y (neg.f64 z)))
(*.f64 z (*.f64 (+.f64 y -1) x))
(*.f64 z (-.f64 (*.f64 y x) x))
(*.f64 z (-.f64 y 1))
(fma.f64 y z (neg.f64 z))
(fma.f64 z y (neg.f64 z))
(-.f64 (*.f64 z y) z)
(*.f64 z (-.f64 y 1))
(fma.f64 y z (neg.f64 z))
(fma.f64 z y (neg.f64 z))
(-.f64 (*.f64 z y) z)
(*.f64 z (-.f64 y 1))
(fma.f64 y z (neg.f64 z))
(fma.f64 z y (neg.f64 z))
(-.f64 (*.f64 z y) z)
(*.f64 z (-.f64 y 1))
(fma.f64 y z (neg.f64 z))
(fma.f64 z y (neg.f64 z))
(-.f64 (*.f64 z y) z)
(*.f64 z (-.f64 y 1))
(fma.f64 y z (neg.f64 z))
(fma.f64 z y (neg.f64 z))
(-.f64 (*.f64 z y) z)
(*.f64 z (-.f64 y 1))
(fma.f64 y z (neg.f64 z))
(fma.f64 z y (neg.f64 z))
(-.f64 (*.f64 z y) z)
(*.f64 z (-.f64 y 1))
(fma.f64 y z (neg.f64 z))
(fma.f64 z y (neg.f64 z))
(-.f64 (*.f64 z y) z)
(*.f64 z (-.f64 y 1))
(fma.f64 y z (neg.f64 z))
(fma.f64 z y (neg.f64 z))
(-.f64 (*.f64 z y) z)
(*.f64 -1 (*.f64 (+.f64 1 (*.f64 -1 y)) z))
(fma.f64 y z (neg.f64 z))
(fma.f64 z y (neg.f64 z))
(-.f64 (*.f64 z y) z)
(*.f64 -1 (*.f64 (+.f64 1 (*.f64 -1 y)) z))
(fma.f64 y z (neg.f64 z))
(fma.f64 z y (neg.f64 z))
(-.f64 (*.f64 z y) z)
(*.f64 -1 (*.f64 (+.f64 1 (*.f64 -1 y)) z))
(fma.f64 y z (neg.f64 z))
(fma.f64 z y (neg.f64 z))
(-.f64 (*.f64 z y) z)
(*.f64 -1 (*.f64 (+.f64 1 (*.f64 -1 y)) z))
(fma.f64 y z (neg.f64 z))
(fma.f64 z y (neg.f64 z))
(-.f64 (*.f64 z y) z)
(*.f64 -1 z)
(neg.f64 z)
(+.f64 (*.f64 y z) (*.f64 -1 z))
(fma.f64 y z (neg.f64 z))
(fma.f64 z y (neg.f64 z))
(-.f64 (*.f64 z y) z)
(+.f64 (*.f64 y z) (*.f64 -1 z))
(fma.f64 y z (neg.f64 z))
(fma.f64 z y (neg.f64 z))
(-.f64 (*.f64 z y) z)
(+.f64 (*.f64 y z) (*.f64 -1 z))
(fma.f64 y z (neg.f64 z))
(fma.f64 z y (neg.f64 z))
(-.f64 (*.f64 z y) z)
(*.f64 y z)
(*.f64 z y)
(+.f64 (*.f64 -1 z) (*.f64 y z))
(fma.f64 y z (neg.f64 z))
(fma.f64 z y (neg.f64 z))
(-.f64 (*.f64 z y) z)
(+.f64 (*.f64 -1 z) (*.f64 y z))
(fma.f64 y z (neg.f64 z))
(fma.f64 z y (neg.f64 z))
(-.f64 (*.f64 z y) z)
(+.f64 (*.f64 -1 z) (*.f64 y z))
(fma.f64 y z (neg.f64 z))
(fma.f64 z y (neg.f64 z))
(-.f64 (*.f64 z y) z)
(*.f64 y z)
(*.f64 z y)
(+.f64 (*.f64 -1 z) (*.f64 y z))
(fma.f64 y z (neg.f64 z))
(fma.f64 z y (neg.f64 z))
(-.f64 (*.f64 z y) z)
(+.f64 (*.f64 -1 z) (*.f64 y z))
(fma.f64 y z (neg.f64 z))
(fma.f64 z y (neg.f64 z))
(-.f64 (*.f64 z y) z)
(+.f64 (*.f64 -1 z) (*.f64 y z))
(fma.f64 y z (neg.f64 z))
(fma.f64 z y (neg.f64 z))
(-.f64 (*.f64 z y) z)

eval34.0ms (0.4%)

Compiler

Compiled 2105 to 746 computations (64.6% saved)

prune49.0ms (0.7%)

Pruning

13 alts after pruning (1 fresh and 12 done)

PrunedKeptTotal
New1811182
Fresh101
Picked011
Done01111
Total18213195
Error
0b
Counts
195 → 13
Alt Table
Click to see full alt table
StatusErrorProgram
34.0b
(*.f64 (-.f64 (*.f64 z y) z) x)
32.9b
x
49.6b
(*.f64 z (neg.f64 x))
44.7b
(pow.f64 (cbrt.f64 (*.f64 y (*.f64 z x))) 3)
19.8b
(-.f64 x (*.f64 z x))
46.1b
(*.f64 (*.f64 y x) z)
3.6b
(*.f64 (-.f64 (+.f64 (*.f64 y z) 1) z) x)
53.4b
(*.f64 (*.f64 y (sqrt.f64 (*.f64 z x))) (sqrt.f64 (*.f64 z x)))
19.8b
(*.f64 (-.f64 1 z) x)
46.8b
(*.f64 (*.f64 z y) x)
44.3b
(*.f64 y (*.f64 z x))
33.3b
(*.f64 z (*.f64 (-.f64 y 1) x))
17.7b
(+.f64 (*.f64 z (*.f64 y x)) x)
Compiler

Compiled 118 to 76 computations (35.6% saved)

regimes477.0ms (6.3%)

Counts
24 → 3
Calls
Call 1
Inputs
x
x
x
(*.f64 z (neg.f64 x))
(*.f64 (*.f64 y x) z)
(*.f64 (-.f64 1 z) x)
(*.f64 (*.f64 z y) x)
(*.f64 (-.f64 1 z) x)
(*.f64 y (*.f64 z x))
(-.f64 x (*.f64 z x))
(+.f64 (*.f64 z (*.f64 y x)) x)
(*.f64 (-.f64 (*.f64 z y) z) x)
(*.f64 z (*.f64 (-.f64 y 1) x))
(*.f64 z (-.f64 (*.f64 y x) x))
(*.f64 z (*.f64 (-.f64 y 1) x))
(*.f64 x (-.f64 1 (*.f64 y (neg.f64 z))))
(*.f64 (-.f64 (+.f64 (*.f64 y z) 1) z) x)
(+.f64 (*.f64 z (*.f64 (-.f64 y 1) x)) x)
(*.f64 x (-.f64 1 (*.f64 (-.f64 1 y) z)))
(pow.f64 (cbrt.f64 (*.f64 y (*.f64 z x))) 3)
(fma.f64 x (fma.f64 y z (neg.f64 z)) x)
(*.f64 (*.f64 y (sqrt.f64 (*.f64 z x))) (sqrt.f64 (*.f64 z x)))
(pow.f64 (cbrt.f64 (*.f64 x (-.f64 1 (*.f64 (-.f64 1 y) z)))) 3)
(*.f64 z (/.f64 1 (/.f64 (fma.f64 y x x) (-.f64 (pow.f64 (*.f64 y x) 2) (*.f64 x x)))))
Outputs
(*.f64 y (*.f64 z x))
(fma.f64 x (fma.f64 y z (neg.f64 z)) x)
(*.f64 z (*.f64 (-.f64 y 1) x))
Calls

11 calls:

73.0ms
(-.f64 1 (*.f64 (-.f64 1 y) z))
71.0ms
(*.f64 x (-.f64 1 (*.f64 (-.f64 1 y) z)))
63.0ms
(*.f64 (-.f64 1 y) z)
62.0ms
x
44.0ms
y
Results
ErrorSegmentsBranch
0.1b3x
2.3b3y
0.1b3z
0.1b3(*.f64 x (-.f64 1 (*.f64 (-.f64 1 y) z)))
0.1b3(*.f64 x (-.f64 1 (*.f64 (-.f64 1 y) z)))
0.1b3(-.f64 1 (*.f64 (-.f64 1 y) z))
0.1b3(-.f64 1 (*.f64 (-.f64 1 y) z))
0.1b3(*.f64 (-.f64 1 y) z)
0.1b3(*.f64 (-.f64 1 y) z)
3.6b1(-.f64 1 y)
3.6b1(-.f64 1 y)
Compiler

Compiled 251 to 144 computations (42.6% saved)

bsearch0.0ms (0%)

Algorithm
left-value
Steps
TimeLeftRight
0.0ms
1.8489980278017026e+264
9.555018629310291e+264
0.0ms
-inf
-1.946237291657571e+290
Compiler

Compiled 18 to 14 computations (22.2% saved)

regimes475.0ms (6.3%)

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

10 calls:

124.0ms
(*.f64 (-.f64 1 y) z)
113.0ms
x
69.0ms
y
39.0ms
(*.f64 (-.f64 1 y) z)
37.0ms
(*.f64 x (-.f64 1 (*.f64 (-.f64 1 y) z)))
Results
ErrorSegmentsBranch
0.1b3x
2.3b3y
0.1b3z
0.1b3(*.f64 x (-.f64 1 (*.f64 (-.f64 1 y) z)))
0.1b3(-.f64 1 (*.f64 (-.f64 1 y) z))
0.1b3(-.f64 1 (*.f64 (-.f64 1 y) z))
0.1b3(*.f64 (-.f64 1 y) z)
0.1b3(*.f64 (-.f64 1 y) z)
3.6b1(-.f64 1 y)
3.6b1(-.f64 1 y)
Compiler

Compiled 190 to 112 computations (41.1% saved)

bsearch0.0ms (0%)

Algorithm
left-value
Steps
TimeLeftRight
0.0ms
1.8489980278017026e+264
9.555018629310291e+264
0.0ms
-inf
-1.946237291657571e+290
Compiler

Compiled 18 to 14 computations (22.2% saved)

regimes101.0ms (1.3%)

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

3 calls:

39.0ms
x
32.0ms
y
26.0ms
z
Results
ErrorSegmentsBranch
11.3b5x
4.5b3y
1.3b3z
Compiler

Compiled 95 to 46 computations (51.6% saved)

bsearch39.0ms (0.5%)

Algorithm
binary-search
Steps
TimeLeftRight
19.0ms
8.719874522640064e-7
117.11384621714323
20.0ms
-1.0015198227675867e-6
-9.496323487618887e-13
Compiler

Compiled 18 to 14 computations (22.2% saved)

regimes191.0ms (2.5%)

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

3 calls:

100.0ms
x
63.0ms
y
24.0ms
z
Results
ErrorSegmentsBranch
11.3b5x
4.8b3y
5.1b3z
Compiler

Compiled 87 to 41 computations (52.9% saved)

bsearch70.0ms (0.9%)

Algorithm
binary-search
Steps
TimeLeftRight
20.0ms
1.523319980130822e-5
5.461995343755676e-5
49.0ms
-489035.029403948
-4.461634258529846
Compiler

Compiled 18 to 14 computations (22.2% saved)

regimes167.0ms (2.2%)

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

3 calls:

89.0ms
z
51.0ms
x
24.0ms
y
Results
ErrorSegmentsBranch
16.9b5x
8.7b3y
15.8b7z
Compiler

Compiled 52 to 27 computations (48.1% saved)

bsearch107.0ms (1.4%)

Algorithm
binary-search
Steps
TimeLeftRight
34.0ms
1.9304882876218297e+76
1.2380878259396048e+77
73.0ms
-1.6455777946518423e+46
-3.739855263392124e+44
Compiler

Compiled 18 to 14 computations (22.2% saved)

regimes265.0ms (3.5%)

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

3 calls:

104.0ms
y
98.0ms
z
59.0ms
x
Results
ErrorSegmentsBranch
16.9b5x
9.4b6y
15.8b7z
Compiler

Compiled 42 to 24 computations (42.9% saved)

bsearch102.0ms (1.4%)

Algorithm
binary-search
Steps
TimeLeftRight
19.0ms
1.9304882876218297e+76
1.2380878259396048e+77
20.0ms
-1.6455777946518423e+46
-3.739855263392124e+44
45.0ms
-2.2759977197894507e+67
-6.3458025353101385e+65
12.0ms
-7.007876760526057e+115
-3.0171633816667504e+115
6.0ms
-7.776447363062379e+238
-6.659528435272359e+229
Compiler

Compiled 54 to 38 computations (29.6% saved)

regimes106.0ms (1.4%)

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

3 calls:

46.0ms
x
38.0ms
z
20.0ms
y
Results
ErrorSegmentsBranch
16.9b5x
10.4b3y
15.8b7z
Compiler

Compiled 32 to 19 computations (40.6% saved)

bsearch302.0ms (4%)

Algorithm
binary-search
Steps
TimeLeftRight
281.0ms
1.9304882876218297e+76
1.2380878259396048e+77
21.0ms
-1.6455777946518423e+46
-3.739855263392124e+44
Compiler

Compiled 18 to 14 computations (22.2% saved)

regimes83.0ms (1.1%)

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

3 calls:

31.0ms
x
26.0ms
y
25.0ms
z
Results
ErrorSegmentsBranch
26.4b7x
22.1b5y
17.3b6z
Compiler

Compiled 27 to 16 computations (40.7% saved)

bsearch250.0ms (3.3%)

Algorithm
binary-search
Steps
TimeLeftRight
33.0ms
7.279237392142543e+251
1.2151061411514124e+256
75.0ms
1.5974470247214644e+149
2.5616515757259252e+154
99.0ms
1.047868359905201e+96
1.370541947820116e+101
19.0ms
4.682236597379262e-45
1.2312759409307142e-41
23.0ms
-9.496323487618887e-13
-3.0988904555575194e-20
Compiler

Compiled 460 to 326 computations (29.1% saved)

regimes139.0ms (1.9%)

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

3 calls:

115.0ms
y
12.0ms
x
11.0ms
z
Results
ErrorSegmentsBranch
31.8b3x
31.6b3y
20.9b3z
Compiler

Compiled 22 to 14 computations (36.4% saved)

bsearch37.0ms (0.5%)

Algorithm
binary-search
Steps
TimeLeftRight
19.0ms
8.719874522640064e-7
117.11384621714323
18.0ms
-9.496323487618887e-13
-3.0988904555575194e-20
Compiler

Compiled 18 to 14 computations (22.2% saved)

regimes13.0ms (0.2%)

Accuracy

Total -0.0b remaining (-0%)

Threshold costs -0.0b (-0%)

Counts
3 → 1
Calls
Call 1
Inputs
x
x
x
Outputs
x
Calls

3 calls:

5.0ms
z
4.0ms
x
4.0ms
y
Results
ErrorSegmentsBranch
32.9b1x
32.9b1y
32.9b1z
Compiler

Compiled 18 to 12 computations (33.3% saved)

simplify48.0ms (0.6%)

Algorithm
egg-herbie
Rules
111×distribute-rgt-neg-in_binary64
82×cancel-sign-sub-inv_binary64
70×distribute-lft-neg-in_binary64
69×distribute-lft-neg-out_binary64
61×distribute-rgt-neg-out_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
089416
1126414
2155414
3190414
4241414
5325414
6439414
7543414
8631414
9700414
10755414
11800414
12813414
Stop Event
fuel
saturated
Calls
Call 1
Inputs
(if (<=.f64 (*.f64 (-.f64 1 y) z) -inf.0) (*.f64 y (*.f64 z x)) (if (<=.f64 (*.f64 (-.f64 1 y) z) 2000000000000000088281037805790575558572782794765162549126012346566888792166047218548967335383701664797639397755095222062794225936857411749371199466668068384943561307143740090430395479270498413381628926367543716105666065019831099205147950020333146087680957122347008) (fma.f64 x (fma.f64 y z (neg.f64 z)) x) (*.f64 z (*.f64 (-.f64 y 1) x))))
(if (<=.f64 (*.f64 (-.f64 1 y) z) -inf.0) (*.f64 y (*.f64 z x)) (if (<=.f64 (*.f64 (-.f64 1 y) z) 2000000000000000088281037805790575558572782794765162549126012346566888792166047218548967335383701664797639397755095222062794225936857411749371199466668068384943561307143740090430395479270498413381628926367543716105666065019831099205147950020333146087680957122347008) (*.f64 (-.f64 (+.f64 (*.f64 y z) 1) z) x) (*.f64 z (*.f64 (-.f64 y 1) x))))
(if (<=.f64 z -4729543642967199/4722366482869645213696) (*.f64 z (*.f64 (-.f64 y 1) x)) (if (<=.f64 z 8235688636108877/9444732965739290427392) (*.f64 x (-.f64 1 (*.f64 y (neg.f64 z)))) (*.f64 z (-.f64 (*.f64 y x) x))))
(if (<=.f64 y -2100389457888355/4294967296) (+.f64 (*.f64 z (*.f64 y x)) x) (if (<=.f64 y 4496047010534655/295147905179352825856) (*.f64 (-.f64 1 z) x) (+.f64 (*.f64 z (*.f64 y x)) x)))
(if (<=.f64 y -16455777946518423050240341180782221729502068736) (*.f64 y (*.f64 z x)) (if (<=.f64 y 19304882876218296676335986216575230512404056433943543596526093569721253232640) (*.f64 (-.f64 1 z) x) (*.f64 y (*.f64 z x))))
(if (<=.f64 y -10000000000000000531660196626596490356033894575245100973356972987043891522292165594595004291349304909025721681812512093962950445138053653873169216309020403876699170397334223513449750683762833231235463783529148067211236930570359138156544) (*.f64 (*.f64 z y) x) (if (<=.f64 y -50000000000000000777970806473342151213410069846053071668488529021541689058237785163249269495752372383810314043392000) (*.f64 (*.f64 y x) z) (if (<=.f64 y -22759977197894507218368742708859865449527442382148130764794233880576) (*.f64 (*.f64 z y) x) (if (<=.f64 y -16455777946518423050240341180782221729502068736) (*.f64 (*.f64 y x) z) (if (<=.f64 y 19304882876218296676335986216575230512404056433943543596526093569721253232640) (*.f64 (-.f64 1 z) x) (*.f64 (*.f64 y x) z))))))
(if (<=.f64 y -16455777946518423050240341180782221729502068736) (*.f64 (*.f64 y x) z) (if (<=.f64 y 19304882876218296676335986216575230512404056433943543596526093569721253232640) (*.f64 (-.f64 1 z) x) (*.f64 (*.f64 y x) z)))
(if (<=.f64 z -75237626056509472/79228162514264337593543950336) (*.f64 z (neg.f64 x)) (if (<=.f64 z 7524064120550501/1606938044258990275541962092341162602522202993782792835301376) x (if (<=.f64 z 135000000000000003118224745930453471782601869025020752083251341555665584050206349190433987411671252992) (*.f64 (*.f64 y x) z) (if (<=.f64 z 25499999999999999528024993055952010542249007939197233513958453954737868247668078447050309476321791611551296703204050146631997321389936393151246862110425088) (*.f64 z (neg.f64 x)) (if (<=.f64 z 749999999999999972618195342729545985016632000743469009626014457803827542375735938982059071644900192864667118894540542726769083605834977908715053634928195608552191149123862320390296944505783752754974549874536872321994879903915477929790320009391510650880) (*.f64 (*.f64 y x) z) (*.f64 z (neg.f64 x)))))))
(if (<=.f64 z -75237626056509472/79228162514264337593543950336) (*.f64 z (neg.f64 x)) (if (<=.f64 z 8235688636108877/9444732965739290427392) x (*.f64 z (neg.f64 x))))
x
Outputs
(if (<=.f64 (*.f64 (-.f64 1 y) z) -inf.0) (*.f64 y (*.f64 z x)) (if (<=.f64 (*.f64 (-.f64 1 y) z) 2000000000000000088281037805790575558572782794765162549126012346566888792166047218548967335383701664797639397755095222062794225936857411749371199466668068384943561307143740090430395479270498413381628926367543716105666065019831099205147950020333146087680957122347008) (fma.f64 x (fma.f64 y z (neg.f64 z)) x) (*.f64 z (*.f64 (-.f64 y 1) x))))
(if (<=.f64 (*.f64 (-.f64 1 y) z) -inf.0) (*.f64 y (*.f64 z x)) (if (<=.f64 (*.f64 (-.f64 1 y) z) 2000000000000000088281037805790575558572782794765162549126012346566888792166047218548967335383701664797639397755095222062794225936857411749371199466668068384943561307143740090430395479270498413381628926367543716105666065019831099205147950020333146087680957122347008) (fma.f64 x (fma.f64 y z (neg.f64 z)) x) (*.f64 z (*.f64 x (-.f64 y 1)))))
(if (<=.f64 (*.f64 (-.f64 1 y) z) -inf.0) (*.f64 y (*.f64 z x)) (if (<=.f64 (*.f64 (-.f64 1 y) z) 2000000000000000088281037805790575558572782794765162549126012346566888792166047218548967335383701664797639397755095222062794225936857411749371199466668068384943561307143740090430395479270498413381628926367543716105666065019831099205147950020333146087680957122347008) (fma.f64 x (fma.f64 y z (neg.f64 z)) x) (*.f64 z (*.f64 x (+.f64 y -1)))))
(if (<=.f64 (*.f64 (-.f64 1 y) z) -inf.0) (*.f64 y (*.f64 z x)) (if (<=.f64 (*.f64 (-.f64 1 y) z) 2000000000000000088281037805790575558572782794765162549126012346566888792166047218548967335383701664797639397755095222062794225936857411749371199466668068384943561307143740090430395479270498413381628926367543716105666065019831099205147950020333146087680957122347008) (*.f64 (-.f64 (+.f64 (*.f64 y z) 1) z) x) (*.f64 z (*.f64 (-.f64 y 1) x))))
(if (<=.f64 (*.f64 (-.f64 1 y) z) -inf.0) (*.f64 y (*.f64 z x)) (if (<=.f64 (*.f64 (-.f64 1 y) z) 2000000000000000088281037805790575558572782794765162549126012346566888792166047218548967335383701664797639397755095222062794225936857411749371199466668068384943561307143740090430395479270498413381628926367543716105666065019831099205147950020333146087680957122347008) (*.f64 x (-.f64 (+.f64 1 (*.f64 y z)) z)) (*.f64 z (*.f64 x (-.f64 y 1)))))
(if (<=.f64 (*.f64 (-.f64 1 y) z) -inf.0) (*.f64 y (*.f64 z x)) (if (<=.f64 (*.f64 (-.f64 1 y) z) 2000000000000000088281037805790575558572782794765162549126012346566888792166047218548967335383701664797639397755095222062794225936857411749371199466668068384943561307143740090430395479270498413381628926367543716105666065019831099205147950020333146087680957122347008) (*.f64 x (-.f64 (+.f64 1 (*.f64 y z)) z)) (*.f64 z (*.f64 x (+.f64 y -1)))))
(if (<=.f64 z -4729543642967199/4722366482869645213696) (*.f64 z (*.f64 (-.f64 y 1) x)) (if (<=.f64 z 8235688636108877/9444732965739290427392) (*.f64 x (-.f64 1 (*.f64 y (neg.f64 z)))) (*.f64 z (-.f64 (*.f64 y x) x))))
(if (<=.f64 z -4729543642967199/4722366482869645213696) (*.f64 z (*.f64 x (-.f64 y 1))) (if (<=.f64 z 8235688636108877/9444732965739290427392) (*.f64 x (-.f64 1 (*.f64 y (neg.f64 z)))) (*.f64 z (-.f64 (*.f64 y x) x))))
(if (<=.f64 z -4729543642967199/4722366482869645213696) (*.f64 z (*.f64 x (-.f64 y 1))) (if (<=.f64 z 8235688636108877/9444732965739290427392) (*.f64 x (+.f64 1 (*.f64 y z))) (*.f64 z (-.f64 (*.f64 y x) x))))
(if (<=.f64 z -4729543642967199/4722366482869645213696) (*.f64 z (*.f64 x (+.f64 y -1))) (if (<=.f64 z 8235688636108877/9444732965739290427392) (*.f64 x (+.f64 1 (*.f64 y z))) (*.f64 z (-.f64 (*.f64 y x) x))))
(if (<=.f64 y -2100389457888355/4294967296) (+.f64 (*.f64 z (*.f64 y x)) x) (if (<=.f64 y 4496047010534655/295147905179352825856) (*.f64 (-.f64 1 z) x) (+.f64 (*.f64 z (*.f64 y x)) x)))
(if (<=.f64 y -2100389457888355/4294967296) (+.f64 x (*.f64 z (*.f64 y x))) (if (<=.f64 y 4496047010534655/295147905179352825856) (*.f64 x (-.f64 1 z)) (+.f64 x (*.f64 z (*.f64 y x)))))
(if (<=.f64 y -16455777946518423050240341180782221729502068736) (*.f64 y (*.f64 z x)) (if (<=.f64 y 19304882876218296676335986216575230512404056433943543596526093569721253232640) (*.f64 (-.f64 1 z) x) (*.f64 y (*.f64 z x))))
(if (<=.f64 y -16455777946518423050240341180782221729502068736) (*.f64 y (*.f64 z x)) (if (<=.f64 y 19304882876218296676335986216575230512404056433943543596526093569721253232640) (*.f64 x (-.f64 1 z)) (*.f64 y (*.f64 z x))))
(if (<=.f64 y -10000000000000000531660196626596490356033894575245100973356972987043891522292165594595004291349304909025721681812512093962950445138053653873169216309020403876699170397334223513449750683762833231235463783529148067211236930570359138156544) (*.f64 (*.f64 z y) x) (if (<=.f64 y -50000000000000000777970806473342151213410069846053071668488529021541689058237785163249269495752372383810314043392000) (*.f64 (*.f64 y x) z) (if (<=.f64 y -22759977197894507218368742708859865449527442382148130764794233880576) (*.f64 (*.f64 z y) x) (if (<=.f64 y -16455777946518423050240341180782221729502068736) (*.f64 (*.f64 y x) z) (if (<=.f64 y 19304882876218296676335986216575230512404056433943543596526093569721253232640) (*.f64 (-.f64 1 z) x) (*.f64 (*.f64 y x) z))))))
(if (<=.f64 y -10000000000000000531660196626596490356033894575245100973356972987043891522292165594595004291349304909025721681812512093962950445138053653873169216309020403876699170397334223513449750683762833231235463783529148067211236930570359138156544) (*.f64 x (*.f64 y z)) (if (<=.f64 y -50000000000000000777970806473342151213410069846053071668488529021541689058237785163249269495752372383810314043392000) (*.f64 z (*.f64 y x)) (if (<=.f64 y -22759977197894507218368742708859865449527442382148130764794233880576) (*.f64 x (*.f64 y z)) (if (<=.f64 y -16455777946518423050240341180782221729502068736) (*.f64 z (*.f64 y x)) (if (<=.f64 y 19304882876218296676335986216575230512404056433943543596526093569721253232640) (*.f64 x (-.f64 1 z)) (*.f64 z (*.f64 y x)))))))
(if (<=.f64 y -16455777946518423050240341180782221729502068736) (*.f64 (*.f64 y x) z) (if (<=.f64 y 19304882876218296676335986216575230512404056433943543596526093569721253232640) (*.f64 (-.f64 1 z) x) (*.f64 (*.f64 y x) z)))
(if (<=.f64 y -16455777946518423050240341180782221729502068736) (*.f64 z (*.f64 y x)) (if (<=.f64 y 19304882876218296676335986216575230512404056433943543596526093569721253232640) (*.f64 x (-.f64 1 z)) (*.f64 z (*.f64 y x))))
(if (<=.f64 z -75237626056509472/79228162514264337593543950336) (*.f64 z (neg.f64 x)) (if (<=.f64 z 7524064120550501/1606938044258990275541962092341162602522202993782792835301376) x (if (<=.f64 z 135000000000000003118224745930453471782601869025020752083251341555665584050206349190433987411671252992) (*.f64 (*.f64 y x) z) (if (<=.f64 z 25499999999999999528024993055952010542249007939197233513958453954737868247668078447050309476321791611551296703204050146631997321389936393151246862110425088) (*.f64 z (neg.f64 x)) (if (<=.f64 z 749999999999999972618195342729545985016632000743469009626014457803827542375735938982059071644900192864667118894540542726769083605834977908715053634928195608552191149123862320390296944505783752754974549874536872321994879903915477929790320009391510650880) (*.f64 (*.f64 y x) z) (*.f64 z (neg.f64 x)))))))
(if (<=.f64 z -2351175814265921/2475880078570760549798248448) (*.f64 z (neg.f64 x)) (if (<=.f64 z 7524064120550501/1606938044258990275541962092341162602522202993782792835301376) x (if (<=.f64 z 135000000000000003118224745930453471782601869025020752083251341555665584050206349190433987411671252992) (*.f64 z (*.f64 y x)) (if (<=.f64 z 25499999999999999528024993055952010542249007939197233513958453954737868247668078447050309476321791611551296703204050146631997321389936393151246862110425088) (*.f64 z (neg.f64 x)) (if (<=.f64 z 749999999999999972618195342729545985016632000743469009626014457803827542375735938982059071644900192864667118894540542726769083605834977908715053634928195608552191149123862320390296944505783752754974549874536872321994879903915477929790320009391510650880) (*.f64 z (*.f64 y x)) (*.f64 z (neg.f64 x)))))))
(if (<=.f64 z -75237626056509472/79228162514264337593543950336) (*.f64 z (neg.f64 x)) (if (<=.f64 z 8235688636108877/9444732965739290427392) x (*.f64 z (neg.f64 x))))
(if (<=.f64 z -2351175814265921/2475880078570760549798248448) (*.f64 z (neg.f64 x)) (if (<=.f64 z 8235688636108877/9444732965739290427392) x (*.f64 z (neg.f64 x))))
x
Compiler

Compiled 316 to 174 computations (44.9% saved)

soundness418.0ms (5.6%)

Algorithm
egg-herbie
Rules
710×fma-def_binary64
710×fma-def_binary64
710×fma-def_binary64
419×fma-neg_binary64
419×fma-neg_binary64
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
0913
12013
24911
316111
449311
5114911
6189511
7259811
8270811
9270811
0913
12013
24911
316111
449311
5114911
6189511
7259811
8270811
9270811
0913
12013
24911
316111
449311
5114911
6189511
7259811
8270811
9270811
Stop Event
saturated
saturated
saturated
Compiler

Compiled 579 to 390 computations (32.6% saved)

end103.0ms (1.4%)

Compiler

Compiled 289 to 132 computations (54.3% saved)

Profiling

Loading profile data...