Details

Time bar (total: 2.4s)

analyze0.0ms (0%)

Algorithm
search
Search
ProbabilityValidUnknownPreconditionInfiniteDomainCan'tIter
0%0%25%75%0%0%0%0
100%25%0%75%0%0%0%1
Compiler

Compiled 17 to 9 computations (47.1% saved)

sample824.0ms (34.6%)

Results
811.0ms8256×body256valid
Bogosity

preprocess280.0ms (11.7%)

Algorithm
egg-herbie
Rules
3512×sqr-pow
1426×pow-sqr
1160×cube-prod
742×fabs-mul
736×cube-mult
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0619
11715
23415
34715
46615
512415
622215
764415
8104615
9113415
10127115
11143315
12167115
13198415
14237915
15285215
16339115
17403115
18425215
19444815
20458815
21467415
22473215
23562215
24667215
25697415
26726815
27740015
28741015
29741015
011
Stop Event
saturated
node limit
Calls
Call 1
Inputs
0
Outputs
0
Call 2
Inputs
(+.f64 (*.f64 x (*.f64 x x)) (*.f64 x x))
Outputs
(+.f64 (*.f64 x (*.f64 x x)) (*.f64 x x))
(+.f64 (*.f64 x x) (pow.f64 x 3))
(*.f64 x (fma.f64 x x x))
(fma.f64 x x (pow.f64 x 3))
Compiler

Compiled 11 to 5 computations (54.5% saved)

simplify277.0ms (11.6%)

Algorithm
egg-herbie
Rules
3512×sqr-pow
1426×pow-sqr
1160×cube-prod
742×fabs-mul
736×cube-mult
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0619
11715
23415
34715
46615
512415
622215
764415
8104615
9113415
10127115
11143315
12167115
13198415
14237915
15285215
16339115
17403115
18425215
19444815
20458815
21467415
22473215
23562215
24667215
25697415
26726815
27740015
28741015
29741015
Stop Event
node limit
Counts
1 → 4
Calls
Call 1
Inputs
(+.f64 (*.f64 x (*.f64 x x)) (*.f64 x x))
Outputs
(+.f64 (*.f64 x (*.f64 x x)) (*.f64 x x))
(+.f64 (*.f64 x x) (pow.f64 x 3))
(*.f64 x (fma.f64 x x x))
(fma.f64 x x (pow.f64 x 3))

eval1.0ms (0%)

Compiler

Compiled 29 to 12 computations (58.6% saved)

prune2.0ms (0.1%)

Pruning

4 alts after pruning (4 fresh and 0 done)

PrunedKeptTotal
New134
Fresh011
Picked000
Done000
Total145
Error
0%
Counts
5 → 3
Alt Table
Click to see full alt table
StatusErrorProgram
0%
(fma.f64 x x (pow.f64 x 3))
0.01%
(+.f64 (*.f64 x (*.f64 x x)) (*.f64 x x))
0.01%
(*.f64 x (fma.f64 x x x))
Compiler

Compiled 24 to 11 computations (54.2% saved)

localize4.0ms (0.2%)

Local error

Found 1 expressions with local error:

NewErrorProgram
0.01%
(*.f64 x (fma.f64 x x x))
Compiler

Compiled 12 to 3 computations (75% saved)

series2.0ms (0.1%)

Counts
1 → 12
Calls

3 calls:

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

rewrite51.0ms (2.1%)

Algorithm
batch-egg-rewrite
Rules
1134×add-sqr-sqrt
1124×*-un-lft-identity
1060×pow1
1036×add-cube-cbrt
1020×add-cbrt-cube
Iterations

Useful iterations: 0 (0.0ms)

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

simplify52.0ms (2.2%)

Algorithm
egg-herbie
Rules
1132×log-prod
1116×distribute-lft-out
904×*-commutative
896×fma-def
662×+-commutative
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
037420
191336
2303336
31932336
44527336
Stop Event
node limit
Counts
24 → 17
Calls
Call 1
Inputs
(pow.f64 x 2)
(+.f64 (pow.f64 x 2) (pow.f64 x 3))
(+.f64 (pow.f64 x 2) (pow.f64 x 3))
(+.f64 (pow.f64 x 2) (pow.f64 x 3))
(pow.f64 x 3)
(+.f64 (pow.f64 x 2) (pow.f64 x 3))
(+.f64 (pow.f64 x 2) (pow.f64 x 3))
(+.f64 (pow.f64 x 2) (pow.f64 x 3))
(pow.f64 x 3)
(+.f64 (pow.f64 x 2) (pow.f64 x 3))
(+.f64 (pow.f64 x 2) (pow.f64 x 3))
(+.f64 (pow.f64 x 2) (pow.f64 x 3))
(+.f64 (pow.f64 x 3) (*.f64 x x))
(-.f64 (+.f64 1 (*.f64 x (fma.f64 x x x))) 1)
(pow.f64 (*.f64 x (fma.f64 x x x)) 1)
(pow.f64 (sqrt.f64 (*.f64 x (fma.f64 x x x))) 2)
(pow.f64 (cbrt.f64 (*.f64 x (fma.f64 x x x))) 3)
(pow.f64 (pow.f64 (*.f64 x (fma.f64 x x x)) 3) 1/3)
(sqrt.f64 (pow.f64 (*.f64 x (fma.f64 x x x)) 2))
(log.f64 (pow.f64 (exp.f64 x) (fma.f64 x x x)))
(cbrt.f64 (pow.f64 (*.f64 x (fma.f64 x x x)) 3))
(expm1.f64 (log1p.f64 (*.f64 x (fma.f64 x x x))))
(exp.f64 (log.f64 (*.f64 x (fma.f64 x x x))))
(log1p.f64 (expm1.f64 (*.f64 x (fma.f64 x x x))))
Outputs
(pow.f64 x 2)
(*.f64 x x)
(+.f64 (pow.f64 x 2) (pow.f64 x 3))
(+.f64 (pow.f64 x 3) (*.f64 x x))
(*.f64 x (fma.f64 x x x))
(+.f64 (pow.f64 x 2) (pow.f64 x 3))
(+.f64 (pow.f64 x 3) (*.f64 x x))
(*.f64 x (fma.f64 x x x))
(+.f64 (pow.f64 x 2) (pow.f64 x 3))
(+.f64 (pow.f64 x 3) (*.f64 x x))
(*.f64 x (fma.f64 x x x))
(pow.f64 x 3)
(+.f64 (pow.f64 x 2) (pow.f64 x 3))
(+.f64 (pow.f64 x 3) (*.f64 x x))
(*.f64 x (fma.f64 x x x))
(+.f64 (pow.f64 x 2) (pow.f64 x 3))
(+.f64 (pow.f64 x 3) (*.f64 x x))
(*.f64 x (fma.f64 x x x))
(+.f64 (pow.f64 x 2) (pow.f64 x 3))
(+.f64 (pow.f64 x 3) (*.f64 x x))
(*.f64 x (fma.f64 x x x))
(pow.f64 x 3)
(+.f64 (pow.f64 x 2) (pow.f64 x 3))
(+.f64 (pow.f64 x 3) (*.f64 x x))
(*.f64 x (fma.f64 x x x))
(+.f64 (pow.f64 x 2) (pow.f64 x 3))
(+.f64 (pow.f64 x 3) (*.f64 x x))
(*.f64 x (fma.f64 x x x))
(+.f64 (pow.f64 x 2) (pow.f64 x 3))
(+.f64 (pow.f64 x 3) (*.f64 x x))
(*.f64 x (fma.f64 x x x))
(+.f64 (pow.f64 x 3) (*.f64 x x))
(*.f64 x (fma.f64 x x x))
(-.f64 (+.f64 1 (*.f64 x (fma.f64 x x x))) 1)
(+.f64 (pow.f64 x 3) (*.f64 x x))
(*.f64 x (fma.f64 x x x))
(pow.f64 (*.f64 x (fma.f64 x x x)) 1)
(+.f64 (pow.f64 x 3) (*.f64 x x))
(*.f64 x (fma.f64 x x x))
(pow.f64 (sqrt.f64 (*.f64 x (fma.f64 x x x))) 2)
(+.f64 (pow.f64 x 3) (*.f64 x x))
(*.f64 x (fma.f64 x x x))
(pow.f64 (cbrt.f64 (*.f64 x (fma.f64 x x x))) 3)
(+.f64 (pow.f64 x 3) (*.f64 x x))
(*.f64 x (fma.f64 x x x))
(pow.f64 (pow.f64 (*.f64 x (fma.f64 x x x)) 3) 1/3)
(+.f64 (pow.f64 x 3) (*.f64 x x))
(*.f64 x (fma.f64 x x x))
(sqrt.f64 (pow.f64 (*.f64 x (fma.f64 x x x)) 2))
(+.f64 (pow.f64 x 3) (*.f64 x x))
(*.f64 x (fma.f64 x x x))
(log.f64 (pow.f64 (exp.f64 x) (fma.f64 x x x)))
(+.f64 (pow.f64 x 3) (*.f64 x x))
(*.f64 x (fma.f64 x x x))
(cbrt.f64 (pow.f64 (*.f64 x (fma.f64 x x x)) 3))
(+.f64 (pow.f64 x 3) (*.f64 x x))
(*.f64 x (fma.f64 x x x))
(expm1.f64 (log1p.f64 (*.f64 x (fma.f64 x x x))))
(+.f64 (pow.f64 x 3) (*.f64 x x))
(*.f64 x (fma.f64 x x x))
(exp.f64 (log.f64 (*.f64 x (fma.f64 x x x))))
(+.f64 (pow.f64 x 3) (*.f64 x x))
(*.f64 x (fma.f64 x x x))
(log1p.f64 (expm1.f64 (*.f64 x (fma.f64 x x x))))
(+.f64 (pow.f64 x 3) (*.f64 x x))
(*.f64 x (fma.f64 x x x))

