Details

Time bar (total: 3.3s)

analyze3.0ms (0.1%)

Algorithm
search
Search
TrueOtherFalseIter
0%100%0%0
0%100%0%1
0%100%0%2
50%50%0%3
75%25%0%4
75%12.5%12.5%5
75%6.2%18.8%6
75%3.1%21.9%7
75%1.6%23.5%8
75%0.8%24.3%9
75%0.4%24.6%10
75%0.2%24.8%11
75%0.1%24.9%12
Compiler

Compiled 9 to 7 computations (22.2% saved)

sample720.0ms (21.8%)

Results
708.0ms8256×body256valid
1.0ms11×body256invalid

preprocess19.0ms (0.6%)

Algorithm
egg-herbie
Rules
fma-neg_binary64
+-commutative_binary64
sub-neg_binary64
*-commutative_binary64
associate-/l*_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
078
1158
2218
3248
4268
5278
011
Stop Event
saturated
saturated
Calls
Call 1
Inputs
0
Outputs
0
Call 2
Inputs
(/.f64 (-.f64 (*.f64 x x) 3) 6)
Outputs
(/.f64 (-.f64 (*.f64 x x) 3) 6)
(/.f64 (fma.f64 x x -3) 6)
Compiler

Compiled 9 to 7 computations (22.2% saved)

simplify10.0ms (0.3%)

Algorithm
egg-herbie
Rules
fma-neg_binary64
+-commutative_binary64
sub-neg_binary64
*-commutative_binary64
associate-/l*_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
078
1158
2218
3248
4268
5278
Stop Event
saturated
Counts
1 → 2
Calls
Call 1
Inputs
(/.f64 (-.f64 (*.f64 x x) 3) 6)
Outputs
(/.f64 (-.f64 (*.f64 x x) 3) 6)
(/.f64 (fma.f64 x x -3) 6)

eval1.0ms (0%)

Compiler

Compiled 14 to 10 computations (28.6% saved)

prune1.0ms (0%)

Pruning

3 alts after pruning (3 fresh and 0 done)

PrunedKeptTotal
New022
Fresh011
Picked000
Done000
Total033
Error
0.1b
Counts
3 → 2
Alt Table
Click to see full alt table
StatusErrorProgram
0.1b
(/.f64 (fma.f64 x x -3) 6)
0.1b
(/.f64 (-.f64 (*.f64 x x) 3) 6)
Compiler

Compiled 15 to 11 computations (26.7% saved)

localize9.0ms (0.3%)

Local error

Found 2 expressions with local error:

NewErrorProgram
0.0b
(-.f64 (*.f64 x x) 3)
0.1b
(/.f64 (-.f64 (*.f64 x x) 3) 6)
Compiler

Compiled 19 to 10 computations (47.4% saved)

series3.0ms (0.1%)

Counts
2 → 24
Calls

6 calls:

TimeVariablePointExpression
1.0ms
x
@inf
(/.f64 (-.f64 (*.f64 x x) 3) 6)
1.0ms
x
@0
(/.f64 (-.f64 (*.f64 x x) 3) 6)
0.0ms
x
@-inf
(/.f64 (-.f64 (*.f64 x x) 3) 6)
0.0ms
x
@-inf
(-.f64 (*.f64 x x) 3)
0.0ms
x
@inf
(-.f64 (*.f64 x x) 3)

rewrite56.0ms (1.7%)

Algorithm
batch-egg-rewrite
Rules
796×pow1_binary64
756×add-log-exp_binary64
756×log1p-expm1-u_binary64
756×expm1-log1p-u_binary64
744×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0713
116613
2203313
Stop Event
node limit
Counts
2 → 55
Calls
Call 1
Inputs
(/.f64 (-.f64 (*.f64 x x) 3) 6)
(-.f64 (*.f64 x x) 3)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (/.f64 x (/.f64 6 x)) -1/2)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (/.f64 x (/.f64 6 x)) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 (fma.f64 x x -3) 1/6)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (fma.f64 x x -3) 1/6)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (fma.f64 x x -3) 1/6) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (*.f64 (fma.f64 x x -3) 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (fma.f64 x x -3)) 2) (*.f64 (cbrt.f64 (fma.f64 x x -3)) 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 (fma.f64 x x -3) 1/6)) (pow.f64 (cbrt.f64 (*.f64 (fma.f64 x x -3) 1/6)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (*.f64 (fma.f64 x x -3) 1/6)) 2) (cbrt.f64 (*.f64 (fma.f64 x x -3) 1/6)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (fma.f64 x x -3)) (*.f64 (sqrt.f64 (fma.f64 x x -3)) 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 (fma.f64 x x -3) 1/6)) (sqrt.f64 (*.f64 (fma.f64 x x -3) 1/6)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (neg.f64 (fma.f64 x x -3)) -1/6)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/6 (fma.f64 x x -3))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (fma.f64 x x -3) 1/6) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 (fma.f64 x x -3) 1/6) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 (fma.f64 x x -3) 1/6)) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 (fma.f64 x x -3) 1/6)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 6 (fma.f64 x x -3)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (/.f64 (fma.f64 x x -3) -6))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (*.f64 (pow.f64 (fma.f64 x x -3) 2) 1/36))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (*.f64 (fma.f64 x x -3) 1/6)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 (fma.f64 x x -3) 1/6) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 (fma.f64 x x -3) 1/6)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 (fma.f64 x x -3) 1/6)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 (fma.f64 x x -3) 1/6)))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 x x) -3)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 -3 (*.f64 x x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (fma.f64 x x -3) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (fma.f64 x x -3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (fma.f64 x x -3)) (pow.f64 (cbrt.f64 (fma.f64 x x -3)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (fma.f64 x x -3)) 2) (cbrt.f64 (fma.f64 x x -3)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (fma.f64 x x -3)) (sqrt.f64 (fma.f64 x x -3)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (pow.f64 x 6) -27) (/.f64 1 (+.f64 (+.f64 (pow.f64 x 4) 9) (*.f64 x (*.f64 x 3)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (pow.f64 x 4) -9) (/.f64 1 (fma.f64 x x 3)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (+.f64 (+.f64 (pow.f64 x 4) 9) (*.f64 x (*.f64 x 3))) (+.f64 (pow.f64 x 6) -27)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (fma.f64 x x 3) (+.f64 (pow.f64 x 4) -9)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 x 6) -27) (+.f64 (+.f64 (pow.f64 x 4) 9) (*.f64 x (*.f64 x 3))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 x 6) -27) (+.f64 (pow.f64 x 4) (-.f64 9 (*.f64 (*.f64 x x) -3))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 x 4) -9) (fma.f64 x x 3))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 x 4) -9) (-.f64 (*.f64 x x) -3))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (+.f64 (pow.f64 x 6) -27)) (neg.f64 (+.f64 (+.f64 (pow.f64 x 4) 9) (*.f64 x (*.f64 x 3)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (+.f64 (pow.f64 x 4) -9)) (neg.f64 (fma.f64 x x 3)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (fma.f64 x x -3) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (fma.f64 x x -3) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (fma.f64 x x -3)) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (fma.f64 x x -3)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (fma.f64 x x -3) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (fma.f64 x x -3)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (fma.f64 x x -3) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (fma.f64 x x -3)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (fma.f64 x x -3)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (fma.f64 x x -3)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 x x -3)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (*.f64 x x) -3)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (pow.f64 x 4)) (pow.f64 (cbrt.f64 x) 2) -3)))))

simplify171.0ms (5.2%)

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

Useful iterations: 1 (0.0ms)

