Hyperbolic tangent

Time bar (total: 4.8s)

analyze0.0ms (0%)

Algorithm
search
Search
ProbabilityValidUnknownPreconditionInfiniteDomainCan'tIter
0%0%100%0%0%0%0%0
0%0%100%0%0%0%0%1
100%100%0%0%0%0%0%2
Compiler

Compiled 15 to 8 computations (46.7% saved)

sample2.7s (56.2%)

Results
571.0ms7864×256unsamplable
1.4s3990×1024valid
406.0ms2022×512valid
222.0ms2010×256valid
88.0ms234×2048valid
Bogosity

preprocess285.0ms (5.9%)

Algorithm
egg-herbie
Rules
1566×div-sub
1010×fma-neg
638×cancel-sign-sub-inv
606×sub-neg
578×neg-mul-1
FPErrors
Click to see full error table
Ground TruthOverpredictionsExampleUnderpredictionsExampleSubexpression
2460-0-(-.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))
40-0-(/.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))
00-0-x
01(302.00811970172754)0-(exp.f64 (neg.f64 x))
00-0-(neg.f64 x)
00-0-(exp.f64 x)
00-0-(+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
018220
149220
297220
3196220
4544220
52344220
66420220
Stop Event
node limit
Calls
Call 1
Inputs
(/.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) (+.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 (-.f64 (exp.f64 (neg.f64 x)) (exp.f64 (neg.f64 (neg.f64 x)))) (+.f64 (exp.f64 (neg.f64 x)) (exp.f64 (neg.f64 (neg.f64 x)))))
(neg.f64 (/.f64 (-.f64 (exp.f64 (neg.f64 x)) (exp.f64 (neg.f64 (neg.f64 x)))) (+.f64 (exp.f64 (neg.f64 x)) (exp.f64 (neg.f64 (neg.f64 x))))))
Outputs
(/.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) (+.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 (-.f64 (exp.f64 (neg.f64 x)) (exp.f64 (neg.f64 (neg.f64 x)))) (+.f64 (exp.f64 (neg.f64 x)) (exp.f64 (neg.f64 (neg.f64 x)))))
(/.f64 (-.f64 (exp.f64 (neg.f64 x)) (exp.f64 x)) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))
(neg.f64 (/.f64 (-.f64 (exp.f64 (neg.f64 x)) (exp.f64 (neg.f64 (neg.f64 x)))) (+.f64 (exp.f64 (neg.f64 x)) (exp.f64 (neg.f64 (neg.f64 x))))))
(/.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))
Symmetry

(negabs x)

Compiler

Compiled 84 to 23 computations (72.6% saved)

eval0.0ms (0%)

Compiler

Compiled 1 to 1 computations (0% saved)

prune1.0ms (0%)

Alt Table
Click to see full alt table
StatusAccuracyProgram
11.9%
(/.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)

localize80.0ms (1.7%)

Localize:

Found 3 expressions with local error:

NewAccuracyProgram
100.0%
(+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))
98.4%
(/.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))
13.4%
(-.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))
Compiler

Compiled 35 to 8 computations (77.1% saved)

series4.0ms (0.1%)

Counts
3 → 24
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))))
0.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
@-inf
(-.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))

rewrite139.0ms (2.9%)

Algorithm
batch-egg-rewrite
Rules
110×associate-*r*
108×times-frac
80×add-exp-log
80×add-log-exp
80×add-cube-cbrt
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01242
117442
2342442
Stop Event
unsound
Counts
3 → 30
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
-2
-1
0
1/2
1
3/2
2
3
4
5
-2
-1
0
1/2
1
3/2
2
3
4
5
-2
-1
0
1/2
1
3/2
2
3
4
5

simplify105.0ms (2.2%)

Algorithm
egg-herbie
Rules
1396×fma-def
1008×unswap-sqr
912×associate-*r*
740×associate-*l*
520×distribute-rgt-out
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
061822
1142817
2334811
3964807
43187807
55283807
67064807
Stop Event
node limit
Counts
54 → 53
Calls
Call 1
Inputs
(*.f64 2 x)
(+.f64 (*.f64 1/3 (pow.f64 x 3)) (*.f64 2 x))
(+.f64 (*.f64 1/60 (pow.f64 x 5)) (+.f64 (*.f64 1/3 (pow.f64 x 3)) (*.f64 2 x)))
(+.f64 (*.f64 1/2520 (pow.f64 x 7)) (+.f64 (*.f64 1/60 (pow.f64 x 5)) (+.f64 (*.f64 1/3 (pow.f64 x 3)) (*.f64 2 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)))
x
(+.f64 x (*.f64 -1/3 (pow.f64 x 3)))
(+.f64 x (+.f64 (*.f64 -1/3 (pow.f64 x 3)) (*.f64 2/15 (pow.f64 x 5))))
(+.f64 x (+.f64 (*.f64 -1/3 (pow.f64 x 3)) (+.f64 (*.f64 -17/315 (pow.f64 x 7)) (*.f64 2/15 (pow.f64 x 5)))))
(/.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 (*.f64 1/12 (pow.f64 x 4)) (pow.f64 x 2)))
(+.f64 2 (+.f64 (*.f64 1/360 (pow.f64 x 6)) (+.f64 (*.f64 1/12 (pow.f64 x 4)) (pow.f64 x 2))))
(+.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)))
-2
-1
0
1/2
1
3/2
2
3
4
5
-2
-1
0
1/2
1
3/2
2
3
4
5
-2
-1
0
1/2
1
3/2
2
3
4
5
Outputs
(*.f64 2 x)
(+.f64 (*.f64 1/3 (pow.f64 x 3)) (*.f64 2 x))
(fma.f64 1/3 (pow.f64 x 3) (*.f64 2 x))
(fma.f64 2 x (*.f64 1/3 (pow.f64 x 3)))
(+.f64 (*.f64 1/60 (pow.f64 x 5)) (+.f64 (*.f64 1/3 (pow.f64 x 3)) (*.f64 2 x)))
(fma.f64 1/60 (pow.f64 x 5) (fma.f64 1/3 (pow.f64 x 3) (*.f64 2 x)))
(fma.f64 1/60 (pow.f64 x 5) (fma.f64 2 x (*.f64 1/3 (pow.f64 x 3))))
(fma.f64 2 x (fma.f64 1/3 (pow.f64 x 3) (*.f64 1/60 (pow.f64 x 5))))
(+.f64 (*.f64 1/2520 (pow.f64 x 7)) (+.f64 (*.f64 1/60 (pow.f64 x 5)) (+.f64 (*.f64 1/3 (pow.f64 x 3)) (*.f64 2 x))))
(fma.f64 1/2520 (pow.f64 x 7) (fma.f64 1/60 (pow.f64 x 5) (fma.f64 1/3 (pow.f64 x 3) (*.f64 2 x))))
(fma.f64 1/2520 (pow.f64 x 7) (fma.f64 1/60 (pow.f64 x 5) (fma.f64 2 x (*.f64 1/3 (pow.f64 x 3)))))
(fma.f64 1/60 (pow.f64 x 5) (fma.f64 1/2520 (pow.f64 x 7) (fma.f64 2 x (*.f64 1/3 (pow.f64 x 3)))))
(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 1/3 (pow.f64 x 3) (fma.f64 1/60 (pow.f64 x 5) (fma.f64 1/2520 (pow.f64 x 7) (*.f64 2 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)))
x
(+.f64 x (*.f64 -1/3 (pow.f64 x 3)))
(+.f64 x (*.f64 (pow.f64 x 3) -1/3))
(fma.f64 (pow.f64 x 3) -1/3 x)
(+.f64 x (+.f64 (*.f64 -1/3 (pow.f64 x 3)) (*.f64 2/15 (pow.f64 x 5))))
(+.f64 x (fma.f64 -1/3 (pow.f64 x 3) (*.f64 (pow.f64 x 5) 2/15)))
(+.f64 (fma.f64 (pow.f64 x 3) -1/3 x) (*.f64 (pow.f64 x 5) 2/15))
(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 x (+.f64 (*.f64 -1/3 (pow.f64 x 3)) (+.f64 (*.f64 -17/315 (pow.f64 x 7)) (*.f64 2/15 (pow.f64 x 5)))))
(+.f64 x (fma.f64 -1/3 (pow.f64 x 3) (fma.f64 -17/315 (pow.f64 x 7) (*.f64 (pow.f64 x 5) 2/15))))
(+.f64 (fma.f64 (pow.f64 x 3) -1/3 x) (fma.f64 (pow.f64 x 5) 2/15 (*.f64 (pow.f64 x 7) -17/315)))
(+.f64 x (fma.f64 (pow.f64 x 3) -1/3 (fma.f64 (pow.f64 x 5) 2/15 (*.f64 (pow.f64 x 7) -17/315))))
(fma.f64 (pow.f64 x 3) -1/3 (fma.f64 (pow.f64 x 5) 2/15 (fma.f64 (pow.f64 x 7) -17/315 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 (neg.f64 x))) (+.f64 (exp.f64 x) (exp.f64 (neg.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 (neg.f64 x))) (+.f64 (exp.f64 x) (exp.f64 (neg.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 (neg.f64 x))) (+.f64 (exp.f64 x) (exp.f64 (neg.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 (neg.f64 x))) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))
2
(+.f64 2 (pow.f64 x 2))
(fma.f64 x x 2)
(+.f64 2 (+.f64 (*.f64 1/12 (pow.f64 x 4)) (pow.f64 x 2)))
(+.f64 2 (fma.f64 1/12 (pow.f64 x 4) (pow.f64 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 (*.f64 1/12 (pow.f64 x 4)) (pow.f64 x 2))))
(+.f64 2 (fma.f64 1/360 (pow.f64 x 6) (fma.f64 1/12 (pow.f64 x 4) (pow.f64 x 2))))
(fma.f64 1/360 (pow.f64 x 6) (fma.f64 x x (fma.f64 1/12 (pow.f64 x 4) 2)))
(fma.f64 x x (fma.f64 1/12 (pow.f64 x 4) (fma.f64 1/360 (pow.f64 x 6) 2)))
(+.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)))
-2
-1
0
1/2
1
3/2
2
3
4
5
-2
-1
0
1/2
1
3/2
2
3
4
5
-2
-1
0
1/2
1
3/2
2
3
4
5

eval15.0ms (0.3%)

Compiler

Compiled 782 to 418 computations (46.5% saved)

prune14.0ms (0.3%)

Pruning

6 alts after pruning (5 fresh and 1 done)

PrunedKeptTotal
New48553
Fresh000
Picked011
Done000
Total48654
Accuracy
98.6%
Counts
54 → 6
Alt Table
Click to see full alt table
StatusAccuracyProgram
11.9%
(/.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))
97.3%
(/.f64 (+.f64 (*.f64 1/2520 (pow.f64 x 7)) (+.f64 (*.f64 1/60 (pow.f64 x 5)) (+.f64 (*.f64 1/3 (pow.f64 x 3)) (*.f64 2 x)))) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))
97.1%
(+.f64 x (+.f64 (*.f64 -1/3 (pow.f64 x 3)) (+.f64 (*.f64 -17/315 (pow.f64 x 7)) (*.f64 2/15 (pow.f64 x 5)))))
97.1%
(+.f64 x (+.f64 (*.f64 -1/3 (pow.f64 x 3)) (*.f64 2/15 (pow.f64 x 5))))
96.6%
(+.f64 x (*.f64 (pow.f64 x 3) -1/3))
95.4%
x
Compiler

