Details

Time bar (total: 2.4s)

analyze0.0ms (0%)

Algorithm
search
Search
TrueOtherFalseIter
0%25%75%0
25%0%75%1
Compiler

Compiled 17 to 9 computations (47.1% saved)

sample1.4s (57.5%)

Results
1.4s8256×body256valid

preprocess139.0ms (5.8%)

Algorithm
egg-herbie
Rules
1331×sqr-pow_binary64
715×pow-sqr_binary64
636×cube-prod_binary64
562×fabs-mul_binary64
362×unswap-sqr_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0510
1158
2318
3468
4718
51238
62398
76738
813648
914658
1015988
1117568
1219878
1323118
1427328
1532328
1638258
1745478
1848688
1951548
2053768
2155548
2256368
2365768
2475508
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))
(fma.f64 x x (pow.f64 x 3))
(*.f64 x (fma.f64 x x x))
Compiler

Compiled 11 to 5 computations (54.5% saved)

simplify121.0ms (5%)

Algorithm
egg-herbie
Rules
1331×sqr-pow_binary64
715×pow-sqr_binary64
636×cube-prod_binary64
562×fabs-mul_binary64
362×unswap-sqr_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0510
1158
2318
3468
4718
51238
62398
76738
813648
914658
1015988
1117568
1219878
1323118
1427328
1532328
1638258
1745478
1848688
1951548
2053768
2155548
2256368
2365768
2475508
Stop Event
node limit
Counts
1 → 2
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))
(fma.f64 x x (pow.f64 x 3))
(*.f64 x (fma.f64 x x x))

eval0.0ms (0%)

Compiler

Compiled 16 to 6 computations (62.5% saved)

prune1.0ms (0%)

Pruning

3 alts after pruning (3 fresh and 0 done)

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

Compiled 17 to 7 computations (58.8% saved)

localize4.0ms (0.2%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.1b
(*.f64 x (*.f64 x x))
0.0b
(+.f64 (*.f64 x (*.f64 x x)) (*.f64 x x))
0.0b
(+.f64 (*.f64 x (*.f64 x x)) (*.f64 x x))
0.1b
(*.f64 x (*.f64 x x))

series3.0ms (0.1%)

Counts
2 → 24
Calls

6 calls:

TimeVariablePointExpression
1.0ms
x
@0
(*.f64 x (*.f64 x x))
1.0ms
x
@-inf
(*.f64 x (*.f64 x x))
1.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))

rewrite100.0ms (4.1%)

Algorithm
batch-egg-rewrite
Rules
587×pow1_binary64
553×add-log-exp_binary64
552×log1p-expm1-u_binary64
552×expm1-log1p-u_binary64
539×add-exp-log_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0514
111612
2160412
Stop Event
node limit
Counts
2 → 53
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 log1p.f64 (expm1.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 expm1.f64 (log1p.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 (*.f64 x x) (-.f64 x 1))) (/.f64 (pow.f64 x 4) (*.f64 (*.f64 x x) (-.f64 x 1))))))) (#(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 (pow.f64 (cbrt.f64 x) 2) (*.f64 (cbrt.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 (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 (+.f64 (pow.f64 x 9) (pow.f64 x 6)) (/.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 (pow.f64 x 6) (pow.f64 x 4)) (/.f64 1 (*.f64 (*.f64 x x) (-.f64 x 1))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 x 1) (*.f64 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 (+.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))) (pow.f64 (cbrt.f64 x) 2))))) (#(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 9) (pow.f64 x 6))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (*.f64 (*.f64 x x) (-.f64 x 1)) (-.f64 (pow.f64 x 6) (pow.f64 x 4))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 x 9) (pow.f64 x 6)) (+.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 9) (pow.f64 x 6)) (+.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 6) (pow.f64 x 4)) (*.f64 (*.f64 x x) (-.f64 x 1)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (+.f64 (pow.f64 x 9) (pow.f64 x 6))) (neg.f64 (+.f64 (pow.f64 x 6) (-.f64 (pow.f64 x 4) (pow.f64 x 5)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (-.f64 (pow.f64 x 6) (pow.f64 x 4))) (neg.f64 (*.f64 (*.f64 x x) (-.f64 x 1))))))) (#(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 pow.f64 (*.f64 x (fma.f64 x x x)) 1)))) (#(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 pow.f64 (cbrt.f64 (*.f64 x (fma.f64 x x x))) 3)))) (#(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 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 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 (cbrt.f64 (pow.f64 x 4)) (pow.f64 (cbrt.f64 x) 2) (pow.f64 x 3))))) (#(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 log1p.f64 (expm1.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 expm1.f64 (log1p.f64 (*.f64 x (fma.f64 x x x))))))))

simplify127.0ms (5.3%)

Algorithm
egg-herbie
Rules
1262×fma-def_binary64
969×sqr-pow_binary64
536×unswap-sqr_binary64
502×cube-prod_binary64
460×fabs-mul_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
07150
120132
244132
381132
4210132
5854132
62558132
73309132
83602132
93922132
104332132
114852132
125520132
136249132
146825132
157151132
167425132
177596132
187689132
Stop Event
node limit
Counts
77 → 56
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))
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))
(+.f64 (pow.f64 x 3) (*.f64 x x))
(fma.f64 x x (pow.f64 x 3))
(*.f64 x (fma.f64 x x x))
(+.f64 (pow.f64 x 2) (pow.f64 x 3))
(+.f64 (pow.f64 x 3) (*.f64 x x))
(fma.f64 x x (pow.f64 x 3))
(*.f64 x (fma.f64 x x x))
(+.f64 (pow.f64 x 2) (pow.f64 x 3))
(+.f64 (pow.f64 x 3) (*.f64 x x))
(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))
(+.f64 (pow.f64 x 3) (*.f64 x x))
(fma.f64 x x (pow.f64 x 3))
(*.f64 x (fma.f64 x x x))
(+.f64 (pow.f64 x 2) (pow.f64 x 3))
(+.f64 (pow.f64 x 3) (*.f64 x x))
(fma.f64 x x (pow.f64 x 3))
(*.f64 x (fma.f64 x x x))
(+.f64 (pow.f64 x 2) (pow.f64 x 3))
(+.f64 (pow.f64 x 3) (*.f64 x x))
(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))
(+.f64 (pow.f64 x 3) (*.f64 x x))
(fma.f64 x x (pow.f64 x 3))
(*.f64 x (fma.f64 x x x))
(+.f64 (pow.f64 x 2) (pow.f64 x 3))
(+.f64 (pow.f64 x 3) (*.f64 x x))
(fma.f64 x x (pow.f64 x 3))
(*.f64 x (fma.f64 x x x))
(+.f64 (pow.f64 x 2) (pow.f64 x 3))
(+.f64 (pow.f64 x 3) (*.f64 x x))
(fma.f64 x x (pow.f64 x 3))
(*.f64 x (fma.f64 x x x))