IterNodesCost
012159
123141
238141
363141
4132141
5359141
61296141
72212141
82396141
92580141
102788141
113086141
123479141
133962141
144530141
155214141
166053141
176445141
186733141
197013141
207087141
217121141
Stop Event
node limit
Counts
79 → 64
Calls
Call 1
Inputs
-1/2
(-.f64 (*.f64 1/6 (pow.f64 x 2)) 1/2)
(-.f64 (*.f64 1/6 (pow.f64 x 2)) 1/2)
(-.f64 (*.f64 1/6 (pow.f64 x 2)) 1/2)
(*.f64 1/6 (pow.f64 x 2))
(-.f64 (*.f64 1/6 (pow.f64 x 2)) 1/2)
(-.f64 (*.f64 1/6 (pow.f64 x 2)) 1/2)
(-.f64 (*.f64 1/6 (pow.f64 x 2)) 1/2)
(*.f64 1/6 (pow.f64 x 2))
(-.f64 (*.f64 1/6 (pow.f64 x 2)) 1/2)
(-.f64 (*.f64 1/6 (pow.f64 x 2)) 1/2)
(-.f64 (*.f64 1/6 (pow.f64 x 2)) 1/2)
-3
(-.f64 (pow.f64 x 2) 3)
(-.f64 (pow.f64 x 2) 3)
(-.f64 (pow.f64 x 2) 3)
(pow.f64 x 2)
(-.f64 (pow.f64 x 2) 3)
(-.f64 (pow.f64 x 2) 3)
(-.f64 (pow.f64 x 2) 3)
(pow.f64 x 2)
(-.f64 (pow.f64 x 2) 3)
(-.f64 (pow.f64 x 2) 3)
(-.f64 (pow.f64 x 2) 3)
Outputs
-1/2
(-.f64 (*.f64 1/6 (pow.f64 x 2)) 1/2)
(fma.f64 1/6 (*.f64 x x) -1/2)
(fma.f64 x (*.f64 1/6 x) -1/2)
(-.f64 (*.f64 1/6 (pow.f64 x 2)) 1/2)
(fma.f64 1/6 (*.f64 x x) -1/2)
(fma.f64 x (*.f64 1/6 x) -1/2)
(-.f64 (*.f64 1/6 (pow.f64 x 2)) 1/2)
(fma.f64 1/6 (*.f64 x x) -1/2)
(fma.f64 x (*.f64 1/6 x) -1/2)
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (*.f64 x x))
(-.f64 (*.f64 1/6 (pow.f64 x 2)) 1/2)
(fma.f64 1/6 (*.f64 x x) -1/2)
(fma.f64 x (*.f64 1/6 x) -1/2)
(-.f64 (*.f64 1/6 (pow.f64 x 2)) 1/2)
(fma.f64 1/6 (*.f64 x x) -1/2)
(fma.f64 x (*.f64 1/6 x) -1/2)
(-.f64 (*.f64 1/6 (pow.f64 x 2)) 1/2)
(fma.f64 1/6 (*.f64 x x) -1/2)
(fma.f64 x (*.f64 1/6 x) -1/2)
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (*.f64 x x))
(-.f64 (*.f64 1/6 (pow.f64 x 2)) 1/2)
(fma.f64 1/6 (*.f64 x x) -1/2)
(fma.f64 x (*.f64 1/6 x) -1/2)
(-.f64 (*.f64 1/6 (pow.f64 x 2)) 1/2)
(fma.f64 1/6 (*.f64 x x) -1/2)
(fma.f64 x (*.f64 1/6 x) -1/2)
(-.f64 (*.f64 1/6 (pow.f64 x 2)) 1/2)
(fma.f64 1/6 (*.f64 x x) -1/2)
(fma.f64 x (*.f64 1/6 x) -1/2)
-3
(-.f64 (pow.f64 x 2) 3)
(+.f64 (*.f64 x x) -3)
(fma.f64 x x -3)
(-.f64 (pow.f64 x 2) 3)
(+.f64 (*.f64 x x) -3)
(fma.f64 x x -3)
(-.f64 (pow.f64 x 2) 3)
(+.f64 (*.f64 x x) -3)
(fma.f64 x x -3)
(pow.f64 x 2)
(*.f64 x x)
(-.f64 (pow.f64 x 2) 3)
(+.f64 (*.f64 x x) -3)
(fma.f64 x x -3)
(-.f64 (pow.f64 x 2) 3)
(+.f64 (*.f64 x x) -3)
(fma.f64 x x -3)
(-.f64 (pow.f64 x 2) 3)
(+.f64 (*.f64 x x) -3)
(fma.f64 x x -3)
(pow.f64 x 2)
(*.f64 x x)
(-.f64 (pow.f64 x 2) 3)
(+.f64 (*.f64 x x) -3)
(fma.f64 x x -3)
(-.f64 (pow.f64 x 2) 3)
(+.f64 (*.f64 x x) -3)
(fma.f64 x x -3)
(-.f64 (pow.f64 x 2) 3)
(+.f64 (*.f64 x x) -3)
(fma.f64 x x -3)

localize8.0ms (0.2%)

Local error

Found 1 expressions with local error:

NewErrorProgram
0.1b
(/.f64 (fma.f64 x x -3) 6)
Compiler

Compiled 14 to 9 computations (35.7% saved)

series2.0ms (0.1%)

Counts
1 → 12
Calls

3 calls:

TimeVariablePointExpression
1.0ms
x
@-inf
(/.f64 (fma.f64 x x -3) 6)
1.0ms
x
@0
(/.f64 (fma.f64 x x -3) 6)
0.0ms
x
@inf
(/.f64 (fma.f64 x x -3) 6)

rewrite46.0ms (1.4%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
068
11298
214468
Stop Event
node limit
Counts
1 → 23
Calls
Call 1
Inputs
(/.f64 (fma.f64 x x -3) 6)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 (fma.f64 x x -3) 1/6)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (fma.f64 x x -3) 1/6)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (fma.f64 x x -3) 1/6) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (*.f64 (fma.f64 x x -3) 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 (fma.f64 x x -3) 1/6)) (cbrt.f64 (*.f64 (pow.f64 (fma.f64 x x -3) 2) 1/36)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 (pow.f64 (fma.f64 x x -3) 2) 1/36)) (cbrt.f64 (*.f64 (fma.f64 x x -3) 1/6)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (fma.f64 x x -3)) 2) (*.f64 (cbrt.f64 (fma.f64 x x -3)) 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 (fma.f64 x x -3) 1/6)) (sqrt.f64 (*.f64 (fma.f64 x x -3) 1/6)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (fma.f64 x x -3)) (*.f64 (sqrt.f64 (fma.f64 x x -3)) 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (neg.f64 (fma.f64 x x -3)) -1/6)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/6 (fma.f64 x x -3))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (fma.f64 x x -3) 1/6) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 (fma.f64 x x -3) 1/6) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 (fma.f64 x x -3) 1/6)) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 (fma.f64 x x -3) 1/6)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 6 (fma.f64 x x -3)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (/.f64 (fma.f64 x x -3) -6))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (*.f64 (pow.f64 (fma.f64 x x -3) 2) 1/36))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 (fma.f64 x x -3)) 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 (fma.f64 x x -3) 1/6) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 (fma.f64 x x -3) 1/6)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 (fma.f64 x x -3) 1/6)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 (fma.f64 x x -3) 1/6)))))))

simplify161.0ms (4.9%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
0987
11887
23087
35487
411787
535287
6129387
7218987
8235387
9253787
10274587
11304287
12343587
13391887
14448687
15517487
16600987
17640387
18669187
19696587
20703787
21707187
Stop Event
node limit
Counts
35 → 28
Calls
Call 1
Inputs
-1/2
(-.f64 (*.f64 1/6 (pow.f64 x 2)) 1/2)
(-.f64 (*.f64 1/6 (pow.f64 x 2)) 1/2)
(-.f64 (*.f64 1/6 (pow.f64 x 2)) 1/2)
(*.f64 1/6 (pow.f64 x 2))
(-.f64 (*.f64 1/6 (pow.f64 x 2)) 1/2)
(-.f64 (*.f64 1/6 (pow.f64 x 2)) 1/2)
(-.f64 (*.f64 1/6 (pow.f64 x 2)) 1/2)
(*.f64 1/6 (pow.f64 x 2))
(-.f64 (*.f64 1/6 (pow.f64 x 2)) 1/2)
(-.f64 (*.f64 1/6 (pow.f64 x 2)) 1/2)
(-.f64 (*.f64 1/6 (pow.f64 x 2)) 1/2)
Outputs
-1/2
(-.f64 (*.f64 1/6 (pow.f64 x 2)) 1/2)
(fma.f64 1/6 (*.f64 x x) -1/2)
(fma.f64 x (*.f64 1/6 x) -1/2)
(-.f64 (*.f64 1/6 (pow.f64 x 2)) 1/2)
(fma.f64 1/6 (*.f64 x x) -1/2)
(fma.f64 x (*.f64 1/6 x) -1/2)
(-.f64 (*.f64 1/6 (pow.f64 x 2)) 1/2)
(fma.f64 1/6 (*.f64 x x) -1/2)
(fma.f64 x (*.f64 1/6 x) -1/2)
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (*.f64 x x))
(-.f64 (*.f64 1/6 (pow.f64 x 2)) 1/2)
(fma.f64 1/6 (*.f64 x x) -1/2)
(fma.f64 x (*.f64 1/6 x) -1/2)
(-.f64 (*.f64 1/6 (pow.f64 x 2)) 1/2)
(fma.f64 1/6 (*.f64 x x) -1/2)
(fma.f64 x (*.f64 1/6 x) -1/2)
(-.f64 (*.f64 1/6 (pow.f64 x 2)) 1/2)
(fma.f64 1/6 (*.f64 x x) -1/2)
(fma.f64 x (*.f64 1/6 x) -1/2)
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (*.f64 x x))
(-.f64 (*.f64 1/6 (pow.f64 x 2)) 1/2)
(fma.f64 1/6 (*.f64 x x) -1/2)
(fma.f64 x (*.f64 1/6 x) -1/2)
(-.f64 (*.f64 1/6 (pow.f64 x 2)) 1/2)
(fma.f64 1/6 (*.f64 x x) -1/2)
(fma.f64 x (*.f64 1/6 x) -1/2)
(-.f64 (*.f64 1/6 (pow.f64 x 2)) 1/2)
(fma.f64 1/6 (*.f64 x x) -1/2)
(fma.f64 x (*.f64 1/6 x) -1/2)

