Details

Time bar (total: 9.7s)

analyze4.0ms (0%)

Algorithm
search
Search
TrueOtherFalseIter
0%100%0%0
0%100%0%1
0%100%0%2
50%50%0%3
50%25%25%4
50%12.5%37.5%5
50%6.2%43.8%6
50%3.1%46.9%7
50%1.6%48.5%8
50%0.8%49.2%9
50.4%0.4%49.2%10
50.4%0.2%49.4%11
50.4%0.1%49.5%12
Compiler

Compiled 10 to 8 computations (20% saved)

sample6.6s (68.1%)

Results
4.8s4351×body2048valid
1.4s2042×body1024valid
241.0ms970×body512valid
104.0ms893×body256valid
1.0msbody256invalid

preprocess67.0ms (0.7%)

Algorithm
egg-herbie
Rules
801×associate-/l*_binary64
624×fma-def_binary64
581×fma-neg_binary64
548×unswap-sqr_binary64
536×div-sub_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0813
12013
23613
36013
412213
527313
670913
7172913
8314513
9760513
011
Stop Event
saturated
node limit
Calls
Call 1
Inputs
0
Outputs
0
Call 2
Inputs
(+.f64 (-.f64 (exp.f64 x) 2) (exp.f64 (neg.f64 x)))
Outputs
(+.f64 (-.f64 (exp.f64 x) 2) (exp.f64 (neg.f64 x)))
(+.f64 (+.f64 (exp.f64 x) -2) (exp.f64 (neg.f64 x)))
(+.f64 (exp.f64 x) (+.f64 -2 (exp.f64 (neg.f64 x))))
(+.f64 (exp.f64 x) (+.f64 (exp.f64 (neg.f64 x)) -2))
(+.f64 -2 (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))
Compiler

Compiled 10 to 8 computations (20% saved)

simplify64.0ms (0.7%)

Algorithm
egg-herbie
Rules
801×associate-/l*_binary64
624×fma-def_binary64
581×fma-neg_binary64
548×unswap-sqr_binary64
536×div-sub_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0813
12013
23613
36013
412213
527313
670913
7172913
8314513
9760513
Stop Event
node limit
Counts
1 → 2
Calls
Call 1
Inputs
(+.f64 (-.f64 (exp.f64 x) 2) (exp.f64 (neg.f64 x)))
Outputs
(+.f64 (-.f64 (exp.f64 x) 2) (exp.f64 (neg.f64 x)))
(+.f64 (+.f64 (exp.f64 x) -2) (exp.f64 (neg.f64 x)))
(+.f64 (exp.f64 x) (+.f64 -2 (exp.f64 (neg.f64 x))))
(+.f64 (exp.f64 x) (+.f64 (exp.f64 (neg.f64 x)) -2))
(+.f64 -2 (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))

eval1.0ms (0%)

Compiler

Compiled 17 to 10 computations (41.2% saved)

prune1.0ms (0%)

Pruning

3 alts after pruning (3 fresh and 0 done)

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

Compiled 18 to 14 computations (22.2% saved)

localize9.0ms (0.1%)

Local error

Found 2 expressions with local error:

NewErrorProgram
0.0b
(+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))
2.6b
(+.f64 -2 (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))
Compiler

Compiled 24 to 8 computations (66.7% saved)

series2.0ms (0%)

Counts
2 → 24
Calls

6 calls:

TimeVariablePointExpression
1.0ms
x
@0
(+.f64 -2 (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))
0.0ms
x
@-inf
(+.f64 -2 (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))
0.0ms
x
@inf
(+.f64 -2 (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))
0.0ms
x
@0
(+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))
0.0ms
x
@inf
(+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))

rewrite203.0ms (2.1%)

