Details

Time bar (total: 3.0s)

analyze7.0ms (0.2%)

Algorithm
search
Search
ProbabilityValidUnknownPreconditionInfiniteDomainCan'tIter
0%0%100%0%0%0%0%0
0%0%100%0%0%0%0%1
0%0%100%0%0%0%0%2
50%50%50%0%0%0%0%3
66.7%50%25%0%0%0%25%4
80%50%12.5%0%0%0%37.5%5
88.9%50%6.2%0%0%0%43.7%6
94.1%50%3.1%0%0%0%46.9%7
97%50%1.6%0%0%0%48.4%8
97%50%1.6%0%0%0%48.4%9
97.7%50.4%1.2%0%0%0%48.4%10
97.7%50.4%1.2%0%0%0%48.4%11
97.9%50.4%1.1%0%0%0%48.5%12
Compiler

Compiled 15 to 8 computations (46.7% saved)

sample2.5s (81.3%)

Results
1.6s4008×body1024valid
506.0ms2027×body512valid
214.0ms1811×body256valid
168.0ms410×body2048valid
1.0ms14×body256unsamplable
Bogosity

preprocess55.0ms (1.8%)

Algorithm
egg-herbie
Rules
720×fma-def_binary64
478×fma-neg_binary64
463×times-frac_binary64
381×associate-/r/_binary64
306×associate-/l/_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0822
12022
23522
35922
413322
533622
689122
7260122
8664122
011
Stop Event
saturated
node limit
Calls
Call 1
Inputs
0
Outputs
0
Call 2
Inputs
(/.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))
Outputs
(/.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))
Compiler

Compiled 15 to 8 computations (46.7% saved)

simplify44.0ms (1.5%)

Algorithm
egg-herbie
Rules
720×fma-def_binary64
478×fma-neg_binary64
463×times-frac_binary64
381×associate-/r/_binary64
306×associate-/l/_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0822
12022
23522
35922
413322
533622
689122
7260122
8664122
Stop Event
node limit
Counts
1 → 1
Calls
Call 1
Inputs
(/.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))
Outputs
(/.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))

eval0.0ms (0%)

Compiler

Compiled 14 to 7 computations (50% saved)

prune1.0ms (0%)

Pruning

2 alts after pruning (2 fresh and 0 done)

PrunedKeptTotal
New011
Fresh011
Picked000
Done000
Total022
Error
57.9b
Counts
2 → 1
Alt Table
Click to see full alt table
StatusErrorProgram
57.9b
(/.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))
Compiler

Compiled 14 to 7 computations (50% saved)

localize10.0ms (0.3%)

Local error

Found 3 expressions with local error:

NewErrorProgram
0.0b
(+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))
1.0b
(/.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))
6.5b
(-.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))
Compiler

Compiled 34 to 7 computations (79.4% saved)

series5.0ms (0.2%)

Counts
3 → 32
Calls

9 calls:

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

rewrite71.0ms (2.3%)