Compiled 160 to 121 computations (24.4% saved)

localize377.0ms (7.8%)

Localize:

Found 12 expressions with local error:

NewAccuracyProgram
100.0%
(+.f64 (*.f64 -17/315 (pow.f64 x 7)) (*.f64 2/15 (pow.f64 x 5)))
99.9%
(*.f64 2/15 (pow.f64 x 5))
99.9%
(*.f64 -17/315 (pow.f64 x 7))
99.7%
(*.f64 -1/3 (pow.f64 x 3))
100.0%
(+.f64 (*.f64 -1/3 (pow.f64 x 3)) (*.f64 2/15 (pow.f64 x 5)))
99.9%
(*.f64 2/15 (pow.f64 x 5))
99.7%
(*.f64 -1/3 (pow.f64 x 3))
99.7%
(*.f64 (pow.f64 x 3) -1/3)
99.9%
(*.f64 1/60 (pow.f64 x 5))
99.9%
(*.f64 1/2520 (pow.f64 x 7))
99.9%
(/.f64 (+.f64 (*.f64 1/2520 (pow.f64 x 7)) (+.f64 (*.f64 1/60 (pow.f64 x 5)) (+.f64 (*.f64 1/3 (pow.f64 x 3)) (*.f64 2 x)))) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))
99.7%
(*.f64 1/3 (pow.f64 x 3))
Compiler

Compiled 265 to 197 computations (25.7% saved)

series96.0ms (2%)

Counts
12 → 30
Calls

36 calls:

TimeVariablePointExpression
84.0ms
x
@inf
(*.f64 -17/315 (pow.f64 x 7))
2.0ms
x
@inf
(/.f64 (+.f64 (*.f64 1/2520 (pow.f64 x 7)) (+.f64 (*.f64 1/60 (pow.f64 x 5)) (+.f64 (*.f64 1/3 (pow.f64 x 3)) (*.f64 2 x)))) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))
1.0ms
x
@0
(*.f64 -17/315 (pow.f64 x 7))
1.0ms
x
@-inf
(/.f64 (+.f64 (*.f64 1/2520 (pow.f64 x 7)) (+.f64 (*.f64 1/60 (pow.f64 x 5)) (+.f64 (*.f64 1/3 (pow.f64 x 3)) (*.f64 2 x)))) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))
1.0ms
x
@0
(*.f64 1/3 (pow.f64 x 3))

rewrite58.0ms (1.2%)

Algorithm
batch-egg-rewrite
Rules
408×associate-*r*
264×associate-*l*
252×prod-diff
243×log1p-expm1-u
243×expm1-log1p-u
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
037192
1546192
Stop Event
node limit
Counts
12 → 480
Calls
Call 1
Inputs
(*.f64 1/3 (pow.f64 x 3))
(/.f64 (+.f64 (*.f64 1/2520 (pow.f64 x 7)) (+.f64 (*.f64 1/60 (pow.f64 x 5)) (+.f64 (*.f64 1/3 (pow.f64 x 3)) (*.f64 2 x)))) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))
(*.f64 1/2520 (pow.f64 x 7))
(*.f64 1/60 (pow.f64 x 5))
(*.f64 (pow.f64 x 3) -1/3)
(*.f64 -1/3 (pow.f64 x 3))
(*.f64 2/15 (pow.f64 x 5))
(+.f64 (*.f64 -1/3 (pow.f64 x 3)) (*.f64 2/15 (pow.f64 x 5)))
(*.f64 -1/3 (pow.f64 x 3))
(*.f64 -17/315 (pow.f64 x 7))
(*.f64 2/15 (pow.f64 x 5))
(+.f64 (*.f64 -17/315 (pow.f64 x 7)) (*.f64 2/15 (pow.f64 x 5)))
Outputs
-4
-2
-1
-1/2
-1/3
-2/15
-17/315
-1/27
-4913/31255875
0
1/16003008000
1/6350400
1/216000
1/3600
1/2520
8/3375
289/99225
1/60
4/225
1/27
1/9
2/15
1/3
1/2
3/4
1
5/4
3/2
7/4
2
5/2
3
7/2
4
5
6
7
8
10
14
-4
-2
-1
-1/2
-1/3
-2/15
-17/315
-1/27
-4913/31255875
0
1/16003008000
1/6350400
1/216000
1/3600
1/2520
8/3375
289/99225
1/60
4/225
1/27
1/9
2/15
1/3
1/2
3/4
1
5/4
3/2
7/4
2
5/2
3
7/2
4
5
6
7
8
10
14
-4
-2
-1
-1/2
-1/3
-2/15
-17/315
-1/27
-4913/31255875
0
1/16003008000
1/6350400
1/216000
1/3600
1/2520
8/3375
289/99225
1/60
4/225
1/27
1/9
2/15
1/3
1/2
3/4
1
5/4
3/2
7/4
2
5/2
3
7/2
4
5
6
7
8
10
14
-4
-2
-1
-1/2
-1/3
-2/15
-17/315
-1/27
-4913/31255875
0
1/16003008000
1/6350400
1/216000
1/3600
1/2520
8/3375
289/99225
1/60
4/225
1/27
1/9
2/15
1/3
1/2
3/4
1
5/4
3/2
7/4
2
5/2
3
7/2
4
5
6
7
8
10
14
-4
-2
-1
-1/2
-1/3
-2/15
-17/315
-1/27
-4913/31255875
0
1/16003008000
1/6350400
1/216000
1/3600
1/2520
8/3375
289/99225
1/60
4/225
1/27
1/9
2/15
1/3
1/2
3/4
1
5/4
3/2
7/4
2
5/2
3
7/2
4
5
6
7
8
10
14
-4
-2
-1
-1/2
-1/3
-2/15
-17/315
-1/27
-4913/31255875
0
1/16003008000
1/6350400
1/216000
1/3600
1/2520
8/3375
289/99225
1/60
4/225
1/27
1/9
2/15
1/3
1/2
3/4
1
5/4
3/2
7/4
2
5/2
3
7/2
4
5
6
7
8
10
14
-4
-2
-1
-1/2
-1/3
-2/15
-17/315
-1/27
-4913/31255875
0
1/16003008000
1/6350400
1/216000
1/3600
1/2520
8/3375
289/99225
1/60
4/225
1/27
1/9
2/15
1/3
1/2
3/4
1
5/4
3/2
7/4
2
5/2
3
7/2
4
5
6
7
8
10
14
-4
-2
-1
-1/2
-1/3
-2/15
-17/315
-1/27
-4913/31255875
0
1/16003008000
1/6350400
1/216000
1/3600
1/2520
8/3375
289/99225
1/60
4/225
1/27
1/9
2/15
1/3
1/2
3/4
1
5/4
3/2
7/4
2
5/2
3
7/2
4
5
6
7
8
10
14
-4
-2
-1
-1/2
-1/3
-2/15
-17/315
-1/27
-4913/31255875
0
1/16003008000
1/6350400
1/216000
1/3600
1/2520
8/3375
289/99225
1/60
4/225
1/27
1/9
2/15
1/3
1/2
3/4
1
5/4
3/2
7/4
2
5/2
3
7/2
4
5
6
7
8
10
14
-4
-2
-1
-1/2
-1/3
-2/15
-17/315
-1/27
-4913/31255875
0
1/16003008000
1/6350400
1/216000
1/3600
1/2520
8/3375
289/99225
1/60
4/225
1/27
1/9
2/15
1/3
1/2
3/4
1
5/4
3/2
7/4
2
5/2
3
7/2
4
5
6
7
8
10
14
-4
-2
-1
-1/2
-1/3
-2/15
-17/315
-1/27
-4913/31255875
0
1/16003008000
1/6350400
1/216000
1/3600
1/2520
8/3375
289/99225
1/60
4/225
1/27
1/9
2/15
1/3
1/2
3/4
1
5/4
3/2
7/4
2
5/2
3
7/2
4
5
6
7
8
10
14
-4
-2
-1
-1/2
-1/3
-2/15
-17/315
-1/27
-4913/31255875
0
1/16003008000
1/6350400
1/216000
1/3600
1/2520
8/3375
289/99225
1/60
4/225
1/27
1/9
2/15
1/3
1/2
3/4
1
5/4
3/2
7/4
2
5/2
3
7/2
4
5
6
7
8
10
14

