Details

Time bar (total: 9.2s)

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)

sample5.8s (63.4%)

Results
4.2s4362×body2048valid
992.0ms2051×body1024valid
329.0ms998×body512valid
256.0ms845×body256valid
0.0msbody256invalid

preprocess91.0ms (1%)

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)

simplify79.0ms (0.9%)

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)

prune2.0ms (0%)

Pruning

3 alts after pruning (3 fresh and 0 done)

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

Compiled 18 to 14 computations (22.2% saved)

localize16.0ms (0.2%)

Local error

Found 2 expressions with local error:

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

Compiled 24 to 8 computations (66.7% saved)

series4.0ms (0%)

Counts
2 → 24
Calls

6 calls:

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

rewrite167.0ms (1.8%)

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))))))))

simplify69.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))

localize56.0ms (0.6%)

Local error

Found 2 expressions with local error:

NewErrorProgram
0.0b
(-.f64 (exp.f64 x) 2)
3.0b
(+.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 (-.f64 (exp.f64 x) 2) (exp.f64 (neg.f64 x)))
0.0ms
x
@-inf
(+.f64 (-.f64 (exp.f64 x) 2) (exp.f64 (neg.f64 x)))
0.0ms
x
@-inf
(-.f64 (exp.f64 x) 2)

rewrite65.0ms (0.7%)

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)))))

simplify60.0ms (0.7%)

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))

eval38.0ms (0.4%)

Compiler

Compiled 1887 to 1095 computations (42% saved)

prune20.0ms (0.2%)

Pruning

5 alts after pruning (5 fresh and 0 done)

PrunedKeptTotal
New1305135
Fresh000
Picked101
Done101
Total1325137
Error
0b
Counts
137 → 5
Alt Table
Click to see full alt table
StatusErrorProgram
0.4b
(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)))))
0.5b
(fma.f64 1/12 (pow.f64 x 4) (*.f64 x x))
26.5b
(+.f64 -2 (*.f64 2 (cosh.f64 x)))
0.4b
(+.f64 (*.f64 1/360 (pow.f64 x 6)) (+.f64 (pow.f64 x 2) (*.f64 1/12 (pow.f64 x 4))))
0.6b
(*.f64 x x)
Compiler

Compiled 110 to 82 computations (25.5% saved)

localize26.0ms (0.3%)

Local error

Found 3 expressions with local error:

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

Compiled 65 to 50 computations (23.1% saved)

series37.0ms (0.4%)

Counts
3 → 24
Calls

9 calls:

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

rewrite80.0ms (0.9%)

