Details

Time bar (total: 5.9s)

analyze182.0ms (3.1%)

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
28.1%71.8%0.1%9
32.8%56.2%11.1%10
38.2%49.9%11.8%11
46.4%41.7%11.8%12
Compiler

Compiled 11 to 7 computations (36.4% saved)

sample1.1s (19.3%)

Results
985.0ms8256×body256valid
145.0ms1464×body256invalid

preprocess15.0ms (0.3%)

Algorithm
egg-herbie
Rules
16×fma-def_binary64
*-commutative_binary64
+-commutative_binary64
associate-*r*_binary64
associate-*l*_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01640
13432
25032
35432
033
Stop Event
saturated
saturated
Calls
Call 1
Inputs
0
1
2
Outputs
0
1
2
Call 2
Inputs
(+.f64 x (*.f64 (*.f64 y z) z))
(+.f64 y (*.f64 (*.f64 x z) z))
(+.f64 z (*.f64 (*.f64 y x) x))
(+.f64 x (*.f64 (*.f64 z y) y))
Outputs
(+.f64 x (*.f64 (*.f64 y z) z))
(+.f64 x (*.f64 y (*.f64 z z)))
(fma.f64 y (*.f64 z z) x)
(+.f64 y (*.f64 (*.f64 x z) z))
(+.f64 y (*.f64 x (*.f64 z z)))
(fma.f64 x (*.f64 z z) y)
(+.f64 z (*.f64 (*.f64 y x) x))
(+.f64 z (*.f64 y (*.f64 x x)))
(fma.f64 x (*.f64 x y) z)
(+.f64 x (*.f64 (*.f64 z y) y))
(+.f64 x (*.f64 z (*.f64 y y)))
(fma.f64 y (*.f64 y z) x)
Compiler

Compiled 13 to 9 computations (30.8% saved)

simplify8.0ms (0.1%)

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

Useful iterations: 1 (0.0ms)

IterNodesCost
0710
1128
2168
3178
Stop Event
saturated
Counts
1 → 2
Calls
Call 1
Inputs
(+.f64 x (*.f64 (*.f64 y z) z))
Outputs
(+.f64 x (*.f64 (*.f64 y z) z))
(+.f64 x (*.f64 y (*.f64 z z)))
(fma.f64 y (*.f64 z z) x)

eval1.0ms (0%)

Compiler

Compiled 16 to 8 computations (50% saved)

prune1.0ms (0%)

Pruning

3 alts after pruning (3 fresh and 0 done)

PrunedKeptTotal
New022
Fresh011
Picked000
Done000
Total033
Error
0.0b
Counts
3 → 2
Alt Table
Click to see full alt table
StatusErrorProgram
0.1b
(+.f64 x (*.f64 (*.f64 y z) z))
4.1b
(fma.f64 y (*.f64 z z) x)
Compiler

Compiled 19 to 11 computations (42.1% saved)

localize7.0ms (0.1%)

Local error

Found 1 expressions with local error:

NewErrorProgram
0.1b
(*.f64 (*.f64 y z) z)
Compiler

Compiled 21 to 6 computations (71.4% saved)

series4.0ms (0.1%)

Counts
1 → 24
Calls

6 calls:

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

rewrite43.0ms (0.7%)

Algorithm
batch-egg-rewrite
Rules
471×pow1_binary64
447×add-sqr-sqrt_binary64
442×*-un-lft-identity_binary64
431×add-log-exp_binary64
431×log1p-expm1-u_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

simplify176.0ms (3%)

Algorithm
egg-herbie
Rules
1082×sqr-pow_binary64
617×cube-prod_binary64
554×fabs-mul_binary64
523×pow-sqr_binary64
441×associate-*l*_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
06168
112168
223168
344168
4105168
5331168
61250168
72123168
82287168
92471168
102679168
112976168
123371168
133852168
144418168
155102168
165935168
176327168
186619168
196895168
206969168
217003168
227944168
Stop Event
node limit
Counts
35 → 13
Calls
Call 1
Inputs
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
Outputs
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 y z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 y z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 y z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 y z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 y z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 y z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 y z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 y z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 y z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 y z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 y z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 y z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 y z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 y z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 y z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 y z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 y z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 y z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 y z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 y z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 y z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 y z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 y z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 y z))

localize7.0ms (0.1%)

Local error

Found 1 expressions with local error:

NewErrorProgram
3.9b
(fma.f64 y (*.f64 z z) x)
Compiler

Compiled 15 to 5 computations (66.7% saved)

series3.0ms (0.1%)

Counts
1 → 36
Calls

9 calls:

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

rewrite54.0ms (0.9%)

Algorithm
batch-egg-rewrite
Rules
542×pow1_binary64
516×add-sqr-sqrt_binary64
496×add-log-exp_binary64
496×log1p-expm1-u_binary64
496×expm1-log1p-u_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

simplify166.0ms (2.8%)

Algorithm
egg-herbie
Rules
1082×sqr-pow_binary64
560×cube-prod_binary64
558×fabs-mul_binary64
523×pow-sqr_binary64
444×associate-*l*_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
08255
116255
228255
352255
4117255
5352255
61272255
72171255
82335255
92519255
102727255
113024255
123415255
133896255
144462255
155154255
165987255
176383255
186675255
196955255
207027255
217061255
Stop Event
node limit
Counts
57 → 26
Calls
Call 1
Inputs
x
(+.f64 (*.f64 y (pow.f64 z 2)) x)
(+.f64 (*.f64 y (pow.f64 z 2)) x)
(+.f64 (*.f64 y (pow.f64 z 2)) x)
(*.f64 y (pow.f64 z 2))
(+.f64 (*.f64 y (pow.f64 z 2)) x)
(+.f64 (*.f64 y (pow.f64 z 2)) x)
(+.f64 (*.f64 y (pow.f64 z 2)) x)
(*.f64 y (pow.f64 z 2))
(+.f64 (*.f64 y (pow.f64 z 2)) x)
(+.f64 (*.f64 y (pow.f64 z 2)) x)
(+.f64 (*.f64 y (pow.f64 z 2)) x)
x
(+.f64 (*.f64 y (pow.f64 z 2)) x)
(+.f64 (*.f64 y (pow.f64 z 2)) x)
(+.f64 (*.f64 y (pow.f64 z 2)) x)
(*.f64 y (pow.f64 z 2))
(+.f64 (*.f64 y (pow.f64 z 2)) x)
(+.f64 (*.f64 y (pow.f64 z 2)) x)
(+.f64 (*.f64 y (pow.f64 z 2)) x)
(*.f64 y (pow.f64 z 2))
(+.f64 (*.f64 y (pow.f64 z 2)) x)
(+.f64 (*.f64 y (pow.f64 z 2)) x)
(+.f64 (*.f64 y (pow.f64 z 2)) x)
(*.f64 y (pow.f64 z 2))
(+.f64 (*.f64 y (pow.f64 z 2)) x)
(+.f64 (*.f64 y (pow.f64 z 2)) x)
(+.f64 (*.f64 y (pow.f64 z 2)) x)
x
(+.f64 (*.f64 y (pow.f64 z 2)) x)
(+.f64 (*.f64 y (pow.f64 z 2)) x)
(+.f64 (*.f64 y (pow.f64 z 2)) x)
x
(+.f64 (*.f64 y (pow.f64 z 2)) x)
(+.f64 (*.f64 y (pow.f64 z 2)) x)
(+.f64 (*.f64 y (pow.f64 z 2)) x)
Outputs
x
(+.f64 (*.f64 y (pow.f64 z 2)) x)
(fma.f64 y (*.f64 z z) x)
(+.f64 (*.f64 y (pow.f64 z 2)) x)
(fma.f64 y (*.f64 z z) x)
(+.f64 (*.f64 y (pow.f64 z 2)) x)
(fma.f64 y (*.f64 z z) x)
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(+.f64 (*.f64 y (pow.f64 z 2)) x)
(fma.f64 y (*.f64 z z) x)
(+.f64 (*.f64 y (pow.f64 z 2)) x)
(fma.f64 y (*.f64 z z) x)
(+.f64 (*.f64 y (pow.f64 z 2)) x)
(fma.f64 y (*.f64 z z) x)
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(+.f64 (*.f64 y (pow.f64 z 2)) x)
(fma.f64 y (*.f64 z z) x)
(+.f64 (*.f64 y (pow.f64 z 2)) x)
(fma.f64 y (*.f64 z z) x)
(+.f64 (*.f64 y (pow.f64 z 2)) x)
(fma.f64 y (*.f64 z z) x)
x
(+.f64 (*.f64 y (pow.f64 z 2)) x)
(fma.f64 y (*.f64 z z) x)
(+.f64 (*.f64 y (pow.f64 z 2)) x)
(fma.f64 y (*.f64 z z) x)
(+.f64 (*.f64 y (pow.f64 z 2)) x)
(fma.f64 y (*.f64 z z) x)
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(+.f64 (*.f64 y (pow.f64 z 2)) x)
(fma.f64 y (*.f64 z z) x)
(+.f64 (*.f64 y (pow.f64 z 2)) x)
(fma.f64 y (*.f64 z z) x)
(+.f64 (*.f64 y (pow.f64 z 2)) x)
(fma.f64 y (*.f64 z z) x)
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(+.f64 (*.f64 y (pow.f64 z 2)) x)
(fma.f64 y (*.f64 z z) x)
(+.f64 (*.f64 y (pow.f64 z 2)) x)
(fma.f64 y (*.f64 z z) x)
(+.f64 (*.f64 y (pow.f64 z 2)) x)
(fma.f64 y (*.f64 z z) x)
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(+.f64 (*.f64 y (pow.f64 z 2)) x)
(fma.f64 y (*.f64 z z) x)
(+.f64 (*.f64 y (pow.f64 z 2)) x)
(fma.f64 y (*.f64 z z) x)
(+.f64 (*.f64 y (pow.f64 z 2)) x)
(fma.f64 y (*.f64 z z) x)
x
(+.f64 (*.f64 y (pow.f64 z 2)) x)
(fma.f64 y (*.f64 z z) x)
(+.f64 (*.f64 y (pow.f64 z 2)) x)
(fma.f64 y (*.f64 z z) x)
(+.f64 (*.f64 y (pow.f64 z 2)) x)
(fma.f64 y (*.f64 z z) x)
x
(+.f64 (*.f64 y (pow.f64 z 2)) x)
(fma.f64 y (*.f64 z z) x)
(+.f64 (*.f64 y (pow.f64 z 2)) x)
(fma.f64 y (*.f64 z z) x)
(+.f64 (*.f64 y (pow.f64 z 2)) x)
(fma.f64 y (*.f64 z z) x)