eval29.0ms (0.9%)

Compiler

Compiled 882 to 662 computations (24.9% saved)

prune17.0ms (0.5%)

Pruning

8 alts after pruning (7 fresh and 1 done)

PrunedKeptTotal
New85792
Fresh000
Picked101
Done011
Total86894
Error
0b
Counts
94 → 8
Alt Table
Click to see full alt table
StatusErrorProgram
0.1b
(/.f64 (-.f64 (*.f64 x x) 3) 6)
39.1b
(*.f64 1/6 (*.f64 x x))
0.1b
(fma.f64 x (*.f64 1/6 x) -1/2)
8.6b
(/.f64 (/.f64 (+.f64 (pow.f64 x 4) -9) (-.f64 (*.f64 x x) -3)) 6)
25.0b
-1/2
0.1b
(-.f64 (/.f64 x (/.f64 6 x)) 1/2)
39.1b
(/.f64 (*.f64 x x) 6)
1.1b
(/.f64 (pow.f64 (cbrt.f64 (fma.f64 x x -3)) 3) 6)
Compiler

Compiled 112 to 84 computations (25% saved)

localize8.0ms (0.3%)

Local error

Found 1 expressions with local error:

NewErrorProgram
0.2b
(/.f64 x (/.f64 6 x))
Compiler

Compiled 19 to 13 computations (31.6% saved)

series1.0ms (0%)

Counts
1 → 12
Calls

3 calls:

TimeVariablePointExpression
1.0ms
x
@0
(/.f64 x (/.f64 6 x))
0.0ms
x
@inf
(/.f64 x (/.f64 6 x))
0.0ms
x
@-inf
(/.f64 x (/.f64 6 x))

rewrite51.0ms (1.5%)

Algorithm
batch-egg-rewrite
Rules
579×pow1_binary64
546×add-log-exp_binary64
546×log1p-expm1-u_binary64
546×expm1-log1p-u_binary64
535×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

simplify174.0ms (5.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
0684
11284
22384
34484
410584
533184
6125084
7212384
8228784
9247184
10267984
11297684
12337184
13385284
14441884
15510284
16593584
17632784
18661984
19689584
20696984
21700384
22794484
Stop Event
node limit
Counts
50 → 40
Calls
Call 1
Inputs
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (pow.f64 x 2))
Outputs
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (*.f64 x x))
(*.f64 x (*.f64 1/6 x))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (*.f64 x x))
(*.f64 x (*.f64 1/6 x))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (*.f64 x x))
(*.f64 x (*.f64 1/6 x))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (*.f64 x x))
(*.f64 x (*.f64 1/6 x))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (*.f64 x x))
(*.f64 x (*.f64 1/6 x))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (*.f64 x x))
(*.f64 x (*.f64 1/6 x))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (*.f64 x x))
(*.f64 x (*.f64 1/6 x))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (*.f64 x x))
(*.f64 x (*.f64 1/6 x))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (*.f64 x x))
(*.f64 x (*.f64 1/6 x))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (*.f64 x x))
(*.f64 x (*.f64 1/6 x))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (*.f64 x x))
(*.f64 x (*.f64 1/6 x))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (*.f64 x x))
(*.f64 x (*.f64 1/6 x))

localize4.0ms (0.1%)

Local error

Found 1 expressions with local error:

NewErrorProgram
0.2b
(*.f64 1/6 (*.f64 x x))
Compiler

Compiled 11 to 5 computations (54.5% saved)

series1.0ms (0%)

Counts
1 → 12
Calls

3 calls:

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

rewrite47.0ms (1.4%)

Algorithm
batch-egg-rewrite
Rules
432×pow1_binary64
421×add-sqr-sqrt_binary64
411×*-un-lft-identity_binary64
402×add-log-exp_binary64
402×log1p-expm1-u_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
057
11027
211487
Stop Event
node limit
Counts
1 → 14
Calls
Call 1
Inputs
(*.f64 1/6 (*.f64 x x))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 1/6 (*.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (*.f64 (cbrt.f64 (pow.f64 (exp.f64 1/6) (*.f64 x x))) (cbrt.f64 (pow.f64 (exp.f64 1/6) (*.f64 x x))))) (log.f64 (cbrt.f64 (pow.f64 (exp.f64 1/6) (*.f64 x x)))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (pow.f64 (exp.f64 1/6) (*.f64 x x)))) (log.f64 (sqrt.f64 (pow.f64 (exp.f64 1/6) (*.f64 x x)))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 1/6 (*.f64 x x))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 1/6 (*.f64 x x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 1/6 (*.f64 x x)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 1/6 (*.f64 x x))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 x (sqrt.f64 1/6)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (*.f64 1/36 (pow.f64 x 4)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 1/6) (*.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 1/6 (*.f64 x x)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 1/6 (*.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 1/6 (*.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 1/6 (*.f64 x x))))))))

simplify176.0ms (5.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
0684
11284
22384
34484
410584
533184
6125084
7212384
8228784
9247184
10267984
11297684
12337184
13385284
14441884
15510284
16593584
17632784
18661984
19689584
20696984
21700384
22794484
Stop Event
node limit
Counts
26 → 16
Calls
Call 1
Inputs
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (pow.f64 x 2))
Outputs
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (*.f64 x x))
(*.f64 x (*.f64 1/6 x))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (*.f64 x x))
(*.f64 x (*.f64 1/6 x))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (*.f64 x x))
(*.f64 x (*.f64 1/6 x))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (*.f64 x x))
(*.f64 x (*.f64 1/6 x))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (*.f64 x x))
(*.f64 x (*.f64 1/6 x))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (*.f64 x x))
(*.f64 x (*.f64 1/6 x))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (*.f64 x x))
(*.f64 x (*.f64 1/6 x))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (*.f64 x x))
(*.f64 x (*.f64 1/6 x))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (*.f64 x x))
(*.f64 x (*.f64 1/6 x))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (*.f64 x x))
(*.f64 x (*.f64 1/6 x))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (*.f64 x x))
(*.f64 x (*.f64 1/6 x))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (*.f64 x x))
(*.f64 x (*.f64 1/6 x))

localize4.0ms (0.1%)

Local error

Found 1 expressions with local error:

NewErrorProgram
0.2b
(/.f64 (*.f64 x x) 6)
Compiler

Compiled 11 to 5 computations (54.5% saved)

series1.0ms (0%)

Counts
1 → 12
Calls

3 calls:

TimeVariablePointExpression
0.0ms
x
@0
(/.f64 (*.f64 x x) 6)
0.0ms
x
@inf
(/.f64 (*.f64 x x) 6)
0.0ms
x
@-inf
(/.f64 (*.f64 x x) 6)

rewrite48.0ms (1.5%)