localize3.0ms (0.1%)

Local error

Found 2 expressions with local error:

NewErrorProgram
0.0b
(*.f64 x (fma.f64 x x x))
0.0b
(*.f64 x (fma.f64 x x x))

series102.0ms (4.2%)

Counts
1 → 12
Calls

3 calls:

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

rewrite34.0ms (1.4%)

Algorithm
batch-egg-rewrite
Rules
378×pow1_binary64
361×add-sqr-sqrt_binary64
356×*-un-lft-identity_binary64
347×add-log-exp_binary64
347×log1p-expm1-u_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
048
1798
29498
Stop Event
node limit
Counts
1 → 27
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 0 (*.f64 x (fma.f64 x x x)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (pow.f64 (exp.f64 (fma.f64 x x x)) x)) 2)) (log.f64 (cbrt.f64 (pow.f64 (exp.f64 (fma.f64 x x x)) x))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (pow.f64 (exp.f64 (fma.f64 x x x)) x))) (log.f64 (sqrt.f64 (pow.f64 (exp.f64 (fma.f64 x x 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 (pow.f64 (hypot.f64 (pow.f64 x 3/2) x) 4) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (hypot.f64 (pow.f64 x 3/2) x) 6) 1/3)))) (#(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 (hypot.f64 (pow.f64 x 3/2) x) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (hypot.f64 (pow.f64 x 3/2) x) 4))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 (fma.f64 x x x)) x))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (exp.f64 (pow.f64 x 3)) (exp.f64 (*.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (hypot.f64 (pow.f64 x 3/2) x) 6))))) (#(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 1 (pow.f64 x 3) (*.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 (pow.f64 x 3/2) (pow.f64 x 3/2) (*.f64 x x))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (pow.f64 x 3)) (sqrt.f64 (pow.f64 x 3)) (*.f64 x x))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (*.f64 x (cbrt.f64 x)) 2) (cbrt.f64 x) (*.f64 x x))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 x 5/2) (sqrt.f64 x) (*.f64 x x))))) (#(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 exp.f64 (log.f64 (*.f64 x (fma.f64 x x x))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (pow.f64 (hypot.f64 (pow.f64 x 3/2) x) 6)) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (cbrt.f64 (*.f64 x (fma.f64 x x x)))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (hypot.f64 (pow.f64 x 3/2) x)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 x (fma.f64 x x x))))))))

simplify118.0ms (4.9%)

Algorithm
egg-herbie
Rules
1262×fma-def_binary64
969×sqr-pow_binary64
536×unswap-sqr_binary64
502×cube-prod_binary64
460×fabs-mul_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
07102
12084
24484
38184
420784
584384
6254084
7329184
8358584
9390584
10431584
11483984
12550784
13623684
14681284
15714284
16741684
17758584
18767684
Stop Event
node limit
Counts
39 → 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))
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))
(fma.f64 x x (pow.f64 x 3))
(*.f64 x (fma.f64 x x x))
(+.f64 (pow.f64 x 2) (pow.f64 x 3))
(+.f64 (pow.f64 x 3) (*.f64 x x))
(fma.f64 x x (pow.f64 x 3))
(*.f64 x (fma.f64 x x x))
(+.f64 (pow.f64 x 2) (pow.f64 x 3))
(+.f64 (pow.f64 x 3) (*.f64 x x))
(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))
(+.f64 (pow.f64 x 3) (*.f64 x x))
(fma.f64 x x (pow.f64 x 3))
(*.f64 x (fma.f64 x x x))
(+.f64 (pow.f64 x 2) (pow.f64 x 3))
(+.f64 (pow.f64 x 3) (*.f64 x x))
(fma.f64 x x (pow.f64 x 3))
(*.f64 x (fma.f64 x x x))
(+.f64 (pow.f64 x 2) (pow.f64 x 3))
(+.f64 (pow.f64 x 3) (*.f64 x x))
(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))
(+.f64 (pow.f64 x 3) (*.f64 x x))
(fma.f64 x x (pow.f64 x 3))
(*.f64 x (fma.f64 x x x))
(+.f64 (pow.f64 x 2) (pow.f64 x 3))
(+.f64 (pow.f64 x 3) (*.f64 x x))
(fma.f64 x x (pow.f64 x 3))
(*.f64 x (fma.f64 x x x))
(+.f64 (pow.f64 x 2) (pow.f64 x 3))
(+.f64 (pow.f64 x 3) (*.f64 x x))
(fma.f64 x x (pow.f64 x 3))
(*.f64 x (fma.f64 x x x))