localize5.0ms (0.2%)

Local error

Found 2 expressions with local error:

NewErrorProgram
0.01%
(+.f64 (*.f64 x (*.f64 x x)) (*.f64 x x))
0.12%
(*.f64 x (*.f64 x x))
Compiler

Compiled 19 to 4 computations (78.9% saved)

series1.0ms (0.1%)

Counts
2 → 24
Calls

6 calls:

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

rewrite56.0ms (2.4%)

Algorithm
batch-egg-rewrite
Rules
1410×add-sqr-sqrt
1388×*-un-lft-identity
1306×add-cube-cbrt
1294×add-cbrt-cube
1286×add-exp-log
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0626
113722
2186522
Stop Event
node limit
Counts
2 → 56
Calls
Call 1
Inputs
(*.f64 x (*.f64 x x))
(+.f64 (*.f64 x (*.f64 x x)) (*.f64 x x))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (pow.f64 x 3)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 x 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 x 3) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 x 3/2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 x 9) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 x 6))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (pow.f64 x 3)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 x 9))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (pow.f64 x 3)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 3 (log.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 x) 3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 3 (log.f64 x)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (pow.f64 x 3)))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 x (fma.f64 x x x))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (/.f64 (pow.f64 x 6) (-.f64 (pow.f64 x 3) (*.f64 x x))) (/.f64 (pow.f64 x 4) (-.f64 (pow.f64 x 3) (*.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 x (fma.f64 x x x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x x) (+.f64 x 1))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x (fma.f64 x x x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (*.f64 x (fma.f64 x x x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (hypot.f64 x (pow.f64 x 3/2)) (hypot.f64 x (pow.f64 x 3/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 x) (*.f64 (sqrt.f64 x) (fma.f64 x x x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 x (fma.f64 x x x))) (pow.f64 (cbrt.f64 (*.f64 x (fma.f64 x x x))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (*.f64 x (fma.f64 x x x))) 2) (cbrt.f64 (*.f64 x (fma.f64 x x x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 x x)) (*.f64 (cbrt.f64 x) (fma.f64 x x x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (fma.f64 x x x) x)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 x 1) (*.f64 x x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 (pow.f64 x 6) (pow.f64 x 4)) (/.f64 1 (-.f64 (pow.f64 x 3) (*.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (pow.f64 x 6) (pow.f64 x 9)) (/.f64 1 (+.f64 (pow.f64 x 6) (-.f64 (pow.f64 x 4) (pow.f64 x 5)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 x 1) 1) (*.f64 x x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 x 1) (cbrt.f64 (pow.f64 x 4))) (cbrt.f64 (*.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (-.f64 (pow.f64 x 3) (*.f64 x x)) (-.f64 (pow.f64 x 6) (pow.f64 x 4))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (+.f64 (pow.f64 x 6) (-.f64 (pow.f64 x 4) (pow.f64 x 5))) (+.f64 (pow.f64 x 6) (pow.f64 x 9))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 x 6) (pow.f64 x 4)) (-.f64 (pow.f64 x 3) (*.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 x 6) (pow.f64 x 9)) (+.f64 (pow.f64 x 6) (-.f64 (pow.f64 x 4) (pow.f64 x 5))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 x 6) (pow.f64 x 9)) (+.f64 (pow.f64 x 4) (-.f64 (pow.f64 x 6) (pow.f64 x 5))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 x 4) (pow.f64 x 6)) (-.f64 (*.f64 x x) (pow.f64 x 3)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (-.f64 (pow.f64 x 6) (pow.f64 x 4))) (neg.f64 (-.f64 (pow.f64 x 3) (*.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (+.f64 (pow.f64 x 6) (pow.f64 x 9))) (neg.f64 (+.f64 (pow.f64 x 6) (-.f64 (pow.f64 x 4) (pow.f64 x 5)))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 x (fma.f64 x x x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (hypot.f64 x (pow.f64 x 3/2)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 x (fma.f64 x x x))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 x (fma.f64 x x x)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 x (fma.f64 x x x)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 x) (fma.f64 x x x)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 x (fma.f64 x x x)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 x (fma.f64 x x x))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 x (fma.f64 x x x))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (*.f64 x (fma.f64 x x x))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 x (fma.f64 x x x))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 x x (pow.f64 x 3))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 x (*.f64 x x) (*.f64 x x))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 x x) x (*.f64 x x))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (*.f64 x x) (pow.f64 x 3))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (pow.f64 x 3) (*.f64 x x))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 x 3/2) (pow.f64 x 3/2) (*.f64 x x))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (pow.f64 x 4)) (cbrt.f64 (*.f64 x x)) (pow.f64 x 3))))))

simplify63.0ms (2.7%)