Algorithm
batch-egg-rewrite
Rules
495×pow1_binary64
490×add-sqr-sqrt_binary64
469×add-log-exp_binary64
469×log1p-expm1-u_binary64
469×expm1-log1p-u_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
057
11107
213207
Stop Event
node limit
Counts
1 → 25
Calls
Call 1
Inputs
(/.f64 (*.f64 x x) 6)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 x (*.f64 x 1/6))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 x (/.f64 1 (/.f64 6 x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 x (*.f64 x 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x x) 1/6)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x (*.f64 x 1/6)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (*.f64 x (*.f64 x 1/6)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (pow.f64 x 4)) (*.f64 (pow.f64 (cbrt.f64 x) 2) 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 x (*.f64 x 1/6))) (cbrt.f64 (*.f64 (pow.f64 x 4) 1/36)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 (pow.f64 x 4) 1/36)) (cbrt.f64 (*.f64 x (*.f64 x 1/6))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x (sqrt.f64 1/6)) (*.f64 x (sqrt.f64 1/6)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x (neg.f64 x)) -1/6)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/6 (*.f64 x x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 x 6) x)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 x (*.f64 x 1/6)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 x (*.f64 x 1/6)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 x (*.f64 x 1/6))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 x (sqrt.f64 1/6)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 6 (*.f64 x x)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (/.f64 (*.f64 x x) -6))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (*.f64 (pow.f64 x 4) 1/36))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 (*.f64 x x)) 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 x (*.f64 x 1/6)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 x (*.f64 x 1/6))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 x (*.f64 x 1/6))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 x (*.f64 x 1/6))))))))

simplify173.0ms (5.2%)

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
0684
11284
22384
34484
410584
533184
6125084
7212384
8228784
9247184
10267984
11297684
12337184
13385284
14441884
15510284
16593584
17632784
18661984
19689584
20696984
21700384
22794484
Stop Event
node limit
Counts
37 → 27
Calls
Call 1
Inputs
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (pow.f64 x 2))
Outputs
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (*.f64 x x))
(*.f64 x (*.f64 1/6 x))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (*.f64 x x))
(*.f64 x (*.f64 1/6 x))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (*.f64 x x))
(*.f64 x (*.f64 1/6 x))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (*.f64 x x))
(*.f64 x (*.f64 1/6 x))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (*.f64 x x))
(*.f64 x (*.f64 1/6 x))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (*.f64 x x))
(*.f64 x (*.f64 1/6 x))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (*.f64 x x))
(*.f64 x (*.f64 1/6 x))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (*.f64 x x))
(*.f64 x (*.f64 1/6 x))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (*.f64 x x))
(*.f64 x (*.f64 1/6 x))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (*.f64 x x))
(*.f64 x (*.f64 1/6 x))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (*.f64 x x))
(*.f64 x (*.f64 1/6 x))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (*.f64 x x))
(*.f64 x (*.f64 1/6 x))

localize7.0ms (0.2%)

Local error

Found 2 expressions with local error:

NewErrorProgram
0.1b
(fma.f64 x (*.f64 1/6 x) -1/2)
0.3b
(*.f64 1/6 x)
Compiler

Compiled 13 to 9 computations (30.8% saved)

series3.0ms (0.1%)

Counts
2 → 12
Calls

6 calls:

TimeVariablePointExpression
1.0ms
x
@-inf
(fma.f64 x (*.f64 1/6 x) -1/2)
1.0ms
x
@0
(*.f64 1/6 x)
0.0ms
x
@-inf
(*.f64 1/6 x)
0.0ms
x
@0
(fma.f64 x (*.f64 1/6 x) -1/2)
0.0ms
x
@inf
(fma.f64 x (*.f64 1/6 x) -1/2)

rewrite48.0ms (1.5%)

Algorithm
batch-egg-rewrite
Rules
534×pow1_binary64
522×add-sqr-sqrt_binary64
497×add-log-exp_binary64
497×log1p-expm1-u_binary64
497×expm1-log1p-u_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0612
112212
2132712
Stop Event
node limit
Counts
2 → 32
Calls
Call 1
Inputs
(*.f64 1/6 x)
(fma.f64 x (*.f64 1/6 x) -1/2)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 1/6 x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 1/6 x) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 1/6 x) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 1/6 x)) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 1/6 x)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 1/6 x) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 1/6) x))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 1/6 x) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 1/6 x)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 1/6 x)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 1/6 x)))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 -1/2 (*.f64 x (*.f64 1/6 x)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 x (*.f64 1/6 x)) -1/2)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (*.f64 x (*.f64 1/6 x)) 1) -1/2)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (fma.f64 x (*.f64 1/6 x) -1/2)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (fma.f64 x (*.f64 1/6 x) -1/2) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (fma.f64 x (*.f64 1/6 x) -1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (fma.f64 x (*.f64 1/6 x) -1/2)) (pow.f64 (cbrt.f64 (fma.f64 x (*.f64 1/6 x) -1/2)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (fma.f64 x (*.f64 1/6 x) -1/2)) 2) (cbrt.f64 (fma.f64 x (*.f64 1/6 x) -1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (fma.f64 x (*.f64 1/6 x) -1/2)) (sqrt.f64 (fma.f64 x (*.f64 1/6 x) -1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (*.f64 x (*.f64 1/6 x)) 3) -1/8) (+.f64 (*.f64 (*.f64 x (*.f64 1/6 x)) (*.f64 x (*.f64 1/6 x))) (-.f64 1/4 (*.f64 (*.f64 x (*.f64 1/6 x)) -1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 (*.f64 x (*.f64 1/6 x)) (*.f64 x (*.f64 1/6 x))) 1/4) (-.f64 (*.f64 x (*.f64 1/6 x)) -1/2))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (fma.f64 x (*.f64 1/6 x) -1/2) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (fma.f64 x (*.f64 1/6 x) -1/2) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (fma.f64 x (*.f64 1/6 x) -1/2)) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (fma.f64 x (*.f64 1/6 x) -1/2)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (fma.f64 x (*.f64 1/6 x) -1/2) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (fma.f64 x (*.f64 1/6 x) -1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (fma.f64 x (*.f64 1/6 x) -1/2) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (fma.f64 x (*.f64 1/6 x) -1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (fma.f64 x (*.f64 1/6 x) -1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (fma.f64 x (*.f64 1/6 x) -1/2)))))))

simplify159.0ms (4.8%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
0987
11887
23087
35487
411787
535287
6129387
7218987
8235387
9253787
10274587
11304287
12343587
13391887
14448687
15517487
16600987
17640387
18669187
19696587
20703787
21707187
Stop Event
node limit
Counts
44 → 37
Calls
Call 1
Inputs
-1/2
(-.f64 (*.f64 1/6 (pow.f64 x 2)) 1/2)
(-.f64 (*.f64 1/6 (pow.f64 x 2)) 1/2)
(-.f64 (*.f64 1/6 (pow.f64 x 2)) 1/2)
(*.f64 1/6 (pow.f64 x 2))
(-.f64 (*.f64 1/6 (pow.f64 x 2)) 1/2)
(-.f64 (*.f64 1/6 (pow.f64 x 2)) 1/2)
(-.f64 (*.f64 1/6 (pow.f64 x 2)) 1/2)
(*.f64 1/6 (pow.f64 x 2))
(-.f64 (*.f64 1/6 (pow.f64 x 2)) 1/2)
(-.f64 (*.f64 1/6 (pow.f64 x 2)) 1/2)
(-.f64 (*.f64 1/6 (pow.f64 x 2)) 1/2)
Outputs
-1/2
(-.f64 (*.f64 1/6 (pow.f64 x 2)) 1/2)
(fma.f64 1/6 (*.f64 x x) -1/2)
(fma.f64 x (*.f64 1/6 x) -1/2)
(-.f64 (*.f64 1/6 (pow.f64 x 2)) 1/2)
(fma.f64 1/6 (*.f64 x x) -1/2)
(fma.f64 x (*.f64 1/6 x) -1/2)
(-.f64 (*.f64 1/6 (pow.f64 x 2)) 1/2)
(fma.f64 1/6 (*.f64 x x) -1/2)
(fma.f64 x (*.f64 1/6 x) -1/2)
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (*.f64 x x))
(-.f64 (*.f64 1/6 (pow.f64 x 2)) 1/2)
(fma.f64 1/6 (*.f64 x x) -1/2)
(fma.f64 x (*.f64 1/6 x) -1/2)
(-.f64 (*.f64 1/6 (pow.f64 x 2)) 1/2)
(fma.f64 1/6 (*.f64 x x) -1/2)
(fma.f64 x (*.f64 1/6 x) -1/2)
(-.f64 (*.f64 1/6 (pow.f64 x 2)) 1/2)
(fma.f64 1/6 (*.f64 x x) -1/2)
(fma.f64 x (*.f64 1/6 x) -1/2)
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (*.f64 x x))
(-.f64 (*.f64 1/6 (pow.f64 x 2)) 1/2)
(fma.f64 1/6 (*.f64 x x) -1/2)
(fma.f64 x (*.f64 1/6 x) -1/2)
(-.f64 (*.f64 1/6 (pow.f64 x 2)) 1/2)
(fma.f64 1/6 (*.f64 x x) -1/2)
(fma.f64 x (*.f64 1/6 x) -1/2)
(-.f64 (*.f64 1/6 (pow.f64 x 2)) 1/2)
(fma.f64 1/6 (*.f64 x x) -1/2)
(fma.f64 x (*.f64 1/6 x) -1/2)

