Details

Time bar (total: 2.8s)

analyze4.0ms (0.2%)

Algorithm
search
Search
ProbabilityValidUnknownPreconditionInfiniteDomainCan'tIter
0%0%100%0%0%0%0%0
0%0%100%0%0%0%0%1
0%0%100%0%0%0%0%2
25%25%75%0%0%0%0%3
62.5%62.5%37.5%0%0%0%0%4
78.6%68.7%18.7%0%12.5%0%0%5
88.5%71.8%9.4%0%18.7%0%0%6
94%73.4%4.7%0%21.9%0%0%7
96.9%74.2%2.3%0%23.4%0%0%8
98.5%74.6%1.2%0%24.2%0%0%9
99.2%75%0.6%0%24.4%0%0%10
99.6%75.1%0.3%0%24.6%0%0%11
99.8%75.1%0.1%0%24.7%0%0%12
Compiler

Compiled 8 to 6 computations (25% saved)

sample1.5s (53.9%)

Results
779.0ms2780×body1024valid
366.0ms3777×body256valid
255.0ms1386×body512valid
102.0ms313×body2048valid
1.0ms10×body256infinite
Bogosity

preprocess33.0ms (1.2%)

Algorithm
egg-herbie
Rules
95×fma-def_binary64
80×fma-neg_binary64
32×distribute-rgt-in_binary64
28×cancel-sign-sub-inv_binary64
26×distribute-lft-in_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
066
1156
2186
3226
4306
5406
6596
71006
81456
92236
103526
115116
125836
136196
011
Stop Event
saturated
saturated
Calls
Call 1
Inputs
0
Outputs
0
Call 2
Inputs
(/.f64 (-.f64 (exp.f64 x) 1) x)
Outputs
(/.f64 (-.f64 (exp.f64 x) 1) x)
(/.f64 (expm1.f64 x) x)
Compiler

Compiled 8 to 6 computations (25% saved)

simplify20.0ms (0.7%)

Algorithm
egg-herbie
Rules
95×fma-def_binary64
80×fma-neg_binary64
32×distribute-rgt-in_binary64
28×cancel-sign-sub-inv_binary64
26×distribute-lft-in_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
066
1156
2186
3226
4306
5406
6596
71006
81456
92236
103526
115116
125836
136196
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)

eval2.0ms (0.1%)

Compiler

Compiled 11 to 7 computations (36.4% saved)

prune1.0ms (0%)

Pruning

1 alts after pruning (1 fresh and 0 done)

PrunedKeptTotal
New112
Fresh101
Picked000
Done000
Total213
Error
0.0b
Counts
3 → 1
Alt Table
Click to see full alt table
StatusErrorProgram
0.0b
(/.f64 (expm1.f64 x) x)
Compiler

Compiled 5 to 3 computations (40% saved)

localize4.0ms (0.1%)

Local error

Found 1 expressions with local error:

NewErrorProgram
0.0b
(/.f64 (expm1.f64 x) x)
Compiler

Compiled 8 to 3 computations (62.5% saved)

series2.0ms (0.1%)

Counts
1 → 12
Calls

3 calls:

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

rewrite52.0ms (1.8%)

Algorithm
batch-egg-rewrite
Rules
449×pow1_binary64
430×add-sqr-sqrt_binary64
424×*-un-lft-identity_binary64
417×add-log-exp_binary64
417×log1p-expm1-u_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

simplify49.0ms (1.8%)

Algorithm
egg-herbie
Rules
688×times-frac_binary64
636×associate-/l/_binary64
536×unswap-sqr_binary64
495×associate-*l*_binary64
448×fma-def_binary64
Iterations

Useful iterations: 4 (0.0ms)

IterNodesCost
02287
16085
212085
332579
481676
5252276
6451076
Stop Event
node limit
Counts
43 → 40
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)
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))
(fma.f64 x (fma.f64 x 1/6 1/2) 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)))
(fma.f64 x (fma.f64 x 1/6 1/2) (fma.f64 1/24 (pow.f64 x 3) 1))
(fma.f64 x (fma.f64 x (fma.f64 x 1/24 1/6) 1/2) 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)