eval18.0ms (0.8%)

Compiler

Compiled 886 to 423 computations (52.3% saved)

prune12.0ms (0.5%)

Pruning

5 alts after pruning (3 fresh and 2 done)

PrunedKeptTotal
New85388
Fresh000
Picked011
Done011
Total85590
Error
0b
Counts
90 → 5
Alt Table
Click to see full alt table
StatusErrorProgram
0.0b
(*.f64 x (fma.f64 x x x))
0b
(fma.f64 x x (pow.f64 x 3))
0.0b
(+.f64 (*.f64 x (*.f64 x x)) (*.f64 x x))
0.0b
(*.f64 (+.f64 x 1) (*.f64 x x))
1.6b
(*.f64 x x)
Compiler

Compiled 36 to 18 computations (50% saved)

localize2.0ms (0.1%)

localize4.0ms (0.1%)

Local error

Found 2 expressions with local error:

NewErrorProgram
0.0b
(*.f64 (+.f64 x 1) (*.f64 x x))
0.0b
(*.f64 (+.f64 x 1) (*.f64 x x))

series3.0ms (0.1%)

Counts
1 → 12
Calls

3 calls:

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

rewrite39.0ms (1.6%)

Algorithm
batch-egg-rewrite
Rules
589×pow1_binary64
550×log1p-expm1-u_binary64
550×expm1-log1p-u_binary64
549×add-log-exp_binary64
536×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0610
112510
2159510
Stop Event
node limit
Counts
1 → 17
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 1 (pow.f64 x 3)) (*.f64 x x)) (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 x x) (+.f64 1 (pow.f64 x 3))) (fma.f64 x x (-.f64 1 x)))))) (#(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 pow.f64 (+.f64 (*.f64 x x) (pow.f64 x 3)) 1)))) (#(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 pow.f64 (cbrt.f64 (+.f64 (*.f64 x x) (pow.f64 x 3))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 x (sqrt.f64 (+.f64 x 1))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (*.f64 (pow.f64 x 4) (pow.f64 (+.f64 x 1) 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 log1p.f64 (expm1.f64 (+.f64 (*.f64 x x) (pow.f64 x 3))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (+.f64 (*.f64 (log.f64 x) 2) (log1p.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (+.f64 (*.f64 x x) (pow.f64 x 3))))))))

simplify118.0ms (4.9%)

Algorithm
egg-herbie
Rules
1262×fma-def_binary64
969×sqr-pow_binary64
536×unswap-sqr_binary64
502×cube-prod_binary64
460×fabs-mul_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
07102
12084
24484
38184
420784
584384
6254084
7329184
8358584
9390584
10431584
11483984
12550784
13623684
14681284
15714284
16741684
17758584
18767684
Stop Event
node limit
Counts
29 → 22
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))
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))
(fma.f64 x x (pow.f64 x 3))
(*.f64 x (fma.f64 x x x))
(+.f64 (pow.f64 x 2) (pow.f64 x 3))
(+.f64 (pow.f64 x 3) (*.f64 x x))
(fma.f64 x x (pow.f64 x 3))
(*.f64 x (fma.f64 x x x))
(+.f64 (pow.f64 x 2) (pow.f64 x 3))
(+.f64 (pow.f64 x 3) (*.f64 x x))
(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))
(+.f64 (pow.f64 x 3) (*.f64 x x))
(fma.f64 x x (pow.f64 x 3))
(*.f64 x (fma.f64 x x x))
(+.f64 (pow.f64 x 2) (pow.f64 x 3))
(+.f64 (pow.f64 x 3) (*.f64 x x))
(fma.f64 x x (pow.f64 x 3))
(*.f64 x (fma.f64 x x x))
(+.f64 (pow.f64 x 2) (pow.f64 x 3))
(+.f64 (pow.f64 x 3) (*.f64 x x))
(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))
(+.f64 (pow.f64 x 3) (*.f64 x x))
(fma.f64 x x (pow.f64 x 3))
(*.f64 x (fma.f64 x x x))
(+.f64 (pow.f64 x 2) (pow.f64 x 3))
(+.f64 (pow.f64 x 3) (*.f64 x x))
(fma.f64 x x (pow.f64 x 3))
(*.f64 x (fma.f64 x x x))
(+.f64 (pow.f64 x 2) (pow.f64 x 3))
(+.f64 (pow.f64 x 3) (*.f64 x x))
(fma.f64 x x (pow.f64 x 3))
(*.f64 x (fma.f64 x x x))

