expm1 (example 3.7)

Time bar (total: 1.5s)

analyze0.0ms (0%)

Algorithm
search
Search
ProbabilityValidUnknownPreconditionInfiniteDomainCan'tIter
0%0%74.6%25.4%0%0%0%0
100%74.6%0%25.4%0%0%0%1
Compiler

Compiled 8 to 6 computations (25% saved)

sample1.1s (75.5%)

Results
577.0ms2772×body1024valid
193.0ms2675×body256infinite
178.0ms1428×body512valid
86.0ms1101×body256valid
62.0ms280×body2048valid
Bogosity

preprocess14.0ms (1%)

Algorithm
egg-herbie
Rules
1-exp
expm1-def
sub-neg
+-commutative
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
075
1135
2145
011
Stop Event
saturated
saturated
Calls
Call 1
Inputs
0
Outputs
0
Call 2
Inputs
(-.f64 (exp.f64 x) 1)
Outputs
(-.f64 (exp.f64 x) 1)
(expm1.f64 x)
Compiler

Compiled 6 to 5 computations (16.7% saved)

simplify15.0ms (1%)

Algorithm
egg-herbie
Rules
1-exp
expm1-def
sub-neg
+-commutative
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
075
1135
2145
Stop Event
saturated
Counts
1 → 2
Calls
Call 1
Inputs
(-.f64 (exp.f64 x) 1)
Outputs
(-.f64 (exp.f64 x) 1)
(expm1.f64 x)

eval0.0ms (0%)

Compiler

Compiled 7 to 5 computations (28.6% saved)

prune2.0ms (0.1%)

Pruning

3 alts after pruning (3 fresh and 0 done)

PrunedKeptTotal
New022
Fresh011
Picked000
Done000
Total033
Accurracy
100.0%
Counts
3 → 2
Alt Table
Click to see full alt table
StatusAccuracyProgram
43.1%
(-.f64 (exp.f64 x) 1)
100.0%
(expm1.f64 x)
43.1%
(-.f64 (exp.f64 x) 1)
100.0%
(expm1.f64 x)
Compiler

Compiled 16 to 12 computations (25% saved)

localize88.0ms (6%)

Local Accuracy

Found 2 expressions with local accuracy:

NewAccuracyProgram
43.1%
(-.f64 (exp.f64 x) 1)
100.0%
(expm1.f64 x)
Compiler

Compiled 13 to 7 computations (46.2% saved)

series1.0ms (0.1%)

Counts
2 → 16
Calls

6 calls:

TimeVariablePointExpression
0.0ms
x
@0
(expm1.f64 x)
0.0ms
x
@inf
(expm1.f64 x)
0.0ms
x
@-inf
(expm1.f64 x)
0.0ms
x
@0
(-.f64 (exp.f64 x) 1)
0.0ms
x
@-inf
(-.f64 (exp.f64 x) 1)

rewrite87.0ms (6%)

