Kahan's exp quotient

Time bar (total: 1.6s)

analyze1.0ms (0.1%)

Algorithm
search
Search
ProbabilityValidUnknownPreconditionInfiniteDomainCan'tIter
0%0%100%0%0%0%0%0
0%0%100%0%0%0%0%1
50%50%50%0%0%0%0%2
75%75%25%0%0%0%0%3
87.5%87.5%12.5%0%0%0%0%4
93.8%93.7%6.2%0%0%0%0%5
96.9%96.8%3.1%0%0%0%0%6
98.4%98.4%1.6%0%0%0%0%7
99.2%99.2%0.8%0%0%0%0%8
99.6%99.6%0.4%0%0%0%0%9
99.8%99.8%0.2%0%0%0%0%10
99.9%99.9%0.1%0%0%0%0%11
100%99.9%0%0%0%0%0%12
Compiler

Compiled 8 to 6 computations (25% saved)

sample1.2s (73.2%)

Results
466.0ms2083×body1024valid
249.0ms2901×body256valid
202.0ms2052×body256infinite
153.0ms1021×body512valid
49.0ms199×body2048valid
Bogosity

preprocess56.0ms (3.5%)

Algorithm
egg-herbie
Rules
1290×div-sub
1216×fma-neg
1162×fma-def
906×cancel-sign-sub-inv
870×associate-/r*
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01230
12930
24730
37930
418530
554330
6163530
7579730
Stop Event
node limit
Calls
Call 1
Inputs
(/.f64 (-.f64 (exp.f64 x) 1) x)
(/.f64 (-.f64 (exp.f64 (neg.f64 x)) 1) (neg.f64 x))
Outputs
(/.f64 (-.f64 (exp.f64 x) 1) x)
(/.f64 (expm1.f64 x) x)
(/.f64 (-.f64 (exp.f64 (neg.f64 x)) 1) (neg.f64 x))
(/.f64 (expm1.f64 (neg.f64 x)) (neg.f64 x))
Compiler

Compiled 8 to 6 computations (25% saved)

simplify21.0ms (1.3%)

Algorithm
egg-herbie
Rules
336×fma-def
68×distribute-rgt-in
52×distribute-lft-in
40×sub-neg
40×associate-/r*
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0811
11711
22011
32411
43311
54311
66211
710311
814711
922511
1034711
1153111
1260311
1363911
Stop Event
saturated
Counts
1 → 2
Calls
Call 1
Inputs
(/.f64 (-.f64 (exp.f64 x) 1) x)
Outputs
(/.f64 (-.f64 (exp.f64 x) 1) x)
(/.f64 (expm1.f64 x) x)

eval0.0ms (0%)

Compiler

Compiled 11 to 7 computations (36.4% saved)

prune1.0ms (0.1%)

Pruning

1 alts after pruning (1 fresh and 0 done)

PrunedKeptTotal
New112
Fresh101
Picked000
Done000
Total213
Accurracy
100.0%
Counts
3 → 1
Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(/.f64 (expm1.f64 x) x)
100.0%
(/.f64 (expm1.f64 x) x)
Compiler

Compiled 10 to 6 computations (40% saved)

localize18.0ms (1.1%)

Local Accuracy

Found 2 expressions with local accuracy:

NewAccuracyProgram
100.0%
(expm1.f64 x)
100.0%
(/.f64 (expm1.f64 x) x)
Compiler

Compiled 9 to 4 computations (55.6% saved)

series2.0ms (0.1%)

Counts
2 → 24
Calls

6 calls:

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

rewrite98.0ms (6%)