Algorithm
egg-rewrite-iter-limit
egg-rewrite
batch-egg-rewrite
Rules
96×add-sqr-sqrt_binary64
96×add-sqr-sqrt_binary64
92×add-log-exp_binary64
92×add-log-exp_binary64
90×*-un-lft-identity_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0818
118218
2315318
089
11829
231539
089
066
11296
221506
066
Stop Event
iter limit
unsound
iter limit
unsound
unsound
Counts
2 → 23
Calls
Call 1
Inputs
(+.f64 -2 (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))
(+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (+.f64 -2 (*.f64 2 (cosh.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (cbrt.f64 (+.f64 -2 (*.f64 2 (cosh.f64 x)))) (cbrt.f64 (+.f64 -2 (*.f64 2 (cosh.f64 x))))) (cbrt.f64 (+.f64 -2 (*.f64 2 (cosh.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (+.f64 -2 (*.f64 2 (cosh.f64 x)))) (sqrt.f64 (+.f64 -2 (*.f64 2 (cosh.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 -8 (pow.f64 (*.f64 2 (cosh.f64 x)) 3)) (+.f64 4 (-.f64 (*.f64 (*.f64 2 (cosh.f64 x)) (*.f64 2 (cosh.f64 x))) (*.f64 -2 (*.f64 2 (cosh.f64 x))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 4 (*.f64 (*.f64 2 (cosh.f64 x)) (*.f64 2 (cosh.f64 x)))) (-.f64 -2 (*.f64 2 (cosh.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (+.f64 -2 (*.f64 2 (cosh.f64 x))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (+.f64 -2 (*.f64 2 (cosh.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (*.f64 (+.f64 -2 (*.f64 2 (cosh.f64 x))) (+.f64 -2 (*.f64 2 (cosh.f64 x)))) (+.f64 -2 (*.f64 2 (cosh.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (+.f64 -2 (*.f64 2 (cosh.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (+.f64 -2 (*.f64 2 (cosh.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (+.f64 -2 (*.f64 2 (cosh.f64 x)))))))))
((#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (*.f64 2 (cosh.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (cbrt.f64 (*.f64 2 (cosh.f64 x))) (cbrt.f64 (*.f64 2 (cosh.f64 x)))) (cbrt.f64 (*.f64 2 (cosh.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 2 (cosh.f64 x))) (sqrt.f64 (*.f64 2 (cosh.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (cosh.f64 x))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (exp.f64 x) 3) (pow.f64 (exp.f64 (neg.f64 x)) 3)) (+.f64 (*.f64 (exp.f64 x) (exp.f64 x)) (-.f64 (*.f64 (exp.f64 (neg.f64 x)) (exp.f64 (neg.f64 x))) (*.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 (exp.f64 x) (exp.f64 x)) (*.f64 (exp.f64 (neg.f64 x)) (exp.f64 (neg.f64 x)))) (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 2 (cosh.f64 x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (*.f64 2 (cosh.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (*.f64 (*.f64 2 (cosh.f64 x)) (*.f64 2 (cosh.f64 x))) (*.f64 2 (cosh.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 2 (cosh.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 2 (cosh.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 2 (cosh.f64 x))))))))

simplify70.0ms (0.7%)

Algorithm
egg-herbie
Rules
560×distribute-rgt-out_binary64
421×associate-/l/_binary64
415×unswap-sqr_binary64
410×fma-def_binary64
382×distribute-lft-out_binary64
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
034295
185283
2186279
3525279
42241279
54801279
65972279
Stop Event
node limit
Counts
47 → 43
Calls
Call 1
Inputs
(pow.f64 x 2)
(+.f64 (pow.f64 x 2) (*.f64 1/12 (pow.f64 x 4)))
(+.f64 (*.f64 1/360 (pow.f64 x 6)) (+.f64 (pow.f64 x 2) (*.f64 1/12 (pow.f64 x 4))))
(+.f64 (*.f64 1/360 (pow.f64 x 6)) (+.f64 (pow.f64 x 2) (+.f64 (*.f64 1/12 (pow.f64 x 4)) (*.f64 1/20160 (pow.f64 x 8)))))
(-.f64 (+.f64 (exp.f64 (neg.f64 x)) (exp.f64 x)) 2)
(-.f64 (+.f64 (exp.f64 (neg.f64 x)) (exp.f64 x)) 2)
(-.f64 (+.f64 (exp.f64 (neg.f64 x)) (exp.f64 x)) 2)
(-.f64 (+.f64 (exp.f64 (neg.f64 x)) (exp.f64 x)) 2)
(-.f64 (+.f64 (exp.f64 x) (exp.f64 (*.f64 -1 x))) 2)
(-.f64 (+.f64 (exp.f64 x) (exp.f64 (*.f64 -1 x))) 2)
(-.f64 (+.f64 (exp.f64 x) (exp.f64 (*.f64 -1 x))) 2)
(-.f64 (+.f64 (exp.f64 x) (exp.f64 (*.f64 -1 x))) 2)
2
(+.f64 2 (pow.f64 x 2))
(+.f64 2 (+.f64 (pow.f64 x 2) (*.f64 1/12 (pow.f64 x 4))))
(+.f64 2 (+.f64 (*.f64 1/360 (pow.f64 x 6)) (+.f64 (pow.f64 x 2) (*.f64 1/12 (pow.f64 x 4)))))
(+.f64 (exp.f64 (neg.f64 x)) (exp.f64 x))
(+.f64 (exp.f64 (neg.f64 x)) (exp.f64 x))
(+.f64 (exp.f64 (neg.f64 x)) (exp.f64 x))
(+.f64 (exp.f64 (neg.f64 x)) (exp.f64 x))
(+.f64 (exp.f64 x) (exp.f64 (*.f64 -1 x)))
(+.f64 (exp.f64 x) (exp.f64 (*.f64 -1 x)))
(+.f64 (exp.f64 x) (exp.f64 (*.f64 -1 x)))
(+.f64 (exp.f64 x) (exp.f64 (*.f64 -1 x)))
Outputs
(pow.f64 x 2)
(*.f64 x x)
(+.f64 (pow.f64 x 2) (*.f64 1/12 (pow.f64 x 4)))
(+.f64 (*.f64 x x) (*.f64 1/12 (pow.f64 x 4)))
(fma.f64 x x (*.f64 1/12 (pow.f64 x 4)))
(fma.f64 1/12 (pow.f64 x 4) (*.f64 x x))
(+.f64 (*.f64 1/360 (pow.f64 x 6)) (+.f64 (pow.f64 x 2) (*.f64 1/12 (pow.f64 x 4))))
(fma.f64 1/360 (pow.f64 x 6) (+.f64 (*.f64 x x) (*.f64 1/12 (pow.f64 x 4))))
(fma.f64 1/360 (pow.f64 x 6) (fma.f64 x x (*.f64 1/12 (pow.f64 x 4))))
(fma.f64 1/12 (pow.f64 x 4) (fma.f64 1/360 (pow.f64 x 6) (*.f64 x x)))
(fma.f64 1/360 (pow.f64 x 6) (fma.f64 1/12 (pow.f64 x 4) (*.f64 x x)))
(fma.f64 x x (fma.f64 1/360 (pow.f64 x 6) (*.f64 1/12 (pow.f64 x 4))))
(+.f64 (*.f64 1/360 (pow.f64 x 6)) (+.f64 (pow.f64 x 2) (+.f64 (*.f64 1/12 (pow.f64 x 4)) (*.f64 1/20160 (pow.f64 x 8)))))
(fma.f64 1/360 (pow.f64 x 6) (+.f64 (*.f64 x x) (fma.f64 1/12 (pow.f64 x 4) (*.f64 1/20160 (pow.f64 x 8)))))
(fma.f64 1/360 (pow.f64 x 6) (fma.f64 x x (fma.f64 1/12 (pow.f64 x 4) (*.f64 1/20160 (pow.f64 x 8)))))
(fma.f64 1/360 (pow.f64 x 6) (fma.f64 1/12 (pow.f64 x 4) (fma.f64 x x (*.f64 1/20160 (pow.f64 x 8)))))
(fma.f64 (pow.f64 x 4) (fma.f64 (pow.f64 x 4) 1/20160 1/12) (fma.f64 1/360 (pow.f64 x 6) (*.f64 x x)))
(fma.f64 x x (fma.f64 1/12 (pow.f64 x 4) (fma.f64 1/360 (pow.f64 x 6) (*.f64 1/20160 (pow.f64 x 8)))))
(-.f64 (+.f64 (exp.f64 (neg.f64 x)) (exp.f64 x)) 2)
(+.f64 (exp.f64 (neg.f64 x)) (-.f64 (exp.f64 x) 2))
(+.f64 (exp.f64 (neg.f64 x)) (+.f64 (exp.f64 x) -2))
(-.f64 (+.f64 (exp.f64 (neg.f64 x)) (exp.f64 x)) 2)
(+.f64 (exp.f64 (neg.f64 x)) (-.f64 (exp.f64 x) 2))
(+.f64 (exp.f64 (neg.f64 x)) (+.f64 (exp.f64 x) -2))
(-.f64 (+.f64 (exp.f64 (neg.f64 x)) (exp.f64 x)) 2)
(+.f64 (exp.f64 (neg.f64 x)) (-.f64 (exp.f64 x) 2))
(+.f64 (exp.f64 (neg.f64 x)) (+.f64 (exp.f64 x) -2))
(-.f64 (+.f64 (exp.f64 (neg.f64 x)) (exp.f64 x)) 2)
(+.f64 (exp.f64 (neg.f64 x)) (-.f64 (exp.f64 x) 2))
(+.f64 (exp.f64 (neg.f64 x)) (+.f64 (exp.f64 x) -2))
(-.f64 (+.f64 (exp.f64 x) (exp.f64 (*.f64 -1 x))) 2)
(+.f64 (exp.f64 (neg.f64 x)) (-.f64 (exp.f64 x) 2))
(+.f64 (exp.f64 (neg.f64 x)) (+.f64 (exp.f64 x) -2))
(-.f64 (+.f64 (exp.f64 x) (exp.f64 (*.f64 -1 x))) 2)
(+.f64 (exp.f64 (neg.f64 x)) (-.f64 (exp.f64 x) 2))
(+.f64 (exp.f64 (neg.f64 x)) (+.f64 (exp.f64 x) -2))
(-.f64 (+.f64 (exp.f64 x) (exp.f64 (*.f64 -1 x))) 2)
(+.f64 (exp.f64 (neg.f64 x)) (-.f64 (exp.f64 x) 2))
(+.f64 (exp.f64 (neg.f64 x)) (+.f64 (exp.f64 x) -2))
(-.f64 (+.f64 (exp.f64 x) (exp.f64 (*.f64 -1 x))) 2)
(+.f64 (exp.f64 (neg.f64 x)) (-.f64 (exp.f64 x) 2))
(+.f64 (exp.f64 (neg.f64 x)) (+.f64 (exp.f64 x) -2))
2
(+.f64 2 (pow.f64 x 2))
(+.f64 2 (*.f64 x x))
(fma.f64 x x 2)
(+.f64 2 (+.f64 (pow.f64 x 2) (*.f64 1/12 (pow.f64 x 4))))
(+.f64 (+.f64 2 (*.f64 x x)) (*.f64 1/12 (pow.f64 x 4)))
(+.f64 (*.f64 1/12 (pow.f64 x 4)) (fma.f64 x x 2))
(fma.f64 1/12 (pow.f64 x 4) (fma.f64 x x 2))
(fma.f64 x x (fma.f64 1/12 (pow.f64 x 4) 2))
(+.f64 2 (+.f64 (*.f64 1/360 (pow.f64 x 6)) (+.f64 (pow.f64 x 2) (*.f64 1/12 (pow.f64 x 4)))))
(+.f64 2 (fma.f64 1/360 (pow.f64 x 6) (+.f64 (*.f64 x x) (*.f64 1/12 (pow.f64 x 4)))))
(+.f64 2 (fma.f64 1/360 (pow.f64 x 6) (fma.f64 x x (*.f64 1/12 (pow.f64 x 4)))))
(fma.f64 1/360 (pow.f64 x 6) (fma.f64 1/12 (pow.f64 x 4) (fma.f64 x x 2)))
(fma.f64 x x (fma.f64 1/12 (pow.f64 x 4) (fma.f64 1/360 (pow.f64 x 6) 2)))
(fma.f64 1/360 (pow.f64 x 6) (fma.f64 x x (fma.f64 1/12 (pow.f64 x 4) 2)))
(+.f64 (exp.f64 (neg.f64 x)) (exp.f64 x))
(+.f64 (exp.f64 (neg.f64 x)) (exp.f64 x))
(+.f64 (exp.f64 (neg.f64 x)) (exp.f64 x))
(+.f64 (exp.f64 (neg.f64 x)) (exp.f64 x))
(+.f64 (exp.f64 x) (exp.f64 (*.f64 -1 x)))
(+.f64 (exp.f64 (neg.f64 x)) (exp.f64 x))
(+.f64 (exp.f64 x) (exp.f64 (*.f64 -1 x)))
(+.f64 (exp.f64 (neg.f64 x)) (exp.f64 x))
(+.f64 (exp.f64 x) (exp.f64 (*.f64 -1 x)))
(+.f64 (exp.f64 (neg.f64 x)) (exp.f64 x))
(+.f64 (exp.f64 x) (exp.f64 (*.f64 -1 x)))
(+.f64 (exp.f64 (neg.f64 x)) (exp.f64 x))

localize9.0ms (0.1%)

Local error

Found 2 expressions with local error:

NewErrorProgram
0.0b
(-.f64 (exp.f64 x) 2)
4.5b
(+.f64 (-.f64 (exp.f64 x) 2) (exp.f64 (neg.f64 x)))
Compiler

Compiled 22 to 10 computations (54.5% saved)

series2.0ms (0%)

Counts
2 → 16
Calls

6 calls:

TimeVariablePointExpression
0.0ms
x
@0
(-.f64 (exp.f64 x) 2)
0.0ms
x
@0
(+.f64 (-.f64 (exp.f64 x) 2) (exp.f64 (neg.f64 x)))
0.0ms
x
@inf
(-.f64 (exp.f64 x) 2)
0.0ms
x
@-inf
(-.f64 (exp.f64 x) 2)
0.0ms
x
@-inf
(+.f64 (-.f64 (exp.f64 x) 2) (exp.f64 (neg.f64 x)))

rewrite61.0ms (0.6%)

Algorithm
batch-egg-rewrite
Rules
869×pow1_binary64
818×add-log-exp_binary64
815×log1p-expm1-u_binary64
815×expm1-log1p-u_binary64
804×add-exp-log_binary64
Iterations

Useful iterations: 1 (0.0ms)

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

simplify37.0ms (0.4%)

Algorithm
egg-herbie
Rules
749×unswap-sqr_binary64
682×distribute-rgt-out_binary64
678×distribute-lft-out_binary64
573×associate-*l*_binary64
555×fma-def_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
043202
1107196
2240196
3753191
43557191
Stop Event
node limit
Counts
90 → 92
Calls
Call 1
Inputs
(pow.f64 x 2)
(+.f64 (pow.f64 x 2) (*.f64 1/12 (pow.f64 x 4)))
(+.f64 (*.f64 1/360 (pow.f64 x 6)) (+.f64 (pow.f64 x 2) (*.f64 1/12 (pow.f64 x 4))))
(+.f64 (*.f64 1/360 (pow.f64 x 6)) (+.f64 (pow.f64 x 2) (+.f64 (*.f64 1/12 (pow.f64 x 4)) (*.f64 1/20160 (pow.f64 x 8)))))
(-.f64 (+.f64 (exp.f64 (neg.f64 x)) (exp.f64 x)) 2)
(-.f64 (+.f64 (exp.f64 (neg.f64 x)) (exp.f64 x)) 2)
(-.f64 (+.f64 (exp.f64 (neg.f64 x)) (exp.f64 x)) 2)
(-.f64 (+.f64 (exp.f64 (neg.f64 x)) (exp.f64 x)) 2)
(-.f64 (+.f64 (exp.f64 x) (exp.f64 (*.f64 -1 x))) 2)
(-.f64 (+.f64 (exp.f64 x) (exp.f64 (*.f64 -1 x))) 2)
(-.f64 (+.f64 (exp.f64 x) (exp.f64 (*.f64 -1 x))) 2)
(-.f64 (+.f64 (exp.f64 x) (exp.f64 (*.f64 -1 x))) 2)
-1
(-.f64 x 1)
(-.f64 (+.f64 (*.f64 1/2 (pow.f64 x 2)) x) 1)
(-.f64 (+.f64 (*.f64 1/6 (pow.f64 x 3)) (+.f64 (*.f64 1/2 (pow.f64 x 2)) x)) 1)
Outputs
(pow.f64 x 2)
(*.f64 x x)
(+.f64 (pow.f64 x 2) (*.f64 1/12 (pow.f64 x 4)))
(+.f64 (*.f64 x x) (*.f64 1/12 (pow.f64 x 4)))
(fma.f64 x x (*.f64 1/12 (pow.f64 x 4)))
(fma.f64 1/12 (pow.f64 x 4) (*.f64 x x))
(+.f64 (*.f64 1/360 (pow.f64 x 6)) (+.f64 (pow.f64 x 2) (*.f64 1/12 (pow.f64 x 4))))
(fma.f64 1/360 (pow.f64 x 6) (+.f64 (*.f64 x x) (*.f64 1/12 (pow.f64 x 4))))
(fma.f64 1/360 (pow.f64 x 6) (fma.f64 x x (*.f64 1/12 (pow.f64 x 4))))
(fma.f64 x x (fma.f64 1/12 (pow.f64 x 4) (*.f64 1/360 (pow.f64 x 6))))
(fma.f64 1/360 (pow.f64 x 6) (fma.f64 1/12 (pow.f64 x 4) (*.f64 x x)))
(+.f64 (*.f64 1/360 (pow.f64 x 6)) (+.f64 (pow.f64 x 2) (+.f64 (*.f64 1/12 (pow.f64 x 4)) (*.f64 1/20160 (pow.f64 x 8)))))
(fma.f64 1/360 (pow.f64 x 6) (+.f64 (*.f64 x x) (fma.f64 1/12 (pow.f64 x 4) (*.f64 1/20160 (pow.f64 x 8)))))
(fma.f64 1/360 (pow.f64 x 6) (fma.f64 x x (fma.f64 1/12 (pow.f64 x 4) (*.f64 1/20160 (pow.f64 x 8)))))
(fma.f64 x x (fma.f64 1/360 (pow.f64 x 6) (fma.f64 1/12 (pow.f64 x 4) (*.f64 1/20160 (pow.f64 x 8)))))
(fma.f64 1/12 (pow.f64 x 4) (fma.f64 1/20160 (pow.f64 x 8) (fma.f64 1/360 (pow.f64 x 6) (*.f64 x x))))
(fma.f64 (pow.f64 x 4) (fma.f64 (pow.f64 x 4) 1/20160 1/12) (fma.f64 x x (*.f64 1/360 (pow.f64 x 6))))
(-.f64 (+.f64 (exp.f64 (neg.f64 x)) (exp.f64 x)) 2)
(+.f64 (exp.f64 x) (-.f64 (exp.f64 (neg.f64 x)) 2))
(+.f64 (exp.f64 x) (+.f64 (exp.f64 (neg.f64 x)) -2))
(+.f64 (exp.f64 (neg.f64 x)) (+.f64 (exp.f64 x) -2))
(-.f64 (+.f64 (exp.f64 (neg.f64 x)) (exp.f64 x)) 2)
(+.f64 (exp.f64 x) (-.f64 (exp.f64 (neg.f64 x)) 2))
(+.f64 (exp.f64 x) (+.f64 (exp.f64 (neg.f64 x)) -2))
(+.f64 (exp.f64 (neg.f64 x)) (+.f64 (exp.f64 x) -2))
(-.f64 (+.f64 (exp.f64 (neg.f64 x)) (exp.f64 x)) 2)
(+.f64 (exp.f64 x) (-.f64 (exp.f64 (neg.f64 x)) 2))
(+.f64 (exp.f64 x) (+.f64 (exp.f64 (neg.f64 x)) -2))
(+.f64 (exp.f64 (neg.f64 x)) (+.f64 (exp.f64 x) -2))
(-.f64 (+.f64 (exp.f64 (neg.f64 x)) (exp.f64 x)) 2)
(+.f64 (exp.f64 x) (-.f64 (exp.f64 (neg.f64 x)) 2))
(+.f64 (exp.f64 x) (+.f64 (exp.f64 (neg.f64 x)) -2))
(+.f64 (exp.f64 (neg.f64 x)) (+.f64 (exp.f64 x) -2))
(-.f64 (+.f64 (exp.f64 x) (exp.f64 (*.f64 -1 x))) 2)
(+.f64 (exp.f64 x) (-.f64 (exp.f64 (neg.f64 x)) 2))
(+.f64 (exp.f64 x) (+.f64 (exp.f64 (neg.f64 x)) -2))
(+.f64 (exp.f64 (neg.f64 x)) (+.f64 (exp.f64 x) -2))
(-.f64 (+.f64 (exp.f64 x) (exp.f64 (*.f64 -1 x))) 2)
(+.f64 (exp.f64 x) (-.f64 (exp.f64 (neg.f64 x)) 2))
(+.f64 (exp.f64 x) (+.f64 (exp.f64 (neg.f64 x)) -2))
(+.f64 (exp.f64 (neg.f64 x)) (+.f64 (exp.f64 x) -2))
(-.f64 (+.f64 (exp.f64 x) (exp.f64 (*.f64 -1 x))) 2)
(+.f64 (exp.f64 x) (-.f64 (exp.f64 (neg.f64 x)) 2))
(+.f64 (exp.f64 x) (+.f64 (exp.f64 (neg.f64 x)) -2))
(+.f64 (exp.f64 (neg.f64 x)) (+.f64 (exp.f64 x) -2))
(-.f64 (+.f64 (exp.f64 x) (exp.f64 (*.f64 -1 x))) 2)
(+.f64 (exp.f64 x) (-.f64 (exp.f64 (neg.f64 x)) 2))
(+.f64 (exp.f64 x) (+.f64 (exp.f64 (neg.f64 x)) -2))
(+.f64 (exp.f64 (neg.f64 x)) (+.f64 (exp.f64 x) -2))
-1
(-.f64 x 1)
(+.f64 x -1)
(-.f64 (+.f64 (*.f64 1/2 (pow.f64 x 2)) x) 1)
(+.f64 (fma.f64 1/2 (*.f64 x x) x) -1)
(+.f64 -1 (fma.f64 (*.f64 x x) 1/2 x))
(+.f64 x (fma.f64 x (*.f64 x 1/2) -1))
(fma.f64 (fma.f64 x 1/2 1) x -1)
(fma.f64 x (fma.f64 x 1/2 1) -1)
(-.f64 (+.f64 (*.f64 1/6 (pow.f64 x 3)) (+.f64 (*.f64 1/2 (pow.f64 x 2)) x)) 1)
(+.f64 (fma.f64 1/6 (pow.f64 x 3) (fma.f64 1/2 (*.f64 x x) x)) -1)
(+.f64 -1 (fma.f64 1/6 (pow.f64 x 3) (fma.f64 (*.f64 x x) 1/2 x)))
(+.f64 -1 (fma.f64 x (*.f64 x 1/2) (fma.f64 1/6 (pow.f64 x 3) x)))
(fma.f64 (*.f64 x x) (fma.f64 x 1/6 1/2) (-.f64 x 1))
(fma.f64 (*.f64 x x) (fma.f64 x 1/6 1/2) (+.f64 x -1))

eval156.0ms (1.6%)

Compiler

Compiled 1887 to 1095 computations (42% saved)

prune16.0ms (0.2%)

Pruning

4 alts after pruning (4 fresh and 0 done)

PrunedKeptTotal
New1314135
Fresh000
Picked101
Done101
Total1334137
Error
0b
Counts
137 → 4
Alt Table
Click to see full alt table
StatusErrorProgram
0.6b
(fma.f64 x x (fma.f64 1/360 (pow.f64 x 6) (*.f64 1/12 (pow.f64 x 4))))
0.6b
(fma.f64 1/12 (pow.f64 x 4) (*.f64 x x))
30.0b
(+.f64 -2 (*.f64 2 (cosh.f64 x)))
1.1b
(*.f64 x x)
Compiler

Compiled 34 to 24 computations (29.4% saved)

localize2.0ms (0%)

Compiler

Compiled 5 to 2 computations (60% saved)

localize8.0ms (0.1%)

Local error

Found 1 expressions with local error:

NewErrorProgram
2.6b
(+.f64 -2 (*.f64 2 (cosh.f64 x)))
Compiler

Compiled 16 to 10 computations (37.5% saved)

series3.0ms (0%)

Counts
1 → 12
Calls

3 calls:

TimeVariablePointExpression
1.0ms
x
@-inf
(+.f64 -2 (*.f64 2 (cosh.f64 x)))
1.0ms
x
@inf
(+.f64 -2 (*.f64 2 (cosh.f64 x)))
1.0ms
x
@0
(+.f64 -2 (*.f64 2 (cosh.f64 x)))

rewrite51.0ms (0.5%)

Algorithm
batch-egg-rewrite
Rules
754×pow1_binary64
704×add-log-exp_binary64
702×log1p-expm1-u_binary64
702×expm1-log1p-u_binary64
692×add-exp-log_binary64
Iterations

Useful iterations: 1 (0.0ms)

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

simplify71.0ms (0.7%)

Algorithm
egg-herbie
Rules
508×distribute-rgt-out_binary64
413×unswap-sqr_binary64
382×distribute-lft-out_binary64
338×associate-*l*_binary64
320×*-commutative_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
026168
163162
2142162
3414162
41949162
54406162
65019162
76528162
Stop Event
node limit
Counts
44 → 42
Calls
Call 1
Inputs
(pow.f64 x 2)
(+.f64 (pow.f64 x 2) (*.f64 1/12 (pow.f64 x 4)))
(+.f64 (*.f64 1/360 (pow.f64 x 6)) (+.f64 (pow.f64 x 2) (*.f64 1/12 (pow.f64 x 4))))
(+.f64 (*.f64 1/360 (pow.f64 x 6)) (+.f64 (pow.f64 x 2) (+.f64 (*.f64 1/12 (pow.f64 x 4)) (*.f64 1/20160 (pow.f64 x 8)))))
(-.f64 (+.f64 (/.f64 1 (exp.f64 x)) (exp.f64 x)) 2)
(-.f64 (+.f64 (/.f64 1 (exp.f64 x)) (exp.f64 x)) 2)
(-.f64 (+.f64 (/.f64 1 (exp.f64 x)) (exp.f64 x)) 2)
(-.f64 (+.f64 (/.f64 1 (exp.f64 x)) (exp.f64 x)) 2)
(-.f64 (+.f64 (/.f64 1 (exp.f64 x)) (exp.f64 x)) 2)
(-.f64 (+.f64 (/.f64 1 (exp.f64 x)) (exp.f64 x)) 2)
(-.f64 (+.f64 (/.f64 1 (exp.f64 x)) (exp.f64 x)) 2)
(-.f64 (+.f64 (/.f64 1 (exp.f64 x)) (exp.f64 x)) 2)
Outputs
(pow.f64 x 2)
(*.f64 x x)
(+.f64 (pow.f64 x 2) (*.f64 1/12 (pow.f64 x 4)))
(+.f64 (*.f64 x x) (*.f64 1/12 (pow.f64 x 4)))
(fma.f64 x x (*.f64 1/12 (pow.f64 x 4)))
(fma.f64 1/12 (pow.f64 x 4) (*.f64 x x))
(+.f64 (*.f64 1/360 (pow.f64 x 6)) (+.f64 (pow.f64 x 2) (*.f64 1/12 (pow.f64 x 4))))
(fma.f64 1/360 (pow.f64 x 6) (+.f64 (*.f64 x x) (*.f64 1/12 (pow.f64 x 4))))
(fma.f64 1/360 (pow.f64 x 6) (fma.f64 x x (*.f64 1/12 (pow.f64 x 4))))
(fma.f64 x x (fma.f64 1/12 (pow.f64 x 4) (*.f64 1/360 (pow.f64 x 6))))
(fma.f64 1/360 (pow.f64 x 6) (fma.f64 1/12 (pow.f64 x 4) (*.f64 x x)))
(+.f64 (*.f64 1/360 (pow.f64 x 6)) (+.f64 (pow.f64 x 2) (+.f64 (*.f64 1/12 (pow.f64 x 4)) (*.f64 1/20160 (pow.f64 x 8)))))
(fma.f64 1/360 (pow.f64 x 6) (+.f64 (*.f64 x x) (fma.f64 1/12 (pow.f64 x 4) (*.f64 1/20160 (pow.f64 x 8)))))
(fma.f64 1/360 (pow.f64 x 6) (fma.f64 x x (fma.f64 1/12 (pow.f64 x 4) (*.f64 1/20160 (pow.f64 x 8)))))
(fma.f64 1/360 (pow.f64 x 6) (fma.f64 1/12 (pow.f64 x 4) (fma.f64 1/20160 (pow.f64 x 8) (*.f64 x x))))
(fma.f64 (pow.f64 x 4) (fma.f64 (pow.f64 x 4) 1/20160 1/12) (fma.f64 1/360 (pow.f64 x 6) (*.f64 x x)))
(fma.f64 1/12 (pow.f64 x 4) (fma.f64 1/360 (pow.f64 x 6) (fma.f64 x x (*.f64 1/20160 (pow.f64 x 8)))))
(-.f64 (+.f64 (/.f64 1 (exp.f64 x)) (exp.f64 x)) 2)
(+.f64 (exp.f64 (neg.f64 x)) (-.f64 (exp.f64 x) 2))
(+.f64 (exp.f64 x) (+.f64 (exp.f64 (neg.f64 x)) -2))
(+.f64 (exp.f64 (neg.f64 x)) (+.f64 (exp.f64 x) -2))
(-.f64 (+.f64 (/.f64 1 (exp.f64 x)) (exp.f64 x)) 2)
(+.f64 (exp.f64 (neg.f64 x)) (-.f64 (exp.f64 x) 2))
(+.f64 (exp.f64 x) (+.f64 (exp.f64 (neg.f64 x)) -2))
(+.f64 (exp.f64 (neg.f64 x)) (+.f64 (exp.f64 x) -2))
(-.f64 (+.f64 (/.f64 1 (exp.f64 x)) (exp.f64 x)) 2)
(+.f64 (exp.f64 (neg.f64 x)) (-.f64 (exp.f64 x) 2))
(+.f64 (exp.f64 x) (+.f64 (exp.f64 (neg.f64 x)) -2))
(+.f64 (exp.f64 (neg.f64 x)) (+.f64 (exp.f64 x) -2))
(-.f64 (+.f64 (/.f64 1 (exp.f64 x)) (exp.f64 x)) 2)
(+.f64 (exp.f64 (neg.f64 x)) (-.f64 (exp.f64 x) 2))
(+.f64 (exp.f64 x) (+.f64 (exp.f64 (neg.f64 x)) -2))
(+.f64 (exp.f64 (neg.f64 x)) (+.f64 (exp.f64 x) -2))
(-.f64 (+.f64 (/.f64 1 (exp.f64 x)) (exp.f64 x)) 2)
(+.f64 (exp.f64 (neg.f64 x)) (-.f64 (exp.f64 x) 2))
(+.f64 (exp.f64 x) (+.f64 (exp.f64 (neg.f64 x)) -2))
(+.f64 (exp.f64 (neg.f64 x)) (+.f64 (exp.f64 x) -2))
(-.f64 (+.f64 (/.f64 1 (exp.f64 x)) (exp.f64 x)) 2)
(+.f64 (exp.f64 (neg.f64 x)) (-.f64 (exp.f64 x) 2))
(+.f64 (exp.f64 x) (+.f64 (exp.f64 (neg.f64 x)) -2))
(+.f64 (exp.f64 (neg.f64 x)) (+.f64 (exp.f64 x) -2))
(-.f64 (+.f64 (/.f64 1 (exp.f64 x)) (exp.f64 x)) 2)
(+.f64 (exp.f64 (neg.f64 x)) (-.f64 (exp.f64 x) 2))
(+.f64 (exp.f64 x) (+.f64 (exp.f64 (neg.f64 x)) -2))
(+.f64 (exp.f64 (neg.f64 x)) (+.f64 (exp.f64 x) -2))
(-.f64 (+.f64 (/.f64 1 (exp.f64 x)) (exp.f64 x)) 2)
(+.f64 (exp.f64 (neg.f64 x)) (-.f64 (exp.f64 x) 2))
(+.f64 (exp.f64 x) (+.f64 (exp.f64 (neg.f64 x)) -2))
(+.f64 (exp.f64 (neg.f64 x)) (+.f64 (exp.f64 x) -2))

localize8.0ms (0.1%)

Local error

Found 1 expressions with local error:

NewErrorProgram
0.0b
(fma.f64 1/12 (pow.f64 x 4) (*.f64 x x))
Compiler

Compiled 18 to 10 computations (44.4% saved)

series2.0ms (0%)

Counts
1 → 12
Calls

3 calls:

TimeVariablePointExpression
1.0ms
x
@-inf
(fma.f64 1/12 (pow.f64 x 4) (*.f64 x x))
1.0ms
x
@inf
(fma.f64 1/12 (pow.f64 x 4) (*.f64 x x))
1.0ms
x
@0
(fma.f64 1/12 (pow.f64 x 4) (*.f64 x x))

rewrite43.0ms (0.4%)

Algorithm
batch-egg-rewrite
Rules
562×pow1_binary64
525×add-log-exp_binary64
525×log1p-expm1-u_binary64
525×expm1-log1p-u_binary64
513×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

simplify174.0ms (1.8%)

Algorithm
egg-herbie
Rules
1057×sqr-pow_binary64
963×fma-def_binary64
506×pow-sqr_binary64
451×cube-prod_binary64
363×fabs-mul_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
09135
118117
238117
386117
4293117
51235117
62593117
73274117
83485117
93726117
104023117
114409117
124874117
135415117
146041117
156792117
167102117
177324117
187520117
197578117
207602117
Stop Event
node limit
Counts
33 → 26
Calls
Call 1
Inputs
(pow.f64 x 2)
(+.f64 (pow.f64 x 2) (*.f64 1/12 (pow.f64 x 4)))
(+.f64 (pow.f64 x 2) (*.f64 1/12 (pow.f64 x 4)))
(+.f64 (pow.f64 x 2) (*.f64 1/12 (pow.f64 x 4)))
(*.f64 1/12 (pow.f64 x 4))
(+.f64 (pow.f64 x 2) (*.f64 1/12 (pow.f64 x 4)))
(+.f64 (pow.f64 x 2) (*.f64 1/12 (pow.f64 x 4)))
(+.f64 (pow.f64 x 2) (*.f64 1/12 (pow.f64 x 4)))
(*.f64 1/12 (pow.f64 x 4))
(+.f64 (pow.f64 x 2) (*.f64 1/12 (pow.f64 x 4)))
(+.f64 (pow.f64 x 2) (*.f64 1/12 (pow.f64 x 4)))
(+.f64 (pow.f64 x 2) (*.f64 1/12 (pow.f64 x 4)))
Outputs
(pow.f64 x 2)
(*.f64 x x)
(+.f64 (pow.f64 x 2) (*.f64 1/12 (pow.f64 x 4)))
(+.f64 (*.f64 x x) (*.f64 1/12 (pow.f64 x 4)))
(fma.f64 1/12 (pow.f64 x 4) (*.f64 x x))
(fma.f64 x x (*.f64 1/12 (pow.f64 x 4)))
(*.f64 x (fma.f64 1/12 (pow.f64 x 3) x))
(+.f64 (pow.f64 x 2) (*.f64 1/12 (pow.f64 x 4)))
(+.f64 (*.f64 x x) (*.f64 1/12 (pow.f64 x 4)))
(fma.f64 1/12 (pow.f64 x 4) (*.f64 x x))
(fma.f64 x x (*.f64 1/12 (pow.f64 x 4)))
(*.f64 x (fma.f64 1/12 (pow.f64 x 3) x))
(+.f64 (pow.f64 x 2) (*.f64 1/12 (pow.f64 x 4)))
(+.f64 (*.f64 x x) (*.f64 1/12 (pow.f64 x 4)))
(fma.f64 1/12 (pow.f64 x 4) (*.f64 x x))
(fma.f64 x x (*.f64 1/12 (pow.f64 x 4)))
(*.f64 x (fma.f64 1/12 (pow.f64 x 3) x))
(*.f64 1/12 (pow.f64 x 4))
(+.f64 (pow.f64 x 2) (*.f64 1/12 (pow.f64 x 4)))
(+.f64 (*.f64 x x) (*.f64 1/12 (pow.f64 x 4)))
(fma.f64 1/12 (pow.f64 x 4) (*.f64 x x))
(fma.f64 x x (*.f64 1/12 (pow.f64 x 4)))
(*.f64 x (fma.f64 1/12 (pow.f64 x 3) x))
(+.f64 (pow.f64 x 2) (*.f64 1/12 (pow.f64 x 4)))
(+.f64 (*.f64 x x) (*.f64 1/12 (pow.f64 x 4)))
(fma.f64 1/12 (pow.f64 x 4) (*.f64 x x))
(fma.f64 x x (*.f64 1/12 (pow.f64 x 4)))
(*.f64 x (fma.f64 1/12 (pow.f64 x 3) x))
(+.f64 (pow.f64 x 2) (*.f64 1/12 (pow.f64 x 4)))
(+.f64 (*.f64 x x) (*.f64 1/12 (pow.f64 x 4)))
(fma.f64 1/12 (pow.f64 x 4) (*.f64 x x))
(fma.f64 x x (*.f64 1/12 (pow.f64 x 4)))
(*.f64 x (fma.f64 1/12 (pow.f64 x 3) x))
(*.f64 1/12 (pow.f64 x 4))
(+.f64 (pow.f64 x 2) (*.f64 1/12 (pow.f64 x 4)))
(+.f64 (*.f64 x x) (*.f64 1/12 (pow.f64 x 4)))
(fma.f64 1/12 (pow.f64 x 4) (*.f64 x x))
(fma.f64 x x (*.f64 1/12 (pow.f64 x 4)))
(*.f64 x (fma.f64 1/12 (pow.f64 x 3) x))
(+.f64 (pow.f64 x 2) (*.f64 1/12 (pow.f64 x 4)))
(+.f64 (*.f64 x x) (*.f64 1/12 (pow.f64 x 4)))
(fma.f64 1/12 (pow.f64 x 4) (*.f64 x x))
(fma.f64 x x (*.f64 1/12 (pow.f64 x 4)))
(*.f64 x (fma.f64 1/12 (pow.f64 x 3) x))
(+.f64 (pow.f64 x 2) (*.f64 1/12 (pow.f64 x 4)))
(+.f64 (*.f64 x x) (*.f64 1/12 (pow.f64 x 4)))
(fma.f64 1/12 (pow.f64 x 4) (*.f64 x x))
(fma.f64 x x (*.f64 1/12 (pow.f64 x 4)))
(*.f64 x (fma.f64 1/12 (pow.f64 x 3) x))

localize22.0ms (0.2%)

Local error

Found 2 expressions with local error:

NewErrorProgram
0.0b
(fma.f64 1/360 (pow.f64 x 6) (*.f64 1/12 (pow.f64 x 4)))
0.1b
(*.f64 1/12 (pow.f64 x 4))
Compiler

Compiled 40 to 30 computations (25% saved)

series4.0ms (0%)

Counts
2 → 12
Calls

6 calls:

TimeVariablePointExpression
1.0ms
x
@inf
(fma.f64 1/360 (pow.f64 x 6) (*.f64 1/12 (pow.f64 x 4)))
1.0ms
x
@-inf
(fma.f64 1/360 (pow.f64 x 6) (*.f64 1/12 (pow.f64 x 4)))
1.0ms
x
@0
(*.f64 1/12 (pow.f64 x 4))
1.0ms
x
@0
(fma.f64 1/360 (pow.f64 x 6) (*.f64 1/12 (pow.f64 x 4)))
1.0ms
x
@inf
(*.f64 1/12 (pow.f64 x 4))

rewrite60.0ms (0.6%)

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

Useful iterations: 0 (0.0ms)

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

simplify136.0ms (1.4%)

Algorithm
egg-herbie
Rules
811×sqr-pow_binary64
580×cube-prod_binary64
503×associate-*l*_binary64
467×unswap-sqr_binary64
440×fma-def_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
011147
123147
248147
3117147
4391147
51750147
63196147
73534147
83804147
94068147
104414147
114871147
125439147
136084147
146848147
157295147
167793147
Stop Event
node limit
Counts
44 → 35
Calls
Call 1
Inputs
(*.f64 1/12 (pow.f64 x 4))
(+.f64 (*.f64 1/360 (pow.f64 x 6)) (*.f64 1/12 (pow.f64 x 4)))
(+.f64 (*.f64 1/360 (pow.f64 x 6)) (*.f64 1/12 (pow.f64 x 4)))
(+.f64 (*.f64 1/360 (pow.f64 x 6)) (*.f64 1/12 (pow.f64 x 4)))
(*.f64 1/360 (pow.f64 x 6))
(+.f64 (*.f64 1/360 (pow.f64 x 6)) (*.f64 1/12 (pow.f64 x 4)))
(+.f64 (*.f64 1/360 (pow.f64 x 6)) (*.f64 1/12 (pow.f64 x 4)))
(+.f64 (*.f64 1/360 (pow.f64 x 6)) (*.f64 1/12 (pow.f64 x 4)))
(*.f64 1/360 (pow.f64 x 6))
(+.f64 (*.f64 1/360 (pow.f64 x 6)) (*.f64 1/12 (pow.f64 x 4)))
(+.f64 (*.f64 1/360 (pow.f64 x 6)) (*.f64 1/12 (pow.f64 x 4)))
(+.f64 (*.f64 1/360 (pow.f64 x 6)) (*.f64 1/12 (pow.f64 x 4)))
Outputs
(*.f64 1/12 (pow.f64 x 4))
(+.f64 (*.f64 1/360 (pow.f64 x 6)) (*.f64 1/12 (pow.f64 x 4)))
(fma.f64 1/360 (pow.f64 x 6) (*.f64 1/12 (pow.f64 x 4)))
(fma.f64 1/12 (pow.f64 x 4) (*.f64 1/360 (pow.f64 x 6)))
(*.f64 (pow.f64 x 4) (fma.f64 1/360 (*.f64 x x) 1/12))
(+.f64 (*.f64 1/360 (pow.f64 x 6)) (*.f64 1/12 (pow.f64 x 4)))
(fma.f64 1/360 (pow.f64 x 6) (*.f64 1/12 (pow.f64 x 4)))
(fma.f64 1/12 (pow.f64 x 4) (*.f64 1/360 (pow.f64 x 6)))
(*.f64 (pow.f64 x 4) (fma.f64 1/360 (*.f64 x x) 1/12))
(+.f64 (*.f64 1/360 (pow.f64 x 6)) (*.f64 1/12 (pow.f64 x 4)))
(fma.f64 1/360 (pow.f64 x 6) (*.f64 1/12 (pow.f64 x 4)))
(fma.f64 1/12 (pow.f64 x 4) (*.f64 1/360 (pow.f64 x 6)))
(*.f64 (pow.f64 x 4) (fma.f64 1/360 (*.f64 x x) 1/12))
(*.f64 1/360 (pow.f64 x 6))
(+.f64 (*.f64 1/360 (pow.f64 x 6)) (*.f64 1/12 (pow.f64 x 4)))
(fma.f64 1/360 (pow.f64 x 6) (*.f64 1/12 (pow.f64 x 4)))
(fma.f64 1/12 (pow.f64 x 4) (*.f64 1/360 (pow.f64 x 6)))
(*.f64 (pow.f64 x 4) (fma.f64 1/360 (*.f64 x x) 1/12))
(+.f64 (*.f64 1/360 (pow.f64 x 6)) (*.f64 1/12 (pow.f64 x 4)))
(fma.f64 1/360 (pow.f64 x 6) (*.f64 1/12 (pow.f64 x 4)))
(fma.f64 1/12 (pow.f64 x 4) (*.f64 1/360 (pow.f64 x 6)))
(*.f64 (pow.f64 x 4) (fma.f64 1/360 (*.f64 x x) 1/12))
(+.f64 (*.f64 1/360 (pow.f64 x 6)) (*.f64 1/12 (pow.f64 x 4)))
(fma.f64 1/360 (pow.f64 x 6) (*.f64 1/12 (pow.f64 x 4)))
(fma.f64 1/12 (pow.f64 x 4) (*.f64 1/360 (pow.f64 x 6)))
(*.f64 (pow.f64 x 4) (fma.f64 1/360 (*.f64 x x) 1/12))
(*.f64 1/360 (pow.f64 x 6))
(+.f64 (*.f64 1/360 (pow.f64 x 6)) (*.f64 1/12 (pow.f64 x 4)))
(fma.f64 1/360 (pow.f64 x 6) (*.f64 1/12 (pow.f64 x 4)))
(fma.f64 1/12 (pow.f64 x 4) (*.f64 1/360 (pow.f64 x 6)))
(*.f64 (pow.f64 x 4) (fma.f64 1/360 (*.f64 x x) 1/12))
(+.f64 (*.f64 1/360 (pow.f64 x 6)) (*.f64 1/12 (pow.f64 x 4)))
(fma.f64 1/360 (pow.f64 x 6) (*.f64 1/12 (pow.f64 x 4)))
(fma.f64 1/12 (pow.f64 x 4) (*.f64 1/360 (pow.f64 x 6)))
(*.f64 (pow.f64 x 4) (fma.f64 1/360 (*.f64 x x) 1/12))
(+.f64 (*.f64 1/360 (pow.f64 x 6)) (*.f64 1/12 (pow.f64 x 4)))
(fma.f64 1/360 (pow.f64 x 6) (*.f64 1/12 (pow.f64 x 4)))
(fma.f64 1/12 (pow.f64 x 4) (*.f64 1/360 (pow.f64 x 6)))
(*.f64 (pow.f64 x 4) (fma.f64 1/360 (*.f64 x x) 1/12))

eval34.0ms (0.4%)

Compiler

Compiled 1439 to 1030 computations (28.4% saved)

prune13.0ms (0.1%)

Pruning

6 alts after pruning (4 fresh and 2 done)

PrunedKeptTotal
New994103
Fresh000
Picked101
Done123
Total1016107
Error
0b
Counts
107 → 6
Alt Table
Click to see full alt table
StatusErrorProgram
1.1b
(*.f64 x x)
0.6b
(fma.f64 x x (*.f64 1/12 (pow.f64 x 4)))
0.6b
(+.f64 (*.f64 x x) (*.f64 1/12 (pow.f64 x 4)))
31.0b
(*.f64 1/12 (pow.f64 x 4))
0.6b
(fma.f64 x x (*.f64 (pow.f64 x 4) (fma.f64 1/360 (*.f64 x x) 1/12)))
30.0b
(+.f64 -2 (*.f64 2 (cosh.f64 x)))
Compiler

Compiled 50 to 35 computations (30% saved)

localize5.0ms (0.1%)

Local error

Found 1 expressions with local error:

NewErrorProgram
0.1b
(*.f64 1/12 (pow.f64 x 4))
Compiler

Compiled 12 to 9 computations (25% saved)

localize11.0ms (0.1%)

Local error

Found 2 expressions with local error:

NewErrorProgram
0.0b
(+.f64 (*.f64 x x) (*.f64 1/12 (pow.f64 x 4)))
0.1b
(*.f64 1/12 (pow.f64 x 4))
Compiler

Compiled 24 to 15 computations (37.5% saved)

series1.0ms (0%)

Counts
1 → 12
Calls

3 calls:

TimeVariablePointExpression
0.0ms
x
@inf
(+.f64 (*.f64 x x) (*.f64 1/12 (pow.f64 x 4)))
0.0ms
x
@0
(+.f64 (*.f64 x x) (*.f64 1/12 (pow.f64 x 4)))
0.0ms
x
@-inf
(+.f64 (*.f64 x x) (*.f64 1/12 (pow.f64 x 4)))

rewrite66.0ms (0.7%)

Algorithm
batch-egg-rewrite
Rules
799×pow1_binary64
752×add-log-exp_binary64
752×log1p-expm1-u_binary64
752×expm1-log1p-u_binary64
735×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0811
117811
2216611
Stop Event
node limit
Counts
1 → 35
Calls
Call 1
Inputs
(+.f64 (*.f64 x x) (*.f64 1/12 (pow.f64 x 4)))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (fma.f64 1/12 (pow.f64 x 4) (*.f64 x x))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (/.f64 (pow.f64 x 4) (+.f64 (*.f64 x x) (*.f64 -1/12 (pow.f64 x 4)))) (/.f64 (*.f64 (pow.f64 x 8) 1/144) (+.f64 (*.f64 x x) (*.f64 -1/12 (pow.f64 x 4)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (fma.f64 1/12 (pow.f64 x 4) (*.f64 x x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (fma.f64 1/12 (pow.f64 x 4) (*.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (fma.f64 1/12 (pow.f64 x 4) (*.f64 x x))) (pow.f64 (cbrt.f64 (fma.f64 1/12 (pow.f64 x 4) (*.f64 x x))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (fma.f64 1/12 (pow.f64 x 4) (*.f64 x x))) 2) (cbrt.f64 (fma.f64 1/12 (pow.f64 x 4) (*.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (hypot.f64 x (*.f64 (*.f64 x x) (sqrt.f64 1/12))) (hypot.f64 x (*.f64 (*.f64 x x) (sqrt.f64 1/12))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (pow.f64 x 6) (*.f64 (pow.f64 (pow.f64 x 4) 3) 1/1728)) (/.f64 1 (-.f64 (+.f64 (pow.f64 x 4) (*.f64 (pow.f64 x 8) 1/144)) (*.f64 (pow.f64 x 6) 1/12))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 (pow.f64 x 4) (*.f64 (pow.f64 x 8) 1/144)) (/.f64 1 (+.f64 (*.f64 x x) (*.f64 -1/12 (pow.f64 x 4)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (-.f64 (+.f64 (pow.f64 x 4) (*.f64 (pow.f64 x 8) 1/144)) (*.f64 (pow.f64 x 6) 1/12)) (+.f64 (pow.f64 x 6) (*.f64 (pow.f64 (pow.f64 x 4) 3) 1/1728))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (+.f64 (*.f64 x x) (*.f64 -1/12 (pow.f64 x 4))) (-.f64 (pow.f64 x 4) (*.f64 (pow.f64 x 8) 1/144))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 x 6) (*.f64 (pow.f64 (pow.f64 x 4) 3) 1/1728)) (-.f64 (+.f64 (pow.f64 x 4) (*.f64 (pow.f64 x 8) 1/144)) (*.f64 (pow.f64 x 6) 1/12)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 x 6) (*.f64 (pow.f64 (pow.f64 x 4) 3) 1/1728)) (+.f64 (*.f64 (pow.f64 x 8) 1/144) (-.f64 (pow.f64 x 4) (*.f64 (pow.f64 x 6) 1/12))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 x 4) (*.f64 (pow.f64 x 8) 1/144)) (+.f64 (*.f64 x x) (*.f64 -1/12 (pow.f64 x 4))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (+.f64 (pow.f64 x 6) (*.f64 (pow.f64 (pow.f64 x 4) 3) 1/1728))) (neg.f64 (-.f64 (+.f64 (pow.f64 x 4) (*.f64 (pow.f64 x 8) 1/144)) (*.f64 (pow.f64 x 6) 1/12))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (-.f64 (pow.f64 x 4) (*.f64 (pow.f64 x 8) 1/144))) (neg.f64 (+.f64 (*.f64 x x) (*.f64 -1/12 (pow.f64 x 4)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 (pow.f64 x 8) 1/144) (pow.f64 x 4)) (-.f64 (*.f64 1/12 (pow.f64 x 4)) (*.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (fma.f64 1/12 (pow.f64 x 4) (*.f64 x x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (fma.f64 1/12 (pow.f64 x 4) (*.f64 x x)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (fma.f64 1/12 (pow.f64 x 4) (*.f64 x x))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (hypot.f64 x (*.f64 (*.f64 x x) (sqrt.f64 1/12))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (fma.f64 1/12 (pow.f64 x 4) (*.f64 x x)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (fma.f64 1/12 (pow.f64 x 4) (*.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (fma.f64 1/12 (pow.f64 x 4) (*.f64 x x)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (fma.f64 1/12 (pow.f64 x 4) (*.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (fma.f64 1/12 (pow.f64 x 4) (*.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (fma.f64 1/12 (pow.f64 x 4) (*.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 x x (*.f64 1/12 (pow.f64 x 4)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1/12 (pow.f64 x 4) (*.f64 x x))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 x 4) 1/12 (*.f64 x x))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (*.f64 x x) (*.f64 1/12 (pow.f64 x 4)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (*.f64 1/12 (pow.f64 x 4)) (*.f64 x x))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (pow.f64 x 4)) (pow.f64 (cbrt.f64 x) 2) (*.f64 1/12 (pow.f64 x 4)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (*.f64 (pow.f64 x 8) 1/144)) (cbrt.f64 (*.f64 1/12 (pow.f64 x 4))) (*.f64 x x))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (*.f64 x x) (sqrt.f64 1/12)) (*.f64 (*.f64 x x) (sqrt.f64 1/12)) (*.f64 x x))))))

simplify178.0ms (1.8%)

Algorithm
egg-herbie
Rules
1057×sqr-pow_binary64
963×fma-def_binary64
506×pow-sqr_binary64
451×cube-prod_binary64
363×fabs-mul_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
09135
118117
238117
386117
4293117
51235117
62593117
73274117
83485117
93726117
104023117
114409117
124874117
135415117
146041117
156792117
167102117
177324117
187520117
197578117
207602117
Stop Event
node limit
Counts
47 → 40
Calls
Call 1
Inputs
(pow.f64 x 2)
(+.f64 (pow.f64 x 2) (*.f64 1/12 (pow.f64 x 4)))
(+.f64 (pow.f64 x 2) (*.f64 1/12 (pow.f64 x 4)))
(+.f64 (pow.f64 x 2) (*.f64 1/12 (pow.f64 x 4)))
(*.f64 1/12 (pow.f64 x 4))
(+.f64 (pow.f64 x 2) (*.f64 1/12 (pow.f64 x 4)))
(+.f64 (pow.f64 x 2) (*.f64 1/12 (pow.f64 x 4)))
(+.f64 (pow.f64 x 2) (*.f64 1/12 (pow.f64 x 4)))
(*.f64 1/12 (pow.f64 x 4))
(+.f64 (pow.f64 x 2) (*.f64 1/12 (pow.f64 x 4)))
(+.f64 (pow.f64 x 2) (*.f64 1/12 (pow.f64 x 4)))
(+.f64 (pow.f64 x 2) (*.f64 1/12 (pow.f64 x 4)))
Outputs
(pow.f64 x 2)
(*.f64 x x)
(+.f64 (pow.f64 x 2) (*.f64 1/12 (pow.f64 x 4)))
(+.f64 (*.f64 x x) (*.f64 1/12 (pow.f64 x 4)))
(fma.f64 1/12 (pow.f64 x 4) (*.f64 x x))
(fma.f64 x x (*.f64 1/12 (pow.f64 x 4)))
(*.f64 x (fma.f64 1/12 (pow.f64 x 3) x))
(+.f64 (pow.f64 x 2) (*.f64 1/12 (pow.f64 x 4)))
(+.f64 (*.f64 x x) (*.f64 1/12 (pow.f64 x 4)))
(fma.f64 1/12 (pow.f64 x 4) (*.f64 x x))
(fma.f64 x x (*.f64 1/12 (pow.f64 x 4)))
(*.f64 x (fma.f64 1/12 (pow.f64 x 3) x))
(+.f64 (pow.f64 x 2) (*.f64 1/12 (pow.f64 x 4)))
(+.f64 (*.f64 x x) (*.f64 1/12 (pow.f64 x 4)))
(fma.f64 1/12 (pow.f64 x 4) (*.f64 x x))
(fma.f64 x x (*.f64 1/12 (pow.f64 x 4)))
(*.f64 x (fma.f64 1/12 (pow.f64 x 3) x))
(*.f64 1/12 (pow.f64 x 4))
(+.f64 (pow.f64 x 2) (*.f64 1/12 (pow.f64 x 4)))
(+.f64 (*.f64 x x) (*.f64 1/12 (pow.f64 x 4)))
(fma.f64 1/12 (pow.f64 x 4) (*.f64 x x))
(fma.f64 x x (*.f64 1/12 (pow.f64 x 4)))
(*.f64 x (fma.f64 1/12 (pow.f64 x 3) x))
(+.f64 (pow.f64 x 2) (*.f64 1/12 (pow.f64 x 4)))
(+.f64 (*.f64 x x) (*.f64 1/12 (pow.f64 x 4)))
(fma.f64 1/12 (pow.f64 x 4) (*.f64 x x))
(fma.f64 x x (*.f64 1/12 (pow.f64 x 4)))
(*.f64 x (fma.f64 1/12 (pow.f64 x 3) x))
(+.f64 (pow.f64 x 2) (*.f64 1/12 (pow.f64 x 4)))
(+.f64 (*.f64 x x) (*.f64 1/12 (pow.f64 x 4)))
(fma.f64 1/12 (pow.f64 x 4) (*.f64 x x))
(fma.f64 x x (*.f64 1/12 (pow.f64 x 4)))
(*.f64 x (fma.f64 1/12 (pow.f64 x 3) x))
(*.f64 1/12 (pow.f64 x 4))
(+.f64 (pow.f64 x 2) (*.f64 1/12 (pow.f64 x 4)))
(+.f64 (*.f64 x x) (*.f64 1/12 (pow.f64 x 4)))
(fma.f64 1/12 (pow.f64 x 4) (*.f64 x x))
(fma.f64 x x (*.f64 1/12 (pow.f64 x 4)))
(*.f64 x (fma.f64 1/12 (pow.f64 x 3) x))
(+.f64 (pow.f64 x 2) (*.f64 1/12 (pow.f64 x 4)))
(+.f64 (*.f64 x x) (*.f64 1/12 (pow.f64 x 4)))
(fma.f64 1/12 (pow.f64 x 4) (*.f64 x x))
(fma.f64 x x (*.f64 1/12 (pow.f64 x 4)))
(*.f64 x (fma.f64 1/12 (pow.f64 x 3) x))
(+.f64 (pow.f64 x 2) (*.f64 1/12 (pow.f64 x 4)))
(+.f64 (*.f64 x x) (*.f64 1/12 (pow.f64 x 4)))
(fma.f64 1/12 (pow.f64 x 4) (*.f64 x x))
(fma.f64 x x (*.f64 1/12 (pow.f64 x 4)))
(*.f64 x (fma.f64 1/12 (pow.f64 x 3) x))

localize9.0ms (0.1%)

Local error

Found 1 expressions with local error:

NewErrorProgram
0.1b
(*.f64 1/12 (pow.f64 x 4))
Compiler

Compiled 20 to 14 computations (30% saved)

localize16.0ms (0.2%)

Local error

Found 2 expressions with local error:

NewErrorProgram
0.0b
(fma.f64 1/360 (*.f64 x x) 1/12)
0.1b
(*.f64 (pow.f64 x 4) (fma.f64 1/360 (*.f64 x x) 1/12))
Compiler

Compiled 40 to 23 computations (42.5% saved)

series2.0ms (0%)

Counts
2 → 24
Calls

6 calls:

TimeVariablePointExpression
1.0ms
x
@0
(*.f64 (pow.f64 x 4) (fma.f64 1/360 (*.f64 x x) 1/12))
1.0ms
x
@inf
(*.f64 (pow.f64 x 4) (fma.f64 1/360 (*.f64 x x) 1/12))
0.0ms
x
@-inf
(*.f64 (pow.f64 x 4) (fma.f64 1/360 (*.f64 x x) 1/12))
0.0ms
x
@inf
(fma.f64 1/360 (*.f64 x x) 1/12)
0.0ms
x
@0
(fma.f64 1/360 (*.f64 x x) 1/12)

rewrite64.0ms (0.7%)

Algorithm
batch-egg-rewrite
Rules
740×pow1_binary64
692×add-log-exp_binary64
692×log1p-expm1-u_binary64
692×expm1-log1p-u_binary64
678×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0922
118622
2195422
Stop Event
node limit
Counts
2 → 36
Calls
Call 1
Inputs
(*.f64 (pow.f64 x 4) (fma.f64 1/360 (*.f64 x x) 1/12))
(fma.f64 1/360 (*.f64 x x) 1/12)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (*.f64 1/360 (*.f64 x x)) (pow.f64 x 4)) (*.f64 1/12 (pow.f64 x 4)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (pow.f64 x 4) (*.f64 1/360 (*.f64 x x))) (*.f64 (pow.f64 x 4) 1/12))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 (pow.f64 x 4) (fma.f64 1/360 (*.f64 x x) 1/12))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (pow.f64 x 4) (fma.f64 1/360 (*.f64 x x) 1/12)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 (pow.f64 x 4) (fma.f64 1/360 (*.f64 x x) 1/12)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 (pow.f64 x 4) (fma.f64 1/360 (*.f64 x x) 1/12))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 (pow.f64 x 4) (fma.f64 1/360 (*.f64 x x) 1/12))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 (pow.f64 x 4) (fma.f64 1/360 (*.f64 x x) 1/12)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 (pow.f64 x 4)) (fma.f64 1/360 (*.f64 x x) 1/12)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 (pow.f64 x 4) (fma.f64 1/360 (*.f64 x x) 1/12)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 (pow.f64 x 4) 3) (pow.f64 (fma.f64 1/360 (*.f64 x x) 1/12) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 (fma.f64 1/360 (*.f64 x x) 1/12) 3) (pow.f64 (pow.f64 x 4) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 (pow.f64 x 4) (fma.f64 1/360 (*.f64 x x) 1/12))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 (pow.f64 x 4) (fma.f64 1/360 (*.f64 x x) 1/12))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 (pow.f64 x 4) (fma.f64 1/360 (*.f64 x x) 1/12))))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 1/12 (*.f64 1/360 (*.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 1/360 (*.f64 x x)) 1/12)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (*.f64 1/360 (*.f64 x x)) 1) 1/12)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (fma.f64 1/360 (*.f64 x x) 1/12)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (fma.f64 1/360 (*.f64 x x) 1/12) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (fma.f64 1/360 (*.f64 x x) 1/12))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (fma.f64 1/360 (*.f64 x x) 1/12)) (pow.f64 (cbrt.f64 (fma.f64 1/360 (*.f64 x x) 1/12)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (fma.f64 1/360 (*.f64 x x) 1/12)) 2) (cbrt.f64 (fma.f64 1/360 (*.f64 x x) 1/12)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (fma.f64 1/360 (*.f64 x x) 1/12)) (sqrt.f64 (fma.f64 1/360 (*.f64 x x) 1/12)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (*.f64 1/360 (*.f64 x x)) 3) 1/1728) (+.f64 (*.f64 (*.f64 1/360 (*.f64 x x)) (*.f64 1/360 (*.f64 x x))) (-.f64 1/144 (*.f64 (*.f64 1/360 (*.f64 x x)) 1/12))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 (*.f64 1/360 (*.f64 x x)) (*.f64 1/360 (*.f64 x x))) 1/144) (-.f64 (*.f64 1/360 (*.f64 x x)) 1/12))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (fma.f64 1/360 (*.f64 x x) 1/12) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (fma.f64 1/360 (*.f64 x x) 1/12) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (fma.f64 1/360 (*.f64 x x) 1/12)) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (fma.f64 1/360 (*.f64 x x) 1/12)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (fma.f64 1/360 (*.f64 x x) 1/12) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (fma.f64 1/360 (*.f64 x x) 1/12)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (fma.f64 1/360 (*.f64 x x) 1/12) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (fma.f64 1/360 (*.f64 x x) 1/12)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (fma.f64 1/360 (*.f64 x x) 1/12)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (fma.f64 1/360 (*.f64 x x) 1/12)))))))

simplify187.0ms (1.9%)

Algorithm
egg-herbie
Rules
1124×sqr-pow_binary64
748×cube-prod_binary64
653×pow-sqr_binary64
429×unpow3_binary64
423×cube-mult_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
015252
132234
266234
3175234
4730234
51822234
62172234
72371234
82565234
92816234
103131234
113540234
123976234
134473234
145076234
155334234
165584234
175848234
186118234
196380234
207785234
Stop Event
node limit
Counts
60 → 45
Calls
Call 1
Inputs
(*.f64 1/12 (pow.f64 x 4))
(+.f64 (*.f64 1/360 (pow.f64 x 6)) (*.f64 1/12 (pow.f64 x 4)))
(+.f64 (*.f64 1/360 (pow.f64 x 6)) (*.f64 1/12 (pow.f64 x 4)))
(+.f64 (*.f64 1/360 (pow.f64 x 6)) (*.f64 1/12 (pow.f64 x 4)))
(*.f64 1/360 (pow.f64 x 6))
(+.f64 (*.f64 1/360 (pow.f64 x 6)) (*.f64 1/12 (pow.f64 x 4)))
(+.f64 (*.f64 1/360 (pow.f64 x 6)) (*.f64 1/12 (pow.f64 x 4)))
(+.f64 (*.f64 1/360 (pow.f64 x 6)) (*.f64 1/12 (pow.f64 x 4)))
(*.f64 1/360 (pow.f64 x 6))
(+.f64 (*.f64 1/360 (pow.f64 x 6)) (*.f64 1/12 (pow.f64 x 4)))
(+.f64 (*.f64 1/360 (pow.f64 x 6)) (*.f64 1/12 (pow.f64 x 4)))
(+.f64 (*.f64 1/360 (pow.f64 x 6)) (*.f64 1/12 (pow.f64 x 4)))
1/12
(+.f64 1/12 (*.f64 1/360 (pow.f64 x 2)))
(+.f64 1/12 (*.f64 1/360 (pow.f64 x 2)))
(+.f64 1/12 (*.f64 1/360 (pow.f64 x 2)))
(*.f64 1/360 (pow.f64 x 2))
(+.f64 1/12 (*.f64 1/360 (pow.f64 x 2)))
(+.f64 1/12 (*.f64 1/360 (pow.f64 x 2)))
(+.f64 1/12 (*.f64 1/360 (pow.f64 x 2)))
(*.f64 1/360 (pow.f64 x 2))
(+.f64 1/12 (*.f64 1/360 (pow.f64 x 2)))
(+.f64 1/12 (*.f64 1/360 (pow.f64 x 2)))
(+.f64 1/12 (*.f64 1/360 (pow.f64 x 2)))
Outputs
(*.f64 1/12 (pow.f64 x 4))
(+.f64 (*.f64 1/360 (pow.f64 x 6)) (*.f64 1/12 (pow.f64 x 4)))
(fma.f64 1/360 (pow.f64 x 6) (*.f64 1/12 (pow.f64 x 4)))
(fma.f64 1/12 (pow.f64 x 4) (*.f64 1/360 (pow.f64 x 6)))
(*.f64 (pow.f64 x 4) (fma.f64 1/360 (*.f64 x x) 1/12))
(+.f64 (*.f64 1/360 (pow.f64 x 6)) (*.f64 1/12 (pow.f64 x 4)))
(fma.f64 1/360 (pow.f64 x 6) (*.f64 1/12 (pow.f64 x 4)))
(fma.f64 1/12 (pow.f64 x 4) (*.f64 1/360 (pow.f64 x 6)))
(*.f64 (pow.f64 x 4) (fma.f64 1/360 (*.f64 x x) 1/12))
(+.f64 (*.f64 1/360 (pow.f64 x 6)) (*.f64 1/12 (pow.f64 x 4)))
(fma.f64 1/360 (pow.f64 x 6) (*.f64 1/12 (pow.f64 x 4)))
(fma.f64 1/12 (pow.f64 x 4) (*.f64 1/360 (pow.f64 x 6)))
(*.f64 (pow.f64 x 4) (fma.f64 1/360 (*.f64 x x) 1/12))
(*.f64 1/360 (pow.f64 x 6))
(+.f64 (*.f64 1/360 (pow.f64 x 6)) (*.f64 1/12 (pow.f64 x 4)))
(fma.f64 1/360 (pow.f64 x 6) (*.f64 1/12 (pow.f64 x 4)))
(fma.f64 1/12 (pow.f64 x 4) (*.f64 1/360 (pow.f64 x 6)))
(*.f64 (pow.f64 x 4) (fma.f64 1/360 (*.f64 x x) 1/12))
(+.f64 (*.f64 1/360 (pow.f64 x 6)) (*.f64 1/12 (pow.f64 x 4)))
(fma.f64 1/360 (pow.f64 x 6) (*.f64 1/12 (pow.f64 x 4)))
(fma.f64 1/12 (pow.f64 x 4) (*.f64 1/360 (pow.f64 x 6)))
(*.f64 (pow.f64 x 4) (fma.f64 1/360 (*.f64 x x) 1/12))
(+.f64 (*.f64 1/360 (pow.f64 x 6)) (*.f64 1/12 (pow.f64 x 4)))
(fma.f64 1/360 (pow.f64 x 6) (*.f64 1/12 (pow.f64 x 4)))
(fma.f64 1/12 (pow.f64 x 4) (*.f64 1/360 (pow.f64 x 6)))
(*.f64 (pow.f64 x 4) (fma.f64 1/360 (*.f64 x x) 1/12))
(*.f64 1/360 (pow.f64 x 6))
(+.f64 (*.f64 1/360 (pow.f64 x 6)) (*.f64 1/12 (pow.f64 x 4)))
(fma.f64 1/360 (pow.f64 x 6) (*.f64 1/12 (pow.f64 x 4)))
(fma.f64 1/12 (pow.f64 x 4) (*.f64 1/360 (pow.f64 x 6)))
(*.f64 (pow.f64 x 4) (fma.f64 1/360 (*.f64 x x) 1/12))
(+.f64 (*.f64 1/360 (pow.f64 x 6)) (*.f64 1/12 (pow.f64 x 4)))
(fma.f64 1/360 (pow.f64 x 6) (*.f64 1/12 (pow.f64 x 4)))
(fma.f64 1/12 (pow.f64 x 4) (*.f64 1/360 (pow.f64 x 6)))
(*.f64 (pow.f64 x 4) (fma.f64 1/360 (*.f64 x x) 1/12))
(+.f64 (*.f64 1/360 (pow.f64 x 6)) (*.f64 1/12 (pow.f64 x 4)))
(fma.f64 1/360 (pow.f64 x 6) (*.f64 1/12 (pow.f64 x 4)))
(fma.f64 1/12 (pow.f64 x 4) (*.f64 1/360 (pow.f64 x 6)))
(*.f64 (pow.f64 x 4) (fma.f64 1/360 (*.f64 x x) 1/12))
1/12
(+.f64 1/12 (*.f64 1/360 (pow.f64 x 2)))
(+.f64 1/12 (*.f64 1/360 (*.f64 x x)))
(fma.f64 1/360 (*.f64 x x) 1/12)
(fma.f64 x (*.f64 x 1/360) 1/12)
(+.f64 1/12 (*.f64 1/360 (pow.f64 x 2)))
(+.f64 1/12 (*.f64 1/360 (*.f64 x x)))
(fma.f64 1/360 (*.f64 x x) 1/12)
(fma.f64 x (*.f64 x 1/360) 1/12)
(+.f64 1/12 (*.f64 1/360 (pow.f64 x 2)))
(+.f64 1/12 (*.f64 1/360 (*.f64 x x)))
(fma.f64 1/360 (*.f64 x x) 1/12)
(fma.f64 x (*.f64 x 1/360) 1/12)
(*.f64 1/360 (pow.f64 x 2))
(*.f64 1/360 (*.f64 x x))
(*.f64 x (*.f64 x 1/360))
(+.f64 1/12 (*.f64 1/360 (pow.f64 x 2)))
(+.f64 1/12 (*.f64 1/360 (*.f64 x x)))
(fma.f64 1/360 (*.f64 x x) 1/12)
(fma.f64 x (*.f64 x 1/360) 1/12)
(+.f64 1/12 (*.f64 1/360 (pow.f64 x 2)))
(+.f64 1/12 (*.f64 1/360 (*.f64 x x)))
(fma.f64 1/360 (*.f64 x x) 1/12)
(fma.f64 x (*.f64 x 1/360) 1/12)
(+.f64 1/12 (*.f64 1/360 (pow.f64 x 2)))
(+.f64 1/12 (*.f64 1/360 (*.f64 x x)))
(fma.f64 1/360 (*.f64 x x) 1/12)
(fma.f64 x (*.f64 x 1/360) 1/12)
(*.f64 1/360 (pow.f64 x 2))
(*.f64 1/360 (*.f64 x x))
(*.f64 x (*.f64 x 1/360))
(+.f64 1/12 (*.f64 1/360 (pow.f64 x 2)))
(+.f64 1/12 (*.f64 1/360 (*.f64 x x)))
(fma.f64 1/360 (*.f64 x x) 1/12)
(fma.f64 x (*.f64 x 1/360) 1/12)
(+.f64 1/12 (*.f64 1/360 (pow.f64 x 2)))
(+.f64 1/12 (*.f64 1/360 (*.f64 x x)))
(fma.f64 1/360 (*.f64 x x) 1/12)
(fma.f64 x (*.f64 x 1/360) 1/12)
(+.f64 1/12 (*.f64 1/360 (pow.f64 x 2)))
(+.f64 1/12 (*.f64 1/360 (*.f64 x x)))
(fma.f64 1/360 (*.f64 x x) 1/12)
(fma.f64 x (*.f64 x 1/360) 1/12)

eval49.0ms (0.5%)

Compiler

Compiled 1642 to 1083 computations (34% saved)

prune15.0ms (0.2%)

Pruning

6 alts after pruning (1 fresh and 5 done)

PrunedKeptTotal
New1171118
Fresh000
Picked101
Done055
Total1186124
Error
0b
Counts
124 → 6
Alt Table
Click to see full alt table
StatusErrorProgram
1.1b
(*.f64 x x)
0.6b
(fma.f64 x x (*.f64 1/12 (pow.f64 x 4)))
0.6b
(fma.f64 x x (*.f64 (pow.f64 x 4) (+.f64 (*.f64 1/360 (*.f64 x x)) 1/12)))
0.6b
(+.f64 (*.f64 x x) (*.f64 1/12 (pow.f64 x 4)))
31.0b
(*.f64 1/12 (pow.f64 x 4))
30.0b
(+.f64 -2 (*.f64 2 (cosh.f64 x)))
Compiler

Compiled 51 to 36 computations (29.4% saved)

localize91.0ms (0.9%)

Local error

Found 3 expressions with local error:

NewErrorProgram
0.0b
(+.f64 (*.f64 1/360 (*.f64 x x)) 1/12)
0.1b
(*.f64 (pow.f64 x 4) (+.f64 (*.f64 1/360 (*.f64 x x)) 1/12))
0.2b
(*.f64 1/360 (*.f64 x x))
Compiler

Compiled 48 to 28 computations (41.7% saved)

series3.0ms (0%)

Counts
3 → 36
Calls

9 calls:

TimeVariablePointExpression
0.0ms
x
@inf
(*.f64 1/360 (*.f64 x x))
0.0ms
x
@0
(*.f64 1/360 (*.f64 x x))
0.0ms
x
@inf
(*.f64 (pow.f64 x 4) (+.f64 (*.f64 1/360 (*.f64 x x)) 1/12))
0.0ms
x
@0
(*.f64 (pow.f64 x 4) (+.f64 (*.f64 1/360 (*.f64 x x)) 1/12))
0.0ms
x
@-inf
(*.f64 (pow.f64 x 4) (+.f64 (*.f64 1/360 (*.f64 x x)) 1/12))

rewrite69.0ms (0.7%)

Algorithm
batch-egg-rewrite
Rules
466×log-prod_binary64
401×prod-diff_binary64
350×exp-prod_binary64
310×pow-prod-down_binary64
259×pow2_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01029
122529
2271729
Stop Event
node limit
Counts
3 → 140
Calls
Call 1
Inputs
(*.f64 1/360 (*.f64 x x))
(*.f64 (pow.f64 x 4) (+.f64 (*.f64 1/360 (*.f64 x x)) 1/12))
(+.f64 (*.f64 1/360 (*.f64 x x)) 1/12)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 1/360 (*.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (pow.f64 (exp.f64 (*.f64 1/360 x)) x)) 2)) (log.f64 (cbrt.f64 (pow.f64 (exp.f64 (*.f64 1/360 x)) x))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (pow.f64 (exp.f64 (*.f64 1/360 x)) x))) (log.f64 (sqrt.f64 (pow.f64 (exp.f64 (*.f64 1/360 x)) x))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (*.f64 1/360 (*.f64 x x)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 1/360 (*.f64 x x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (pow.f64 x 4) 1/129600) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 1/360 (*.f64 x x))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 x (sqrt.f64 1/360)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 1/46656000 (pow.f64 x 6)) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 1) (fma.f64 2 (log.f64 x) (log1p.f64 -359/360)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (fma.f64 2 (log.f64 x) (log1p.f64 -359/360))) 2)) (cbrt.f64 (fma.f64 2 (log.f64 x) (log1p.f64 -359/360))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (sqrt.f64 (fma.f64 2 (log.f64 x) (log1p.f64 -359/360)))) (sqrt.f64 (fma.f64 2 (log.f64 x) (log1p.f64 -359/360))))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (*.f64 (pow.f64 x 4) 1/129600))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 (*.f64 1/360 x)) x))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (*.f64 1/360 (*.f64 x x)))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 1/46656000 (pow.f64 x 6)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 1/360 (*.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 1/360 (*.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (fma.f64 2 (log.f64 x) (log1p.f64 -359/360)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (fma.f64 2 (log.f64 x) (log1p.f64 -359/360)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (cbrt.f64 (*.f64 1/360 (*.f64 x x)))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (*.f64 x (sqrt.f64 1/360))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (*.f64 1/46656000 (pow.f64 x 6))) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (fma.f64 2 (log.f64 x) (log1p.f64 -359/360)) 1) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (fma.f64 2 (log.f64 x) (log1p.f64 -359/360)) 3) 1/3))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 1/360 (pow.f64 x 6)) (*.f64 (pow.f64 x 4) 1/12))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (pow.f64 x 4) 1/12) (*.f64 1/360 (pow.f64 x 6)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 (pow.f64 x 4) (fma.f64 1/360 (*.f64 x x) 1/12)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (*.f64 1/360 (pow.f64 x 6)) 1) (*.f64 (*.f64 (pow.f64 x 4) 1/12) 1))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (pow.f64 (exp.f64 (fma.f64 1/360 (*.f64 x x) 1/12)) (pow.f64 x 4))) 2)) (log.f64 (cbrt.f64 (pow.f64 (exp.f64 (fma.f64 1/360 (*.f64 x x) 1/12)) (pow.f64 x 4)))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (pow.f64 (exp.f64 (fma.f64 1/360 (*.f64 x x) 1/12)) (pow.f64 x 4)))) (log.f64 (sqrt.f64 (pow.f64 (exp.f64 (fma.f64 1/360 (*.f64 x x) 1/12)) (pow.f64 x 4)))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (*.f64 (pow.f64 x 4) (fma.f64 1/360 (*.f64 x x) 1/12)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (*.f64 1/360 (pow.f64 x 6)) 3) (pow.f64 (*.f64 (pow.f64 x 4) 1/12) 3)) (+.f64 (pow.f64 (*.f64 1/360 (pow.f64 x 6)) 2) (-.f64 (pow.f64 (*.f64 (pow.f64 x 4) 1/12) 2) (*.f64 (*.f64 1/360 (pow.f64 x 6)) (*.f64 (pow.f64 x 4) 1/12)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 (*.f64 1/360 (pow.f64 x 6)) 2) (pow.f64 (*.f64 (pow.f64 x 4) 1/12) 2)) (-.f64 (*.f64 1/360 (pow.f64 x 6)) (*.f64 (pow.f64 x 4) 1/12)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (fma.f64 1/46656000 (pow.f64 x 6) 1/1728) (pow.f64 x 4)) (-.f64 (fma.f64 (pow.f64 x 4) 1/129600 1/144) (*.f64 (*.f64 x x) 1/4320)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (fma.f64 (pow.f64 x 4) 1/129600 -1/144) (pow.f64 x 4)) (fma.f64 1/360 (*.f64 x x) -1/12))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (pow.f64 x 4) (fma.f64 1/46656000 (pow.f64 x 6) 1/1728)) (-.f64 (fma.f64 (pow.f64 x 4) 1/129600 1/144) (*.f64 (*.f64 x x) 1/4320)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (pow.f64 x 4) (fma.f64 (pow.f64 x 4) 1/129600 -1/144)) (fma.f64 1/360 (*.f64 x x) -1/12))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (pow.f64 x 4) (fma.f64 1/360 (*.f64 x x) 1/12)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (pow.f64 (fma.f64 1/360 (*.f64 x x) 1/12) 2) (pow.f64 x 8)) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (pow.f64 (fma.f64 1/360 (*.f64 x x) 1/12) 3) (pow.f64 x 12)) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 (pow.f64 x 4) (fma.f64 1/360 (*.f64 x x) 1/12))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (*.f64 x x) (sqrt.f64 (fma.f64 1/360 (*.f64 x x) 1/12))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 1) (log.f64 (*.f64 (pow.f64 x 4) (fma.f64 1/360 (*.f64 x x) 1/12))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (log.f64 (*.f64 (pow.f64 x 4) (fma.f64 1/360 (*.f64 x x) 1/12)))) 2)) (cbrt.f64 (log.f64 (*.f64 (pow.f64 x 4) (fma.f64 1/360 (*.f64 x x) 1/12)))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (sqrt.f64 (log.f64 (*.f64 (pow.f64 x 4) (fma.f64 1/360 (*.f64 x x) 1/12))))) (sqrt.f64 (log.f64 (*.f64 (pow.f64 x 4) (fma.f64 1/360 (*.f64 x x) 1/12)))))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (*.f64 (pow.f64 (fma.f64 1/360 (*.f64 x x) 1/12) 2) (pow.f64 x 8)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 (fma.f64 1/360 (*.f64 x x) 1/12)) (pow.f64 x 4)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (*.f64 (pow.f64 x 4) (fma.f64 1/360 (*.f64 x x) 1/12)))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 (fma.f64 1/360 (*.f64 x x) 1/12) 3) (pow.f64 x 12)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 (pow.f64 x 4) (fma.f64 1/360 (*.f64 x x) 1/12))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 (pow.f64 x 4) (fma.f64 1/360 (*.f64 x x) 1/12))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 (pow.f64 x 4) (fma.f64 1/360 (*.f64 x x) 1/12))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (*.f64 (pow.f64 x 4) (fma.f64 1/360 (*.f64 x x) 1/12))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (*.f64 (pow.f64 (fma.f64 1/360 (*.f64 x x) 1/12) 3) (pow.f64 x 12))) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (cbrt.f64 (*.f64 (pow.f64 x 4) (fma.f64 1/360 (*.f64 x x) 1/12)))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (*.f64 (*.f64 x x) (sqrt.f64 (fma.f64 1/360 (*.f64 x x) 1/12)))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (log.f64 (*.f64 (pow.f64 x 4) (fma.f64 1/360 (*.f64 x x) 1/12))) 1) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1/360 (pow.f64 x 6) (*.f64 (pow.f64 x 4) 1/12))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 x x) (pow.f64 (*.f64 x (*.f64 x (sqrt.f64 1/360))) 2) (*.f64 (pow.f64 x 4) 1/12))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 x x) (*.f64 (*.f64 x x) 1/12) (*.f64 1/360 (pow.f64 x 6)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 x x) (*.f64 1/360 (pow.f64 x 4)) (*.f64 (pow.f64 x 4) 1/12))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 1/360 (*.f64 x x)) (pow.f64 x 4) (*.f64 (pow.f64 x 4) 1/12))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 x 4) (*.f64 1/360 (*.f64 x x)) (*.f64 (pow.f64 x 4) 1/12))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 x 4) 1/12 (*.f64 1/360 (pow.f64 x 6)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1/12 (pow.f64 x 4) (*.f64 1/360 (pow.f64 x 6)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (*.f64 1/360 (pow.f64 x 6)) (*.f64 (pow.f64 x 4) 1/12))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (*.f64 (pow.f64 x 4) 1/12) (*.f64 1/360 (pow.f64 x 6)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 x 6) 1/360 (*.f64 (pow.f64 x 4) 1/12))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (*.f64 (pow.f64 x 4) 1/129600)) (*.f64 (cbrt.f64 (*.f64 1/360 (*.f64 x x))) (pow.f64 x 4)) (*.f64 (pow.f64 x 4) 1/12))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 x) 8) (*.f64 (*.f64 (cbrt.f64 x) x) 1/12) (*.f64 1/360 (pow.f64 x 6)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 x) 8) (*.f64 (*.f64 (cbrt.f64 x) x) (*.f64 1/360 (*.f64 x x))) (*.f64 (pow.f64 x 4) 1/12))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 x (sqrt.f64 1/360)) (*.f64 (*.f64 x (sqrt.f64 1/360)) (pow.f64 x 4)) (*.f64 (pow.f64 x 4) 1/12))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 1/360 (pow.f64 x 6)) 1 (*.f64 (*.f64 (pow.f64 x 4) 1/12) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 1/360 x) (pow.f64 x 5) (*.f64 (pow.f64 x 4) 1/12))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (*.f64 1/360 (pow.f64 x 6))) 2) (cbrt.f64 (*.f64 1/360 (pow.f64 x 6))) (*.f64 (pow.f64 x 4) 1/12))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (*.f64 (pow.f64 x 4) 1/12)) 2) (cbrt.f64 (*.f64 (pow.f64 x 4) 1/12)) (*.f64 1/360 (pow.f64 x 6)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (*.f64 1/360 (pow.f64 x 6))) (sqrt.f64 (*.f64 1/360 (pow.f64 x 6))) (*.f64 (pow.f64 x 4) 1/12))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (*.f64 (pow.f64 x 4) 1/12)) (sqrt.f64 (*.f64 (pow.f64 x 4) 1/12)) (*.f64 1/360 (pow.f64 x 6)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (*.f64 (*.f64 x (sqrt.f64 1/360)) x) 2) (*.f64 x x) (*.f64 (pow.f64 x 4) 1/12))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 1/12 (*.f64 x x)) (*.f64 x x) (*.f64 1/360 (pow.f64 x 6)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 1/12 (pow.f64 (cbrt.f64 x) 8)) (*.f64 (cbrt.f64 x) x) (*.f64 1/360 (pow.f64 x 6)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (pow.f64 x 4) 1/360) (*.f64 x x) (*.f64 (pow.f64 x 4) 1/12))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (pow.f64 x 4) (cbrt.f64 (*.f64 (pow.f64 x 4) 1/129600))) (cbrt.f64 (*.f64 1/360 (*.f64 x x))) (*.f64 (pow.f64 x 4) 1/12))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (pow.f64 x 4) (*.f64 x (sqrt.f64 1/360))) (*.f64 x (sqrt.f64 1/360)) (*.f64 (pow.f64 x 4) 1/12))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (pow.f64 x 4) (*.f64 1/360 x)) x (*.f64 (pow.f64 x 4) 1/12))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (*.f64 1/360 (*.f64 x x)) (pow.f64 (cbrt.f64 x) 8)) (*.f64 (cbrt.f64 x) x) (*.f64 (pow.f64 x 4) 1/12))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (fma.f64 1/360 (*.f64 x x) 1/12))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (/.f64 (*.f64 (pow.f64 x 4) 1/129600) (fma.f64 1/360 (*.f64 x x) -1/12)) (/.f64 1/144 (fma.f64 1/360 (*.f64 x x) -1/12)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (fma.f64 1/360 (*.f64 x x) 1/12) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (fma.f64 1/360 (*.f64 x x) 1/12))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (fma.f64 1/360 (*.f64 x x) 1/12)) (pow.f64 (cbrt.f64 (fma.f64 1/360 (*.f64 x x) 1/12)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (fma.f64 1/360 (*.f64 x x) 1/12)) 2) (cbrt.f64 (fma.f64 1/360 (*.f64 x x) 1/12)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (fma.f64 1/360 (*.f64 x x) 1/12)) (sqrt.f64 (fma.f64 1/360 (*.f64 x x) 1/12)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (fma.f64 1/46656000 (pow.f64 x 6) 1/1728) (/.f64 1 (-.f64 (fma.f64 (pow.f64 x 4) 1/129600 1/144) (*.f64 (*.f64 x x) 1/4320))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (fma.f64 (pow.f64 x 4) 1/129600 -1/144) (/.f64 1 (fma.f64 1/360 (*.f64 x x) -1/12)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (-.f64 (fma.f64 (pow.f64 x 4) 1/129600 1/144) (*.f64 (*.f64 x x) 1/4320)) (fma.f64 1/46656000 (pow.f64 x 6) 1/1728)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (fma.f64 1/360 (*.f64 x x) -1/12) (fma.f64 (pow.f64 x 4) 1/129600 -1/144)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (fma.f64 1/46656000 (pow.f64 x 6) 1/1728) (-.f64 (fma.f64 (pow.f64 x 4) 1/129600 1/144) (*.f64 (*.f64 x x) 1/4320)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (fma.f64 1/46656000 (pow.f64 x 6) 1/1728) (+.f64 1/144 (-.f64 (*.f64 (pow.f64 x 4) 1/129600) (*.f64 (*.f64 x x) 1/4320))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (fma.f64 (pow.f64 x 4) 1/129600 -1/144) (fma.f64 1/360 (*.f64 x x) -1/12))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (fma.f64 1/46656000 (pow.f64 x 6) 1/1728)) (neg.f64 (-.f64 (fma.f64 (pow.f64 x 4) 1/129600 1/144) (*.f64 (*.f64 x x) 1/4320))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (fma.f64 (pow.f64 x 4) 1/129600 -1/144)) (neg.f64 (fma.f64 1/360 (*.f64 x x) -1/12)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 1/144 (*.f64 (pow.f64 x 4) 1/129600)) (-.f64 1/12 (*.f64 1/360 (*.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (fma.f64 1/360 (*.f64 x x) 1/12) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (fma.f64 1/360 (*.f64 x x) 1/12) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (fma.f64 1/360 (*.f64 x x) 1/12) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (fma.f64 1/360 (*.f64 x x) 1/12)) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (fma.f64 1/360 (*.f64 x x) 1/12)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 1) (log.f64 (fma.f64 1/360 (*.f64 x x) 1/12)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (-.f64 (fma.f64 (pow.f64 x 4) 1/129600 1/144) (*.f64 (*.f64 x x) 1/4320)) (fma.f64 1/46656000 (pow.f64 x 6) 1/1728)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (fma.f64 1/360 (*.f64 x x) -1/12) (fma.f64 (pow.f64 x 4) 1/129600 -1/144)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (log.f64 (fma.f64 1/360 (*.f64 x x) 1/12))) 2)) (cbrt.f64 (log.f64 (fma.f64 1/360 (*.f64 x x) 1/12))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (sqrt.f64 (log.f64 (fma.f64 1/360 (*.f64 x x) 1/12)))) (sqrt.f64 (log.f64 (fma.f64 1/360 (*.f64 x x) 1/12))))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (fma.f64 1/360 (*.f64 x x) 1/12) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (fma.f64 1/360 (*.f64 x x) 1/12)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (fma.f64 1/360 (*.f64 x x) 1/12))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (fma.f64 1/360 (*.f64 x x) 1/12) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (fma.f64 1/360 (*.f64 x x) 1/12)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (fma.f64 1/360 (*.f64 x x) 1/12)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (fma.f64 1/360 (*.f64 x x) 1/12)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (fma.f64 1/360 (*.f64 x x) 1/12)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (pow.f64 (fma.f64 1/360 (*.f64 x x) 1/12) 3)) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (cbrt.f64 (fma.f64 1/360 (*.f64 x x) 1/12))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (sqrt.f64 (fma.f64 1/360 (*.f64 x x) 1/12))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (log.f64 (fma.f64 1/360 (*.f64 x x) 1/12)) 1) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1/360 (*.f64 x x) 1/12)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 x (*.f64 1/360 x) 1/12)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 x x) 1/360 1/12)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 1/360 (*.f64 x x)) 1 1/12)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (*.f64 1/360 (*.f64 x x)) 1/12)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (*.f64 1/360 (*.f64 x x))) (cbrt.f64 (*.f64 (pow.f64 x 4) 1/129600)) 1/12)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (*.f64 (pow.f64 x 4) 1/129600)) (cbrt.f64 (*.f64 1/360 (*.f64 x x))) 1/12)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (cbrt.f64 x) x) (*.f64 (pow.f64 (cbrt.f64 x) 2) 1/360) 1/12)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 x (sqrt.f64 1/360)) (*.f64 x (sqrt.f64 1/360)) 1/12)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 1/360 x) x 1/12)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 1/360 (*.f64 (cbrt.f64 x) x)) (pow.f64 (cbrt.f64 x) 2) 1/12)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (*.f64 1/360 x) 1) x 1/12)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (*.f64 1/360 x) (pow.f64 (cbrt.f64 x) 2)) (cbrt.f64 x) 1/12)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (*.f64 1/360 x) (sqrt.f64 x)) (sqrt.f64 x) 1/12)))))