Algorithm
egg-herbie
Rules
1442×associate-+r+
1264×associate-+l+
1076×associate-*r/
884×associate-*l/
700×times-frac
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
01271446
13031416
210791416
342841416
Stop Event
node limit
Counts
80 → 67
Calls
Call 1
Inputs
(pow.f64 x 3)
(pow.f64 x 3)
(pow.f64 x 3)
(pow.f64 x 3)
(pow.f64 x 3)
(pow.f64 x 3)
(pow.f64 x 3)
(pow.f64 x 3)
(pow.f64 x 3)
(pow.f64 x 3)
(pow.f64 x 3)
(pow.f64 x 3)
(pow.f64 x 2)
(+.f64 (pow.f64 x 2) (pow.f64 x 3))
(+.f64 (pow.f64 x 2) (pow.f64 x 3))
(+.f64 (pow.f64 x 2) (pow.f64 x 3))
(pow.f64 x 3)
(+.f64 (pow.f64 x 2) (pow.f64 x 3))
(+.f64 (pow.f64 x 2) (pow.f64 x 3))
(+.f64 (pow.f64 x 2) (pow.f64 x 3))
(pow.f64 x 3)
(+.f64 (pow.f64 x 2) (pow.f64 x 3))
(+.f64 (pow.f64 x 2) (pow.f64 x 3))
(+.f64 (pow.f64 x 2) (pow.f64 x 3))
(-.f64 (+.f64 1 (pow.f64 x 3)) 1)
(pow.f64 x 3)
(pow.f64 (pow.f64 x 3) 1)
(pow.f64 (pow.f64 x 3/2) 2)
(pow.f64 (pow.f64 x 9) 1/3)
(sqrt.f64 (pow.f64 x 6))
(log.f64 (exp.f64 (pow.f64 x 3)))
(cbrt.f64 (pow.f64 x 9))
(expm1.f64 (log1p.f64 (pow.f64 x 3)))
(exp.f64 (*.f64 3 (log.f64 x)))
(exp.f64 (*.f64 (log.f64 x) 3))
(exp.f64 (*.f64 (*.f64 3 (log.f64 x)) 1))
(log1p.f64 (expm1.f64 (pow.f64 x 3)))
(-.f64 (+.f64 1 (*.f64 x (fma.f64 x x x))) 1)
(-.f64 (/.f64 (pow.f64 x 6) (-.f64 (pow.f64 x 3) (*.f64 x x))) (/.f64 (pow.f64 x 4) (-.f64 (pow.f64 x 3) (*.f64 x x))))
(*.f64 x (fma.f64 x x x))
(*.f64 (*.f64 x x) (+.f64 x 1))
(*.f64 (*.f64 x (fma.f64 x x x)) 1)
(*.f64 1 (*.f64 x (fma.f64 x x x)))
(*.f64 (hypot.f64 x (pow.f64 x 3/2)) (hypot.f64 x (pow.f64 x 3/2)))
(*.f64 (sqrt.f64 x) (*.f64 (sqrt.f64 x) (fma.f64 x x x)))
(*.f64 (cbrt.f64 (*.f64 x (fma.f64 x x x))) (pow.f64 (cbrt.f64 (*.f64 x (fma.f64 x x x))) 2))
(*.f64 (pow.f64 (cbrt.f64 (*.f64 x (fma.f64 x x x))) 2) (cbrt.f64 (*.f64 x (fma.f64 x x x))))
(*.f64 (cbrt.f64 (*.f64 x x)) (*.f64 (cbrt.f64 x) (fma.f64 x x x)))
(*.f64 (fma.f64 x x x) x)
(*.f64 (+.f64 x 1) (*.f64 x x))
(*.f64 (-.f64 (pow.f64 x 6) (pow.f64 x 4)) (/.f64 1 (-.f64 (pow.f64 x 3) (*.f64 x x))))
(*.f64 (+.f64 (pow.f64 x 6) (pow.f64 x 9)) (/.f64 1 (+.f64 (pow.f64 x 6) (-.f64 (pow.f64 x 4) (pow.f64 x 5)))))
(*.f64 (*.f64 (+.f64 x 1) 1) (*.f64 x x))
(*.f64 (*.f64 (+.f64 x 1) (cbrt.f64 (pow.f64 x 4))) (cbrt.f64 (*.f64 x x)))
(/.f64 1 (/.f64 (-.f64 (pow.f64 x 3) (*.f64 x x)) (-.f64 (pow.f64 x 6) (pow.f64 x 4))))
(/.f64 1 (/.f64 (+.f64 (pow.f64 x 6) (-.f64 (pow.f64 x 4) (pow.f64 x 5))) (+.f64 (pow.f64 x 6) (pow.f64 x 9))))
(/.f64 (-.f64 (pow.f64 x 6) (pow.f64 x 4)) (-.f64 (pow.f64 x 3) (*.f64 x x)))
(/.f64 (+.f64 (pow.f64 x 6) (pow.f64 x 9)) (+.f64 (pow.f64 x 6) (-.f64 (pow.f64 x 4) (pow.f64 x 5))))
(/.f64 (+.f64 (pow.f64 x 6) (pow.f64 x 9)) (+.f64 (pow.f64 x 4) (-.f64 (pow.f64 x 6) (pow.f64 x 5))))
(/.f64 (-.f64 (pow.f64 x 4) (pow.f64 x 6)) (-.f64 (*.f64 x x) (pow.f64 x 3)))
(/.f64 (neg.f64 (-.f64 (pow.f64 x 6) (pow.f64 x 4))) (neg.f64 (-.f64 (pow.f64 x 3) (*.f64 x x))))
(/.f64 (neg.f64 (+.f64 (pow.f64 x 6) (pow.f64 x 9))) (neg.f64 (+.f64 (pow.f64 x 6) (-.f64 (pow.f64 x 4) (pow.f64 x 5)))))
(pow.f64 (*.f64 x (fma.f64 x x x)) 1)
(pow.f64 (hypot.f64 x (pow.f64 x 3/2)) 2)
(pow.f64 (cbrt.f64 (*.f64 x (fma.f64 x x x))) 3)
(pow.f64 (pow.f64 (*.f64 x (fma.f64 x x x)) 3) 1/3)
(sqrt.f64 (pow.f64 (*.f64 x (fma.f64 x x x)) 2))
(log.f64 (pow.f64 (exp.f64 x) (fma.f64 x x x)))
(cbrt.f64 (pow.f64 (*.f64 x (fma.f64 x x x)) 3))
(expm1.f64 (log1p.f64 (*.f64 x (fma.f64 x x x))))
(exp.f64 (log.f64 (*.f64 x (fma.f64 x x x))))
(exp.f64 (*.f64 (log.f64 (*.f64 x (fma.f64 x x x))) 1))
(log1p.f64 (expm1.f64 (*.f64 x (fma.f64 x x x))))
(fma.f64 x x (pow.f64 x 3))
(fma.f64 x (*.f64 x x) (*.f64 x x))
(fma.f64 (*.f64 x x) x (*.f64 x x))
(fma.f64 1 (*.f64 x x) (pow.f64 x 3))
(fma.f64 1 (pow.f64 x 3) (*.f64 x x))
(fma.f64 (pow.f64 x 3/2) (pow.f64 x 3/2) (*.f64 x x))
(fma.f64 (cbrt.f64 (pow.f64 x 4)) (cbrt.f64 (*.f64 x x)) (pow.f64 x 3))
Outputs
(pow.f64 x 3)
(pow.f64 x 3)
(pow.f64 x 3)
(pow.f64 x 3)
(pow.f64 x 3)
(pow.f64 x 3)
(pow.f64 x 3)
(pow.f64 x 3)
(pow.f64 x 3)
(pow.f64 x 3)
(pow.f64 x 3)
(pow.f64 x 3)
(pow.f64 x 2)
(*.f64 x x)
(+.f64 (pow.f64 x 2) (pow.f64 x 3))
(fma.f64 x x (pow.f64 x 3))
(*.f64 x (fma.f64 x x x))
(+.f64 (pow.f64 x 2) (pow.f64 x 3))
(fma.f64 x x (pow.f64 x 3))
(*.f64 x (fma.f64 x x x))
(+.f64 (pow.f64 x 2) (pow.f64 x 3))
(fma.f64 x x (pow.f64 x 3))
(*.f64 x (fma.f64 x x x))
(pow.f64 x 3)
(+.f64 (pow.f64 x 2) (pow.f64 x 3))
(fma.f64 x x (pow.f64 x 3))
(*.f64 x (fma.f64 x x x))
(+.f64 (pow.f64 x 2) (pow.f64 x 3))
(fma.f64 x x (pow.f64 x 3))
(*.f64 x (fma.f64 x x x))
(+.f64 (pow.f64 x 2) (pow.f64 x 3))
(fma.f64 x x (pow.f64 x 3))
(*.f64 x (fma.f64 x x x))
(pow.f64 x 3)
(+.f64 (pow.f64 x 2) (pow.f64 x 3))
(fma.f64 x x (pow.f64 x 3))
(*.f64 x (fma.f64 x x x))
(+.f64 (pow.f64 x 2) (pow.f64 x 3))
(fma.f64 x x (pow.f64 x 3))
(*.f64 x (fma.f64 x x x))
(+.f64 (pow.f64 x 2) (pow.f64 x 3))
(fma.f64 x x (pow.f64 x 3))
(*.f64 x (fma.f64 x x x))
(-.f64 (+.f64 1 (pow.f64 x 3)) 1)
(pow.f64 x 3)
(pow.f64 x 3)
(pow.f64 (pow.f64 x 3) 1)
(pow.f64 x 3)
(pow.f64 (pow.f64 x 3/2) 2)
(pow.f64 x 3)
(pow.f64 (pow.f64 x 9) 1/3)
(cbrt.f64 (pow.f64 x 9))
(sqrt.f64 (pow.f64 x 6))
(pow.f64 x 3)
(log.f64 (exp.f64 (pow.f64 x 3)))
(pow.f64 x 3)
(cbrt.f64 (pow.f64 x 9))
(expm1.f64 (log1p.f64 (pow.f64 x 3)))
(pow.f64 x 3)
(exp.f64 (*.f64 3 (log.f64 x)))
(pow.f64 x 3)
(exp.f64 (*.f64 (log.f64 x) 3))
(pow.f64 x 3)
(exp.f64 (*.f64 (*.f64 3 (log.f64 x)) 1))
(pow.f64 x 3)
(log1p.f64 (expm1.f64 (pow.f64 x 3)))
(pow.f64 x 3)
(-.f64 (+.f64 1 (*.f64 x (fma.f64 x x x))) 1)
(fma.f64 x x (pow.f64 x 3))
(*.f64 x (fma.f64 x x x))
(-.f64 (/.f64 (pow.f64 x 6) (-.f64 (pow.f64 x 3) (*.f64 x x))) (/.f64 (pow.f64 x 4) (-.f64 (pow.f64 x 3) (*.f64 x x))))
(/.f64 (-.f64 (pow.f64 x 6) (pow.f64 x 4)) (-.f64 (pow.f64 x 3) (*.f64 x x)))
(/.f64 (-.f64 (pow.f64 x 6) (pow.f64 x 4)) (*.f64 x (-.f64 (*.f64 x x) x)))
(*.f64 x (fma.f64 x x x))
(fma.f64 x x (pow.f64 x 3))
(*.f64 (*.f64 x x) (+.f64 x 1))
(fma.f64 x x (pow.f64 x 3))
(*.f64 x (fma.f64 x x x))
(*.f64 (*.f64 x (fma.f64 x x x)) 1)
(fma.f64 x x (pow.f64 x 3))
(*.f64 x (fma.f64 x x x))
(*.f64 1 (*.f64 x (fma.f64 x x x)))
(fma.f64 x x (pow.f64 x 3))
(*.f64 x (fma.f64 x x x))
(*.f64 (hypot.f64 x (pow.f64 x 3/2)) (hypot.f64 x (pow.f64 x 3/2)))
(fma.f64 x x (pow.f64 x 3))
(*.f64 x (fma.f64 x x x))
(*.f64 (sqrt.f64 x) (*.f64 (sqrt.f64 x) (fma.f64 x x x)))
(fma.f64 x x (pow.f64 x 3))
(*.f64 x (fma.f64 x x x))
(*.f64 (cbrt.f64 (*.f64 x (fma.f64 x x x))) (pow.f64 (cbrt.f64 (*.f64 x (fma.f64 x x x))) 2))
(fma.f64 x x (pow.f64 x 3))
(*.f64 x (fma.f64 x x x))
(*.f64 (pow.f64 (cbrt.f64 (*.f64 x (fma.f64 x x x))) 2) (cbrt.f64 (*.f64 x (fma.f64 x x x))))
(fma.f64 x x (pow.f64 x 3))
(*.f64 x (fma.f64 x x x))
(*.f64 (cbrt.f64 (*.f64 x x)) (*.f64 (cbrt.f64 x) (fma.f64 x x x)))
(*.f64 (cbrt.f64 (*.f64 x x)) (*.f64 (fma.f64 x x x) (cbrt.f64 x)))
(*.f64 (fma.f64 x x x) (*.f64 (cbrt.f64 (*.f64 x x)) (cbrt.f64 x)))
(*.f64 (fma.f64 x x x) x)
(fma.f64 x x (pow.f64 x 3))
(*.f64 x (fma.f64 x x x))
(*.f64 (+.f64 x 1) (*.f64 x x))
(fma.f64 x x (pow.f64 x 3))
(*.f64 x (fma.f64 x x x))
(*.f64 (-.f64 (pow.f64 x 6) (pow.f64 x 4)) (/.f64 1 (-.f64 (pow.f64 x 3) (*.f64 x x))))
(/.f64 (-.f64 (pow.f64 x 6) (pow.f64 x 4)) (-.f64 (pow.f64 x 3) (*.f64 x x)))
(/.f64 (-.f64 (pow.f64 x 6) (pow.f64 x 4)) (*.f64 x (-.f64 (*.f64 x x) x)))
(*.f64 (+.f64 (pow.f64 x 6) (pow.f64 x 9)) (/.f64 1 (+.f64 (pow.f64 x 6) (-.f64 (pow.f64 x 4) (pow.f64 x 5)))))
(/.f64 (*.f64 (+.f64 (pow.f64 x 9) (pow.f64 x 6)) 1) (+.f64 (pow.f64 x 6) (-.f64 (pow.f64 x 4) (pow.f64 x 5))))
(/.f64 (+.f64 (pow.f64 x 9) (pow.f64 x 6)) (+.f64 (pow.f64 x 6) (-.f64 (pow.f64 x 4) (pow.f64 x 5))))
(*.f64 (*.f64 (+.f64 x 1) 1) (*.f64 x x))
(fma.f64 x x (pow.f64 x 3))
(*.f64 x (fma.f64 x x x))
(*.f64 (*.f64 (+.f64 x 1) (cbrt.f64 (pow.f64 x 4))) (cbrt.f64 (*.f64 x x)))
(*.f64 (cbrt.f64 (*.f64 x x)) (*.f64 (+.f64 x 1) (cbrt.f64 (pow.f64 x 4))))
(*.f64 (+.f64 x 1) (*.f64 (cbrt.f64 (*.f64 x x)) (cbrt.f64 (pow.f64 x 4))))
(/.f64 1 (/.f64 (-.f64 (pow.f64 x 3) (*.f64 x x)) (-.f64 (pow.f64 x 6) (pow.f64 x 4))))
(/.f64 (-.f64 (pow.f64 x 6) (pow.f64 x 4)) (-.f64 (pow.f64 x 3) (*.f64 x x)))
(/.f64 (-.f64 (pow.f64 x 6) (pow.f64 x 4)) (*.f64 x (-.f64 (*.f64 x x) x)))
(/.f64 1 (/.f64 (+.f64 (pow.f64 x 6) (-.f64 (pow.f64 x 4) (pow.f64 x 5))) (+.f64 (pow.f64 x 6) (pow.f64 x 9))))
(/.f64 (*.f64 (+.f64 (pow.f64 x 9) (pow.f64 x 6)) 1) (+.f64 (pow.f64 x 6) (-.f64 (pow.f64 x 4) (pow.f64 x 5))))
(/.f64 (+.f64 (pow.f64 x 9) (pow.f64 x 6)) (+.f64 (pow.f64 x 6) (-.f64 (pow.f64 x 4) (pow.f64 x 5))))
(/.f64 (-.f64 (pow.f64 x 6) (pow.f64 x 4)) (-.f64 (pow.f64 x 3) (*.f64 x x)))
(/.f64 (-.f64 (pow.f64 x 6) (pow.f64 x 4)) (*.f64 x (-.f64 (*.f64 x x) x)))
(/.f64 (+.f64 (pow.f64 x 6) (pow.f64 x 9)) (+.f64 (pow.f64 x 6) (-.f64 (pow.f64 x 4) (pow.f64 x 5))))
(/.f64 (*.f64 (+.f64 (pow.f64 x 9) (pow.f64 x 6)) 1) (+.f64 (pow.f64 x 6) (-.f64 (pow.f64 x 4) (pow.f64 x 5))))
(/.f64 (+.f64 (pow.f64 x 9) (pow.f64 x 6)) (+.f64 (pow.f64 x 6) (-.f64 (pow.f64 x 4) (pow.f64 x 5))))
(/.f64 (+.f64 (pow.f64 x 6) (pow.f64 x 9)) (+.f64 (pow.f64 x 4) (-.f64 (pow.f64 x 6) (pow.f64 x 5))))
(/.f64 (*.f64 (+.f64 (pow.f64 x 9) (pow.f64 x 6)) 1) (+.f64 (pow.f64 x 6) (-.f64 (pow.f64 x 4) (pow.f64 x 5))))
(/.f64 (+.f64 (pow.f64 x 9) (pow.f64 x 6)) (+.f64 (pow.f64 x 6) (-.f64 (pow.f64 x 4) (pow.f64 x 5))))
(/.f64 (-.f64 (pow.f64 x 4) (pow.f64 x 6)) (-.f64 (*.f64 x x) (pow.f64 x 3)))
(/.f64 (-.f64 (pow.f64 x 6) (pow.f64 x 4)) (-.f64 (pow.f64 x 3) (*.f64 x x)))
(/.f64 (-.f64 (pow.f64 x 6) (pow.f64 x 4)) (*.f64 x (-.f64 (*.f64 x x) x)))
(/.f64 (neg.f64 (-.f64 (pow.f64 x 6) (pow.f64 x 4))) (neg.f64 (-.f64 (pow.f64 x 3) (*.f64 x x))))
(/.f64 (-.f64 (pow.f64 x 6) (pow.f64 x 4)) (-.f64 (pow.f64 x 3) (*.f64 x x)))
(/.f64 (-.f64 (pow.f64 x 6) (pow.f64 x 4)) (*.f64 x (-.f64 (*.f64 x x) x)))
(/.f64 (neg.f64 (+.f64 (pow.f64 x 6) (pow.f64 x 9))) (neg.f64 (+.f64 (pow.f64 x 6) (-.f64 (pow.f64 x 4) (pow.f64 x 5)))))
(/.f64 (*.f64 (+.f64 (pow.f64 x 9) (pow.f64 x 6)) 1) (+.f64 (pow.f64 x 6) (-.f64 (pow.f64 x 4) (pow.f64 x 5))))
(/.f64 (+.f64 (pow.f64 x 9) (pow.f64 x 6)) (+.f64 (pow.f64 x 6) (-.f64 (pow.f64 x 4) (pow.f64 x 5))))
(pow.f64 (*.f64 x (fma.f64 x x x)) 1)
(fma.f64 x x (pow.f64 x 3))
(*.f64 x (fma.f64 x x x))
(pow.f64 (hypot.f64 x (pow.f64 x 3/2)) 2)
(fma.f64 x x (pow.f64 x 3))
(*.f64 x (fma.f64 x x x))
(pow.f64 (cbrt.f64 (*.f64 x (fma.f64 x x x))) 3)
(fma.f64 x x (pow.f64 x 3))
(*.f64 x (fma.f64 x x x))
(pow.f64 (pow.f64 (*.f64 x (fma.f64 x x x)) 3) 1/3)
(fma.f64 x x (pow.f64 x 3))
(*.f64 x (fma.f64 x x x))
(sqrt.f64 (pow.f64 (*.f64 x (fma.f64 x x x)) 2))
(fma.f64 x x (pow.f64 x 3))
(*.f64 x (fma.f64 x x x))
(log.f64 (pow.f64 (exp.f64 x) (fma.f64 x x x)))
(fma.f64 x x (pow.f64 x 3))
(*.f64 x (fma.f64 x x x))
(cbrt.f64 (pow.f64 (*.f64 x (fma.f64 x x x)) 3))
(fma.f64 x x (pow.f64 x 3))
(*.f64 x (fma.f64 x x x))
(expm1.f64 (log1p.f64 (*.f64 x (fma.f64 x x x))))
(fma.f64 x x (pow.f64 x 3))
(*.f64 x (fma.f64 x x x))
(exp.f64 (log.f64 (*.f64 x (fma.f64 x x x))))
(fma.f64 x x (pow.f64 x 3))
(*.f64 x (fma.f64 x x x))
(exp.f64 (*.f64 (log.f64 (*.f64 x (fma.f64 x x x))) 1))
(fma.f64 x x (pow.f64 x 3))
(*.f64 x (fma.f64 x x x))
(log1p.f64 (expm1.f64 (*.f64 x (fma.f64 x x x))))
(fma.f64 x x (pow.f64 x 3))
(*.f64 x (fma.f64 x x x))
(fma.f64 x x (pow.f64 x 3))
(*.f64 x (fma.f64 x x x))
(fma.f64 x (*.f64 x x) (*.f64 x x))
(fma.f64 x x (pow.f64 x 3))
(*.f64 x (fma.f64 x x x))
(fma.f64 (*.f64 x x) x (*.f64 x x))
(fma.f64 x x (pow.f64 x 3))
(*.f64 x (fma.f64 x x x))
(fma.f64 1 (*.f64 x x) (pow.f64 x 3))
(fma.f64 x x (pow.f64 x 3))
(*.f64 x (fma.f64 x x x))
(fma.f64 1 (pow.f64 x 3) (*.f64 x x))
(fma.f64 x x (pow.f64 x 3))
(*.f64 x (fma.f64 x x x))
(fma.f64 (pow.f64 x 3/2) (pow.f64 x 3/2) (*.f64 x x))
(fma.f64 x x (pow.f64 x 3))
(*.f64 x (fma.f64 x x x))
(fma.f64 (cbrt.f64 (pow.f64 x 4)) (cbrt.f64 (*.f64 x x)) (pow.f64 x 3))
(fma.f64 (cbrt.f64 (*.f64 x x)) (cbrt.f64 (pow.f64 x 4)) (pow.f64 x 3))