Algorithm
egg-rewrite-iter-limit
egg-rewrite
batch-egg-rewrite
Rules
99×add-sqr-sqrt_binary64
99×add-sqr-sqrt_binary64
95×*-un-lft-identity_binary64
95×pow1_binary64
95×*-un-lft-identity_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0818
118618
2365218
066
11306
221886
066
083
11863
236523
083
066
11296
221506
066
Stop Event
iter limit
unsound
iter limit
unsound
iter limit
unsound
unsound
Counts
3 → 37
Calls
Call 1
Inputs
(-.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))
(/.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) (+.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 (exp.f64 x) (neg.f64 (exp.f64 (neg.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (*.f64 2 (sinh.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (cbrt.f64 (*.f64 2 (sinh.f64 x))) (cbrt.f64 (*.f64 2 (sinh.f64 x)))) (cbrt.f64 (*.f64 2 (sinh.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 2 (sinh.f64 x))) (sqrt.f64 (*.f64 2 (sinh.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (sinh.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 (sinh.f64 x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (*.f64 2 (sinh.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (*.f64 (*.f64 2 (sinh.f64 x)) (*.f64 2 (sinh.f64 x))) (*.f64 2 (sinh.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 2 (sinh.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 2 (sinh.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 2 (sinh.f64 x))))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (/.f64 (exp.f64 x) (*.f64 2 (cosh.f64 x))) (/.f64 (exp.f64 (neg.f64 x)) (*.f64 2 (cosh.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 2 (sinh.f64 x)) (/.f64 1 (*.f64 2 (cosh.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (tanh.f64 x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (cbrt.f64 (tanh.f64 x)) (cbrt.f64 (tanh.f64 x))) (cbrt.f64 (tanh.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (tanh.f64 x)) (sqrt.f64 (tanh.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (tanh.f64 x) 1)))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (tanh.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (*.f64 (tanh.f64 x) (tanh.f64 x)) (tanh.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (tanh.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (tanh.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (tanh.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x tanh.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))))))))

simplify47.0ms (1.5%)

Algorithm
egg-herbie
Rules
618×times-frac_binary64
292×fma-def_binary64
282×associate-*l/_binary64
265×associate-*r/_binary64
257×div-sub_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
0142623
1358597
21369586
35740526
Stop Event
node limit
Counts
69 → 91
Calls
Call 1
Inputs
(*.f64 2 x)
(+.f64 (*.f64 2 x) (*.f64 1/3 (pow.f64 x 3)))
(+.f64 (*.f64 2 x) (+.f64 (*.f64 1/3 (pow.f64 x 3)) (*.f64 1/60 (pow.f64 x 5))))
(+.f64 (*.f64 2 x) (+.f64 (*.f64 1/3 (pow.f64 x 3)) (+.f64 (*.f64 1/2520 (pow.f64 x 7)) (*.f64 1/60 (pow.f64 x 5)))))
(-.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)))
x
(+.f64 (*.f64 -1/3 (pow.f64 x 3)) x)
(+.f64 (*.f64 -1/3 (pow.f64 x 3)) (+.f64 (*.f64 2/15 (pow.f64 x 5)) x))
(+.f64 (*.f64 -17/315 (pow.f64 x 7)) (+.f64 (*.f64 -1/3 (pow.f64 x 3)) (+.f64 (*.f64 2/15 (pow.f64 x 5)) x)))
(/.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) (+.f64 (exp.f64 (neg.f64 x)) (exp.f64 x)))
(/.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) (+.f64 (exp.f64 (neg.f64 x)) (exp.f64 x)))
(/.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) (+.f64 (exp.f64 (neg.f64 x)) (exp.f64 x)))
(/.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) (+.f64 (exp.f64 (neg.f64 x)) (exp.f64 x)))
(/.f64 (-.f64 (exp.f64 x) (exp.f64 (*.f64 -1 x))) (+.f64 (exp.f64 x) (exp.f64 (*.f64 -1 x))))
(/.f64 (-.f64 (exp.f64 x) (exp.f64 (*.f64 -1 x))) (+.f64 (exp.f64 x) (exp.f64 (*.f64 -1 x))))
(/.f64 (-.f64 (exp.f64 x) (exp.f64 (*.f64 -1 x))) (+.f64 (exp.f64 x) (exp.f64 (*.f64 -1 x))))
(/.f64 (-.f64 (exp.f64 x) (exp.f64 (*.f64 -1 x))) (+.f64 (exp.f64 x) (exp.f64 (*.f64 -1 x))))
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)))
(+.f64 (exp.f64 x) (neg.f64 (exp.f64 (neg.f64 x))))
(*.f64 1 (*.f64 2 (sinh.f64 x)))
(*.f64 (*.f64 (cbrt.f64 (*.f64 2 (sinh.f64 x))) (cbrt.f64 (*.f64 2 (sinh.f64 x)))) (cbrt.f64 (*.f64 2 (sinh.f64 x))))
(*.f64 (sqrt.f64 (*.f64 2 (sinh.f64 x))) (sqrt.f64 (*.f64 2 (sinh.f64 x))))
(*.f64 2 (sinh.f64 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))))))
(/.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))))
(pow.f64 (*.f64 2 (sinh.f64 x)) 1)
(log.f64 (exp.f64 (*.f64 2 (sinh.f64 x))))
(cbrt.f64 (*.f64 (*.f64 (*.f64 2 (sinh.f64 x)) (*.f64 2 (sinh.f64 x))) (*.f64 2 (sinh.f64 x))))
(expm1.f64 (log1p.f64 (*.f64 2 (sinh.f64 x))))
(log1p.f64 (expm1.f64 (*.f64 2 (sinh.f64 x))))
(exp.f64 (log.f64 (*.f64 2 (sinh.f64 x))))
(-.f64 (/.f64 (exp.f64 x) (*.f64 2 (cosh.f64 x))) (/.f64 (exp.f64 (neg.f64 x)) (*.f64 2 (cosh.f64 x))))
(*.f64 (*.f64 2 (sinh.f64 x)) (/.f64 1 (*.f64 2 (cosh.f64 x))))
(*.f64 1 (tanh.f64 x))
(*.f64 (*.f64 (cbrt.f64 (tanh.f64 x)) (cbrt.f64 (tanh.f64 x))) (cbrt.f64 (tanh.f64 x)))
(*.f64 (sqrt.f64 (tanh.f64 x)) (sqrt.f64 (tanh.f64 x)))
(pow.f64 (tanh.f64 x) 1)
(log.f64 (exp.f64 (tanh.f64 x)))
(cbrt.f64 (*.f64 (*.f64 (tanh.f64 x) (tanh.f64 x)) (tanh.f64 x)))
(expm1.f64 (log1p.f64 (tanh.f64 x)))
(log1p.f64 (expm1.f64 (tanh.f64 x)))
(exp.f64 (log.f64 (tanh.f64 x)))
(tanh.f64 x)
(*.f64 1 (*.f64 2 (cosh.f64 x)))
(*.f64 (*.f64 (cbrt.f64 (*.f64 2 (cosh.f64 x))) (cbrt.f64 (*.f64 2 (cosh.f64 x)))) (cbrt.f64 (*.f64 2 (cosh.f64 x))))
(*.f64 (sqrt.f64 (*.f64 2 (cosh.f64 x))) (sqrt.f64 (*.f64 2 (cosh.f64 x))))
(*.f64 2 (cosh.f64 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))))))
(/.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))))
(pow.f64 (*.f64 2 (cosh.f64 x)) 1)
(log.f64 (exp.f64 (*.f64 2 (cosh.f64 x))))
(cbrt.f64 (*.f64 (*.f64 (*.f64 2 (cosh.f64 x)) (*.f64 2 (cosh.f64 x))) (*.f64 2 (cosh.f64 x))))
(expm1.f64 (log1p.f64 (*.f64 2 (cosh.f64 x))))
(log1p.f64 (expm1.f64 (*.f64 2 (cosh.f64 x))))
(exp.f64 (log.f64 (*.f64 2 (cosh.f64 x))))
Outputs
(*.f64 2 x)
(+.f64 x x)
(+.f64 (*.f64 2 x) (*.f64 1/3 (pow.f64 x 3)))
(fma.f64 2 x (*.f64 1/3 (pow.f64 x 3)))
(fma.f64 1/3 (pow.f64 x 3) (+.f64 x x))
(+.f64 (*.f64 2 x) (+.f64 (*.f64 1/3 (pow.f64 x 3)) (*.f64 1/60 (pow.f64 x 5))))
(fma.f64 2 x (fma.f64 1/3 (pow.f64 x 3) (*.f64 1/60 (pow.f64 x 5))))
(fma.f64 1/60 (pow.f64 x 5) (fma.f64 1/3 (pow.f64 x 3) (+.f64 x x)))
(+.f64 (*.f64 2 x) (+.f64 (*.f64 1/3 (pow.f64 x 3)) (+.f64 (*.f64 1/2520 (pow.f64 x 7)) (*.f64 1/60 (pow.f64 x 5)))))
(fma.f64 2 x (fma.f64 1/3 (pow.f64 x 3) (fma.f64 1/2520 (pow.f64 x 7) (*.f64 1/60 (pow.f64 x 5)))))
(fma.f64 2 x (fma.f64 1/3 (pow.f64 x 3) (fma.f64 1/60 (pow.f64 x 5) (*.f64 1/2520 (pow.f64 x 7)))))
(fma.f64 2 x (fma.f64 1/60 (pow.f64 x 5) (fma.f64 1/3 (pow.f64 x 3) (*.f64 1/2520 (pow.f64 x 7)))))
(-.f64 (exp.f64 x) (exp.f64 (*.f64 -1 x)))
(-.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))
(*.f64 2 (sinh.f64 x))
(-.f64 (exp.f64 x) (exp.f64 (*.f64 -1 x)))
(-.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))
(*.f64 2 (sinh.f64 x))
(-.f64 (exp.f64 x) (exp.f64 (*.f64 -1 x)))
(-.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))
(*.f64 2 (sinh.f64 x))
(-.f64 (exp.f64 x) (exp.f64 (*.f64 -1 x)))
(-.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))
(*.f64 2 (sinh.f64 x))
x
(+.f64 (*.f64 -1/3 (pow.f64 x 3)) x)
(fma.f64 -1/3 (pow.f64 x 3) x)
(fma.f64 (pow.f64 x 3) -1/3 x)
(+.f64 (*.f64 -1/3 (pow.f64 x 3)) (+.f64 (*.f64 2/15 (pow.f64 x 5)) x))
(fma.f64 -1/3 (pow.f64 x 3) (fma.f64 2/15 (pow.f64 x 5) x))
(fma.f64 (pow.f64 x 3) -1/3 (fma.f64 (pow.f64 x 5) 2/15 x))
(fma.f64 (pow.f64 x 5) 2/15 (fma.f64 (pow.f64 x 3) -1/3 x))
(+.f64 (*.f64 -17/315 (pow.f64 x 7)) (+.f64 (*.f64 -1/3 (pow.f64 x 3)) (+.f64 (*.f64 2/15 (pow.f64 x 5)) x)))
(fma.f64 -17/315 (pow.f64 x 7) (fma.f64 -1/3 (pow.f64 x 3) (fma.f64 2/15 (pow.f64 x 5) x)))
(fma.f64 (pow.f64 x 7) -17/315 (fma.f64 (pow.f64 x 3) -1/3 (fma.f64 (pow.f64 x 5) 2/15 x)))
(fma.f64 (pow.f64 x 7) -17/315 (fma.f64 (pow.f64 x 5) 2/15 (fma.f64 (pow.f64 x 3) -1/3 x)))
(/.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) (+.f64 (exp.f64 (neg.f64 x)) (exp.f64 x)))
(tanh.f64 x)
(/.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) (+.f64 (exp.f64 (neg.f64 x)) (exp.f64 x)))
(tanh.f64 x)
(/.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) (+.f64 (exp.f64 (neg.f64 x)) (exp.f64 x)))
(tanh.f64 x)
(/.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) (+.f64 (exp.f64 (neg.f64 x)) (exp.f64 x)))
(tanh.f64 x)
(/.f64 (-.f64 (exp.f64 x) (exp.f64 (*.f64 -1 x))) (+.f64 (exp.f64 x) (exp.f64 (*.f64 -1 x))))
(tanh.f64 x)
(/.f64 (-.f64 (exp.f64 x) (exp.f64 (*.f64 -1 x))) (+.f64 (exp.f64 x) (exp.f64 (*.f64 -1 x))))
(tanh.f64 x)
(/.f64 (-.f64 (exp.f64 x) (exp.f64 (*.f64 -1 x))) (+.f64 (exp.f64 x) (exp.f64 (*.f64 -1 x))))
(tanh.f64 x)
(/.f64 (-.f64 (exp.f64 x) (exp.f64 (*.f64 -1 x))) (+.f64 (exp.f64 x) (exp.f64 (*.f64 -1 x))))
(tanh.f64 x)
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 2 (fma.f64 1/12 (pow.f64 x 4) (*.f64 x x)))
(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 1/12 (pow.f64 x 4) (*.f64 x x))))
(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 x) (exp.f64 (neg.f64 x)))
(+.f64 (exp.f64 (neg.f64 x)) (exp.f64 x))
(+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))
(+.f64 (exp.f64 (neg.f64 x)) (exp.f64 x))
(+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))
(+.f64 (exp.f64 (neg.f64 x)) (exp.f64 x))
(+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))
(+.f64 (exp.f64 x) (exp.f64 (*.f64 -1 x)))
(+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))
(+.f64 (exp.f64 x) (exp.f64 (*.f64 -1 x)))
(+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))
(+.f64 (exp.f64 x) (exp.f64 (*.f64 -1 x)))
(+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))
(+.f64 (exp.f64 x) (exp.f64 (*.f64 -1 x)))
(+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))
(+.f64 (exp.f64 x) (neg.f64 (exp.f64 (neg.f64 x))))
(-.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))
(*.f64 2 (sinh.f64 x))
(*.f64 1 (*.f64 2 (sinh.f64 x)))
(-.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))
(*.f64 2 (sinh.f64 x))
(*.f64 (*.f64 (cbrt.f64 (*.f64 2 (sinh.f64 x))) (cbrt.f64 (*.f64 2 (sinh.f64 x)))) (cbrt.f64 (*.f64 2 (sinh.f64 x))))
(-.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))
(*.f64 2 (sinh.f64 x))
(*.f64 (sqrt.f64 (*.f64 2 (sinh.f64 x))) (sqrt.f64 (*.f64 2 (sinh.f64 x))))
(-.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))
(*.f64 2 (sinh.f64 x))
(*.f64 2 (sinh.f64 x))
(-.f64 (exp.f64 x) (exp.f64 (neg.f64 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))))))
(/.f64 (-.f64 (pow.f64 (exp.f64 x) 3) (pow.f64 (exp.f64 (neg.f64 x)) 3)) (+.f64 (exp.f64 (+.f64 x x)) (*.f64 (exp.f64 (neg.f64 x)) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))))
(/.f64 (-.f64 (pow.f64 (exp.f64 x) 3) (pow.f64 (exp.f64 (neg.f64 x)) 3)) (+.f64 1 (+.f64 (pow.f64 (exp.f64 x) 2) (pow.f64 (exp.f64 -2) x))))
(/.f64 (-.f64 (pow.f64 (exp.f64 x) 3) (exp.f64 (*.f64 x -3))) (+.f64 1 (+.f64 (pow.f64 (exp.f64 x) 2) (pow.f64 (exp.f64 x) -2))))
(/.f64 (-.f64 (pow.f64 (exp.f64 x) 3) (pow.f64 (exp.f64 x) -3)) (+.f64 1 (+.f64 (pow.f64 (exp.f64 x) 2) (pow.f64 (exp.f64 x) -2))))
(/.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))))
(/.f64 (-.f64 (exp.f64 (+.f64 x x)) (exp.f64 (+.f64 (neg.f64 x) (neg.f64 x)))) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))
(/.f64 (-.f64 (pow.f64 (exp.f64 x) 2) (pow.f64 (exp.f64 -2) x)) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))
(/.f64 (-.f64 (pow.f64 (exp.f64 x) 2) (pow.f64 (exp.f64 x) -2)) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))
(pow.f64 (*.f64 2 (sinh.f64 x)) 1)
(-.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))
(*.f64 2 (sinh.f64 x))
(log.f64 (exp.f64 (*.f64 2 (sinh.f64 x))))
(-.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))
(*.f64 2 (sinh.f64 x))
(cbrt.f64 (*.f64 (*.f64 (*.f64 2 (sinh.f64 x)) (*.f64 2 (sinh.f64 x))) (*.f64 2 (sinh.f64 x))))
(-.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))
(*.f64 2 (sinh.f64 x))
(expm1.f64 (log1p.f64 (*.f64 2 (sinh.f64 x))))
(-.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))
(*.f64 2 (sinh.f64 x))
(log1p.f64 (expm1.f64 (*.f64 2 (sinh.f64 x))))
(-.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))
(*.f64 2 (sinh.f64 x))
(exp.f64 (log.f64 (*.f64 2 (sinh.f64 x))))
(-.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))
(*.f64 2 (sinh.f64 x))
(-.f64 (/.f64 (exp.f64 x) (*.f64 2 (cosh.f64 x))) (/.f64 (exp.f64 (neg.f64 x)) (*.f64 2 (cosh.f64 x))))
(tanh.f64 x)
(*.f64 (*.f64 2 (sinh.f64 x)) (/.f64 1 (*.f64 2 (cosh.f64 x))))
(tanh.f64 x)
(*.f64 1 (tanh.f64 x))
(tanh.f64 x)
(*.f64 (*.f64 (cbrt.f64 (tanh.f64 x)) (cbrt.f64 (tanh.f64 x))) (cbrt.f64 (tanh.f64 x)))
(tanh.f64 x)
(*.f64 (sqrt.f64 (tanh.f64 x)) (sqrt.f64 (tanh.f64 x)))
(tanh.f64 x)
(pow.f64 (tanh.f64 x) 1)
(tanh.f64 x)
(log.f64 (exp.f64 (tanh.f64 x)))
(tanh.f64 x)
(cbrt.f64 (*.f64 (*.f64 (tanh.f64 x) (tanh.f64 x)) (tanh.f64 x)))
(tanh.f64 x)
(expm1.f64 (log1p.f64 (tanh.f64 x)))
(tanh.f64 x)
(log1p.f64 (expm1.f64 (tanh.f64 x)))
(tanh.f64 x)
(exp.f64 (log.f64 (tanh.f64 x)))
(tanh.f64 x)
(tanh.f64 x)
(*.f64 1 (*.f64 2 (cosh.f64 x)))
(*.f64 2 (cosh.f64 x))
(*.f64 (*.f64 (cbrt.f64 (*.f64 2 (cosh.f64 x))) (cbrt.f64 (*.f64 2 (cosh.f64 x)))) (cbrt.f64 (*.f64 2 (cosh.f64 x))))
(*.f64 2 (cosh.f64 x))
(*.f64 (sqrt.f64 (*.f64 2 (cosh.f64 x))) (sqrt.f64 (*.f64 2 (cosh.f64 x))))
(*.f64 2 (cosh.f64 x))
(*.f64 2 (cosh.f64 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))))))
(/.f64 (+.f64 (pow.f64 (exp.f64 x) 3) (pow.f64 (exp.f64 (neg.f64 x)) 3)) (+.f64 (exp.f64 (+.f64 x x)) (*.f64 (exp.f64 (neg.f64 x)) (-.f64 (exp.f64 (neg.f64 x)) (exp.f64 x)))))
(/.f64 (+.f64 (pow.f64 (exp.f64 x) 3) (pow.f64 (exp.f64 (neg.f64 x)) 3)) (+.f64 (pow.f64 (exp.f64 x) 2) (+.f64 -1 (pow.f64 (exp.f64 -2) x))))
(/.f64 (+.f64 (pow.f64 (exp.f64 x) 3) (exp.f64 (*.f64 x -3))) (+.f64 (pow.f64 (exp.f64 x) 2) (expm1.f64 (*.f64 x -2))))
(/.f64 (+.f64 (pow.f64 (exp.f64 x) 3) (pow.f64 (exp.f64 x) -3)) (+.f64 (pow.f64 (exp.f64 x) 2) (expm1.f64 (*.f64 x -2))))
(/.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))))
(*.f64 2 (cosh.f64 x))
(pow.f64 (*.f64 2 (cosh.f64 x)) 1)
(*.f64 2 (cosh.f64 x))
(log.f64 (exp.f64 (*.f64 2 (cosh.f64 x))))
(*.f64 2 (cosh.f64 x))
(cbrt.f64 (*.f64 (*.f64 (*.f64 2 (cosh.f64 x)) (*.f64 2 (cosh.f64 x))) (*.f64 2 (cosh.f64 x))))
(*.f64 2 (cosh.f64 x))
(expm1.f64 (log1p.f64 (*.f64 2 (cosh.f64 x))))
(*.f64 2 (cosh.f64 x))
(log1p.f64 (expm1.f64 (*.f64 2 (cosh.f64 x))))
(*.f64 2 (cosh.f64 x))
(exp.f64 (log.f64 (*.f64 2 (cosh.f64 x))))
(*.f64 2 (cosh.f64 x))