simplify184.0ms (1.9%)

Algorithm
egg-herbie
Rules
1124×sqr-pow_binary64
748×cube-prod_binary64
653×pow-sqr_binary64
429×unpow3_binary64
423×cube-mult_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
015336
132318
266318
3175318
4728318
51824318
62174318
72369318
82563318
92814318
103129318
113537318
123973318
134463318
145070318
155322318
165570318
175834318
186104318
196366318
207771318
Stop Event
node limit
Counts
176 → 148
Calls
Call 1
Inputs
(*.f64 1/360 (pow.f64 x 2))
(*.f64 1/360 (pow.f64 x 2))
(*.f64 1/360 (pow.f64 x 2))
(*.f64 1/360 (pow.f64 x 2))
(*.f64 1/360 (pow.f64 x 2))
(*.f64 1/360 (pow.f64 x 2))
(*.f64 1/360 (pow.f64 x 2))
(*.f64 1/360 (pow.f64 x 2))
(*.f64 1/360 (pow.f64 x 2))
(*.f64 1/360 (pow.f64 x 2))
(*.f64 1/360 (pow.f64 x 2))
(*.f64 1/360 (pow.f64 x 2))
(*.f64 1/12 (pow.f64 x 4))
(+.f64 (*.f64 1/360 (pow.f64 x 6)) (*.f64 1/12 (pow.f64 x 4)))
(+.f64 (*.f64 1/360 (pow.f64 x 6)) (*.f64 1/12 (pow.f64 x 4)))
(+.f64 (*.f64 1/360 (pow.f64 x 6)) (*.f64 1/12 (pow.f64 x 4)))
(*.f64 1/360 (pow.f64 x 6))
(+.f64 (*.f64 1/360 (pow.f64 x 6)) (*.f64 1/12 (pow.f64 x 4)))
(+.f64 (*.f64 1/360 (pow.f64 x 6)) (*.f64 1/12 (pow.f64 x 4)))
(+.f64 (*.f64 1/360 (pow.f64 x 6)) (*.f64 1/12 (pow.f64 x 4)))
(*.f64 1/360 (pow.f64 x 6))
(+.f64 (*.f64 1/360 (pow.f64 x 6)) (*.f64 1/12 (pow.f64 x 4)))
(+.f64 (*.f64 1/360 (pow.f64 x 6)) (*.f64 1/12 (pow.f64 x 4)))
(+.f64 (*.f64 1/360 (pow.f64 x 6)) (*.f64 1/12 (pow.f64 x 4)))
1/12
(+.f64 1/12 (*.f64 1/360 (pow.f64 x 2)))
(+.f64 1/12 (*.f64 1/360 (pow.f64 x 2)))
(+.f64 1/12 (*.f64 1/360 (pow.f64 x 2)))
(*.f64 1/360 (pow.f64 x 2))
(+.f64 1/12 (*.f64 1/360 (pow.f64 x 2)))
(+.f64 1/12 (*.f64 1/360 (pow.f64 x 2)))
(+.f64 1/12 (*.f64 1/360 (pow.f64 x 2)))
(*.f64 1/360 (pow.f64 x 2))
(+.f64 1/12 (*.f64 1/360 (pow.f64 x 2)))
(+.f64 1/12 (*.f64 1/360 (pow.f64 x 2)))
(+.f64 1/12 (*.f64 1/360 (pow.f64 x 2)))
Outputs
(*.f64 1/360 (pow.f64 x 2))
(*.f64 1/360 (*.f64 x x))
(*.f64 1/360 (pow.f64 x 2))
(*.f64 1/360 (*.f64 x x))
(*.f64 1/360 (pow.f64 x 2))
(*.f64 1/360 (*.f64 x x))
(*.f64 1/360 (pow.f64 x 2))
(*.f64 1/360 (*.f64 x x))
(*.f64 1/360 (pow.f64 x 2))
(*.f64 1/360 (*.f64 x x))
(*.f64 1/360 (pow.f64 x 2))
(*.f64 1/360 (*.f64 x x))
(*.f64 1/360 (pow.f64 x 2))
(*.f64 1/360 (*.f64 x x))
(*.f64 1/360 (pow.f64 x 2))
(*.f64 1/360 (*.f64 x x))
(*.f64 1/360 (pow.f64 x 2))
(*.f64 1/360 (*.f64 x x))
(*.f64 1/360 (pow.f64 x 2))
(*.f64 1/360 (*.f64 x x))
(*.f64 1/360 (pow.f64 x 2))
(*.f64 1/360 (*.f64 x x))
(*.f64 1/360 (pow.f64 x 2))
(*.f64 1/360 (*.f64 x x))
(*.f64 1/12 (pow.f64 x 4))
(+.f64 (*.f64 1/360 (pow.f64 x 6)) (*.f64 1/12 (pow.f64 x 4)))
(fma.f64 1/360 (pow.f64 x 6) (*.f64 1/12 (pow.f64 x 4)))
(*.f64 (pow.f64 x 4) (fma.f64 1/360 (*.f64 x x) 1/12))
(+.f64 (*.f64 1/360 (pow.f64 x 6)) (*.f64 1/12 (pow.f64 x 4)))
(fma.f64 1/360 (pow.f64 x 6) (*.f64 1/12 (pow.f64 x 4)))
(*.f64 (pow.f64 x 4) (fma.f64 1/360 (*.f64 x x) 1/12))
(+.f64 (*.f64 1/360 (pow.f64 x 6)) (*.f64 1/12 (pow.f64 x 4)))
(fma.f64 1/360 (pow.f64 x 6) (*.f64 1/12 (pow.f64 x 4)))
(*.f64 (pow.f64 x 4) (fma.f64 1/360 (*.f64 x x) 1/12))
(*.f64 1/360 (pow.f64 x 6))
(+.f64 (*.f64 1/360 (pow.f64 x 6)) (*.f64 1/12 (pow.f64 x 4)))
(fma.f64 1/360 (pow.f64 x 6) (*.f64 1/12 (pow.f64 x 4)))
(*.f64 (pow.f64 x 4) (fma.f64 1/360 (*.f64 x x) 1/12))
(+.f64 (*.f64 1/360 (pow.f64 x 6)) (*.f64 1/12 (pow.f64 x 4)))
(fma.f64 1/360 (pow.f64 x 6) (*.f64 1/12 (pow.f64 x 4)))
(*.f64 (pow.f64 x 4) (fma.f64 1/360 (*.f64 x x) 1/12))
(+.f64 (*.f64 1/360 (pow.f64 x 6)) (*.f64 1/12 (pow.f64 x 4)))
(fma.f64 1/360 (pow.f64 x 6) (*.f64 1/12 (pow.f64 x 4)))
(*.f64 (pow.f64 x 4) (fma.f64 1/360 (*.f64 x x) 1/12))
(*.f64 1/360 (pow.f64 x 6))
(+.f64 (*.f64 1/360 (pow.f64 x 6)) (*.f64 1/12 (pow.f64 x 4)))
(fma.f64 1/360 (pow.f64 x 6) (*.f64 1/12 (pow.f64 x 4)))
(*.f64 (pow.f64 x 4) (fma.f64 1/360 (*.f64 x x) 1/12))
(+.f64 (*.f64 1/360 (pow.f64 x 6)) (*.f64 1/12 (pow.f64 x 4)))
(fma.f64 1/360 (pow.f64 x 6) (*.f64 1/12 (pow.f64 x 4)))
(*.f64 (pow.f64 x 4) (fma.f64 1/360 (*.f64 x x) 1/12))
(+.f64 (*.f64 1/360 (pow.f64 x 6)) (*.f64 1/12 (pow.f64 x 4)))
(fma.f64 1/360 (pow.f64 x 6) (*.f64 1/12 (pow.f64 x 4)))
(*.f64 (pow.f64 x 4) (fma.f64 1/360 (*.f64 x x) 1/12))
1/12
(+.f64 1/12 (*.f64 1/360 (pow.f64 x 2)))
(+.f64 (*.f64 1/360 (*.f64 x x)) 1/12)
(fma.f64 1/360 (*.f64 x x) 1/12)
(+.f64 1/12 (*.f64 1/360 (pow.f64 x 2)))
(+.f64 (*.f64 1/360 (*.f64 x x)) 1/12)
(fma.f64 1/360 (*.f64 x x) 1/12)
(+.f64 1/12 (*.f64 1/360 (pow.f64 x 2)))
(+.f64 (*.f64 1/360 (*.f64 x x)) 1/12)
(fma.f64 1/360 (*.f64 x x) 1/12)
(*.f64 1/360 (pow.f64 x 2))
(*.f64 1/360 (*.f64 x x))
(+.f64 1/12 (*.f64 1/360 (pow.f64 x 2)))
(+.f64 (*.f64 1/360 (*.f64 x x)) 1/12)
(fma.f64 1/360 (*.f64 x x) 1/12)
(+.f64 1/12 (*.f64 1/360 (pow.f64 x 2)))
(+.f64 (*.f64 1/360 (*.f64 x x)) 1/12)
(fma.f64 1/360 (*.f64 x x) 1/12)
(+.f64 1/12 (*.f64 1/360 (pow.f64 x 2)))
(+.f64 (*.f64 1/360 (*.f64 x x)) 1/12)
(fma.f64 1/360 (*.f64 x x) 1/12)
(*.f64 1/360 (pow.f64 x 2))
(*.f64 1/360 (*.f64 x x))
(+.f64 1/12 (*.f64 1/360 (pow.f64 x 2)))
(+.f64 (*.f64 1/360 (*.f64 x x)) 1/12)
(fma.f64 1/360 (*.f64 x x) 1/12)
(+.f64 1/12 (*.f64 1/360 (pow.f64 x 2)))
(+.f64 (*.f64 1/360 (*.f64 x x)) 1/12)
(fma.f64 1/360 (*.f64 x x) 1/12)
(+.f64 1/12 (*.f64 1/360 (pow.f64 x 2)))
(+.f64 (*.f64 1/360 (*.f64 x x)) 1/12)
(fma.f64 1/360 (*.f64 x x) 1/12)