simplify132.0ms (2.7%)

Algorithm
egg-herbie
Rules
1894×times-frac
1530×fma-neg
1294×fma-def
1190×associate-*r*
866×associate-/r/
Iterations

Useful iterations: 6 (0.0ms)

IterNodesCost
0931818
12041814
23451810
36941806
413511760
536461760
651991754
763851754
Stop Event
node limit
Counts
510 → 84
Calls
Call 1
Inputs
x
(+.f64 x (*.f64 -1/3 (pow.f64 x 3)))
(+.f64 x (+.f64 (*.f64 -1/3 (pow.f64 x 3)) (*.f64 2/15 (pow.f64 x 5))))
(+.f64 x (+.f64 (*.f64 -1/3 (pow.f64 x 3)) (+.f64 (*.f64 -17/315 (pow.f64 x 7)) (*.f64 2/15 (pow.f64 x 5)))))
(*.f64 1/2520 (/.f64 (pow.f64 x 7) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))))
(+.f64 (*.f64 1/2520 (/.f64 (pow.f64 x 7) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))) (*.f64 1/60 (/.f64 (pow.f64 x 5) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))))
(+.f64 (*.f64 1/2520 (/.f64 (pow.f64 x 7) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))) (+.f64 (*.f64 1/60 (/.f64 (pow.f64 x 5) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))) (*.f64 1/3 (/.f64 (pow.f64 x 3) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))))))
(+.f64 (*.f64 1/2520 (/.f64 (pow.f64 x 7) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))) (+.f64 (*.f64 1/60 (/.f64 (pow.f64 x 5) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))) (+.f64 (*.f64 1/3 (/.f64 (pow.f64 x 3) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))) (*.f64 2 (/.f64 x (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))))))
(*.f64 1/2520 (/.f64 (pow.f64 x 7) (+.f64 (exp.f64 x) (exp.f64 (*.f64 -1 x)))))
(+.f64 (*.f64 1/2520 (/.f64 (pow.f64 x 7) (+.f64 (exp.f64 x) (exp.f64 (*.f64 -1 x))))) (*.f64 1/60 (/.f64 (pow.f64 x 5) (+.f64 (exp.f64 x) (exp.f64 (*.f64 -1 x))))))
(+.f64 (*.f64 1/2520 (/.f64 (pow.f64 x 7) (+.f64 (exp.f64 x) (exp.f64 (*.f64 -1 x))))) (+.f64 (*.f64 1/60 (/.f64 (pow.f64 x 5) (+.f64 (exp.f64 x) (exp.f64 (*.f64 -1 x))))) (*.f64 1/3 (/.f64 (pow.f64 x 3) (+.f64 (exp.f64 x) (exp.f64 (*.f64 -1 x)))))))
(+.f64 (*.f64 1/2520 (/.f64 (pow.f64 x 7) (+.f64 (exp.f64 x) (exp.f64 (*.f64 -1 x))))) (+.f64 (*.f64 1/60 (/.f64 (pow.f64 x 5) (+.f64 (exp.f64 x) (exp.f64 (*.f64 -1 x))))) (+.f64 (*.f64 1/3 (/.f64 (pow.f64 x 3) (+.f64 (exp.f64 x) (exp.f64 (*.f64 -1 x))))) (*.f64 2 (/.f64 x (+.f64 (exp.f64 x) (exp.f64 (*.f64 -1 x))))))))
(*.f64 -1/3 (pow.f64 x 3))
(*.f64 -1/3 (pow.f64 x 3))
(*.f64 -1/3 (pow.f64 x 3))
(*.f64 -1/3 (pow.f64 x 3))
(*.f64 -1/3 (pow.f64 x 3))
(*.f64 -1/3 (pow.f64 x 3))
(*.f64 -1/3 (pow.f64 x 3))
(*.f64 -1/3 (pow.f64 x 3))
(*.f64 -1/3 (pow.f64 x 3))
(*.f64 -1/3 (pow.f64 x 3))
(*.f64 -1/3 (pow.f64 x 3))
(*.f64 -1/3 (pow.f64 x 3))
(*.f64 -1/3 (pow.f64 x 3))
(*.f64 2/15 (pow.f64 x 5))
(*.f64 2/15 (pow.f64 x 5))
(*.f64 2/15 (pow.f64 x 5))
(*.f64 -17/315 (pow.f64 x 7))
(*.f64 -17/315 (pow.f64 x 7))
-4
-2
-1
-1/2
-1/3
-2/15
-17/315
-1/27
-4913/31255875
0
1/16003008000
1/6350400
1/216000
1/3600
1/2520
8/3375
289/99225
1/60
4/225
1/27
1/9
2/15
1/3
1/2
3/4
1
5/4
3/2
7/4
2
5/2
3
7/2
4
5
6
7
8
10
14
-4
-2
-1
-1/2
-1/3
-2/15
-17/315
-1/27
-4913/31255875
0
1/16003008000
1/6350400
1/216000
1/3600
1/2520
8/3375
289/99225
1/60
4/225
1/27
1/9
2/15
1/3
1/2
3/4
1
5/4
3/2
7/4
2
5/2
3
7/2
4
5
6
7
8
10
14
-4
-2
-1
-1/2
-1/3
-2/15
-17/315
-1/27
-4913/31255875
0
1/16003008000
1/6350400
1/216000
1/3600
1/2520
8/3375
289/99225
1/60
4/225
1/27
1/9
2/15
1/3
1/2
3/4
1
5/4
3/2
7/4
2
5/2
3
7/2
4
5
6
7
8
10
14
-4
-2
-1
-1/2
-1/3
-2/15
-17/315
-1/27
-4913/31255875
0
1/16003008000
1/6350400
1/216000
1/3600
1/2520
8/3375
289/99225
1/60
4/225
1/27
1/9
2/15
1/3
1/2
3/4
1
5/4
3/2
7/4
2
5/2
3
7/2
4
5
6
7
8
10
14
-4
-2
-1
-1/2
-1/3
-2/15
-17/315
-1/27
-4913/31255875
0
1/16003008000
1/6350400
1/216000
1/3600
1/2520
8/3375
289/99225
1/60
4/225
1/27
1/9
2/15
1/3
1/2
3/4
1
5/4
3/2
7/4
2
5/2
3
7/2
4
5
6
7
8
10
14
-4
-2
-1
-1/2
-1/3
-2/15
-17/315
-1/27
-4913/31255875
0
1/16003008000
1/6350400
1/216000
1/3600
1/2520
8/3375
289/99225
1/60
4/225
1/27
1/9
2/15
1/3
1/2
3/4
1
5/4
3/2
7/4
2
5/2
3
7/2
4
5
6
7
8
10
14
-4
-2
-1
-1/2
-1/3
-2/15
-17/315
-1/27
-4913/31255875
0
1/16003008000
1/6350400
1/216000
1/3600
1/2520
8/3375
289/99225
1/60
4/225
1/27
1/9
2/15
1/3
1/2
3/4
1
5/4
3/2
7/4
2
5/2
3
7/2
4
5
6
7
8
10
14
-4
-2
-1
-1/2
-1/3
-2/15
-17/315
-1/27
-4913/31255875
0
1/16003008000
1/6350400
1/216000
1/3600
1/2520
8/3375
289/99225
1/60
4/225
1/27
1/9
2/15
1/3
1/2
3/4
1
5/4
3/2
7/4
2
5/2
3
7/2
4
5
6
7
8
10
14
-4
-2
-1
-1/2
-1/3
-2/15
-17/315
-1/27
-4913/31255875
0
1/16003008000
1/6350400
1/216000
1/3600
1/2520
8/3375
289/99225
1/60
4/225
1/27
1/9
2/15
1/3
1/2
3/4
1
5/4
3/2
7/4
2
5/2
3
7/2
4
5
6
7
8
10
14
-4
-2
-1
-1/2
-1/3
-2/15
-17/315
-1/27
-4913/31255875
0
1/16003008000
1/6350400
1/216000
1/3600
1/2520
8/3375
289/99225
1/60
4/225
1/27
1/9
2/15
1/3
1/2
3/4
1
5/4
3/2
7/4
2
5/2
3
7/2
4
5
6
7
8
10
14
-4
-2
-1
-1/2
-1/3
-2/15
-17/315
-1/27
-4913/31255875
0
1/16003008000
1/6350400
1/216000
1/3600
1/2520
8/3375
289/99225
1/60
4/225
1/27
1/9
2/15
1/3
1/2
3/4
1
5/4
3/2
7/4
2
5/2
3
7/2
4
5
6
7
8
10
14
-4
-2
-1
-1/2
-1/3
-2/15
-17/315
-1/27
-4913/31255875
0
1/16003008000
1/6350400
1/216000
1/3600
1/2520
8/3375
289/99225
1/60
4/225
1/27
1/9
2/15
1/3
1/2
3/4
1
5/4
3/2
7/4
2
5/2
3
7/2
4
5
6
7
8
10
14
Outputs
x
(+.f64 x (*.f64 -1/3 (pow.f64 x 3)))
(fma.f64 -1/3 (pow.f64 x 3) x)
(+.f64 x (+.f64 (*.f64 -1/3 (pow.f64 x 3)) (*.f64 2/15 (pow.f64 x 5))))
(+.f64 x (fma.f64 -1/3 (pow.f64 x 3) (*.f64 2/15 (pow.f64 x 5))))
(+.f64 (fma.f64 -1/3 (pow.f64 x 3) x) (*.f64 2/15 (pow.f64 x 5)))
(fma.f64 -1/3 (pow.f64 x 3) (fma.f64 2/15 (pow.f64 x 5) x))
(+.f64 x (+.f64 (*.f64 -1/3 (pow.f64 x 3)) (+.f64 (*.f64 -17/315 (pow.f64 x 7)) (*.f64 2/15 (pow.f64 x 5)))))
(+.f64 x (fma.f64 -1/3 (pow.f64 x 3) (fma.f64 -17/315 (pow.f64 x 7) (*.f64 2/15 (pow.f64 x 5)))))
(+.f64 (fma.f64 -1/3 (pow.f64 x 3) x) (fma.f64 -17/315 (pow.f64 x 7) (*.f64 2/15 (pow.f64 x 5))))
(fma.f64 -1/3 (pow.f64 x 3) (fma.f64 2/15 (pow.f64 x 5) (fma.f64 -17/315 (pow.f64 x 7) 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 1/2520 (/.f64 (pow.f64 x 7) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))))
(/.f64 (*.f64 1/2520 (pow.f64 x 7)) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))
(/.f64 (*.f64 (pow.f64 x 7) 1/2520) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))
(/.f64 (pow.f64 x 7) (/.f64 (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) 1/2520))
(*.f64 (pow.f64 x 7) (/.f64 1/2520 (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))))
(/.f64 1/2520 (/.f64 (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) (pow.f64 x 7)))
(+.f64 (*.f64 1/2520 (/.f64 (pow.f64 x 7) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))) (*.f64 1/60 (/.f64 (pow.f64 x 5) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))))
(fma.f64 1/2520 (/.f64 (pow.f64 x 7) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))) (*.f64 1/60 (/.f64 (pow.f64 x 5) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))))
(fma.f64 1/60 (/.f64 (pow.f64 x 5) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))) (/.f64 (*.f64 (pow.f64 x 7) 1/2520) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))))
(fma.f64 1/60 (/.f64 (pow.f64 x 5) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))) (/.f64 (pow.f64 x 7) (/.f64 (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) 1/2520)))
(fma.f64 (pow.f64 x 5) (/.f64 1/60 (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))) (*.f64 (pow.f64 x 7) (/.f64 1/2520 (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))))
(fma.f64 (pow.f64 x 5) (/.f64 1/60 (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))) (/.f64 1/2520 (/.f64 (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) (pow.f64 x 7))))
(+.f64 (*.f64 1/2520 (/.f64 (pow.f64 x 7) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))) (+.f64 (*.f64 1/60 (/.f64 (pow.f64 x 5) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))) (*.f64 1/3 (/.f64 (pow.f64 x 3) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))))))
(fma.f64 1/2520 (/.f64 (pow.f64 x 7) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))) (fma.f64 1/60 (/.f64 (pow.f64 x 5) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))) (/.f64 (*.f64 1/3 (pow.f64 x 3)) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))))
(fma.f64 1/2520 (/.f64 (pow.f64 x 7) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))) (fma.f64 1/60 (/.f64 (pow.f64 x 5) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))) (/.f64 (*.f64 (pow.f64 x 3) 1/3) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))))
(fma.f64 1/2520 (/.f64 (pow.f64 x 7) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))) (fma.f64 1/60 (/.f64 (pow.f64 x 5) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))) (*.f64 (/.f64 1/3 (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))) (pow.f64 x 3))))
(fma.f64 1/2520 (/.f64 (pow.f64 x 7) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))) (fma.f64 1/60 (/.f64 (pow.f64 x 5) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))) (*.f64 (pow.f64 x 3) (/.f64 1/3 (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))))))
(fma.f64 (pow.f64 x 3) (/.f64 1/3 (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))) (fma.f64 (pow.f64 x 5) (/.f64 1/60 (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))) (*.f64 (pow.f64 x 7) (/.f64 1/2520 (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))))))
(fma.f64 (pow.f64 x 3) (/.f64 1/3 (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))) (fma.f64 (pow.f64 x 5) (/.f64 1/60 (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))) (/.f64 1/2520 (/.f64 (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) (pow.f64 x 7)))))
(+.f64 (*.f64 1/2520 (/.f64 (pow.f64 x 7) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))) (+.f64 (*.f64 1/60 (/.f64 (pow.f64 x 5) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))) (+.f64 (*.f64 1/3 (/.f64 (pow.f64 x 3) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))) (*.f64 2 (/.f64 x (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))))))
(fma.f64 1/2520 (/.f64 (pow.f64 x 7) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))) (fma.f64 1/60 (/.f64 (pow.f64 x 5) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))) (fma.f64 1/3 (/.f64 (pow.f64 x 3) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))) (/.f64 (*.f64 2 x) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))))))
(fma.f64 1/2520 (/.f64 (pow.f64 x 7) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))) (fma.f64 1/60 (/.f64 (pow.f64 x 5) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))) (fma.f64 1/3 (/.f64 (pow.f64 x 3) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))) (/.f64 (*.f64 x 2) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))))))
(fma.f64 (pow.f64 x 5) (/.f64 1/60 (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))) (fma.f64 (pow.f64 x 7) (/.f64 1/2520 (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))) (*.f64 (/.f64 x (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))) (+.f64 (*.f64 1/3 (*.f64 x x)) 2))))
(fma.f64 (pow.f64 x 5) (/.f64 1/60 (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))) (fma.f64 (pow.f64 x 7) (/.f64 1/2520 (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))) (*.f64 (/.f64 x (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))) (+.f64 2 (*.f64 1/3 (*.f64 x x))))))
(fma.f64 (pow.f64 x 5) (/.f64 1/60 (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))) (fma.f64 (pow.f64 x 7) (/.f64 1/2520 (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))) (/.f64 (+.f64 (*.f64 x 2) (*.f64 (pow.f64 x 3) 1/3)) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))))
(*.f64 1/2520 (/.f64 (pow.f64 x 7) (+.f64 (exp.f64 x) (exp.f64 (*.f64 -1 x)))))
(/.f64 (*.f64 1/2520 (pow.f64 x 7)) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))
(/.f64 (*.f64 (pow.f64 x 7) 1/2520) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))
(/.f64 (pow.f64 x 7) (/.f64 (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) 1/2520))
(*.f64 (pow.f64 x 7) (/.f64 1/2520 (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))))
(/.f64 1/2520 (/.f64 (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) (pow.f64 x 7)))
(+.f64 (*.f64 1/2520 (/.f64 (pow.f64 x 7) (+.f64 (exp.f64 x) (exp.f64 (*.f64 -1 x))))) (*.f64 1/60 (/.f64 (pow.f64 x 5) (+.f64 (exp.f64 x) (exp.f64 (*.f64 -1 x))))))
(fma.f64 1/2520 (/.f64 (pow.f64 x 7) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))) (*.f64 1/60 (/.f64 (pow.f64 x 5) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))))
(fma.f64 1/60 (/.f64 (pow.f64 x 5) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))) (/.f64 (*.f64 (pow.f64 x 7) 1/2520) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))))
(fma.f64 1/60 (/.f64 (pow.f64 x 5) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))) (/.f64 (pow.f64 x 7) (/.f64 (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) 1/2520)))
(fma.f64 (pow.f64 x 5) (/.f64 1/60 (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))) (*.f64 (pow.f64 x 7) (/.f64 1/2520 (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))))
(fma.f64 (pow.f64 x 5) (/.f64 1/60 (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))) (/.f64 1/2520 (/.f64 (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) (pow.f64 x 7))))
(+.f64 (*.f64 1/2520 (/.f64 (pow.f64 x 7) (+.f64 (exp.f64 x) (exp.f64 (*.f64 -1 x))))) (+.f64 (*.f64 1/60 (/.f64 (pow.f64 x 5) (+.f64 (exp.f64 x) (exp.f64 (*.f64 -1 x))))) (*.f64 1/3 (/.f64 (pow.f64 x 3) (+.f64 (exp.f64 x) (exp.f64 (*.f64 -1 x)))))))
(fma.f64 1/2520 (/.f64 (pow.f64 x 7) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))) (fma.f64 1/60 (/.f64 (pow.f64 x 5) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))) (/.f64 (*.f64 1/3 (pow.f64 x 3)) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))))
(fma.f64 1/2520 (/.f64 (pow.f64 x 7) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))) (fma.f64 1/60 (/.f64 (pow.f64 x 5) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))) (/.f64 (*.f64 (pow.f64 x 3) 1/3) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))))
(fma.f64 1/2520 (/.f64 (pow.f64 x 7) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))) (fma.f64 1/60 (/.f64 (pow.f64 x 5) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))) (*.f64 (/.f64 1/3 (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))) (pow.f64 x 3))))
(fma.f64 1/2520 (/.f64 (pow.f64 x 7) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))) (fma.f64 1/60 (/.f64 (pow.f64 x 5) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))) (*.f64 (pow.f64 x 3) (/.f64 1/3 (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))))))
(fma.f64 (pow.f64 x 3) (/.f64 1/3 (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))) (fma.f64 (pow.f64 x 5) (/.f64 1/60 (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))) (*.f64 (pow.f64 x 7) (/.f64 1/2520 (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))))))
(fma.f64 (pow.f64 x 3) (/.f64 1/3 (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))) (fma.f64 (pow.f64 x 5) (/.f64 1/60 (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))) (/.f64 1/2520 (/.f64 (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) (pow.f64 x 7)))))
(+.f64 (*.f64 1/2520 (/.f64 (pow.f64 x 7) (+.f64 (exp.f64 x) (exp.f64 (*.f64 -1 x))))) (+.f64 (*.f64 1/60 (/.f64 (pow.f64 x 5) (+.f64 (exp.f64 x) (exp.f64 (*.f64 -1 x))))) (+.f64 (*.f64 1/3 (/.f64 (pow.f64 x 3) (+.f64 (exp.f64 x) (exp.f64 (*.f64 -1 x))))) (*.f64 2 (/.f64 x (+.f64 (exp.f64 x) (exp.f64 (*.f64 -1 x))))))))
(fma.f64 1/2520 (/.f64 (pow.f64 x 7) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))) (fma.f64 1/60 (/.f64 (pow.f64 x 5) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))) (fma.f64 1/3 (/.f64 (pow.f64 x 3) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))) (/.f64 (*.f64 2 x) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))))))
(fma.f64 1/2520 (/.f64 (pow.f64 x 7) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))) (fma.f64 1/60 (/.f64 (pow.f64 x 5) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))) (fma.f64 1/3 (/.f64 (pow.f64 x 3) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))) (/.f64 (*.f64 x 2) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))))))
(fma.f64 (pow.f64 x 5) (/.f64 1/60 (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))) (fma.f64 (pow.f64 x 7) (/.f64 1/2520 (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))) (*.f64 (/.f64 x (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))) (+.f64 (*.f64 1/3 (*.f64 x x)) 2))))
(fma.f64 (pow.f64 x 5) (/.f64 1/60 (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))) (fma.f64 (pow.f64 x 7) (/.f64 1/2520 (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))) (*.f64 (/.f64 x (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))) (+.f64 2 (*.f64 1/3 (*.f64 x x))))))
(fma.f64 (pow.f64 x 5) (/.f64 1/60 (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))) (fma.f64 (pow.f64 x 7) (/.f64 1/2520 (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))) (/.f64 (+.f64 (*.f64 x 2) (*.f64 (pow.f64 x 3) 1/3)) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))))
(*.f64 -1/3 (pow.f64 x 3))
(*.f64 -1/3 (pow.f64 x 3))
(*.f64 -1/3 (pow.f64 x 3))
(*.f64 -1/3 (pow.f64 x 3))
(*.f64 -1/3 (pow.f64 x 3))
(*.f64 -1/3 (pow.f64 x 3))
(*.f64 -1/3 (pow.f64 x 3))
(*.f64 -1/3 (pow.f64 x 3))
(*.f64 -1/3 (pow.f64 x 3))
(*.f64 -1/3 (pow.f64 x 3))
(*.f64 -1/3 (pow.f64 x 3))
(*.f64 -1/3 (pow.f64 x 3))
(*.f64 -1/3 (pow.f64 x 3))
(*.f64 2/15 (pow.f64 x 5))
(*.f64 2/15 (pow.f64 x 5))
(*.f64 2/15 (pow.f64 x 5))
(*.f64 -17/315 (pow.f64 x 7))
(*.f64 -17/315 (pow.f64 x 7))
-4
-2
-1
-1/2
-1/3
-2/15
-17/315
-1/27
-4913/31255875
0
1/16003008000
1/6350400
1/216000
1/3600
1/2520
8/3375
289/99225
1/60
4/225
1/27
1/9
2/15
1/3
1/2
3/4
1
5/4
3/2
7/4
2
5/2
3
7/2
4
5
6
7
8
10
14
-4
-2
-1
-1/2
-1/3
-2/15
-17/315
-1/27
-4913/31255875
0
1/16003008000
1/6350400
1/216000
1/3600
1/2520
8/3375
289/99225
1/60
4/225
1/27
1/9
2/15
1/3
1/2
3/4
1
5/4
3/2
7/4
2
5/2
3
7/2
4
5
6
7
8
10
14
-4
-2
-1
-1/2
-1/3
-2/15
-17/315
-1/27
-4913/31255875
0
1/16003008000
1/6350400
1/216000
1/3600
1/2520
8/3375
289/99225
1/60
4/225
1/27
1/9
2/15
1/3
1/2
3/4
1
5/4
3/2
7/4
2
5/2
3
7/2
4
5
6
7
8
10
14
-4
-2
-1
-1/2
-1/3
-2/15
-17/315
-1/27
-4913/31255875
0
1/16003008000
1/6350400
1/216000
1/3600
1/2520
8/3375
289/99225
1/60
4/225
1/27
1/9
2/15
1/3
1/2
3/4
1
5/4
3/2
7/4
2
5/2
3
7/2
4
5
6
7
8
10
14
-4
-2
-1
-1/2
-1/3
-2/15
-17/315
-1/27
-4913/31255875
0
1/16003008000
1/6350400
1/216000
1/3600
1/2520
8/3375
289/99225
1/60
4/225
1/27
1/9
2/15
1/3
1/2
3/4
1
5/4
3/2
7/4
2
5/2
3
7/2
4
5
6
7
8
10
14
-4
-2
-1
-1/2
-1/3
-2/15
-17/315
-1/27
-4913/31255875
0
1/16003008000
1/6350400
1/216000
1/3600
1/2520
8/3375
289/99225
1/60
4/225
1/27
1/9
2/15
1/3
1/2
3/4
1
5/4
3/2
7/4
2
5/2
3
7/2
4
5
6
7
8
10
14
-4
-2
-1
-1/2
-1/3
-2/15
-17/315
-1/27
-4913/31255875
0
1/16003008000
1/6350400
1/216000
1/3600
1/2520
8/3375
289/99225
1/60
4/225
1/27
1/9
2/15
1/3
1/2
3/4
1
5/4
3/2
7/4
2
5/2
3
7/2
4
5
6
7
8
10
14
-4
-2
-1
-1/2
-1/3
-2/15
-17/315
-1/27
-4913/31255875
0
1/16003008000
1/6350400
1/216000
1/3600
1/2520
8/3375
289/99225
1/60
4/225
1/27
1/9
2/15
1/3
1/2
3/4
1
5/4
3/2
7/4
2
5/2
3
7/2
4
5
6
7
8
10
14
-4
-2
-1
-1/2
-1/3
-2/15
-17/315
-1/27
-4913/31255875
0
1/16003008000
1/6350400
1/216000
1/3600
1/2520
8/3375
289/99225
1/60
4/225
1/27
1/9
2/15
1/3
1/2
3/4
1
5/4
3/2
7/4
2
5/2
3
7/2
4
5
6
7
8
10
14
-4
-2
-1
-1/2
-1/3
-2/15
-17/315
-1/27
-4913/31255875
0
1/16003008000
1/6350400
1/216000
1/3600
1/2520
8/3375
289/99225
1/60
4/225
1/27
1/9
2/15
1/3
1/2
3/4
1
5/4
3/2
7/4
2
5/2
3
7/2
4
5
6
7
8
10
14
-4
-2
-1
-1/2
-1/3
-2/15
-17/315
-1/27
-4913/31255875
0
1/16003008000
1/6350400
1/216000
1/3600
1/2520
8/3375
289/99225
1/60
4/225
1/27
1/9
2/15
1/3
1/2
3/4
1
5/4
3/2
7/4
2
5/2
3
7/2
4
5
6
7
8
10
14
-4
-2
-1
-1/2
-1/3
-2/15
-17/315
-1/27
-4913/31255875
0
1/16003008000
1/6350400
1/216000
1/3600
1/2520
8/3375
289/99225
1/60
4/225
1/27
1/9
2/15
1/3
1/2
3/4
1
5/4
3/2
7/4
2
5/2
3
7/2
4
5
6
7
8
10
14