eval7.0ms (0.1%)

Compiler

Compiled 388 to 123 computations (68.3% saved)

prune7.0ms (0.1%)

Pruning

5 alts after pruning (3 fresh and 2 done)

PrunedKeptTotal
New36339
Fresh000
Picked011
Done011
Total36541
Error
0.0b
Counts
41 → 5
Alt Table
Click to see full alt table
StatusErrorProgram
0.1b
(+.f64 x (*.f64 (*.f64 y z) z))
4.1b
(fma.f64 y (*.f64 z z) x)
46.7b
(*.f64 y (*.f64 z z))
19.4b
x
17.8b
(+.f64 x (cbrt.f64 (pow.f64 (*.f64 y (*.f64 z z)) 3)))
Compiler

Compiled 44 to 28 computations (36.4% saved)

localize5.0ms (0.1%)

Local error

Found 1 expressions with local error:

NewErrorProgram
7.6b
(*.f64 y (*.f64 z z))
Compiler

Compiled 13 to 5 computations (61.5% saved)

series2.0ms (0%)

Counts
1 → 24
Calls

6 calls:

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

rewrite44.0ms (0.7%)

Algorithm
batch-egg-rewrite
Rules
458×pow1_binary64
435×add-sqr-sqrt_binary64
429×*-un-lft-identity_binary64
421×add-log-exp_binary64
421×log1p-expm1-u_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

simplify177.0ms (3%)

Algorithm
egg-herbie
Rules
1082×sqr-pow_binary64
617×cube-prod_binary64
554×fabs-mul_binary64
523×pow-sqr_binary64
441×associate-*l*_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
06168
112168
223168
344168
4105168
5331168
61250168
72123168
82287168
92471168
102679168
112976168
123371168
133852168
144418168
155102168
165935168
176327168
186619168
196895168
206969168
217003168
227944168
Stop Event
node limit
Counts
35 → 13
Calls
Call 1
Inputs
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
Outputs
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 y z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 y z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 y z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 y z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 y z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 y z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 y z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 y z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 y z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 y z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 y z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 y z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 y z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 y z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 y z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 y z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 y z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 y z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 y z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 y z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 y z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 y z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 y z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 y z))

localize27.0ms (0.4%)

Local error

Found 3 expressions with local error:

NewErrorProgram
0.1b
(pow.f64 (*.f64 y (*.f64 z z)) 3)
7.6b
(*.f64 y (*.f64 z z))
27.9b
(cbrt.f64 (pow.f64 (*.f64 y (*.f64 z z)) 3))
Compiler

Compiled 40 to 15 computations (62.5% saved)

series10.0ms (0.2%)

Counts
2 → 48
Calls

12 calls:

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

rewrite58.0ms (1%)

Algorithm
batch-egg-rewrite
Rules
637×pow1_binary64
597×add-log-exp_binary64
597×log1p-expm1-u_binary64
597×expm1-log1p-u_binary64
578×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

simplify205.0ms (3.5%)

Algorithm
egg-herbie
Rules
711×unswap-sqr_binary64
480×associate-*l*_binary64
450×fma-def_binary64
441×sqr-pow_binary64
373×associate-*r*_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
016436
141436
2117436
3384436
41901436
53555436
64172436
74969436
86312436
97299436
Stop Event
node limit
Counts
108 → 63
Calls
Call 1
Inputs
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 -1 (*.f64 y (*.f64 (cbrt.f64 -1) (pow.f64 z 2))))
(*.f64 -1 (*.f64 y (*.f64 (cbrt.f64 -1) (pow.f64 z 2))))
(*.f64 -1 (*.f64 y (*.f64 (cbrt.f64 -1) (pow.f64 z 2))))
(*.f64 -1 (*.f64 y (*.f64 (cbrt.f64 -1) (pow.f64 z 2))))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 (pow.f64 y 3) (pow.f64 z 6))
(*.f64 (pow.f64 y 3) (pow.f64 z 6))
(*.f64 (pow.f64 y 3) (pow.f64 z 6))
(*.f64 (pow.f64 y 3) (pow.f64 z 6))
(*.f64 (pow.f64 y 3) (pow.f64 z 6))
(*.f64 (pow.f64 y 3) (pow.f64 z 6))
(*.f64 (pow.f64 y 3) (pow.f64 z 6))
(*.f64 (pow.f64 y 3) (pow.f64 z 6))
(*.f64 (pow.f64 y 3) (pow.f64 z 6))
(*.f64 (pow.f64 y 3) (pow.f64 z 6))
(*.f64 (pow.f64 y 3) (pow.f64 z 6))
(*.f64 (pow.f64 y 3) (pow.f64 z 6))
(*.f64 (pow.f64 y 3) (pow.f64 z 6))
(*.f64 (pow.f64 y 3) (pow.f64 z 6))
(*.f64 (pow.f64 y 3) (pow.f64 z 6))
(*.f64 (pow.f64 y 3) (pow.f64 z 6))
(*.f64 (pow.f64 y 3) (pow.f64 z 6))
(*.f64 (pow.f64 y 3) (pow.f64 z 6))
(*.f64 (pow.f64 y 3) (pow.f64 z 6))
(*.f64 (pow.f64 y 3) (pow.f64 z 6))
(*.f64 (pow.f64 y 3) (pow.f64 z 6))
(*.f64 (pow.f64 y 3) (pow.f64 z 6))
(*.f64 (pow.f64 y 3) (pow.f64 z 6))
(*.f64 (pow.f64 y 3) (pow.f64 z 6))
Outputs
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 -1 (*.f64 y (*.f64 (cbrt.f64 -1) (pow.f64 z 2))))
(neg.f64 (*.f64 y (*.f64 (*.f64 z z) (cbrt.f64 -1))))
(*.f64 y (neg.f64 (*.f64 (*.f64 z z) (cbrt.f64 -1))))
(*.f64 y (*.f64 (*.f64 z z) (neg.f64 (cbrt.f64 -1))))
(*.f64 y (*.f64 (cbrt.f64 -1) (*.f64 z (neg.f64 z))))
(*.f64 y (*.f64 z (*.f64 (cbrt.f64 -1) (neg.f64 z))))
(*.f64 -1 (*.f64 y (*.f64 (cbrt.f64 -1) (pow.f64 z 2))))
(neg.f64 (*.f64 y (*.f64 (*.f64 z z) (cbrt.f64 -1))))
(*.f64 y (neg.f64 (*.f64 (*.f64 z z) (cbrt.f64 -1))))
(*.f64 y (*.f64 (*.f64 z z) (neg.f64 (cbrt.f64 -1))))
(*.f64 y (*.f64 (cbrt.f64 -1) (*.f64 z (neg.f64 z))))
(*.f64 y (*.f64 z (*.f64 (cbrt.f64 -1) (neg.f64 z))))
(*.f64 -1 (*.f64 y (*.f64 (cbrt.f64 -1) (pow.f64 z 2))))
(neg.f64 (*.f64 y (*.f64 (*.f64 z z) (cbrt.f64 -1))))
(*.f64 y (neg.f64 (*.f64 (*.f64 z z) (cbrt.f64 -1))))
(*.f64 y (*.f64 (*.f64 z z) (neg.f64 (cbrt.f64 -1))))
(*.f64 y (*.f64 (cbrt.f64 -1) (*.f64 z (neg.f64 z))))
(*.f64 y (*.f64 z (*.f64 (cbrt.f64 -1) (neg.f64 z))))
(*.f64 -1 (*.f64 y (*.f64 (cbrt.f64 -1) (pow.f64 z 2))))
(neg.f64 (*.f64 y (*.f64 (*.f64 z z) (cbrt.f64 -1))))
(*.f64 y (neg.f64 (*.f64 (*.f64 z z) (cbrt.f64 -1))))
(*.f64 y (*.f64 (*.f64 z z) (neg.f64 (cbrt.f64 -1))))
(*.f64 y (*.f64 (cbrt.f64 -1) (*.f64 z (neg.f64 z))))
(*.f64 y (*.f64 z (*.f64 (cbrt.f64 -1) (neg.f64 z))))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 (pow.f64 y 3) (pow.f64 z 6))
(*.f64 (pow.f64 y 3) (pow.f64 z 6))
(*.f64 (pow.f64 y 3) (pow.f64 z 6))
(*.f64 (pow.f64 y 3) (pow.f64 z 6))
(*.f64 (pow.f64 y 3) (pow.f64 z 6))
(*.f64 (pow.f64 y 3) (pow.f64 z 6))
(*.f64 (pow.f64 y 3) (pow.f64 z 6))
(*.f64 (pow.f64 y 3) (pow.f64 z 6))
(*.f64 (pow.f64 y 3) (pow.f64 z 6))
(*.f64 (pow.f64 y 3) (pow.f64 z 6))
(*.f64 (pow.f64 y 3) (pow.f64 z 6))
(*.f64 (pow.f64 y 3) (pow.f64 z 6))
(*.f64 (pow.f64 y 3) (pow.f64 z 6))
(*.f64 (pow.f64 y 3) (pow.f64 z 6))
(*.f64 (pow.f64 y 3) (pow.f64 z 6))
(*.f64 (pow.f64 y 3) (pow.f64 z 6))
(*.f64 (pow.f64 y 3) (pow.f64 z 6))
(*.f64 (pow.f64 y 3) (pow.f64 z 6))
(*.f64 (pow.f64 y 3) (pow.f64 z 6))
(*.f64 (pow.f64 y 3) (pow.f64 z 6))
(*.f64 (pow.f64 y 3) (pow.f64 z 6))
(*.f64 (pow.f64 y 3) (pow.f64 z 6))
(*.f64 (pow.f64 y 3) (pow.f64 z 6))
(*.f64 (pow.f64 y 3) (pow.f64 z 6))