eval69.0ms (0.7%)

Compiler

Compiled 2779 to 1843 computations (33.7% saved)

prune28.0ms (0.3%)

Pruning

6 alts after pruning (0 fresh and 6 done)

PrunedKeptTotal
New1480148
Fresh000
Picked011
Done055
Total1486154
Error
0b
Counts
154 → 6
Alt Table
Click to see full alt table
StatusErrorProgram
1.1b
(*.f64 x x)
0.6b
(fma.f64 x x (*.f64 1/12 (pow.f64 x 4)))
0.6b
(fma.f64 x x (*.f64 (pow.f64 x 4) (+.f64 (*.f64 1/360 (*.f64 x x)) 1/12)))
0.6b
(+.f64 (*.f64 x x) (*.f64 1/12 (pow.f64 x 4)))
31.0b
(*.f64 1/12 (pow.f64 x 4))
30.0b
(+.f64 -2 (*.f64 2 (cosh.f64 x)))
Compiler

Compiled 51 to 36 computations (29.4% saved)

regimes12.0ms (0.1%)

Counts
11 → 1
Calls
Call 1
Inputs
(*.f64 x x)
(*.f64 1/12 (pow.f64 x 4))
(+.f64 -2 (*.f64 2 (cosh.f64 x)))
(+.f64 (*.f64 x x) (*.f64 1/12 (pow.f64 x 4)))
(fma.f64 x x (*.f64 1/12 (pow.f64 x 4)))
(fma.f64 1/12 (pow.f64 x 4) (*.f64 x x))
(+.f64 -2 (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))
(+.f64 (-.f64 (exp.f64 x) 2) (exp.f64 (neg.f64 x)))
(fma.f64 x x (*.f64 (pow.f64 x 4) (+.f64 (*.f64 1/360 (*.f64 x x)) 1/12)))
(fma.f64 x x (*.f64 (pow.f64 x 4) (fma.f64 1/360 (*.f64 x x) 1/12)))
(fma.f64 x x (fma.f64 1/360 (pow.f64 x 6) (*.f64 1/12 (pow.f64 x 4))))
Outputs
(fma.f64 x x (*.f64 (pow.f64 x 4) (+.f64 (*.f64 1/360 (*.f64 x x)) 1/12)))
Calls