eval42.0ms (0.9%)

Compiler

Compiled 2001 to 1133 computations (43.4% saved)

prune18.0ms (0.4%)

Pruning

7 alts after pruning (1 fresh and 6 done)

PrunedKeptTotal
New83184
Fresh000
Picked055
Done011
Total83790
Accuracy
98.6%
Counts
90 → 7
Alt Table
Click to see full alt table
StatusAccuracyProgram
5.9%
(/.f64 (pow.f64 x 7) (/.f64 (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) 1/2520))
11.9%
(/.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))
97.3%
(/.f64 (+.f64 (*.f64 1/2520 (pow.f64 x 7)) (+.f64 (*.f64 1/60 (pow.f64 x 5)) (+.f64 (*.f64 1/3 (pow.f64 x 3)) (*.f64 2 x)))) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))
97.1%
(+.f64 x (+.f64 (*.f64 -1/3 (pow.f64 x 3)) (+.f64 (*.f64 -17/315 (pow.f64 x 7)) (*.f64 2/15 (pow.f64 x 5)))))
97.1%
(+.f64 x (+.f64 (*.f64 -1/3 (pow.f64 x 3)) (*.f64 2/15 (pow.f64 x 5))))
96.6%
(+.f64 x (*.f64 (pow.f64 x 3) -1/3))
95.4%
x
Compiler