eval14.0ms (0.5%)

Compiler

Compiled 345 to 161 computations (53.3% saved)

prune18.0ms (0.6%)

Pruning

4 alts after pruning (3 fresh and 1 done)

PrunedKeptTotal
New37340
Fresh000
Picked011
Done000
Total37441
Error
0b
Counts
41 → 4
Alt Table
Click to see full alt table
StatusErrorProgram
0.1b
(*.f64 (neg.f64 (expm1.f64 x)) (/.f64 1 (neg.f64 x)))
0.0b
(/.f64 (expm1.f64 x) x)
22.5b
(+.f64 (*.f64 1/2 x) 1)
21.9b
1
Compiler

Compiled 22 to 17 computations (22.7% saved)

localize19.0ms (0.7%)

Local error

Found 1 expressions with local error:

NewErrorProgram
0.1b
(*.f64 (neg.f64 (expm1.f64 x)) (/.f64 1 (neg.f64 x)))
Compiler

Compiled 22 to 10 computations (54.5% saved)

series2.0ms (0.1%)

Counts
1 → 12
Calls

3 calls:

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

rewrite56.0ms (2%)

Algorithm
batch-egg-rewrite
Rules
555×pow1_binary64
514×add-log-exp_binary64
514×log1p-expm1-u_binary64
514×expm1-log1p-u_binary64
503×add-exp-log_binary64
Iterations

Useful iterations: 1 (0.0ms)

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

simplify149.0ms (5.3%)

Algorithm
egg-herbie
Rules
688×times-frac_binary64
636×associate-/l/_binary64
536×unswap-sqr_binary64
495×associate-*l*_binary64
448×fma-def_binary64
Iterations

Useful iterations: 4 (0.0ms)

IterNodesCost
02287
16085
212085
332579
481676
5252276
6451076
Stop Event
node limit
Counts
35 → 31
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)
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))
(fma.f64 x (fma.f64 x 1/6 1/2) 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)))
(fma.f64 x (fma.f64 x 1/6 1/2) (fma.f64 1/24 (pow.f64 x 3) 1))
(fma.f64 x (fma.f64 x (fma.f64 x 1/24 1/6) 1/2) 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)

localize5.0ms (0.2%)

Compiler

Compiled 12 to 9 computations (25% saved)

eval5.0ms (0.2%)

Compiler

Compiled 221 to 113 computations (48.9% saved)

prune53.0ms (1.9%)

Pruning

4 alts after pruning (2 fresh and 2 done)

PrunedKeptTotal
New29231
Fresh101
Picked011
Done112
Total31435
Error
0b
Counts
35 → 4
Alt Table
Click to see full alt table
StatusErrorProgram
0.0b
(/.f64 (expm1.f64 x) x)
0b
(/.f64 1 (/.f64 x (expm1.f64 x)))
22.5b
(+.f64 (*.f64 1/2 x) 1)
21.9b
1
Compiler

Compiled 20 to 15 computations (25% saved)

localize6.0ms (0.2%)

Local error

Found 1 expressions with local error:

NewErrorProgram
0.0b
(/.f64 x (expm1.f64 x))
Compiler

Compiled 15 to 6 computations (60% saved)

series3.0ms (0.1%)

Counts
1 → 12
Calls

3 calls:

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

rewrite230.0ms (8.2%)

Algorithm
batch-egg-rewrite
Rules
449×pow1_binary64
430×add-sqr-sqrt_binary64
424×*-un-lft-identity_binary64
417×add-log-exp_binary64
417×log1p-expm1-u_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

simplify50.0ms (1.8%)