Algorithm
batch-egg-rewrite
Rules
476×log-prod_binary64
382×exp-prod_binary64
313×pow2_binary64
254×pow-prod-down_binary64
218×expm1-udef_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01442
129942
2307942
Stop Event
node limit
Counts
3 → 97
Calls
Call 1
Inputs
(fma.f64 1/12 (pow.f64 x 4) (fma.f64 1/360 (pow.f64 x 6) (*.f64 1/20160 (pow.f64 x 8))))
(fma.f64 1/360 (pow.f64 x 6) (*.f64 1/20160 (pow.f64 x 8)))
(*.f64 1/20160 (pow.f64 x 8))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (fma.f64 1/360 (pow.f64 x 6) (*.f64 1/20160 (pow.f64 x 8))) (*.f64 1/12 (pow.f64 x 4)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 1/12 (pow.f64 x 4)) (fma.f64 1/360 (pow.f64 x 6) (*.f64 1/20160 (pow.f64 x 8))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (fma.f64 1/12 (pow.f64 x 4) (fma.f64 1/360 (pow.f64 x 6) (*.f64 1/20160 (pow.f64 x 8)))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (*.f64 1/12 (pow.f64 x 4)) 1) (fma.f64 1/360 (pow.f64 x 6) (*.f64 1/20160 (pow.f64 x 8))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (fma.f64 1/12 (pow.f64 x 4) (*.f64 1/360 (pow.f64 x 6))) (*.f64 1/20160 (pow.f64 x 8)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (exp.f64 (fma.f64 1/12 (pow.f64 x 4) (fma.f64 1/360 (pow.f64 x 6) (*.f64 1/20160 (pow.f64 x 8)))))) 2)) (log.f64 (cbrt.f64 (exp.f64 (fma.f64 1/12 (pow.f64 x 4) (fma.f64 1/360 (pow.f64 x 6) (*.f64 1/20160 (pow.f64 x 8))))))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (exp.f64 (fma.f64 1/12 (pow.f64 x 4) (fma.f64 1/360 (pow.f64 x 6) (*.f64 1/20160 (pow.f64 x 8))))))) (log.f64 (sqrt.f64 (exp.f64 (fma.f64 1/12 (pow.f64 x 4) (fma.f64 1/360 (pow.f64 x 6) (*.f64 1/20160 (pow.f64 x 8))))))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (fma.f64 1/12 (pow.f64 x 4) (fma.f64 1/360 (pow.f64 x 6) (*.f64 1/20160 (pow.f64 x 8)))))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (fma.f64 1/12 (pow.f64 x 4) (fma.f64 1/360 (pow.f64 x 6) (*.f64 1/20160 (pow.f64 x 8)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (fma.f64 1/12 (pow.f64 x 4) (fma.f64 1/360 (pow.f64 x 6) (*.f64 1/20160 (pow.f64 x 8)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (fma.f64 1/12 (pow.f64 x 4) (fma.f64 1/360 (pow.f64 x 6) (*.f64 1/20160 (pow.f64 x 8))))) (pow.f64 (cbrt.f64 (fma.f64 1/12 (pow.f64 x 4) (fma.f64 1/360 (pow.f64 x 6) (*.f64 1/20160 (pow.f64 x 8))))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (fma.f64 1/12 (pow.f64 x 4) (fma.f64 1/360 (pow.f64 x 6) (*.f64 1/20160 (pow.f64 x 8))))) 2) (cbrt.f64 (fma.f64 1/12 (pow.f64 x 4) (fma.f64 1/360 (pow.f64 x 6) (*.f64 1/20160 (pow.f64 x 8))))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (fma.f64 1/12 (pow.f64 x 4) (fma.f64 1/360 (pow.f64 x 6) (*.f64 1/20160 (pow.f64 x 8))))) (sqrt.f64 (fma.f64 1/12 (pow.f64 x 4) (fma.f64 1/360 (pow.f64 x 6) (*.f64 1/20160 (pow.f64 x 8))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (*.f64 1/12 (pow.f64 x 4)) 3) (pow.f64 (fma.f64 1/360 (pow.f64 x 6) (*.f64 1/20160 (pow.f64 x 8))) 3)) (+.f64 (pow.f64 (*.f64 1/12 (pow.f64 x 4)) 2) (-.f64 (pow.f64 (fma.f64 1/360 (pow.f64 x 6) (*.f64 1/20160 (pow.f64 x 8))) 2) (*.f64 (*.f64 1/12 (pow.f64 x 4)) (fma.f64 1/360 (pow.f64 x 6) (*.f64 1/20160 (pow.f64 x 8)))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 (*.f64 1/12 (pow.f64 x 4)) 2) (pow.f64 (fma.f64 1/360 (pow.f64 x 6) (*.f64 1/20160 (pow.f64 x 8))) 2)) (-.f64 (*.f64 1/12 (pow.f64 x 4)) (fma.f64 1/360 (pow.f64 x 6) (*.f64 1/20160 (pow.f64 x 8)))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (fma.f64 1/12 (pow.f64 x 4) (fma.f64 1/360 (pow.f64 x 6) (*.f64 1/20160 (pow.f64 x 8)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (fma.f64 1/12 (pow.f64 x 4) (fma.f64 1/360 (pow.f64 x 6) (*.f64 1/20160 (pow.f64 x 8)))) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (fma.f64 1/12 (pow.f64 x 4) (fma.f64 1/360 (pow.f64 x 6) (*.f64 1/20160 (pow.f64 x 8)))) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (fma.f64 1/12 (pow.f64 x 4) (fma.f64 1/360 (pow.f64 x 6) (*.f64 1/20160 (pow.f64 x 8))))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (fma.f64 1/12 (pow.f64 x 4) (fma.f64 1/360 (pow.f64 x 6) (*.f64 1/20160 (pow.f64 x 8))))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 1) (log.f64 (fma.f64 1/12 (pow.f64 x 4) (fma.f64 1/360 (pow.f64 x 6) (*.f64 1/20160 (pow.f64 x 8))))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (log.f64 (fma.f64 1/12 (pow.f64 x 4) (fma.f64 1/360 (pow.f64 x 6) (*.f64 1/20160 (pow.f64 x 8)))))) 2)) (cbrt.f64 (log.f64 (fma.f64 1/12 (pow.f64 x 4) (fma.f64 1/360 (pow.f64 x 6) (*.f64 1/20160 (pow.f64 x 8)))))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (sqrt.f64 (log.f64 (fma.f64 1/12 (pow.f64 x 4) (fma.f64 1/360 (pow.f64 x 6) (*.f64 1/20160 (pow.f64 x 8))))))) (sqrt.f64 (log.f64 (fma.f64 1/12 (pow.f64 x 4) (fma.f64 1/360 (pow.f64 x 6) (*.f64 1/20160 (pow.f64 x 8)))))))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (fma.f64 1/12 (pow.f64 x 4) (fma.f64 1/360 (pow.f64 x 6) (*.f64 1/20160 (pow.f64 x 8)))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (fma.f64 1/12 (pow.f64 x 4) (fma.f64 1/360 (pow.f64 x 6) (*.f64 1/20160 (pow.f64 x 8))))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (fma.f64 1/12 (pow.f64 x 4) (fma.f64 1/360 (pow.f64 x 6) (*.f64 1/20160 (pow.f64 x 8)))))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 (fma.f64 1/360 (pow.f64 x 6) (*.f64 1/20160 (pow.f64 x 8))))) (pow.f64 (exp.f64 1/12) (pow.f64 x 4))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (pow.f64 (exp.f64 1/12) (pow.f64 x 4)) (+.f64 1 (expm1.f64 (fma.f64 1/360 (pow.f64 x 6) (*.f64 1/20160 (pow.f64 x 8)))))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (fma.f64 1/12 (pow.f64 x 4) (fma.f64 1/360 (pow.f64 x 6) (*.f64 1/20160 (pow.f64 x 8)))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (fma.f64 1/12 (pow.f64 x 4) (fma.f64 1/360 (pow.f64 x 6) (*.f64 1/20160 (pow.f64 x 8))))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (fma.f64 1/12 (pow.f64 x 4) (fma.f64 1/360 (pow.f64 x 6) (*.f64 1/20160 (pow.f64 x 8))))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (fma.f64 1/12 (pow.f64 x 4) (fma.f64 1/360 (pow.f64 x 6) (*.f64 1/20160 (pow.f64 x 8))))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (fma.f64 1/12 (pow.f64 x 4) (fma.f64 1/360 (pow.f64 x 6) (*.f64 1/20160 (pow.f64 x 8))))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 3 (log.f64 (fma.f64 1/12 (pow.f64 x 4) (fma.f64 1/360 (pow.f64 x 6) (*.f64 1/20160 (pow.f64 x 8)))))) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (cbrt.f64 (fma.f64 1/12 (pow.f64 x 4) (fma.f64 1/360 (pow.f64 x 6) (*.f64 1/20160 (pow.f64 x 8)))))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (sqrt.f64 (fma.f64 1/12 (pow.f64 x 4) (fma.f64 1/360 (pow.f64 x 6) (*.f64 1/20160 (pow.f64 x 8)))))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (log.f64 (fma.f64 1/12 (pow.f64 x 4) (fma.f64 1/360 (pow.f64 x 6) (*.f64 1/20160 (pow.f64 x 8))))) 1) 1))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 1/20160 (pow.f64 x 8)) (*.f64 1/360 (pow.f64 x 6)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 1/360 (pow.f64 x 6)) (*.f64 1/20160 (pow.f64 x 8)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (fma.f64 1/360 (pow.f64 x 6) (*.f64 1/20160 (pow.f64 x 8))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (*.f64 1/360 (pow.f64 x 6)) 1) (*.f64 1/20160 (pow.f64 x 8)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (exp.f64 (fma.f64 1/360 (pow.f64 x 6) (*.f64 1/20160 (pow.f64 x 8))))) 2)) (log.f64 (cbrt.f64 (exp.f64 (fma.f64 1/360 (pow.f64 x 6) (*.f64 1/20160 (pow.f64 x 8)))))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (exp.f64 (fma.f64 1/360 (pow.f64 x 6) (*.f64 1/20160 (pow.f64 x 8)))))) (log.f64 (sqrt.f64 (exp.f64 (fma.f64 1/360 (pow.f64 x 6) (*.f64 1/20160 (pow.f64 x 8)))))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (fma.f64 1/360 (pow.f64 x 6) (*.f64 1/20160 (pow.f64 x 8))))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (fma.f64 1/360 (pow.f64 x 6) (*.f64 1/20160 (pow.f64 x 8))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (fma.f64 1/360 (pow.f64 x 6) (*.f64 1/20160 (pow.f64 x 8))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (fma.f64 1/360 (pow.f64 x 6) (*.f64 1/20160 (pow.f64 x 8)))) (pow.f64 (cbrt.f64 (fma.f64 1/360 (pow.f64 x 6) (*.f64 1/20160 (pow.f64 x 8)))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (fma.f64 1/360 (pow.f64 x 6) (*.f64 1/20160 (pow.f64 x 8)))) 2) (cbrt.f64 (fma.f64 1/360 (pow.f64 x 6) (*.f64 1/20160 (pow.f64 x 8)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (fma.f64 1/360 (pow.f64 x 6) (*.f64 1/20160 (pow.f64 x 8)))) (sqrt.f64 (fma.f64 1/360 (pow.f64 x 6) (*.f64 1/20160 (pow.f64 x 8)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (*.f64 1/360 (pow.f64 x 6)) 3) (pow.f64 (*.f64 1/20160 (pow.f64 x 8)) 3)) (+.f64 (pow.f64 (*.f64 1/360 (pow.f64 x 6)) 2) (-.f64 (*.f64 (pow.f64 x 16) 1/406425600) (*.f64 (*.f64 1/360 (pow.f64 x 6)) (*.f64 1/20160 (pow.f64 x 8))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 (*.f64 1/360 (pow.f64 x 6)) 2) (*.f64 (pow.f64 x 16) 1/406425600)) (-.f64 (*.f64 1/360 (pow.f64 x 6)) (*.f64 1/20160 (pow.f64 x 8))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (fma.f64 1/360 (pow.f64 x 6) (*.f64 1/20160 (pow.f64 x 8))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (fma.f64 1/360 (pow.f64 x 6) (*.f64 1/20160 (pow.f64 x 8))) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (fma.f64 1/360 (pow.f64 x 6) (*.f64 1/20160 (pow.f64 x 8))) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (fma.f64 1/360 (pow.f64 x 6) (*.f64 1/20160 (pow.f64 x 8)))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (fma.f64 1/360 (pow.f64 x 6) (*.f64 1/20160 (pow.f64 x 8)))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 1) (log.f64 (fma.f64 1/360 (pow.f64 x 6) (*.f64 1/20160 (pow.f64 x 8)))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (log.f64 (fma.f64 1/360 (pow.f64 x 6) (*.f64 1/20160 (pow.f64 x 8))))) 2)) (cbrt.f64 (log.f64 (fma.f64 1/360 (pow.f64 x 6) (*.f64 1/20160 (pow.f64 x 8))))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (sqrt.f64 (log.f64 (fma.f64 1/360 (pow.f64 x 6) (*.f64 1/20160 (pow.f64 x 8)))))) (sqrt.f64 (log.f64 (fma.f64 1/360 (pow.f64 x 6) (*.f64 1/20160 (pow.f64 x 8))))))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (fma.f64 1/360 (pow.f64 x 6) (*.f64 1/20160 (pow.f64 x 8))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (fma.f64 1/360 (pow.f64 x 6) (*.f64 1/20160 (pow.f64 x 8)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (fma.f64 1/360 (pow.f64 x 6) (*.f64 1/20160 (pow.f64 x 8))))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 (*.f64 1/20160 (pow.f64 x 8)))) (pow.f64 (exp.f64 1/360) (pow.f64 x 6))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (pow.f64 (exp.f64 1/360) (pow.f64 x 6)) (+.f64 1 (expm1.f64 (*.f64 1/20160 (pow.f64 x 8))))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (fma.f64 1/360 (pow.f64 x 6) (*.f64 1/20160 (pow.f64 x 8))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (fma.f64 1/360 (pow.f64 x 6) (*.f64 1/20160 (pow.f64 x 8)))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (fma.f64 1/360 (pow.f64 x 6) (*.f64 1/20160 (pow.f64 x 8)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (fma.f64 1/360 (pow.f64 x 6) (*.f64 1/20160 (pow.f64 x 8)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (fma.f64 1/360 (pow.f64 x 6) (*.f64 1/20160 (pow.f64 x 8)))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 3 (log.f64 (fma.f64 1/360 (pow.f64 x 6) (*.f64 1/20160 (pow.f64 x 8))))) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (cbrt.f64 (fma.f64 1/360 (pow.f64 x 6) (*.f64 1/20160 (pow.f64 x 8))))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (sqrt.f64 (fma.f64 1/360 (pow.f64 x 6) (*.f64 1/20160 (pow.f64 x 8))))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (log.f64 (fma.f64 1/360 (pow.f64 x 6) (*.f64 1/20160 (pow.f64 x 8)))) 1) 1))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 1/20160 (pow.f64 x 8)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (pow.f64 (exp.f64 (pow.f64 x 8)) 1/20160)) 2)) (log.f64 (cbrt.f64 (pow.f64 (exp.f64 (pow.f64 x 8)) 1/20160))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (pow.f64 (exp.f64 (pow.f64 x 8)) 1/20160))) (log.f64 (sqrt.f64 (pow.f64 (exp.f64 (pow.f64 x 8)) 1/20160))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (*.f64 1/20160 (pow.f64 x 8)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 1/20160 (pow.f64 x 8)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (pow.f64 x 16) 1/406425600) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 1/20160 (pow.f64 x 8)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 1/20160 (pow.f64 x 8))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (pow.f64 x 4) (sqrt.f64 1/20160)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 1) (fma.f64 8 (log.f64 x) (log.f64 1/20160)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (fma.f64 8 (log.f64 x) (log.f64 1/20160))) 2)) (cbrt.f64 (fma.f64 8 (log.f64 x) (log.f64 1/20160))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (sqrt.f64 (fma.f64 8 (log.f64 x) (log.f64 1/20160)))) (sqrt.f64 (fma.f64 8 (log.f64 x) (log.f64 1/20160))))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (*.f64 (pow.f64 x 16) 1/406425600))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 (pow.f64 x 8)) 1/20160))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (*.f64 1/20160 (pow.f64 x 8)))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 1/20160 (pow.f64 x 8)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 1/20160 (pow.f64 x 8))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 1/20160 (pow.f64 x 8))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (fma.f64 8 (log.f64 x) (log.f64 1/20160)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (fma.f64 8 (log.f64 x) (log.f64 1/20160)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 3 (fma.f64 8 (log.f64 x) (log.f64 1/20160))) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (cbrt.f64 (*.f64 1/20160 (pow.f64 x 8)))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (*.f64 (pow.f64 x 4) (sqrt.f64 1/20160))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (fma.f64 8 (log.f64 x) (log.f64 1/20160)) 1) 1))))))