eval45.0ms (0.8%)

Compiler

Compiled 1078 to 481 computations (55.4% saved)

prune19.0ms (0.3%)

Pruning

9 alts after pruning (6 fresh and 3 done)

PrunedKeptTotal
New84589
Fresh011
Picked101
Done033
Total85994
Error
0b
Counts
94 → 9
Alt Table
Click to see full alt table
StatusErrorProgram
0.1b
(+.f64 x (*.f64 (*.f64 y z) z))
61.5b
(sqrt.f64 (*.f64 (*.f64 y y) (pow.f64 z 4)))
28.3b
(+.f64 x (*.f64 (*.f64 (*.f64 y z) (sqrt.f64 z)) (sqrt.f64 z)))
43.5b
(*.f64 z (*.f64 y z))
4.1b
(fma.f64 y (*.f64 z z) x)
46.7b
(*.f64 y (*.f64 z z))
12.3b
(+.f64 x (*.f64 (cbrt.f64 (pow.f64 z 4)) (*.f64 (pow.f64 (cbrt.f64 z) 2) y)))
0.4b
(+.f64 x (*.f64 (*.f64 (*.f64 y z) (pow.f64 (cbrt.f64 z) 2)) (cbrt.f64 z)))
19.4b
x
Compiler

Compiled 161 to 105 computations (34.8% saved)

localize38.0ms (0.6%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.2b
(*.f64 (*.f64 (*.f64 y z) (pow.f64 (cbrt.f64 z) 2)) (cbrt.f64 z))
0.2b
(*.f64 (*.f64 y z) (pow.f64 (cbrt.f64 z) 2))
0.5b
(pow.f64 (cbrt.f64 z) 2)
0.6b
(cbrt.f64 z)
Compiler

Compiled 48 to 20 computations (58.3% saved)

series19.0ms (0.3%)

Counts
4 → 36
Calls

18 calls:

TimeVariablePointExpression
4.0ms
y
@0
(*.f64 (*.f64 y z) (pow.f64 (cbrt.f64 z) 2))
3.0ms
z
@-inf
(*.f64 (*.f64 (*.f64 y z) (pow.f64 (cbrt.f64 z) 2)) (cbrt.f64 z))
2.0ms
y
@0
(*.f64 (*.f64 (*.f64 y z) (pow.f64 (cbrt.f64 z) 2)) (cbrt.f64 z))
2.0ms
z
@0
(*.f64 (*.f64 (*.f64 y z) (pow.f64 (cbrt.f64 z) 2)) (cbrt.f64 z))
1.0ms
z
@-inf
(pow.f64 (cbrt.f64 z) 2)

rewrite75.0ms (1.3%)

Algorithm
batch-egg-rewrite
Rules
791×pow1_binary64
729×add-log-exp_binary64
729×log1p-expm1-u_binary64
729×expm1-log1p-u_binary64
711×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

simplify150.0ms (2.5%)

Algorithm
egg-herbie
Rules
1156×sqr-pow_binary64
699×cube-prod_binary64
680×fabs-mul_binary64
601×pow-sqr_binary64
368×unpow3_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
013276
132276
260276
3114276
4259276
5825276
61411276
71596276
81838276
92139276
102553276
113163276
123886276
134781276
145285276
155791276
166225276
176576276
186768276
Stop Event
node limit
Counts
98 → 66
Calls
Call 1
Inputs
(*.f64 (pow.f64 (*.f64 1 (pow.f64 z 5)) 1/3) y)
(*.f64 (pow.f64 (*.f64 1 (pow.f64 z 5)) 1/3) y)
(*.f64 (pow.f64 (*.f64 1 (pow.f64 z 5)) 1/3) y)
(*.f64 (pow.f64 (*.f64 1 (pow.f64 z 5)) 1/3) y)
(*.f64 (pow.f64 (*.f64 1 (pow.f64 z 5)) 1/3) y)
(*.f64 (pow.f64 (*.f64 1 (pow.f64 z 5)) 1/3) y)
(*.f64 (pow.f64 (*.f64 1 (pow.f64 z 5)) 1/3) y)
(*.f64 (pow.f64 (*.f64 1 (pow.f64 z 5)) 1/3) y)
(*.f64 (pow.f64 (*.f64 1 (pow.f64 z 5)) 1/3) y)
(*.f64 (pow.f64 (*.f64 1 (pow.f64 z 5)) 1/3) y)
(*.f64 (pow.f64 (*.f64 1 (pow.f64 z 5)) 1/3) y)
(*.f64 (pow.f64 (*.f64 1 (pow.f64 z 5)) 1/3) y)
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
Outputs
(*.f64 (pow.f64 (*.f64 1 (pow.f64 z 5)) 1/3) y)
(*.f64 (cbrt.f64 (pow.f64 z 5)) y)
(*.f64 (pow.f64 (*.f64 1 (pow.f64 z 5)) 1/3) y)
(*.f64 (cbrt.f64 (pow.f64 z 5)) y)
(*.f64 (pow.f64 (*.f64 1 (pow.f64 z 5)) 1/3) y)
(*.f64 (cbrt.f64 (pow.f64 z 5)) y)
(*.f64 (pow.f64 (*.f64 1 (pow.f64 z 5)) 1/3) y)
(*.f64 (cbrt.f64 (pow.f64 z 5)) y)
(*.f64 (pow.f64 (*.f64 1 (pow.f64 z 5)) 1/3) y)
(*.f64 (cbrt.f64 (pow.f64 z 5)) y)
(*.f64 (pow.f64 (*.f64 1 (pow.f64 z 5)) 1/3) y)
(*.f64 (cbrt.f64 (pow.f64 z 5)) y)
(*.f64 (pow.f64 (*.f64 1 (pow.f64 z 5)) 1/3) y)
(*.f64 (cbrt.f64 (pow.f64 z 5)) y)
(*.f64 (pow.f64 (*.f64 1 (pow.f64 z 5)) 1/3) y)
(*.f64 (cbrt.f64 (pow.f64 z 5)) y)
(*.f64 (pow.f64 (*.f64 1 (pow.f64 z 5)) 1/3) y)
(*.f64 (cbrt.f64 (pow.f64 z 5)) y)
(*.f64 (pow.f64 (*.f64 1 (pow.f64 z 5)) 1/3) y)
(*.f64 (cbrt.f64 (pow.f64 z 5)) y)
(*.f64 (pow.f64 (*.f64 1 (pow.f64 z 5)) 1/3) y)
(*.f64 (cbrt.f64 (pow.f64 z 5)) y)
(*.f64 (pow.f64 (*.f64 1 (pow.f64 z 5)) 1/3) y)
(*.f64 (cbrt.f64 (pow.f64 z 5)) y)
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 (*.f64 y z) z)
(*.f64 z (*.f64 z y))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 (*.f64 y z) z)
(*.f64 z (*.f64 z y))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 (*.f64 y z) z)
(*.f64 z (*.f64 z y))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 (*.f64 y z) z)
(*.f64 z (*.f64 z y))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 (*.f64 y z) z)
(*.f64 z (*.f64 z y))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 (*.f64 y z) z)
(*.f64 z (*.f64 z y))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 (*.f64 y z) z)
(*.f64 z (*.f64 z y))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 (*.f64 y z) z)
(*.f64 z (*.f64 z y))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 (*.f64 y z) z)
(*.f64 z (*.f64 z y))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 (*.f64 y z) z)
(*.f64 z (*.f64 z y))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 (*.f64 y z) z)
(*.f64 z (*.f64 z y))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 (*.f64 y z) z)
(*.f64 z (*.f64 z y))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 (*.f64 y z) z)
(*.f64 z (*.f64 z y))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 (*.f64 y z) z)
(*.f64 z (*.f64 z y))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 (*.f64 y z) z)
(*.f64 z (*.f64 z y))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 (*.f64 y z) z)
(*.f64 z (*.f64 z y))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 (*.f64 y z) z)
(*.f64 z (*.f64 z y))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 (*.f64 y z) z)
(*.f64 z (*.f64 z y))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 (*.f64 y z) z)
(*.f64 z (*.f64 z y))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 (*.f64 y z) z)
(*.f64 z (*.f64 z y))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 (*.f64 y z) z)
(*.f64 z (*.f64 z y))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 (*.f64 y z) z)
(*.f64 z (*.f64 z y))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 (*.f64 y z) z)
(*.f64 z (*.f64 z y))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 (*.f64 y z) z)
(*.f64 z (*.f64 z y))

localize5.0ms (0.1%)

Local error

Found 1 expressions with local error:

NewErrorProgram
0.1b
(*.f64 z (*.f64 y z))
Compiler