2 calls:

6.0ms
x
2.0ms
(+.f64 (-.f64 (exp.f64 x) 2) (exp.f64 (neg.f64 x)))
Results
ErrorSegmentsBranch
0.6b1x
0.6b1(+.f64 (-.f64 (exp.f64 x) 2) (exp.f64 (neg.f64 x)))
Compiler

Compiled 107 to 66 computations (38.3% saved)

regimes11.0ms (0.1%)

Counts
8 → 1
Calls
Call 1
Inputs
(*.f64 x x)
(*.f64 1/12 (pow.f64 x 4))
(+.f64 -2 (*.f64 2 (cosh.f64 x)))
(+.f64 (*.f64 x x) (*.f64 1/12 (pow.f64 x 4)))
(fma.f64 x x (*.f64 1/12 (pow.f64 x 4)))
(fma.f64 1/12 (pow.f64 x 4) (*.f64 x x))
(+.f64 -2 (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))
(+.f64 (-.f64 (exp.f64 x) 2) (exp.f64 (neg.f64 x)))
Outputs
(fma.f64 x x (*.f64 1/12 (pow.f64 x 4)))
Calls

2 calls:

6.0ms
x
2.0ms
(+.f64 (-.f64 (exp.f64 x) 2) (exp.f64 (neg.f64 x)))
Results
ErrorSegmentsBranch
0.6b1x
0.6b1(+.f64 (-.f64 (exp.f64 x) 2) (exp.f64 (neg.f64 x)))
Compiler