simplify164.0ms (1.8%)

Algorithm
egg-herbie
Rules
920×fma-def_binary64
754×sqr-pow_binary64
646×cube-prod_binary64
472×unswap-sqr_binary64
387×unpow3_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
018336
140336
284336
3218336
4737336
51617336
63017336
73344336
83529336
93732336
104009336
114369336
124784336
135287336
145894336
156699336
167139336
177635336
Stop Event
node limit
Counts
121 → 105
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 (*.f64 1/12 (pow.f64 x 4)) (*.f64 1/20160 (pow.f64 x 8))))
(+.f64 (*.f64 1/360 (pow.f64 x 6)) (+.f64 (*.f64 1/12 (pow.f64 x 4)) (*.f64 1/20160 (pow.f64 x 8))))
(*.f64 1/20160 (pow.f64 x 8))
(+.f64 (*.f64 1/360 (pow.f64 x 6)) (*.f64 1/20160 (pow.f64 x 8)))
(+.f64 (*.f64 1/360 (pow.f64 x 6)) (+.f64 (*.f64 1/12 (pow.f64 x 4)) (*.f64 1/20160 (pow.f64 x 8))))
(+.f64 (*.f64 1/360 (pow.f64 x 6)) (+.f64 (*.f64 1/12 (pow.f64 x 4)) (*.f64 1/20160 (pow.f64 x 8))))
(*.f64 1/20160 (pow.f64 x 8))
(+.f64 (*.f64 1/360 (pow.f64 x 6)) (*.f64 1/20160 (pow.f64 x 8)))
(+.f64 (*.f64 1/360 (pow.f64 x 6)) (+.f64 (*.f64 1/12 (pow.f64 x 4)) (*.f64 1/20160 (pow.f64 x 8))))
(+.f64 (*.f64 1/360 (pow.f64 x 6)) (+.f64 (*.f64 1/12 (pow.f64 x 4)) (*.f64 1/20160 (pow.f64 x 8))))
(*.f64 1/360 (pow.f64 x 6))
(+.f64 (*.f64 1/360 (pow.f64 x 6)) (*.f64 1/20160 (pow.f64 x 8)))
(+.f64 (*.f64 1/360 (pow.f64 x 6)) (*.f64 1/20160 (pow.f64 x 8)))
(+.f64 (*.f64 1/360 (pow.f64 x 6)) (*.f64 1/20160 (pow.f64 x 8)))
(*.f64 1/20160 (pow.f64 x 8))
(+.f64 (*.f64 1/360 (pow.f64 x 6)) (*.f64 1/20160 (pow.f64 x 8)))
(+.f64 (*.f64 1/360 (pow.f64 x 6)) (*.f64 1/20160 (pow.f64 x 8)))
(+.f64 (*.f64 1/360 (pow.f64 x 6)) (*.f64 1/20160 (pow.f64 x 8)))
(*.f64 1/20160 (pow.f64 x 8))
(+.f64 (*.f64 1/360 (pow.f64 x 6)) (*.f64 1/20160 (pow.f64 x 8)))
(+.f64 (*.f64 1/360 (pow.f64 x 6)) (*.f64 1/20160 (pow.f64 x 8)))
(+.f64 (*.f64 1/360 (pow.f64 x 6)) (*.f64 1/20160 (pow.f64 x 8)))
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 (*.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) (*.f64 1/20160 (pow.f64 x 8))))
(fma.f64 1/12 (pow.f64 x 4) (fma.f64 1/20160 (pow.f64 x 8) (*.f64 1/360 (pow.f64 x 6))))
(fma.f64 1/12 (pow.f64 x 4) (*.f64 (pow.f64 x 6) (fma.f64 x (*.f64 x 1/20160) 1/360)))
(fma.f64 (pow.f64 x 4) (fma.f64 (pow.f64 x 4) 1/20160 1/12) (*.f64 1/360 (pow.f64 x 6)))
(+.f64 (*.f64 1/360 (pow.f64 x 6)) (+.f64 (*.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) (*.f64 1/20160 (pow.f64 x 8))))
(fma.f64 1/12 (pow.f64 x 4) (fma.f64 1/20160 (pow.f64 x 8) (*.f64 1/360 (pow.f64 x 6))))
(fma.f64 1/12 (pow.f64 x 4) (*.f64 (pow.f64 x 6) (fma.f64 x (*.f64 x 1/20160) 1/360)))
(fma.f64 (pow.f64 x 4) (fma.f64 (pow.f64 x 4) 1/20160 1/12) (*.f64 1/360 (pow.f64 x 6)))
(*.f64 1/20160 (pow.f64 x 8))
(+.f64 (*.f64 1/360 (pow.f64 x 6)) (*.f64 1/20160 (pow.f64 x 8)))
(fma.f64 1/360 (pow.f64 x 6) (*.f64 1/20160 (pow.f64 x 8)))
(fma.f64 1/20160 (pow.f64 x 8) (*.f64 1/360 (pow.f64 x 6)))
(*.f64 (pow.f64 x 6) (fma.f64 x (*.f64 x 1/20160) 1/360))
(+.f64 (*.f64 1/360 (pow.f64 x 6)) (+.f64 (*.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) (*.f64 1/20160 (pow.f64 x 8))))
(fma.f64 1/12 (pow.f64 x 4) (fma.f64 1/20160 (pow.f64 x 8) (*.f64 1/360 (pow.f64 x 6))))
(fma.f64 1/12 (pow.f64 x 4) (*.f64 (pow.f64 x 6) (fma.f64 x (*.f64 x 1/20160) 1/360)))
(fma.f64 (pow.f64 x 4) (fma.f64 (pow.f64 x 4) 1/20160 1/12) (*.f64 1/360 (pow.f64 x 6)))
(+.f64 (*.f64 1/360 (pow.f64 x 6)) (+.f64 (*.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) (*.f64 1/20160 (pow.f64 x 8))))
(fma.f64 1/12 (pow.f64 x 4) (fma.f64 1/20160 (pow.f64 x 8) (*.f64 1/360 (pow.f64 x 6))))
(fma.f64 1/12 (pow.f64 x 4) (*.f64 (pow.f64 x 6) (fma.f64 x (*.f64 x 1/20160) 1/360)))
(fma.f64 (pow.f64 x 4) (fma.f64 (pow.f64 x 4) 1/20160 1/12) (*.f64 1/360 (pow.f64 x 6)))
(*.f64 1/20160 (pow.f64 x 8))
(+.f64 (*.f64 1/360 (pow.f64 x 6)) (*.f64 1/20160 (pow.f64 x 8)))
(fma.f64 1/360 (pow.f64 x 6) (*.f64 1/20160 (pow.f64 x 8)))
(fma.f64 1/20160 (pow.f64 x 8) (*.f64 1/360 (pow.f64 x 6)))
(*.f64 (pow.f64 x 6) (fma.f64 x (*.f64 x 1/20160) 1/360))
(+.f64 (*.f64 1/360 (pow.f64 x 6)) (+.f64 (*.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) (*.f64 1/20160 (pow.f64 x 8))))
(fma.f64 1/12 (pow.f64 x 4) (fma.f64 1/20160 (pow.f64 x 8) (*.f64 1/360 (pow.f64 x 6))))
(fma.f64 1/12 (pow.f64 x 4) (*.f64 (pow.f64 x 6) (fma.f64 x (*.f64 x 1/20160) 1/360)))
(fma.f64 (pow.f64 x 4) (fma.f64 (pow.f64 x 4) 1/20160 1/12) (*.f64 1/360 (pow.f64 x 6)))
(+.f64 (*.f64 1/360 (pow.f64 x 6)) (+.f64 (*.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) (*.f64 1/20160 (pow.f64 x 8))))
(fma.f64 1/12 (pow.f64 x 4) (fma.f64 1/20160 (pow.f64 x 8) (*.f64 1/360 (pow.f64 x 6))))
(fma.f64 1/12 (pow.f64 x 4) (*.f64 (pow.f64 x 6) (fma.f64 x (*.f64 x 1/20160) 1/360)))
(fma.f64 (pow.f64 x 4) (fma.f64 (pow.f64 x 4) 1/20160 1/12) (*.f64 1/360 (pow.f64 x 6)))
(*.f64 1/360 (pow.f64 x 6))
(+.f64 (*.f64 1/360 (pow.f64 x 6)) (*.f64 1/20160 (pow.f64 x 8)))
(fma.f64 1/360 (pow.f64 x 6) (*.f64 1/20160 (pow.f64 x 8)))
(fma.f64 1/20160 (pow.f64 x 8) (*.f64 1/360 (pow.f64 x 6)))
(*.f64 (pow.f64 x 6) (fma.f64 x (*.f64 x 1/20160) 1/360))
(+.f64 (*.f64 1/360 (pow.f64 x 6)) (*.f64 1/20160 (pow.f64 x 8)))
(fma.f64 1/360 (pow.f64 x 6) (*.f64 1/20160 (pow.f64 x 8)))
(fma.f64 1/20160 (pow.f64 x 8) (*.f64 1/360 (pow.f64 x 6)))
(*.f64 (pow.f64 x 6) (fma.f64 x (*.f64 x 1/20160) 1/360))
(+.f64 (*.f64 1/360 (pow.f64 x 6)) (*.f64 1/20160 (pow.f64 x 8)))
(fma.f64 1/360 (pow.f64 x 6) (*.f64 1/20160 (pow.f64 x 8)))
(fma.f64 1/20160 (pow.f64 x 8) (*.f64 1/360 (pow.f64 x 6)))
(*.f64 (pow.f64 x 6) (fma.f64 x (*.f64 x 1/20160) 1/360))
(*.f64 1/20160 (pow.f64 x 8))
(+.f64 (*.f64 1/360 (pow.f64 x 6)) (*.f64 1/20160 (pow.f64 x 8)))
(fma.f64 1/360 (pow.f64 x 6) (*.f64 1/20160 (pow.f64 x 8)))
(fma.f64 1/20160 (pow.f64 x 8) (*.f64 1/360 (pow.f64 x 6)))
(*.f64 (pow.f64 x 6) (fma.f64 x (*.f64 x 1/20160) 1/360))
(+.f64 (*.f64 1/360 (pow.f64 x 6)) (*.f64 1/20160 (pow.f64 x 8)))
(fma.f64 1/360 (pow.f64 x 6) (*.f64 1/20160 (pow.f64 x 8)))
(fma.f64 1/20160 (pow.f64 x 8) (*.f64 1/360 (pow.f64 x 6)))
(*.f64 (pow.f64 x 6) (fma.f64 x (*.f64 x 1/20160) 1/360))
(+.f64 (*.f64 1/360 (pow.f64 x 6)) (*.f64 1/20160 (pow.f64 x 8)))
(fma.f64 1/360 (pow.f64 x 6) (*.f64 1/20160 (pow.f64 x 8)))
(fma.f64 1/20160 (pow.f64 x 8) (*.f64 1/360 (pow.f64 x 6)))
(*.f64 (pow.f64 x 6) (fma.f64 x (*.f64 x 1/20160) 1/360))
(*.f64 1/20160 (pow.f64 x 8))
(+.f64 (*.f64 1/360 (pow.f64 x 6)) (*.f64 1/20160 (pow.f64 x 8)))
(fma.f64 1/360 (pow.f64 x 6) (*.f64 1/20160 (pow.f64 x 8)))
(fma.f64 1/20160 (pow.f64 x 8) (*.f64 1/360 (pow.f64 x 6)))
(*.f64 (pow.f64 x 6) (fma.f64 x (*.f64 x 1/20160) 1/360))
(+.f64 (*.f64 1/360 (pow.f64 x 6)) (*.f64 1/20160 (pow.f64 x 8)))
(fma.f64 1/360 (pow.f64 x 6) (*.f64 1/20160 (pow.f64 x 8)))
(fma.f64 1/20160 (pow.f64 x 8) (*.f64 1/360 (pow.f64 x 6)))
(*.f64 (pow.f64 x 6) (fma.f64 x (*.f64 x 1/20160) 1/360))
(+.f64 (*.f64 1/360 (pow.f64 x 6)) (*.f64 1/20160 (pow.f64 x 8)))
(fma.f64 1/360 (pow.f64 x 6) (*.f64 1/20160 (pow.f64 x 8)))
(fma.f64 1/20160 (pow.f64 x 8) (*.f64 1/360 (pow.f64 x 6)))
(*.f64 (pow.f64 x 6) (fma.f64 x (*.f64 x 1/20160) 1/360))