Algorithm
batch-egg-rewrite
Rules
1272×pow1
1174×add-exp-log
1172×log1p-expm1-u
1170×expm1-log1p-u
1152×add-log-exp
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0810
115810
2166010
Stop Event
node limit
Counts
2 → 64
Calls
Call 1
Inputs
(expm1.f64 x)
(-.f64 (exp.f64 x) 1)
Outputs
(+.f64 (exp.f64 x) -1)
(+.f64 -1 (exp.f64 x))
(-.f64 (exp.f64 x) 1)
(-.f64 (/.f64 (pow.f64 (exp.f64 x) 3) (+.f64 (exp.f64 (+.f64 x x)) (+.f64 (exp.f64 x) 1))) (/.f64 1 (+.f64 (exp.f64 (+.f64 x x)) (+.f64 (exp.f64 x) 1))))
(-.f64 (/.f64 (exp.f64 (+.f64 x x)) (+.f64 (exp.f64 x) 1)) (/.f64 1 (+.f64 (exp.f64 x) 1)))
(*.f64 (expm1.f64 x) 1)
(*.f64 1 (expm1.f64 x))
(*.f64 (cbrt.f64 (expm1.f64 x)) (pow.f64 (cbrt.f64 (expm1.f64 x)) 2))
(*.f64 (pow.f64 (cbrt.f64 (expm1.f64 x)) 2) (cbrt.f64 (expm1.f64 x)))
(*.f64 (sqrt.f64 (expm1.f64 x)) (sqrt.f64 (expm1.f64 x)))
(*.f64 (+.f64 (pow.f64 (exp.f64 x) 3) -1) (/.f64 1 (+.f64 (exp.f64 (+.f64 x x)) (+.f64 (exp.f64 x) 1))))
(*.f64 (+.f64 (exp.f64 (+.f64 x x)) -1) (/.f64 1 (+.f64 (exp.f64 x) 1)))
(*.f64 (+.f64 (sqrt.f64 (exp.f64 x)) 1) (-.f64 (sqrt.f64 (exp.f64 x)) 1))
(/.f64 1 (/.f64 (+.f64 (exp.f64 (+.f64 x x)) (+.f64 (exp.f64 x) 1)) (+.f64 (pow.f64 (exp.f64 x) 3) -1)))
(/.f64 1 (/.f64 (+.f64 (exp.f64 x) 1) (+.f64 (exp.f64 (+.f64 x x)) -1)))
(/.f64 (+.f64 (pow.f64 (exp.f64 x) 3) -1) (+.f64 (exp.f64 (+.f64 x x)) (+.f64 (exp.f64 x) 1)))
(/.f64 (+.f64 (pow.f64 (exp.f64 x) 3) -1) (+.f64 (exp.f64 (+.f64 x x)) (-.f64 1 (*.f64 (exp.f64 x) -1))))
(/.f64 (+.f64 (exp.f64 (+.f64 x x)) -1) (+.f64 (exp.f64 x) 1))
(/.f64 (+.f64 (exp.f64 (+.f64 x x)) -1) (-.f64 (exp.f64 x) -1))
(/.f64 (neg.f64 (+.f64 (pow.f64 (exp.f64 x) 3) -1)) (neg.f64 (+.f64 (exp.f64 (+.f64 x x)) (+.f64 (exp.f64 x) 1))))
(/.f64 (neg.f64 (+.f64 (exp.f64 (+.f64 x x)) -1)) (neg.f64 (+.f64 (exp.f64 x) 1)))
(pow.f64 (expm1.f64 x) 1)
(pow.f64 (cbrt.f64 (expm1.f64 x)) 3)
(pow.f64 (pow.f64 (expm1.f64 x) 3) 1/3)
(pow.f64 (sqrt.f64 (expm1.f64 x)) 2)
(sqrt.f64 (pow.f64 (expm1.f64 x) 2))
(log.f64 (exp.f64 (expm1.f64 x)))
(cbrt.f64 (pow.f64 (expm1.f64 x) 3))
(exp.f64 (log.f64 (expm1.f64 x)))
(log1p.f64 (expm1.f64 (expm1.f64 x)))
(fma.f64 1 (exp.f64 x) -1)
(fma.f64 (cbrt.f64 (exp.f64 (+.f64 x x))) (cbrt.f64 (exp.f64 x)) -1)
(fma.f64 (sqrt.f64 (exp.f64 x)) (sqrt.f64 (exp.f64 x)) -1)
(+.f64 (exp.f64 x) -1)
(+.f64 -1 (exp.f64 x))
(*.f64 (expm1.f64 x) 1)
(*.f64 1 (expm1.f64 x))
(*.f64 (cbrt.f64 (expm1.f64 x)) (pow.f64 (cbrt.f64 (expm1.f64 x)) 2))
(*.f64 (pow.f64 (cbrt.f64 (expm1.f64 x)) 2) (cbrt.f64 (expm1.f64 x)))
(*.f64 (sqrt.f64 (expm1.f64 x)) (sqrt.f64 (expm1.f64 x)))
(*.f64 (+.f64 (pow.f64 (exp.f64 x) 3) -1) (/.f64 1 (+.f64 (exp.f64 (+.f64 x x)) (+.f64 (exp.f64 x) 1))))
(*.f64 (+.f64 (exp.f64 (+.f64 x x)) -1) (/.f64 1 (+.f64 (exp.f64 x) 1)))
(*.f64 (+.f64 (sqrt.f64 (exp.f64 x)) 1) (-.f64 (sqrt.f64 (exp.f64 x)) 1))
(/.f64 1 (/.f64 (+.f64 (exp.f64 (+.f64 x x)) (+.f64 (exp.f64 x) 1)) (+.f64 (pow.f64 (exp.f64 x) 3) -1)))
(/.f64 1 (/.f64 (+.f64 (exp.f64 x) 1) (+.f64 (exp.f64 (+.f64 x x)) -1)))
(/.f64 (+.f64 (pow.f64 (exp.f64 x) 3) -1) (+.f64 (exp.f64 (+.f64 x x)) (+.f64 (exp.f64 x) 1)))
(/.f64 (+.f64 (pow.f64 (exp.f64 x) 3) -1) (+.f64 (exp.f64 (+.f64 x x)) (-.f64 1 (*.f64 (exp.f64 x) -1))))
(/.f64 (+.f64 (exp.f64 (+.f64 x x)) -1) (+.f64 (exp.f64 x) 1))
(/.f64 (+.f64 (exp.f64 (+.f64 x x)) -1) (-.f64 (exp.f64 x) -1))
(/.f64 (neg.f64 (+.f64 (pow.f64 (exp.f64 x) 3) -1)) (neg.f64 (+.f64 (exp.f64 (+.f64 x x)) (+.f64 (exp.f64 x) 1))))
(/.f64 (neg.f64 (+.f64 (exp.f64 (+.f64 x x)) -1)) (neg.f64 (+.f64 (exp.f64 x) 1)))
(pow.f64 (expm1.f64 x) 1)
(pow.f64 (cbrt.f64 (expm1.f64 x)) 3)
(pow.f64 (pow.f64 (expm1.f64 x) 3) 1/3)
(pow.f64 (sqrt.f64 (expm1.f64 x)) 2)
(sqrt.f64 (pow.f64 (expm1.f64 x) 2))
(log.f64 (exp.f64 (expm1.f64 x)))
(cbrt.f64 (pow.f64 (expm1.f64 x) 3))
(expm1.f64 x)
(exp.f64 (log.f64 (expm1.f64 x)))
(log1p.f64 (expm1.f64 (expm1.f64 x)))
(fma.f64 1 (exp.f64 x) -1)
(fma.f64 (cbrt.f64 (exp.f64 (+.f64 x x))) (cbrt.f64 (exp.f64 x)) -1)
(fma.f64 (sqrt.f64 (exp.f64 x)) (sqrt.f64 (exp.f64 x)) -1)

simplify58.0ms (4%)