Algorithm
batch-egg-rewrite
Rules
1246×pow1
1146×add-exp-log
1146×log1p-expm1-u
1144×expm1-log1p-u
1120×add-log-exp
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0616
112016
2153716
Stop Event
node limit
Counts
2 → 49
Calls
Call 1
Inputs
(/.f64 (expm1.f64 x) x)
(expm1.f64 x)
Outputs
(-.f64 (+.f64 1 (/.f64 (expm1.f64 x) x)) 1)
(-.f64 (/.f64 (exp.f64 x) x) (/.f64 1 x))
(*.f64 (expm1.f64 x) (/.f64 1 x))
(*.f64 (/.f64 (expm1.f64 x) x) 1)
(*.f64 1 (/.f64 (expm1.f64 x) x))
(*.f64 (cbrt.f64 (/.f64 (expm1.f64 x) x)) (pow.f64 (cbrt.f64 (/.f64 (expm1.f64 x) x)) 2))
(*.f64 (pow.f64 (cbrt.f64 (/.f64 (expm1.f64 x) x)) 2) (cbrt.f64 (/.f64 (expm1.f64 x) x)))
(*.f64 (pow.f64 (cbrt.f64 (expm1.f64 x)) 2) (*.f64 (cbrt.f64 (expm1.f64 x)) (/.f64 1 x)))
(*.f64 (sqrt.f64 (/.f64 (expm1.f64 x) x)) (sqrt.f64 (/.f64 (expm1.f64 x) x)))
(*.f64 (sqrt.f64 (expm1.f64 x)) (*.f64 (sqrt.f64 (expm1.f64 x)) (/.f64 1 x)))
(*.f64 (neg.f64 (expm1.f64 x)) (/.f64 1 (neg.f64 x)))
(*.f64 (/.f64 1 x) (expm1.f64 x))
(*.f64 (/.f64 1 (pow.f64 (cbrt.f64 x) 2)) (/.f64 (expm1.f64 x) (cbrt.f64 x)))
(*.f64 (/.f64 1 (sqrt.f64 x)) (/.f64 (expm1.f64 x) (sqrt.f64 x)))
(*.f64 (/.f64 (pow.f64 (cbrt.f64 (expm1.f64 x)) 2) 1) (/.f64 (cbrt.f64 (expm1.f64 x)) x))
(*.f64 (/.f64 (pow.f64 (cbrt.f64 (expm1.f64 x)) 2) (pow.f64 (cbrt.f64 x) 2)) (cbrt.f64 (/.f64 (expm1.f64 x) x)))
(*.f64 (/.f64 (pow.f64 (cbrt.f64 (expm1.f64 x)) 2) (sqrt.f64 x)) (/.f64 (cbrt.f64 (expm1.f64 x)) (sqrt.f64 x)))
(*.f64 (/.f64 (sqrt.f64 (expm1.f64 x)) 1) (/.f64 (sqrt.f64 (expm1.f64 x)) x))
(*.f64 (/.f64 (sqrt.f64 (expm1.f64 x)) (pow.f64 (cbrt.f64 x) 2)) (/.f64 (sqrt.f64 (expm1.f64 x)) (cbrt.f64 x)))
(pow.f64 (/.f64 (expm1.f64 x) x) 1)
(pow.f64 (cbrt.f64 (/.f64 (expm1.f64 x) x)) 3)
(pow.f64 (pow.f64 (/.f64 (expm1.f64 x) x) 3) 1/3)
(pow.f64 (sqrt.f64 (/.f64 (expm1.f64 x) x)) 2)
(pow.f64 (/.f64 x (expm1.f64 x)) -1)
(neg.f64 (/.f64 (expm1.f64 x) (neg.f64 x)))
(sqrt.f64 (pow.f64 (/.f64 (expm1.f64 x) x) 2))
(log.f64 (exp.f64 (/.f64 (expm1.f64 x) x)))
(cbrt.f64 (pow.f64 (/.f64 (expm1.f64 x) x) 3))
(expm1.f64 (log1p.f64 (/.f64 (expm1.f64 x) x)))
(exp.f64 (log.f64 (/.f64 (expm1.f64 x) x)))
(log1p.f64 (expm1.f64 (/.f64 (expm1.f64 x) x)))
(+.f64 (exp.f64 x) -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 (*.f64 (exp.f64 x) (exp.f64 x)) (+.f64 1 (*.f64 (exp.f64 x) 1))))
(/.f64 (-.f64 (*.f64 (exp.f64 x) (exp.f64 x)) 1) (+.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)))

simplify46.0ms (2.8%)