localize2.0ms (0%)

Compiler

Compiled 5 to 2 computations (60% saved)

localize6.0ms (0.1%)

Local error

Found 1 expressions with local error:

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

Compiled 16 to 10 computations (37.5% saved)

series15.0ms (0.2%)

Counts
1 → 12
Calls

3 calls:

TimeVariablePointExpression
12.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)))

rewrite54.0ms (0.6%)

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.8%)

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))

rewrite49.0ms (0.5%)

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))))))))

simplify191.0ms (2.1%)

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))

localize59.0ms (0.6%)

Local error

Found 2 expressions with local error:

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

Compiled 50 to 39 computations (22% saved)

series2.0ms (0%)

Counts
2 → 0
Calls

6 calls:

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

rewrite52.0ms (0.6%)

Algorithm
batch-egg-rewrite
Rules
807×pow1_binary64
759×add-log-exp_binary64
759×log1p-expm1-u_binary64
759×expm1-log1p-u_binary64
743×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01014
121314
2223914
Stop Event
node limit
Counts
2 → 22
Calls
Call 1
Inputs
(*.f64 1/12 (pow.f64 x 4))
(*.f64 1/360 (pow.f64 x 6))
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 (*.f64 1/360 (pow.f64 x 6))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 1/360 (pow.f64 x 6)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 1/360 (pow.f64 x 6)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (*.f64 x x) (cbrt.f64 1/360)) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (pow.f64 x 3) (sqrt.f64 1/360)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (*.f64 (pow.f64 x 12) 1/129600))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 (pow.f64 x 6)) 1/360))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 1/360 (pow.f64 x 6)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 1/360 (pow.f64 x 6))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 1/360 (pow.f64 x 6))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 1/360 (pow.f64 x 6))))))))