localize20.0ms (0.6%)

Local error

Found 2 expressions with local error:

NewErrorProgram
0.1b
(/.f64 (/.f64 (+.f64 (pow.f64 x 4) -9) (-.f64 (*.f64 x x) -3)) 6)
8.0b
(/.f64 (+.f64 (pow.f64 x 4) -9) (-.f64 (*.f64 x x) -3))
Compiler

Compiled 46 to 30 computations (34.8% saved)

series3.0ms (0.1%)

Counts
2 → 24
Calls

6 calls:

TimeVariablePointExpression
1.0ms
x
@0
(/.f64 (+.f64 (pow.f64 x 4) -9) (-.f64 (*.f64 x x) -3))
1.0ms
x
@inf
(/.f64 (+.f64 (pow.f64 x 4) -9) (-.f64 (*.f64 x x) -3))
1.0ms
x
@-inf
(/.f64 (+.f64 (pow.f64 x 4) -9) (-.f64 (*.f64 x x) -3))
0.0ms
x
@inf
(/.f64 (/.f64 (+.f64 (pow.f64 x 4) -9) (-.f64 (*.f64 x x) -3)) 6)
0.0ms
x
@0
(/.f64 (/.f64 (+.f64 (pow.f64 x 4) -9) (-.f64 (*.f64 x x) -3)) 6)

rewrite67.0ms (2%)

Algorithm
batch-egg-rewrite
Rules
550×log-prod_binary64
331×pow2_binary64
229×expm1-udef_binary64
229×log1p-udef_binary64
226×pow1/3_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
01231
128713
2365813
Stop Event
node limit
Counts
2 → 88
Calls
Call 1
Inputs
(/.f64 (+.f64 (pow.f64 x 4) -9) (-.f64 (*.f64 x x) -3))
(/.f64 (/.f64 (+.f64 (pow.f64 x 4) -9) (-.f64 (*.f64 x x) -3)) 6)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 x x) -3)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 -3 (*.f64 x x))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (fma.f64 x x -3))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (exp.f64 (fma.f64 x x -3))) 2)) (log.f64 (cbrt.f64 (exp.f64 (fma.f64 x x -3)))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (exp.f64 (fma.f64 x x -3)))) (log.f64 (sqrt.f64 (exp.f64 (fma.f64 x x -3)))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 x x) 3)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (fma.f64 x x -3))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (pow.f64 x 4) -9) (/.f64 1 (fma.f64 x x 3)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (fma.f64 x x -3) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (fma.f64 x x -3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (+.f64 (pow.f64 x 4) -9)) 2) (*.f64 (cbrt.f64 (+.f64 (pow.f64 x 4) -9)) (/.f64 1 (fma.f64 x x 3))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (fma.f64 x x -3)) (pow.f64 (cbrt.f64 (fma.f64 x x -3)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (fma.f64 x x -3)) 2) (cbrt.f64 (fma.f64 x x -3)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (+.f64 (pow.f64 x 4) -9)) (*.f64 (sqrt.f64 (+.f64 (pow.f64 x 4) -9)) (/.f64 1 (fma.f64 x x 3))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (fma.f64 x x -3)) (sqrt.f64 (fma.f64 x x -3)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 9 (neg.f64 (pow.f64 x 4))) (/.f64 1 (neg.f64 (fma.f64 x x 3))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (fma.f64 x x 3)) (+.f64 (pow.f64 x 4) -9))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 (cbrt.f64 (+.f64 (pow.f64 x 4) -9)) 2) 1) (/.f64 (cbrt.f64 (+.f64 (pow.f64 x 4) -9)) (fma.f64 x x 3)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (sqrt.f64 (+.f64 (pow.f64 x 4) -9)) 1) (/.f64 (sqrt.f64 (+.f64 (pow.f64 x 4) -9)) (fma.f64 x x 3)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (fma.f64 x x 3)) -2) (/.f64 (+.f64 (pow.f64 x 4) -9) (cbrt.f64 (fma.f64 x x 3))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 (cbrt.f64 (+.f64 (pow.f64 x 4) -9)) 2) (pow.f64 (cbrt.f64 (fma.f64 x x 3)) 2)) (cbrt.f64 (fma.f64 x x -3)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (sqrt.f64 (+.f64 (pow.f64 x 4) -9)) (pow.f64 (cbrt.f64 (fma.f64 x x 3)) 2)) (/.f64 (sqrt.f64 (+.f64 (pow.f64 x 4) -9)) (cbrt.f64 (fma.f64 x x 3))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (fma.f64 x x 3) -1/2) (/.f64 (+.f64 (pow.f64 x 4) -9) (sqrt.f64 (fma.f64 x x 3))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 (cbrt.f64 (+.f64 (pow.f64 x 4) -9)) 2) (sqrt.f64 (fma.f64 x x 3))) (/.f64 (cbrt.f64 (+.f64 (pow.f64 x 4) -9)) (sqrt.f64 (fma.f64 x x 3))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (+.f64 (pow.f64 x 4) -9) (+.f64 (pow.f64 x 6) 27)) (+.f64 (pow.f64 x 4) (fma.f64 (*.f64 x x) -3 9)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (fma.f64 x x -3) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (fma.f64 x x -3) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (fma.f64 x x -3) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (fma.f64 x x -3)) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (fma.f64 x x -3)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 1 (fma.f64 x x -3)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (pow.f64 (+.f64 (pow.f64 x 4) -9) 3) (pow.f64 (fma.f64 x x 3) 3)) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (/.f64 1 (fma.f64 x x -3)) 1) -1)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (/.f64 (+.f64 (pow.f64 x 4) -9) (neg.f64 (fma.f64 x x 3))))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (fma.f64 x x -3) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (fma.f64 x x -3)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (fma.f64 x x -3))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (fma.f64 x x -3) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (/.f64 (pow.f64 (+.f64 (pow.f64 x 4) -9) 3) (pow.f64 (fma.f64 x x 3) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (fma.f64 x x -3)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (fma.f64 x x -3)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (fma.f64 x x -3)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (fma.f64 x x -3)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 x x -3)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 x x) 1 -3)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (*.f64 x x) -3)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 x) 2) (pow.f64 (cbrt.f64 x) 4) -3)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 x) 2) (*.f64 (cbrt.f64 x) x) -3)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 x) 4) (pow.f64 (cbrt.f64 x) 2) -3)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 x) (*.f64 (sqrt.f64 x) x) -3)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 x (sqrt.f64 x)) (sqrt.f64 x) -3)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (pow.f64 (cbrt.f64 x) 8)) (sqrt.f64 (pow.f64 (cbrt.f64 x) 4)) -3)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 x (pow.f64 (cbrt.f64 x) 2)) (cbrt.f64 x) -3)))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 (fma.f64 x x -3) 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (pow.f64 (exp.f64 (fma.f64 x x -3)) 1/6)) 2)) (log.f64 (cbrt.f64 (pow.f64 (exp.f64 (fma.f64 x x -3)) 1/6))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (pow.f64 (exp.f64 (fma.f64 x x -3)) 1/6))) (log.f64 (sqrt.f64 (pow.f64 (exp.f64 (fma.f64 x x -3)) 1/6))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (*.f64 (fma.f64 x x -3) 1/6))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (pow.f64 x 4) -9) (/.f64 1 (*.f64 (fma.f64 x x 3) 6)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (pow.f64 x 4) -9) (*.f64 (/.f64 1 (fma.f64 x x 3)) 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (fma.f64 x x -3) 1/6)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (fma.f64 x x -3) 1/6) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (*.f64 (fma.f64 x x -3) 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 (fma.f64 x x -3) 1/6)) (cbrt.f64 (*.f64 (pow.f64 (fma.f64 x x -3) 2) 1/36)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 (pow.f64 (fma.f64 x x -3) 2) 1/36)) (cbrt.f64 (*.f64 (fma.f64 x x -3) 1/6)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (fma.f64 x x -3)) 2) (*.f64 (cbrt.f64 (fma.f64 x x -3)) 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 (fma.f64 x x -3) 1/6)) (sqrt.f64 (*.f64 (fma.f64 x x -3) 1/6)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (fma.f64 x x -3)) (*.f64 (sqrt.f64 (fma.f64 x x -3)) 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (neg.f64 (fma.f64 x x -3)) -1/6)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/6 (fma.f64 x x -3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 (cbrt.f64 (+.f64 (pow.f64 x 4) -9)) 2) 6) (/.f64 (cbrt.f64 (+.f64 (pow.f64 x 4) -9)) (fma.f64 x x 3)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (sqrt.f64 (+.f64 (pow.f64 x 4) -9)) 6) (/.f64 (sqrt.f64 (+.f64 (pow.f64 x 4) -9)) (fma.f64 x x 3)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (fma.f64 x x -3) 1/6) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (pow.f64 (fma.f64 x x -3) 2) 1/36) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 (fma.f64 x x -3) 1/6) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 (fma.f64 x x -3) 1/6)) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 (fma.f64 x x -3) 1/6)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 6 (fma.f64 x x -3)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (*.f64 (fma.f64 x x 3) 6) (+.f64 (pow.f64 x 4) -9)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (/.f64 6 (fma.f64 x x -3)) 1) -1)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (/.f64 (fma.f64 x x -3) -6))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (*.f64 (pow.f64 (fma.f64 x x -3) 2) 1/36))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 (fma.f64 x x -3)) 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (*.f64 (fma.f64 x x -3) 1/6))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 (fma.f64 x x -3) 1/6) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 (fma.f64 x x -3) 1/6)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 (fma.f64 x x -3) 1/6)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 (fma.f64 x x -3) 1/6)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (*.f64 (fma.f64 x x -3) 1/6)) 1))))))