Compiled 13 to 5 computations (61.5% saved)

series2.0ms (0%)

Counts
1 → 24
Calls

6 calls:

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

rewrite80.0ms (1.3%)

Algorithm
batch-egg-rewrite
Rules
468×pow1_binary64
444×add-sqr-sqrt_binary64
439×*-un-lft-identity_binary64
428×add-log-exp_binary64
428×log1p-expm1-u_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

simplify211.0ms (3.6%)

Algorithm
egg-herbie
Rules
1082×sqr-pow_binary64
617×cube-prod_binary64
554×fabs-mul_binary64
523×pow-sqr_binary64
441×associate-*l*_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
06168
112168
223168
344168
4105168
5331168
61250168
72123168
82287168
92471168
102679168
112976168
123371168
133852168
144418168
155102168
165935168
176327168
186619168
196895168
206969168
217003168
227944168
Stop Event
node limit
Counts
35 → 13
Calls
Call 1
Inputs
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
Outputs
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 y z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 y z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 y z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 y z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 y z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 y z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 y z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 y z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 y z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 y z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 y z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 y z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 y z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 y z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 y z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 y z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 y z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 y z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 y z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 y z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 y z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 y z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 y z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 y z))

localize26.0ms (0.4%)

Local error

Found 2 expressions with local error:

NewErrorProgram
15.5b
(*.f64 (*.f64 y y) (pow.f64 z 4))
19.3b
(sqrt.f64 (*.f64 (*.f64 y y) (pow.f64 z 4)))
Compiler

Compiled 27 to 14 computations (48.1% saved)

series10.0ms (0.2%)

Counts
2 → 48
Calls

12 calls:

TimeVariablePointExpression
2.0ms
y
@0
(*.f64 (*.f64 y y) (pow.f64 z 4))
1.0ms
z
@0
(*.f64 (*.f64 y y) (pow.f64 z 4))
1.0ms
y
@inf
(*.f64 (*.f64 y y) (pow.f64 z 4))
1.0ms
z
@inf
(*.f64 (*.f64 y y) (pow.f64 z 4))
1.0ms
y
@0
(sqrt.f64 (*.f64 (*.f64 y y) (pow.f64 z 4)))

rewrite82.0ms (1.4%)

Algorithm
batch-egg-rewrite
Rules
682×pow1_binary64
631×add-log-exp_binary64
631×log1p-expm1-u_binary64
631×expm1-log1p-u_binary64
612×add-exp-log_binary64
Iterations

Useful iterations: 1 (0.0ms)

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

simplify113.0ms (1.9%)

Algorithm
egg-herbie
Rules
784×fma-def_binary64
607×unswap-sqr_binary64
331×neg-sub0_binary64
327×fma-neg_binary64
325×neg-mul-1_binary64
Iterations

Useful iterations: 5 (0.0ms)

IterNodesCost
012416
128416
269416
3230416
41246416
52762392
63307392
74061392
85426392
96233392
107300392
Stop Event
node limit
Counts
86 → 43
Calls
Call 1
Inputs
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 -1 (*.f64 y (pow.f64 z 2)))
(*.f64 -1 (*.f64 y (pow.f64 z 2)))
(*.f64 -1 (*.f64 y (pow.f64 z 2)))
(*.f64 -1 (*.f64 y (pow.f64 z 2)))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 (pow.f64 y 2) (pow.f64 z 4))
(*.f64 (pow.f64 y 2) (pow.f64 z 4))
(*.f64 (pow.f64 y 2) (pow.f64 z 4))
(*.f64 (pow.f64 y 2) (pow.f64 z 4))
(*.f64 (pow.f64 y 2) (pow.f64 z 4))
(*.f64 (pow.f64 y 2) (pow.f64 z 4))
(*.f64 (pow.f64 y 2) (pow.f64 z 4))
(*.f64 (pow.f64 y 2) (pow.f64 z 4))
(*.f64 (pow.f64 y 2) (pow.f64 z 4))
(*.f64 (pow.f64 y 2) (pow.f64 z 4))
(*.f64 (pow.f64 y 2) (pow.f64 z 4))
(*.f64 (pow.f64 y 2) (pow.f64 z 4))
(*.f64 (pow.f64 y 2) (pow.f64 z 4))
(*.f64 (pow.f64 y 2) (pow.f64 z 4))
(*.f64 (pow.f64 y 2) (pow.f64 z 4))
(*.f64 (pow.f64 y 2) (pow.f64 z 4))
(*.f64 (pow.f64 y 2) (pow.f64 z 4))
(*.f64 (pow.f64 y 2) (pow.f64 z 4))
(*.f64 (pow.f64 y 2) (pow.f64 z 4))
(*.f64 (pow.f64 y 2) (pow.f64 z 4))
(*.f64 (pow.f64 y 2) (pow.f64 z 4))
(*.f64 (pow.f64 y 2) (pow.f64 z 4))
(*.f64 (pow.f64 y 2) (pow.f64 z 4))
(*.f64 (pow.f64 y 2) (pow.f64 z 4))
Outputs
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 -1 (*.f64 y (pow.f64 z 2)))
(neg.f64 (*.f64 y (*.f64 z z)))
(*.f64 y (neg.f64 (*.f64 z z)))
(*.f64 y (*.f64 z (neg.f64 z)))
(*.f64 (*.f64 y z) (neg.f64 z))
(*.f64 z (*.f64 y (neg.f64 z)))
(*.f64 -1 (*.f64 y (pow.f64 z 2)))
(neg.f64 (*.f64 y (*.f64 z z)))
(*.f64 y (neg.f64 (*.f64 z z)))
(*.f64 y (*.f64 z (neg.f64 z)))
(*.f64 (*.f64 y z) (neg.f64 z))
(*.f64 z (*.f64 y (neg.f64 z)))
(*.f64 -1 (*.f64 y (pow.f64 z 2)))
(neg.f64 (*.f64 y (*.f64 z z)))
(*.f64 y (neg.f64 (*.f64 z z)))
(*.f64 y (*.f64 z (neg.f64 z)))
(*.f64 (*.f64 y z) (neg.f64 z))
(*.f64 z (*.f64 y (neg.f64 z)))
(*.f64 -1 (*.f64 y (pow.f64 z 2)))
(neg.f64 (*.f64 y (*.f64 z z)))
(*.f64 y (neg.f64 (*.f64 z z)))
(*.f64 y (*.f64 z (neg.f64 z)))
(*.f64 (*.f64 y z) (neg.f64 z))
(*.f64 z (*.f64 y (neg.f64 z)))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 (pow.f64 y 2) (pow.f64 z 4))
(*.f64 (*.f64 y y) (pow.f64 z 4))
(*.f64 y (*.f64 y (pow.f64 z 4)))
(pow.f64 (*.f64 z (sqrt.f64 y)) 4)
(*.f64 (pow.f64 y 2) (pow.f64 z 4))
(*.f64 (*.f64 y y) (pow.f64 z 4))
(*.f64 y (*.f64 y (pow.f64 z 4)))
(pow.f64 (*.f64 z (sqrt.f64 y)) 4)
(*.f64 (pow.f64 y 2) (pow.f64 z 4))
(*.f64 (*.f64 y y) (pow.f64 z 4))
(*.f64 y (*.f64 y (pow.f64 z 4)))
(pow.f64 (*.f64 z (sqrt.f64 y)) 4)
(*.f64 (pow.f64 y 2) (pow.f64 z 4))
(*.f64 (*.f64 y y) (pow.f64 z 4))
(*.f64 y (*.f64 y (pow.f64 z 4)))
(pow.f64 (*.f64 z (sqrt.f64 y)) 4)
(*.f64 (pow.f64 y 2) (pow.f64 z 4))
(*.f64 (*.f64 y y) (pow.f64 z 4))
(*.f64 y (*.f64 y (pow.f64 z 4)))
(pow.f64 (*.f64 z (sqrt.f64 y)) 4)
(*.f64 (pow.f64 y 2) (pow.f64 z 4))
(*.f64 (*.f64 y y) (pow.f64 z 4))
(*.f64 y (*.f64 y (pow.f64 z 4)))
(pow.f64 (*.f64 z (sqrt.f64 y)) 4)
(*.f64 (pow.f64 y 2) (pow.f64 z 4))
(*.f64 (*.f64 y y) (pow.f64 z 4))
(*.f64 y (*.f64 y (pow.f64 z 4)))
(pow.f64 (*.f64 z (sqrt.f64 y)) 4)
(*.f64 (pow.f64 y 2) (pow.f64 z 4))
(*.f64 (*.f64 y y) (pow.f64 z 4))
(*.f64 y (*.f64 y (pow.f64 z 4)))
(pow.f64 (*.f64 z (sqrt.f64 y)) 4)
(*.f64 (pow.f64 y 2) (pow.f64 z 4))
(*.f64 (*.f64 y y) (pow.f64 z 4))
(*.f64 y (*.f64 y (pow.f64 z 4)))
(pow.f64 (*.f64 z (sqrt.f64 y)) 4)
(*.f64 (pow.f64 y 2) (pow.f64 z 4))
(*.f64 (*.f64 y y) (pow.f64 z 4))
(*.f64 y (*.f64 y (pow.f64 z 4)))
(pow.f64 (*.f64 z (sqrt.f64 y)) 4)
(*.f64 (pow.f64 y 2) (pow.f64 z 4))
(*.f64 (*.f64 y y) (pow.f64 z 4))
(*.f64 y (*.f64 y (pow.f64 z 4)))
(pow.f64 (*.f64 z (sqrt.f64 y)) 4)
(*.f64 (pow.f64 y 2) (pow.f64 z 4))
(*.f64 (*.f64 y y) (pow.f64 z 4))
(*.f64 y (*.f64 y (pow.f64 z 4)))
(pow.f64 (*.f64 z (sqrt.f64 y)) 4)
(*.f64 (pow.f64 y 2) (pow.f64 z 4))
(*.f64 (*.f64 y y) (pow.f64 z 4))
(*.f64 y (*.f64 y (pow.f64 z 4)))
(pow.f64 (*.f64 z (sqrt.f64 y)) 4)
(*.f64 (pow.f64 y 2) (pow.f64 z 4))
(*.f64 (*.f64 y y) (pow.f64 z 4))
(*.f64 y (*.f64 y (pow.f64 z 4)))
(pow.f64 (*.f64 z (sqrt.f64 y)) 4)
(*.f64 (pow.f64 y 2) (pow.f64 z 4))
(*.f64 (*.f64 y y) (pow.f64 z 4))
(*.f64 y (*.f64 y (pow.f64 z 4)))
(pow.f64 (*.f64 z (sqrt.f64 y)) 4)
(*.f64 (pow.f64 y 2) (pow.f64 z 4))
(*.f64 (*.f64 y y) (pow.f64 z 4))
(*.f64 y (*.f64 y (pow.f64 z 4)))
(pow.f64 (*.f64 z (sqrt.f64 y)) 4)
(*.f64 (pow.f64 y 2) (pow.f64 z 4))
(*.f64 (*.f64 y y) (pow.f64 z 4))
(*.f64 y (*.f64 y (pow.f64 z 4)))
(pow.f64 (*.f64 z (sqrt.f64 y)) 4)
(*.f64 (pow.f64 y 2) (pow.f64 z 4))
(*.f64 (*.f64 y y) (pow.f64 z 4))
(*.f64 y (*.f64 y (pow.f64 z 4)))
(pow.f64 (*.f64 z (sqrt.f64 y)) 4)
(*.f64 (pow.f64 y 2) (pow.f64 z 4))
(*.f64 (*.f64 y y) (pow.f64 z 4))
(*.f64 y (*.f64 y (pow.f64 z 4)))
(pow.f64 (*.f64 z (sqrt.f64 y)) 4)
(*.f64 (pow.f64 y 2) (pow.f64 z 4))
(*.f64 (*.f64 y y) (pow.f64 z 4))
(*.f64 y (*.f64 y (pow.f64 z 4)))
(pow.f64 (*.f64 z (sqrt.f64 y)) 4)
(*.f64 (pow.f64 y 2) (pow.f64 z 4))
(*.f64 (*.f64 y y) (pow.f64 z 4))
(*.f64 y (*.f64 y (pow.f64 z 4)))
(pow.f64 (*.f64 z (sqrt.f64 y)) 4)
(*.f64 (pow.f64 y 2) (pow.f64 z 4))
(*.f64 (*.f64 y y) (pow.f64 z 4))
(*.f64 y (*.f64 y (pow.f64 z 4)))
(pow.f64 (*.f64 z (sqrt.f64 y)) 4)
(*.f64 (pow.f64 y 2) (pow.f64 z 4))
(*.f64 (*.f64 y y) (pow.f64 z 4))
(*.f64 y (*.f64 y (pow.f64 z 4)))
(pow.f64 (*.f64 z (sqrt.f64 y)) 4)
(*.f64 (pow.f64 y 2) (pow.f64 z 4))
(*.f64 (*.f64 y y) (pow.f64 z 4))
(*.f64 y (*.f64 y (pow.f64 z 4)))
(pow.f64 (*.f64 z (sqrt.f64 y)) 4)