simplify6.0ms (0.1%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
000
Stop Event
saturated
Counts
22 → 22
Calls
Call 1
Inputs
Outputs

eval148.0ms (1.6%)

Compiler

Compiled 3735 to 2831 computations (24.2% saved)

prune63.0ms (0.7%)

Pruning

6 alts after pruning (4 fresh and 2 done)

PrunedKeptTotal
New1914195
Fresh000
Picked101
Done224
Total1946200
Error
0b
Counts
200 → 6
Alt Table
Click to see full alt table
StatusErrorProgram
0.6b
(*.f64 x x)
0.5b
(+.f64 (*.f64 x x) (*.f64 1/12 (pow.f64 x 4)))
26.9b
(*.f64 1/12 (pow.f64 x 4))
0.4b
(fma.f64 x x (+.f64 (*.f64 1/360 (pow.f64 x 6)) (+.f64 (*.f64 1/12 (pow.f64 x 4)) (*.f64 1/20160 (pow.f64 x 8)))))
0.4b
(fma.f64 x x (*.f64 (pow.f64 x 4) (fma.f64 1/360 (*.f64 x x) 1/12)))
26.5b
(+.f64 -2 (*.f64 2 (cosh.f64 x)))
Compiler

Compiled 62 to 45 computations (27.4% 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)

localize24.0ms (0.3%)

Local error

Found 1 expressions with local error:

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

Compiled 24 to 15 computations (37.5% 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
@inf
(*.f64 (pow.f64 x 4) (fma.f64 1/360 (*.f64 x x) 1/12))
1.0ms
x
@0
(*.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
@0
(fma.f64 1/360 (*.f64 x x) 1/12)
0.0ms
x
@-inf
(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)))))))

simplify189.0ms (2.1%)

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)

localize64.0ms (0.7%)

Local error

Found 4 expressions with local error:

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

Compiled 80 to 63 computations (21.3% saved)

series1.0ms (0%)

Counts
1 → 6
Calls

3 calls:

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

rewrite74.0ms (0.8%)