simplify167.0ms (5.1%)

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

Useful iterations: 1 (0.0ms)

IterNodesCost
012159
123141
238141
363141
4128141
5365141
61301141
72224141
82408141
92592141
102800141
113103141
123498141
133979141
144547141
155229141
166066141
176458141
186746141
197024141
207098141
217132141
Stop Event
node limit
Counts
112 → 97
Calls
Call 1
Inputs
-3
(-.f64 (pow.f64 x 2) 3)
(-.f64 (pow.f64 x 2) 3)
(-.f64 (pow.f64 x 2) 3)
(pow.f64 x 2)
(-.f64 (pow.f64 x 2) 3)
(-.f64 (pow.f64 x 2) 3)
(-.f64 (pow.f64 x 2) 3)
(pow.f64 x 2)
(-.f64 (pow.f64 x 2) 3)
(-.f64 (pow.f64 x 2) 3)
(-.f64 (pow.f64 x 2) 3)
-1/2
(-.f64 (*.f64 1/6 (pow.f64 x 2)) 1/2)
(-.f64 (*.f64 1/6 (pow.f64 x 2)) 1/2)
(-.f64 (*.f64 1/6 (pow.f64 x 2)) 1/2)
(*.f64 1/6 (pow.f64 x 2))
(-.f64 (*.f64 1/6 (pow.f64 x 2)) 1/2)
(-.f64 (*.f64 1/6 (pow.f64 x 2)) 1/2)
(-.f64 (*.f64 1/6 (pow.f64 x 2)) 1/2)
(*.f64 1/6 (pow.f64 x 2))
(-.f64 (*.f64 1/6 (pow.f64 x 2)) 1/2)
(-.f64 (*.f64 1/6 (pow.f64 x 2)) 1/2)
(-.f64 (*.f64 1/6 (pow.f64 x 2)) 1/2)
Outputs
-3
(-.f64 (pow.f64 x 2) 3)
(+.f64 (*.f64 x x) -3)
(fma.f64 x x -3)
(-.f64 (pow.f64 x 2) 3)
(+.f64 (*.f64 x x) -3)
(fma.f64 x x -3)
(-.f64 (pow.f64 x 2) 3)
(+.f64 (*.f64 x x) -3)
(fma.f64 x x -3)
(pow.f64 x 2)
(*.f64 x x)
(-.f64 (pow.f64 x 2) 3)
(+.f64 (*.f64 x x) -3)
(fma.f64 x x -3)
(-.f64 (pow.f64 x 2) 3)
(+.f64 (*.f64 x x) -3)
(fma.f64 x x -3)
(-.f64 (pow.f64 x 2) 3)
(+.f64 (*.f64 x x) -3)
(fma.f64 x x -3)
(pow.f64 x 2)
(*.f64 x x)
(-.f64 (pow.f64 x 2) 3)
(+.f64 (*.f64 x x) -3)
(fma.f64 x x -3)
(-.f64 (pow.f64 x 2) 3)
(+.f64 (*.f64 x x) -3)
(fma.f64 x x -3)
(-.f64 (pow.f64 x 2) 3)
(+.f64 (*.f64 x x) -3)
(fma.f64 x x -3)
-1/2
(-.f64 (*.f64 1/6 (pow.f64 x 2)) 1/2)
(fma.f64 1/6 (*.f64 x x) -1/2)
(fma.f64 (*.f64 x x) 1/6 -1/2)
(fma.f64 x (*.f64 x 1/6) -1/2)
(-.f64 (*.f64 1/6 (pow.f64 x 2)) 1/2)
(fma.f64 1/6 (*.f64 x x) -1/2)
(fma.f64 (*.f64 x x) 1/6 -1/2)
(fma.f64 x (*.f64 x 1/6) -1/2)
(-.f64 (*.f64 1/6 (pow.f64 x 2)) 1/2)
(fma.f64 1/6 (*.f64 x x) -1/2)
(fma.f64 (*.f64 x x) 1/6 -1/2)
(fma.f64 x (*.f64 x 1/6) -1/2)
(*.f64 1/6 (pow.f64 x 2))
(*.f64 (*.f64 x x) 1/6)
(*.f64 x (*.f64 x 1/6))
(-.f64 (*.f64 1/6 (pow.f64 x 2)) 1/2)
(fma.f64 1/6 (*.f64 x x) -1/2)
(fma.f64 (*.f64 x x) 1/6 -1/2)
(fma.f64 x (*.f64 x 1/6) -1/2)
(-.f64 (*.f64 1/6 (pow.f64 x 2)) 1/2)
(fma.f64 1/6 (*.f64 x x) -1/2)
(fma.f64 (*.f64 x x) 1/6 -1/2)
(fma.f64 x (*.f64 x 1/6) -1/2)
(-.f64 (*.f64 1/6 (pow.f64 x 2)) 1/2)
(fma.f64 1/6 (*.f64 x x) -1/2)
(fma.f64 (*.f64 x x) 1/6 -1/2)
(fma.f64 x (*.f64 x 1/6) -1/2)
(*.f64 1/6 (pow.f64 x 2))
(*.f64 (*.f64 x x) 1/6)
(*.f64 x (*.f64 x 1/6))
(-.f64 (*.f64 1/6 (pow.f64 x 2)) 1/2)
(fma.f64 1/6 (*.f64 x x) -1/2)
(fma.f64 (*.f64 x x) 1/6 -1/2)
(fma.f64 x (*.f64 x 1/6) -1/2)
(-.f64 (*.f64 1/6 (pow.f64 x 2)) 1/2)
(fma.f64 1/6 (*.f64 x x) -1/2)
(fma.f64 (*.f64 x x) 1/6 -1/2)
(fma.f64 x (*.f64 x 1/6) -1/2)
(-.f64 (*.f64 1/6 (pow.f64 x 2)) 1/2)
(fma.f64 1/6 (*.f64 x x) -1/2)
(fma.f64 (*.f64 x x) 1/6 -1/2)
(fma.f64 x (*.f64 x 1/6) -1/2)

eval65.0ms (2%)

Compiler

Compiled 2299 to 1705 computations (25.8% saved)

prune30.0ms (0.9%)

Pruning

8 alts after pruning (3 fresh and 5 done)