Algorithm
egg-herbie
Rules
742×associate-*l/_binary64
457×associate-*l*_binary64
417×fma-def_binary64
342×unswap-sqr_binary64
328×times-frac_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
02089
14585
29285
323879
469679
5224379
6383279
7573879
Stop Event
node limit
Counts
42 → 39
Calls
Call 1
Inputs
1
(+.f64 (*.f64 -1/2 x) 1)
(+.f64 (*.f64 -1/2 x) (+.f64 1 (*.f64 1/12 (pow.f64 x 2))))
(+.f64 (*.f64 -1/720 (pow.f64 x 4)) (+.f64 (*.f64 -1/2 x) (+.f64 1 (*.f64 1/12 (pow.f64 x 2)))))
(/.f64 x (-.f64 (exp.f64 x) 1))
(/.f64 x (-.f64 (exp.f64 x) 1))
(/.f64 x (-.f64 (exp.f64 x) 1))
(/.f64 x (-.f64 (exp.f64 x) 1))
(/.f64 x (-.f64 (exp.f64 x) 1))
(/.f64 x (-.f64 (exp.f64 x) 1))
(/.f64 x (-.f64 (exp.f64 x) 1))
(/.f64 x (-.f64 (exp.f64 x) 1))
Outputs
1
(+.f64 (*.f64 -1/2 x) 1)
(fma.f64 -1/2 x 1)
(+.f64 (*.f64 -1/2 x) (+.f64 1 (*.f64 1/12 (pow.f64 x 2))))
(+.f64 (fma.f64 -1/2 x 1) (*.f64 1/12 (*.f64 x x)))
(fma.f64 -1/2 x (fma.f64 1/12 (*.f64 x x) 1))
(fma.f64 -1/2 x (fma.f64 x (*.f64 x 1/12) 1))
(fma.f64 x (fma.f64 x 1/12 -1/2) 1)
(+.f64 (*.f64 -1/720 (pow.f64 x 4)) (+.f64 (*.f64 -1/2 x) (+.f64 1 (*.f64 1/12 (pow.f64 x 2)))))
(fma.f64 -1/720 (pow.f64 x 4) (+.f64 (fma.f64 -1/2 x 1) (*.f64 1/12 (*.f64 x x))))
(fma.f64 -1/720 (pow.f64 x 4) (fma.f64 -1/2 x (fma.f64 1/12 (*.f64 x x) 1)))
(fma.f64 -1/2 x (fma.f64 -1/720 (pow.f64 x 4) (fma.f64 x (*.f64 x 1/12) 1)))
(fma.f64 x (fma.f64 x 1/12 -1/2) (fma.f64 -1/720 (pow.f64 x 4) 1))
(fma.f64 x (fma.f64 -1/720 (pow.f64 x 3) (fma.f64 x 1/12 -1/2)) 1)
(fma.f64 -1/720 (pow.f64 x 4) (fma.f64 x (fma.f64 x 1/12 -1/2) 1))
(/.f64 x (-.f64 (exp.f64 x) 1))
(/.f64 x (expm1.f64 x))
(/.f64 x (-.f64 (exp.f64 x) 1))
(/.f64 x (expm1.f64 x))
(/.f64 x (-.f64 (exp.f64 x) 1))
(/.f64 x (expm1.f64 x))
(/.f64 x (-.f64 (exp.f64 x) 1))
(/.f64 x (expm1.f64 x))
(/.f64 x (-.f64 (exp.f64 x) 1))
(/.f64 x (expm1.f64 x))
(/.f64 x (-.f64 (exp.f64 x) 1))
(/.f64 x (expm1.f64 x))
(/.f64 x (-.f64 (exp.f64 x) 1))
(/.f64 x (expm1.f64 x))
(/.f64 x (-.f64 (exp.f64 x) 1))
(/.f64 x (expm1.f64 x))

eval9.0ms (0.3%)

Compiler

Compiled 415 to 237 computations (42.9% saved)

prune44.0ms (1.6%)

Pruning

5 alts after pruning (2 fresh and 3 done)