Compiled 100 to 74 computations (26% saved)

localize49.0ms (1%)

Localize:

Found 3 expressions with local error:

NewAccuracyProgram
100.0%
(+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))
99.9%
(/.f64 (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) 1/2520)
99.9%
(/.f64 (pow.f64 x 7) (/.f64 (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) 1/2520))
Compiler

Compiled 41 to 17 computations (58.5% saved)

series3.0ms (0.1%)

Counts
2 → 24
Calls

6 calls:

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

rewrite36.0ms (0.7%)

Algorithm
batch-egg-rewrite
Rules
128×associate-*r*
86×log1p-expm1-u
86×expm1-log1p-u
85×add-exp-log
85×add-log-exp
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01570
120070
2348170
Stop Event
unsound
Counts
2 → 72
Calls
Call 1
Inputs
(/.f64 (pow.f64 x 7) (/.f64 (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) 1/2520))
(/.f64 (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) 1/2520)
Outputs
-128024064000
-10080
-5040
-2520
-4
-2
-1
-1/2
-1/2520
-1/5040
-1/6350400
-1/12700800
0
1/128024064000
1/25401600
1/12700800
1/6350400
1/5040
1/2520
1/2
1
3/2
7/4
2
3
7/2
4
7
14
2520
5040
5041
10080
6350400
12700800
25401600
-128024064000
-10080
-5040
-2520
-4
-2
-1
-1/2
-1/2520
-1/5040
-1/6350400
-1/12700800
0
1/128024064000
1/25401600
1/12700800
1/6350400
1/5040
1/2520
1/2
1
3/2
7/4
2
3
7/2
4
7
14
2520
5040
5041
10080
6350400
12700800
25401600