PrunedKeptTotal
New2143217
Fresh202
Picked011
Done145
Total2178225
Error
0b
Counts
225 → 8
Alt Table
Click to see full alt table
StatusErrorProgram
0.1b
(/.f64 (-.f64 (*.f64 x x) 3) 6)
39.1b
(*.f64 1/6 (*.f64 x x))
39.1b
(*.f64 (/.f64 x 6) x)
8.6b
(/.f64 (/.f64 (+.f64 (pow.f64 x 4) -9) (-.f64 (*.f64 x x) -3)) 6)
25.0b
-1/2
39.1b
(*.f64 x (*.f64 x 1/6))
0.1b
(-.f64 (/.f64 x (/.f64 6 x)) 1/2)
39.1b
(/.f64 (*.f64 x x) 6)
Compiler

Compiled 56 to 41 computations (26.8% saved)

localize6.0ms (0.2%)

Local error

Found 2 expressions with local error:

NewErrorProgram
0.1b
(*.f64 x (*.f64 x 1/6))
0.3b
(*.f64 x 1/6)
Compiler

Compiled 11 to 7 computations (36.4% saved)

series2.0ms (0%)

Counts
2 → 24
Calls

6 calls:

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

rewrite45.0ms (1.4%)

Algorithm
batch-egg-rewrite
Rules
448×pow1_binary64
434×add-sqr-sqrt_binary64
425×*-un-lft-identity_binary64
415×add-log-exp_binary64
415×log1p-expm1-u_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

simplify179.0ms (5.4%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
07132
114132
223132
342132
4102132
5321132
61252132
72126132
82290132
92474132
102682132
112978132
123371132
133852132
144418132
155106132
165941132
176333132
186623132
196895132
206967132
217003132
227944132
Stop Event
node limit
Counts
46 → 25
Calls
Call 1
Inputs
(*.f64 1/6 x)
(*.f64 1/6 x)
(*.f64 1/6 x)
(*.f64 1/6 x)
(*.f64 1/6 x)
(*.f64 1/6 x)
(*.f64 1/6 x)
(*.f64 1/6 x)
(*.f64 1/6 x)
(*.f64 1/6 x)
(*.f64 1/6 x)
(*.f64 1/6 x)
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (pow.f64 x 2))
Outputs
(*.f64 1/6 x)
(*.f64 1/6 x)
(*.f64 1/6 x)
(*.f64 1/6 x)
(*.f64 1/6 x)
(*.f64 1/6 x)
(*.f64 1/6 x)
(*.f64 1/6 x)
(*.f64 1/6 x)
(*.f64 1/6 x)
(*.f64 1/6 x)
(*.f64 1/6 x)
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (*.f64 x x))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (*.f64 x x))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (*.f64 x x))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (*.f64 x x))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (*.f64 x x))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (*.f64 x x))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (*.f64 x x))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (*.f64 x x))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (*.f64 x x))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (*.f64 x x))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (*.f64 x x))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (*.f64 x x))

localize5.0ms (0.2%)

Local error

Found 1 expressions with local error:

NewErrorProgram
0.1b
(*.f64 (/.f64 x 6) x)
Compiler

Compiled 11 to 7 computations (36.4% saved)

series1.0ms (0%)

Counts
1 → 12
Calls

3 calls:

TimeVariablePointExpression
0.0ms
x
@0
(*.f64 (/.f64 x 6) x)
0.0ms
x
@-inf
(*.f64 (/.f64 x 6) x)
0.0ms
x
@inf
(*.f64 (/.f64 x 6) x)

rewrite46.0ms (1.4%)

Algorithm
batch-egg-rewrite
Rules
503×pow1_binary64
495×add-sqr-sqrt_binary64
474×add-log-exp_binary64
474×log1p-expm1-u_binary64
474×expm1-log1p-u_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

simplify172.0ms (5.2%)

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
0684
11284
22384
34484
410584
533184
6125084
7212384
8228784
9247184
10267984
11297684
12337184
13385284
14441884
15510284
16593584
17632784
18661984
19689584
20696984
21700384
22794484
Stop Event
node limit
Counts
29 → 19
Calls
Call 1
Inputs
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (pow.f64 x 2))
Outputs
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (*.f64 x x))
(*.f64 x (*.f64 1/6 x))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (*.f64 x x))
(*.f64 x (*.f64 1/6 x))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (*.f64 x x))
(*.f64 x (*.f64 1/6 x))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (*.f64 x x))
(*.f64 x (*.f64 1/6 x))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (*.f64 x x))
(*.f64 x (*.f64 1/6 x))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (*.f64 x x))
(*.f64 x (*.f64 1/6 x))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (*.f64 x x))
(*.f64 x (*.f64 1/6 x))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (*.f64 x x))
(*.f64 x (*.f64 1/6 x))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (*.f64 x x))
(*.f64 x (*.f64 1/6 x))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (*.f64 x x))
(*.f64 x (*.f64 1/6 x))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (*.f64 x x))
(*.f64 x (*.f64 1/6 x))
(*.f64 1/6 (pow.f64 x 2))
(*.f64 1/6 (*.f64 x x))
(*.f64 x (*.f64 1/6 x))

eval10.0ms (0.3%)

Compiler

Compiled 312 to 221 computations (29.2% saved)

prune9.0ms (0.3%)

Pruning

9 alts after pruning (2 fresh and 7 done)

PrunedKeptTotal
New43144
Fresh011
Picked011
Done066
Total43952
Error
0b
Counts
52 → 9
Alt Table
Click to see full alt table
StatusErrorProgram
0.1b
(/.f64 (-.f64 (*.f64 x x) 3) 6)
39.1b
(*.f64 1/6 (*.f64 x x))
39.1b
(*.f64 (/.f64 x 6) x)
8.6b
(/.f64 (/.f64 (+.f64 (pow.f64 x 4) -9) (-.f64 (*.f64 x x) -3)) 6)
25.0b
-1/2
39.1b
(*.f64 x (*.f64 x 1/6))
0.1b
(-.f64 (/.f64 x (/.f64 6 x)) 1/2)
39.1b
(/.f64 x (/.f64 6 x))
39.1b
(/.f64 (*.f64 x x) 6)
Compiler

Compiled 62 to 45 computations (27.4% saved)

localize5.0ms (0.2%)

Local error

Found 1 expressions with local error:

NewErrorProgram
0.2b
(/.f64 x (/.f64 6 x))
Compiler

Compiled 11 to 7 computations (36.4% saved)

eval10.0ms (0.3%)

Compiler

Compiled 379 to 258 computations (31.9% saved)

prune8.0ms (0.3%)

Pruning

9 alts after pruning (1 fresh and 8 done)

PrunedKeptTotal
New40040
Fresh011
Picked011
Done077
Total40949
Error
0b
Counts
49 → 9
Alt Table
Click to see full alt table
StatusErrorProgram
0.1b
(/.f64 (-.f64 (*.f64 x x) 3) 6)
39.1b
(*.f64 1/6 (*.f64 x x))
39.1b
(*.f64 (/.f64 x 6) x)
8.6b
(/.f64 (/.f64 (+.f64 (pow.f64 x 4) -9) (-.f64 (*.f64 x x) -3)) 6)
25.0b
-1/2
39.1b
(*.f64 x (*.f64 x 1/6))
0.1b
(-.f64 (/.f64 x (/.f64 6 x)) 1/2)
39.1b
(/.f64 x (/.f64 6 x))
39.1b
(/.f64 (*.f64 x x) 6)
Compiler

Compiled 62 to 45 computations (27.4% saved)

regimes35.0ms (1.1%)

Counts
13 → 1
Calls
Call 1
Inputs
-1/2
-1/2
(/.f64 x (/.f64 6 x))
(*.f64 (/.f64 x 6) x)
(*.f64 x (*.f64 x 1/6))
(*.f64 1/6 (*.f64 x x))
(/.f64 (*.f64 x x) 6)
(-.f64 (/.f64 x (/.f64 6 x)) 1/2)
(/.f64 (-.f64 (*.f64 x x) 3) 6)
(fma.f64 x (*.f64 1/6 x) -1/2)
(/.f64 (fma.f64 x x -3) 6)
(/.f64 (/.f64 (+.f64 (pow.f64 x 4) -9) (-.f64 (*.f64 x x) -3)) 6)
(/.f64 (pow.f64 (cbrt.f64 (fma.f64 x x -3)) 3) 6)
Outputs
(/.f64 (fma.f64 x x -3) 6)
Calls

7 calls:

7.0ms
x
5.0ms
(*.f64 x x)
5.0ms
(*.f64 x x)
4.0ms
(-.f64 (*.f64 x x) 3)
3.0ms
(/.f64 (-.f64 (*.f64 x x) 3) 6)
Results
ErrorSegmentsBranch
0.1b1x
0.1b1(/.f64 (-.f64 (*.f64 x x) 3) 6)
0.1b1(/.f64 (-.f64 (*.f64 x x) 3) 6)
0.1b1(-.f64 (*.f64 x x) 3)
0.1b1(-.f64 (*.f64 x x) 3)
0.1b1(*.f64 x x)
0.1b1(*.f64 x x)
Compiler

Compiled 114 to 75 computations (34.2% saved)

regimes21.0ms (0.6%)

Counts
10 → 1
Calls
Call 1
Inputs
-1/2
-1/2
(/.f64 x (/.f64 6 x))
(*.f64 (/.f64 x 6) x)
(*.f64 x (*.f64 x 1/6))
(*.f64 1/6 (*.f64 x x))
(/.f64 (*.f64 x x) 6)
(-.f64 (/.f64 x (/.f64 6 x)) 1/2)
(/.f64 (-.f64 (*.f64 x x) 3) 6)
(fma.f64 x (*.f64 1/6 x) -1/2)
Outputs
(/.f64 (-.f64 (*.f64 x x) 3) 6)
Calls

4 calls:

7.0ms
x
5.0ms
(*.f64 x x)
3.0ms
(-.f64 (*.f64 x x) 3)
3.0ms
(/.f64 (-.f64 (*.f64 x x) 3) 6)
Results
ErrorSegmentsBranch
0.1b1x
0.1b1(/.f64 (-.f64 (*.f64 x x) 3) 6)
0.1b1(-.f64 (*.f64 x x) 3)
0.1b1(*.f64 x x)
Compiler

Compiled 68 to 43 computations (36.8% saved)

regimes16.0ms (0.5%)

Counts
8 → 1
Calls
Call 1
Inputs
-1/2
-1/2
(/.f64 x (/.f64 6 x))
(*.f64 (/.f64 x 6) x)
(*.f64 x (*.f64 x 1/6))
(*.f64 1/6 (*.f64 x x))
(/.f64 (*.f64 x x) 6)
(-.f64 (/.f64 x (/.f64 6 x)) 1/2)
Outputs
(-.f64 (/.f64 x (/.f64 6 x)) 1/2)
Calls

3 calls:

5.0ms
x
5.0ms
(*.f64 x x)
4.0ms
(*.f64 x x)
Results
ErrorSegmentsBranch
0.1b1x
0.1b1(*.f64 x x)
0.1b1(*.f64 x x)
Compiler

Compiled 45 to 27 computations (40% saved)

regimes31.0ms (0.9%)

Counts
7 → 3
Calls
Call 1
Inputs
-1/2
-1/2
(/.f64 x (/.f64 6 x))
(*.f64 (/.f64 x 6) x)
(*.f64 x (*.f64 x 1/6))
(*.f64 1/6 (*.f64 x x))
(/.f64 (*.f64 x x) 6)
Outputs
(/.f64 (*.f64 x x) 6)
-1/2
(*.f64 (/.f64 x 6) x)
Calls

3 calls:

15.0ms
x
7.0ms
(*.f64 x x)
7.0ms
(*.f64 x x)
Results
ErrorSegmentsBranch
1.4b3x
1.4b2(*.f64 x x)
1.4b2(*.f64 x x)
Compiler

Compiled 38 to 22 computations (42.1% saved)

bsearch32.0ms (1%)

Algorithm
binary-search
Steps
TimeLeftRight
16.0ms
3.989449587946897e-6
54.046873490728544
16.0ms
-23.703143750732394
-0.11036669577175189
Compiler

Compiled 12 to 9 computations (25% saved)

regimes32.0ms (1%)

Counts
6 → 2
Calls
Call 1
Inputs
-1/2
-1/2
(/.f64 x (/.f64 6 x))
(*.f64 (/.f64 x 6) x)
(*.f64 x (*.f64 x 1/6))
(*.f64 1/6 (*.f64 x x))
Outputs
-1/2
(*.f64 (/.f64 x 6) x)
Calls

3 calls:

16.0ms
x
7.0ms
(*.f64 x x)
7.0ms
(*.f64 x x)
Results
ErrorSegmentsBranch
1.4b3x
1.4b2(*.f64 x x)
1.4b2(*.f64 x x)
Compiler

Compiled 33 to 20 computations (39.4% saved)

bsearch0.0ms (0%)

Algorithm
left-value
Steps
TimeLeftRight
0.0ms
0.012180807535574436
561.8390236678841
Compiler

Compiled 12 to 9 computations (25% saved)

regimes12.0ms (0.4%)

Counts
3 → 3
Calls
Call 1
Inputs
-1/2
-1/2
(/.f64 x (/.f64 6 x))
Outputs
(/.f64 x (/.f64 6 x))
-1/2
(/.f64 x (/.f64 6 x))
Calls

1 calls:

11.0ms
x
Results
ErrorSegmentsBranch
1.5b3x
Compiler

Compiled 10 to 7 computations (30% saved)

bsearch32.0ms (1%)

Algorithm
binary-search
Steps
TimeLeftRight
16.0ms
3.989449587946897e-6
54.046873490728544
16.0ms
-23.703143750732394
-0.11036669577175189
Compiler

Compiled 12 to 9 computations (25% saved)

regimes5.0ms (0.2%)

Accuracy

Total -0.0b remaining (-0%)

Threshold costs -0.0b (-0%)

Counts
2 → 1
Calls
Call 1
Inputs
-1/2
-1/2
Outputs
-1/2
Calls

1 calls:

4.0ms
x
Results
ErrorSegmentsBranch
25.0b1x
Compiler

Compiled 5 to 4 computations (20% saved)

simplify8.0ms (0.2%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
030100
135100
237100
Stop Event
fuel
saturated
Calls
Call 1
Inputs
(/.f64 (fma.f64 x x -3) 6)
(/.f64 (-.f64 (*.f64 x x) 3) 6)
(-.f64 (/.f64 x (/.f64 6 x)) 1/2)
(if (<=.f64 x -1667960458801683/70368744177664) (/.f64 (*.f64 x x) 6) (if (<=.f64 x 1177477688701159/295147905179352825856) -1/2 (*.f64 (/.f64 x 6) x)))
(if (<=.f64 (*.f64 x x) 5764607523034235/288230376151711744) -1/2 (*.f64 (/.f64 x 6) x))
(if (<=.f64 x -1667960458801683/70368744177664) (/.f64 x (/.f64 6 x)) (if (<=.f64 x 1177477688701159/295147905179352825856) -1/2 (/.f64 x (/.f64 6 x))))
-1/2
Outputs
(/.f64 (fma.f64 x x -3) 6)
(/.f64 (-.f64 (*.f64 x x) 3) 6)
(/.f64 (+.f64 (*.f64 x x) -3) 6)
(/.f64 (+.f64 -3 (*.f64 x x)) 6)
(-.f64 (/.f64 x (/.f64 6 x)) 1/2)
(+.f64 (/.f64 x (/.f64 6 x)) -1/2)
(if (<=.f64 x -1667960458801683/70368744177664) (/.f64 (*.f64 x x) 6) (if (<=.f64 x 1177477688701159/295147905179352825856) -1/2 (*.f64 (/.f64 x 6) x)))
(if (<=.f64 x -1667960458801683/70368744177664) (/.f64 (*.f64 x x) 6) (if (<=.f64 x 1177477688701159/295147905179352825856) -1/2 (*.f64 x (/.f64 x 6))))
(if (<=.f64 (*.f64 x x) 5764607523034235/288230376151711744) -1/2 (*.f64 (/.f64 x 6) x))
(if (<=.f64 (*.f64 x x) 5764607523034235/288230376151711744) -1/2 (*.f64 x (/.f64 x 6)))
(if (<=.f64 x -1667960458801683/70368744177664) (/.f64 x (/.f64 6 x)) (if (<=.f64 x 1177477688701159/295147905179352825856) -1/2 (/.f64 x (/.f64 6 x))))
-1/2
Compiler

Compiled 78 to 56 computations (28.2% saved)

soundness9.0ms (0.3%)

Algorithm
egg-herbie
Rules
fma-neg_binary64
+-commutative_binary64
sub-neg_binary64
*-commutative_binary64
associate-/l*_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
078
1158
2218
3248
4268
5278
Stop Event
saturated
Compiler

Compiled 23 to 17 computations (26.1% saved)

end53.0ms (1.6%)

Compiler

Compiled 72 to 48 computations (33.3% saved)

Profiling

Loading profile data...