Algorithm
egg-herbie
Rules
1968×fma-def
844×div-sub
668×associate-*r*
590×associate-*l*
538×log-prod
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
0941424
12061424
26421028
33828938
Stop Event
node limit
Counts
80 → 51
Calls
Call 1
Inputs
x
(+.f64 (*.f64 1/2 (pow.f64 x 2)) x)
(+.f64 (*.f64 1/6 (pow.f64 x 3)) (+.f64 (*.f64 1/2 (pow.f64 x 2)) x))
(+.f64 (*.f64 1/6 (pow.f64 x 3)) (+.f64 (*.f64 1/2 (pow.f64 x 2)) (+.f64 (*.f64 1/24 (pow.f64 x 4)) x)))
(-.f64 (exp.f64 x) 1)
(-.f64 (exp.f64 x) 1)
(-.f64 (exp.f64 x) 1)
(-.f64 (exp.f64 x) 1)
(-.f64 (exp.f64 x) 1)
(-.f64 (exp.f64 x) 1)
(-.f64 (exp.f64 x) 1)
(-.f64 (exp.f64 x) 1)
x
(+.f64 (*.f64 1/2 (pow.f64 x 2)) x)
(+.f64 (*.f64 1/6 (pow.f64 x 3)) (+.f64 (*.f64 1/2 (pow.f64 x 2)) x))
(+.f64 (*.f64 1/6 (pow.f64 x 3)) (+.f64 (*.f64 1/2 (pow.f64 x 2)) (+.f64 (*.f64 1/24 (pow.f64 x 4)) x)))
(+.f64 (exp.f64 x) -1)
(+.f64 -1 (exp.f64 x))
(-.f64 (exp.f64 x) 1)
(-.f64 (/.f64 (pow.f64 (exp.f64 x) 3) (+.f64 (exp.f64 (+.f64 x x)) (+.f64 (exp.f64 x) 1))) (/.f64 1 (+.f64 (exp.f64 (+.f64 x x)) (+.f64 (exp.f64 x) 1))))
(-.f64 (/.f64 (exp.f64 (+.f64 x x)) (+.f64 (exp.f64 x) 1)) (/.f64 1 (+.f64 (exp.f64 x) 1)))
(*.f64 (expm1.f64 x) 1)
(*.f64 1 (expm1.f64 x))
(*.f64 (cbrt.f64 (expm1.f64 x)) (pow.f64 (cbrt.f64 (expm1.f64 x)) 2))
(*.f64 (pow.f64 (cbrt.f64 (expm1.f64 x)) 2) (cbrt.f64 (expm1.f64 x)))
(*.f64 (sqrt.f64 (expm1.f64 x)) (sqrt.f64 (expm1.f64 x)))
(*.f64 (+.f64 (pow.f64 (exp.f64 x) 3) -1) (/.f64 1 (+.f64 (exp.f64 (+.f64 x x)) (+.f64 (exp.f64 x) 1))))
(*.f64 (+.f64 (exp.f64 (+.f64 x x)) -1) (/.f64 1 (+.f64 (exp.f64 x) 1)))
(*.f64 (+.f64 (sqrt.f64 (exp.f64 x)) 1) (-.f64 (sqrt.f64 (exp.f64 x)) 1))
(/.f64 1 (/.f64 (+.f64 (exp.f64 (+.f64 x x)) (+.f64 (exp.f64 x) 1)) (+.f64 (pow.f64 (exp.f64 x) 3) -1)))
(/.f64 1 (/.f64 (+.f64 (exp.f64 x) 1) (+.f64 (exp.f64 (+.f64 x x)) -1)))
(/.f64 (+.f64 (pow.f64 (exp.f64 x) 3) -1) (+.f64 (exp.f64 (+.f64 x x)) (+.f64 (exp.f64 x) 1)))
(/.f64 (+.f64 (pow.f64 (exp.f64 x) 3) -1) (+.f64 (exp.f64 (+.f64 x x)) (-.f64 1 (*.f64 (exp.f64 x) -1))))
(/.f64 (+.f64 (exp.f64 (+.f64 x x)) -1) (+.f64 (exp.f64 x) 1))
(/.f64 (+.f64 (exp.f64 (+.f64 x x)) -1) (-.f64 (exp.f64 x) -1))
(/.f64 (neg.f64 (+.f64 (pow.f64 (exp.f64 x) 3) -1)) (neg.f64 (+.f64 (exp.f64 (+.f64 x x)) (+.f64 (exp.f64 x) 1))))
(/.f64 (neg.f64 (+.f64 (exp.f64 (+.f64 x x)) -1)) (neg.f64 (+.f64 (exp.f64 x) 1)))
(pow.f64 (expm1.f64 x) 1)
(pow.f64 (cbrt.f64 (expm1.f64 x)) 3)
(pow.f64 (pow.f64 (expm1.f64 x) 3) 1/3)
(pow.f64 (sqrt.f64 (expm1.f64 x)) 2)
(sqrt.f64 (pow.f64 (expm1.f64 x) 2))
(log.f64 (exp.f64 (expm1.f64 x)))
(cbrt.f64 (pow.f64 (expm1.f64 x) 3))
(exp.f64 (log.f64 (expm1.f64 x)))
(log1p.f64 (expm1.f64 (expm1.f64 x)))
(fma.f64 1 (exp.f64 x) -1)
(fma.f64 (cbrt.f64 (exp.f64 (+.f64 x x))) (cbrt.f64 (exp.f64 x)) -1)
(fma.f64 (sqrt.f64 (exp.f64 x)) (sqrt.f64 (exp.f64 x)) -1)
(+.f64 (exp.f64 x) -1)
(+.f64 -1 (exp.f64 x))
(*.f64 (expm1.f64 x) 1)
(*.f64 1 (expm1.f64 x))
(*.f64 (cbrt.f64 (expm1.f64 x)) (pow.f64 (cbrt.f64 (expm1.f64 x)) 2))
(*.f64 (pow.f64 (cbrt.f64 (expm1.f64 x)) 2) (cbrt.f64 (expm1.f64 x)))
(*.f64 (sqrt.f64 (expm1.f64 x)) (sqrt.f64 (expm1.f64 x)))
(*.f64 (+.f64 (pow.f64 (exp.f64 x) 3) -1) (/.f64 1 (+.f64 (exp.f64 (+.f64 x x)) (+.f64 (exp.f64 x) 1))))
(*.f64 (+.f64 (exp.f64 (+.f64 x x)) -1) (/.f64 1 (+.f64 (exp.f64 x) 1)))
(*.f64 (+.f64 (sqrt.f64 (exp.f64 x)) 1) (-.f64 (sqrt.f64 (exp.f64 x)) 1))
(/.f64 1 (/.f64 (+.f64 (exp.f64 (+.f64 x x)) (+.f64 (exp.f64 x) 1)) (+.f64 (pow.f64 (exp.f64 x) 3) -1)))
(/.f64 1 (/.f64 (+.f64 (exp.f64 x) 1) (+.f64 (exp.f64 (+.f64 x x)) -1)))
(/.f64 (+.f64 (pow.f64 (exp.f64 x) 3) -1) (+.f64 (exp.f64 (+.f64 x x)) (+.f64 (exp.f64 x) 1)))
(/.f64 (+.f64 (pow.f64 (exp.f64 x) 3) -1) (+.f64 (exp.f64 (+.f64 x x)) (-.f64 1 (*.f64 (exp.f64 x) -1))))
(/.f64 (+.f64 (exp.f64 (+.f64 x x)) -1) (+.f64 (exp.f64 x) 1))
(/.f64 (+.f64 (exp.f64 (+.f64 x x)) -1) (-.f64 (exp.f64 x) -1))
(/.f64 (neg.f64 (+.f64 (pow.f64 (exp.f64 x) 3) -1)) (neg.f64 (+.f64 (exp.f64 (+.f64 x x)) (+.f64 (exp.f64 x) 1))))
(/.f64 (neg.f64 (+.f64 (exp.f64 (+.f64 x x)) -1)) (neg.f64 (+.f64 (exp.f64 x) 1)))
(pow.f64 (expm1.f64 x) 1)
(pow.f64 (cbrt.f64 (expm1.f64 x)) 3)
(pow.f64 (pow.f64 (expm1.f64 x) 3) 1/3)
(pow.f64 (sqrt.f64 (expm1.f64 x)) 2)
(sqrt.f64 (pow.f64 (expm1.f64 x) 2))
(log.f64 (exp.f64 (expm1.f64 x)))
(cbrt.f64 (pow.f64 (expm1.f64 x) 3))
(expm1.f64 x)
(exp.f64 (log.f64 (expm1.f64 x)))
(log1p.f64 (expm1.f64 (expm1.f64 x)))
(fma.f64 1 (exp.f64 x) -1)
(fma.f64 (cbrt.f64 (exp.f64 (+.f64 x x))) (cbrt.f64 (exp.f64 x)) -1)
(fma.f64 (sqrt.f64 (exp.f64 x)) (sqrt.f64 (exp.f64 x)) -1)
Outputs
x
(+.f64 (*.f64 1/2 (pow.f64 x 2)) x)
(fma.f64 1/2 (*.f64 x x) x)
(fma.f64 x (*.f64 x 1/2) x)
(*.f64 (fma.f64 x 1/2 1) x)
(+.f64 (*.f64 1/6 (pow.f64 x 3)) (+.f64 (*.f64 1/2 (pow.f64 x 2)) x))
(fma.f64 1/6 (pow.f64 x 3) (fma.f64 1/2 (*.f64 x x) x))
(fma.f64 x (*.f64 x 1/2) (fma.f64 1/6 (pow.f64 x 3) x))
(fma.f64 x (*.f64 x (fma.f64 x 1/6 1/2)) x)
(+.f64 (*.f64 1/6 (pow.f64 x 3)) (+.f64 (*.f64 1/2 (pow.f64 x 2)) (+.f64 (*.f64 1/24 (pow.f64 x 4)) x)))
(fma.f64 1/6 (pow.f64 x 3) (fma.f64 1/2 (*.f64 x x) (fma.f64 1/24 (pow.f64 x 4) x)))
(fma.f64 1/6 (pow.f64 x 3) (fma.f64 x (*.f64 x 1/2) (fma.f64 1/24 (pow.f64 x 4) x)))
(fma.f64 x (*.f64 x (fma.f64 x 1/6 1/2)) (fma.f64 1/24 (pow.f64 x 4) x))
(-.f64 (exp.f64 x) 1)
(expm1.f64 x)
(-.f64 (exp.f64 x) 1)
(expm1.f64 x)
(-.f64 (exp.f64 x) 1)
(expm1.f64 x)
(-.f64 (exp.f64 x) 1)
(expm1.f64 x)
(-.f64 (exp.f64 x) 1)
(expm1.f64 x)
(-.f64 (exp.f64 x) 1)
(expm1.f64 x)
(-.f64 (exp.f64 x) 1)
(expm1.f64 x)
(-.f64 (exp.f64 x) 1)
(expm1.f64 x)
x
(+.f64 (*.f64 1/2 (pow.f64 x 2)) x)
(fma.f64 1/2 (*.f64 x x) x)
(fma.f64 x (*.f64 x 1/2) x)
(*.f64 (fma.f64 x 1/2 1) x)
(+.f64 (*.f64 1/6 (pow.f64 x 3)) (+.f64 (*.f64 1/2 (pow.f64 x 2)) x))
(fma.f64 1/6 (pow.f64 x 3) (fma.f64 1/2 (*.f64 x x) x))
(fma.f64 x (*.f64 x 1/2) (fma.f64 1/6 (pow.f64 x 3) x))
(fma.f64 x (*.f64 x (fma.f64 x 1/6 1/2)) x)
(+.f64 (*.f64 1/6 (pow.f64 x 3)) (+.f64 (*.f64 1/2 (pow.f64 x 2)) (+.f64 (*.f64 1/24 (pow.f64 x 4)) x)))
(fma.f64 1/6 (pow.f64 x 3) (fma.f64 1/2 (*.f64 x x) (fma.f64 1/24 (pow.f64 x 4) x)))
(fma.f64 1/6 (pow.f64 x 3) (fma.f64 x (*.f64 x 1/2) (fma.f64 1/24 (pow.f64 x 4) x)))
(fma.f64 x (*.f64 x (fma.f64 x 1/6 1/2)) (fma.f64 1/24 (pow.f64 x 4) x))
(+.f64 (exp.f64 x) -1)
(expm1.f64 x)
(+.f64 -1 (exp.f64 x))
(expm1.f64 x)
(-.f64 (exp.f64 x) 1)
(expm1.f64 x)
(-.f64 (/.f64 (pow.f64 (exp.f64 x) 3) (+.f64 (exp.f64 (+.f64 x x)) (+.f64 (exp.f64 x) 1))) (/.f64 1 (+.f64 (exp.f64 (+.f64 x x)) (+.f64 (exp.f64 x) 1))))
(+.f64 (/.f64 (pow.f64 (exp.f64 x) 3) (+.f64 (exp.f64 x) (+.f64 1 (exp.f64 (+.f64 x x))))) (/.f64 -1 (+.f64 (exp.f64 x) (+.f64 1 (exp.f64 (+.f64 x x))))))
(/.f64 (+.f64 -1 (pow.f64 (exp.f64 x) 3)) (fma.f64 (+.f64 (exp.f64 x) 1) (exp.f64 x) 1))
(/.f64 (expm1.f64 (*.f64 3 x)) (fma.f64 (exp.f64 x) (+.f64 (exp.f64 x) 1) 1))
(-.f64 (/.f64 (exp.f64 (+.f64 x x)) (+.f64 (exp.f64 x) 1)) (/.f64 1 (+.f64 (exp.f64 x) 1)))
(expm1.f64 x)
(*.f64 (expm1.f64 x) 1)
(expm1.f64 x)
(*.f64 1 (expm1.f64 x))
(expm1.f64 x)
(*.f64 (cbrt.f64 (expm1.f64 x)) (pow.f64 (cbrt.f64 (expm1.f64 x)) 2))
(expm1.f64 x)
(*.f64 (pow.f64 (cbrt.f64 (expm1.f64 x)) 2) (cbrt.f64 (expm1.f64 x)))
(expm1.f64 x)
(*.f64 (sqrt.f64 (expm1.f64 x)) (sqrt.f64 (expm1.f64 x)))
(expm1.f64 x)
(*.f64 (+.f64 (pow.f64 (exp.f64 x) 3) -1) (/.f64 1 (+.f64 (exp.f64 (+.f64 x x)) (+.f64 (exp.f64 x) 1))))
(-.f64 (/.f64 (pow.f64 (exp.f64 x) 3) (+.f64 (exp.f64 (+.f64 x x)) (+.f64 (exp.f64 x) 1))) (/.f64 1 (+.f64 (exp.f64 (+.f64 x x)) (+.f64 (exp.f64 x) 1))))
(+.f64 (/.f64 (pow.f64 (exp.f64 x) 3) (+.f64 (exp.f64 x) (+.f64 1 (exp.f64 (+.f64 x x))))) (/.f64 -1 (+.f64 (exp.f64 x) (+.f64 1 (exp.f64 (+.f64 x x))))))
(/.f64 (+.f64 -1 (pow.f64 (exp.f64 x) 3)) (fma.f64 (+.f64 (exp.f64 x) 1) (exp.f64 x) 1))
(/.f64 (expm1.f64 (*.f64 3 x)) (fma.f64 (exp.f64 x) (+.f64 (exp.f64 x) 1) 1))
(*.f64 (+.f64 (exp.f64 (+.f64 x x)) -1) (/.f64 1 (+.f64 (exp.f64 x) 1)))
(expm1.f64 x)
(*.f64 (+.f64 (sqrt.f64 (exp.f64 x)) 1) (-.f64 (sqrt.f64 (exp.f64 x)) 1))
(expm1.f64 x)
(/.f64 1 (/.f64 (+.f64 (exp.f64 (+.f64 x x)) (+.f64 (exp.f64 x) 1)) (+.f64 (pow.f64 (exp.f64 x) 3) -1)))
(-.f64 (/.f64 (pow.f64 (exp.f64 x) 3) (+.f64 (exp.f64 (+.f64 x x)) (+.f64 (exp.f64 x) 1))) (/.f64 1 (+.f64 (exp.f64 (+.f64 x x)) (+.f64 (exp.f64 x) 1))))
(+.f64 (/.f64 (pow.f64 (exp.f64 x) 3) (+.f64 (exp.f64 x) (+.f64 1 (exp.f64 (+.f64 x x))))) (/.f64 -1 (+.f64 (exp.f64 x) (+.f64 1 (exp.f64 (+.f64 x x))))))
(/.f64 (+.f64 -1 (pow.f64 (exp.f64 x) 3)) (fma.f64 (+.f64 (exp.f64 x) 1) (exp.f64 x) 1))
(/.f64 (expm1.f64 (*.f64 3 x)) (fma.f64 (exp.f64 x) (+.f64 (exp.f64 x) 1) 1))
(/.f64 1 (/.f64 (+.f64 (exp.f64 x) 1) (+.f64 (exp.f64 (+.f64 x x)) -1)))
(expm1.f64 x)
(/.f64 (+.f64 (pow.f64 (exp.f64 x) 3) -1) (+.f64 (exp.f64 (+.f64 x x)) (+.f64 (exp.f64 x) 1)))
(-.f64 (/.f64 (pow.f64 (exp.f64 x) 3) (+.f64 (exp.f64 (+.f64 x x)) (+.f64 (exp.f64 x) 1))) (/.f64 1 (+.f64 (exp.f64 (+.f64 x x)) (+.f64 (exp.f64 x) 1))))
(+.f64 (/.f64 (pow.f64 (exp.f64 x) 3) (+.f64 (exp.f64 x) (+.f64 1 (exp.f64 (+.f64 x x))))) (/.f64 -1 (+.f64 (exp.f64 x) (+.f64 1 (exp.f64 (+.f64 x x))))))
(/.f64 (+.f64 -1 (pow.f64 (exp.f64 x) 3)) (fma.f64 (+.f64 (exp.f64 x) 1) (exp.f64 x) 1))
(/.f64 (expm1.f64 (*.f64 3 x)) (fma.f64 (exp.f64 x) (+.f64 (exp.f64 x) 1) 1))
(/.f64 (+.f64 (pow.f64 (exp.f64 x) 3) -1) (+.f64 (exp.f64 (+.f64 x x)) (-.f64 1 (*.f64 (exp.f64 x) -1))))
(-.f64 (/.f64 (pow.f64 (exp.f64 x) 3) (+.f64 (exp.f64 (+.f64 x x)) (+.f64 (exp.f64 x) 1))) (/.f64 1 (+.f64 (exp.f64 (+.f64 x x)) (+.f64 (exp.f64 x) 1))))
(+.f64 (/.f64 (pow.f64 (exp.f64 x) 3) (+.f64 (exp.f64 x) (+.f64 1 (exp.f64 (+.f64 x x))))) (/.f64 -1 (+.f64 (exp.f64 x) (+.f64 1 (exp.f64 (+.f64 x x))))))
(/.f64 (+.f64 -1 (pow.f64 (exp.f64 x) 3)) (fma.f64 (+.f64 (exp.f64 x) 1) (exp.f64 x) 1))
(/.f64 (expm1.f64 (*.f64 3 x)) (fma.f64 (exp.f64 x) (+.f64 (exp.f64 x) 1) 1))
(/.f64 (+.f64 (exp.f64 (+.f64 x x)) -1) (+.f64 (exp.f64 x) 1))
(expm1.f64 x)
(/.f64 (+.f64 (exp.f64 (+.f64 x x)) -1) (-.f64 (exp.f64 x) -1))
(expm1.f64 x)
(/.f64 (neg.f64 (+.f64 (pow.f64 (exp.f64 x) 3) -1)) (neg.f64 (+.f64 (exp.f64 (+.f64 x x)) (+.f64 (exp.f64 x) 1))))
(-.f64 (/.f64 (pow.f64 (exp.f64 x) 3) (+.f64 (exp.f64 (+.f64 x x)) (+.f64 (exp.f64 x) 1))) (/.f64 1 (+.f64 (exp.f64 (+.f64 x x)) (+.f64 (exp.f64 x) 1))))
(+.f64 (/.f64 (pow.f64 (exp.f64 x) 3) (+.f64 (exp.f64 x) (+.f64 1 (exp.f64 (+.f64 x x))))) (/.f64 -1 (+.f64 (exp.f64 x) (+.f64 1 (exp.f64 (+.f64 x x))))))
(/.f64 (+.f64 -1 (pow.f64 (exp.f64 x) 3)) (fma.f64 (+.f64 (exp.f64 x) 1) (exp.f64 x) 1))
(/.f64 (expm1.f64 (*.f64 3 x)) (fma.f64 (exp.f64 x) (+.f64 (exp.f64 x) 1) 1))
(/.f64 (neg.f64 (+.f64 (exp.f64 (+.f64 x x)) -1)) (neg.f64 (+.f64 (exp.f64 x) 1)))
(expm1.f64 x)
(pow.f64 (expm1.f64 x) 1)
(expm1.f64 x)
(pow.f64 (cbrt.f64 (expm1.f64 x)) 3)
(expm1.f64 x)
(pow.f64 (pow.f64 (expm1.f64 x) 3) 1/3)
(expm1.f64 x)
(pow.f64 (sqrt.f64 (expm1.f64 x)) 2)
(expm1.f64 x)
(sqrt.f64 (pow.f64 (expm1.f64 x) 2))
(expm1.f64 x)
(log.f64 (exp.f64 (expm1.f64 x)))
(expm1.f64 x)
(cbrt.f64 (pow.f64 (expm1.f64 x) 3))
(expm1.f64 x)
(exp.f64 (log.f64 (expm1.f64 x)))
(expm1.f64 x)
(log1p.f64 (expm1.f64 (expm1.f64 x)))
(expm1.f64 x)
(fma.f64 1 (exp.f64 x) -1)
(expm1.f64 x)
(fma.f64 (cbrt.f64 (exp.f64 (+.f64 x x))) (cbrt.f64 (exp.f64 x)) -1)
(fma.f64 (cbrt.f64 (pow.f64 (exp.f64 x) 2)) (cbrt.f64 (exp.f64 x)) -1)
(fma.f64 (sqrt.f64 (exp.f64 x)) (sqrt.f64 (exp.f64 x)) -1)
(expm1.f64 x)
(+.f64 (exp.f64 x) -1)
(expm1.f64 x)
(+.f64 -1 (exp.f64 x))
(expm1.f64 x)
(*.f64 (expm1.f64 x) 1)
(expm1.f64 x)
(*.f64 1 (expm1.f64 x))
(expm1.f64 x)
(*.f64 (cbrt.f64 (expm1.f64 x)) (pow.f64 (cbrt.f64 (expm1.f64 x)) 2))
(expm1.f64 x)
(*.f64 (pow.f64 (cbrt.f64 (expm1.f64 x)) 2) (cbrt.f64 (expm1.f64 x)))
(expm1.f64 x)
(*.f64 (sqrt.f64 (expm1.f64 x)) (sqrt.f64 (expm1.f64 x)))
(expm1.f64 x)
(*.f64 (+.f64 (pow.f64 (exp.f64 x) 3) -1) (/.f64 1 (+.f64 (exp.f64 (+.f64 x x)) (+.f64 (exp.f64 x) 1))))
(-.f64 (/.f64 (pow.f64 (exp.f64 x) 3) (+.f64 (exp.f64 (+.f64 x x)) (+.f64 (exp.f64 x) 1))) (/.f64 1 (+.f64 (exp.f64 (+.f64 x x)) (+.f64 (exp.f64 x) 1))))
(+.f64 (/.f64 (pow.f64 (exp.f64 x) 3) (+.f64 (exp.f64 x) (+.f64 1 (exp.f64 (+.f64 x x))))) (/.f64 -1 (+.f64 (exp.f64 x) (+.f64 1 (exp.f64 (+.f64 x x))))))
(/.f64 (+.f64 -1 (pow.f64 (exp.f64 x) 3)) (fma.f64 (+.f64 (exp.f64 x) 1) (exp.f64 x) 1))
(/.f64 (expm1.f64 (*.f64 3 x)) (fma.f64 (exp.f64 x) (+.f64 (exp.f64 x) 1) 1))
(*.f64 (+.f64 (exp.f64 (+.f64 x x)) -1) (/.f64 1 (+.f64 (exp.f64 x) 1)))
(expm1.f64 x)
(*.f64 (+.f64 (sqrt.f64 (exp.f64 x)) 1) (-.f64 (sqrt.f64 (exp.f64 x)) 1))
(expm1.f64 x)
(/.f64 1 (/.f64 (+.f64 (exp.f64 (+.f64 x x)) (+.f64 (exp.f64 x) 1)) (+.f64 (pow.f64 (exp.f64 x) 3) -1)))
(-.f64 (/.f64 (pow.f64 (exp.f64 x) 3) (+.f64 (exp.f64 (+.f64 x x)) (+.f64 (exp.f64 x) 1))) (/.f64 1 (+.f64 (exp.f64 (+.f64 x x)) (+.f64 (exp.f64 x) 1))))
(+.f64 (/.f64 (pow.f64 (exp.f64 x) 3) (+.f64 (exp.f64 x) (+.f64 1 (exp.f64 (+.f64 x x))))) (/.f64 -1 (+.f64 (exp.f64 x) (+.f64 1 (exp.f64 (+.f64 x x))))))
(/.f64 (+.f64 -1 (pow.f64 (exp.f64 x) 3)) (fma.f64 (+.f64 (exp.f64 x) 1) (exp.f64 x) 1))
(/.f64 (expm1.f64 (*.f64 3 x)) (fma.f64 (exp.f64 x) (+.f64 (exp.f64 x) 1) 1))
(/.f64 1 (/.f64 (+.f64 (exp.f64 x) 1) (+.f64 (exp.f64 (+.f64 x x)) -1)))
(expm1.f64 x)
(/.f64 (+.f64 (pow.f64 (exp.f64 x) 3) -1) (+.f64 (exp.f64 (+.f64 x x)) (+.f64 (exp.f64 x) 1)))
(-.f64 (/.f64 (pow.f64 (exp.f64 x) 3) (+.f64 (exp.f64 (+.f64 x x)) (+.f64 (exp.f64 x) 1))) (/.f64 1 (+.f64 (exp.f64 (+.f64 x x)) (+.f64 (exp.f64 x) 1))))
(+.f64 (/.f64 (pow.f64 (exp.f64 x) 3) (+.f64 (exp.f64 x) (+.f64 1 (exp.f64 (+.f64 x x))))) (/.f64 -1 (+.f64 (exp.f64 x) (+.f64 1 (exp.f64 (+.f64 x x))))))
(/.f64 (+.f64 -1 (pow.f64 (exp.f64 x) 3)) (fma.f64 (+.f64 (exp.f64 x) 1) (exp.f64 x) 1))
(/.f64 (expm1.f64 (*.f64 3 x)) (fma.f64 (exp.f64 x) (+.f64 (exp.f64 x) 1) 1))
(/.f64 (+.f64 (pow.f64 (exp.f64 x) 3) -1) (+.f64 (exp.f64 (+.f64 x x)) (-.f64 1 (*.f64 (exp.f64 x) -1))))
(-.f64 (/.f64 (pow.f64 (exp.f64 x) 3) (+.f64 (exp.f64 (+.f64 x x)) (+.f64 (exp.f64 x) 1))) (/.f64 1 (+.f64 (exp.f64 (+.f64 x x)) (+.f64 (exp.f64 x) 1))))
(+.f64 (/.f64 (pow.f64 (exp.f64 x) 3) (+.f64 (exp.f64 x) (+.f64 1 (exp.f64 (+.f64 x x))))) (/.f64 -1 (+.f64 (exp.f64 x) (+.f64 1 (exp.f64 (+.f64 x x))))))
(/.f64 (+.f64 -1 (pow.f64 (exp.f64 x) 3)) (fma.f64 (+.f64 (exp.f64 x) 1) (exp.f64 x) 1))
(/.f64 (expm1.f64 (*.f64 3 x)) (fma.f64 (exp.f64 x) (+.f64 (exp.f64 x) 1) 1))
(/.f64 (+.f64 (exp.f64 (+.f64 x x)) -1) (+.f64 (exp.f64 x) 1))
(expm1.f64 x)
(/.f64 (+.f64 (exp.f64 (+.f64 x x)) -1) (-.f64 (exp.f64 x) -1))
(expm1.f64 x)
(/.f64 (neg.f64 (+.f64 (pow.f64 (exp.f64 x) 3) -1)) (neg.f64 (+.f64 (exp.f64 (+.f64 x x)) (+.f64 (exp.f64 x) 1))))
(-.f64 (/.f64 (pow.f64 (exp.f64 x) 3) (+.f64 (exp.f64 (+.f64 x x)) (+.f64 (exp.f64 x) 1))) (/.f64 1 (+.f64 (exp.f64 (+.f64 x x)) (+.f64 (exp.f64 x) 1))))
(+.f64 (/.f64 (pow.f64 (exp.f64 x) 3) (+.f64 (exp.f64 x) (+.f64 1 (exp.f64 (+.f64 x x))))) (/.f64 -1 (+.f64 (exp.f64 x) (+.f64 1 (exp.f64 (+.f64 x x))))))
(/.f64 (+.f64 -1 (pow.f64 (exp.f64 x) 3)) (fma.f64 (+.f64 (exp.f64 x) 1) (exp.f64 x) 1))
(/.f64 (expm1.f64 (*.f64 3 x)) (fma.f64 (exp.f64 x) (+.f64 (exp.f64 x) 1) 1))
(/.f64 (neg.f64 (+.f64 (exp.f64 (+.f64 x x)) -1)) (neg.f64 (+.f64 (exp.f64 x) 1)))
(expm1.f64 x)
(pow.f64 (expm1.f64 x) 1)
(expm1.f64 x)
(pow.f64 (cbrt.f64 (expm1.f64 x)) 3)
(expm1.f64 x)
(pow.f64 (pow.f64 (expm1.f64 x) 3) 1/3)
(expm1.f64 x)
(pow.f64 (sqrt.f64 (expm1.f64 x)) 2)
(expm1.f64 x)
(sqrt.f64 (pow.f64 (expm1.f64 x) 2))
(expm1.f64 x)
(log.f64 (exp.f64 (expm1.f64 x)))
(expm1.f64 x)
(cbrt.f64 (pow.f64 (expm1.f64 x) 3))
(expm1.f64 x)
(expm1.f64 x)
(exp.f64 (log.f64 (expm1.f64 x)))
(expm1.f64 x)
(log1p.f64 (expm1.f64 (expm1.f64 x)))
(expm1.f64 x)
(fma.f64 1 (exp.f64 x) -1)
(expm1.f64 x)
(fma.f64 (cbrt.f64 (exp.f64 (+.f64 x x))) (cbrt.f64 (exp.f64 x)) -1)
(fma.f64 (cbrt.f64 (pow.f64 (exp.f64 x) 2)) (cbrt.f64 (exp.f64 x)) -1)
(fma.f64 (sqrt.f64 (exp.f64 x)) (sqrt.f64 (exp.f64 x)) -1)
(expm1.f64 x)