Algorithm
batch-egg-rewrite
Rules
673×log-prod_binary64
627×fma-def_binary64
330×fma-neg_binary64
276×expm1-udef_binary64
276×log1p-udef_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01621
136121
2439521
Stop Event
node limit
Counts
1 → 88
Calls
Call 1
Inputs
(+.f64 (*.f64 1/360 (pow.f64 x 6)) (+.f64 (*.f64 1/12 (pow.f64 x 4)) (*.f64 1/20160 (pow.f64 x 8))))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (fma.f64 1/360 (pow.f64 x 6) (fma.f64 1/12 (pow.f64 x 4) (*.f64 1/20160 (pow.f64 x 8)))))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (/.f64 (*.f64 (pow.f64 x 12) 1/129600) (-.f64 (*.f64 1/360 (pow.f64 x 6)) (fma.f64 1/12 (pow.f64 x 4) (*.f64 1/20160 (pow.f64 x 8))))) (/.f64 (pow.f64 (fma.f64 1/12 (pow.f64 x 4) (*.f64 1/20160 (pow.f64 x 8))) 2) (-.f64 (*.f64 1/360 (pow.f64 x 6)) (fma.f64 1/12 (pow.f64 x 4) (*.f64 1/20160 (pow.f64 x 8))))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (fma.f64 1/360 (pow.f64 x 6) (fma.f64 1/12 (pow.f64 x 4) (*.f64 1/20160 (pow.f64 x 8)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (fma.f64 1/360 (pow.f64 x 6) (fma.f64 1/12 (pow.f64 x 4) (*.f64 1/20160 (pow.f64 x 8)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (fma.f64 1/360 (pow.f64 x 6) (fma.f64 1/12 (pow.f64 x 4) (*.f64 1/20160 (pow.f64 x 8))))) (pow.f64 (cbrt.f64 (fma.f64 1/360 (pow.f64 x 6) (fma.f64 1/12 (pow.f64 x 4) (*.f64 1/20160 (pow.f64 x 8))))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (fma.f64 1/360 (pow.f64 x 6) (fma.f64 1/12 (pow.f64 x 4) (*.f64 1/20160 (pow.f64 x 8))))) 2) (cbrt.f64 (fma.f64 1/360 (pow.f64 x 6) (fma.f64 1/12 (pow.f64 x 4) (*.f64 1/20160 (pow.f64 x 8))))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (fma.f64 1/360 (pow.f64 x 6) (fma.f64 1/12 (pow.f64 x 4) (*.f64 1/20160 (pow.f64 x 8))))) (sqrt.f64 (fma.f64 1/360 (pow.f64 x 6) (fma.f64 1/12 (pow.f64 x 4) (*.f64 1/20160 (pow.f64 x 8))))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (fma.f64 (pow.f64 (pow.f64 x 6) 3) 1/46656000 (pow.f64 (fma.f64 1/12 (pow.f64 x 4) (*.f64 1/20160 (pow.f64 x 8))) 3)) (/.f64 1 (fma.f64 (fma.f64 1/12 (pow.f64 x 4) (*.f64 1/20160 (pow.f64 x 8))) (-.f64 (fma.f64 1/12 (pow.f64 x 4) (*.f64 1/20160 (pow.f64 x 8))) (*.f64 1/360 (pow.f64 x 6))) (*.f64 (pow.f64 x 12) 1/129600))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 (*.f64 (pow.f64 x 12) 1/129600) (pow.f64 (fma.f64 1/12 (pow.f64 x 4) (*.f64 1/20160 (pow.f64 x 8))) 2)) (/.f64 1 (-.f64 (*.f64 1/360 (pow.f64 x 6)) (fma.f64 1/12 (pow.f64 x 4) (*.f64 1/20160 (pow.f64 x 8))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (fma.f64 (fma.f64 1/12 (pow.f64 x 4) (*.f64 1/20160 (pow.f64 x 8))) (-.f64 (fma.f64 1/12 (pow.f64 x 4) (*.f64 1/20160 (pow.f64 x 8))) (*.f64 1/360 (pow.f64 x 6))) (*.f64 (pow.f64 x 12) 1/129600)) (fma.f64 (pow.f64 (pow.f64 x 6) 3) 1/46656000 (pow.f64 (fma.f64 1/12 (pow.f64 x 4) (*.f64 1/20160 (pow.f64 x 8))) 3))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (-.f64 (*.f64 1/360 (pow.f64 x 6)) (fma.f64 1/12 (pow.f64 x 4) (*.f64 1/20160 (pow.f64 x 8)))) (-.f64 (*.f64 (pow.f64 x 12) 1/129600) (pow.f64 (fma.f64 1/12 (pow.f64 x 4) (*.f64 1/20160 (pow.f64 x 8))) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (fma.f64 (pow.f64 (pow.f64 x 6) 3) 1/46656000 (pow.f64 (fma.f64 1/12 (pow.f64 x 4) (*.f64 1/20160 (pow.f64 x 8))) 3)) (fma.f64 (fma.f64 1/12 (pow.f64 x 4) (*.f64 1/20160 (pow.f64 x 8))) (-.f64 (fma.f64 1/12 (pow.f64 x 4) (*.f64 1/20160 (pow.f64 x 8))) (*.f64 1/360 (pow.f64 x 6))) (*.f64 (pow.f64 x 12) 1/129600)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (fma.f64 (pow.f64 (pow.f64 x 6) 3) 1/46656000 (pow.f64 (fma.f64 1/12 (pow.f64 x 4) (*.f64 1/20160 (pow.f64 x 8))) 3)) (+.f64 (pow.f64 (fma.f64 1/12 (pow.f64 x 4) (*.f64 1/20160 (pow.f64 x 8))) 2) (-.f64 (*.f64 (pow.f64 x 12) 1/129600) (*.f64 (*.f64 1/360 (pow.f64 x 6)) (fma.f64 1/12 (pow.f64 x 4) (*.f64 1/20160 (pow.f64 x 8)))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 (pow.f64 x 12) 1/129600) (pow.f64 (fma.f64 1/12 (pow.f64 x 4) (*.f64 1/20160 (pow.f64 x 8))) 2)) (-.f64 (*.f64 1/360 (pow.f64 x 6)) (fma.f64 1/12 (pow.f64 x 4) (*.f64 1/20160 (pow.f64 x 8)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (fma.f64 (pow.f64 (pow.f64 x 6) 3) 1/46656000 (pow.f64 (fma.f64 1/12 (pow.f64 x 4) (*.f64 1/20160 (pow.f64 x 8))) 3))) (neg.f64 (fma.f64 (fma.f64 1/12 (pow.f64 x 4) (*.f64 1/20160 (pow.f64 x 8))) (-.f64 (fma.f64 1/12 (pow.f64 x 4) (*.f64 1/20160 (pow.f64 x 8))) (*.f64 1/360 (pow.f64 x 6))) (*.f64 (pow.f64 x 12) 1/129600))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (-.f64 (*.f64 (pow.f64 x 12) 1/129600) (pow.f64 (fma.f64 1/12 (pow.f64 x 4) (*.f64 1/20160 (pow.f64 x 8))) 2))) (neg.f64 (-.f64 (*.f64 1/360 (pow.f64 x 6)) (fma.f64 1/12 (pow.f64 x 4) (*.f64 1/20160 (pow.f64 x 8))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (fma.f64 1/360 (pow.f64 x 6) (*.f64 1/12 (pow.f64 x 4))) 3) (*.f64 1/8193540096000 (pow.f64 (pow.f64 x 8) 3))) (fma.f64 (fma.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 (*.f64 1/406425600 (pow.f64 x 16)) (*.f64 (fma.f64 1/360 (pow.f64 x 6) (*.f64 1/12 (pow.f64 x 4))) (*.f64 1/20160 (pow.f64 x 8))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 (fma.f64 1/12 (pow.f64 x 4) (*.f64 1/20160 (pow.f64 x 8))) 2) (*.f64 (pow.f64 x 12) 1/129600)) (-.f64 (fma.f64 1/12 (pow.f64 x 4) (*.f64 1/20160 (pow.f64 x 8))) (*.f64 1/360 (pow.f64 x 6))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (fma.f64 (fma.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))) (neg.f64 (*.f64 1/406425600 (pow.f64 x 16)))) (-.f64 (fma.f64 1/360 (pow.f64 x 6) (*.f64 1/12 (pow.f64 x 4))) (*.f64 1/20160 (pow.f64 x 8))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (fma.f64 1/360 (pow.f64 x 6) (fma.f64 1/12 (pow.f64 x 4) (*.f64 1/20160 (pow.f64 x 8)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (fma.f64 1/360 (pow.f64 x 6) (fma.f64 1/12 (pow.f64 x 4) (*.f64 1/20160 (pow.f64 x 8)))) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (fma.f64 1/360 (pow.f64 x 6) (fma.f64 1/12 (pow.f64 x 4) (*.f64 1/20160 (pow.f64 x 8))))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (fma.f64 1/360 (pow.f64 x 6) (fma.f64 1/12 (pow.f64 x 4) (*.f64 1/20160 (pow.f64 x 8))))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (fma.f64 1/360 (pow.f64 x 6) (fma.f64 1/12 (pow.f64 x 4) (*.f64 1/20160 (pow.f64 x 8)))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (fma.f64 1/360 (pow.f64 x 6) (fma.f64 1/12 (pow.f64 x 4) (*.f64 1/20160 (pow.f64 x 8))))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (fma.f64 1/360 (pow.f64 x 6) (fma.f64 1/12 (pow.f64 x 4) (*.f64 1/20160 (pow.f64 x 8)))))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 (*.f64 1/360 (pow.f64 x 6)))) (exp.f64 (fma.f64 1/12 (pow.f64 x 4) (*.f64 1/20160 (pow.f64 x 8))))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (pow.f64 (exp.f64 (pow.f64 x 6)) 1/360) (+.f64 1 (expm1.f64 (fma.f64 1/12 (pow.f64 x 4) (*.f64 1/20160 (pow.f64 x 8)))))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 (*.f64 1/360 (pow.f64 x 6)))) (+.f64 1 (expm1.f64 (fma.f64 1/12 (pow.f64 x 4) (*.f64 1/20160 (pow.f64 x 8)))))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (pow.f64 (exp.f64 (pow.f64 x 8)) 1/20160) (exp.f64 (fma.f64 1/360 (pow.f64 x 6) (*.f64 1/12 (pow.f64 x 4))))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 (*.f64 1/20160 (pow.f64 x 8)))) (exp.f64 (fma.f64 1/360 (pow.f64 x 6) (*.f64 1/12 (pow.f64 x 4))))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (pow.f64 (exp.f64 (pow.f64 x 8)) 1/20160) (*.f64 (pow.f64 (exp.f64 (pow.f64 x 6)) 1/360) (pow.f64 (exp.f64 (pow.f64 x 4)) 1/12))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 (*.f64 1/20160 (pow.f64 x 8)))) (*.f64 (pow.f64 (exp.f64 (pow.f64 x 6)) 1/360) (pow.f64 (exp.f64 (pow.f64 x 4)) 1/12))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 (fma.f64 1/12 (pow.f64 x 4) (*.f64 1/20160 (pow.f64 x 8))))) (pow.f64 (exp.f64 (pow.f64 x 6)) 1/360)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (exp.f64 (fma.f64 1/12 (pow.f64 x 4) (*.f64 1/20160 (pow.f64 x 8)))) (+.f64 1 (expm1.f64 (*.f64 1/360 (pow.f64 x 6))))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 (fma.f64 1/12 (pow.f64 x 4) (*.f64 1/20160 (pow.f64 x 8))))) (+.f64 1 (expm1.f64 (*.f64 1/360 (pow.f64 x 6))))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (*.f64 (pow.f64 (exp.f64 (pow.f64 x 6)) 1/360) (pow.f64 (exp.f64 (pow.f64 x 4)) 1/12)) (pow.f64 (exp.f64 (pow.f64 x 8)) 1/20160)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (exp.f64 (fma.f64 1/360 (pow.f64 x 6) (*.f64 1/12 (pow.f64 x 4)))) (+.f64 1 (expm1.f64 (*.f64 1/20160 (pow.f64 x 8))))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (*.f64 (pow.f64 (exp.f64 (pow.f64 x 6)) 1/360) (pow.f64 (exp.f64 (pow.f64 x 4)) 1/12)) (+.f64 1 (expm1.f64 (*.f64 1/20160 (pow.f64 x 8))))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (fma.f64 1/360 (pow.f64 x 6) (fma.f64 1/12 (pow.f64 x 4) (*.f64 1/20160 (pow.f64 x 8)))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (fma.f64 1/360 (pow.f64 x 6) (fma.f64 1/12 (pow.f64 x 4) (*.f64 1/20160 (pow.f64 x 8))))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (fma.f64 1/360 (pow.f64 x 6) (fma.f64 1/12 (pow.f64 x 4) (*.f64 1/20160 (pow.f64 x 8))))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (fma.f64 1/360 (pow.f64 x 6) (fma.f64 1/12 (pow.f64 x 4) (*.f64 1/20160 (pow.f64 x 8))))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (fma.f64 1/360 (pow.f64 x 6) (fma.f64 1/12 (pow.f64 x 4) (*.f64 1/20160 (pow.f64 x 8))))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1/360 (pow.f64 x 6) (fma.f64 1/12 (pow.f64 x 4) (*.f64 1/20160 (pow.f64 x 8))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 x 6) 1/360 (fma.f64 1/12 (pow.f64 x 4) (*.f64 1/20160 (pow.f64 x 8))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 1/360 (pow.f64 x 6)) 1 (fma.f64 1/12 (pow.f64 x 4) (*.f64 1/20160 (pow.f64 x 8))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1/12 (pow.f64 x 4) (fma.f64 1/20160 (pow.f64 x 8) (*.f64 1/360 (pow.f64 x 6))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 x 4) 1/12 (fma.f64 1/20160 (pow.f64 x 8) (*.f64 1/360 (pow.f64 x 6))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 x 4) (*.f64 (pow.f64 x 4) 1/20160) (fma.f64 1/360 (pow.f64 x 6) (*.f64 1/12 (pow.f64 x 4))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 x 4) (*.f64 (*.f64 x x) 1/360) (fma.f64 1/12 (pow.f64 x 4) (*.f64 1/20160 (pow.f64 x 8))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 1/12 (pow.f64 x 4)) 1 (fma.f64 1/20160 (pow.f64 x 8) (*.f64 1/360 (pow.f64 x 6))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1/20160 (pow.f64 x 8) (fma.f64 1/360 (pow.f64 x 6) (*.f64 1/12 (pow.f64 x 4))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 x 8) 1/20160 (fma.f64 1/360 (pow.f64 x 6) (*.f64 1/12 (pow.f64 x 4))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 1/20160 (pow.f64 x 8)) 1 (fma.f64 1/360 (pow.f64 x 6) (*.f64 1/12 (pow.f64 x 4))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (fma.f64 1/12 (pow.f64 x 4) (*.f64 1/20160 (pow.f64 x 8))) 1 (*.f64 1/360 (pow.f64 x 6)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (*.f64 1/360 (pow.f64 x 6)) (fma.f64 1/12 (pow.f64 x 4) (*.f64 1/20160 (pow.f64 x 8))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (*.f64 1/12 (pow.f64 x 4)) (fma.f64 1/20160 (pow.f64 x 8) (*.f64 1/360 (pow.f64 x 6))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (*.f64 1/20160 (pow.f64 x 8)) (fma.f64 1/360 (pow.f64 x 6) (*.f64 1/12 (pow.f64 x 4))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (fma.f64 1/12 (pow.f64 x 4) (*.f64 1/20160 (pow.f64 x 8))) (*.f64 1/360 (pow.f64 x 6)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (fma.f64 1/360 (pow.f64 x 6) (*.f64 1/12 (pow.f64 x 4))) (*.f64 1/20160 (pow.f64 x 8)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 x x) (*.f64 (*.f64 x x) 1/12) (fma.f64 1/20160 (pow.f64 x 8) (*.f64 1/360 (pow.f64 x 6))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 x 3) (*.f64 (pow.f64 x 3) 1/360) (fma.f64 1/12 (pow.f64 x 4) (*.f64 1/20160 (pow.f64 x 8))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (fma.f64 1/12 (pow.f64 x 4) (*.f64 1/20160 (pow.f64 x 8)))) (pow.f64 (cbrt.f64 (fma.f64 1/12 (pow.f64 x 4) (*.f64 1/20160 (pow.f64 x 8)))) 2) (*.f64 1/360 (pow.f64 x 6)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (fma.f64 1/12 (pow.f64 x 4) (*.f64 1/20160 (pow.f64 x 8)))) 2) (cbrt.f64 (fma.f64 1/12 (pow.f64 x 4) (*.f64 1/20160 (pow.f64 x 8)))) (*.f64 1/360 (pow.f64 x 6)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (*.f64 x x) (cbrt.f64 1/360)) (cbrt.f64 (*.f64 (pow.f64 x 12) 1/129600)) (fma.f64 1/12 (pow.f64 x 4) (*.f64 1/20160 (pow.f64 x 8))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (*.f64 (pow.f64 x 12) 1/129600)) (*.f64 (*.f64 x x) (cbrt.f64 1/360)) (fma.f64 1/12 (pow.f64 x 4) (*.f64 1/20160 (pow.f64 x 8))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (*.f64 1/20160 (pow.f64 x 8))) (cbrt.f64 (*.f64 1/406425600 (pow.f64 x 16))) (fma.f64 1/360 (pow.f64 x 6) (*.f64 1/12 (pow.f64 x 4))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (*.f64 1/406425600 (pow.f64 x 16))) (cbrt.f64 (*.f64 1/20160 (pow.f64 x 8))) (fma.f64 1/360 (pow.f64 x 6) (*.f64 1/12 (pow.f64 x 4))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (pow.f64 x 8)) (*.f64 (cbrt.f64 (pow.f64 x 4)) 1/12) (fma.f64 1/20160 (pow.f64 x 8) (*.f64 1/360 (pow.f64 x 6))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (pow.f64 x 16)) (*.f64 (cbrt.f64 (pow.f64 x 8)) 1/20160) (fma.f64 1/360 (pow.f64 x 6) (*.f64 1/12 (pow.f64 x 4))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (*.f64 1/12 (pow.f64 x 4))) (cbrt.f64 (*.f64 (pow.f64 x 8) 1/144)) (fma.f64 1/20160 (pow.f64 x 8) (*.f64 1/360 (pow.f64 x 6))))))) (#(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))) (fma.f64 1/20160 (pow.f64 x 8) (*.f64 1/360 (pow.f64 x 6))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (fma.f64 1/12 (pow.f64 x 4) (*.f64 1/20160 (pow.f64 x 8)))) (sqrt.f64 (fma.f64 1/12 (pow.f64 x 4) (*.f64 1/20160 (pow.f64 x 8)))) (*.f64 1/360 (pow.f64 x 6)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (pow.f64 x 3) (sqrt.f64 1/360)) (*.f64 (pow.f64 x 3) (sqrt.f64 1/360)) (fma.f64 1/12 (pow.f64 x 4) (*.f64 1/20160 (pow.f64 x 8))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (pow.f64 x 4) (sqrt.f64 1/20160)) (*.f64 (pow.f64 x 4) (sqrt.f64 1/20160)) (fma.f64 1/360 (pow.f64 x 6) (*.f64 1/12 (pow.f64 x 4))))))) (#(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)) (fma.f64 1/20160 (pow.f64 x 8) (*.f64 1/360 (pow.f64 x 6))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (fma.f64 1/8193540096000 (pow.f64 (pow.f64 x 8) 3) (*.f64 (pow.f64 x 12) 1/1728)) (/.f64 1 (-.f64 (fma.f64 (pow.f64 x 8) 1/144 (*.f64 1/406425600 (pow.f64 x 16))) (*.f64 (*.f64 1/12 (pow.f64 x 4)) (*.f64 1/20160 (pow.f64 x 8))))) (*.f64 1/360 (pow.f64 x 6)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (-.f64 (*.f64 (pow.f64 x 8) 1/144) (*.f64 1/406425600 (pow.f64 x 16))) (/.f64 1 (fma.f64 1/12 (pow.f64 x 4) (*.f64 -1/20160 (pow.f64 x 8)))) (*.f64 1/360 (pow.f64 x 6)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (fma.f64 1/360 (pow.f64 x 6) (*.f64 1/12 (pow.f64 x 4))) 1 (*.f64 1/20160 (pow.f64 x 8)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (cbrt.f64 (fma.f64 1/360 (pow.f64 x 6) (*.f64 1/12 (pow.f64 x 4)))) (cbrt.f64 (fma.f64 1/360 (pow.f64 x 6) (*.f64 1/12 (pow.f64 x 4))))) (cbrt.f64 (fma.f64 1/360 (pow.f64 x 6) (*.f64 1/12 (pow.f64 x 4)))) (*.f64 1/20160 (pow.f64 x 8)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.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)))) (*.f64 1/20160 (pow.f64 x 8)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 1/20160 (pow.f64 x 4)) (pow.f64 x 4) (fma.f64 1/360 (pow.f64 x 6) (*.f64 1/12 (pow.f64 x 4))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 1/20160 (cbrt.f64 (pow.f64 x 16))) (cbrt.f64 (pow.f64 x 8)) (fma.f64 1/360 (pow.f64 x 6) (*.f64 1/12 (pow.f64 x 4))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 1/360 (pow.f64 x 4)) (*.f64 x x) (fma.f64 1/12 (pow.f64 x 4) (*.f64 1/20160 (pow.f64 x 8))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 1/360 (pow.f64 x 3)) (pow.f64 x 3) (fma.f64 1/12 (pow.f64 x 4) (*.f64 1/20160 (pow.f64 x 8))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 1/12 (cbrt.f64 (pow.f64 x 8))) (cbrt.f64 (pow.f64 x 4)) (fma.f64 1/20160 (pow.f64 x 8) (*.f64 1/360 (pow.f64 x 6))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 1/12 (*.f64 x x)) (*.f64 x x) (fma.f64 1/20160 (pow.f64 x 8) (*.f64 1/360 (pow.f64 x 6))))))))

simplify180.0ms (2%)

Algorithm
egg-herbie
Rules
773×cube-prod_binary64
754×sqr-pow_binary64
537×fabs-mul_binary64
533×unpow3_binary64
526×cube-mult_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01663
13363
27063
317863
463963
5124663
6226863
7239363
8256363
9276663
10304363
11341163
12382663
13432963
14493763
15574063
16618263
17668063
18724463
19787463
Stop Event
node limit
Counts
94 → 94
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 1/20160 (pow.f64 x 8))
(+.f64 (*.f64 1/360 (pow.f64 x 6)) (*.f64 1/20160 (pow.f64 x 8)))
(*.f64 1/20160 (pow.f64 x 8))
(+.f64 (*.f64 1/360 (pow.f64 x 6)) (*.f64 1/20160 (pow.f64 x 8)))
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 1/20160 (pow.f64 x 8))
(+.f64 (*.f64 1/360 (pow.f64 x 6)) (*.f64 1/20160 (pow.f64 x 8)))
(fma.f64 1/360 (pow.f64 x 6) (*.f64 1/20160 (pow.f64 x 8)))
(*.f64 (pow.f64 x 6) (fma.f64 x (*.f64 x 1/20160) 1/360))
(*.f64 1/20160 (pow.f64 x 8))
(+.f64 (*.f64 1/360 (pow.f64 x 6)) (*.f64 1/20160 (pow.f64 x 8)))
(fma.f64 1/360 (pow.f64 x 6) (*.f64 1/20160 (pow.f64 x 8)))
(*.f64 (pow.f64 x 6) (fma.f64 x (*.f64 x 1/20160) 1/360))

eval116.0ms (1.3%)

Compiler

Compiled 4556 to 3376 computations (25.9% saved)

prune25.0ms (0.3%)

Pruning

6 alts after pruning (1 fresh and 5 done)

PrunedKeptTotal
New2061207
Fresh000
Picked011
Done145
Total2076213
Error
0b
Counts
213 → 6
Alt Table
Click to see full alt table
StatusErrorProgram
0.6b
(*.f64 x x)
0.5b
(+.f64 (*.f64 x x) (*.f64 1/12 (pow.f64 x 4)))
26.9b
(*.f64 1/12 (pow.f64 x 4))
0.4b
(fma.f64 x x (+.f64 (*.f64 1/360 (pow.f64 x 6)) (+.f64 (*.f64 1/12 (pow.f64 x 4)) (*.f64 1/20160 (pow.f64 x 8)))))
0.4b
(fma.f64 x x (*.f64 (pow.f64 x 4) (+.f64 (*.f64 1/360 (*.f64 x x)) 1/12)))
26.5b
(+.f64 -2 (*.f64 2 (cosh.f64 x)))
Compiler

Compiled 63 to 46 computations (27% saved)

localize19.0ms (0.2%)

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.1b
(*.f64 1/360 (*.f64 x x))
Compiler

Compiled 48 to 28 computations (41.7% saved)

series4.0ms (0%)

Counts
3 → 36
Calls

9 calls:

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

rewrite75.0ms (0.8%)

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)))))

simplify200.0ms (2.2%)

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)

eval107.0ms (1.2%)

Compiler

Compiled 2779 to 1843 computations (33.7% saved)

prune18.0ms (0.2%)

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
0.6b
(*.f64 x x)
0.5b
(+.f64 (*.f64 x x) (*.f64 1/12 (pow.f64 x 4)))
26.9b
(*.f64 1/12 (pow.f64 x 4))
0.4b
(fma.f64 x x (+.f64 (*.f64 1/360 (pow.f64 x 6)) (+.f64 (*.f64 1/12 (pow.f64 x 4)) (*.f64 1/20160 (pow.f64 x 8)))))
0.4b
(fma.f64 x x (*.f64 (pow.f64 x 4) (+.f64 (*.f64 1/360 (*.f64 x x)) 1/12)))
26.5b
(+.f64 -2 (*.f64 2 (cosh.f64 x)))
Compiler

Compiled 63 to 46 computations (27% saved)

regimes15.0ms (0.2%)

Counts
12 → 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 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)))
(+.f64 (*.f64 1/360 (pow.f64 x 6)) (+.f64 (pow.f64 x 2) (*.f64 1/12 (pow.f64 x 4))))
(fma.f64 x x (+.f64 (*.f64 1/360 (pow.f64 x 6)) (+.f64 (*.f64 1/12 (pow.f64 x 4)) (*.f64 1/20160 (pow.f64 x 8)))))
(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)))))
Outputs
(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)))))
Calls