simplify94.0ms (2%)

Algorithm
egg-herbie
Rules
2070×fma-def
1074×associate-*r/
886×distribute-lft-out
848×associate-/l*
682×*-commutative
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
087972
1176952
2330944
3778944
42134944
54571944
67016944
Stop Event
node limit
Counts
96 → 69
Calls
Call 1
Inputs
(*.f64 1/5040 (pow.f64 x 7))
(+.f64 (*.f64 -1/10080 (pow.f64 x 9)) (*.f64 1/5040 (pow.f64 x 7)))
(+.f64 (*.f64 -1/10080 (pow.f64 x 9)) (+.f64 (*.f64 1/24192 (pow.f64 x 11)) (*.f64 1/5040 (pow.f64 x 7))))
(+.f64 (*.f64 -1/10080 (pow.f64 x 9)) (+.f64 (*.f64 -61/3628800 (pow.f64 x 13)) (+.f64 (*.f64 1/24192 (pow.f64 x 11)) (*.f64 1/5040 (pow.f64 x 7)))))
(*.f64 1/2520 (/.f64 (pow.f64 x 7) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))))
(*.f64 1/2520 (/.f64 (pow.f64 x 7) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))))
(*.f64 1/2520 (/.f64 (pow.f64 x 7) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))))
(*.f64 1/2520 (/.f64 (pow.f64 x 7) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))))
(*.f64 1/2520 (/.f64 (pow.f64 x 7) (+.f64 (exp.f64 x) (exp.f64 (*.f64 -1 x)))))
(*.f64 1/2520 (/.f64 (pow.f64 x 7) (+.f64 (exp.f64 x) (exp.f64 (*.f64 -1 x)))))
(*.f64 1/2520 (/.f64 (pow.f64 x 7) (+.f64 (exp.f64 x) (exp.f64 (*.f64 -1 x)))))
(*.f64 1/2520 (/.f64 (pow.f64 x 7) (+.f64 (exp.f64 x) (exp.f64 (*.f64 -1 x)))))
5040
(+.f64 5040 (*.f64 2520 (pow.f64 x 2)))
(+.f64 5040 (+.f64 (*.f64 210 (pow.f64 x 4)) (*.f64 2520 (pow.f64 x 2))))
(+.f64 5040 (+.f64 (*.f64 7 (pow.f64 x 6)) (+.f64 (*.f64 210 (pow.f64 x 4)) (*.f64 2520 (pow.f64 x 2)))))
(*.f64 2520 (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))
(*.f64 2520 (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))
(*.f64 2520 (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))
(*.f64 2520 (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))
(*.f64 2520 (+.f64 (exp.f64 x) (exp.f64 (*.f64 -1 x))))
(*.f64 2520 (+.f64 (exp.f64 x) (exp.f64 (*.f64 -1 x))))
(*.f64 2520 (+.f64 (exp.f64 x) (exp.f64 (*.f64 -1 x))))
(*.f64 2520 (+.f64 (exp.f64 x) (exp.f64 (*.f64 -1 x))))
-128024064000
-10080
-5040
-2520
-4
-2
-1
-1/2
-1/2520
-1/5040
-1/6350400
-1/12700800
0
1/128024064000
1/25401600
1/12700800
1/6350400
1/5040
1/2520
1/2
1
3/2
7/4
2
3
7/2
4
7
14
2520
5040
5041
10080
6350400
12700800
25401600
-128024064000
-10080
-5040
-2520
-4
-2
-1
-1/2
-1/2520
-1/5040
-1/6350400
-1/12700800
0
1/128024064000
1/25401600
1/12700800
1/6350400
1/5040
1/2520
1/2
1
3/2
7/4
2
3
7/2
4
7
14
2520
5040
5041
10080
6350400
12700800
25401600
Outputs
(*.f64 1/5040 (pow.f64 x 7))
(+.f64 (*.f64 -1/10080 (pow.f64 x 9)) (*.f64 1/5040 (pow.f64 x 7)))
(fma.f64 -1/10080 (pow.f64 x 9) (*.f64 1/5040 (pow.f64 x 7)))
(fma.f64 1/5040 (pow.f64 x 7) (*.f64 -1/10080 (pow.f64 x 9)))
(+.f64 (*.f64 -1/10080 (pow.f64 x 9)) (+.f64 (*.f64 1/24192 (pow.f64 x 11)) (*.f64 1/5040 (pow.f64 x 7))))
(fma.f64 -1/10080 (pow.f64 x 9) (fma.f64 1/24192 (pow.f64 x 11) (*.f64 1/5040 (pow.f64 x 7))))
(fma.f64 -1/10080 (pow.f64 x 9) (fma.f64 1/5040 (pow.f64 x 7) (*.f64 1/24192 (pow.f64 x 11))))
(fma.f64 1/5040 (pow.f64 x 7) (fma.f64 -1/10080 (pow.f64 x 9) (*.f64 1/24192 (pow.f64 x 11))))
(+.f64 (*.f64 -1/10080 (pow.f64 x 9)) (+.f64 (*.f64 -61/3628800 (pow.f64 x 13)) (+.f64 (*.f64 1/24192 (pow.f64 x 11)) (*.f64 1/5040 (pow.f64 x 7)))))
(fma.f64 -1/10080 (pow.f64 x 9) (fma.f64 -61/3628800 (pow.f64 x 13) (fma.f64 1/24192 (pow.f64 x 11) (*.f64 1/5040 (pow.f64 x 7)))))
(fma.f64 -1/10080 (pow.f64 x 9) (fma.f64 -61/3628800 (pow.f64 x 13) (fma.f64 1/5040 (pow.f64 x 7) (*.f64 1/24192 (pow.f64 x 11)))))
(fma.f64 -1/10080 (pow.f64 x 9) (fma.f64 1/5040 (pow.f64 x 7) (fma.f64 1/24192 (pow.f64 x 11) (*.f64 -61/3628800 (pow.f64 x 13)))))
(fma.f64 1/5040 (pow.f64 x 7) (fma.f64 -61/3628800 (pow.f64 x 13) (fma.f64 -1/10080 (pow.f64 x 9) (*.f64 1/24192 (pow.f64 x 11)))))
(*.f64 1/2520 (/.f64 (pow.f64 x 7) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))))
(/.f64 (*.f64 1/2520 (pow.f64 x 7)) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))
(/.f64 (*.f64 (pow.f64 x 7) 1/2520) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))
(*.f64 1/2520 (/.f64 (pow.f64 x 7) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))))
(/.f64 (*.f64 1/2520 (pow.f64 x 7)) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))
(/.f64 (*.f64 (pow.f64 x 7) 1/2520) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))
(*.f64 1/2520 (/.f64 (pow.f64 x 7) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))))
(/.f64 (*.f64 1/2520 (pow.f64 x 7)) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))
(/.f64 (*.f64 (pow.f64 x 7) 1/2520) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))
(*.f64 1/2520 (/.f64 (pow.f64 x 7) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))))
(/.f64 (*.f64 1/2520 (pow.f64 x 7)) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))
(/.f64 (*.f64 (pow.f64 x 7) 1/2520) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))
(*.f64 1/2520 (/.f64 (pow.f64 x 7) (+.f64 (exp.f64 x) (exp.f64 (*.f64 -1 x)))))
(/.f64 (*.f64 1/2520 (pow.f64 x 7)) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))
(/.f64 (*.f64 (pow.f64 x 7) 1/2520) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))
(*.f64 1/2520 (/.f64 (pow.f64 x 7) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))))
(*.f64 1/2520 (/.f64 (pow.f64 x 7) (+.f64 (exp.f64 x) (exp.f64 (*.f64 -1 x)))))
(/.f64 (*.f64 1/2520 (pow.f64 x 7)) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))
(/.f64 (*.f64 (pow.f64 x 7) 1/2520) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))
(*.f64 1/2520 (/.f64 (pow.f64 x 7) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))))
(*.f64 1/2520 (/.f64 (pow.f64 x 7) (+.f64 (exp.f64 x) (exp.f64 (*.f64 -1 x)))))
(/.f64 (*.f64 1/2520 (pow.f64 x 7)) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))
(/.f64 (*.f64 (pow.f64 x 7) 1/2520) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))
(*.f64 1/2520 (/.f64 (pow.f64 x 7) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))))
(*.f64 1/2520 (/.f64 (pow.f64 x 7) (+.f64 (exp.f64 x) (exp.f64 (*.f64 -1 x)))))
(/.f64 (*.f64 1/2520 (pow.f64 x 7)) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))
(/.f64 (*.f64 (pow.f64 x 7) 1/2520) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))
(*.f64 1/2520 (/.f64 (pow.f64 x 7) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))))
5040
(+.f64 5040 (*.f64 2520 (pow.f64 x 2)))
(fma.f64 2520 (pow.f64 x 2) 5040)
(+.f64 5040 (+.f64 (*.f64 210 (pow.f64 x 4)) (*.f64 2520 (pow.f64 x 2))))
(+.f64 5040 (fma.f64 210 (pow.f64 x 4) (*.f64 2520 (pow.f64 x 2))))
(+.f64 (fma.f64 2520 (pow.f64 x 2) 5040) (*.f64 210 (pow.f64 x 4)))
(fma.f64 2520 (pow.f64 x 2) (fma.f64 210 (pow.f64 x 4) 5040))
(fma.f64 (pow.f64 x 2) (fma.f64 (pow.f64 x 2) 210 2520) 5040)
(+.f64 5040 (+.f64 (*.f64 7 (pow.f64 x 6)) (+.f64 (*.f64 210 (pow.f64 x 4)) (*.f64 2520 (pow.f64 x 2)))))
(+.f64 5040 (fma.f64 7 (pow.f64 x 6) (fma.f64 210 (pow.f64 x 4) (*.f64 2520 (pow.f64 x 2)))))
(+.f64 (fma.f64 7 (pow.f64 x 6) (*.f64 210 (pow.f64 x 4))) (fma.f64 2520 (pow.f64 x 2) 5040))
(fma.f64 7 (pow.f64 x 6) (fma.f64 2520 (pow.f64 x 2) (fma.f64 210 (pow.f64 x 4) 5040)))
(fma.f64 7 (pow.f64 x 6) (fma.f64 (pow.f64 x 2) (fma.f64 (pow.f64 x 2) 210 2520) 5040))
(*.f64 2520 (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))
(*.f64 (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) 2520)
(fma.f64 (exp.f64 x) 2520 (/.f64 2520 (exp.f64 x)))
(*.f64 2520 (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))
(*.f64 (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) 2520)
(fma.f64 (exp.f64 x) 2520 (/.f64 2520 (exp.f64 x)))
(*.f64 2520 (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))
(*.f64 (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) 2520)
(fma.f64 (exp.f64 x) 2520 (/.f64 2520 (exp.f64 x)))
(*.f64 2520 (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))
(*.f64 (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) 2520)
(fma.f64 (exp.f64 x) 2520 (/.f64 2520 (exp.f64 x)))
(*.f64 2520 (+.f64 (exp.f64 x) (exp.f64 (*.f64 -1 x))))
(*.f64 (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) 2520)
(fma.f64 (exp.f64 x) 2520 (/.f64 2520 (exp.f64 x)))
(*.f64 2520 (+.f64 (exp.f64 x) (exp.f64 (*.f64 -1 x))))
(*.f64 (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) 2520)
(fma.f64 (exp.f64 x) 2520 (/.f64 2520 (exp.f64 x)))
(*.f64 2520 (+.f64 (exp.f64 x) (exp.f64 (*.f64 -1 x))))
(*.f64 (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) 2520)
(fma.f64 (exp.f64 x) 2520 (/.f64 2520 (exp.f64 x)))
(*.f64 2520 (+.f64 (exp.f64 x) (exp.f64 (*.f64 -1 x))))
(*.f64 (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) 2520)
(fma.f64 (exp.f64 x) 2520 (/.f64 2520 (exp.f64 x)))
-128024064000
-10080
-5040
-2520
-4
-2
-1
-1/2
-1/2520
-1/5040
-1/6350400
-1/12700800
0
1/128024064000
1/25401600
1/12700800
1/6350400
1/5040
1/2520
1/2
1
3/2
7/4
2
3
7/2
4
7
14
2520
5040
5041
10080
6350400
12700800
25401600
-128024064000
-10080
-5040
-2520
-4
-2
-1
-1/2
-1/2520
-1/5040
-1/6350400
-1/12700800
0
1/128024064000
1/25401600
1/12700800
1/6350400
1/5040
1/2520
1/2
1
3/2
7/4
2
3
7/2
4
7
14
2520
5040
5041
10080
6350400
12700800
25401600