eval10.0ms (0.7%)

Compiler

Compiled 514 to 282 computations (45.1% saved)

prune8.0ms (0.5%)

Pruning

3 alts after pruning (1 fresh and 2 done)

PrunedKeptTotal
New50151
Fresh000
Picked022
Done000
Total50353
Accurracy
100.0%
Counts
53 → 3
Alt Table
Click to see full alt table
StatusAccuracyProgram
43.1%
(-.f64 (exp.f64 x) 1)
100.0%
(expm1.f64 x)
63.1%
x
43.1%
(-.f64 (exp.f64 x) 1)
100.0%
(expm1.f64 x)
63.1%
x
Compiler

Compiled 20 to 14 computations (30% saved)

localize0.0ms (0%)

eval0.0ms (0%)

Compiler

Compiled 1 to 1 computations (0% saved)

prune2.0ms (0.1%)

Pruning

3 alts after pruning (1 fresh and 2 done)

PrunedKeptTotal
New000
Fresh011
Picked000
Done022
Total033
Accurracy
100.0%
Counts
3 → 3
Alt Table
Click to see full alt table
StatusAccuracyProgram
43.1%
(-.f64 (exp.f64 x) 1)
100.0%
(expm1.f64 x)
63.1%
x
43.1%
(-.f64 (exp.f64 x) 1)
100.0%
(expm1.f64 x)
63.1%
x
Compiler