localize3.0ms (0.1%)

eval6.0ms (0.2%)

Compiler

Compiled 197 to 116 computations (41.1% saved)

prune4.0ms (0.2%)

Pruning

5 alts after pruning (0 fresh and 5 done)

PrunedKeptTotal
New22022
Fresh000
Picked011
Done044
Total22527
Error
0b
Counts
27 → 5
Alt Table
Click to see full alt table
StatusErrorProgram
0.0b
(*.f64 x (fma.f64 x x x))
0b
(fma.f64 x x (pow.f64 x 3))
0.0b
(+.f64 (*.f64 x (*.f64 x x)) (*.f64 x x))
0.0b
(*.f64 (+.f64 x 1) (*.f64 x x))
1.6b
(*.f64 x x)
Compiler

Compiled 36 to 18 computations (50% saved)

regimes11.0ms (0.5%)

Counts
5 → 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 (pow.f64 x 3))
Outputs
(fma.f64 x x (pow.f64 x 3))
Calls

2 calls:

3.0ms
x
2.0ms
(+.f64 (*.f64 x (*.f64 x x)) (*.f64 x x))
Results
ErrorSegmentsBranch
0b1x
0b1(+.f64 (*.f64 x (*.f64 x x)) (*.f64 x x))
Compiler

Compiled 44 to 17 computations (61.4% saved)

regimes6.0ms (0.3%)

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 x (fma.f64 x x x))
Calls

2 calls:

3.0ms
x
2.0ms
(+.f64 (*.f64 x (*.f64 x x)) (*.f64 x x))
Results
ErrorSegmentsBranch
0.0b1x
0.0b1(+.f64 (*.f64 x (*.f64 x x)) (*.f64 x x))
Compiler

Compiled 38 to 14 computations (63.2% saved)

regimes7.0ms (0.3%)

Counts
3 → 1
Calls
Call 1
Inputs
(*.f64 x x)
(*.f64 (+.f64 x 1) (*.f64 x x))
(+.f64 (*.f64 x (*.f64 x x)) (*.f64 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.0b1x
0.0b1(+.f64 (*.f64 x (*.f64 x x)) (*.f64 x x))
Compiler

Compiled 32 to 12 computations (62.5% saved)

regimes3.0ms (0.1%)

Accuracy

Total -1.6b remaining (-6832.4%)

Threshold costs -1.6b (-6832.4%)

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.0b1x
Compiler

Compiled 13 to 6 computations (53.8% saved)

simplify2.0ms (0.1%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
01343
12043
Stop Event
saturated
Calls
Call 1
Inputs
(fma.f64 x x (pow.f64 x 3))
(*.f64 x (fma.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 (pow.f64 x 3))
(*.f64 x (fma.f64 x 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)

end32.0ms (1.3%)

Stop Event
done
Compiler

Compiled 68 to 30 computations (55.9% saved)

Profiling

Loading profile data...