localize202.0ms (3.4%)

Local error

Found 2 expressions with local error:

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

Compiled 37 to 8 computations (78.4% saved)

series11.0ms (0.2%)

Counts
2 → 36
Calls

12 calls:

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

rewrite189.0ms (3.2%)

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

Useful iterations: 1 (0.0ms)

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

simplify92.0ms (1.5%)

Algorithm
egg-herbie
Rules
760×fma-def_binary64
525×unswap-sqr_binary64
326×distribute-rgt-neg-in_binary64
321×neg-sub0_binary64
308×neg-mul-1_binary64
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
015276
139276
2101252
3290252
41305252
53138252
65725252
77093252
87869252
Stop Event
node limit
Counts
58 → 27
Calls
Call 1
Inputs
(*.f64 y (sqrt.f64 (pow.f64 z 3)))
(*.f64 y (sqrt.f64 (pow.f64 z 3)))
(*.f64 y (sqrt.f64 (pow.f64 z 3)))
(*.f64 y (sqrt.f64 (pow.f64 z 3)))
(*.f64 y (sqrt.f64 (pow.f64 z 3)))
(*.f64 y (sqrt.f64 (pow.f64 z 3)))
(*.f64 y (sqrt.f64 (pow.f64 z 3)))
(*.f64 y (sqrt.f64 (pow.f64 z 3)))
(*.f64 y (sqrt.f64 (pow.f64 z 3)))
(*.f64 y (sqrt.f64 (pow.f64 z 3)))
(*.f64 y (sqrt.f64 (pow.f64 z 3)))
(*.f64 y (sqrt.f64 (pow.f64 z 3)))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (*.f64 y (pow.f64 z 2))))
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (*.f64 y (pow.f64 z 2))))
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (*.f64 y (pow.f64 z 2))))
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (*.f64 y (pow.f64 z 2))))
Outputs
(*.f64 y (sqrt.f64 (pow.f64 z 3)))
(*.f64 y (pow.f64 z 3/2))
(*.f64 y (sqrt.f64 (pow.f64 z 3)))
(*.f64 y (pow.f64 z 3/2))
(*.f64 y (sqrt.f64 (pow.f64 z 3)))
(*.f64 y (pow.f64 z 3/2))
(*.f64 y (sqrt.f64 (pow.f64 z 3)))
(*.f64 y (pow.f64 z 3/2))
(*.f64 y (sqrt.f64 (pow.f64 z 3)))
(*.f64 y (pow.f64 z 3/2))
(*.f64 y (sqrt.f64 (pow.f64 z 3)))
(*.f64 y (pow.f64 z 3/2))
(*.f64 y (sqrt.f64 (pow.f64 z 3)))
(*.f64 y (pow.f64 z 3/2))
(*.f64 y (sqrt.f64 (pow.f64 z 3)))
(*.f64 y (pow.f64 z 3/2))
(*.f64 y (sqrt.f64 (pow.f64 z 3)))
(*.f64 y (pow.f64 z 3/2))
(*.f64 y (sqrt.f64 (pow.f64 z 3)))
(*.f64 y (pow.f64 z 3/2))
(*.f64 y (sqrt.f64 (pow.f64 z 3)))
(*.f64 y (pow.f64 z 3/2))
(*.f64 y (sqrt.f64 (pow.f64 z 3)))
(*.f64 y (pow.f64 z 3/2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 (*.f64 y z) z)
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 (*.f64 y z) z)
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 (*.f64 y z) z)
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 (*.f64 y z) z)
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 (*.f64 y z) z)
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 (*.f64 y z) z)
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 (*.f64 y z) z)
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 (*.f64 y z) z)
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 (*.f64 y z) z)
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 (*.f64 y z) z)
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 (*.f64 y z) z)
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 (*.f64 y z) z)
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 (*.f64 y z) z)
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 (*.f64 y z) z)
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 (*.f64 y z) z)
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 (*.f64 y z) z)
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 (*.f64 y z) z)
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 (*.f64 y z) z)
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 (*.f64 y z) z)
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 (*.f64 y z) z)
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (*.f64 y (pow.f64 z 2))))
(*.f64 y (*.f64 z z))
(*.f64 (*.f64 y z) z)
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (*.f64 y (pow.f64 z 2))))
(*.f64 y (*.f64 z z))
(*.f64 (*.f64 y z) z)
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (*.f64 y (pow.f64 z 2))))
(*.f64 y (*.f64 z z))
(*.f64 (*.f64 y z) z)
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (*.f64 y (pow.f64 z 2))))
(*.f64 y (*.f64 z z))
(*.f64 (*.f64 y z) z)

