Details

Time bar (total: 2.0s)

analyze2.0ms (0.1%)

Algorithm
search
Search
ProbabilityValidUnknownPreconditionInfiniteDomainCan'tIter
0%0%74.6%25.4%0%0%0%0
0%0%74.6%25.4%0%0%0%1
50%37.3%37.3%25.4%0%0%0%2
66.7%37.3%18.7%25.4%18.7%0%0%3
83.3%46.7%9.3%25.4%18.7%0%0%4
90.9%46.7%4.7%25.4%23.3%0%0%5
95.5%49%2.3%25.4%23.3%0%0%6
97.7%49%1.2%25.4%24.5%0%0%7
98.8%49.6%0.6%25.4%24.5%0%0%8
99.4%49.9%0.3%25.4%24.5%0%0%9
99.7%49.9%0.1%25.4%24.6%0%0%10
99.9%49.9%0.1%25.4%24.7%0%0%11
99.9%49.9%0%25.4%24.7%0%0%12
Compiler

Compiled 8 to 6 computations (25% saved)

sample1.6s (82.9%)

Results
1.0s4181×body1024valid
327.0ms2040×body512valid
135.0ms1604×body256valid
116.0ms431×body2048valid
Bogosity

preprocess5.0ms (0.2%)

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)

simplify11.0ms (0.6%)

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)

prune1.0ms (0.1%)

Pruning

3 alts after pruning (3 fresh and 0 done)

PrunedKeptTotal
New022
Fresh011
Picked000
Done000
Total033
Error
0b
Counts
3 → 2
Alt Table
Click to see full alt table
StatusErrorProgram
58.8b
(-.f64 (exp.f64 x) 1)
0.0b
(expm1.f64 x)
Compiler

Compiled 8 to 6 computations (25% saved)

localize18.0ms (0.9%)

Local error

Found 1 expressions with local error:

NewErrorProgram
0.0b
(expm1.f64 x)
Compiler

Compiled 4 to 2 computations (50% saved)

series1.0ms (0%)

Counts
1 → 12
Calls

3 calls:

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

rewrite46.0ms (2.4%)

Algorithm
batch-egg-rewrite
Rules
870×associate-*r*
710×add-sqr-sqrt
698×*-un-lft-identity
660×pow1
648×add-cube-cbrt
Iterations

Useful iterations: 0 (0.0ms)

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

simplify62.0ms (3.2%)