localize5.0ms (0.2%)

Local error

Found 1 expressions with local error:

NewErrorProgram
0.01%
(pow.f64 x 3)
Compiler

Compiled 12 to 7 computations (41.7% saved)

series1.0ms (0%)

Counts
1 → 0
Calls

3 calls:

TimeVariablePointExpression
0.0ms
x
@-inf
(pow.f64 x 3)
0.0ms
x
@inf
(pow.f64 x 3)
0.0ms
x
@0
(pow.f64 x 3)

rewrite49.0ms (2.1%)

Algorithm
batch-egg-rewrite
Rules
1124×associate-*r*
888×add-sqr-sqrt
864×*-un-lft-identity
820×pow1
820×add-cube-cbrt
Iterations

Useful iterations: 0 (0.0ms)

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

simplify70.0ms (2.9%)

Algorithm
egg-herbie
Rules
924×distribute-lft-in
888×distribute-rgt-in
688×*-commutative
602×+-commutative
596×associate-+l-
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
0101742
1254502
21084486
32622478
46773478
Stop Event
node limit
Counts
40 → 58
Calls
Call 1
Inputs
(-.f64 (+.f64 (pow.f64 x 3) 1) 1)
(*.f64 x (*.f64 x x))
(*.f64 x (pow.f64 (pow.f64 (cbrt.f64 x) 2) 3))
(*.f64 (pow.f64 x 3) 1)
(*.f64 1 (pow.f64 x 3))
(*.f64 (sqrt.f64 x) (*.f64 x (pow.f64 x 3/2)))
(*.f64 (pow.f64 x 3/2) (pow.f64 x 3/2))
(*.f64 (cbrt.f64 x) (*.f64 (pow.f64 (cbrt.f64 x) 2) (*.f64 x x)))
(*.f64 (pow.f64 (cbrt.f64 x) 2) (*.f64 (cbrt.f64 x) (*.f64 x x)))
(*.f64 (*.f64 x x) x)
(*.f64 (*.f64 x (pow.f64 (cbrt.f64 x) 2)) (*.f64 x (cbrt.f64 x)))
(*.f64 (*.f64 (pow.f64 (cbrt.f64 x) 2) (*.f64 x x)) (cbrt.f64 x))
(*.f64 (*.f64 x (pow.f64 x 3/2)) (sqrt.f64 x))
(*.f64 (*.f64 (cbrt.f64 x) (*.f64 x x)) (pow.f64 (cbrt.f64 x) 2))
(*.f64 (pow.f64 (sqrt.f64 x) 3) (pow.f64 (sqrt.f64 x) 3))
(*.f64 (pow.f64 (pow.f64 (cbrt.f64 x) 2) 3) x)
(*.f64 (*.f64 (pow.f64 x 3/2) (sqrt.f64 (pow.f64 x 3/2))) (sqrt.f64 (pow.f64 x 3/2)))
(*.f64 (*.f64 (pow.f64 x 3/2) (pow.f64 x 3/4)) (pow.f64 x 3/4))
(*.f64 (*.f64 (pow.f64 x 3/2) (pow.f64 (sqrt.f64 x) 3/2)) (pow.f64 (sqrt.f64 x) 3/2))
(*.f64 (*.f64 x (*.f64 x (pow.f64 (cbrt.f64 x) 2))) (cbrt.f64 x))
(*.f64 (*.f64 (pow.f64 x 3/2) (pow.f64 (pow.f64 (cbrt.f64 x) 2) 3/2)) (pow.f64 (cbrt.f64 x) 3/2))
(*.f64 (*.f64 (*.f64 x (pow.f64 x 3/2)) 1) (sqrt.f64 x))
(*.f64 (*.f64 (*.f64 x (pow.f64 x 3/2)) (cbrt.f64 x)) (cbrt.f64 (sqrt.f64 x)))
(*.f64 (*.f64 (*.f64 x (pow.f64 x 3/2)) (sqrt.f64 (pow.f64 (cbrt.f64 x) 2))) (sqrt.f64 (cbrt.f64 x)))
(*.f64 (*.f64 (*.f64 x (pow.f64 x 3/2)) (sqrt.f64 (sqrt.f64 x))) (sqrt.f64 (sqrt.f64 x)))
(*.f64 (*.f64 (*.f64 (pow.f64 (cbrt.f64 x) 2) (*.f64 x x)) 1) (cbrt.f64 x))
(*.f64 (*.f64 (*.f64 (pow.f64 (cbrt.f64 x) 2) (*.f64 x x)) (sqrt.f64 (cbrt.f64 x))) (sqrt.f64 (cbrt.f64 x)))
(*.f64 (*.f64 (*.f64 (pow.f64 (cbrt.f64 x) 2) (*.f64 x x)) (*.f64 (cbrt.f64 (cbrt.f64 x)) (cbrt.f64 (cbrt.f64 x)))) (cbrt.f64 (cbrt.f64 x)))
(*.f64 (*.f64 (*.f64 (pow.f64 (cbrt.f64 x) 2) (*.f64 x x)) (cbrt.f64 (pow.f64 (cbrt.f64 x) 2))) (cbrt.f64 (cbrt.f64 x)))
(*.f64 (*.f64 (*.f64 (pow.f64 (cbrt.f64 x) 2) (*.f64 x x)) (cbrt.f64 (sqrt.f64 x))) (cbrt.f64 (sqrt.f64 x)))
(*.f64 (*.f64 (pow.f64 (pow.f64 (cbrt.f64 x) 2) 3) 1) x)
(*.f64 (*.f64 (pow.f64 (pow.f64 (cbrt.f64 x) 2) 3) (sqrt.f64 x)) (sqrt.f64 x))
(*.f64 (*.f64 (pow.f64 (pow.f64 (cbrt.f64 x) 2) 3) (cbrt.f64 x)) (pow.f64 (cbrt.f64 x) 2))
(*.f64 (*.f64 (pow.f64 (pow.f64 (cbrt.f64 x) 2) 3) (pow.f64 (cbrt.f64 x) 2)) (cbrt.f64 x))
(sqrt.f64 (pow.f64 x 6))
(log.f64 (exp.f64 (pow.f64 x 3)))
(cbrt.f64 (pow.f64 (pow.f64 x 3) 3))
(expm1.f64 (log1p.f64 (pow.f64 x 3)))
(exp.f64 (*.f64 3 (log.f64 x)))
(log1p.f64 (expm1.f64 (pow.f64 x 3)))
Outputs
(-.f64 (+.f64 (pow.f64 x 3) 1) 1)
(+.f64 (pow.f64 x 3) 0)
(pow.f64 x 3)
(*.f64 x (*.f64 x x))
(+.f64 (pow.f64 x 3) 0)
(pow.f64 x 3)
(*.f64 x (pow.f64 (pow.f64 (cbrt.f64 x) 2) 3))
(+.f64 (pow.f64 x 3) 0)
(pow.f64 x 3)
(*.f64 (pow.f64 x 3) 1)
(+.f64 (pow.f64 x 3) 0)
(pow.f64 x 3)
(*.f64 1 (pow.f64 x 3))
(+.f64 (pow.f64 x 3) 0)
(pow.f64 x 3)
(*.f64 (sqrt.f64 x) (*.f64 x (pow.f64 x 3/2)))
(*.f64 (sqrt.f64 x) (pow.f64 x 5/2))
(*.f64 (pow.f64 x 3/2) (pow.f64 x 3/2))
(+.f64 (pow.f64 x 3) 0)
(pow.f64 x 3)
(*.f64 (cbrt.f64 x) (*.f64 (pow.f64 (cbrt.f64 x) 2) (*.f64 x x)))
(+.f64 (pow.f64 x 3) 0)
(pow.f64 x 3)
(*.f64 (pow.f64 (cbrt.f64 x) 2) (*.f64 (cbrt.f64 x) (*.f64 x x)))
(+.f64 (pow.f64 x 3) 0)
(pow.f64 x 3)
(*.f64 (*.f64 x x) x)
(+.f64 (pow.f64 x 3) 0)
(pow.f64 x 3)
(*.f64 (*.f64 x (pow.f64 (cbrt.f64 x) 2)) (*.f64 x (cbrt.f64 x)))
(+.f64 (pow.f64 x 3) 0)
(pow.f64 x 3)
(*.f64 (*.f64 (pow.f64 (cbrt.f64 x) 2) (*.f64 x x)) (cbrt.f64 x))
(+.f64 (pow.f64 x 3) 0)
(pow.f64 x 3)
(*.f64 (*.f64 x (pow.f64 x 3/2)) (sqrt.f64 x))
(*.f64 (sqrt.f64 x) (*.f64 x (pow.f64 x 3/2)))
(*.f64 (sqrt.f64 x) (pow.f64 x 5/2))
(*.f64 (*.f64 (cbrt.f64 x) (*.f64 x x)) (pow.f64 (cbrt.f64 x) 2))
(+.f64 (pow.f64 x 3) 0)
(pow.f64 x 3)
(*.f64 (pow.f64 (sqrt.f64 x) 3) (pow.f64 (sqrt.f64 x) 3))
(+.f64 (pow.f64 x 3) 0)
(pow.f64 x 3)
(*.f64 (pow.f64 (pow.f64 (cbrt.f64 x) 2) 3) x)
(+.f64 (pow.f64 x 3) 0)
(pow.f64 x 3)
(*.f64 (*.f64 (pow.f64 x 3/2) (sqrt.f64 (pow.f64 x 3/2))) (sqrt.f64 (pow.f64 x 3/2)))
(+.f64 (pow.f64 x 3) 0)
(pow.f64 x 3)
(*.f64 (*.f64 (pow.f64 x 3/2) (pow.f64 x 3/4)) (pow.f64 x 3/4))
(+.f64 (pow.f64 x 3) 0)
(pow.f64 x 3)
(*.f64 (*.f64 (pow.f64 x 3/2) (pow.f64 (sqrt.f64 x) 3/2)) (pow.f64 (sqrt.f64 x) 3/2))
(*.f64 (sqrt.f64 x) (*.f64 x (pow.f64 x 3/2)))
(*.f64 (sqrt.f64 x) (pow.f64 x 5/2))
(*.f64 (*.f64 x (*.f64 x (pow.f64 (cbrt.f64 x) 2))) (cbrt.f64 x))
(+.f64 (pow.f64 x 3) 0)
(pow.f64 x 3)
(*.f64 (*.f64 (pow.f64 x 3/2) (pow.f64 (pow.f64 (cbrt.f64 x) 2) 3/2)) (pow.f64 (cbrt.f64 x) 3/2))
(*.f64 (pow.f64 x 3/2) (*.f64 (pow.f64 (pow.f64 (cbrt.f64 x) 2) 3/2) (pow.f64 (cbrt.f64 x) 3/2)))
(*.f64 (pow.f64 (pow.f64 (cbrt.f64 x) 2) 3/2) (*.f64 (pow.f64 x 3/2) (pow.f64 (cbrt.f64 x) 3/2)))
(*.f64 (*.f64 (*.f64 x (pow.f64 x 3/2)) 1) (sqrt.f64 x))
(*.f64 (sqrt.f64 x) (*.f64 x (pow.f64 x 3/2)))
(*.f64 (sqrt.f64 x) (pow.f64 x 5/2))
(*.f64 (*.f64 (*.f64 x (pow.f64 x 3/2)) (cbrt.f64 x)) (cbrt.f64 (sqrt.f64 x)))
(*.f64 (*.f64 (cbrt.f64 x) (*.f64 x (pow.f64 x 3/2))) (cbrt.f64 (sqrt.f64 x)))
(*.f64 (*.f64 (cbrt.f64 x) (pow.f64 x 5/2)) (cbrt.f64 (sqrt.f64 x)))
(*.f64 (cbrt.f64 x) (*.f64 (pow.f64 x 5/2) (cbrt.f64 (sqrt.f64 x))))
(*.f64 (*.f64 (*.f64 x (pow.f64 x 3/2)) (sqrt.f64 (pow.f64 (cbrt.f64 x) 2))) (sqrt.f64 (cbrt.f64 x)))
(*.f64 (*.f64 x (pow.f64 x 3/2)) (*.f64 (sqrt.f64 (pow.f64 (cbrt.f64 x) 2)) (sqrt.f64 (cbrt.f64 x))))
(*.f64 (pow.f64 x 5/2) (*.f64 (fabs.f64 (cbrt.f64 x)) (sqrt.f64 (cbrt.f64 x))))
(*.f64 (pow.f64 x 5/2) (*.f64 (cbrt.f64 x) (sqrt.f64 (cbrt.f64 x))))
(*.f64 (pow.f64 x 5/2) (pow.f64 (cbrt.f64 x) 3/2))
(*.f64 (*.f64 (*.f64 x (pow.f64 x 3/2)) (sqrt.f64 (sqrt.f64 x))) (sqrt.f64 (sqrt.f64 x)))
(*.f64 (sqrt.f64 x) (*.f64 x (pow.f64 x 3/2)))
(*.f64 (sqrt.f64 x) (pow.f64 x 5/2))
(*.f64 (*.f64 (*.f64 (pow.f64 (cbrt.f64 x) 2) (*.f64 x x)) 1) (cbrt.f64 x))
(+.f64 (pow.f64 x 3) 0)
(pow.f64 x 3)
(*.f64 (*.f64 (*.f64 (pow.f64 (cbrt.f64 x) 2) (*.f64 x x)) (sqrt.f64 (cbrt.f64 x))) (sqrt.f64 (cbrt.f64 x)))
(+.f64 (pow.f64 x 3) 0)
(pow.f64 x 3)
(*.f64 (*.f64 (*.f64 (pow.f64 (cbrt.f64 x) 2) (*.f64 x x)) (*.f64 (cbrt.f64 (cbrt.f64 x)) (cbrt.f64 (cbrt.f64 x)))) (cbrt.f64 (cbrt.f64 x)))
(+.f64 (pow.f64 x 3) 0)
(pow.f64 x 3)
(*.f64 (*.f64 (*.f64 (pow.f64 (cbrt.f64 x) 2) (*.f64 x x)) (cbrt.f64 (pow.f64 (cbrt.f64 x) 2))) (cbrt.f64 (cbrt.f64 x)))
(*.f64 (*.f64 x (*.f64 x (pow.f64 (cbrt.f64 x) 2))) (*.f64 (cbrt.f64 (pow.f64 (cbrt.f64 x) 2)) (cbrt.f64 (cbrt.f64 x))))
(*.f64 (pow.f64 (pow.f64 (cbrt.f64 x) 2) 4) (*.f64 (cbrt.f64 (cbrt.f64 x)) (cbrt.f64 (pow.f64 (cbrt.f64 x) 2))))
(*.f64 (cbrt.f64 (pow.f64 (cbrt.f64 x) 2)) (*.f64 (pow.f64 (cbrt.f64 x) 8) (cbrt.f64 (cbrt.f64 x))))
(*.f64 (*.f64 (*.f64 (pow.f64 (cbrt.f64 x) 2) (*.f64 x x)) (cbrt.f64 (sqrt.f64 x))) (cbrt.f64 (sqrt.f64 x)))
(*.f64 (*.f64 x (*.f64 x (pow.f64 (cbrt.f64 x) 2))) (*.f64 (cbrt.f64 (sqrt.f64 x)) (cbrt.f64 (sqrt.f64 x))))
(*.f64 (pow.f64 (pow.f64 (cbrt.f64 x) 2) 4) (*.f64 (cbrt.f64 (sqrt.f64 x)) (cbrt.f64 (sqrt.f64 x))))
(*.f64 (pow.f64 (cbrt.f64 x) 8) (*.f64 (cbrt.f64 (sqrt.f64 x)) (cbrt.f64 (sqrt.f64 x))))
(*.f64 (*.f64 (pow.f64 (pow.f64 (cbrt.f64 x) 2) 3) 1) x)
(+.f64 (pow.f64 x 3) 0)
(pow.f64 x 3)
(*.f64 (*.f64 (pow.f64 (pow.f64 (cbrt.f64 x) 2) 3) (sqrt.f64 x)) (sqrt.f64 x))
(+.f64 (pow.f64 x 3) 0)
(pow.f64 x 3)
(*.f64 (*.f64 (pow.f64 (pow.f64 (cbrt.f64 x) 2) 3) (cbrt.f64 x)) (pow.f64 (cbrt.f64 x) 2))
(+.f64 (pow.f64 x 3) 0)
(pow.f64 x 3)
(*.f64 (*.f64 (pow.f64 (pow.f64 (cbrt.f64 x) 2) 3) (pow.f64 (cbrt.f64 x) 2)) (cbrt.f64 x))
(+.f64 (pow.f64 x 3) 0)
(pow.f64 x 3)
(sqrt.f64 (pow.f64 x 6))
(+.f64 (pow.f64 x 3) 0)
(pow.f64 x 3)
(log.f64 (exp.f64 (pow.f64 x 3)))
(+.f64 (pow.f64 x 3) 0)
(pow.f64 x 3)
(cbrt.f64 (pow.f64 (pow.f64 x 3) 3))
(+.f64 (pow.f64 x 3) 0)
(pow.f64 x 3)
(expm1.f64 (log1p.f64 (pow.f64 x 3)))
(+.f64 (pow.f64 x 3) 0)
(pow.f64 x 3)
(exp.f64 (*.f64 3 (log.f64 x)))
(+.f64 (pow.f64 x 3) 0)
(pow.f64 x 3)
(log1p.f64 (expm1.f64 (pow.f64 x 3)))
(+.f64 (pow.f64 x 3) 0)
(pow.f64 x 3)