PrunedKeptTotal
New38139
Fresh011
Picked011
Done022
Total38543
Error
0b
Counts
43 → 5
Alt Table
Click to see full alt table
StatusErrorProgram
0.0b
(/.f64 (expm1.f64 x) x)
0b
(/.f64 1 (/.f64 x (expm1.f64 x)))
22.5b
(+.f64 (*.f64 1/2 x) 1)
18.7b
(/.f64 1 (+.f64 (*.f64 -1/2 x) 1))
21.9b
1
Compiler

Compiled 28 to 22 computations (21.4% saved)

localize8.0ms (0.3%)

Local error

Found 1 expressions with local error:

NewErrorProgram
0.0b
(/.f64 1 (+.f64 (*.f64 -1/2 x) 1))
Compiler

Compiled 19 to 15 computations (21.1% saved)

series2.0ms (0.1%)

Counts
1 → 12
Calls

3 calls:

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

rewrite57.0ms (2%)

Algorithm
batch-egg-rewrite
Rules
688×pow1_binary64
641×log1p-expm1-u_binary64
641×expm1-log1p-u_binary64
640×add-log-exp_binary64
628×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

simplify116.0ms (4.1%)

Algorithm
egg-herbie
Rules
724×fma-neg_binary64
686×times-frac_binary64
450×fma-def_binary64
417×cancel-sign-sub-inv_binary64
398×associate-*l/_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
041193
1112179
2306177
3985171
43002171
Stop Event
node limit
Counts
34 → 36
Calls
Call 1
Inputs
1
(+.f64 (*.f64 1/2 x) 1)
(+.f64 (*.f64 1/2 x) (+.f64 1 (*.f64 1/4 (pow.f64 x 2))))
(+.f64 (*.f64 1/2 x) (+.f64 1 (+.f64 (*.f64 1/4 (pow.f64 x 2)) (*.f64 1/8 (pow.f64 x 3)))))
(/.f64 -2 x)
(neg.f64 (+.f64 (*.f64 4 (/.f64 1 (pow.f64 x 2))) (*.f64 2 (/.f64 1 x))))
(neg.f64 (+.f64 (*.f64 8 (/.f64 1 (pow.f64 x 3))) (+.f64 (*.f64 4 (/.f64 1 (pow.f64 x 2))) (*.f64 2 (/.f64 1 x)))))
(neg.f64 (+.f64 (*.f64 8 (/.f64 1 (pow.f64 x 3))) (+.f64 (*.f64 4 (/.f64 1 (pow.f64 x 2))) (+.f64 (*.f64 2 (/.f64 1 x)) (*.f64 16 (/.f64 1 (pow.f64 x 4)))))))
(/.f64 -2 x)
(neg.f64 (+.f64 (*.f64 4 (/.f64 1 (pow.f64 x 2))) (*.f64 2 (/.f64 1 x))))
(neg.f64 (+.f64 (*.f64 8 (/.f64 1 (pow.f64 x 3))) (+.f64 (*.f64 4 (/.f64 1 (pow.f64 x 2))) (*.f64 2 (/.f64 1 x)))))
(neg.f64 (+.f64 (*.f64 8 (/.f64 1 (pow.f64 x 3))) (+.f64 (*.f64 4 (/.f64 1 (pow.f64 x 2))) (+.f64 (*.f64 2 (/.f64 1 x)) (*.f64 16 (/.f64 1 (pow.f64 x 4)))))))
Outputs
1
(+.f64 (*.f64 1/2 x) 1)
(fma.f64 1/2 x 1)
(+.f64 (*.f64 1/2 x) (+.f64 1 (*.f64 1/4 (pow.f64 x 2))))
(+.f64 (fma.f64 1/2 x 1) (*.f64 1/4 (*.f64 x x)))
(fma.f64 1/2 x (fma.f64 1/4 (*.f64 x x) 1))
(fma.f64 1/2 x (fma.f64 x (*.f64 x 1/4) 1))
(fma.f64 x (fma.f64 x 1/4 1/2) 1)
(+.f64 (*.f64 1/2 x) (+.f64 1 (+.f64 (*.f64 1/4 (pow.f64 x 2)) (*.f64 1/8 (pow.f64 x 3)))))
(+.f64 (fma.f64 1/2 x 1) (fma.f64 1/4 (*.f64 x x) (*.f64 1/8 (pow.f64 x 3))))
(fma.f64 1/2 x (fma.f64 x (*.f64 x 1/4) (fma.f64 1/8 (pow.f64 x 3) 1)))
(fma.f64 1/2 x (fma.f64 (*.f64 x x) (fma.f64 x 1/8 1/4) 1))
(fma.f64 1/8 (pow.f64 x 3) (fma.f64 x (fma.f64 x 1/4 1/2) 1))
(/.f64 -2 x)
(neg.f64 (+.f64 (*.f64 4 (/.f64 1 (pow.f64 x 2))) (*.f64 2 (/.f64 1 x))))
(neg.f64 (+.f64 (/.f64 4 (*.f64 x x)) (/.f64 2 x)))
(+.f64 (/.f64 -4 (*.f64 x x)) (/.f64 -2 x))
(-.f64 (/.f64 -2 x) (/.f64 4 (*.f64 x x)))
(-.f64 (/.f64 (/.f64 -4 x) x) (/.f64 2 x))
(neg.f64 (+.f64 (*.f64 8 (/.f64 1 (pow.f64 x 3))) (+.f64 (*.f64 4 (/.f64 1 (pow.f64 x 2))) (*.f64 2 (/.f64 1 x)))))
(neg.f64 (+.f64 (+.f64 (/.f64 4 (*.f64 x x)) (/.f64 2 x)) (/.f64 8 (pow.f64 x 3))))
(+.f64 (+.f64 (/.f64 -8 (pow.f64 x 3)) (/.f64 -4 (*.f64 x x))) (/.f64 -2 x))
(+.f64 (-.f64 (/.f64 -2 x) (/.f64 4 (*.f64 x x))) (/.f64 -8 (pow.f64 x 3)))
(+.f64 (+.f64 (/.f64 -4 (*.f64 x x)) (/.f64 -2 x)) (/.f64 -8 (pow.f64 x 3)))
(+.f64 (-.f64 (/.f64 (/.f64 -4 x) x) (/.f64 2 x)) (/.f64 -8 (pow.f64 x 3)))
(neg.f64 (+.f64 (*.f64 8 (/.f64 1 (pow.f64 x 3))) (+.f64 (*.f64 4 (/.f64 1 (pow.f64 x 2))) (+.f64 (*.f64 2 (/.f64 1 x)) (*.f64 16 (/.f64 1 (pow.f64 x 4)))))))
(neg.f64 (+.f64 (/.f64 8 (pow.f64 x 3)) (+.f64 (/.f64 4 (*.f64 x x)) (+.f64 (/.f64 2 x) (/.f64 16 (pow.f64 x 4))))))
(-.f64 (/.f64 -8 (pow.f64 x 3)) (+.f64 (/.f64 4 (*.f64 x x)) (+.f64 (/.f64 2 x) (/.f64 16 (pow.f64 x 4)))))
(+.f64 (+.f64 (-.f64 (/.f64 -2 x) (/.f64 4 (*.f64 x x))) (/.f64 -8 (pow.f64 x 3))) (/.f64 -16 (pow.f64 x 4)))
(+.f64 (+.f64 (/.f64 -4 (*.f64 x x)) (/.f64 -2 x)) (+.f64 (/.f64 -8 (pow.f64 x 3)) (/.f64 -16 (pow.f64 x 4))))
(-.f64 (-.f64 (/.f64 (/.f64 -4 x) x) (/.f64 2 x)) (+.f64 (/.f64 8 (pow.f64 x 3)) (/.f64 16 (pow.f64 x 4))))
(/.f64 -2 x)
(neg.f64 (+.f64 (*.f64 4 (/.f64 1 (pow.f64 x 2))) (*.f64 2 (/.f64 1 x))))
(neg.f64 (+.f64 (/.f64 4 (*.f64 x x)) (/.f64 2 x)))
(+.f64 (/.f64 -4 (*.f64 x x)) (/.f64 -2 x))
(-.f64 (/.f64 -2 x) (/.f64 4 (*.f64 x x)))
(-.f64 (/.f64 (/.f64 -4 x) x) (/.f64 2 x))
(neg.f64 (+.f64 (*.f64 8 (/.f64 1 (pow.f64 x 3))) (+.f64 (*.f64 4 (/.f64 1 (pow.f64 x 2))) (*.f64 2 (/.f64 1 x)))))
(neg.f64 (+.f64 (+.f64 (/.f64 4 (*.f64 x x)) (/.f64 2 x)) (/.f64 8 (pow.f64 x 3))))
(+.f64 (+.f64 (/.f64 -8 (pow.f64 x 3)) (/.f64 -4 (*.f64 x x))) (/.f64 -2 x))
(+.f64 (-.f64 (/.f64 -2 x) (/.f64 4 (*.f64 x x))) (/.f64 -8 (pow.f64 x 3)))
(+.f64 (+.f64 (/.f64 -4 (*.f64 x x)) (/.f64 -2 x)) (/.f64 -8 (pow.f64 x 3)))
(+.f64 (-.f64 (/.f64 (/.f64 -4 x) x) (/.f64 2 x)) (/.f64 -8 (pow.f64 x 3)))
(neg.f64 (+.f64 (*.f64 8 (/.f64 1 (pow.f64 x 3))) (+.f64 (*.f64 4 (/.f64 1 (pow.f64 x 2))) (+.f64 (*.f64 2 (/.f64 1 x)) (*.f64 16 (/.f64 1 (pow.f64 x 4)))))))
(neg.f64 (+.f64 (/.f64 8 (pow.f64 x 3)) (+.f64 (/.f64 4 (*.f64 x x)) (+.f64 (/.f64 2 x) (/.f64 16 (pow.f64 x 4))))))
(-.f64 (/.f64 -8 (pow.f64 x 3)) (+.f64 (/.f64 4 (*.f64 x x)) (+.f64 (/.f64 2 x) (/.f64 16 (pow.f64 x 4)))))
(+.f64 (+.f64 (-.f64 (/.f64 -2 x) (/.f64 4 (*.f64 x x))) (/.f64 -8 (pow.f64 x 3))) (/.f64 -16 (pow.f64 x 4)))
(+.f64 (+.f64 (/.f64 -4 (*.f64 x x)) (/.f64 -2 x)) (+.f64 (/.f64 -8 (pow.f64 x 3)) (/.f64 -16 (pow.f64 x 4))))
(-.f64 (-.f64 (/.f64 (/.f64 -4 x) x) (/.f64 2 x)) (+.f64 (/.f64 8 (pow.f64 x 3)) (/.f64 16 (pow.f64 x 4))))