localize36.0ms (0.6%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.5b
(pow.f64 (cbrt.f64 z) 2)
0.6b
(cbrt.f64 z)
2.0b
(*.f64 (cbrt.f64 (pow.f64 z 4)) (*.f64 (pow.f64 (cbrt.f64 z) 2) y))
28.1b
(cbrt.f64 (pow.f64 z 4))
Compiler

Compiled 51 to 31 computations (39.2% saved)

series4.0ms (0.1%)

Counts
2 → 24
Calls

9 calls:

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

rewrite60.0ms (1%)

Algorithm
batch-egg-rewrite
Rules
846×pow1_binary64
782×add-log-exp_binary64
782×log1p-expm1-u_binary64
782×expm1-log1p-u_binary64
760×add-exp-log_binary64
Iterations

Useful iterations: 1 (0.0ms)

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

simplify174.0ms (2.9%)

Algorithm
egg-herbie
Rules
900×unswap-sqr_binary64
743×cube-prod_binary64
705×fabs-mul_binary64
700×sqr-pow_binary64
336×pow-sqr_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
011200
124200
258200
3186200
4863200
51428200
61494200
71594200
81714200
91836200
101983200
113443200
123672200
133970200
144304200
154715200
165333200
176101200
186598200
196980200
207410200
217812200
Stop Event
node limit
Counts
60 → 40
Calls
Call 1
Inputs
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 (pow.f64 (cbrt.f64 -1) 2) (pow.f64 z 2)))
(*.f64 y (*.f64 (pow.f64 (cbrt.f64 -1) 2) (pow.f64 z 2)))
(*.f64 y (*.f64 (pow.f64 (cbrt.f64 -1) 2) (pow.f64 z 2)))
(*.f64 y (*.f64 (pow.f64 (cbrt.f64 -1) 2) (pow.f64 z 2)))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
Outputs
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 y (*.f64 (pow.f64 (cbrt.f64 -1) 2) (pow.f64 z 2)))
(*.f64 (*.f64 y (pow.f64 (cbrt.f64 -1) 2)) (*.f64 z z))
(*.f64 y (*.f64 (*.f64 (pow.f64 (cbrt.f64 -1) 2) z) z))
(*.f64 y (*.f64 (*.f64 z z) (pow.f64 (cbrt.f64 -1) 2)))
(*.f64 y (*.f64 z (*.f64 z (pow.f64 (cbrt.f64 -1) 2))))
(*.f64 (*.f64 y (*.f64 z z)) (pow.f64 (cbrt.f64 -1) 2))
(*.f64 y (*.f64 (pow.f64 (cbrt.f64 -1) 2) (pow.f64 z 2)))
(*.f64 (*.f64 y (pow.f64 (cbrt.f64 -1) 2)) (*.f64 z z))
(*.f64 y (*.f64 (*.f64 (pow.f64 (cbrt.f64 -1) 2) z) z))
(*.f64 y (*.f64 (*.f64 z z) (pow.f64 (cbrt.f64 -1) 2)))
(*.f64 y (*.f64 z (*.f64 z (pow.f64 (cbrt.f64 -1) 2))))
(*.f64 (*.f64 y (*.f64 z z)) (pow.f64 (cbrt.f64 -1) 2))
(*.f64 y (*.f64 (pow.f64 (cbrt.f64 -1) 2) (pow.f64 z 2)))
(*.f64 (*.f64 y (pow.f64 (cbrt.f64 -1) 2)) (*.f64 z z))
(*.f64 y (*.f64 (*.f64 (pow.f64 (cbrt.f64 -1) 2) z) z))
(*.f64 y (*.f64 (*.f64 z z) (pow.f64 (cbrt.f64 -1) 2)))
(*.f64 y (*.f64 z (*.f64 z (pow.f64 (cbrt.f64 -1) 2))))
(*.f64 (*.f64 y (*.f64 z z)) (pow.f64 (cbrt.f64 -1) 2))
(*.f64 y (*.f64 (pow.f64 (cbrt.f64 -1) 2) (pow.f64 z 2)))
(*.f64 (*.f64 y (pow.f64 (cbrt.f64 -1) 2)) (*.f64 z z))
(*.f64 y (*.f64 (*.f64 (pow.f64 (cbrt.f64 -1) 2) z) z))
(*.f64 y (*.f64 (*.f64 z z) (pow.f64 (cbrt.f64 -1) 2)))
(*.f64 y (*.f64 z (*.f64 z (pow.f64 (cbrt.f64 -1) 2))))
(*.f64 (*.f64 y (*.f64 z z)) (pow.f64 (cbrt.f64 -1) 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))

eval107.0ms (1.8%)

Compiler

Compiled 3251 to 1601 computations (50.8% saved)

prune174.0ms (2.9%)

Pruning

9 alts after pruning (4 fresh and 5 done)

PrunedKeptTotal
New2423245
Fresh011
Picked101
Done257
Total2459254
Error
0b
Counts
254 → 9
Alt Table
Click to see full alt table
StatusErrorProgram
43.9b
(pow.f64 (cbrt.f64 (*.f64 z (*.f64 z y))) 3)
0.1b
(+.f64 x (*.f64 (*.f64 y z) z))
61.5b
(sqrt.f64 (*.f64 (*.f64 y y) (pow.f64 z 4)))
14.5b
(+.f64 x (*.f64 (*.f64 (cbrt.f64 (pow.f64 z 5)) y) (cbrt.f64 z)))
19.4b
x
4.2b
(+.f64 x (*.f64 (*.f64 (*.f64 y z) (cbrt.f64 (*.f64 z z))) (cbrt.f64 z)))
4.1b
(fma.f64 y (*.f64 z z) x)
46.7b
(*.f64 y (*.f64 z z))
43.5b
(*.f64 z (*.f64 y z))
Compiler

Compiled 91 to 60 computations (34.1% saved)

localize65.0ms (1.1%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.2b
(*.f64 (*.f64 (cbrt.f64 (pow.f64 z 5)) y) (cbrt.f64 z))
0.6b
(cbrt.f64 z)
5.6b
(*.f64 (cbrt.f64 (pow.f64 z 5)) y)
25.9b
(cbrt.f64 (pow.f64 z 5))
Compiler

Compiled 42 to 25 computations (40.5% saved)

series13.0ms (0.2%)

Counts
3 → 36
Calls

15 calls:

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

rewrite136.0ms (2.3%)

Algorithm
batch-egg-rewrite
Rules
809×pow1_binary64
754×add-log-exp_binary64
754×log1p-expm1-u_binary64
754×expm1-log1p-u_binary64
733×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

simplify192.0ms (3.2%)

Algorithm
egg-herbie
Rules
2050×unswap-sqr_binary64
1204×sqr-pow_binary64
582×pow-sqr_binary64
484×cube-prod_binary64
437×fabs-mul_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
018308
144308
295308
3254308
41015308
51658308
61759308
71912308
82112308
92335308
102618308
112967308
123376308
133887308
144496308
154758308
165004308
175202308
185368308
195490308
206270308
Stop Event
node limit
Counts
81 → 51
Calls
Call 1
Inputs
(*.f64 (pow.f64 (*.f64 1 (pow.f64 z 5)) 1/3) y)
(*.f64 (pow.f64 (*.f64 1 (pow.f64 z 5)) 1/3) y)
(*.f64 (pow.f64 (*.f64 1 (pow.f64 z 5)) 1/3) y)
(*.f64 (pow.f64 (*.f64 1 (pow.f64 z 5)) 1/3) y)
(*.f64 (pow.f64 (*.f64 1 (pow.f64 z 5)) 1/3) y)
(*.f64 (pow.f64 (*.f64 1 (pow.f64 z 5)) 1/3) y)
(*.f64 (pow.f64 (*.f64 1 (pow.f64 z 5)) 1/3) y)
(*.f64 (pow.f64 (*.f64 1 (pow.f64 z 5)) 1/3) y)
(*.f64 (pow.f64 (*.f64 1 (pow.f64 z 5)) 1/3) y)
(*.f64 (pow.f64 (*.f64 1 (pow.f64 z 5)) 1/3) y)
(*.f64 (pow.f64 (*.f64 1 (pow.f64 z 5)) 1/3) y)
(*.f64 (pow.f64 (*.f64 1 (pow.f64 z 5)) 1/3) y)
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 (pow.f64 (cbrt.f64 -1) 2) (pow.f64 z 2)))
(*.f64 y (*.f64 (pow.f64 (cbrt.f64 -1) 2) (pow.f64 z 2)))
(*.f64 y (*.f64 (pow.f64 (cbrt.f64 -1) 2) (pow.f64 z 2)))
(*.f64 y (*.f64 (pow.f64 (cbrt.f64 -1) 2) (pow.f64 z 2)))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
Outputs
(*.f64 (pow.f64 (*.f64 1 (pow.f64 z 5)) 1/3) y)
(*.f64 (cbrt.f64 (pow.f64 z 5)) y)
(*.f64 y (cbrt.f64 (pow.f64 z 5)))
(*.f64 (pow.f64 (*.f64 1 (pow.f64 z 5)) 1/3) y)
(*.f64 (cbrt.f64 (pow.f64 z 5)) y)
(*.f64 y (cbrt.f64 (pow.f64 z 5)))
(*.f64 (pow.f64 (*.f64 1 (pow.f64 z 5)) 1/3) y)
(*.f64 (cbrt.f64 (pow.f64 z 5)) y)
(*.f64 y (cbrt.f64 (pow.f64 z 5)))
(*.f64 (pow.f64 (*.f64 1 (pow.f64 z 5)) 1/3) y)
(*.f64 (cbrt.f64 (pow.f64 z 5)) y)
(*.f64 y (cbrt.f64 (pow.f64 z 5)))
(*.f64 (pow.f64 (*.f64 1 (pow.f64 z 5)) 1/3) y)
(*.f64 (cbrt.f64 (pow.f64 z 5)) y)
(*.f64 y (cbrt.f64 (pow.f64 z 5)))
(*.f64 (pow.f64 (*.f64 1 (pow.f64 z 5)) 1/3) y)
(*.f64 (cbrt.f64 (pow.f64 z 5)) y)
(*.f64 y (cbrt.f64 (pow.f64 z 5)))
(*.f64 (pow.f64 (*.f64 1 (pow.f64 z 5)) 1/3) y)
(*.f64 (cbrt.f64 (pow.f64 z 5)) y)
(*.f64 y (cbrt.f64 (pow.f64 z 5)))
(*.f64 (pow.f64 (*.f64 1 (pow.f64 z 5)) 1/3) y)
(*.f64 (cbrt.f64 (pow.f64 z 5)) y)
(*.f64 y (cbrt.f64 (pow.f64 z 5)))
(*.f64 (pow.f64 (*.f64 1 (pow.f64 z 5)) 1/3) y)
(*.f64 (cbrt.f64 (pow.f64 z 5)) y)
(*.f64 y (cbrt.f64 (pow.f64 z 5)))
(*.f64 (pow.f64 (*.f64 1 (pow.f64 z 5)) 1/3) y)
(*.f64 (cbrt.f64 (pow.f64 z 5)) y)
(*.f64 y (cbrt.f64 (pow.f64 z 5)))
(*.f64 (pow.f64 (*.f64 1 (pow.f64 z 5)) 1/3) y)
(*.f64 (cbrt.f64 (pow.f64 z 5)) y)
(*.f64 y (cbrt.f64 (pow.f64 z 5)))
(*.f64 (pow.f64 (*.f64 1 (pow.f64 z 5)) 1/3) y)
(*.f64 (cbrt.f64 (pow.f64 z 5)) y)
(*.f64 y (cbrt.f64 (pow.f64 z 5)))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 z y))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 z y))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 z y))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 z y))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 z y))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 z y))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 z y))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 z y))
(*.f64 y (*.f64 (pow.f64 (cbrt.f64 -1) 2) (pow.f64 z 2)))
(*.f64 y (*.f64 (*.f64 z z) (pow.f64 (cbrt.f64 -1) 2)))
(*.f64 y (*.f64 (*.f64 (pow.f64 (cbrt.f64 -1) 2) z) z))
(*.f64 y (*.f64 z (*.f64 z (pow.f64 (cbrt.f64 -1) 2))))
(*.f64 (*.f64 z (*.f64 z y)) (pow.f64 (cbrt.f64 -1) 2))
(*.f64 (*.f64 z z) (*.f64 y (pow.f64 (cbrt.f64 -1) 2)))
(*.f64 z (*.f64 (pow.f64 (cbrt.f64 -1) 2) (*.f64 z y)))
(*.f64 y (*.f64 (pow.f64 (cbrt.f64 -1) 2) (pow.f64 z 2)))
(*.f64 y (*.f64 (*.f64 z z) (pow.f64 (cbrt.f64 -1) 2)))
(*.f64 y (*.f64 (*.f64 (pow.f64 (cbrt.f64 -1) 2) z) z))
(*.f64 y (*.f64 z (*.f64 z (pow.f64 (cbrt.f64 -1) 2))))
(*.f64 (*.f64 z (*.f64 z y)) (pow.f64 (cbrt.f64 -1) 2))
(*.f64 (*.f64 z z) (*.f64 y (pow.f64 (cbrt.f64 -1) 2)))
(*.f64 z (*.f64 (pow.f64 (cbrt.f64 -1) 2) (*.f64 z y)))
(*.f64 y (*.f64 (pow.f64 (cbrt.f64 -1) 2) (pow.f64 z 2)))
(*.f64 y (*.f64 (*.f64 z z) (pow.f64 (cbrt.f64 -1) 2)))
(*.f64 y (*.f64 (*.f64 (pow.f64 (cbrt.f64 -1) 2) z) z))
(*.f64 y (*.f64 z (*.f64 z (pow.f64 (cbrt.f64 -1) 2))))
(*.f64 (*.f64 z (*.f64 z y)) (pow.f64 (cbrt.f64 -1) 2))
(*.f64 (*.f64 z z) (*.f64 y (pow.f64 (cbrt.f64 -1) 2)))
(*.f64 z (*.f64 (pow.f64 (cbrt.f64 -1) 2) (*.f64 z y)))
(*.f64 y (*.f64 (pow.f64 (cbrt.f64 -1) 2) (pow.f64 z 2)))
(*.f64 y (*.f64 (*.f64 z z) (pow.f64 (cbrt.f64 -1) 2)))
(*.f64 y (*.f64 (*.f64 (pow.f64 (cbrt.f64 -1) 2) z) z))
(*.f64 y (*.f64 z (*.f64 z (pow.f64 (cbrt.f64 -1) 2))))
(*.f64 (*.f64 z (*.f64 z y)) (pow.f64 (cbrt.f64 -1) 2))
(*.f64 (*.f64 z z) (*.f64 y (pow.f64 (cbrt.f64 -1) 2)))
(*.f64 z (*.f64 (pow.f64 (cbrt.f64 -1) 2) (*.f64 z y)))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 z y))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 z y))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 z y))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 z y))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 z y))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 z y))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 z y))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 z y))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 z y))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 z y))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 z y))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 z y))