Compiled 67 to 42 computations (37.3% saved)

regimes5.0ms (0.1%)

Counts
4 → 1
Calls
Call 1
Inputs
(*.f64 x x)
(*.f64 1/12 (pow.f64 x 4))
(+.f64 -2 (*.f64 2 (cosh.f64 x)))
(+.f64 (*.f64 x x) (*.f64 1/12 (pow.f64 x 4)))
Outputs
(+.f64 (*.f64 x x) (*.f64 1/12 (pow.f64 x 4)))
Calls

1 calls:

4.0ms
x
Results
ErrorSegmentsBranch
0.6b1x
Compiler

Compiled 26 to 17 computations (34.6% saved)

regimes5.0ms (0%)

Accuracy

Total -30.3b remaining (-2803.7%)

Threshold costs -30.3b (-2803.7%)

Counts
3 → 1
Calls
Call 1
Inputs
(*.f64 x x)
(*.f64 1/12 (pow.f64 x 4))
(+.f64 -2 (*.f64 2 (cosh.f64 x)))
Outputs
(*.f64 x x)
Calls

1 calls:

3.0ms
x
Results
ErrorSegmentsBranch
1.1b1x
Compiler

Compiled 17 to 12 computations (29.4% saved)

simplify4.0ms (0%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
01448
11948
Stop Event
done
saturated
Calls
Call 1
Inputs
(fma.f64 x x (*.f64 (pow.f64 x 4) (+.f64 (*.f64 1/360 (*.f64 x x)) 1/12)))
(fma.f64 x x (*.f64 1/12 (pow.f64 x 4)))
(+.f64 (*.f64 x x) (*.f64 1/12 (pow.f64 x 4)))
(*.f64 x x)
Outputs
(fma.f64 x x (*.f64 (pow.f64 x 4) (+.f64 (*.f64 1/360 (*.f64 x x)) 1/12)))
(fma.f64 x x (*.f64 1/12 (pow.f64 x 4)))
(fma.f64 x x (*.f64 (pow.f64 x 4) 1/12))
(+.f64 (*.f64 x x) (*.f64 1/12 (pow.f64 x 4)))
(+.f64 (*.f64 x x) (*.f64 (pow.f64 x 4) 1/12))
(*.f64 x x)
Compiler

Compiled 38 to 25 computations (34.2% saved)

soundness613.0ms (6.3%)

Algorithm
egg-herbie
Rules
811×sqr-pow_binary64
801×associate-/l*_binary64
624×fma-def_binary64
581×fma-neg_binary64
580×cube-prod_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0813
12013
23613
36013
412213
527313
670913
7172913
8314513
9760513
034295
185283
2186279
3525279
42241279
54801279
65972279
011147
123147
248147
3117147
4391147
51750147
63196147
73534147
83804147
94068147
104414147
114871147
125439147
136084147
146848147
157295147
167793147
Stop Event
node limit
node limit
node limit
Compiler

Compiled 385 to 309 computations (19.7% saved)

end54.0ms (0.6%)

Compiler

Compiled 35 to 20 computations (42.9% saved)

Profiling

Loading profile data...