eval23.0ms (0.8%)

Compiler

Compiled 1495 to 660 computations (55.9% saved)

prune11.0ms (0.4%)

Pruning

3 alts after pruning (3 fresh and 0 done)

PrunedKeptTotal
New88391
Fresh000
Picked101
Done000
Total89392
Error
0b
Counts
92 → 3
Alt Table
Click to see full alt table
StatusErrorProgram
1.8b
(+.f64 (*.f64 -1/3 (pow.f64 x 3)) x)
0.0b
(tanh.f64 x)
2.0b
x
Compiler

Compiled 13 to 9 computations (30.8% saved)

localize2.0ms (0.1%)

Local error

Found 1 expressions with local error:

NewErrorProgram
0.0b
(tanh.f64 x)
Compiler

Compiled 4 to 2 computations (50% saved)

series3.0ms (0.1%)

Counts
1 → 12
Calls

3 calls:

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

rewrite36.0ms (1.2%)

Algorithm
batch-egg-rewrite
Rules
465×pow1_binary64
459×add-sqr-sqrt_binary64
450×*-un-lft-identity_binary64
437×add-log-exp_binary64
435×log1p-expm1-u_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
033
1753
210793
Stop Event
node limit
Counts
1 → 31
Calls
Call 1
Inputs
(tanh.f64 x)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (tanh.f64 x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (/.f64 1 (+.f64 1 (exp.f64 (*.f64 x -2)))) (/.f64 (exp.f64 (*.f64 x -2)) (+.f64 1 (exp.f64 (*.f64 x -2)))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (/.f64 (pow.f64 (exp.f64 2) x) (+.f64 1 (pow.f64 (exp.f64 2) x))) (/.f64 1 (+.f64 1 (pow.f64 (exp.f64 2) x))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (/.f64 (exp.f64 x) (*.f64 2 (cosh.f64 x))) (/.f64 (exp.f64 (neg.f64 x)) (*.f64 2 (cosh.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (tanh.f64 x) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (tanh.f64 x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (tanh.f64 x)) (pow.f64 (cbrt.f64 (tanh.f64 x)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (tanh.f64 x)) 2) (cbrt.f64 (tanh.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (tanh.f64 x)) (sqrt.f64 (tanh.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 1 (exp.f64 (*.f64 x -2))) (/.f64 1 (+.f64 1 (exp.f64 (*.f64 x -2)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (expm1.f64 (*.f64 x 2)) (/.f64 1 (+.f64 1 (pow.f64 (exp.f64 2) x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 2 (sinh.f64 x)) (/.f64 1 (*.f64 2 (cosh.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (+.f64 1 (exp.f64 (*.f64 x -2))) (-.f64 1 (exp.f64 (*.f64 x -2)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (+.f64 1 (pow.f64 (exp.f64 2) x)) (expm1.f64 (*.f64 x 2))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (*.f64 2 (cosh.f64 x)) (*.f64 2 (sinh.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 1 (exp.f64 (*.f64 x -2))) (+.f64 1 (exp.f64 (*.f64 x -2))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (expm1.f64 (*.f64 x 2)) (+.f64 1 (pow.f64 (exp.f64 2) x)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (sinh.f64 x)) (*.f64 2 (cosh.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (-.f64 1 (exp.f64 (*.f64 x -2)))) (neg.f64 (+.f64 1 (exp.f64 (*.f64 x -2)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (expm1.f64 (*.f64 x 2))) (neg.f64 (+.f64 1 (pow.f64 (exp.f64 2) x))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (*.f64 2 (sinh.f64 x))) (neg.f64 (*.f64 2 (cosh.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (tanh.f64 x) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (tanh.f64 x) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (tanh.f64 x)) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (tanh.f64 x)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (tanh.f64 x) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (tanh.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (tanh.f64 x) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (tanh.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (tanh.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (tanh.f64 x)))))))

simplify39.0ms (1.3%)

Algorithm
egg-herbie
Rules
536×log-prod_binary64
500×fma-neg_binary64
421×associate-*l*_binary64
410×associate-*r*_binary64
264×log-div_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0100163
1261163
2921163
35940163
Stop Event
node limit
Counts
43 → 41
Calls
Call 1
Inputs
x
(+.f64 (*.f64 -1/3 (pow.f64 x 3)) x)
(+.f64 (*.f64 -1/3 (pow.f64 x 3)) (+.f64 (*.f64 2/15 (pow.f64 x 5)) x))
(+.f64 (*.f64 -17/315 (pow.f64 x 7)) (+.f64 (*.f64 -1/3 (pow.f64 x 3)) (+.f64 (*.f64 2/15 (pow.f64 x 5)) x)))
(/.f64 (-.f64 (exp.f64 x) (/.f64 1 (exp.f64 x))) (+.f64 (/.f64 1 (exp.f64 x)) (exp.f64 x)))
(/.f64 (-.f64 (exp.f64 x) (/.f64 1 (exp.f64 x))) (+.f64 (/.f64 1 (exp.f64 x)) (exp.f64 x)))
(/.f64 (-.f64 (exp.f64 x) (/.f64 1 (exp.f64 x))) (+.f64 (/.f64 1 (exp.f64 x)) (exp.f64 x)))
(/.f64 (-.f64 (exp.f64 x) (/.f64 1 (exp.f64 x))) (+.f64 (/.f64 1 (exp.f64 x)) (exp.f64 x)))
(/.f64 (-.f64 (exp.f64 x) (/.f64 1 (exp.f64 x))) (+.f64 (/.f64 1 (exp.f64 x)) (exp.f64 x)))
(/.f64 (-.f64 (exp.f64 x) (/.f64 1 (exp.f64 x))) (+.f64 (/.f64 1 (exp.f64 x)) (exp.f64 x)))
(/.f64 (-.f64 (exp.f64 x) (/.f64 1 (exp.f64 x))) (+.f64 (/.f64 1 (exp.f64 x)) (exp.f64 x)))
(/.f64 (-.f64 (exp.f64 x) (/.f64 1 (exp.f64 x))) (+.f64 (/.f64 1 (exp.f64 x)) (exp.f64 x)))
(-.f64 (+.f64 1 (tanh.f64 x)) 1)
(-.f64 (/.f64 1 (+.f64 1 (exp.f64 (*.f64 x -2)))) (/.f64 (exp.f64 (*.f64 x -2)) (+.f64 1 (exp.f64 (*.f64 x -2)))))
(-.f64 (/.f64 (pow.f64 (exp.f64 2) x) (+.f64 1 (pow.f64 (exp.f64 2) x))) (/.f64 1 (+.f64 1 (pow.f64 (exp.f64 2) x))))
(-.f64 (/.f64 (exp.f64 x) (*.f64 2 (cosh.f64 x))) (/.f64 (exp.f64 (neg.f64 x)) (*.f64 2 (cosh.f64 x))))
(*.f64 (tanh.f64 x) 1)
(*.f64 1 (tanh.f64 x))
(*.f64 (cbrt.f64 (tanh.f64 x)) (pow.f64 (cbrt.f64 (tanh.f64 x)) 2))
(*.f64 (pow.f64 (cbrt.f64 (tanh.f64 x)) 2) (cbrt.f64 (tanh.f64 x)))
(*.f64 (sqrt.f64 (tanh.f64 x)) (sqrt.f64 (tanh.f64 x)))
(*.f64 (-.f64 1 (exp.f64 (*.f64 x -2))) (/.f64 1 (+.f64 1 (exp.f64 (*.f64 x -2)))))
(*.f64 (expm1.f64 (*.f64 x 2)) (/.f64 1 (+.f64 1 (pow.f64 (exp.f64 2) x))))
(*.f64 (*.f64 2 (sinh.f64 x)) (/.f64 1 (*.f64 2 (cosh.f64 x))))
(/.f64 1 (/.f64 (+.f64 1 (exp.f64 (*.f64 x -2))) (-.f64 1 (exp.f64 (*.f64 x -2)))))
(/.f64 1 (/.f64 (+.f64 1 (pow.f64 (exp.f64 2) x)) (expm1.f64 (*.f64 x 2))))
(/.f64 1 (/.f64 (*.f64 2 (cosh.f64 x)) (*.f64 2 (sinh.f64 x))))
(/.f64 (-.f64 1 (exp.f64 (*.f64 x -2))) (+.f64 1 (exp.f64 (*.f64 x -2))))
(/.f64 (expm1.f64 (*.f64 x 2)) (+.f64 1 (pow.f64 (exp.f64 2) x)))
(/.f64 (*.f64 2 (sinh.f64 x)) (*.f64 2 (cosh.f64 x)))
(/.f64 (neg.f64 (-.f64 1 (exp.f64 (*.f64 x -2)))) (neg.f64 (+.f64 1 (exp.f64 (*.f64 x -2)))))
(/.f64 (neg.f64 (expm1.f64 (*.f64 x 2))) (neg.f64 (+.f64 1 (pow.f64 (exp.f64 2) x))))
(/.f64 (neg.f64 (*.f64 2 (sinh.f64 x))) (neg.f64 (*.f64 2 (cosh.f64 x))))
(pow.f64 (tanh.f64 x) 1)
(pow.f64 (pow.f64 (tanh.f64 x) 3) 1/3)
(pow.f64 (cbrt.f64 (tanh.f64 x)) 3)
(pow.f64 (sqrt.f64 (tanh.f64 x)) 2)
(sqrt.f64 (pow.f64 (tanh.f64 x) 2))
(log.f64 (exp.f64 (tanh.f64 x)))
(cbrt.f64 (pow.f64 (tanh.f64 x) 3))
(expm1.f64 (log1p.f64 (tanh.f64 x)))
(log1p.f64 (expm1.f64 (tanh.f64 x)))
(exp.f64 (log.f64 (tanh.f64 x)))
Outputs
x
(+.f64 (*.f64 -1/3 (pow.f64 x 3)) x)
(fma.f64 -1/3 (pow.f64 x 3) x)
(+.f64 (*.f64 -1/3 (pow.f64 x 3)) (+.f64 (*.f64 2/15 (pow.f64 x 5)) x))
(fma.f64 -1/3 (pow.f64 x 3) (fma.f64 2/15 (pow.f64 x 5) x))
(+.f64 (*.f64 -17/315 (pow.f64 x 7)) (+.f64 (*.f64 -1/3 (pow.f64 x 3)) (+.f64 (*.f64 2/15 (pow.f64 x 5)) x)))
(fma.f64 -17/315 (pow.f64 x 7) (fma.f64 -1/3 (pow.f64 x 3) (fma.f64 2/15 (pow.f64 x 5) x)))
(fma.f64 -1/3 (pow.f64 x 3) (fma.f64 -17/315 (pow.f64 x 7) (fma.f64 2/15 (pow.f64 x 5) x)))
(/.f64 (-.f64 (exp.f64 x) (/.f64 1 (exp.f64 x))) (+.f64 (/.f64 1 (exp.f64 x)) (exp.f64 x)))
(tanh.f64 x)
(/.f64 (-.f64 (exp.f64 x) (/.f64 1 (exp.f64 x))) (+.f64 (/.f64 1 (exp.f64 x)) (exp.f64 x)))
(tanh.f64 x)
(/.f64 (-.f64 (exp.f64 x) (/.f64 1 (exp.f64 x))) (+.f64 (/.f64 1 (exp.f64 x)) (exp.f64 x)))
(tanh.f64 x)
(/.f64 (-.f64 (exp.f64 x) (/.f64 1 (exp.f64 x))) (+.f64 (/.f64 1 (exp.f64 x)) (exp.f64 x)))
(tanh.f64 x)
(/.f64 (-.f64 (exp.f64 x) (/.f64 1 (exp.f64 x))) (+.f64 (/.f64 1 (exp.f64 x)) (exp.f64 x)))
(tanh.f64 x)
(/.f64 (-.f64 (exp.f64 x) (/.f64 1 (exp.f64 x))) (+.f64 (/.f64 1 (exp.f64 x)) (exp.f64 x)))
(tanh.f64 x)
(/.f64 (-.f64 (exp.f64 x) (/.f64 1 (exp.f64 x))) (+.f64 (/.f64 1 (exp.f64 x)) (exp.f64 x)))
(tanh.f64 x)
(/.f64 (-.f64 (exp.f64 x) (/.f64 1 (exp.f64 x))) (+.f64 (/.f64 1 (exp.f64 x)) (exp.f64 x)))
(tanh.f64 x)
(-.f64 (+.f64 1 (tanh.f64 x)) 1)
(tanh.f64 x)
(-.f64 (/.f64 1 (+.f64 1 (exp.f64 (*.f64 x -2)))) (/.f64 (exp.f64 (*.f64 x -2)) (+.f64 1 (exp.f64 (*.f64 x -2)))))
(tanh.f64 x)
(-.f64 (/.f64 (pow.f64 (exp.f64 2) x) (+.f64 1 (pow.f64 (exp.f64 2) x))) (/.f64 1 (+.f64 1 (pow.f64 (exp.f64 2) x))))
(tanh.f64 x)
(-.f64 (/.f64 (exp.f64 x) (*.f64 2 (cosh.f64 x))) (/.f64 (exp.f64 (neg.f64 x)) (*.f64 2 (cosh.f64 x))))
(tanh.f64 x)
(*.f64 (tanh.f64 x) 1)
(tanh.f64 x)
(*.f64 1 (tanh.f64 x))
(tanh.f64 x)
(*.f64 (cbrt.f64 (tanh.f64 x)) (pow.f64 (cbrt.f64 (tanh.f64 x)) 2))
(tanh.f64 x)
(*.f64 (pow.f64 (cbrt.f64 (tanh.f64 x)) 2) (cbrt.f64 (tanh.f64 x)))
(tanh.f64 x)
(*.f64 (sqrt.f64 (tanh.f64 x)) (sqrt.f64 (tanh.f64 x)))
(tanh.f64 x)
(*.f64 (-.f64 1 (exp.f64 (*.f64 x -2))) (/.f64 1 (+.f64 1 (exp.f64 (*.f64 x -2)))))
(tanh.f64 x)
(*.f64 (expm1.f64 (*.f64 x 2)) (/.f64 1 (+.f64 1 (pow.f64 (exp.f64 2) x))))
(tanh.f64 x)
(*.f64 (*.f64 2 (sinh.f64 x)) (/.f64 1 (*.f64 2 (cosh.f64 x))))
(tanh.f64 x)
(/.f64 1 (/.f64 (+.f64 1 (exp.f64 (*.f64 x -2))) (-.f64 1 (exp.f64 (*.f64 x -2)))))
(tanh.f64 x)
(/.f64 1 (/.f64 (+.f64 1 (pow.f64 (exp.f64 2) x)) (expm1.f64 (*.f64 x 2))))
(tanh.f64 x)
(/.f64 1 (/.f64 (*.f64 2 (cosh.f64 x)) (*.f64 2 (sinh.f64 x))))
(tanh.f64 x)
(/.f64 (-.f64 1 (exp.f64 (*.f64 x -2))) (+.f64 1 (exp.f64 (*.f64 x -2))))
(tanh.f64 x)
(/.f64 (expm1.f64 (*.f64 x 2)) (+.f64 1 (pow.f64 (exp.f64 2) x)))
(tanh.f64 x)
(/.f64 (*.f64 2 (sinh.f64 x)) (*.f64 2 (cosh.f64 x)))
(tanh.f64 x)
(/.f64 (neg.f64 (-.f64 1 (exp.f64 (*.f64 x -2)))) (neg.f64 (+.f64 1 (exp.f64 (*.f64 x -2)))))
(tanh.f64 x)
(/.f64 (neg.f64 (expm1.f64 (*.f64 x 2))) (neg.f64 (+.f64 1 (pow.f64 (exp.f64 2) x))))
(tanh.f64 x)
(/.f64 (neg.f64 (*.f64 2 (sinh.f64 x))) (neg.f64 (*.f64 2 (cosh.f64 x))))
(tanh.f64 x)
(pow.f64 (tanh.f64 x) 1)
(tanh.f64 x)
(pow.f64 (pow.f64 (tanh.f64 x) 3) 1/3)
(tanh.f64 x)
(pow.f64 (cbrt.f64 (tanh.f64 x)) 3)
(tanh.f64 x)
(pow.f64 (sqrt.f64 (tanh.f64 x)) 2)
(tanh.f64 x)
(sqrt.f64 (pow.f64 (tanh.f64 x) 2))
(tanh.f64 x)
(log.f64 (exp.f64 (tanh.f64 x)))
(tanh.f64 x)
(cbrt.f64 (pow.f64 (tanh.f64 x) 3))
(tanh.f64 x)
(expm1.f64 (log1p.f64 (tanh.f64 x)))
(tanh.f64 x)
(log1p.f64 (expm1.f64 (tanh.f64 x)))
(tanh.f64 x)
(exp.f64 (log.f64 (tanh.f64 x)))
(tanh.f64 x)

localize7.0ms (0.2%)

Local error

Found 1 expressions with local error:

NewErrorProgram
0.2b
(*.f64 -1/3 (pow.f64 x 3))
Compiler

Compiled 19 to 14 computations (26.3% saved)

series2.0ms (0.1%)

Counts
1 → 0
Calls

3 calls:

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

rewrite36.0ms (1.2%)

Algorithm
batch-egg-rewrite
Rules
505×pow1_binary64
498×add-sqr-sqrt_binary64
476×add-log-exp_binary64
476×log1p-expm1-u_binary64
476×expm1-log1p-u_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

simplify39.0ms (1.3%)

Algorithm
egg-herbie
Rules
1136×log-prod_binary64
454×exp-sum_binary64
411×distribute-rgt-in_binary64
404×distribute-lft-in_binary64
324×associate-*l*_binary64
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
037143
196110
231077
3186177
4597377
Stop Event
node limit
Counts
11 → 14
Calls
Call 1
Inputs
(-.f64 (+.f64 1 (*.f64 -1/3 (pow.f64 x 3))) 1)
(pow.f64 (*.f64 -1/3 (pow.f64 x 3)) 1)
(pow.f64 (pow.f64 (*.f64 -1/3 (pow.f64 x 3)) 3) 1/3)
(pow.f64 (*.f64 x (cbrt.f64 -1/3)) 3)
(pow.f64 (*.f64 (sqrt.f64 -1/3) (pow.f64 x 3/2)) 2)
(sqrt.f64 (*.f64 (pow.f64 x 6) 1/9))
(log.f64 (pow.f64 (exp.f64 -1/3) (pow.f64 x 3)))
(cbrt.f64 (pow.f64 (*.f64 -1/3 (pow.f64 x 3)) 3))
(expm1.f64 (log1p.f64 (*.f64 -1/3 (pow.f64 x 3))))
(log1p.f64 (expm1.f64 (*.f64 -1/3 (pow.f64 x 3))))
(exp.f64 (log.f64 (*.f64 -1/3 (pow.f64 x 3))))
Outputs
(-.f64 (+.f64 1 (*.f64 -1/3 (pow.f64 x 3))) 1)
(+.f64 (+.f64 1 (*.f64 -1/3 (pow.f64 x 3))) -1)
(+.f64 (*.f64 -1/3 (pow.f64 x 3)) 0)
(*.f64 -1/3 (pow.f64 x 3))
(pow.f64 (*.f64 -1/3 (pow.f64 x 3)) 1)
(+.f64 (+.f64 1 (*.f64 -1/3 (pow.f64 x 3))) -1)
(+.f64 (*.f64 -1/3 (pow.f64 x 3)) 0)
(*.f64 -1/3 (pow.f64 x 3))
(pow.f64 (pow.f64 (*.f64 -1/3 (pow.f64 x 3)) 3) 1/3)
(+.f64 (+.f64 1 (*.f64 -1/3 (pow.f64 x 3))) -1)
(+.f64 (*.f64 -1/3 (pow.f64 x 3)) 0)
(*.f64 -1/3 (pow.f64 x 3))
(pow.f64 (*.f64 x (cbrt.f64 -1/3)) 3)
(+.f64 (+.f64 1 (*.f64 -1/3 (pow.f64 x 3))) -1)
(+.f64 (*.f64 -1/3 (pow.f64 x 3)) 0)
(*.f64 -1/3 (pow.f64 x 3))
(pow.f64 (*.f64 (sqrt.f64 -1/3) (pow.f64 x 3/2)) 2)
(+.f64 (+.f64 1 (*.f64 -1/3 (pow.f64 x 3))) -1)
(+.f64 (*.f64 -1/3 (pow.f64 x 3)) 0)
(*.f64 -1/3 (pow.f64 x 3))
(sqrt.f64 (*.f64 (pow.f64 x 6) 1/9))
(+.f64 (+.f64 1 (*.f64 -1/3 (pow.f64 x 3))) -1)
(+.f64 (*.f64 -1/3 (pow.f64 x 3)) 0)
(*.f64 -1/3 (pow.f64 x 3))
(log.f64 (pow.f64 (exp.f64 -1/3) (pow.f64 x 3)))
(+.f64 (+.f64 1 (*.f64 -1/3 (pow.f64 x 3))) -1)
(+.f64 (*.f64 -1/3 (pow.f64 x 3)) 0)
(*.f64 -1/3 (pow.f64 x 3))
(cbrt.f64 (pow.f64 (*.f64 -1/3 (pow.f64 x 3)) 3))
(+.f64 (+.f64 1 (*.f64 -1/3 (pow.f64 x 3))) -1)
(+.f64 (*.f64 -1/3 (pow.f64 x 3)) 0)
(*.f64 -1/3 (pow.f64 x 3))
(expm1.f64 (log1p.f64 (*.f64 -1/3 (pow.f64 x 3))))
(+.f64 (+.f64 1 (*.f64 -1/3 (pow.f64 x 3))) -1)
(+.f64 (*.f64 -1/3 (pow.f64 x 3)) 0)
(*.f64 -1/3 (pow.f64 x 3))
(log1p.f64 (expm1.f64 (*.f64 -1/3 (pow.f64 x 3))))
(+.f64 (+.f64 1 (*.f64 -1/3 (pow.f64 x 3))) -1)
(+.f64 (*.f64 -1/3 (pow.f64 x 3)) 0)
(*.f64 -1/3 (pow.f64 x 3))
(exp.f64 (log.f64 (*.f64 -1/3 (pow.f64 x 3))))
(+.f64 (+.f64 1 (*.f64 -1/3 (pow.f64 x 3))) -1)
(+.f64 (*.f64 -1/3 (pow.f64 x 3)) 0)
(*.f64 -1/3 (pow.f64 x 3))

eval14.0ms (0.5%)

Compiler

Compiled 528 to 382 computations (27.7% saved)

prune6.0ms (0.2%)

Pruning

3 alts after pruning (1 fresh and 2 done)

PrunedKeptTotal
New55055
Fresh011
Picked011
Done011
Total55358
Error
0b
Counts
58 → 3
Alt Table
Click to see full alt table
StatusErrorProgram
1.8b
(+.f64 (*.f64 -1/3 (pow.f64 x 3)) x)
0.0b
(tanh.f64 x)
2.0b
x
Compiler

Compiled 13 to 9 computations (30.8% saved)

eval0.0ms (0%)

Compiler

Compiled 1 to 1 computations (0% saved)

prune1.0ms (0%)

Pruning

3 alts after pruning (1 fresh and 2 done)

PrunedKeptTotal
New000
Fresh011
Picked000
Done022
Total033
Error
0b
Counts
3 → 3
Alt Table
Click to see full alt table
StatusErrorProgram
1.8b
(+.f64 (*.f64 -1/3 (pow.f64 x 3)) x)
0.0b
(tanh.f64 x)
2.0b
x
Compiler

Compiled 13 to 9 computations (30.8% saved)

eval1.0ms (0%)

Compiler

Compiled 1 to 1 computations (0% saved)

prune1.0ms (0%)

Pruning

3 alts after pruning (1 fresh and 2 done)

PrunedKeptTotal
New000
Fresh011
Picked000
Done022
Total033
Error
0b
Counts
3 → 3
Alt Table
Click to see full alt table
StatusErrorProgram
1.8b
(+.f64 (*.f64 -1/3 (pow.f64 x 3)) x)
0.0b
(tanh.f64 x)
2.0b
x
Compiler

Compiled 13 to 9 computations (30.8% saved)

regimes7.0ms (0.2%)

Accuracy

Total -58.9b remaining (-502642.8%)

Threshold costs -58.9b (-502642.8%)

Counts
4 → 1
Calls
Call 1
Inputs
x
(tanh.f64 x)
(+.f64 (*.f64 -1/3 (pow.f64 x 3)) x)
(/.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))
Outputs
(tanh.f64 x)
Calls

2 calls:

4.0ms
x
2.0ms
(/.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))
Results
ErrorSegmentsBranch
0.0b1x
0.0b1(/.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))
Compiler

Compiled 40 to 21 computations (47.5% saved)

simplify2.0ms (0.1%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
034
Stop Event
fuel
saturated
Calls
Call 1
Inputs
(tanh.f64 x)
x
Outputs
(tanh.f64 x)
x
Compiler

Compiled 5 to 3 computations (40% saved)

soundness83.0ms (2.8%)

Algorithm
egg-herbie
Rules
618×times-frac_binary64
292×fma-def_binary64
282×associate-*l/_binary64
265×associate-*r/_binary64
257×div-sub_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
0142623
1358597
21369586
35740526
Stop Event
node limit
Compiler

Compiled 31 to 16 computations (48.4% saved)

end13.0ms (0.4%)

Compiler

Compiled 4 to 2 computations (50% saved)

Profiling

Loading profile data...