eval13.0ms (0.4%)

Compiler

Compiled 404 to 340 computations (15.8% saved)

prune7.0ms (0.2%)

Pruning

7 alts after pruning (3 fresh and 4 done)

PrunedKeptTotal
New34236
Fresh011
Picked011
Done033
Total34741
Error
0b
Counts
41 → 7
Alt Table
Click to see full alt table
StatusErrorProgram
22.5b
(+.f64 (*.f64 1/2 x) 1)
59.6b
(-.f64 (/.f64 (/.f64 -4 x) x) (/.f64 2 x))
0.0b
(/.f64 (expm1.f64 x) x)
0b
(/.f64 1 (/.f64 x (expm1.f64 x)))
58.5b
(/.f64 -2 x)
18.7b
(/.f64 1 (+.f64 (*.f64 -1/2 x) 1))
21.9b
1
Compiler

Compiled 42 to 32 computations (23.8% saved)

regimes27.0ms (1%)

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

3 calls:

15.0ms
(/.f64 (-.f64 (exp.f64 x) 1) x)
6.0ms
x
3.0ms
(/.f64 (-.f64 (exp.f64 x) 1) x)
Results
ErrorSegmentsBranch
0b1x
0b1(/.f64 (-.f64 (exp.f64 x) 1) x)
0b1(/.f64 (-.f64 (exp.f64 x) 1) x)
Compiler