Compiled 20 to 14 computations (30% saved)

localize0.0ms (0%)

eval0.0ms (0%)

Compiler

Compiled 1 to 1 computations (0% saved)

prune2.0ms (0.1%)

Pruning

3 alts after pruning (1 fresh and 2 done)

PrunedKeptTotal
New000
Fresh011
Picked000
Done022
Total033
Accurracy
100.0%
Counts
3 → 3
Alt Table
Click to see full alt table
StatusAccuracyProgram
43.1%
(-.f64 (exp.f64 x) 1)
100.0%
(expm1.f64 x)
63.1%
x
43.1%
(-.f64 (exp.f64 x) 1)
100.0%
(expm1.f64 x)
63.1%
x
Compiler

Compiled 20 to 14 computations (30% saved)

localize0.0ms (0%)

eval0.0ms (0%)

Compiler

Compiled 1 to 1 computations (0% saved)

prune2.0ms (0.1%)

Pruning

3 alts after pruning (1 fresh and 2 done)

PrunedKeptTotal
New000
Fresh011
Picked000
Done022
Total033
Accurracy
100.0%
Counts
3 → 3
Alt Table
Click to see full alt table
StatusAccuracyProgram
43.1%
(-.f64 (exp.f64 x) 1)
100.0%
(expm1.f64 x)
63.1%
x
Compiler