localize15.0ms (0.2%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.2b
(*.f64 (*.f64 (*.f64 y z) (cbrt.f64 (*.f64 z z))) (cbrt.f64 z))
0.2b
(*.f64 (*.f64 y z) (cbrt.f64 (*.f64 z z)))
0.6b
(cbrt.f64 z)
23.9b
(cbrt.f64 (*.f64 z z))
Compiler

Compiled 50 to 10 computations (80% saved)

series6.0ms (0.1%)

Counts
3 → 36
Calls

15 calls:

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

rewrite101.0ms (1.7%)

Algorithm
batch-egg-rewrite
Rules
780×pow1_binary64
718×add-log-exp_binary64
718×log1p-expm1-u_binary64
718×expm1-log1p-u_binary64
697×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

simplify119.0ms (2%)

Algorithm
egg-herbie
Rules
548×fma-def_binary64
510×fma-neg_binary64
474×unswap-sqr_binary64
458×distribute-rgt-neg-in_binary64
414×sqr-pow_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
018304
145304
2108304
3279304
4803304
51308304
61972304
73242304
84366304
95195304
105915304
116828304
Stop Event
node limit
Counts
84 → 54
Calls
Call 1
Inputs
(*.f64 (pow.f64 (*.f64 1 (pow.f64 z 5)) 1/3) y)
(*.f64 (pow.f64 (*.f64 1 (pow.f64 z 5)) 1/3) y)
(*.f64 (pow.f64 (*.f64 1 (pow.f64 z 5)) 1/3) y)
(*.f64 (pow.f64 (*.f64 1 (pow.f64 z 5)) 1/3) y)
(*.f64 (pow.f64 (*.f64 1 (pow.f64 z 5)) 1/3) y)
(*.f64 (pow.f64 (*.f64 1 (pow.f64 z 5)) 1/3) y)
(*.f64 (pow.f64 (*.f64 1 (pow.f64 z 5)) 1/3) y)
(*.f64 (pow.f64 (*.f64 1 (pow.f64 z 5)) 1/3) y)
(*.f64 (pow.f64 (*.f64 1 (pow.f64 z 5)) 1/3) y)
(*.f64 (pow.f64 (*.f64 1 (pow.f64 z 5)) 1/3) y)
(*.f64 (pow.f64 (*.f64 1 (pow.f64 z 5)) 1/3) y)
(*.f64 (pow.f64 (*.f64 1 (pow.f64 z 5)) 1/3) y)
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 -1 (*.f64 y (*.f64 (cbrt.f64 -1) (pow.f64 z 2))))
(*.f64 -1 (*.f64 y (*.f64 (cbrt.f64 -1) (pow.f64 z 2))))
(*.f64 -1 (*.f64 y (*.f64 (cbrt.f64 -1) (pow.f64 z 2))))
(*.f64 -1 (*.f64 y (*.f64 (cbrt.f64 -1) (pow.f64 z 2))))
Outputs
(*.f64 (pow.f64 (*.f64 1 (pow.f64 z 5)) 1/3) y)
(*.f64 (cbrt.f64 (pow.f64 z 5)) y)
(*.f64 (pow.f64 (*.f64 1 (pow.f64 z 5)) 1/3) y)
(*.f64 (cbrt.f64 (pow.f64 z 5)) y)
(*.f64 (pow.f64 (*.f64 1 (pow.f64 z 5)) 1/3) y)
(*.f64 (cbrt.f64 (pow.f64 z 5)) y)
(*.f64 (pow.f64 (*.f64 1 (pow.f64 z 5)) 1/3) y)
(*.f64 (cbrt.f64 (pow.f64 z 5)) y)
(*.f64 (pow.f64 (*.f64 1 (pow.f64 z 5)) 1/3) y)
(*.f64 (cbrt.f64 (pow.f64 z 5)) y)
(*.f64 (pow.f64 (*.f64 1 (pow.f64 z 5)) 1/3) y)
(*.f64 (cbrt.f64 (pow.f64 z 5)) y)
(*.f64 (pow.f64 (*.f64 1 (pow.f64 z 5)) 1/3) y)
(*.f64 (cbrt.f64 (pow.f64 z 5)) y)
(*.f64 (pow.f64 (*.f64 1 (pow.f64 z 5)) 1/3) y)
(*.f64 (cbrt.f64 (pow.f64 z 5)) y)
(*.f64 (pow.f64 (*.f64 1 (pow.f64 z 5)) 1/3) y)
(*.f64 (cbrt.f64 (pow.f64 z 5)) y)
(*.f64 (pow.f64 (*.f64 1 (pow.f64 z 5)) 1/3) y)
(*.f64 (cbrt.f64 (pow.f64 z 5)) y)
(*.f64 (pow.f64 (*.f64 1 (pow.f64 z 5)) 1/3) y)
(*.f64 (cbrt.f64 (pow.f64 z 5)) y)
(*.f64 (pow.f64 (*.f64 1 (pow.f64 z 5)) 1/3) y)
(*.f64 (cbrt.f64 (pow.f64 z 5)) y)
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 z y))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 z y))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 z y))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 z y))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 z y))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 z y))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 z y))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 z y))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 z y))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 z y))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 z y))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 z y))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 z y))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 z y))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 z y))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 z y))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 z y))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 z y))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 z y))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 z y))
(*.f64 -1 (*.f64 y (*.f64 (cbrt.f64 -1) (pow.f64 z 2))))
(neg.f64 (*.f64 (*.f64 y (cbrt.f64 -1)) (*.f64 z z)))
(*.f64 y (neg.f64 (*.f64 z (*.f64 z (cbrt.f64 -1)))))
(neg.f64 (*.f64 z (*.f64 (*.f64 z y) (cbrt.f64 -1))))
(*.f64 z (*.f64 z (*.f64 (cbrt.f64 -1) (neg.f64 y))))
(*.f64 z (*.f64 (cbrt.f64 -1) (*.f64 z (neg.f64 y))))
(*.f64 z (*.f64 z (*.f64 y (neg.f64 (cbrt.f64 -1)))))
(*.f64 -1 (*.f64 y (*.f64 (cbrt.f64 -1) (pow.f64 z 2))))
(neg.f64 (*.f64 (*.f64 y (cbrt.f64 -1)) (*.f64 z z)))
(*.f64 y (neg.f64 (*.f64 z (*.f64 z (cbrt.f64 -1)))))
(neg.f64 (*.f64 z (*.f64 (*.f64 z y) (cbrt.f64 -1))))
(*.f64 z (*.f64 z (*.f64 (cbrt.f64 -1) (neg.f64 y))))
(*.f64 z (*.f64 (cbrt.f64 -1) (*.f64 z (neg.f64 y))))
(*.f64 z (*.f64 z (*.f64 y (neg.f64 (cbrt.f64 -1)))))
(*.f64 -1 (*.f64 y (*.f64 (cbrt.f64 -1) (pow.f64 z 2))))
(neg.f64 (*.f64 (*.f64 y (cbrt.f64 -1)) (*.f64 z z)))
(*.f64 y (neg.f64 (*.f64 z (*.f64 z (cbrt.f64 -1)))))
(neg.f64 (*.f64 z (*.f64 (*.f64 z y) (cbrt.f64 -1))))
(*.f64 z (*.f64 z (*.f64 (cbrt.f64 -1) (neg.f64 y))))
(*.f64 z (*.f64 (cbrt.f64 -1) (*.f64 z (neg.f64 y))))
(*.f64 z (*.f64 z (*.f64 y (neg.f64 (cbrt.f64 -1)))))
(*.f64 -1 (*.f64 y (*.f64 (cbrt.f64 -1) (pow.f64 z 2))))
(neg.f64 (*.f64 (*.f64 y (cbrt.f64 -1)) (*.f64 z z)))
(*.f64 y (neg.f64 (*.f64 z (*.f64 z (cbrt.f64 -1)))))
(neg.f64 (*.f64 z (*.f64 (*.f64 z y) (cbrt.f64 -1))))
(*.f64 z (*.f64 z (*.f64 (cbrt.f64 -1) (neg.f64 y))))
(*.f64 z (*.f64 (cbrt.f64 -1) (*.f64 z (neg.f64 y))))
(*.f64 z (*.f64 z (*.f64 y (neg.f64 (cbrt.f64 -1)))))