eval23.0ms (0.5%)

Compiler

Compiled 730 to 562 computations (23% saved)

prune16.0ms (0.3%)

Pruning

7 alts after pruning (1 fresh and 6 done)

PrunedKeptTotal
New80181
Fresh000
Picked101
Done066
Total81788
Accuracy
100.0%
Counts
88 → 7
Alt Table
Click to see full alt table
StatusAccuracyProgram
11.9%
(/.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))
97.3%
(/.f64 (+.f64 (*.f64 1/2520 (pow.f64 x 7)) (+.f64 (*.f64 1/60 (pow.f64 x 5)) (+.f64 (*.f64 1/3 (pow.f64 x 3)) (*.f64 2 x)))) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))
97.1%
(+.f64 x (+.f64 (*.f64 -1/3 (pow.f64 x 3)) (+.f64 (*.f64 -17/315 (pow.f64 x 7)) (*.f64 2/15 (pow.f64 x 5)))))
97.1%
(+.f64 x (+.f64 (*.f64 -1/3 (pow.f64 x 3)) (*.f64 2/15 (pow.f64 x 5))))
96.6%
(+.f64 x (*.f64 (pow.f64 x 3) -1/3))
95.4%
x
8.0%
1
Compiler

Compiled 89 to 66 computations (25.8% saved)

localize10.0ms (0.2%)

Compiler

Compiled 3 to 3 computations (0% saved)

eval0.0ms (0%)

Compiler

Compiled 1 to 1 computations (0% saved)

prune7.0ms (0.1%)

Pruning

7 alts after pruning (0 fresh and 7 done)

PrunedKeptTotal
New000
Fresh000
Picked011
Done066
Total077
Accuracy
100.0%
Counts
7 → 7
Alt Table
Click to see full alt table
StatusAccuracyProgram
11.9%
(/.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))
97.3%
(/.f64 (+.f64 (*.f64 1/2520 (pow.f64 x 7)) (+.f64 (*.f64 1/60 (pow.f64 x 5)) (+.f64 (*.f64 1/3 (pow.f64 x 3)) (*.f64 2 x)))) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))
97.1%
(+.f64 x (+.f64 (*.f64 -1/3 (pow.f64 x 3)) (+.f64 (*.f64 -17/315 (pow.f64 x 7)) (*.f64 2/15 (pow.f64 x 5)))))
97.1%
(+.f64 x (+.f64 (*.f64 -1/3 (pow.f64 x 3)) (*.f64 2/15 (pow.f64 x 5))))
96.6%
(+.f64 x (*.f64 (pow.f64 x 3) -1/3))
95.4%
x
8.0%
1
Compiler

Compiled 184 to 127 computations (31% saved)

regimes12.0ms (0.2%)