Compiled 67 to 46 computations (31.3% saved)

regimes12.0ms (0.4%)

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

1 calls:

10.0ms
x
Results
ErrorSegmentsBranch
0.0b1x
Compiler

Compiled 33 to 24 computations (27.3% saved)

regimes8.0ms (0.3%)

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

1 calls:

6.0ms
x
Results
ErrorSegmentsBranch
18.7b1x
Compiler

Compiled 29 to 22 computations (24.1% saved)

regimes11.0ms (0.4%)

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

1 calls:

9.0ms
x
Results
ErrorSegmentsBranch
18.7b2x
Compiler

Compiled 13 to 10 computations (23.1% saved)

bsearch20.0ms (0.7%)

Algorithm
binary-search
Steps
TimeLeftRight
20.0ms
-74931.10028488972
-0.003182395706114424
Compiler

Compiled 11 to 8 computations (27.3% saved)

regimes8.0ms (0.3%)

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

1 calls:

7.0ms
x
Results
ErrorSegmentsBranch
18.9b2x
Compiler

Compiled 8 to 6 computations (25% saved)

bsearch50.0ms (1.8%)

Algorithm
binary-search
Steps
TimeLeftRight
50.0ms
-74931.10028488972
-0.003182395706114424
Compiler

Compiled 11 to 8 computations (27.3% saved)