eval31.0ms (1.3%)

Compiler

Compiled 1663 to 788 computations (52.6% saved)

prune16.0ms (0.7%)

Pruning

5 alts after pruning (3 fresh and 2 done)

PrunedKeptTotal
New1393142
Fresh000
Picked101
Done022
Total1405145
Error
0%
Counts
145 → 5
Alt Table
Click to see full alt table
StatusErrorProgram
0%
(fma.f64 x x (*.f64 (*.f64 x x) x))
0.01%
(+.f64 (*.f64 x (*.f64 x x)) (*.f64 x x))
0.02%
(*.f64 (+.f64 x 1) (*.f64 x x))
0.01%
(*.f64 x (fma.f64 x x x))
1.53%
(*.f64 x x)
Compiler

Compiled 38 to 18 computations (52.6% saved)

localize2.0ms (0.1%)

Compiler

Compiled 5 to 2 computations (60% saved)

localize6.0ms (0.2%)

Local error

Found 1 expressions with local error:

NewErrorProgram
0.02%
(*.f64 (+.f64 x 1) (*.f64 x x))
Compiler

Compiled 16 to 8 computations (50% saved)

series1.0ms (0.1%)

Counts
1 → 12
Calls

3 calls:

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

rewrite50.0ms (2.1%)

Algorithm
batch-egg-rewrite
Rules
1394×add-sqr-sqrt
1376×*-un-lft-identity
1284×add-cube-cbrt
1268×add-cbrt-cube
1260×add-exp-log
Iterations