Counts
8 → 2
Calls
Call 1
Inputs
1
x
(+.f64 x (*.f64 (pow.f64 x 3) -1/3))
(+.f64 x (+.f64 (*.f64 -1/3 (pow.f64 x 3)) (*.f64 2/15 (pow.f64 x 5))))
(/.f64 (pow.f64 x 7) (/.f64 (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) 1/2520))
(+.f64 x (+.f64 (*.f64 -1/3 (pow.f64 x 3)) (+.f64 (*.f64 -17/315 (pow.f64 x 7)) (*.f64 2/15 (pow.f64 x 5)))))
(/.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))
(/.f64 (+.f64 (*.f64 1/2520 (pow.f64 x 7)) (+.f64 (*.f64 1/60 (pow.f64 x 5)) (+.f64 (*.f64 1/3 (pow.f64 x 3)) (*.f64 2 x)))) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))
Outputs
(/.f64 (+.f64 (*.f64 1/2520 (pow.f64 x 7)) (+.f64 (*.f64 1/60 (pow.f64 x 5)) (+.f64 (*.f64 1/3 (pow.f64 x 3)) (*.f64 2 x)))) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))
1
Calls

2 calls:

8.0ms
x
3.0ms
(/.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))
Results
AccuracySegmentsBranch
99.7%2x
99.7%2(/.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))
Compiler

Compiled 16 to 8 computations (50% saved)

regimes12.0ms (0.2%)

Counts
7 → 2
Calls
Call 1
Inputs
1
x
(+.f64 x (*.f64 (pow.f64 x 3) -1/3))
(+.f64 x (+.f64 (*.f64 -1/3 (pow.f64 x 3)) (*.f64 2/15 (pow.f64 x 5))))
(/.f64 (pow.f64 x 7) (/.f64 (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) 1/2520))
(+.f64 x (+.f64 (*.f64 -1/3 (pow.f64 x 3)) (+.f64 (*.f64 -17/315 (pow.f64 x 7)) (*.f64 2/15 (pow.f64 x 5)))))
(/.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))
Outputs
(+.f64 x (+.f64 (*.f64 -1/3 (pow.f64 x 3)) (+.f64 (*.f64 -17/315 (pow.f64 x 7)) (*.f64 2/15 (pow.f64 x 5)))))
1
Calls

2 calls:

8.0ms
x
3.0ms
(/.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))
Results
AccuracySegmentsBranch
99.6%2x
99.6%2(/.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))))
Compiler

Compiled 16 to 8 computations (50% saved)

regimes7.0ms (0.1%)

Counts
5 → 2
Calls
Call 1
Inputs
1
x
(+.f64 x (*.f64 (pow.f64 x 3) -1/3))
(+.f64 x (+.f64 (*.f64 -1/3 (pow.f64 x 3)) (*.f64 2/15 (pow.f64 x 5))))
(/.f64 (pow.f64 x 7) (/.f64 (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) 1/2520))
Outputs
(+.f64 x (+.f64 (*.f64 -1/3 (pow.f64 x 3)) (*.f64 2/15 (pow.f64 x 5))))
1
Calls

1 calls:

7.0ms
x
Results
AccuracySegmentsBranch
99.4%2x
Compiler

Compiled 2 to 1 computations (50% saved)

regimes6.0ms (0.1%)

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

1 calls:

5.0ms
x
Results
AccuracySegmentsBranch
99.1%2x
Compiler

Compiled 2 to 1 computations (50% saved)

regimes5.0ms (0.1%)

Counts
2 → 2
Calls
Call 1
Inputs
1
x
Outputs
x
1
Calls

1 calls:

5.0ms
x
Results
AccuracySegmentsBranch
97.6%2x
Compiler

Compiled 2 to 1 computations (50% saved)

regimes11.0ms (0.2%)

Accuracy

Total 0.0b remaining (0%)

Threshold costs 0b (0%)

Counts
1 → 1
Calls
Call 1
Inputs
1
Outputs
1
Calls

1 calls:

11.0ms
x
Results
AccuracySegmentsBranch
8.0%1x
Compiler

Compiled 2 to 1 computations (50% saved)

bsearch0.0ms (0%)

Algorithm
left-value
Steps
TimeLeftRight
0.0ms
0.20560215945927174
0.9999999845883912
Compiler

Compiled 18 to 10 computations (44.4% saved)

bsearch0.0ms (0%)

Algorithm
left-value
Steps
TimeLeftRight
0.0ms
0.20560215945927174
0.9999999845883912
Compiler

Compiled 18 to 10 computations (44.4% saved)

bsearch14.0ms (0.3%)

Algorithm
binary-search
Stop Event
narrow-enough
Steps
TimeLeftRight
14.0ms
0.20857502206323758
9.340645984289777
Results
13.0ms112×256valid
Compiler

Compiled 144 to 115 computations (20.1% saved)

bsearch14.0ms (0.3%)

Algorithm
binary-search
Stop Event
narrow-enough
Steps
TimeLeftRight
14.0ms
0.20857502206323758
9.340645984289777
Results
13.0ms112×256valid
Compiler

Compiled 102 to 80 computations (21.6% saved)

bsearch15.0ms (0.3%)

Algorithm
binary-search
Stop Event
narrow-enough
Steps
TimeLeftRight
15.0ms
0.20857502206323758
9.340645984289777
Results
14.0ms112×256valid
Compiler

Compiled 60 to 45 computations (25% saved)

simplify10.0ms (0.2%)

Algorithm
egg-herbie
Rules
26×+-commutative
18×*-commutative
sub-neg
neg-mul-1
neg-sub0
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
059413
187413
292413
395413
496413
Stop Event
done
saturated
Calls
Call 1
Inputs
(if (<=.f64 (/.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))) 3602879701896397/9007199254740992) (/.f64 (+.f64 (*.f64 1/2520 (pow.f64 x 7)) (+.f64 (*.f64 1/60 (pow.f64 x 5)) (+.f64 (*.f64 1/3 (pow.f64 x 3)) (*.f64 2 x)))) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))) 1)
(if (<=.f64 (/.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))) 3602879701896397/9007199254740992) (+.f64 x (+.f64 (*.f64 -1/3 (pow.f64 x 3)) (+.f64 (*.f64 -17/315 (pow.f64 x 7)) (*.f64 2/15 (pow.f64 x 5))))) 1)
(if (<=.f64 x 5494391545392005/4503599627370496) (+.f64 x (+.f64 (*.f64 -1/3 (pow.f64 x 3)) (*.f64 2/15 (pow.f64 x 5)))) 1)
(if (<=.f64 x 2589569785738035/2251799813685248) (+.f64 x (*.f64 (pow.f64 x 3) -1/3)) 1)
(if (<=.f64 x 1) x 1)
1
Outputs
(if (<=.f64 (/.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))) 3602879701896397/9007199254740992) (/.f64 (+.f64 (*.f64 1/2520 (pow.f64 x 7)) (+.f64 (*.f64 1/60 (pow.f64 x 5)) (+.f64 (*.f64 1/3 (pow.f64 x 3)) (*.f64 2 x)))) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))) 1)
(if (<=.f64 (/.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))) 3602879701896397/9007199254740992) (/.f64 (+.f64 (*.f64 1/2520 (pow.f64 x 7)) (+.f64 (*.f64 1/60 (pow.f64 x 5)) (+.f64 (*.f64 1/3 (pow.f64 x 3)) (*.f64 x 2)))) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))) 1)
(if (<=.f64 (/.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))) 3602879701896397/9007199254740992) (+.f64 x (+.f64 (*.f64 -1/3 (pow.f64 x 3)) (+.f64 (*.f64 -17/315 (pow.f64 x 7)) (*.f64 2/15 (pow.f64 x 5))))) 1)
(if (<=.f64 (/.f64 (-.f64 (exp.f64 x) (exp.f64 (neg.f64 x))) (+.f64 (exp.f64 x) (exp.f64 (neg.f64 x)))) 3602879701896397/9007199254740992) (+.f64 x (+.f64 (*.f64 (pow.f64 x 3) -1/3) (+.f64 (*.f64 (pow.f64 x 7) -17/315) (*.f64 (pow.f64 x 5) 2/15)))) 1)
(if (<=.f64 x 5494391545392005/4503599627370496) (+.f64 x (+.f64 (*.f64 -1/3 (pow.f64 x 3)) (*.f64 2/15 (pow.f64 x 5)))) 1)
(if (<=.f64 x 5494391545392005/4503599627370496) (+.f64 x (+.f64 (*.f64 (pow.f64 x 3) -1/3) (*.f64 (pow.f64 x 5) 2/15))) 1)
(if (<=.f64 x 2589569785738035/2251799813685248) (+.f64 x (*.f64 (pow.f64 x 3) -1/3)) 1)
(if (<=.f64 x 1) x 1)
1
Compiler

Compiled 124 to 87 computations (29.8% saved)

soundness325.0ms (6.7%)

Rules
1894×times-frac
1530×fma-neg
1396×fma-def
1294×fma-def
1190×associate-*r*
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0931818
12041814
23451810
36941806
413511760
536461760
651991754
763851754
01570
120070
2348170
061822
1142817
2334811
3964807
43187807
55283807
67064807
Stop Event
node limit
unsound
node limit
Compiler

Compiled 52 to 31 computations (40.4% saved)

end0.0ms (0%)

preprocess79.0ms (1.6%)

Compiler

Compiled 450 to 282 computations (37.3% saved)

Profiling

Loading profile data...