localize10.0ms (0.2%)

Local error

Found 3 expressions with local error:

NewErrorProgram
0.1b
(*.f64 z (*.f64 z y))
0.5b
(pow.f64 (cbrt.f64 (*.f64 z (*.f64 z y))) 3)
21.7b
(cbrt.f64 (*.f64 z (*.f64 z y)))
Compiler

Compiled 28 to 9 computations (67.9% saved)

series9.0ms (0.2%)

Counts
3 → 24
Calls

18 calls:

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

rewrite91.0ms (1.5%)

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

Useful iterations: 0 (0.0ms)

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

simplify202.0ms (3.4%)

Algorithm
egg-herbie
Rules
1082×sqr-pow_binary64
617×cube-prod_binary64
554×fabs-mul_binary64
523×pow-sqr_binary64
441×associate-*l*_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
06168
112168
223168
344168
4105168
5331168
61250168
72123168
82287168
92471168
102679168
112976168
123371168
133852168
144418168
155102168
165935168
176327168
186619168
196895168
206969168
217003168
227944168
Stop Event
node limit
Counts
99 → 68
Calls
Call 1
Inputs
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
(*.f64 y (pow.f64 z 2))
Outputs
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 y z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 y z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 y z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 y z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 y z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 y z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 y z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 y z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 y z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 y z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 y z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 y z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 y z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 y z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 y z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 y z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 y z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 y z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 y z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 y z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 y z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 y z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 y z))
(*.f64 y (pow.f64 z 2))
(*.f64 y (*.f64 z z))
(*.f64 z (*.f64 y z))

eval51.0ms (0.9%)

Compiler

Compiled 2858 to 1254 computations (56.1% saved)

prune69.0ms (1.2%)

Pruning

9 alts after pruning (2 fresh and 7 done)

PrunedKeptTotal
New2121213
Fresh011
Picked011
Done167
Total2139222
Error
0b
Counts
222 → 9
Alt Table
Click to see full alt table
StatusErrorProgram
43.9b
(pow.f64 (cbrt.f64 (*.f64 z (*.f64 z y))) 3)
0.1b
(+.f64 x (*.f64 (*.f64 y z) z))
61.5b
(sqrt.f64 (*.f64 (*.f64 y y) (pow.f64 z 4)))
52.4b
(*.f64 (*.f64 z (sqrt.f64 (*.f64 z y))) (sqrt.f64 (*.f64 z y)))
43.5b
(*.f64 z (*.f64 y z))
4.2b
(+.f64 x (*.f64 (*.f64 (*.f64 y z) (cbrt.f64 (*.f64 z z))) (cbrt.f64 z)))
4.1b
(fma.f64 y (*.f64 z z) x)
46.7b
(*.f64 y (*.f64 z z))
19.4b
x
Compiler

Compiled 91 to 57 computations (37.4% saved)

regimes47.0ms (0.8%)

Counts
14 → 1
Calls
Call 1
Inputs
x
(*.f64 z (*.f64 y z))
(*.f64 y (*.f64 z z))
(+.f64 x (*.f64 (*.f64 y z) z))
(fma.f64 y (*.f64 z z) x)
(pow.f64 (cbrt.f64 (*.f64 z (*.f64 z y))) 3)
(sqrt.f64 (*.f64 (*.f64 y y) (pow.f64 z 4)))
(+.f64 x (cbrt.f64 (pow.f64 (*.f64 y (*.f64 z z)) 3)))
(*.f64 (*.f64 z (sqrt.f64 (*.f64 z y))) (sqrt.f64 (*.f64 z y)))
(+.f64 x (*.f64 (*.f64 (*.f64 y z) (sqrt.f64 z)) (sqrt.f64 z)))
(+.f64 x (*.f64 (*.f64 (*.f64 y z) (cbrt.f64 (*.f64 z z))) (cbrt.f64 z)))
(+.f64 x (*.f64 (*.f64 (cbrt.f64 (pow.f64 z 5)) y) (cbrt.f64 z)))
(+.f64 x (*.f64 (*.f64 (*.f64 y z) (pow.f64 (cbrt.f64 z) 2)) (cbrt.f64 z)))
(+.f64 x (*.f64 (cbrt.f64 (pow.f64 z 4)) (*.f64 (pow.f64 (cbrt.f64 z) 2) y)))
Outputs
(+.f64 x (*.f64 (*.f64 y z) z))
Calls

5 calls:

11.0ms
(+.f64 x (*.f64 (*.f64 y z) z))
9.0ms
x
8.0ms
y
8.0ms
z
6.0ms
(*.f64 (*.f64 y z) z)
Results
ErrorSegmentsBranch
0.1b1x
0.1b1y
0.1b1z
0.1b1(+.f64 x (*.f64 (*.f64 y z) z))
0.1b1(*.f64 (*.f64 y z) z)
Compiler

Compiled 155 to 75 computations (51.6% saved)

regimes77.0ms (1.3%)

Accuracy

Total -49.8b remaining (-412.4%)

Threshold costs -49.8b (-412.4%)

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

3 calls:

18.0ms
z
16.0ms
x
14.0ms
y
Results
ErrorSegmentsBranch
16.4b3x
16.9b4y
12.1b5z
Compiler

Compiled 26 to 16 computations (38.5% saved)

bsearch335.0ms (5.6%)

Algorithm
binary-search
Steps
TimeLeftRight
75.0ms
4.0686056553062186e+106
8.254184277765864e+114
100.0ms
7.04482856020915e+21
8.992299705261546e+30
33.0ms
1.0628008744865694e-41
8.629657847694332e-39
127.0ms
-1.2500675112088352e+54
-3.804214522296073e+52
Compiler

Compiled 254 to 181 computations (28.7% saved)

simplify7.0ms (0.1%)

Algorithm
egg-herbie
Rules
*-commutative_binary64
+-commutative_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
02158
12458
Stop Event
fuel
saturated
Calls
Call 1
Inputs
(+.f64 x (*.f64 (*.f64 y z) z))
(if (<=.f64 z -1250000000000000012793833775510688937038048516915593216) (*.f64 z (*.f64 y z)) (if (<=.f64 z 4169568258506329/392318858461667547739736838950479151006397215279002157056) x (if (<=.f64 z 252634075519833576161935360) (*.f64 z (*.f64 y z)) (if (<=.f64 z 8000000000000000124475329035734744194145611175368491466958164643446670249318045626119883119320379581409650246942720) x (*.f64 z (*.f64 y z))))))
x
Outputs
(+.f64 x (*.f64 (*.f64 y z) z))
(+.f64 x (*.f64 z (*.f64 y z)))
(if (<=.f64 z -1250000000000000012793833775510688937038048516915593216) (*.f64 z (*.f64 y z)) (if (<=.f64 z 4169568258506329/392318858461667547739736838950479151006397215279002157056) x (if (<=.f64 z 252634075519833576161935360) (*.f64 z (*.f64 y z)) (if (<=.f64 z 8000000000000000124475329035734744194145611175368491466958164643446670249318045626119883119320379581409650246942720) x (*.f64 z (*.f64 y z))))))
x
Compiler

Compiled 50 to 26 computations (48% saved)

soundness0.0ms (0%)

end114.0ms (1.9%)

Compiler

Compiled 44 to 18 computations (59.1% saved)

Profiling

Loading profile data...