Compiled 18 to 12 computations (33.3% saved)

regimes8.0ms (0.5%)

Counts
3 → 1
Calls
Call 1
Inputs
x
(expm1.f64 x)
(-.f64 (exp.f64 x) 1)
Outputs
(expm1.f64 x)
Calls

3 calls:

3.0ms
x
2.0ms
(-.f64 (exp.f64 x) 1)
2.0ms
(exp.f64 x)
Results
AccuracySegmentsBranch
100.0%1x
100.0%1(-.f64 (exp.f64 x) 1)
100.0%1(exp.f64 x)
Compiler

Compiled 18 to 12 computations (33.3% saved)

regimes3.0ms (0.2%)

Accuracy

Total 0.0b remaining (0%)

Threshold costs 0b (0%)

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

1 calls:

2.0ms
x
Results
AccuracySegmentsBranch
63.1%1x
Compiler

Compiled 4 to 2 computations (50% saved)

simplify7.0ms (0.5%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

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

Compiled 5 to 3 computations (40% saved)

soundness13.0ms (0.9%)

Rules
1-exp
expm1-def
sub-neg
+-commutative
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
075
1135
2145
Stop Event
saturated
Compiler

Compiled 7 to 5 computations (28.6% saved)

end39.0ms (2.7%)

Compiler

Compiled 46 to 32 computations (30.4% saved)

Profiling

Loading profile data...