2 calls:

7.0ms
x
4.0ms
(+.f64 (-.f64 (exp.f64 x) 2) (exp.f64 (neg.f64 x)))
Results
ErrorSegmentsBranch
0.4b1x
0.4b1(+.f64 (-.f64 (exp.f64 x) 2) (exp.f64 (neg.f64 x)))
Compiler

Compiled 139 to 92 computations (33.8% saved)

regimes13.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 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)))
(+.f64 (*.f64 1/360 (pow.f64 x 6)) (+.f64 (pow.f64 x 2) (*.f64 1/12 (pow.f64 x 4))))
(fma.f64 x x (+.f64 (*.f64 1/360 (pow.f64 x 6)) (+.f64 (*.f64 1/12 (pow.f64 x 4)) (*.f64 1/20160 (pow.f64 x 8)))))
Outputs
(fma.f64 x x (+.f64 (*.f64 1/360 (pow.f64 x 6)) (+.f64 (*.f64 1/12 (pow.f64 x 4)) (*.f64 1/20160 (pow.f64 x 8)))))
Calls

2 calls:

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

Compiled 121 to 79 computations (34.7% saved)

regimes13.0ms (0.1%)

Counts
10 → 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 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)))
(+.f64 (*.f64 1/360 (pow.f64 x 6)) (+.f64 (pow.f64 x 2) (*.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.4b1x
0.4b1(+.f64 (-.f64 (exp.f64 x) 2) (exp.f64 (neg.f64 x)))
Compiler

Compiled 101 to 64 computations (36.6% saved)

regimes9.0ms (0.1%)

Counts
7 → 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 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
(+.f64 (*.f64 x x) (*.f64 1/12 (pow.f64 x 4)))
Calls

2 calls:

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

Compiled 59 to 37 computations (37.3% saved)

regimes38.0ms (0.4%)

Accuracy

Total -26.6b remaining (-4586.4%)

Threshold costs -26.6b (-4586.4%)

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:

37.0ms
x
Results
ErrorSegmentsBranch
0.6b1x
Compiler

Compiled 17 to 12 computations (29.4% saved)

simplify6.0ms (0.1%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
02691
13591
Stop Event
done
saturated
Calls
Call 1
Inputs
(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)))))
(fma.f64 x x (+.f64 (*.f64 1/360 (pow.f64 x 6)) (+.f64 (*.f64 1/12 (pow.f64 x 4)) (*.f64 1/20160 (pow.f64 x 8)))))
(fma.f64 x x (*.f64 (pow.f64 x 4) (+.f64 (*.f64 1/360 (*.f64 x x)) 1/12)))
(+.f64 (*.f64 x x) (*.f64 1/12 (pow.f64 x 4)))
(*.f64 x x)
Outputs
(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)))))
(fma.f64 x x (+.f64 (*.f64 1/360 (pow.f64 x 6)) (+.f64 (*.f64 1/12 (pow.f64 x 4)) (*.f64 1/20160 (pow.f64 x 8)))))
(fma.f64 x x (+.f64 (*.f64 1/360 (pow.f64 x 6)) (+.f64 (*.f64 1/20160 (pow.f64 x 8)) (*.f64 1/12 (pow.f64 x 4)))))
(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) (+.f64 1/12 (*.f64 1/360 (*.f64 x x)))))
(+.f64 (*.f64 x x) (*.f64 1/12 (pow.f64 x 4)))
(+.f64 (*.f64 1/12 (pow.f64 x 4)) (*.f64 x x))
(*.f64 x x)
Compiler

Compiled 69 to 49 computations (29% saved)

soundness319.0ms (3.5%)

Algorithm
egg-herbie
Rules
801×associate-/l*_binary64
624×fma-def_binary64
581×fma-neg_binary64
560×distribute-rgt-out_binary64
548×unswap-sqr_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
Stop Event
node limit
node limit
Compiler

Compiled 237 to 185 computations (21.9% saved)

end56.0ms (0.6%)

Compiler

Compiled 65 to 43 computations (33.8% saved)

Profiling

Loading profile data...