Algorithm
egg-herbie
Rules
1796×distribute-lft-in
1564×associate-*r*
1264×associate-*l*
668×associate-+r+
638×unswap-sqr
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
01211040
12751028
2820986
34659986
Stop Event
node limit
Counts
56 → 70
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)
(+.f64 (exp.f64 x) -1)
(+.f64 -1 (exp.f64 x))
(-.f64 (exp.f64 x) 1)
(*.f64 (expm1.f64 x) 1)
(*.f64 1 (expm1.f64 x))
(*.f64 (sqrt.f64 (expm1.f64 x)) (sqrt.f64 (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 (pow.f64 (cbrt.f64 (expm1.f64 x)) 2)) (*.f64 (sqrt.f64 (cbrt.f64 (expm1.f64 x))) (sqrt.f64 (expm1.f64 x))))
(*.f64 (sqrt.f64 (pow.f64 (cbrt.f64 (expm1.f64 x)) 2)) (*.f64 (sqrt.f64 (pow.f64 (cbrt.f64 (expm1.f64 x)) 2)) (cbrt.f64 (expm1.f64 x))))
(*.f64 (sqrt.f64 (sqrt.f64 (expm1.f64 x))) (*.f64 (sqrt.f64 (sqrt.f64 (expm1.f64 x))) (sqrt.f64 (expm1.f64 x))))
(*.f64 (sqrt.f64 (cbrt.f64 (expm1.f64 x))) (*.f64 (sqrt.f64 (cbrt.f64 (expm1.f64 x))) (pow.f64 (cbrt.f64 (expm1.f64 x)) 2)))
(*.f64 (cbrt.f64 (pow.f64 (cbrt.f64 (expm1.f64 x)) 2)) (*.f64 (cbrt.f64 (cbrt.f64 (expm1.f64 x))) (pow.f64 (cbrt.f64 (expm1.f64 x)) 2)))
(*.f64 (cbrt.f64 (cbrt.f64 (pow.f64 (expm1.f64 x) 4))) (*.f64 (cbrt.f64 (pow.f64 (cbrt.f64 (expm1.f64 x)) 2)) (cbrt.f64 (expm1.f64 x))))
(*.f64 (cbrt.f64 (sqrt.f64 (expm1.f64 x))) (*.f64 (cbrt.f64 (sqrt.f64 (expm1.f64 x))) (pow.f64 (cbrt.f64 (expm1.f64 x)) 2)))
(*.f64 (*.f64 (sqrt.f64 (expm1.f64 x)) (sqrt.f64 (sqrt.f64 (expm1.f64 x)))) (sqrt.f64 (sqrt.f64 (expm1.f64 x))))
(*.f64 (*.f64 (cbrt.f64 (expm1.f64 x)) (sqrt.f64 (cbrt.f64 (expm1.f64 x)))) (*.f64 (cbrt.f64 (expm1.f64 x)) (sqrt.f64 (cbrt.f64 (expm1.f64 x)))))
(*.f64 (*.f64 (sqrt.f64 (expm1.f64 x)) (cbrt.f64 (expm1.f64 x))) (cbrt.f64 (sqrt.f64 (expm1.f64 x))))
(*.f64 (*.f64 (sqrt.f64 (expm1.f64 x)) (sqrt.f64 (pow.f64 (cbrt.f64 (expm1.f64 x)) 2))) (sqrt.f64 (cbrt.f64 (expm1.f64 x))))
(*.f64 (*.f64 (cbrt.f64 (expm1.f64 x)) (sqrt.f64 (pow.f64 (cbrt.f64 (expm1.f64 x)) 2))) (sqrt.f64 (pow.f64 (cbrt.f64 (expm1.f64 x)) 2)))
(*.f64 (*.f64 (cbrt.f64 (expm1.f64 x)) (cbrt.f64 (cbrt.f64 (pow.f64 (expm1.f64 x) 4)))) (cbrt.f64 (pow.f64 (cbrt.f64 (expm1.f64 x)) 2)))
(*.f64 (*.f64 (pow.f64 (cbrt.f64 (expm1.f64 x)) 2) (sqrt.f64 (cbrt.f64 (expm1.f64 x)))) (sqrt.f64 (cbrt.f64 (expm1.f64 x))))
(*.f64 (*.f64 (pow.f64 (cbrt.f64 (expm1.f64 x)) 2) (cbrt.f64 (pow.f64 (cbrt.f64 (expm1.f64 x)) 2))) (cbrt.f64 (cbrt.f64 (expm1.f64 x))))
(*.f64 (*.f64 (pow.f64 (cbrt.f64 (expm1.f64 x)) 2) (cbrt.f64 (sqrt.f64 (expm1.f64 x)))) (cbrt.f64 (sqrt.f64 (expm1.f64 x))))
(*.f64 (*.f64 (sqrt.f64 (cbrt.f64 (expm1.f64 x))) (cbrt.f64 (expm1.f64 x))) (*.f64 (sqrt.f64 (cbrt.f64 (expm1.f64 x))) (cbrt.f64 (expm1.f64 x))))
(*.f64 (*.f64 (cbrt.f64 (sqrt.f64 (expm1.f64 x))) (sqrt.f64 (pow.f64 (cbrt.f64 (expm1.f64 x)) 2))) (*.f64 (cbrt.f64 (sqrt.f64 (expm1.f64 x))) (sqrt.f64 (pow.f64 (cbrt.f64 (expm1.f64 x)) 2))))
(*.f64 (*.f64 (sqrt.f64 (pow.f64 (cbrt.f64 (expm1.f64 x)) 2)) (cbrt.f64 (sqrt.f64 (expm1.f64 x)))) (*.f64 (sqrt.f64 (pow.f64 (cbrt.f64 (expm1.f64 x)) 2)) (cbrt.f64 (sqrt.f64 (expm1.f64 x)))))
(*.f64 (+.f64 (sqrt.f64 (exp.f64 x)) 1) (-.f64 (sqrt.f64 (exp.f64 x)) 1))
(*.f64 (pow.f64 (cbrt.f64 (expm1.f64 x)) 3/2) (pow.f64 (cbrt.f64 (expm1.f64 x)) 3/2))
(*.f64 (pow.f64 (pow.f64 (expm1.f64 x) 3) 1/6) (pow.f64 (pow.f64 (expm1.f64 x) 3) 1/6))
(/.f64 (-.f64 (pow.f64 (exp.f64 x) 2) 1) (+.f64 1 (exp.f64 x)))
(/.f64 (-.f64 (pow.f64 (exp.f64 x) 2) 1) (-.f64 (exp.f64 x) -1))
(/.f64 (-.f64 (pow.f64 (exp.f64 x) 3) 1) (+.f64 (pow.f64 (exp.f64 x) 2) (+.f64 1 (exp.f64 x))))
(/.f64 (*.f64 (-.f64 (pow.f64 (exp.f64 x) 2) 1) 1) (+.f64 1 (exp.f64 x)))
(/.f64 (*.f64 (-.f64 (pow.f64 (exp.f64 x) 3) 1) 1) (+.f64 (pow.f64 (exp.f64 x) 2) (+.f64 1 (exp.f64 x))))
(pow.f64 (expm1.f64 x) 1)
(pow.f64 (sqrt.f64 (expm1.f64 x)) 2)
(pow.f64 (cbrt.f64 (expm1.f64 x)) 3)
(pow.f64 (pow.f64 (expm1.f64 x) 3) 1/3)
(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
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 (*.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))
(+.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 x (*.f64 x 1/2) (fma.f64 1/6 (pow.f64 x 3) (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 (exp.f64 x) -1)
(expm1.f64 x)
(+.f64 -1 (exp.f64 x))
(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 (sqrt.f64 (expm1.f64 x)) (sqrt.f64 (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 (pow.f64 (cbrt.f64 (expm1.f64 x)) 2)) (*.f64 (sqrt.f64 (cbrt.f64 (expm1.f64 x))) (sqrt.f64 (expm1.f64 x))))
(*.f64 (sqrt.f64 (pow.f64 (cbrt.f64 (expm1.f64 x)) 2)) (*.f64 (sqrt.f64 (expm1.f64 x)) (sqrt.f64 (cbrt.f64 (expm1.f64 x)))))
(*.f64 (fabs.f64 (cbrt.f64 (expm1.f64 x))) (*.f64 (sqrt.f64 (expm1.f64 x)) (sqrt.f64 (cbrt.f64 (expm1.f64 x)))))
(*.f64 (sqrt.f64 (expm1.f64 x)) (pow.f64 (sqrt.f64 (cbrt.f64 (expm1.f64 x))) 3))
(*.f64 (sqrt.f64 (pow.f64 (cbrt.f64 (expm1.f64 x)) 2)) (*.f64 (sqrt.f64 (pow.f64 (cbrt.f64 (expm1.f64 x)) 2)) (cbrt.f64 (expm1.f64 x))))
(expm1.f64 x)
(*.f64 (sqrt.f64 (sqrt.f64 (expm1.f64 x))) (*.f64 (sqrt.f64 (sqrt.f64 (expm1.f64 x))) (sqrt.f64 (expm1.f64 x))))
(expm1.f64 x)
(*.f64 (sqrt.f64 (cbrt.f64 (expm1.f64 x))) (*.f64 (sqrt.f64 (cbrt.f64 (expm1.f64 x))) (pow.f64 (cbrt.f64 (expm1.f64 x)) 2)))
(expm1.f64 x)
(*.f64 (cbrt.f64 (pow.f64 (cbrt.f64 (expm1.f64 x)) 2)) (*.f64 (cbrt.f64 (cbrt.f64 (expm1.f64 x))) (pow.f64 (cbrt.f64 (expm1.f64 x)) 2)))
(*.f64 (cbrt.f64 (pow.f64 (cbrt.f64 (expm1.f64 x)) 2)) (*.f64 (pow.f64 (cbrt.f64 (expm1.f64 x)) 2) (cbrt.f64 (cbrt.f64 (expm1.f64 x)))))
(*.f64 (pow.f64 (cbrt.f64 (expm1.f64 x)) 2) (*.f64 (cbrt.f64 (pow.f64 (cbrt.f64 (expm1.f64 x)) 2)) (cbrt.f64 (cbrt.f64 (expm1.f64 x)))))
(*.f64 (cbrt.f64 (cbrt.f64 (pow.f64 (expm1.f64 x) 4))) (*.f64 (cbrt.f64 (pow.f64 (cbrt.f64 (expm1.f64 x)) 2)) (cbrt.f64 (expm1.f64 x))))
(*.f64 (cbrt.f64 (cbrt.f64 (pow.f64 (expm1.f64 x) 4))) (*.f64 (cbrt.f64 (expm1.f64 x)) (cbrt.f64 (pow.f64 (cbrt.f64 (expm1.f64 x)) 2))))
(*.f64 (cbrt.f64 (expm1.f64 x)) (*.f64 (cbrt.f64 (pow.f64 (cbrt.f64 (expm1.f64 x)) 2)) (cbrt.f64 (cbrt.f64 (pow.f64 (expm1.f64 x) 4)))))
(*.f64 (cbrt.f64 (sqrt.f64 (expm1.f64 x))) (*.f64 (cbrt.f64 (sqrt.f64 (expm1.f64 x))) (pow.f64 (cbrt.f64 (expm1.f64 x)) 2)))
(*.f64 (pow.f64 (cbrt.f64 (expm1.f64 x)) 2) (*.f64 (cbrt.f64 (sqrt.f64 (expm1.f64 x))) (cbrt.f64 (sqrt.f64 (expm1.f64 x)))))
(*.f64 (*.f64 (sqrt.f64 (expm1.f64 x)) (sqrt.f64 (sqrt.f64 (expm1.f64 x)))) (sqrt.f64 (sqrt.f64 (expm1.f64 x))))
(expm1.f64 x)
(*.f64 (*.f64 (cbrt.f64 (expm1.f64 x)) (sqrt.f64 (cbrt.f64 (expm1.f64 x)))) (*.f64 (cbrt.f64 (expm1.f64 x)) (sqrt.f64 (cbrt.f64 (expm1.f64 x)))))
(expm1.f64 x)
(*.f64 (*.f64 (sqrt.f64 (expm1.f64 x)) (cbrt.f64 (expm1.f64 x))) (cbrt.f64 (sqrt.f64 (expm1.f64 x))))
(*.f64 (sqrt.f64 (expm1.f64 x)) (*.f64 (cbrt.f64 (expm1.f64 x)) (cbrt.f64 (sqrt.f64 (expm1.f64 x)))))
(*.f64 (*.f64 (sqrt.f64 (expm1.f64 x)) (sqrt.f64 (pow.f64 (cbrt.f64 (expm1.f64 x)) 2))) (sqrt.f64 (cbrt.f64 (expm1.f64 x))))
(*.f64 (sqrt.f64 (pow.f64 (cbrt.f64 (expm1.f64 x)) 2)) (*.f64 (sqrt.f64 (expm1.f64 x)) (sqrt.f64 (cbrt.f64 (expm1.f64 x)))))
(*.f64 (fabs.f64 (cbrt.f64 (expm1.f64 x))) (*.f64 (sqrt.f64 (expm1.f64 x)) (sqrt.f64 (cbrt.f64 (expm1.f64 x)))))
(*.f64 (sqrt.f64 (expm1.f64 x)) (pow.f64 (sqrt.f64 (cbrt.f64 (expm1.f64 x))) 3))
(*.f64 (*.f64 (cbrt.f64 (expm1.f64 x)) (sqrt.f64 (pow.f64 (cbrt.f64 (expm1.f64 x)) 2))) (sqrt.f64 (pow.f64 (cbrt.f64 (expm1.f64 x)) 2)))
(expm1.f64 x)
(*.f64 (*.f64 (cbrt.f64 (expm1.f64 x)) (cbrt.f64 (cbrt.f64 (pow.f64 (expm1.f64 x) 4)))) (cbrt.f64 (pow.f64 (cbrt.f64 (expm1.f64 x)) 2)))
(*.f64 (cbrt.f64 (cbrt.f64 (pow.f64 (expm1.f64 x) 4))) (*.f64 (cbrt.f64 (expm1.f64 x)) (cbrt.f64 (pow.f64 (cbrt.f64 (expm1.f64 x)) 2))))
(*.f64 (cbrt.f64 (expm1.f64 x)) (*.f64 (cbrt.f64 (pow.f64 (cbrt.f64 (expm1.f64 x)) 2)) (cbrt.f64 (cbrt.f64 (pow.f64 (expm1.f64 x) 4)))))
(*.f64 (*.f64 (pow.f64 (cbrt.f64 (expm1.f64 x)) 2) (sqrt.f64 (cbrt.f64 (expm1.f64 x)))) (sqrt.f64 (cbrt.f64 (expm1.f64 x))))
(expm1.f64 x)
(*.f64 (*.f64 (pow.f64 (cbrt.f64 (expm1.f64 x)) 2) (cbrt.f64 (pow.f64 (cbrt.f64 (expm1.f64 x)) 2))) (cbrt.f64 (cbrt.f64 (expm1.f64 x))))
(*.f64 (cbrt.f64 (pow.f64 (cbrt.f64 (expm1.f64 x)) 2)) (*.f64 (pow.f64 (cbrt.f64 (expm1.f64 x)) 2) (cbrt.f64 (cbrt.f64 (expm1.f64 x)))))
(*.f64 (pow.f64 (cbrt.f64 (expm1.f64 x)) 2) (*.f64 (cbrt.f64 (pow.f64 (cbrt.f64 (expm1.f64 x)) 2)) (cbrt.f64 (cbrt.f64 (expm1.f64 x)))))
(*.f64 (*.f64 (pow.f64 (cbrt.f64 (expm1.f64 x)) 2) (cbrt.f64 (sqrt.f64 (expm1.f64 x)))) (cbrt.f64 (sqrt.f64 (expm1.f64 x))))
(*.f64 (pow.f64 (cbrt.f64 (expm1.f64 x)) 2) (*.f64 (cbrt.f64 (sqrt.f64 (expm1.f64 x))) (cbrt.f64 (sqrt.f64 (expm1.f64 x)))))
(*.f64 (*.f64 (sqrt.f64 (cbrt.f64 (expm1.f64 x))) (cbrt.f64 (expm1.f64 x))) (*.f64 (sqrt.f64 (cbrt.f64 (expm1.f64 x))) (cbrt.f64 (expm1.f64 x))))
(expm1.f64 x)
(*.f64 (*.f64 (cbrt.f64 (sqrt.f64 (expm1.f64 x))) (sqrt.f64 (pow.f64 (cbrt.f64 (expm1.f64 x)) 2))) (*.f64 (cbrt.f64 (sqrt.f64 (expm1.f64 x))) (sqrt.f64 (pow.f64 (cbrt.f64 (expm1.f64 x)) 2))))
(*.f64 (pow.f64 (cbrt.f64 (expm1.f64 x)) 2) (*.f64 (cbrt.f64 (sqrt.f64 (expm1.f64 x))) (cbrt.f64 (sqrt.f64 (expm1.f64 x)))))
(*.f64 (*.f64 (sqrt.f64 (pow.f64 (cbrt.f64 (expm1.f64 x)) 2)) (cbrt.f64 (sqrt.f64 (expm1.f64 x)))) (*.f64 (sqrt.f64 (pow.f64 (cbrt.f64 (expm1.f64 x)) 2)) (cbrt.f64 (sqrt.f64 (expm1.f64 x)))))
(*.f64 (pow.f64 (cbrt.f64 (expm1.f64 x)) 2) (*.f64 (cbrt.f64 (sqrt.f64 (expm1.f64 x))) (cbrt.f64 (sqrt.f64 (expm1.f64 x)))))
(*.f64 (+.f64 (sqrt.f64 (exp.f64 x)) 1) (-.f64 (sqrt.f64 (exp.f64 x)) 1))
(expm1.f64 x)
(*.f64 (pow.f64 (cbrt.f64 (expm1.f64 x)) 3/2) (pow.f64 (cbrt.f64 (expm1.f64 x)) 3/2))
(expm1.f64 x)
(*.f64 (pow.f64 (pow.f64 (expm1.f64 x) 3) 1/6) (pow.f64 (pow.f64 (expm1.f64 x) 3) 1/6))
(expm1.f64 x)
(/.f64 (-.f64 (pow.f64 (exp.f64 x) 2) 1) (+.f64 1 (exp.f64 x)))
(/.f64 (+.f64 (pow.f64 (exp.f64 x) 2) -1) (+.f64 (exp.f64 x) 1))
(/.f64 (fma.f64 (exp.f64 x) (exp.f64 x) -1) (+.f64 (exp.f64 x) 1))
(/.f64 (expm1.f64 (+.f64 x x)) (+.f64 (exp.f64 x) 1))
(/.f64 (-.f64 (pow.f64 (exp.f64 x) 2) 1) (-.f64 (exp.f64 x) -1))
(/.f64 (+.f64 (pow.f64 (exp.f64 x) 2) -1) (+.f64 (exp.f64 x) 1))
(/.f64 (fma.f64 (exp.f64 x) (exp.f64 x) -1) (+.f64 (exp.f64 x) 1))
(/.f64 (expm1.f64 (+.f64 x x)) (+.f64 (exp.f64 x) 1))
(/.f64 (-.f64 (pow.f64 (exp.f64 x) 3) 1) (+.f64 (pow.f64 (exp.f64 x) 2) (+.f64 1 (exp.f64 x))))
(/.f64 (+.f64 (pow.f64 (exp.f64 x) 3) -1) (+.f64 (pow.f64 (exp.f64 x) 2) (+.f64 (exp.f64 x) 1)))
(/.f64 (+.f64 -1 (pow.f64 (exp.f64 x) 3)) (+.f64 (exp.f64 x) (fma.f64 (exp.f64 x) (exp.f64 x) 1)))
(/.f64 (+.f64 -1 (pow.f64 (exp.f64 x) 3)) (+.f64 (exp.f64 x) (+.f64 1 (pow.f64 (exp.f64 x) 2))))
(/.f64 (*.f64 (-.f64 (pow.f64 (exp.f64 x) 2) 1) 1) (+.f64 1 (exp.f64 x)))
(/.f64 (+.f64 (pow.f64 (exp.f64 x) 2) -1) (+.f64 (exp.f64 x) 1))
(/.f64 (fma.f64 (exp.f64 x) (exp.f64 x) -1) (+.f64 (exp.f64 x) 1))
(/.f64 (expm1.f64 (+.f64 x x)) (+.f64 (exp.f64 x) 1))
(/.f64 (*.f64 (-.f64 (pow.f64 (exp.f64 x) 3) 1) 1) (+.f64 (pow.f64 (exp.f64 x) 2) (+.f64 1 (exp.f64 x))))
(/.f64 (+.f64 (pow.f64 (exp.f64 x) 3) -1) (+.f64 (pow.f64 (exp.f64 x) 2) (+.f64 (exp.f64 x) 1)))
(/.f64 (+.f64 -1 (pow.f64 (exp.f64 x) 3)) (+.f64 (exp.f64 x) (fma.f64 (exp.f64 x) (exp.f64 x) 1)))
(/.f64 (+.f64 -1 (pow.f64 (exp.f64 x) 3)) (+.f64 (exp.f64 x) (+.f64 1 (pow.f64 (exp.f64 x) 2))))
(pow.f64 (expm1.f64 x) 1)
(expm1.f64 x)
(pow.f64 (sqrt.f64 (expm1.f64 x)) 2)
(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)
(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)

localize4.0ms (0.2%)

Local error

Found 1 expressions with local error:

NewErrorProgram
6.8b
(-.f64 (exp.f64 x) 1)
Compiler

Compiled 9 to 5 computations (44.4% saved)

series0.0ms (0%)

Counts
1 → 4
Calls

3 calls:

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

rewrite52.0ms (2.7%)

Algorithm
batch-egg-rewrite
Rules
1286×add-sqr-sqrt
1270×*-un-lft-identity
1184×add-cube-cbrt
1172×add-cbrt-cube
1160×add-exp-log
Iterations

Useful iterations: 0 (0.0ms)

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

simplify55.0ms (2.8%)

Algorithm
egg-herbie
Rules
1404×associate-/l*
1352×associate-/r*
838×associate-*r*
774×*-commutative
624×associate-*l*
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
088789
1204729
2739583
33044583
Stop Event
node limit
Counts
35 → 47
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 -1 (exp.f64 x))
(*.f64 1 (expm1.f64 x))
(*.f64 (expm1.f64 x) 1)
(*.f64 (sqrt.f64 (expm1.f64 x)) (sqrt.f64 (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 (+.f64 (pow.f64 (exp.f64 x) 2) -1) (/.f64 1 (+.f64 (exp.f64 x) 1)))
(*.f64 (+.f64 (pow.f64 (exp.f64 x) 3) -1) (/.f64 1 (+.f64 (pow.f64 (exp.f64 x) 2) (+.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 x) 1) (+.f64 (pow.f64 (exp.f64 x) 2) -1)))
(/.f64 1 (/.f64 (+.f64 (pow.f64 (exp.f64 x) 2) (+.f64 (exp.f64 x) 1)) (+.f64 (pow.f64 (exp.f64 x) 3) -1)))
(/.f64 (+.f64 (pow.f64 (exp.f64 x) 2) -1) (+.f64 (exp.f64 x) 1))
(/.f64 (+.f64 (pow.f64 (exp.f64 x) 2) -1) (-.f64 (exp.f64 x) -1))
(/.f64 (+.f64 (pow.f64 (exp.f64 x) 3) -1) (+.f64 (pow.f64 (exp.f64 x) 2) (+.f64 (exp.f64 x) 1)))
(/.f64 (+.f64 (pow.f64 (exp.f64 x) 3) -1) (+.f64 (pow.f64 (exp.f64 x) 2) (-.f64 1 (*.f64 (exp.f64 x) -1))))
(/.f64 (neg.f64 (+.f64 (pow.f64 (exp.f64 x) 2) -1)) (neg.f64 (+.f64 (exp.f64 x) 1)))
(/.f64 (neg.f64 (+.f64 (pow.f64 (exp.f64 x) 3) -1)) (neg.f64 (+.f64 (pow.f64 (exp.f64 x) 2) (+.f64 (exp.f64 x) 1))))
(pow.f64 (expm1.f64 x) 1)
(pow.f64 (sqrt.f64 (expm1.f64 x)) 2)
(pow.f64 (cbrt.f64 (expm1.f64 x)) 3)
(pow.f64 (pow.f64 (expm1.f64 x) 3) 1/3)
(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 (sqrt.f64 (exp.f64 x)) (sqrt.f64 (exp.f64 x)) -1)
(fma.f64 (pow.f64 (cbrt.f64 (exp.f64 x)) 2) (cbrt.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 (*.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/6 (pow.f64 x 3) (fma.f64 x (*.f64 x 1/2) x))
(fma.f64 x (*.f64 x 1/2) (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)))
(fma.f64 x (*.f64 x 1/2) (fma.f64 1/6 (pow.f64 x 3) (fma.f64 1/24 (pow.f64 x 4) x)))
(+.f64 (exp.f64 x) -1)
(expm1.f64 x)
(+.f64 -1 (exp.f64 x))
(+.f64 (exp.f64 x) -1)
(expm1.f64 x)
(*.f64 1 (expm1.f64 x))
(+.f64 (exp.f64 x) -1)
(expm1.f64 x)
(*.f64 (expm1.f64 x) 1)
(+.f64 (exp.f64 x) -1)
(expm1.f64 x)
(*.f64 (sqrt.f64 (expm1.f64 x)) (sqrt.f64 (expm1.f64 x)))
(+.f64 (exp.f64 x) -1)
(expm1.f64 x)
(*.f64 (cbrt.f64 (expm1.f64 x)) (pow.f64 (cbrt.f64 (expm1.f64 x)) 2))
(+.f64 (exp.f64 x) -1)
(expm1.f64 x)
(*.f64 (pow.f64 (cbrt.f64 (expm1.f64 x)) 2) (cbrt.f64 (expm1.f64 x)))
(+.f64 (exp.f64 x) -1)
(expm1.f64 x)
(*.f64 (+.f64 (pow.f64 (exp.f64 x) 2) -1) (/.f64 1 (+.f64 (exp.f64 x) 1)))
(*.f64 (+.f64 -1 (pow.f64 (exp.f64 x) 2)) (/.f64 1 (+.f64 (exp.f64 x) 1)))
(/.f64 (+.f64 -1 (pow.f64 (exp.f64 x) 2)) (+.f64 (exp.f64 x) 1))
(*.f64 (+.f64 (pow.f64 (exp.f64 x) 3) -1) (/.f64 1 (+.f64 (pow.f64 (exp.f64 x) 2) (+.f64 (exp.f64 x) 1))))
(*.f64 (+.f64 -1 (pow.f64 (exp.f64 x) 3)) (/.f64 1 (+.f64 (pow.f64 (exp.f64 x) 2) (+.f64 (exp.f64 x) 1))))
(/.f64 (+.f64 -1 (pow.f64 (exp.f64 x) 3)) (+.f64 (exp.f64 x) (+.f64 1 (pow.f64 (exp.f64 x) 2))))
(/.f64 (+.f64 -1 (pow.f64 (exp.f64 x) 3)) (fma.f64 (+.f64 (exp.f64 x) 1) (exp.f64 x) 1))
(*.f64 (+.f64 (sqrt.f64 (exp.f64 x)) 1) (-.f64 (sqrt.f64 (exp.f64 x)) 1))
(+.f64 (exp.f64 x) -1)
(expm1.f64 x)
(/.f64 1 (/.f64 (+.f64 (exp.f64 x) 1) (+.f64 (pow.f64 (exp.f64 x) 2) -1)))
(*.f64 (+.f64 -1 (pow.f64 (exp.f64 x) 2)) (/.f64 1 (+.f64 (exp.f64 x) 1)))
(/.f64 (+.f64 -1 (pow.f64 (exp.f64 x) 2)) (+.f64 (exp.f64 x) 1))
(/.f64 1 (/.f64 (+.f64 (pow.f64 (exp.f64 x) 2) (+.f64 (exp.f64 x) 1)) (+.f64 (pow.f64 (exp.f64 x) 3) -1)))
(*.f64 (+.f64 -1 (pow.f64 (exp.f64 x) 3)) (/.f64 1 (+.f64 (pow.f64 (exp.f64 x) 2) (+.f64 (exp.f64 x) 1))))
(/.f64 (+.f64 -1 (pow.f64 (exp.f64 x) 3)) (+.f64 (exp.f64 x) (+.f64 1 (pow.f64 (exp.f64 x) 2))))
(/.f64 (+.f64 -1 (pow.f64 (exp.f64 x) 3)) (fma.f64 (+.f64 (exp.f64 x) 1) (exp.f64 x) 1))
(/.f64 (+.f64 (pow.f64 (exp.f64 x) 2) -1) (+.f64 (exp.f64 x) 1))
(*.f64 (+.f64 -1 (pow.f64 (exp.f64 x) 2)) (/.f64 1 (+.f64 (exp.f64 x) 1)))
(/.f64 (+.f64 -1 (pow.f64 (exp.f64 x) 2)) (+.f64 (exp.f64 x) 1))
(/.f64 (+.f64 (pow.f64 (exp.f64 x) 2) -1) (-.f64 (exp.f64 x) -1))
(*.f64 (+.f64 -1 (pow.f64 (exp.f64 x) 2)) (/.f64 1 (+.f64 (exp.f64 x) 1)))
(/.f64 (+.f64 -1 (pow.f64 (exp.f64 x) 2)) (+.f64 (exp.f64 x) 1))
(/.f64 (+.f64 (pow.f64 (exp.f64 x) 3) -1) (+.f64 (pow.f64 (exp.f64 x) 2) (+.f64 (exp.f64 x) 1)))
(*.f64 (+.f64 -1 (pow.f64 (exp.f64 x) 3)) (/.f64 1 (+.f64 (pow.f64 (exp.f64 x) 2) (+.f64 (exp.f64 x) 1))))
(/.f64 (+.f64 -1 (pow.f64 (exp.f64 x) 3)) (+.f64 (exp.f64 x) (+.f64 1 (pow.f64 (exp.f64 x) 2))))
(/.f64 (+.f64 -1 (pow.f64 (exp.f64 x) 3)) (fma.f64 (+.f64 (exp.f64 x) 1) (exp.f64 x) 1))
(/.f64 (+.f64 (pow.f64 (exp.f64 x) 3) -1) (+.f64 (pow.f64 (exp.f64 x) 2) (-.f64 1 (*.f64 (exp.f64 x) -1))))
(*.f64 (+.f64 -1 (pow.f64 (exp.f64 x) 3)) (/.f64 1 (+.f64 (pow.f64 (exp.f64 x) 2) (+.f64 (exp.f64 x) 1))))
(/.f64 (+.f64 -1 (pow.f64 (exp.f64 x) 3)) (+.f64 (exp.f64 x) (+.f64 1 (pow.f64 (exp.f64 x) 2))))
(/.f64 (+.f64 -1 (pow.f64 (exp.f64 x) 3)) (fma.f64 (+.f64 (exp.f64 x) 1) (exp.f64 x) 1))
(/.f64 (neg.f64 (+.f64 (pow.f64 (exp.f64 x) 2) -1)) (neg.f64 (+.f64 (exp.f64 x) 1)))
(*.f64 (+.f64 -1 (pow.f64 (exp.f64 x) 2)) (/.f64 1 (+.f64 (exp.f64 x) 1)))
(/.f64 (+.f64 -1 (pow.f64 (exp.f64 x) 2)) (+.f64 (exp.f64 x) 1))
(/.f64 (neg.f64 (+.f64 (pow.f64 (exp.f64 x) 3) -1)) (neg.f64 (+.f64 (pow.f64 (exp.f64 x) 2) (+.f64 (exp.f64 x) 1))))
(*.f64 (+.f64 -1 (pow.f64 (exp.f64 x) 3)) (/.f64 1 (+.f64 (pow.f64 (exp.f64 x) 2) (+.f64 (exp.f64 x) 1))))
(/.f64 (+.f64 -1 (pow.f64 (exp.f64 x) 3)) (+.f64 (exp.f64 x) (+.f64 1 (pow.f64 (exp.f64 x) 2))))
(/.f64 (+.f64 -1 (pow.f64 (exp.f64 x) 3)) (fma.f64 (+.f64 (exp.f64 x) 1) (exp.f64 x) 1))
(pow.f64 (expm1.f64 x) 1)
(+.f64 (exp.f64 x) -1)
(expm1.f64 x)
(pow.f64 (sqrt.f64 (expm1.f64 x)) 2)
(+.f64 (exp.f64 x) -1)
(expm1.f64 x)
(pow.f64 (cbrt.f64 (expm1.f64 x)) 3)
(+.f64 (exp.f64 x) -1)
(expm1.f64 x)
(pow.f64 (pow.f64 (expm1.f64 x) 3) 1/3)
(+.f64 (exp.f64 x) -1)
(expm1.f64 x)
(sqrt.f64 (pow.f64 (expm1.f64 x) 2))
(+.f64 (exp.f64 x) -1)
(expm1.f64 x)
(log.f64 (exp.f64 (expm1.f64 x)))
(+.f64 (exp.f64 x) -1)
(expm1.f64 x)
(cbrt.f64 (pow.f64 (expm1.f64 x) 3))
(+.f64 (exp.f64 x) -1)
(expm1.f64 x)
(expm1.f64 x)
(+.f64 (exp.f64 x) -1)
(exp.f64 (log.f64 (expm1.f64 x)))
(+.f64 (exp.f64 x) -1)
(expm1.f64 x)
(log1p.f64 (expm1.f64 (expm1.f64 x)))
(+.f64 (exp.f64 x) -1)
(expm1.f64 x)
(fma.f64 1 (exp.f64 x) -1)
(+.f64 (exp.f64 x) -1)
(expm1.f64 x)
(fma.f64 (sqrt.f64 (exp.f64 x)) (sqrt.f64 (exp.f64 x)) -1)
(+.f64 (exp.f64 x) -1)
(expm1.f64 x)
(fma.f64 (pow.f64 (cbrt.f64 (exp.f64 x)) 2) (cbrt.f64 (exp.f64 x)) -1)
(+.f64 (exp.f64 x) -1)
(expm1.f64 x)

eval23.0ms (1.2%)

Compiler

Compiled 1280 to 645 computations (49.6% saved)

prune12.0ms (0.6%)

Pruning

3 alts after pruning (1 fresh and 2 done)

PrunedKeptTotal
New1161117
Fresh000
Picked011
Done011
Total1163119
Error
0b
Counts
119 → 3
Alt Table
Click to see full alt table
StatusErrorProgram
58.8b
(-.f64 (exp.f64 x) 1)
0.0b
(expm1.f64 x)
1.0b
x
Compiler

Compiled 10 to 7 computations (30% saved)

eval0.0ms (0%)

Compiler

Compiled 1 to 1 computations (0% saved)

prune1.0ms (0.1%)

Pruning

3 alts after pruning (1 fresh and 2 done)

PrunedKeptTotal
New000
Fresh011
Picked000
Done022
Total033
Error
0b
Counts
3 → 3
Alt Table
Click to see full alt table
StatusErrorProgram
58.8b
(-.f64 (exp.f64 x) 1)
0.0b
(expm1.f64 x)
1.0b
x
Compiler

Compiled 10 to 7 computations (30% saved)

eval0.0ms (0%)

Compiler

Compiled 1 to 1 computations (0% saved)

prune1.0ms (0.1%)

Pruning

3 alts after pruning (1 fresh and 2 done)

PrunedKeptTotal
New000
Fresh011
Picked000
Done022
Total033
Error
0b
Counts
3 → 3
Alt Table
Click to see full alt table
StatusErrorProgram
58.8b
(-.f64 (exp.f64 x) 1)
0.0b
(expm1.f64 x)
1.0b
x
Compiler

Compiled 10 to 7 computations (30% saved)

eval0.0ms (0%)

Compiler

Compiled 1 to 1 computations (0% saved)

prune1.0ms (0.1%)

Pruning

3 alts after pruning (1 fresh and 2 done)

PrunedKeptTotal
New000
Fresh011
Picked000
Done022
Total033
Error
0b
Counts
3 → 3
Alt Table
Click to see full alt table
StatusErrorProgram
58.8b
(-.f64 (exp.f64 x) 1)
0.0b
(expm1.f64 x)
1.0b
x
Compiler

Compiled 10 to 7 computations (30% saved)

regimes7.0ms (0.4%)

Accuracy

Total -59.1b remaining (-1512861.9%)

Threshold costs -59.1b (-1512861.9%)

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
ErrorSegmentsBranch
0.0b1x
0.0b1(-.f64 (exp.f64 x) 1)
0.0b1(exp.f64 x)
Compiler

Compiled 18 to 12 computations (33.3% saved)

simplify4.0ms (0.2%)

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)

soundness15.0ms (0.7%)

Algorithm
egg-herbie
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)

end14.0ms (0.7%)

Compiler

Compiled 4 to 2 computations (50% saved)

Profiling

Loading profile data...