Useful iterations: 0 (0.0ms)

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

simplify57.0ms (2.4%)

Algorithm
egg-herbie
Rules
1154×fma-def
1016×associate-/r/
720×associate-*r/
662×associate-*r*
640×associate-*l/
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
058498
1147498
2488486
32253478
45235478
Stop Event
node limit
Counts
30 → 32
Calls
Call 1
Inputs
(pow.f64 x 2)
(+.f64 (pow.f64 x 2) (pow.f64 x 3))
(+.f64 (pow.f64 x 2) (pow.f64 x 3))
(+.f64 (pow.f64 x 2) (pow.f64 x 3))
(pow.f64 x 3)
(+.f64 (pow.f64 x 2) (pow.f64 x 3))
(+.f64 (pow.f64 x 2) (pow.f64 x 3))
(+.f64 (pow.f64 x 2) (pow.f64 x 3))
(pow.f64 x 3)
(+.f64 (pow.f64 x 2) (pow.f64 x 3))
(+.f64 (pow.f64 x 2) (pow.f64 x 3))
(+.f64 (pow.f64 x 2) (pow.f64 x 3))
(+.f64 (*.f64 x x) (pow.f64 x 3))
(+.f64 (pow.f64 x 3) (*.f64 x x))
(-.f64 (+.f64 1 (+.f64 (*.f64 x x) (pow.f64 x 3))) 1)
(/.f64 (*.f64 (*.f64 x x) (fma.f64 x x -1)) (+.f64 x -1))
(/.f64 (*.f64 (*.f64 x x) (+.f64 1 (pow.f64 x 3))) (fma.f64 x x (-.f64 1 x)))
(/.f64 (*.f64 (fma.f64 x x -1) (*.f64 x x)) (+.f64 x -1))
(/.f64 (*.f64 (+.f64 1 (pow.f64 x 3)) (*.f64 x x)) (fma.f64 x x (-.f64 1 x)))
(pow.f64 (+.f64 (*.f64 x x) (pow.f64 x 3)) 1)
(pow.f64 (*.f64 x (sqrt.f64 (+.f64 x 1))) 2)
(pow.f64 (cbrt.f64 (+.f64 (*.f64 x x) (pow.f64 x 3))) 3)
(pow.f64 (pow.f64 (+.f64 (*.f64 x x) (pow.f64 x 3)) 3) 1/3)
(sqrt.f64 (pow.f64 (+.f64 (*.f64 x x) (pow.f64 x 3)) 2))
(log.f64 (pow.f64 (pow.f64 (exp.f64 x) x) (+.f64 x 1)))
(cbrt.f64 (pow.f64 (+.f64 (*.f64 x x) (pow.f64 x 3)) 3))
(expm1.f64 (log1p.f64 (+.f64 (*.f64 x x) (pow.f64 x 3))))
(exp.f64 (+.f64 (*.f64 2 (log.f64 x)) (log1p.f64 x)))
(exp.f64 (*.f64 (+.f64 (*.f64 2 (log.f64 x)) (log1p.f64 x)) 1))
(log1p.f64 (expm1.f64 (+.f64 (*.f64 x x) (pow.f64 x 3))))
Outputs
(pow.f64 x 2)
(*.f64 x x)
(+.f64 (pow.f64 x 2) (pow.f64 x 3))
(fma.f64 x x (pow.f64 x 3))
(*.f64 x (fma.f64 x x x))
(+.f64 (pow.f64 x 2) (pow.f64 x 3))
(fma.f64 x x (pow.f64 x 3))
(*.f64 x (fma.f64 x x x))
(+.f64 (pow.f64 x 2) (pow.f64 x 3))
(fma.f64 x x (pow.f64 x 3))
(*.f64 x (fma.f64 x x x))
(pow.f64 x 3)
(+.f64 (pow.f64 x 2) (pow.f64 x 3))
(fma.f64 x x (pow.f64 x 3))
(*.f64 x (fma.f64 x x x))
(+.f64 (pow.f64 x 2) (pow.f64 x 3))
(fma.f64 x x (pow.f64 x 3))
(*.f64 x (fma.f64 x x x))
(+.f64 (pow.f64 x 2) (pow.f64 x 3))
(fma.f64 x x (pow.f64 x 3))
(*.f64 x (fma.f64 x x x))
(pow.f64 x 3)
(+.f64 (pow.f64 x 2) (pow.f64 x 3))
(fma.f64 x x (pow.f64 x 3))
(*.f64 x (fma.f64 x x x))
(+.f64 (pow.f64 x 2) (pow.f64 x 3))
(fma.f64 x x (pow.f64 x 3))
(*.f64 x (fma.f64 x x x))
(+.f64 (pow.f64 x 2) (pow.f64 x 3))
(fma.f64 x x (pow.f64 x 3))
(*.f64 x (fma.f64 x x x))
(+.f64 (*.f64 x x) (pow.f64 x 3))
(fma.f64 x x (pow.f64 x 3))
(*.f64 x (fma.f64 x x x))
(+.f64 (pow.f64 x 3) (*.f64 x x))
(fma.f64 x x (pow.f64 x 3))
(*.f64 x (fma.f64 x x x))
(-.f64 (+.f64 1 (+.f64 (*.f64 x x) (pow.f64 x 3))) 1)
(fma.f64 x x (pow.f64 x 3))
(*.f64 x (fma.f64 x x x))
(/.f64 (*.f64 (*.f64 x x) (fma.f64 x x -1)) (+.f64 x -1))
(fma.f64 x x (pow.f64 x 3))
(*.f64 x (fma.f64 x x x))
(/.f64 (*.f64 (*.f64 x x) (+.f64 1 (pow.f64 x 3))) (fma.f64 x x (-.f64 1 x)))
(/.f64 (*.f64 x x) (/.f64 (fma.f64 x x (-.f64 1 x)) (+.f64 (pow.f64 x 3) 1)))
(*.f64 (/.f64 (*.f64 x x) (fma.f64 x x (-.f64 1 x))) (+.f64 (pow.f64 x 3) 1))
(*.f64 (/.f64 x (-.f64 (fma.f64 x x 1) x)) (+.f64 x (pow.f64 x 4)))
(/.f64 (fma.f64 x x (pow.f64 x 5)) (fma.f64 x x (-.f64 1 x)))
(/.f64 (fma.f64 x x (pow.f64 x 5)) (-.f64 (fma.f64 x x 1) x))
(/.f64 (*.f64 (fma.f64 x x -1) (*.f64 x x)) (+.f64 x -1))
(fma.f64 x x (pow.f64 x 3))
(*.f64 x (fma.f64 x x x))
(/.f64 (*.f64 (+.f64 1 (pow.f64 x 3)) (*.f64 x x)) (fma.f64 x x (-.f64 1 x)))
(/.f64 (*.f64 x x) (/.f64 (fma.f64 x x (-.f64 1 x)) (+.f64 (pow.f64 x 3) 1)))
(*.f64 (/.f64 (*.f64 x x) (fma.f64 x x (-.f64 1 x))) (+.f64 (pow.f64 x 3) 1))
(*.f64 (/.f64 x (-.f64 (fma.f64 x x 1) x)) (+.f64 x (pow.f64 x 4)))
(/.f64 (fma.f64 x x (pow.f64 x 5)) (fma.f64 x x (-.f64 1 x)))
(/.f64 (fma.f64 x x (pow.f64 x 5)) (-.f64 (fma.f64 x x 1) x))
(pow.f64 (+.f64 (*.f64 x x) (pow.f64 x 3)) 1)
(fma.f64 x x (pow.f64 x 3))
(*.f64 x (fma.f64 x x x))
(pow.f64 (*.f64 x (sqrt.f64 (+.f64 x 1))) 2)
(fma.f64 x x (pow.f64 x 3))
(*.f64 x (fma.f64 x x x))
(pow.f64 (cbrt.f64 (+.f64 (*.f64 x x) (pow.f64 x 3))) 3)
(fma.f64 x x (pow.f64 x 3))
(*.f64 x (fma.f64 x x x))
(pow.f64 (pow.f64 (+.f64 (*.f64 x x) (pow.f64 x 3)) 3) 1/3)
(fma.f64 x x (pow.f64 x 3))
(*.f64 x (fma.f64 x x x))
(sqrt.f64 (pow.f64 (+.f64 (*.f64 x x) (pow.f64 x 3)) 2))
(fma.f64 x x (pow.f64 x 3))
(*.f64 x (fma.f64 x x x))
(log.f64 (pow.f64 (pow.f64 (exp.f64 x) x) (+.f64 x 1)))
(fma.f64 x x (pow.f64 x 3))
(*.f64 x (fma.f64 x x x))
(cbrt.f64 (pow.f64 (+.f64 (*.f64 x x) (pow.f64 x 3)) 3))
(fma.f64 x x (pow.f64 x 3))
(*.f64 x (fma.f64 x x x))
(expm1.f64 (log1p.f64 (+.f64 (*.f64 x x) (pow.f64 x 3))))
(fma.f64 x x (pow.f64 x 3))
(*.f64 x (fma.f64 x x x))
(exp.f64 (+.f64 (*.f64 2 (log.f64 x)) (log1p.f64 x)))
(exp.f64 (fma.f64 2 (log.f64 x) (log1p.f64 x)))
(*.f64 (*.f64 x x) (exp.f64 (log1p.f64 x)))
(*.f64 x (*.f64 x (exp.f64 (log1p.f64 x))))
(exp.f64 (*.f64 (+.f64 (*.f64 2 (log.f64 x)) (log1p.f64 x)) 1))
(exp.f64 (fma.f64 2 (log.f64 x) (log1p.f64 x)))
(*.f64 (*.f64 x x) (exp.f64 (log1p.f64 x)))
(*.f64 x (*.f64 x (exp.f64 (log1p.f64 x))))
(log1p.f64 (expm1.f64 (+.f64 (*.f64 x x) (pow.f64 x 3))))
(fma.f64 x x (pow.f64 x 3))
(*.f64 x (fma.f64 x x x))