Algorithm
egg-herbie
Rules
1218×times-frac
1118×associate-/l*
972×associate-*r/
868×fma-def
778×unswap-sqr
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
0137857
1317841
21495835
Stop Event
node limit
Counts
73 → 77
Calls
Call 1
Inputs
1
(+.f64 (*.f64 1/2 x) 1)
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 1/6 (pow.f64 x 2)) 1))
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 1/6 (pow.f64 x 2)) (+.f64 1 (*.f64 1/24 (pow.f64 x 3)))))
(/.f64 (-.f64 (exp.f64 x) 1) x)
(/.f64 (-.f64 (exp.f64 x) 1) x)
(/.f64 (-.f64 (exp.f64 x) 1) x)
(/.f64 (-.f64 (exp.f64 x) 1) x)
(/.f64 (-.f64 (exp.f64 x) 1) x)
(/.f64 (-.f64 (exp.f64 x) 1) x)
(/.f64 (-.f64 (exp.f64 x) 1) x)
(/.f64 (-.f64 (exp.f64 x) 1) x)
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)
(-.f64 (+.f64 1 (/.f64 (expm1.f64 x) x)) 1)
(-.f64 (/.f64 (exp.f64 x) x) (/.f64 1 x))
(*.f64 (expm1.f64 x) (/.f64 1 x))
(*.f64 (/.f64 (expm1.f64 x) x) 1)
(*.f64 1 (/.f64 (expm1.f64 x) x))
(*.f64 (cbrt.f64 (/.f64 (expm1.f64 x) x)) (pow.f64 (cbrt.f64 (/.f64 (expm1.f64 x) x)) 2))
(*.f64 (pow.f64 (cbrt.f64 (/.f64 (expm1.f64 x) x)) 2) (cbrt.f64 (/.f64 (expm1.f64 x) x)))
(*.f64 (pow.f64 (cbrt.f64 (expm1.f64 x)) 2) (*.f64 (cbrt.f64 (expm1.f64 x)) (/.f64 1 x)))
(*.f64 (sqrt.f64 (/.f64 (expm1.f64 x) x)) (sqrt.f64 (/.f64 (expm1.f64 x) x)))
(*.f64 (sqrt.f64 (expm1.f64 x)) (*.f64 (sqrt.f64 (expm1.f64 x)) (/.f64 1 x)))
(*.f64 (neg.f64 (expm1.f64 x)) (/.f64 1 (neg.f64 x)))
(*.f64 (/.f64 1 x) (expm1.f64 x))
(*.f64 (/.f64 1 (pow.f64 (cbrt.f64 x) 2)) (/.f64 (expm1.f64 x) (cbrt.f64 x)))
(*.f64 (/.f64 1 (sqrt.f64 x)) (/.f64 (expm1.f64 x) (sqrt.f64 x)))
(*.f64 (/.f64 (pow.f64 (cbrt.f64 (expm1.f64 x)) 2) 1) (/.f64 (cbrt.f64 (expm1.f64 x)) x))
(*.f64 (/.f64 (pow.f64 (cbrt.f64 (expm1.f64 x)) 2) (pow.f64 (cbrt.f64 x) 2)) (cbrt.f64 (/.f64 (expm1.f64 x) x)))
(*.f64 (/.f64 (pow.f64 (cbrt.f64 (expm1.f64 x)) 2) (sqrt.f64 x)) (/.f64 (cbrt.f64 (expm1.f64 x)) (sqrt.f64 x)))
(*.f64 (/.f64 (sqrt.f64 (expm1.f64 x)) 1) (/.f64 (sqrt.f64 (expm1.f64 x)) x))
(*.f64 (/.f64 (sqrt.f64 (expm1.f64 x)) (pow.f64 (cbrt.f64 x) 2)) (/.f64 (sqrt.f64 (expm1.f64 x)) (cbrt.f64 x)))
(pow.f64 (/.f64 (expm1.f64 x) x) 1)
(pow.f64 (cbrt.f64 (/.f64 (expm1.f64 x) x)) 3)
(pow.f64 (pow.f64 (/.f64 (expm1.f64 x) x) 3) 1/3)
(pow.f64 (sqrt.f64 (/.f64 (expm1.f64 x) x)) 2)
(pow.f64 (/.f64 x (expm1.f64 x)) -1)
(neg.f64 (/.f64 (expm1.f64 x) (neg.f64 x)))
(sqrt.f64 (pow.f64 (/.f64 (expm1.f64 x) x) 2))
(log.f64 (exp.f64 (/.f64 (expm1.f64 x) x)))
(cbrt.f64 (pow.f64 (/.f64 (expm1.f64 x) x) 3))
(expm1.f64 (log1p.f64 (/.f64 (expm1.f64 x) x)))
(exp.f64 (log.f64 (/.f64 (expm1.f64 x) x)))
(log1p.f64 (expm1.f64 (/.f64 (expm1.f64 x) x)))
(+.f64 (exp.f64 x) -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 (*.f64 (exp.f64 x) (exp.f64 x)) (+.f64 1 (*.f64 (exp.f64 x) 1))))
(/.f64 (-.f64 (*.f64 (exp.f64 x) (exp.f64 x)) 1) (+.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)))
Outputs
1
(+.f64 (*.f64 1/2 x) 1)
(fma.f64 1/2 x 1)
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 1/6 (pow.f64 x 2)) 1))
(fma.f64 1/2 x (fma.f64 1/6 (*.f64 x x) 1))
(fma.f64 1/2 x (fma.f64 x (*.f64 x 1/6) 1))
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 1/6 (pow.f64 x 2)) (+.f64 1 (*.f64 1/24 (pow.f64 x 3)))))
(fma.f64 1/2 x (+.f64 (fma.f64 1/6 (*.f64 x x) 1) (*.f64 1/24 (pow.f64 x 3))))
(fma.f64 1/2 x (fma.f64 1/6 (*.f64 x x) (fma.f64 1/24 (pow.f64 x 3) 1)))
(fma.f64 1/2 x (fma.f64 x (*.f64 x 1/6) (fma.f64 1/24 (pow.f64 x 3) 1)))
(/.f64 (-.f64 (exp.f64 x) 1) x)
(/.f64 (expm1.f64 x) x)
(/.f64 (-.f64 (exp.f64 x) 1) x)
(/.f64 (expm1.f64 x) x)
(/.f64 (-.f64 (exp.f64 x) 1) x)
(/.f64 (expm1.f64 x) x)
(/.f64 (-.f64 (exp.f64 x) 1) x)
(/.f64 (expm1.f64 x) x)
(/.f64 (-.f64 (exp.f64 x) 1) x)
(/.f64 (expm1.f64 x) x)
(/.f64 (-.f64 (exp.f64 x) 1) x)
(/.f64 (expm1.f64 x) x)
(/.f64 (-.f64 (exp.f64 x) 1) x)
(/.f64 (expm1.f64 x) x)
(/.f64 (-.f64 (exp.f64 x) 1) x)
(/.f64 (expm1.f64 x) x)
x
(+.f64 (*.f64 1/2 (pow.f64 x 2)) x)
(fma.f64 1/2 (*.f64 x x) x)
(*.f64 (fma.f64 1/2 x 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 1/2 (*.f64 x x) (fma.f64 1/6 (pow.f64 x 3) 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)))
(-.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)
(-.f64 (+.f64 1 (/.f64 (expm1.f64 x) x)) 1)
(/.f64 (expm1.f64 x) x)
(-.f64 (/.f64 (exp.f64 x) x) (/.f64 1 x))
(/.f64 (expm1.f64 x) x)
(*.f64 (expm1.f64 x) (/.f64 1 x))
(/.f64 (expm1.f64 x) x)
(*.f64 (/.f64 (expm1.f64 x) x) 1)
(/.f64 (expm1.f64 x) x)
(*.f64 1 (/.f64 (expm1.f64 x) x))
(/.f64 (expm1.f64 x) x)
(*.f64 (cbrt.f64 (/.f64 (expm1.f64 x) x)) (pow.f64 (cbrt.f64 (/.f64 (expm1.f64 x) x)) 2))
(/.f64 (expm1.f64 x) x)
(*.f64 (pow.f64 (cbrt.f64 (/.f64 (expm1.f64 x) x)) 2) (cbrt.f64 (/.f64 (expm1.f64 x) x)))
(/.f64 (expm1.f64 x) x)
(*.f64 (pow.f64 (cbrt.f64 (expm1.f64 x)) 2) (*.f64 (cbrt.f64 (expm1.f64 x)) (/.f64 1 x)))
(/.f64 (expm1.f64 x) x)
(*.f64 (sqrt.f64 (/.f64 (expm1.f64 x) x)) (sqrt.f64 (/.f64 (expm1.f64 x) x)))
(/.f64 (expm1.f64 x) x)
(*.f64 (sqrt.f64 (expm1.f64 x)) (*.f64 (sqrt.f64 (expm1.f64 x)) (/.f64 1 x)))
(/.f64 (expm1.f64 x) x)
(*.f64 (neg.f64 (expm1.f64 x)) (/.f64 1 (neg.f64 x)))
(/.f64 (expm1.f64 x) x)
(*.f64 (/.f64 1 x) (expm1.f64 x))
(/.f64 (expm1.f64 x) x)
(*.f64 (/.f64 1 (pow.f64 (cbrt.f64 x) 2)) (/.f64 (expm1.f64 x) (cbrt.f64 x)))
(/.f64 (/.f64 (expm1.f64 x) (cbrt.f64 x)) (pow.f64 (cbrt.f64 x) 2))
(*.f64 (/.f64 1 (sqrt.f64 x)) (/.f64 (expm1.f64 x) (sqrt.f64 x)))
(/.f64 (expm1.f64 x) x)
(*.f64 (/.f64 (pow.f64 (cbrt.f64 (expm1.f64 x)) 2) 1) (/.f64 (cbrt.f64 (expm1.f64 x)) x))
(/.f64 (expm1.f64 x) x)
(*.f64 (/.f64 (pow.f64 (cbrt.f64 (expm1.f64 x)) 2) (pow.f64 (cbrt.f64 x) 2)) (cbrt.f64 (/.f64 (expm1.f64 x) x)))
(*.f64 (cbrt.f64 (/.f64 (expm1.f64 x) x)) (/.f64 (pow.f64 (cbrt.f64 (expm1.f64 x)) 2) (pow.f64 (cbrt.f64 x) 2)))
(/.f64 (cbrt.f64 (/.f64 (expm1.f64 x) x)) (/.f64 (pow.f64 (cbrt.f64 x) 2) (pow.f64 (cbrt.f64 (expm1.f64 x)) 2)))
(*.f64 (/.f64 (pow.f64 (cbrt.f64 (expm1.f64 x)) 2) (sqrt.f64 x)) (/.f64 (cbrt.f64 (expm1.f64 x)) (sqrt.f64 x)))
(/.f64 (expm1.f64 x) x)
(*.f64 (/.f64 (sqrt.f64 (expm1.f64 x)) 1) (/.f64 (sqrt.f64 (expm1.f64 x)) x))
(/.f64 (expm1.f64 x) x)
(*.f64 (/.f64 (sqrt.f64 (expm1.f64 x)) (pow.f64 (cbrt.f64 x) 2)) (/.f64 (sqrt.f64 (expm1.f64 x)) (cbrt.f64 x)))
(*.f64 (/.f64 1 (pow.f64 (cbrt.f64 x) 2)) (/.f64 (expm1.f64 x) (cbrt.f64 x)))
(/.f64 (/.f64 (expm1.f64 x) (cbrt.f64 x)) (pow.f64 (cbrt.f64 x) 2))
(pow.f64 (/.f64 (expm1.f64 x) x) 1)
(/.f64 (expm1.f64 x) x)
(pow.f64 (cbrt.f64 (/.f64 (expm1.f64 x) x)) 3)
(/.f64 (expm1.f64 x) x)
(pow.f64 (pow.f64 (/.f64 (expm1.f64 x) x) 3) 1/3)
(/.f64 (expm1.f64 x) x)
(pow.f64 (sqrt.f64 (/.f64 (expm1.f64 x) x)) 2)
(/.f64 (expm1.f64 x) x)
(pow.f64 (/.f64 x (expm1.f64 x)) -1)
(/.f64 (expm1.f64 x) x)
(neg.f64 (/.f64 (expm1.f64 x) (neg.f64 x)))
(/.f64 (expm1.f64 x) x)
(sqrt.f64 (pow.f64 (/.f64 (expm1.f64 x) x) 2))
(/.f64 (expm1.f64 x) x)
(log.f64 (exp.f64 (/.f64 (expm1.f64 x) x)))
(/.f64 (expm1.f64 x) x)
(cbrt.f64 (pow.f64 (/.f64 (expm1.f64 x) x) 3))
(/.f64 (expm1.f64 x) x)
(expm1.f64 (log1p.f64 (/.f64 (expm1.f64 x) x)))
(/.f64 (expm1.f64 x) x)
(exp.f64 (log.f64 (/.f64 (expm1.f64 x) x)))
(/.f64 (expm1.f64 x) x)
(log1p.f64 (expm1.f64 (/.f64 (expm1.f64 x) x)))
(/.f64 (expm1.f64 x) x)
(+.f64 (exp.f64 x) -1)
(expm1.f64 x)
(-.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 (*.f64 (exp.f64 x) (exp.f64 x)) (+.f64 1 (*.f64 (exp.f64 x) 1))))
(/.f64 (+.f64 (pow.f64 (exp.f64 x) 3) -1) (fma.f64 (exp.f64 x) (exp.f64 x) (+.f64 1 (exp.f64 x))))
(/.f64 (+.f64 -1 (pow.f64 (exp.f64 x) 3)) (fma.f64 (exp.f64 x) (exp.f64 x) (+.f64 1 (exp.f64 x))))
(/.f64 (expm1.f64 (*.f64 3 x)) (+.f64 1 (fma.f64 (exp.f64 x) (exp.f64 x) (exp.f64 x))))
(/.f64 (-.f64 (*.f64 (exp.f64 x) (exp.f64 x)) 1) (+.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)

eval64.0ms (4%)

Compiler

Compiled 745 to 369 computations (50.5% saved)

prune9.0ms (0.6%)

Pruning

3 alts after pruning (2 fresh and 1 done)

PrunedKeptTotal
New75277
Fresh000
Picked011
Done000
Total75378
Accurracy
100.0%
Counts
78 → 3
Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(/.f64 (expm1.f64 x) x)
52.8%
(+.f64 (*.f64 1/2 x) 1)
53.0%
1
100.0%
(/.f64 (expm1.f64 x) x)
52.8%
(+.f64 (*.f64 1/2 x) 1)
53.0%
1
Compiler

Compiled 26 to 20 computations (23.1% saved)

localize25.0ms (1.5%)

Compiler

Compiled 13 to 10 computations (23.1% saved)

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
Picked011
Done011
Total033
Accurracy
100.0%
Counts
3 → 3
Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(/.f64 (expm1.f64 x) x)
52.8%
(+.f64 (*.f64 1/2 x) 1)
53.0%
1
100.0%
(/.f64 (expm1.f64 x) x)
52.8%
(+.f64 (*.f64 1/2 x) 1)
53.0%
1
Compiler

Compiled 26 to 20 computations (23.1% 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
100.0%
(/.f64 (expm1.f64 x) x)
52.8%
(+.f64 (*.f64 1/2 x) 1)
53.0%
1
100.0%
(/.f64 (expm1.f64 x) x)
52.8%
(+.f64 (*.f64 1/2 x) 1)
53.0%
1
Compiler

Compiled 26 to 20 computations (23.1% 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
100.0%
(/.f64 (expm1.f64 x) x)
52.8%
(+.f64 (*.f64 1/2 x) 1)
53.0%
1
Compiler

Compiled 30 to 22 computations (26.7% saved)

regimes7.0ms (0.4%)

Counts
4 → 1
Calls
Call 1
Inputs
1
(+.f64 (*.f64 1/2 x) 1)
(/.f64 (expm1.f64 x) x)
(/.f64 (-.f64 (exp.f64 x) 1) x)
Outputs
(/.f64 (expm1.f64 x) x)
Calls

2 calls:

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

Compiled 26 to 18 computations (30.8% saved)

regimes4.0ms (0.3%)

Accuracy

Total -0.5b remaining (-1.8%)

Threshold costs -0.5b (-1.8%)

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

1 calls:

3.0ms
x
Results
AccuracySegmentsBranch
53.0%1x
Compiler

Compiled 9 to 7 computations (22.2% saved)

simplify4.0ms (0.3%)

Algorithm
egg-herbie
Rules
1-exp
Iterations

Useful iterations: 0 (0.0ms)

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

Compiled 7 to 5 computations (28.6% saved)

soundness34.0ms (2.1%)

Rules
336×fma-def
68×distribute-rgt-in
52×distribute-lft-in
40×sub-neg
40×associate-/r*
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0811
11711
22011
32411
43311
54311
66211
710311
814711
922511
1034711
1153111
1260311
1363911
Stop Event
saturated
Compiler

Compiled 11 to 7 computations (36.4% saved)

end0.0ms (0%)

preprocess36.0ms (2.2%)

Compiler

Compiled 72 to 48 computations (33.3% saved)

Profiling

Loading profile data...