regimes7.0ms (0.2%)

Accuracy

Total 0.0b remaining (0%)

Threshold costs 0.0b (0%)

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

1 calls:

6.0ms
x
Results
ErrorSegmentsBranch
21.9b1x
Compiler

Compiled 5 to 4 computations (20% saved)

simplify5.0ms (0.2%)

Algorithm
egg-herbie
Rules
+-commutative_binary64
*-commutative_binary64
1-exp_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
02154
12754
Stop Event
fuel
saturated
Calls
Call 1
Inputs
(/.f64 1 (/.f64 x (expm1.f64 x)))
(/.f64 (expm1.f64 x) x)
(/.f64 1 (+.f64 (*.f64 -1/2 x) 1))
(if (<=.f64 x -2574613001415181/34359738368) (/.f64 -2 x) (+.f64 (*.f64 1/2 x) 1))
(if (<=.f64 x -2574613001415181/34359738368) (/.f64 -2 x) 1)
1
Outputs
(/.f64 1 (/.f64 x (expm1.f64 x)))
(/.f64 (expm1.f64 x) x)
(/.f64 1 (+.f64 (*.f64 -1/2 x) 1))
(/.f64 1 (+.f64 1 (*.f64 x -1/2)))
(if (<=.f64 x -2574613001415181/34359738368) (/.f64 -2 x) (+.f64 (*.f64 1/2 x) 1))
(if (<=.f64 x -2574613001415181/34359738368) (/.f64 -2 x) (+.f64 1 (*.f64 x 1/2)))
(if (<=.f64 x -2574613001415181/34359738368) (/.f64 -2 x) 1)
1
Compiler

Compiled 44 to 34 computations (22.7% saved)

soundness53.0ms (1.9%)

Algorithm
egg-herbie
Rules
95×fma-def_binary64
80×fma-neg_binary64
32×distribute-rgt-in_binary64
28×cancel-sign-sub-inv_binary64
26×distribute-lft-in_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
066
1156
2186
3226
4306
5406
6596
71006
81456
92236
103526
115116
125836
136196
Stop Event
saturated
Compiler

Compiled 12 to 8 computations (33.3% saved)

end65.0ms (2.3%)

Compiler

Compiled 39 to 28 computations (28.2% saved)

Profiling

Loading profile data...