localize6.0ms (0.3%)

Local error

Found 1 expressions with local error:

NewErrorProgram
0.12%
(*.f64 (*.f64 x x) x)
Compiler

Compiled 18 to 4 computations (77.8% saved)

series0.0ms (0%)

Counts
1 → 12
Calls

3 calls:

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

rewrite44.0ms (1.9%)

Algorithm
batch-egg-rewrite
Rules
850×associate-*l*
838×add-sqr-sqrt
820×*-un-lft-identity
770×pow1
768×add-cube-cbrt
Iterations

Useful iterations: 0 (0.0ms)

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

simplify53.0ms (2.2%)

Algorithm
egg-herbie
Rules
1032×fma-def
1012×associate-/l*
878×associate--r+
806×*-commutative
620×associate-+r-
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
030161
167161
2242161
31200161
42642161
54976161
Stop Event
node limit
Counts
23 → 11
Calls
Call 1
Inputs
(pow.f64 x 3)
(pow.f64 x 3)
(pow.f64 x 3)
(pow.f64 x 3)
(pow.f64 x 3)
(pow.f64 x 3)
(pow.f64 x 3)
(pow.f64 x 3)
(pow.f64 x 3)
(pow.f64 x 3)
(pow.f64 x 3)
(pow.f64 x 3)
(-.f64 (+.f64 (pow.f64 x 3) 1) 1)
(pow.f64 x 3)
(pow.f64 (pow.f64 x 3) 1)
(pow.f64 (pow.f64 x 3/2) 2)
(pow.f64 (pow.f64 (pow.f64 x 3) 3) 1/3)
(sqrt.f64 (pow.f64 x 6))
(log.f64 (exp.f64 (pow.f64 x 3)))
(cbrt.f64 (pow.f64 (pow.f64 x 3) 3))
(expm1.f64 (log1p.f64 (pow.f64 x 3)))
(exp.f64 (*.f64 (log.f64 x) 3))
(log1p.f64 (expm1.f64 (pow.f64 x 3)))
Outputs
(pow.f64 x 3)
(pow.f64 x 3)
(pow.f64 x 3)
(pow.f64 x 3)
(pow.f64 x 3)
(pow.f64 x 3)
(pow.f64 x 3)
(pow.f64 x 3)
(pow.f64 x 3)
(pow.f64 x 3)
(pow.f64 x 3)
(pow.f64 x 3)
(-.f64 (+.f64 (pow.f64 x 3) 1) 1)
(pow.f64 x 3)
(pow.f64 x 3)
(pow.f64 (pow.f64 x 3) 1)
(pow.f64 x 3)
(pow.f64 (pow.f64 x 3/2) 2)
(pow.f64 x 3)
(pow.f64 (pow.f64 (pow.f64 x 3) 3) 1/3)
(pow.f64 x 3)
(sqrt.f64 (pow.f64 x 6))
(pow.f64 x 3)
(log.f64 (exp.f64 (pow.f64 x 3)))
(pow.f64 x 3)
(cbrt.f64 (pow.f64 (pow.f64 x 3) 3))
(pow.f64 x 3)
(expm1.f64 (log1p.f64 (pow.f64 x 3)))
(pow.f64 x 3)
(exp.f64 (*.f64 (log.f64 x) 3))
(pow.f64 x 3)
(log1p.f64 (expm1.f64 (pow.f64 x 3)))
(pow.f64 x 3)

eval9.0ms (0.4%)

Compiler

Compiled 396 to 226 computations (42.9% saved)

prune6.0ms (0.2%)

Pruning

5 alts after pruning (0 fresh and 5 done)

PrunedKeptTotal
New43043
Fresh000
Picked011
Done044
Total43548
Error
0%
Counts
48 → 5
Alt Table
Click to see full alt table
StatusErrorProgram
0%
(fma.f64 x x (*.f64 (*.f64 x x) x))
0.01%
(+.f64 (*.f64 x (*.f64 x x)) (*.f64 x x))
0.02%
(*.f64 (+.f64 x 1) (*.f64 x x))
0.01%
(*.f64 x (fma.f64 x x x))
1.53%
(*.f64 x x)
Compiler

Compiled 38 to 18 computations (52.6% saved)

regimes7.0ms (0.3%)

Counts
6 → 1
Calls
Call 1
Inputs
(*.f64 x x)
(*.f64 (+.f64 x 1) (*.f64 x x))
(+.f64 (*.f64 x (*.f64 x x)) (*.f64 x x))
(*.f64 x (fma.f64 x x x))
(fma.f64 x x (*.f64 (*.f64 x x) x))
(fma.f64 x x (pow.f64 x 3))
Outputs
(fma.f64 x x (*.f64 (*.f64 x x) x))
Calls

2 calls:

3.0ms
x
3.0ms
(+.f64 (*.f64 x (*.f64 x x)) (*.f64 x x))
Results
ErrorSegmentsBranch
0%1x
0%1(+.f64 (*.f64 x (*.f64 x x)) (*.f64 x x))
Compiler

Compiled 52 to 19 computations (63.5% saved)

regimes6.0ms (0.2%)

Counts
4 → 1
Calls
Call 1
Inputs
(*.f64 x x)
(*.f64 (+.f64 x 1) (*.f64 x x))
(+.f64 (*.f64 x (*.f64 x x)) (*.f64 x x))
(*.f64 x (fma.f64 x x x))
Outputs
(+.f64 (*.f64 x (*.f64 x x)) (*.f64 x x))
Calls

2 calls:

3.0ms
x
2.0ms
(+.f64 (*.f64 x (*.f64 x x)) (*.f64 x x))
Results
ErrorSegmentsBranch
0.01%1x
0.01%1(+.f64 (*.f64 x (*.f64 x x)) (*.f64 x x))
Compiler

Compiled 38 to 14 computations (63.2% saved)

regimes3.0ms (0.1%)

Accuracy

Total -1.0b remaining (-6156.8%)

Threshold costs -1b (-6156.8%)

Counts
2 → 1
Calls
Call 1
Inputs
(*.f64 x x)
(*.f64 (+.f64 x 1) (*.f64 x x))
Outputs
(*.f64 (+.f64 x 1) (*.f64 x x))
Calls

1 calls:

3.0ms
x
Results
ErrorSegmentsBranch
0.02%1x
Compiler

Compiled 13 to 6 computations (53.8% saved)

simplify5.0ms (0.2%)

Algorithm
egg-herbie
Rules
+-commutative
*-commutative
1-exp
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01272
11972
Stop Event
done
saturated
Calls
Call 1
Inputs
(fma.f64 x x (*.f64 (*.f64 x x) x))
(+.f64 (*.f64 x (*.f64 x x)) (*.f64 x x))
(*.f64 (+.f64 x 1) (*.f64 x x))
(*.f64 x x)
Outputs
(fma.f64 x x (*.f64 (*.f64 x x) x))
(fma.f64 x x (*.f64 x (*.f64 x x)))
(+.f64 (*.f64 x (*.f64 x x)) (*.f64 x x))
(+.f64 (*.f64 x x) (*.f64 x (*.f64 x x)))
(*.f64 (+.f64 x 1) (*.f64 x x))
(*.f64 (*.f64 x x) (+.f64 x 1))
(*.f64 x x)
Compiler

Compiled 31 to 15 computations (51.6% saved)

soundness310.0ms (13%)

Algorithm
egg-herbie
Rules
3512×sqr-pow
1426×pow-sqr
1160×cube-prod
742×fabs-mul
736×cube-mult
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0619
11715
23415
34715
46615
512415
622215
764415
8104615
9113415
10127115
11143315
12167115
13198415
14237915
15285215
16339115
17403115
18425215
19444815
20458815
21467415
22473215
23562215
24667215
25697415
26726815
27740015
28741015
29741015
Stop Event
node limit
Compiler

Compiled 33 to 9 computations (72.7% saved)

end26.0ms (1.1%)

Compiler

Compiled 28 to 8 computations (71.4% saved)

Profiling

Loading profile data...