Details

Time bar (total: 6.6s)

analyze4.0ms (0.1%)

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
0%0%50%0%25%25%0%3
50%25%25%0%25%25%0%4
75%37.5%12.5%0%25%25%0%5
87.5%43.7%6.2%0%25%25%0%6
93.8%46.9%3.1%0%25%25%0%7
96.9%48.4%1.6%0%25%25%0%8
98.4%49.2%0.8%0%25%25%0%9
99.2%49.6%0.4%0%25%25%0%10
99.6%49.8%0.2%0%25%25%0%11
99.8%49.9%0.1%0%25%25%0%12
Compiler

Compiled 10 to 8 computations (20% saved)

sample3.8s (56.7%)

Results
2.2s4197×body1024valid
1.0s2032×body512valid
290.0ms423×body2048valid
230.0ms1604×body256valid
0.0msbody256invalid
Bogosity

preprocess233.0ms (3.5%)

Algorithm
egg-herbie
Rules
1088×fma-neg_binary64
890×fma-def_binary64
719×distribute-rgt-in_binary64
491×distribute-lft-in_binary64
331×sub-neg_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0712
11810
22810
34110
47110
510310
615910
729210
860410
9103710
10144410
11200210
12274010
13383510
14467010
15476810
16480010
17480010
18639310
19674810
20682610
21683410
22684210
23684210
24704210
011
Stop Event
saturated
node limit
Calls
Call 1
Inputs
0
Outputs
0
Call 2
Inputs
(log.f64 (/.f64 (-.f64 1 eps) (+.f64 1 eps)))
Outputs
(log.f64 (/.f64 (-.f64 1 eps) (+.f64 1 eps)))
(-.f64 (log1p.f64 (neg.f64 eps)) (log1p.f64 eps))
Compiler

Compiled 10 to 8 computations (20% saved)

simplify223.0ms (3.4%)

Algorithm
egg-herbie
Rules
1088×fma-neg_binary64
890×fma-def_binary64
719×distribute-rgt-in_binary64
491×distribute-lft-in_binary64
331×sub-neg_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0712
11810
22810
34110
47110
510310
615910
729210
860410
9103710
10144410
11200210
12274010
13383510
14467010
15476810
16480010
17480010
18639310
19674810
20682610
21683410
22684210
23684210
24704210
Stop Event
node limit
Counts
1 → 2
Calls
Call 1
Inputs
(log.f64 (/.f64 (-.f64 1 eps) (+.f64 1 eps)))
Outputs
(log.f64 (/.f64 (-.f64 1 eps) (+.f64 1 eps)))
(-.f64 (log1p.f64 (neg.f64 eps)) (log1p.f64 eps))

eval1.0ms (0%)

Compiler

Compiled 15 to 11 computations (26.7% saved)

prune3.0ms (0%)

Pruning

3 alts after pruning (3 fresh and 0 done)

PrunedKeptTotal
New022
Fresh011
Picked000
Done000
Total033
Error
0.0b
Counts
3 → 2
Alt Table
Click to see full alt table
StatusErrorProgram
0.0b
(-.f64 (log1p.f64 (neg.f64 eps)) (log1p.f64 eps))
58.6b
(log.f64 (/.f64 (-.f64 1 eps) (+.f64 1 eps)))
Compiler

Compiled 16 to 12 computations (25% saved)

localize22.0ms (0.3%)

Local error

Found 4 expressions with local error:

NewErrorProgram
5.5b
(log.f64 (/.f64 (-.f64 1 eps) (+.f64 1 eps)))
0.0b
(/.f64 (-.f64 1 eps) (+.f64 1 eps))
0.0b
(/.f64 (-.f64 1 eps) (+.f64 1 eps))
5.5b
(log.f64 (/.f64 (-.f64 1 eps) (+.f64 1 eps)))
Compiler

Compiled 24 to 17 computations (29.2% saved)

series7.0ms (0.1%)

Counts
2 → 24
Calls

6 calls:

TimeVariablePointExpression
2.0ms
eps
@0
(log.f64 (/.f64 (-.f64 1 eps) (+.f64 1 eps)))
1.0ms
eps
@inf
(log.f64 (/.f64 (-.f64 1 eps) (+.f64 1 eps)))
1.0ms
eps
@-inf
(log.f64 (/.f64 (-.f64 1 eps) (+.f64 1 eps)))
1.0ms
eps
@inf
(/.f64 (-.f64 1 eps) (+.f64 1 eps))
1.0ms
eps
@0
(/.f64 (-.f64 1 eps) (+.f64 1 eps))

rewrite94.0ms (1.4%)

Algorithm
batch-egg-rewrite
Rules
884×pow1_binary64
826×log1p-expm1-u_binary64
826×expm1-log1p-u_binary64
825×add-log-exp_binary64
810×add-exp-log_binary64
Iterations

Useful iterations: 1 (0.0ms)

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

simplify78.0ms (1.2%)

Algorithm
egg-herbie
Rules
613×fma-def_binary64
502×times-frac_binary64
462×fma-neg_binary64
449×associate-/l/_binary64
410×associate-*l/_binary64
Iterations

Useful iterations: 4 (0.0ms)

IterNodesCost
057309
1164307
2410307
31133301
43353297
Stop Event
node limit
Counts
88 → 92
Calls
Call 1
Inputs
(*.f64 -2 eps)
(+.f64 (*.f64 -2 eps) (*.f64 -2/3 (pow.f64 eps 3)))
(+.f64 (*.f64 -2 eps) (+.f64 (*.f64 -2/5 (pow.f64 eps 5)) (*.f64 -2/3 (pow.f64 eps 3))))
(+.f64 (*.f64 -2 eps) (+.f64 (*.f64 -2/5 (pow.f64 eps 5)) (+.f64 (*.f64 -2/7 (pow.f64 eps 7)) (*.f64 -2/3 (pow.f64 eps 3)))))
(log.f64 -1)
(-.f64 (log.f64 -1) (*.f64 2 (/.f64 1 eps)))
(-.f64 (log.f64 -1) (+.f64 (*.f64 2/3 (/.f64 1 (pow.f64 eps 3))) (*.f64 2 (/.f64 1 eps))))
(-.f64 (log.f64 -1) (+.f64 (*.f64 2/3 (/.f64 1 (pow.f64 eps 3))) (+.f64 (*.f64 2 (/.f64 1 eps)) (*.f64 2/5 (/.f64 1 (pow.f64 eps 5))))))
(log.f64 -1)
(-.f64 (log.f64 -1) (*.f64 2 (/.f64 1 eps)))
(-.f64 (log.f64 -1) (+.f64 (*.f64 2/3 (/.f64 1 (pow.f64 eps 3))) (*.f64 2 (/.f64 1 eps))))
(-.f64 (log.f64 -1) (+.f64 (*.f64 2/3 (/.f64 1 (pow.f64 eps 3))) (+.f64 (*.f64 2 (/.f64 1 eps)) (*.f64 2/5 (/.f64 1 (pow.f64 eps 5))))))
1
(+.f64 (*.f64 -2 eps) 1)
(+.f64 (*.f64 -2 eps) (+.f64 (*.f64 2 (pow.f64 eps 2)) 1))
(+.f64 (*.f64 -2 eps) (+.f64 (*.f64 2 (pow.f64 eps 2)) (+.f64 1 (*.f64 -2 (pow.f64 eps 3)))))
-1
(-.f64 (*.f64 2 (/.f64 1 eps)) 1)
(-.f64 (*.f64 2 (/.f64 1 eps)) (+.f64 1 (*.f64 2 (/.f64 1 (pow.f64 eps 2)))))
(-.f64 (+.f64 (*.f64 2 (/.f64 1 (pow.f64 eps 3))) (*.f64 2 (/.f64 1 eps))) (+.f64 1 (*.f64 2 (/.f64 1 (pow.f64 eps 2)))))
-1
(-.f64 (*.f64 2 (/.f64 1 eps)) 1)
(-.f64 (*.f64 2 (/.f64 1 eps)) (+.f64 1 (*.f64 2 (/.f64 1 (pow.f64 eps 2)))))
(-.f64 (+.f64 (*.f64 2 (/.f64 1 (pow.f64 eps 3))) (*.f64 2 (/.f64 1 eps))) (+.f64 1 (*.f64 2 (/.f64 1 (pow.f64 eps 2)))))
Outputs
(*.f64 -2 eps)
(+.f64 (*.f64 -2 eps) (*.f64 -2/3 (pow.f64 eps 3)))
(fma.f64 -2 eps (*.f64 -2/3 (pow.f64 eps 3)))
(fma.f64 -2/3 (pow.f64 eps 3) (*.f64 -2 eps))
(+.f64 (*.f64 -2 eps) (+.f64 (*.f64 -2/5 (pow.f64 eps 5)) (*.f64 -2/3 (pow.f64 eps 3))))
(fma.f64 -2 eps (fma.f64 -2/5 (pow.f64 eps 5) (*.f64 -2/3 (pow.f64 eps 3))))
(fma.f64 -2 eps (fma.f64 -2/3 (pow.f64 eps 3) (*.f64 -2/5 (pow.f64 eps 5))))
(fma.f64 eps (fma.f64 eps (*.f64 eps -2/3) -2) (*.f64 -2/5 (pow.f64 eps 5)))
(+.f64 (*.f64 -2 eps) (+.f64 (*.f64 -2/5 (pow.f64 eps 5)) (+.f64 (*.f64 -2/7 (pow.f64 eps 7)) (*.f64 -2/3 (pow.f64 eps 3)))))
(fma.f64 -2 eps (fma.f64 -2/5 (pow.f64 eps 5) (fma.f64 -2/7 (pow.f64 eps 7) (*.f64 -2/3 (pow.f64 eps 3)))))
(fma.f64 -2 eps (fma.f64 -2/5 (pow.f64 eps 5) (fma.f64 -2/3 (pow.f64 eps 3) (*.f64 -2/7 (pow.f64 eps 7)))))
(fma.f64 -2 eps (fma.f64 -2/3 (pow.f64 eps 3) (fma.f64 -2/5 (pow.f64 eps 5) (*.f64 -2/7 (pow.f64 eps 7)))))
(log.f64 -1)
(-.f64 (log.f64 -1) (*.f64 2 (/.f64 1 eps)))
(-.f64 (log.f64 -1) (/.f64 2 eps))
(+.f64 (log.f64 -1) (/.f64 -2 eps))
(-.f64 (log.f64 -1) (+.f64 (*.f64 2/3 (/.f64 1 (pow.f64 eps 3))) (*.f64 2 (/.f64 1 eps))))
(-.f64 (log.f64 -1) (+.f64 (/.f64 2 eps) (/.f64 2/3 (pow.f64 eps 3))))
(+.f64 (-.f64 (log.f64 -1) (/.f64 2/3 (pow.f64 eps 3))) (/.f64 -2 eps))
(+.f64 (+.f64 (log.f64 -1) (/.f64 -2 eps)) (/.f64 -2/3 (pow.f64 eps 3)))
(-.f64 (+.f64 (log.f64 -1) (/.f64 -2 eps)) (/.f64 2/3 (pow.f64 eps 3)))
(+.f64 (/.f64 -2 eps) (+.f64 (log.f64 -1) (/.f64 -2/3 (pow.f64 eps 3))))
(-.f64 (log.f64 -1) (+.f64 (*.f64 2/3 (/.f64 1 (pow.f64 eps 3))) (+.f64 (*.f64 2 (/.f64 1 eps)) (*.f64 2/5 (/.f64 1 (pow.f64 eps 5))))))
(-.f64 (log.f64 -1) (+.f64 (/.f64 2/3 (pow.f64 eps 3)) (+.f64 (/.f64 2 eps) (/.f64 2/5 (pow.f64 eps 5)))))
(-.f64 (log.f64 -1) (+.f64 (/.f64 2 eps) (+.f64 (/.f64 2/3 (pow.f64 eps 3)) (/.f64 2/5 (pow.f64 eps 5)))))
(+.f64 (log.f64 -1) (+.f64 (/.f64 -2 eps) (+.f64 (/.f64 -2/3 (pow.f64 eps 3)) (/.f64 -2/5 (pow.f64 eps 5)))))
(+.f64 (+.f64 (log.f64 -1) (/.f64 -2 eps)) (+.f64 (/.f64 -2/3 (pow.f64 eps 3)) (/.f64 -2/5 (pow.f64 eps 5))))
(log.f64 -1)
(-.f64 (log.f64 -1) (*.f64 2 (/.f64 1 eps)))
(-.f64 (log.f64 -1) (/.f64 2 eps))
(+.f64 (log.f64 -1) (/.f64 -2 eps))
(-.f64 (log.f64 -1) (+.f64 (*.f64 2/3 (/.f64 1 (pow.f64 eps 3))) (*.f64 2 (/.f64 1 eps))))
(-.f64 (log.f64 -1) (+.f64 (/.f64 2 eps) (/.f64 2/3 (pow.f64 eps 3))))
(+.f64 (-.f64 (log.f64 -1) (/.f64 2/3 (pow.f64 eps 3))) (/.f64 -2 eps))
(+.f64 (+.f64 (log.f64 -1) (/.f64 -2 eps)) (/.f64 -2/3 (pow.f64 eps 3)))
(-.f64 (+.f64 (log.f64 -1) (/.f64 -2 eps)) (/.f64 2/3 (pow.f64 eps 3)))
(+.f64 (/.f64 -2 eps) (+.f64 (log.f64 -1) (/.f64 -2/3 (pow.f64 eps 3))))
(-.f64 (log.f64 -1) (+.f64 (*.f64 2/3 (/.f64 1 (pow.f64 eps 3))) (+.f64 (*.f64 2 (/.f64 1 eps)) (*.f64 2/5 (/.f64 1 (pow.f64 eps 5))))))
(-.f64 (log.f64 -1) (+.f64 (/.f64 2/3 (pow.f64 eps 3)) (+.f64 (/.f64 2 eps) (/.f64 2/5 (pow.f64 eps 5)))))
(-.f64 (log.f64 -1) (+.f64 (/.f64 2 eps) (+.f64 (/.f64 2/3 (pow.f64 eps 3)) (/.f64 2/5 (pow.f64 eps 5)))))
(+.f64 (log.f64 -1) (+.f64 (/.f64 -2 eps) (+.f64 (/.f64 -2/3 (pow.f64 eps 3)) (/.f64 -2/5 (pow.f64 eps 5)))))
(+.f64 (+.f64 (log.f64 -1) (/.f64 -2 eps)) (+.f64 (/.f64 -2/3 (pow.f64 eps 3)) (/.f64 -2/5 (pow.f64 eps 5))))
1
(+.f64 (*.f64 -2 eps) 1)
(fma.f64 -2 eps 1)
(+.f64 (*.f64 -2 eps) (+.f64 (*.f64 2 (pow.f64 eps 2)) 1))
(fma.f64 -2 eps (fma.f64 2 (*.f64 eps eps) 1))
(fma.f64 -2 eps (fma.f64 eps (*.f64 eps 2) 1))
(fma.f64 eps (fma.f64 eps 2 -2) 1)
(+.f64 (*.f64 -2 eps) (+.f64 (*.f64 2 (pow.f64 eps 2)) (+.f64 1 (*.f64 -2 (pow.f64 eps 3)))))
(fma.f64 -2 eps (+.f64 (fma.f64 2 (*.f64 eps eps) 1) (*.f64 -2 (pow.f64 eps 3))))
(fma.f64 -2 eps (fma.f64 2 (*.f64 eps eps) (fma.f64 -2 (pow.f64 eps 3) 1)))
(fma.f64 -2 eps (fma.f64 -2 (pow.f64 eps 3) (fma.f64 eps (*.f64 eps 2) 1)))
(fma.f64 (*.f64 eps eps) (fma.f64 -2 eps 2) (fma.f64 -2 eps 1))
-1
(-.f64 (*.f64 2 (/.f64 1 eps)) 1)
(+.f64 (/.f64 2 eps) -1)
(+.f64 -1 (/.f64 2 eps))
(-.f64 (*.f64 2 (/.f64 1 eps)) (+.f64 1 (*.f64 2 (/.f64 1 (pow.f64 eps 2)))))
(-.f64 (/.f64 2 eps) (+.f64 1 (/.f64 2 (*.f64 eps eps))))
(+.f64 (/.f64 2 eps) (-.f64 -1 (/.f64 2 (*.f64 eps eps))))
(+.f64 -1 (+.f64 (/.f64 -2 (*.f64 eps eps)) (/.f64 2 eps)))
(+.f64 (/.f64 2 eps) (+.f64 -1 (/.f64 -2 (*.f64 eps eps))))
(-.f64 (+.f64 (*.f64 2 (/.f64 1 (pow.f64 eps 3))) (*.f64 2 (/.f64 1 eps))) (+.f64 1 (*.f64 2 (/.f64 1 (pow.f64 eps 2)))))
(+.f64 (/.f64 2 (pow.f64 eps 3)) (-.f64 (/.f64 2 eps) (+.f64 1 (/.f64 2 (*.f64 eps eps)))))
(+.f64 (/.f64 2 eps) (-.f64 (/.f64 2 (pow.f64 eps 3)) (+.f64 1 (/.f64 2 (*.f64 eps eps)))))
(+.f64 (+.f64 -1 (/.f64 2 eps)) (+.f64 (/.f64 -2 (*.f64 eps eps)) (/.f64 2 (pow.f64 eps 3))))
(+.f64 (+.f64 (/.f64 2 eps) (+.f64 -1 (/.f64 -2 (*.f64 eps eps)))) (/.f64 2 (pow.f64 eps 3)))
(+.f64 (/.f64 2 eps) (fma.f64 (/.f64 1 (*.f64 eps eps)) (+.f64 (/.f64 2 eps) -2) -1))
-1
(-.f64 (*.f64 2 (/.f64 1 eps)) 1)
(+.f64 (/.f64 2 eps) -1)
(+.f64 -1 (/.f64 2 eps))
(-.f64 (*.f64 2 (/.f64 1 eps)) (+.f64 1 (*.f64 2 (/.f64 1 (pow.f64 eps 2)))))
(-.f64 (/.f64 2 eps) (+.f64 1 (/.f64 2 (*.f64 eps eps))))
(+.f64 (/.f64 2 eps) (-.f64 -1 (/.f64 2 (*.f64 eps eps))))
(+.f64 -1 (+.f64 (/.f64 -2 (*.f64 eps eps)) (/.f64 2 eps)))
(+.f64 (/.f64 2 eps) (+.f64 -1 (/.f64 -2 (*.f64 eps eps))))
(-.f64 (+.f64 (*.f64 2 (/.f64 1 (pow.f64 eps 3))) (*.f64 2 (/.f64 1 eps))) (+.f64 1 (*.f64 2 (/.f64 1 (pow.f64 eps 2)))))
(+.f64 (/.f64 2 (pow.f64 eps 3)) (-.f64 (/.f64 2 eps) (+.f64 1 (/.f64 2 (*.f64 eps eps)))))
(+.f64 (/.f64 2 eps) (-.f64 (/.f64 2 (pow.f64 eps 3)) (+.f64 1 (/.f64 2 (*.f64 eps eps)))))
(+.f64 (+.f64 -1 (/.f64 2 eps)) (+.f64 (/.f64 -2 (*.f64 eps eps)) (/.f64 2 (pow.f64 eps 3))))
(+.f64 (+.f64 (/.f64 2 eps) (+.f64 -1 (/.f64 -2 (*.f64 eps eps)))) (/.f64 2 (pow.f64 eps 3)))
(+.f64 (/.f64 2 eps) (fma.f64 (/.f64 1 (*.f64 eps eps)) (+.f64 (/.f64 2 eps) -2) -1))

localize7.0ms (0.1%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.0b
(log1p.f64 eps)
0.0b
(-.f64 (log1p.f64 (neg.f64 eps)) (log1p.f64 eps))
0.0b
(-.f64 (log1p.f64 (neg.f64 eps)) (log1p.f64 eps))
0.0b
(log1p.f64 eps)
Compiler

Compiled 15 to 5 computations (66.7% saved)

series4.0ms (0.1%)

Counts
2 → 24
Calls

6 calls:

TimeVariablePointExpression
1.0ms
eps
@0
(log1p.f64 eps)
1.0ms
eps
@0
(-.f64 (log1p.f64 (neg.f64 eps)) (log1p.f64 eps))
1.0ms
eps
@inf
(log1p.f64 eps)
0.0ms
eps
@inf
(-.f64 (log1p.f64 (neg.f64 eps)) (log1p.f64 eps))
0.0ms
eps
@-inf
(log1p.f64 eps)

rewrite223.0ms (3.4%)

Algorithm
batch-egg-rewrite
Rules
519×pow1_binary64
484×add-log-exp_binary64
484×expm1-log1p-u_binary64
482×log1p-expm1-u_binary64
475×add-exp-log_binary64
Iterations

Useful iterations: 1 (0.0ms)

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

simplify202.0ms (3.1%)

Algorithm
egg-herbie
Rules
913×fma-def_binary64
580×sub-neg_binary64
557×times-frac_binary64
278×associate-+l-_binary64
263×associate-+l+_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
081374
1230339
2595334
31829328
45715328
Stop Event
node limit
Counts
74 → 92
Calls
Call 1
Inputs
eps
(+.f64 (*.f64 -1/2 (pow.f64 eps 2)) eps)
(+.f64 (*.f64 -1/2 (pow.f64 eps 2)) (+.f64 eps (*.f64 1/3 (pow.f64 eps 3))))
(+.f64 (*.f64 -1/2 (pow.f64 eps 2)) (+.f64 eps (+.f64 (*.f64 1/3 (pow.f64 eps 3)) (*.f64 -1/4 (pow.f64 eps 4)))))
(*.f64 -1 (log.f64 (/.f64 1 eps)))
(+.f64 (/.f64 1 eps) (*.f64 -1 (log.f64 (/.f64 1 eps))))
(-.f64 (+.f64 (/.f64 1 eps) (*.f64 -1 (log.f64 (/.f64 1 eps)))) (*.f64 1/2 (/.f64 1 (pow.f64 eps 2))))
(-.f64 (+.f64 (/.f64 1 eps) (+.f64 (*.f64 -1 (log.f64 (/.f64 1 eps))) (*.f64 1/3 (/.f64 1 (pow.f64 eps 3))))) (*.f64 1/2 (/.f64 1 (pow.f64 eps 2))))
(+.f64 (*.f64 -1 (log.f64 (/.f64 -1 eps))) (log.f64 -1))
(+.f64 (/.f64 1 eps) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 eps)))))
(-.f64 (+.f64 (/.f64 1 eps) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 eps))))) (*.f64 1/2 (/.f64 1 (pow.f64 eps 2))))
(-.f64 (+.f64 (/.f64 1 eps) (+.f64 (log.f64 -1) (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 eps))) (*.f64 1/3 (/.f64 1 (pow.f64 eps 3)))))) (*.f64 1/2 (/.f64 1 (pow.f64 eps 2))))
(*.f64 -2 eps)
(+.f64 (*.f64 -2 eps) (*.f64 -2/3 (pow.f64 eps 3)))
(+.f64 (*.f64 -2 eps) (+.f64 (*.f64 -2/5 (pow.f64 eps 5)) (*.f64 -2/3 (pow.f64 eps 3))))
(+.f64 (*.f64 -2 eps) (+.f64 (*.f64 -2/5 (pow.f64 eps 5)) (+.f64 (*.f64 -2/7 (pow.f64 eps 7)) (*.f64 -2/3 (pow.f64 eps 3)))))
(log.f64 -1)
(-.f64 (log.f64 -1) (*.f64 2 (/.f64 1 eps)))
(-.f64 (log.f64 -1) (+.f64 (*.f64 2/3 (/.f64 1 (pow.f64 eps 3))) (*.f64 2 (/.f64 1 eps))))
(-.f64 (log.f64 -1) (+.f64 (*.f64 2/3 (/.f64 1 (pow.f64 eps 3))) (+.f64 (*.f64 2 (/.f64 1 eps)) (*.f64 2/5 (/.f64 1 (pow.f64 eps 5))))))
(*.f64 -1 (log.f64 -1))
(-.f64 (*.f64 -1 (log.f64 -1)) (*.f64 2 (/.f64 1 eps)))
(-.f64 (*.f64 -1 (log.f64 -1)) (+.f64 (*.f64 2/3 (/.f64 1 (pow.f64 eps 3))) (*.f64 2 (/.f64 1 eps))))
(-.f64 (*.f64 -1 (log.f64 -1)) (+.f64 (*.f64 2/3 (/.f64 1 (pow.f64 eps 3))) (+.f64 (*.f64 2 (/.f64 1 eps)) (*.f64 2/5 (/.f64 1 (pow.f64 eps 5))))))
Outputs
eps
(+.f64 (*.f64 -1/2 (pow.f64 eps 2)) eps)
(fma.f64 -1/2 (*.f64 eps eps) eps)
(fma.f64 eps (*.f64 eps -1/2) eps)
(*.f64 eps (fma.f64 eps -1/2 1))
(+.f64 (*.f64 -1/2 (pow.f64 eps 2)) (+.f64 eps (*.f64 1/3 (pow.f64 eps 3))))
(+.f64 (fma.f64 -1/2 (*.f64 eps eps) eps) (*.f64 1/3 (pow.f64 eps 3)))
(fma.f64 -1/2 (*.f64 eps eps) (fma.f64 1/3 (pow.f64 eps 3) eps))
(fma.f64 eps (*.f64 eps -1/2) (fma.f64 1/3 (pow.f64 eps 3) eps))
(fma.f64 (*.f64 eps eps) (fma.f64 eps 1/3 -1/2) eps)
(+.f64 (*.f64 -1/2 (pow.f64 eps 2)) (+.f64 eps (+.f64 (*.f64 1/3 (pow.f64 eps 3)) (*.f64 -1/4 (pow.f64 eps 4)))))
(+.f64 (fma.f64 -1/2 (*.f64 eps eps) eps) (fma.f64 1/3 (pow.f64 eps 3) (*.f64 -1/4 (pow.f64 eps 4))))
(fma.f64 eps (*.f64 eps -1/2) (fma.f64 1/3 (pow.f64 eps 3) (fma.f64 -1/4 (pow.f64 eps 4) eps)))
(fma.f64 (*.f64 eps eps) (fma.f64 eps 1/3 -1/2) (fma.f64 -1/4 (pow.f64 eps 4) eps))
(*.f64 -1 (log.f64 (/.f64 1 eps)))
(neg.f64 (neg.f64 (log.f64 eps)))
(log.f64 eps)
(+.f64 (/.f64 1 eps) (*.f64 -1 (log.f64 (/.f64 1 eps))))
(+.f64 (/.f64 1 eps) (neg.f64 (neg.f64 (log.f64 eps))))
(+.f64 (/.f64 1 eps) (log.f64 eps))
(-.f64 (+.f64 (/.f64 1 eps) (*.f64 -1 (log.f64 (/.f64 1 eps)))) (*.f64 1/2 (/.f64 1 (pow.f64 eps 2))))
(-.f64 (+.f64 (/.f64 1 eps) (neg.f64 (neg.f64 (log.f64 eps)))) (/.f64 1/2 (*.f64 eps eps)))
(+.f64 (+.f64 (/.f64 1 eps) (log.f64 eps)) (/.f64 -1/2 (*.f64 eps eps)))
(+.f64 (/.f64 1 eps) (-.f64 (log.f64 eps) (/.f64 (/.f64 1/2 eps) eps)))
(-.f64 (+.f64 (/.f64 1 eps) (+.f64 (*.f64 -1 (log.f64 (/.f64 1 eps))) (*.f64 1/3 (/.f64 1 (pow.f64 eps 3))))) (*.f64 1/2 (/.f64 1 (pow.f64 eps 2))))
(+.f64 (/.f64 1 eps) (-.f64 (fma.f64 -1 (neg.f64 (log.f64 eps)) (/.f64 1/3 (pow.f64 eps 3))) (/.f64 1/2 (*.f64 eps eps))))
(+.f64 (/.f64 1 eps) (+.f64 (log.f64 eps) (-.f64 (/.f64 1/3 (pow.f64 eps 3)) (/.f64 (/.f64 1/2 eps) eps))))
(+.f64 (log.f64 eps) (+.f64 (/.f64 1/3 (pow.f64 eps 3)) (-.f64 (/.f64 1 eps) (/.f64 (/.f64 1/2 eps) eps))))
(+.f64 (log.f64 eps) (+.f64 (/.f64 1 eps) (-.f64 (/.f64 1/3 (pow.f64 eps 3)) (/.f64 (/.f64 1/2 eps) eps))))
(+.f64 (*.f64 -1 (log.f64 (/.f64 -1 eps))) (log.f64 -1))
(neg.f64 (neg.f64 (log.f64 eps)))
(log.f64 eps)
(+.f64 (/.f64 1 eps) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 eps)))))
(+.f64 (/.f64 1 eps) (neg.f64 (neg.f64 (log.f64 eps))))
(+.f64 (/.f64 1 eps) (log.f64 eps))
(-.f64 (+.f64 (/.f64 1 eps) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 eps))))) (*.f64 1/2 (/.f64 1 (pow.f64 eps 2))))
(-.f64 (+.f64 (/.f64 1 eps) (neg.f64 (neg.f64 (log.f64 eps)))) (/.f64 1/2 (*.f64 eps eps)))
(+.f64 (+.f64 (/.f64 1 eps) (log.f64 eps)) (/.f64 -1/2 (*.f64 eps eps)))
(+.f64 (/.f64 1 eps) (-.f64 (log.f64 eps) (/.f64 (/.f64 1/2 eps) eps)))
(-.f64 (+.f64 (/.f64 1 eps) (+.f64 (log.f64 -1) (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 eps))) (*.f64 1/3 (/.f64 1 (pow.f64 eps 3)))))) (*.f64 1/2 (/.f64 1 (pow.f64 eps 2))))
(+.f64 (/.f64 1 eps) (-.f64 (fma.f64 -1 (neg.f64 (log.f64 eps)) (/.f64 1/3 (pow.f64 eps 3))) (/.f64 1/2 (*.f64 eps eps))))
(+.f64 (/.f64 1 eps) (+.f64 (log.f64 eps) (-.f64 (/.f64 1/3 (pow.f64 eps 3)) (/.f64 (/.f64 1/2 eps) eps))))
(+.f64 (log.f64 eps) (+.f64 (/.f64 1/3 (pow.f64 eps 3)) (-.f64 (/.f64 1 eps) (/.f64 (/.f64 1/2 eps) eps))))
(+.f64 (log.f64 eps) (+.f64 (/.f64 1 eps) (-.f64 (/.f64 1/3 (pow.f64 eps 3)) (/.f64 (/.f64 1/2 eps) eps))))
(*.f64 -2 eps)
(*.f64 eps -2)
(+.f64 (*.f64 -2 eps) (*.f64 -2/3 (pow.f64 eps 3)))
(fma.f64 -2 eps (*.f64 (pow.f64 eps 3) -2/3))
(fma.f64 (pow.f64 eps 3) -2/3 (*.f64 eps -2))
(fma.f64 eps -2 (*.f64 (pow.f64 eps 3) -2/3))
(+.f64 (*.f64 -2 eps) (+.f64 (*.f64 -2/5 (pow.f64 eps 5)) (*.f64 -2/3 (pow.f64 eps 3))))
(fma.f64 -2 eps (fma.f64 -2/5 (pow.f64 eps 5) (*.f64 (pow.f64 eps 3) -2/3)))
(fma.f64 eps -2 (fma.f64 (pow.f64 eps 3) -2/3 (*.f64 -2/5 (pow.f64 eps 5))))
(fma.f64 (pow.f64 eps 3) -2/3 (fma.f64 eps -2 (*.f64 -2/5 (pow.f64 eps 5))))
(+.f64 (*.f64 -2 eps) (+.f64 (*.f64 -2/5 (pow.f64 eps 5)) (+.f64 (*.f64 -2/7 (pow.f64 eps 7)) (*.f64 -2/3 (pow.f64 eps 3)))))
(fma.f64 -2 eps (fma.f64 -2/5 (pow.f64 eps 5) (fma.f64 -2/7 (pow.f64 eps 7) (*.f64 (pow.f64 eps 3) -2/3))))
(fma.f64 eps -2 (fma.f64 -2/5 (pow.f64 eps 5) (fma.f64 (pow.f64 eps 3) -2/3 (*.f64 -2/7 (pow.f64 eps 7)))))
(fma.f64 eps -2 (fma.f64 (pow.f64 eps 3) -2/3 (fma.f64 -2/5 (pow.f64 eps 5) (*.f64 -2/7 (pow.f64 eps 7)))))
(fma.f64 (pow.f64 eps 3) -2/3 (fma.f64 -2/5 (pow.f64 eps 5) (fma.f64 -2/7 (pow.f64 eps 7) (*.f64 eps -2))))
(log.f64 -1)
(-.f64 (log.f64 -1) (*.f64 2 (/.f64 1 eps)))
(-.f64 (log.f64 -1) (/.f64 2 eps))
(+.f64 (log.f64 -1) (/.f64 -2 eps))
(-.f64 (log.f64 -1) (+.f64 (*.f64 2/3 (/.f64 1 (pow.f64 eps 3))) (*.f64 2 (/.f64 1 eps))))
(-.f64 (log.f64 -1) (+.f64 (/.f64 2 eps) (/.f64 2/3 (pow.f64 eps 3))))
(-.f64 (+.f64 (log.f64 -1) (/.f64 -2 eps)) (/.f64 2/3 (pow.f64 eps 3)))
(+.f64 (log.f64 -1) (+.f64 (/.f64 -2 eps) (/.f64 -2/3 (pow.f64 eps 3))))
(+.f64 (log.f64 -1) (-.f64 (/.f64 -2 eps) (/.f64 2/3 (pow.f64 eps 3))))
(-.f64 (log.f64 -1) (+.f64 (*.f64 2/3 (/.f64 1 (pow.f64 eps 3))) (+.f64 (*.f64 2 (/.f64 1 eps)) (*.f64 2/5 (/.f64 1 (pow.f64 eps 5))))))
(-.f64 (-.f64 (log.f64 -1) (/.f64 2/3 (pow.f64 eps 3))) (+.f64 (/.f64 2 eps) (/.f64 2/5 (pow.f64 eps 5))))
(-.f64 (log.f64 -1) (+.f64 (/.f64 2 eps) (+.f64 (/.f64 2/5 (pow.f64 eps 5)) (/.f64 2/3 (pow.f64 eps 3)))))
(+.f64 (+.f64 (/.f64 -2 eps) (/.f64 -2/3 (pow.f64 eps 3))) (+.f64 (/.f64 -2/5 (pow.f64 eps 5)) (log.f64 -1)))
(+.f64 (log.f64 -1) (+.f64 (/.f64 -2 eps) (+.f64 (/.f64 -2/3 (pow.f64 eps 3)) (/.f64 -2/5 (pow.f64 eps 5)))))
(*.f64 -1 (log.f64 -1))
(neg.f64 (log.f64 -1))
(-.f64 (*.f64 -1 (log.f64 -1)) (*.f64 2 (/.f64 1 eps)))
(-.f64 (neg.f64 (log.f64 -1)) (/.f64 2 eps))
(fma.f64 -1 (log.f64 -1) (/.f64 -2 eps))
(-.f64 (/.f64 -2 eps) (log.f64 -1))
(-.f64 (*.f64 -1 (log.f64 -1)) (+.f64 (*.f64 2/3 (/.f64 1 (pow.f64 eps 3))) (*.f64 2 (/.f64 1 eps))))
(-.f64 (neg.f64 (log.f64 -1)) (+.f64 (/.f64 2 eps) (/.f64 2/3 (pow.f64 eps 3))))
(-.f64 (fma.f64 -1 (log.f64 -1) (/.f64 -2 eps)) (/.f64 2/3 (pow.f64 eps 3)))
(-.f64 (+.f64 (/.f64 -2 eps) (/.f64 -2/3 (pow.f64 eps 3))) (log.f64 -1))
(-.f64 (/.f64 -2 eps) (+.f64 (log.f64 -1) (/.f64 2/3 (pow.f64 eps 3))))
(-.f64 (*.f64 -1 (log.f64 -1)) (+.f64 (*.f64 2/3 (/.f64 1 (pow.f64 eps 3))) (+.f64 (*.f64 2 (/.f64 1 eps)) (*.f64 2/5 (/.f64 1 (pow.f64 eps 5))))))
(-.f64 (neg.f64 (log.f64 -1)) (+.f64 (/.f64 2/3 (pow.f64 eps 3)) (+.f64 (/.f64 2 eps) (/.f64 2/5 (pow.f64 eps 5)))))
(-.f64 (-.f64 (fma.f64 -1 (log.f64 -1) (/.f64 -2 eps)) (/.f64 2/3 (pow.f64 eps 3))) (/.f64 2/5 (pow.f64 eps 5)))
(+.f64 (-.f64 (+.f64 (/.f64 -2 eps) (/.f64 -2/3 (pow.f64 eps 3))) (log.f64 -1)) (/.f64 -2/5 (pow.f64 eps 5)))
(+.f64 (-.f64 (/.f64 -2 eps) (+.f64 (log.f64 -1) (/.f64 2/3 (pow.f64 eps 3)))) (/.f64 -2/5 (pow.f64 eps 5)))

eval119.0ms (1.8%)

Compiler

Compiled 2341 to 1405 computations (40% saved)

prune29.0ms (0.4%)

Pruning

6 alts after pruning (4 fresh and 2 done)

PrunedKeptTotal
New1804184
Fresh000
Picked011
Done011
Total1806186
Error
0b
Counts
186 → 6
Alt Table
Click to see full alt table
StatusErrorProgram
0.0b
(-.f64 (log1p.f64 (neg.f64 eps)) (log1p.f64 eps))
0.4b
(+.f64 (*.f64 -2 eps) (+.f64 (*.f64 -2/5 (pow.f64 eps 5)) (*.f64 -2/3 (pow.f64 eps 3))))
58.6b
(log.f64 (/.f64 (-.f64 1 eps) (+.f64 1 eps)))
1.3b
(-.f64 (log1p.f64 (neg.f64 eps)) eps)
0.5b
(+.f64 (*.f64 -2 eps) (*.f64 -2/3 (pow.f64 eps 3)))
0.9b
(*.f64 -2 eps)
Compiler

Compiled 52 to 40 computations (23.1% saved)

localize3.0ms (0%)

Compiler

Compiled 6 to 4 computations (33.3% saved)

localize12.0ms (0.2%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.2b
(*.f64 -2/3 (pow.f64 eps 3))
0.0b
(+.f64 (*.f64 -2 eps) (*.f64 -2/3 (pow.f64 eps 3)))
0.0b
(+.f64 (*.f64 -2 eps) (*.f64 -2/3 (pow.f64 eps 3)))
0.2b
(*.f64 -2/3 (pow.f64 eps 3))
Compiler

Compiled 25 to 19 computations (24% saved)

series4.0ms (0.1%)

Counts
2 → 3
Calls

6 calls:

TimeVariablePointExpression
1.0ms
eps
@inf
(*.f64 -2/3 (pow.f64 eps 3))
1.0ms
eps
@0
(*.f64 -2/3 (pow.f64 eps 3))
1.0ms
eps
@inf
(+.f64 (*.f64 -2 eps) (*.f64 -2/3 (pow.f64 eps 3)))
1.0ms
eps
@-inf
(*.f64 -2/3 (pow.f64 eps 3))
0.0ms
eps
@0
(+.f64 (*.f64 -2 eps) (*.f64 -2/3 (pow.f64 eps 3)))

rewrite71.0ms (1.1%)

Algorithm
batch-egg-rewrite
Rules
926×pow1_binary64
871×add-log-exp_binary64
870×log1p-expm1-u_binary64
870×expm1-log1p-u_binary64
854×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0918
120118
2239618
Stop Event
node limit
Counts
2 → 48
Calls
Call 1
Inputs
(*.f64 -2/3 (pow.f64 eps 3))
(+.f64 (*.f64 -2 eps) (*.f64 -2/3 (pow.f64 eps 3)))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 -2/3 (pow.f64 eps 3))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 -2/3 (pow.f64 eps 3)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 eps (cbrt.f64 -2/3)) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (sqrt.f64 -2/3) (pow.f64 eps 3/2)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (pow.f64 (pow.f64 eps 3) 3) -8/27) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (*.f64 (pow.f64 eps 6) 4/9))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 -2/3) (pow.f64 eps 3)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 (pow.f64 eps 3) 3) -8/27))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 -2/3 (pow.f64 eps 3))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 -2/3 (pow.f64 eps 3))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 -2/3 (pow.f64 eps 3))))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (fma.f64 -2/3 (pow.f64 eps 3) (*.f64 eps -2))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (/.f64 (*.f64 (*.f64 eps eps) 4) (+.f64 (*.f64 eps -2) (*.f64 2/3 (pow.f64 eps 3)))) (/.f64 (*.f64 (pow.f64 eps 6) 4/9) (+.f64 (*.f64 eps -2) (*.f64 2/3 (pow.f64 eps 3)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (fma.f64 -2/3 (pow.f64 eps 3) (*.f64 eps -2)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (fma.f64 -2/3 (pow.f64 eps 3) (*.f64 eps -2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (fma.f64 -2/3 (pow.f64 eps 3) (*.f64 eps -2))) (pow.f64 (cbrt.f64 (fma.f64 -2/3 (pow.f64 eps 3) (*.f64 eps -2))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (fma.f64 -2/3 (pow.f64 eps 3) (*.f64 eps -2))) 2) (cbrt.f64 (fma.f64 -2/3 (pow.f64 eps 3) (*.f64 eps -2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (fma.f64 -2/3 (pow.f64 eps 3) (*.f64 eps -2))) (sqrt.f64 (fma.f64 -2/3 (pow.f64 eps 3) (*.f64 eps -2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (*.f64 (pow.f64 eps 3) -8) (*.f64 (pow.f64 (pow.f64 eps 3) 3) -8/27)) (/.f64 1 (+.f64 (*.f64 (*.f64 eps eps) 4) (-.f64 (*.f64 (pow.f64 eps 6) 4/9) (*.f64 (*.f64 -2/3 (pow.f64 eps 3)) (*.f64 eps -2))))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 (*.f64 (*.f64 eps eps) 4) (*.f64 (pow.f64 eps 6) 4/9)) (/.f64 1 (+.f64 (*.f64 eps -2) (*.f64 2/3 (pow.f64 eps 3)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (+.f64 (*.f64 (*.f64 eps eps) 4) (-.f64 (*.f64 (pow.f64 eps 6) 4/9) (*.f64 (*.f64 -2/3 (pow.f64 eps 3)) (*.f64 eps -2)))) (+.f64 (*.f64 (pow.f64 eps 3) -8) (*.f64 (pow.f64 (pow.f64 eps 3) 3) -8/27))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (+.f64 (*.f64 eps -2) (*.f64 2/3 (pow.f64 eps 3))) (-.f64 (*.f64 (*.f64 eps eps) 4) (*.f64 (pow.f64 eps 6) 4/9))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 (pow.f64 eps 3) -8) (*.f64 (pow.f64 (pow.f64 eps 3) 3) -8/27)) (+.f64 (*.f64 (*.f64 eps eps) 4) (-.f64 (*.f64 (pow.f64 eps 6) 4/9) (*.f64 (*.f64 -2/3 (pow.f64 eps 3)) (*.f64 eps -2)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 (pow.f64 eps 3) -8) (*.f64 (pow.f64 (pow.f64 eps 3) 3) -8/27)) (+.f64 (*.f64 (pow.f64 eps 6) 4/9) (-.f64 (*.f64 (*.f64 eps eps) 4) (*.f64 (*.f64 -2/3 (pow.f64 eps 3)) (*.f64 eps -2)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 (*.f64 eps eps) 4) (*.f64 (pow.f64 eps 6) 4/9)) (+.f64 (*.f64 eps -2) (*.f64 2/3 (pow.f64 eps 3))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (+.f64 (*.f64 (pow.f64 eps 3) -8) (*.f64 (pow.f64 (pow.f64 eps 3) 3) -8/27))) (neg.f64 (+.f64 (*.f64 (*.f64 eps eps) 4) (-.f64 (*.f64 (pow.f64 eps 6) 4/9) (*.f64 (*.f64 -2/3 (pow.f64 eps 3)) (*.f64 eps -2))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (-.f64 (*.f64 (*.f64 eps eps) 4) (*.f64 (pow.f64 eps 6) 4/9))) (neg.f64 (+.f64 (*.f64 eps -2) (*.f64 2/3 (pow.f64 eps 3)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 (pow.f64 eps 6) 4/9) (*.f64 (*.f64 eps eps) 4)) (-.f64 (*.f64 -2/3 (pow.f64 eps 3)) (*.f64 eps -2)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (fma.f64 -2/3 (pow.f64 eps 3) (*.f64 eps -2)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (fma.f64 -2/3 (pow.f64 eps 3) (*.f64 eps -2)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (fma.f64 -2/3 (pow.f64 eps 3) (*.f64 eps -2))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (fma.f64 -2/3 (pow.f64 eps 3) (*.f64 eps -2))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (fma.f64 -2/3 (pow.f64 eps 3) (*.f64 eps -2)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (fma.f64 -2/3 (pow.f64 eps 3) (*.f64 eps -2))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (fma.f64 -2/3 (pow.f64 eps 3) (*.f64 eps -2)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (fma.f64 -2/3 (pow.f64 eps 3) (*.f64 eps -2))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (fma.f64 -2/3 (pow.f64 eps 3) (*.f64 eps -2))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (fma.f64 -2/3 (pow.f64 eps 3) (*.f64 eps -2))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 -2/3 (pow.f64 eps 3) (*.f64 eps -2))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 eps -2 (*.f64 -2/3 (pow.f64 eps 3)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 eps 3) -2/3 (*.f64 eps -2))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 -2 eps (*.f64 -2/3 (pow.f64 eps 3)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (*.f64 -2/3 (pow.f64 eps 3)) (*.f64 eps -2))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (*.f64 eps -2) (*.f64 -2/3 (pow.f64 eps 3)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (*.f64 (*.f64 eps eps) 4)) (cbrt.f64 (*.f64 eps -2)) (*.f64 -2/3 (pow.f64 eps 3)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (*.f64 eps (cbrt.f64 -2/3)) 2) (*.f64 eps (cbrt.f64 -2/3)) (*.f64 eps -2))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (*.f64 eps -2)) (sqrt.f64 (*.f64 eps -2)) (*.f64 -2/3 (pow.f64 eps 3)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (sqrt.f64 -2/3) (pow.f64 eps 3/2)) (*.f64 (sqrt.f64 -2/3) (pow.f64 eps 3/2)) (*.f64 eps -2))))))

simplify176.0ms (2.7%)

Algorithm
egg-herbie
Rules
1274×sqr-pow_binary64
666×pow-sqr_binary64
529×cube-prod_binary64
468×fabs-mul_binary64
442×associate-*l*_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0818
11818
23518
36318
412018
533318
6121218
7189918
8198618
9211918
10227718
11251518
12283718
13326118
14376218
15436218
16508218
17540118
18568518
19590518
20608518
21616718
22710718
Stop Event
node limit
Counts
51 → 50
Calls
Call 1
Inputs
(*.f64 -2 eps)
(*.f64 -2/3 (pow.f64 eps 3))
(*.f64 -2/3 (pow.f64 eps 3))
Outputs
(*.f64 -2 eps)
(*.f64 -2/3 (pow.f64 eps 3))
(*.f64 -2/3 (pow.f64 eps 3))

localize11.0ms (0.2%)

Local error

Found 2 expressions with local error:

NewErrorProgram
0.0b
(-.f64 (log1p.f64 (neg.f64 eps)) eps)
0.0b
(-.f64 (log1p.f64 (neg.f64 eps)) eps)
Compiler

Compiled 12 to 4 computations (66.7% saved)

series2.0ms (0%)

Counts
1 → 12
Calls

3 calls:

TimeVariablePointExpression
1.0ms
eps
@0
(-.f64 (log1p.f64 (neg.f64 eps)) eps)
1.0ms
eps
@inf
(-.f64 (log1p.f64 (neg.f64 eps)) eps)
1.0ms
eps
@-inf
(-.f64 (log1p.f64 (neg.f64 eps)) eps)

rewrite72.0ms (1.1%)

Algorithm
batch-egg-rewrite
Rules
491×pow1_binary64
476×add-sqr-sqrt_binary64
459×add-log-exp_binary64
458×expm1-log1p-u_binary64
457×log1p-expm1-u_binary64
Iterations

Useful iterations: 1 (0.0ms)

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

simplify60.0ms (0.9%)

Algorithm
egg-herbie
Rules
679×fma-neg_binary64
566×fma-def_binary64
525×sub-neg_binary64
489×cancel-sign-sub-inv_binary64
348×distribute-lft-out_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
043190
1118170
2330166
31091157
44330157
Stop Event
node limit
Counts
45 → 54
Calls
Call 1
Inputs
(*.f64 -2 eps)
(+.f64 (*.f64 -1/2 (pow.f64 eps 2)) (*.f64 -2 eps))
(+.f64 (*.f64 -1/2 (pow.f64 eps 2)) (+.f64 (*.f64 -2 eps) (*.f64 -1/3 (pow.f64 eps 3))))
(+.f64 (*.f64 -1/2 (pow.f64 eps 2)) (+.f64 (*.f64 -2 eps) (+.f64 (*.f64 -1/4 (pow.f64 eps 4)) (*.f64 -1/3 (pow.f64 eps 3)))))
(*.f64 -1 eps)
(+.f64 (*.f64 -1 eps) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 1 eps)))))
(-.f64 (+.f64 (*.f64 -1 eps) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 1 eps))))) (/.f64 1 eps))
(-.f64 (+.f64 (*.f64 -1 eps) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 1 eps))))) (+.f64 (/.f64 1 eps) (*.f64 1/2 (/.f64 1 (pow.f64 eps 2)))))
(*.f64 -1 eps)
(+.f64 (*.f64 -1 eps) (*.f64 -1 (log.f64 (/.f64 -1 eps))))
(-.f64 (+.f64 (*.f64 -1 eps) (*.f64 -1 (log.f64 (/.f64 -1 eps)))) (/.f64 1 eps))
(-.f64 (+.f64 (*.f64 -1 eps) (*.f64 -1 (log.f64 (/.f64 -1 eps)))) (+.f64 (/.f64 1 eps) (*.f64 1/2 (/.f64 1 (pow.f64 eps 2)))))
Outputs
(*.f64 -2 eps)
(+.f64 (*.f64 -1/2 (pow.f64 eps 2)) (*.f64 -2 eps))
(fma.f64 -1/2 (*.f64 eps eps) (*.f64 -2 eps))
(fma.f64 -2 eps (*.f64 eps (*.f64 eps -1/2)))
(*.f64 eps (+.f64 -2 (*.f64 eps -1/2)))
(*.f64 eps (fma.f64 eps -1/2 -2))
(+.f64 (*.f64 -1/2 (pow.f64 eps 2)) (+.f64 (*.f64 -2 eps) (*.f64 -1/3 (pow.f64 eps 3))))
(fma.f64 -1/2 (*.f64 eps eps) (fma.f64 -2 eps (*.f64 -1/3 (pow.f64 eps 3))))
(fma.f64 -1/2 (*.f64 eps eps) (fma.f64 -1/3 (pow.f64 eps 3) (*.f64 -2 eps)))
(fma.f64 -2 eps (*.f64 (*.f64 eps eps) (+.f64 -1/2 (*.f64 eps -1/3))))
(*.f64 eps (+.f64 -2 (*.f64 eps (fma.f64 eps -1/3 -1/2))))
(+.f64 (*.f64 -1/2 (pow.f64 eps 2)) (+.f64 (*.f64 -2 eps) (+.f64 (*.f64 -1/4 (pow.f64 eps 4)) (*.f64 -1/3 (pow.f64 eps 3)))))
(fma.f64 -1/2 (*.f64 eps eps) (fma.f64 -2 eps (fma.f64 -1/4 (pow.f64 eps 4) (*.f64 -1/3 (pow.f64 eps 3)))))
(fma.f64 -1/2 (*.f64 eps eps) (fma.f64 -2 eps (fma.f64 -1/3 (pow.f64 eps 3) (*.f64 -1/4 (pow.f64 eps 4)))))
(fma.f64 -2 eps (fma.f64 eps (*.f64 eps -1/2) (fma.f64 -1/3 (pow.f64 eps 3) (*.f64 -1/4 (pow.f64 eps 4)))))
(fma.f64 eps (fma.f64 eps -1/2 -2) (*.f64 (pow.f64 eps 3) (+.f64 -1/3 (*.f64 eps -1/4))))
(*.f64 -1 eps)
(neg.f64 eps)
(+.f64 (*.f64 -1 eps) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 1 eps)))))
(fma.f64 -1 eps (+.f64 (log.f64 -1) (neg.f64 (neg.f64 (log.f64 eps)))))
(-.f64 (+.f64 (log.f64 -1) (log.f64 eps)) eps)
(+.f64 (log.f64 -1) (-.f64 (log.f64 eps) eps))
(+.f64 (log.f64 eps) (-.f64 (log.f64 -1) eps))
(-.f64 (+.f64 (*.f64 -1 eps) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 1 eps))))) (/.f64 1 eps))
(-.f64 (fma.f64 -1 eps (+.f64 (log.f64 -1) (neg.f64 (neg.f64 (log.f64 eps))))) (/.f64 1 eps))
(+.f64 (-.f64 (+.f64 (log.f64 -1) (log.f64 eps)) eps) (/.f64 -1 eps))
(+.f64 (+.f64 (log.f64 -1) (-.f64 (log.f64 eps) eps)) (/.f64 -1 eps))
(+.f64 (+.f64 (log.f64 eps) (-.f64 (log.f64 -1) eps)) (/.f64 -1 eps))
(+.f64 (log.f64 -1) (-.f64 (log.f64 eps) (-.f64 eps (/.f64 -1 eps))))
(-.f64 (+.f64 (*.f64 -1 eps) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 1 eps))))) (+.f64 (/.f64 1 eps) (*.f64 1/2 (/.f64 1 (pow.f64 eps 2)))))
(-.f64 (fma.f64 -1 eps (+.f64 (log.f64 -1) (neg.f64 (neg.f64 (log.f64 eps))))) (+.f64 (/.f64 1 eps) (/.f64 1/2 (*.f64 eps eps))))
(+.f64 (-.f64 (+.f64 (log.f64 -1) (log.f64 eps)) eps) (-.f64 (/.f64 -1 eps) (/.f64 1/2 (*.f64 eps eps))))
(+.f64 (+.f64 (log.f64 -1) (-.f64 (log.f64 eps) eps)) (+.f64 (/.f64 -1 eps) (/.f64 -1/2 (*.f64 eps eps))))
(+.f64 (+.f64 (log.f64 eps) (-.f64 (log.f64 -1) eps)) (+.f64 (/.f64 -1 eps) (/.f64 -1/2 (*.f64 eps eps))))
(*.f64 -1 eps)
(neg.f64 eps)
(+.f64 (*.f64 -1 eps) (*.f64 -1 (log.f64 (/.f64 -1 eps))))
(fma.f64 -1 eps (neg.f64 (log.f64 (/.f64 -1 eps))))
(-.f64 (neg.f64 eps) (log.f64 (/.f64 -1 eps)))
(-.f64 (-.f64 (log.f64 eps) (log.f64 -1)) eps)
(-.f64 (+.f64 (*.f64 -1 eps) (*.f64 -1 (log.f64 (/.f64 -1 eps)))) (/.f64 1 eps))
(-.f64 (fma.f64 -1 eps (neg.f64 (log.f64 (/.f64 -1 eps)))) (/.f64 1 eps))
(fma.f64 -1 (+.f64 eps (log.f64 (/.f64 -1 eps))) (/.f64 -1 eps))
(-.f64 (/.f64 -1 eps) (+.f64 eps (log.f64 (/.f64 -1 eps))))
(-.f64 (+.f64 (*.f64 -1 eps) (*.f64 -1 (log.f64 (/.f64 -1 eps)))) (+.f64 (/.f64 1 eps) (*.f64 1/2 (/.f64 1 (pow.f64 eps 2)))))
(-.f64 (fma.f64 -1 eps (neg.f64 (log.f64 (/.f64 -1 eps)))) (+.f64 (/.f64 1 eps) (/.f64 1/2 (*.f64 eps eps))))
(-.f64 (fma.f64 -1 (+.f64 eps (log.f64 (/.f64 -1 eps))) (/.f64 -1 eps)) (/.f64 1/2 (*.f64 eps eps)))
(+.f64 (-.f64 (/.f64 -1 eps) (+.f64 eps (log.f64 (/.f64 -1 eps)))) (/.f64 -1/2 (*.f64 eps eps)))
(-.f64 (/.f64 -1/2 (*.f64 eps eps)) (+.f64 (log.f64 (/.f64 -1 eps)) (+.f64 eps (/.f64 1 eps))))
(-.f64 (/.f64 -1/2 (*.f64 eps eps)) (+.f64 (log.f64 (/.f64 -1 eps)) (-.f64 eps (/.f64 -1 eps))))

localize45.0ms (0.7%)

Local error

Found 6 expressions with local error:

NewErrorProgram
0.2b
(*.f64 -2/3 (pow.f64 eps 3))
0.1b
(*.f64 -2/5 (pow.f64 eps 5))
0.0b
(+.f64 (*.f64 -2/5 (pow.f64 eps 5)) (*.f64 -2/3 (pow.f64 eps 3)))
0.0b
(+.f64 (*.f64 -2/5 (pow.f64 eps 5)) (*.f64 -2/3 (pow.f64 eps 3)))
0.1b
(*.f64 -2/5 (pow.f64 eps 5))
0.2b
(*.f64 -2/3 (pow.f64 eps 3))
Compiler

Compiled 52 to 41 computations (21.2% saved)

series5.0ms (0.1%)

Counts
2 → 3
Calls

6 calls:

TimeVariablePointExpression
1.0ms
eps
@0
(*.f64 -2/5 (pow.f64 eps 5))
1.0ms
eps
@inf
(*.f64 -2/5 (pow.f64 eps 5))
1.0ms
eps
@-inf
(*.f64 -2/5 (pow.f64 eps 5))
1.0ms
eps
@inf
(+.f64 (*.f64 -2/5 (pow.f64 eps 5)) (*.f64 -2/3 (pow.f64 eps 3)))
0.0ms
eps
@0
(+.f64 (*.f64 -2/5 (pow.f64 eps 5)) (*.f64 -2/3 (pow.f64 eps 3)))

rewrite93.0ms (1.4%)

Algorithm
batch-egg-rewrite
Rules
476×log-prod_binary64
363×exp-prod_binary64
316×prod-exp_binary64
299×fma-def_binary64
284×pow-prod-down_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01121
124721
2287321
Stop Event
node limit
Counts
2 → 94
Calls
Call 1
Inputs
(*.f64 -2/5 (pow.f64 eps 5))
(+.f64 (*.f64 -2/5 (pow.f64 eps 5)) (*.f64 -2/3 (pow.f64 eps 3)))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 -2/5 (pow.f64 eps 5)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (pow.f64 (exp.f64 -2/5) (pow.f64 eps 5))) 2)) (log.f64 (cbrt.f64 (pow.f64 (exp.f64 -2/5) (pow.f64 eps 5)))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (pow.f64 (exp.f64 -2/5) (pow.f64 eps 5)))) (log.f64 (sqrt.f64 (pow.f64 (exp.f64 -2/5) (pow.f64 eps 5)))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (*.f64 -2/5 (pow.f64 eps 5)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 -2/5 (pow.f64 eps 5)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (pow.f64 eps 10) 4/25) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 -2/5 (pow.f64 eps 5))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (sqrt.f64 -2/5) (pow.f64 eps 5/2)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (pow.f64 eps 15) -8/125) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 1) (fma.f64 5 (log.f64 eps) (log1p.f64 -7/5)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (fma.f64 5 (log.f64 eps) (log1p.f64 -7/5))) 2)) (cbrt.f64 (fma.f64 5 (log.f64 eps) (log1p.f64 -7/5))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (sqrt.f64 (fma.f64 5 (log.f64 eps) (log1p.f64 -7/5)))) (sqrt.f64 (fma.f64 5 (log.f64 eps) (log1p.f64 -7/5))))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (*.f64 (pow.f64 eps 10) 4/25))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 -2/5) (pow.f64 eps 5)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (*.f64 -2/5 (pow.f64 eps 5)))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 eps 15) -8/125))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 -2/5 (pow.f64 eps 5))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 -2/5 (pow.f64 eps 5))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (fma.f64 5 (log.f64 eps) (log1p.f64 -7/5)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (fma.f64 5 (log.f64 eps) (log1p.f64 -7/5)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (cbrt.f64 (*.f64 -2/5 (pow.f64 eps 5)))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (*.f64 (sqrt.f64 -2/5) (pow.f64 eps 5/2))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (*.f64 (pow.f64 eps 15) -8/125)) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (fma.f64 5 (log.f64 eps) (log1p.f64 -7/5)) 1) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (fma.f64 5 (log.f64 eps) (log1p.f64 -7/5)) 3) 1/3))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (fma.f64 -2/5 (pow.f64 eps 5) (*.f64 -2/3 (pow.f64 eps 3))))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (/.f64 (*.f64 (pow.f64 eps 10) 4/25) (fma.f64 -2/5 (pow.f64 eps 5) (*.f64 2/3 (pow.f64 eps 3)))) (/.f64 (*.f64 (pow.f64 eps 6) 4/9) (fma.f64 -2/5 (pow.f64 eps 5) (*.f64 2/3 (pow.f64 eps 3)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (fma.f64 -2/5 (pow.f64 eps 5) (*.f64 -2/3 (pow.f64 eps 3))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (fma.f64 -2/5 (pow.f64 eps 5) (*.f64 -2/3 (pow.f64 eps 3))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (fma.f64 -2/5 (pow.f64 eps 5) (*.f64 -2/3 (pow.f64 eps 3)))) (pow.f64 (cbrt.f64 (fma.f64 -2/5 (pow.f64 eps 5) (*.f64 -2/3 (pow.f64 eps 3)))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (fma.f64 -2/5 (pow.f64 eps 5) (*.f64 -2/3 (pow.f64 eps 3)))) 2) (cbrt.f64 (fma.f64 -2/5 (pow.f64 eps 5) (*.f64 -2/3 (pow.f64 eps 3)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (fma.f64 -2/5 (pow.f64 eps 5) (*.f64 -2/3 (pow.f64 eps 3)))) (sqrt.f64 (fma.f64 -2/5 (pow.f64 eps 5) (*.f64 -2/3 (pow.f64 eps 3)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (fma.f64 (pow.f64 eps 15) -8/125 (*.f64 (pow.f64 eps 9) -8/27)) (/.f64 1 (-.f64 (fma.f64 (pow.f64 eps 10) 4/25 (*.f64 (pow.f64 eps 6) 4/9)) (*.f64 -2/5 (*.f64 (pow.f64 eps 5) (*.f64 -2/3 (pow.f64 eps 3)))))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 (*.f64 (pow.f64 eps 10) 4/25) (*.f64 (pow.f64 eps 6) 4/9)) (/.f64 1 (fma.f64 -2/5 (pow.f64 eps 5) (*.f64 2/3 (pow.f64 eps 3)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (-.f64 (fma.f64 (pow.f64 eps 10) 4/25 (*.f64 (pow.f64 eps 6) 4/9)) (*.f64 -2/5 (*.f64 (pow.f64 eps 5) (*.f64 -2/3 (pow.f64 eps 3))))) (fma.f64 (pow.f64 eps 15) -8/125 (*.f64 (pow.f64 eps 9) -8/27))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (fma.f64 -2/5 (pow.f64 eps 5) (*.f64 2/3 (pow.f64 eps 3))) (-.f64 (*.f64 (pow.f64 eps 10) 4/25) (*.f64 (pow.f64 eps 6) 4/9))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (fma.f64 (pow.f64 eps 15) -8/125 (*.f64 (pow.f64 eps 9) -8/27)) (-.f64 (fma.f64 (pow.f64 eps 10) 4/25 (*.f64 (pow.f64 eps 6) 4/9)) (*.f64 -2/5 (*.f64 (pow.f64 eps 5) (*.f64 -2/3 (pow.f64 eps 3))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (fma.f64 (pow.f64 eps 15) -8/125 (*.f64 (pow.f64 eps 9) -8/27)) (fma.f64 (pow.f64 eps 6) 4/9 (-.f64 (*.f64 (pow.f64 eps 10) 4/25) (*.f64 -2/5 (*.f64 (pow.f64 eps 5) (*.f64 -2/3 (pow.f64 eps 3)))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 (pow.f64 eps 10) 4/25) (*.f64 (pow.f64 eps 6) 4/9)) (fma.f64 -2/5 (pow.f64 eps 5) (*.f64 2/3 (pow.f64 eps 3))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (fma.f64 (pow.f64 eps 15) -8/125 (*.f64 (pow.f64 eps 9) -8/27))) (neg.f64 (-.f64 (fma.f64 (pow.f64 eps 10) 4/25 (*.f64 (pow.f64 eps 6) 4/9)) (*.f64 -2/5 (*.f64 (pow.f64 eps 5) (*.f64 -2/3 (pow.f64 eps 3)))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (-.f64 (*.f64 (pow.f64 eps 10) 4/25) (*.f64 (pow.f64 eps 6) 4/9))) (neg.f64 (fma.f64 -2/5 (pow.f64 eps 5) (*.f64 2/3 (pow.f64 eps 3)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 (pow.f64 eps 6) 4/9) (*.f64 (pow.f64 eps 10) 4/25)) (-.f64 (*.f64 -2/3 (pow.f64 eps 3)) (*.f64 -2/5 (pow.f64 eps 5))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (fma.f64 -2/5 (pow.f64 eps 5) (*.f64 -2/3 (pow.f64 eps 3))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (fma.f64 -2/5 (pow.f64 eps 5) (*.f64 -2/3 (pow.f64 eps 3))) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (fma.f64 -2/5 (pow.f64 eps 5) (*.f64 -2/3 (pow.f64 eps 3))) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (fma.f64 -2/5 (pow.f64 eps 5) (*.f64 -2/3 (pow.f64 eps 3)))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (fma.f64 -2/5 (pow.f64 eps 5) (*.f64 -2/3 (pow.f64 eps 3)))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 1) (log.f64 (fma.f64 -2/5 (pow.f64 eps 5) (*.f64 -2/3 (pow.f64 eps 3)))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (-.f64 (fma.f64 (pow.f64 eps 10) 4/25 (*.f64 (pow.f64 eps 6) 4/9)) (*.f64 -2/5 (*.f64 (pow.f64 eps 5) (*.f64 -2/3 (pow.f64 eps 3))))) (fma.f64 (pow.f64 eps 15) -8/125 (*.f64 (pow.f64 eps 9) -8/27))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (fma.f64 -2/5 (pow.f64 eps 5) (*.f64 2/3 (pow.f64 eps 3))) (-.f64 (*.f64 (pow.f64 eps 10) 4/25) (*.f64 (pow.f64 eps 6) 4/9))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (log.f64 (fma.f64 -2/5 (pow.f64 eps 5) (*.f64 -2/3 (pow.f64 eps 3))))) 2)) (cbrt.f64 (log.f64 (fma.f64 -2/5 (pow.f64 eps 5) (*.f64 -2/3 (pow.f64 eps 3))))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (sqrt.f64 (log.f64 (fma.f64 -2/5 (pow.f64 eps 5) (*.f64 -2/3 (pow.f64 eps 3)))))) (sqrt.f64 (log.f64 (fma.f64 -2/5 (pow.f64 eps 5) (*.f64 -2/3 (pow.f64 eps 3))))))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (fma.f64 -2/5 (pow.f64 eps 5) (*.f64 -2/3 (pow.f64 eps 3))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (fma.f64 -2/5 (pow.f64 eps 5) (*.f64 -2/3 (pow.f64 eps 3)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (fma.f64 -2/5 (pow.f64 eps 5) (*.f64 -2/3 (pow.f64 eps 3))))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 (*.f64 -2/5 (pow.f64 eps 5)))) (pow.f64 (exp.f64 -2/3) (pow.f64 eps 3))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (pow.f64 (exp.f64 -2/5) (pow.f64 eps 5)) (+.f64 1 (expm1.f64 (*.f64 -2/3 (pow.f64 eps 3))))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 (*.f64 -2/5 (pow.f64 eps 5)))) (+.f64 1 (expm1.f64 (*.f64 -2/3 (pow.f64 eps 3))))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 (*.f64 -2/3 (pow.f64 eps 3)))) (pow.f64 (exp.f64 -2/5) (pow.f64 eps 5))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (pow.f64 (exp.f64 -2/3) (pow.f64 eps 3)) (+.f64 1 (expm1.f64 (*.f64 -2/5 (pow.f64 eps 5))))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 (*.f64 -2/3 (pow.f64 eps 3)))) (+.f64 1 (expm1.f64 (*.f64 -2/5 (pow.f64 eps 5))))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (fma.f64 -2/5 (pow.f64 eps 5) (*.f64 -2/3 (pow.f64 eps 3))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (fma.f64 -2/5 (pow.f64 eps 5) (*.f64 -2/3 (pow.f64 eps 3)))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (fma.f64 -2/5 (pow.f64 eps 5) (*.f64 -2/3 (pow.f64 eps 3)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (fma.f64 -2/5 (pow.f64 eps 5) (*.f64 -2/3 (pow.f64 eps 3)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (fma.f64 -2/5 (pow.f64 eps 5) (*.f64 -2/3 (pow.f64 eps 3)))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 3 (log.f64 (fma.f64 -2/5 (pow.f64 eps 5) (*.f64 -2/3 (pow.f64 eps 3))))) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (cbrt.f64 (fma.f64 -2/5 (pow.f64 eps 5) (*.f64 -2/3 (pow.f64 eps 3))))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (sqrt.f64 (fma.f64 -2/5 (pow.f64 eps 5) (*.f64 -2/3 (pow.f64 eps 3))))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (log.f64 (fma.f64 -2/5 (pow.f64 eps 5) (*.f64 -2/3 (pow.f64 eps 3)))) 1) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 -2/5 (pow.f64 eps 5) (*.f64 -2/3 (pow.f64 eps 3)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 eps (*.f64 (*.f64 eps eps) -2/3) (*.f64 -2/5 (pow.f64 eps 5)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 eps 5) -2/5 (*.f64 -2/3 (pow.f64 eps 3)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 -2/5 (pow.f64 eps 5)) 1 (*.f64 -2/3 (pow.f64 eps 3)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 -2/3 (pow.f64 eps 3) (*.f64 -2/5 (pow.f64 eps 5)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 eps 3) -2/3 (*.f64 -2/5 (pow.f64 eps 5)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 -2/3 (pow.f64 eps 3)) 1 (*.f64 -2/5 (pow.f64 eps 5)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (*.f64 -2/5 (pow.f64 eps 5)) (*.f64 -2/3 (pow.f64 eps 3)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (*.f64 -2/3 (pow.f64 eps 3)) (*.f64 -2/5 (pow.f64 eps 5)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 eps eps) (*.f64 eps -2/3) (*.f64 -2/5 (pow.f64 eps 5)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (pow.f64 eps 10)) (*.f64 (pow.f64 (cbrt.f64 eps) 5) -2/5) (*.f64 -2/3 (pow.f64 eps 3)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (*.f64 -2/5 (pow.f64 eps 5))) (cbrt.f64 (*.f64 (pow.f64 eps 10) 4/25)) (*.f64 -2/3 (pow.f64 eps 3)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (*.f64 (pow.f64 eps 10) 4/25)) (cbrt.f64 (*.f64 -2/5 (pow.f64 eps 5))) (*.f64 -2/3 (pow.f64 eps 3)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 eps (cbrt.f64 -2/3)) (pow.f64 (*.f64 eps (cbrt.f64 -2/3)) 2) (*.f64 -2/5 (pow.f64 eps 5)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (*.f64 eps (cbrt.f64 -2/3)) 2) (*.f64 eps (cbrt.f64 -2/3)) (*.f64 -2/5 (pow.f64 eps 5)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (sqrt.f64 -2/5) (pow.f64 eps 5/2)) (*.f64 (sqrt.f64 -2/5) (pow.f64 eps 5/2)) (*.f64 -2/3 (pow.f64 eps 3)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (*.f64 eps (cbrt.f64 -2/3)) 3/2) (pow.f64 (*.f64 eps (cbrt.f64 -2/3)) 3/2) (*.f64 -2/5 (pow.f64 eps 5)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 eps 5/2) (*.f64 (pow.f64 eps 5/2) -2/5) (*.f64 -2/3 (pow.f64 eps 3)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 eps 3/2) (*.f64 (pow.f64 eps 3/2) -2/3) (*.f64 -2/5 (pow.f64 eps 5)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 -2/5 (cbrt.f64 (pow.f64 eps 10))) (pow.f64 (cbrt.f64 eps) 5) (*.f64 -2/3 (pow.f64 eps 3)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 -2/5 (pow.f64 eps 5/2)) (pow.f64 eps 5/2) (*.f64 -2/3 (pow.f64 eps 3)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 -2/3 eps) (*.f64 eps eps) (*.f64 -2/5 (pow.f64 eps 5)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 -2/3 (*.f64 eps eps)) eps (*.f64 -2/5 (pow.f64 eps 5)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 -2/3 (pow.f64 eps 3/2)) (pow.f64 eps 3/2) (*.f64 -2/5 (pow.f64 eps 5)))))))

simplify149.0ms (2.2%)

Algorithm
egg-herbie
Rules
1204×sqr-pow_binary64
708×cube-prod_binary64
678×fabs-mul_binary64
660×pow-sqr_binary64
416×unswap-sqr_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01021
12421
25021
39821
421321
564321
693221
7156821
8167621
9183821
10205121
11238121
12283721
13343621
14419021
15512221
16563021
17612021
18651621
19683821
20699821
Stop Event
node limit
Counts
97 → 96
Calls
Call 1
Inputs
(*.f64 -2/3 (pow.f64 eps 3))
(*.f64 -2/5 (pow.f64 eps 5))
(*.f64 -2/5 (pow.f64 eps 5))
Outputs
(*.f64 -2/3 (pow.f64 eps 3))
(*.f64 -2/5 (pow.f64 eps 5))
(*.f64 -2/5 (pow.f64 eps 5))

eval161.0ms (2.4%)

Compiler

Compiled 3566 to 2713 computations (23.9% saved)

prune50.0ms (0.8%)

Pruning

7 alts after pruning (1 fresh and 6 done)

PrunedKeptTotal
New2101211
Fresh000
Picked011
Done055
Total2107217
Error
0b
Counts
217 → 7
Alt Table
Click to see full alt table
StatusErrorProgram
0.5b
(+.f64 (*.f64 -2 eps) (*.f64 -2/3 (pow.f64 eps 3)))
52.0b
(neg.f64 eps)
0.0b
(-.f64 (log1p.f64 (neg.f64 eps)) (log1p.f64 eps))
0.4b
(+.f64 (*.f64 -2 eps) (+.f64 (*.f64 -2/5 (pow.f64 eps 5)) (*.f64 -2/3 (pow.f64 eps 3))))
58.6b
(log.f64 (/.f64 (-.f64 1 eps) (+.f64 1 eps)))
1.3b
(-.f64 (log1p.f64 (neg.f64 eps)) eps)
0.9b
(*.f64 -2 eps)
Compiler

Compiled 55 to 42 computations (23.6% saved)

localize5.0ms (0.1%)

Compiler

Compiled 4 to 2 computations (50% saved)

eval0.0ms (0%)

Compiler

Compiled 1 to 1 computations (0% saved)

prune6.0ms (0.1%)

Pruning

7 alts after pruning (0 fresh and 7 done)

PrunedKeptTotal
New000
Fresh000
Picked011
Done066
Total077
Error
0b
Counts
7 → 7
Alt Table
Click to see full alt table
StatusErrorProgram
0.5b
(+.f64 (*.f64 -2 eps) (*.f64 -2/3 (pow.f64 eps 3)))
52.0b
(neg.f64 eps)
0.0b
(-.f64 (log1p.f64 (neg.f64 eps)) (log1p.f64 eps))
0.4b
(+.f64 (*.f64 -2 eps) (+.f64 (*.f64 -2/5 (pow.f64 eps 5)) (*.f64 -2/3 (pow.f64 eps 3))))
58.6b
(log.f64 (/.f64 (-.f64 1 eps) (+.f64 1 eps)))
1.3b
(-.f64 (log1p.f64 (neg.f64 eps)) eps)
0.9b
(*.f64 -2 eps)
Compiler

Compiled 55 to 42 computations (23.6% saved)

regimes26.0ms (0.4%)

Counts
7 → 1
Calls
Call 1
Inputs
(neg.f64 eps)
(*.f64 -2 eps)
(-.f64 (log1p.f64 (neg.f64 eps)) eps)
(log.f64 (/.f64 (-.f64 1 eps) (+.f64 1 eps)))
(+.f64 (*.f64 -2 eps) (*.f64 -2/3 (pow.f64 eps 3)))
(-.f64 (log1p.f64 (neg.f64 eps)) (log1p.f64 eps))
(+.f64 (*.f64 -2 eps) (+.f64 (*.f64 -2/5 (pow.f64 eps 5)) (*.f64 -2/3 (pow.f64 eps 3))))
Outputs
(-.f64 (log1p.f64 (neg.f64 eps)) (log1p.f64 eps))
Calls

3 calls:

10.0ms
eps
4.0ms
(log.f64 (/.f64 (-.f64 1 eps) (+.f64 1 eps)))
4.0ms
(/.f64 (-.f64 1 eps) (+.f64 1 eps))
Results
ErrorSegmentsBranch
0.0b1eps
0.0b1(log.f64 (/.f64 (-.f64 1 eps) (+.f64 1 eps)))
0.0b1(/.f64 (-.f64 1 eps) (+.f64 1 eps))
Compiler

Compiled 68 to 47 computations (30.9% saved)

regimes21.0ms (0.3%)

Counts
5 → 1
Calls
Call 1
Inputs
(neg.f64 eps)
(*.f64 -2 eps)
(-.f64 (log1p.f64 (neg.f64 eps)) eps)
(log.f64 (/.f64 (-.f64 1 eps) (+.f64 1 eps)))
(+.f64 (*.f64 -2 eps) (*.f64 -2/3 (pow.f64 eps 3)))
Outputs
(+.f64 (*.f64 -2 eps) (*.f64 -2/3 (pow.f64 eps 3)))
Calls

3 calls:

10.0ms
eps
4.0ms
(log.f64 (/.f64 (-.f64 1 eps) (+.f64 1 eps)))
4.0ms
(/.f64 (-.f64 1 eps) (+.f64 1 eps))
Results
ErrorSegmentsBranch
0.5b1eps
0.5b1(log.f64 (/.f64 (-.f64 1 eps) (+.f64 1 eps)))
0.5b1(/.f64 (-.f64 1 eps) (+.f64 1 eps))
Compiler

Compiled 47 to 33 computations (29.8% saved)

regimes19.0ms (0.3%)

Accuracy

Total -59.2b remaining (-6654.3%)

Threshold costs -59.2b (-6654.3%)

Counts
4 → 1
Calls
Call 1
Inputs
(neg.f64 eps)
(*.f64 -2 eps)
(-.f64 (log1p.f64 (neg.f64 eps)) eps)
(log.f64 (/.f64 (-.f64 1 eps) (+.f64 1 eps)))
Outputs
(*.f64 -2 eps)
Calls

3 calls:

8.0ms
eps
4.0ms
(log.f64 (/.f64 (-.f64 1 eps) (+.f64 1 eps)))
4.0ms
(/.f64 (-.f64 1 eps) (+.f64 1 eps))
Results
ErrorSegmentsBranch
0.9b1eps
0.9b1(log.f64 (/.f64 (-.f64 1 eps) (+.f64 1 eps)))
0.9b1(/.f64 (-.f64 1 eps) (+.f64 1 eps))
Compiler

Compiled 38 to 26 computations (31.6% saved)

simplify8.0ms (0.1%)

Algorithm
egg-herbie
Rules
+-commutative_binary64
*-commutative_binary64
sub-neg_binary64
neg-sub0_binary64
neg-mul-1_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01330
12230
22730
33030
43130
Stop Event
done
saturated
Calls
Call 1
Inputs
(-.f64 (log1p.f64 (neg.f64 eps)) (log1p.f64 eps))
(+.f64 (*.f64 -2 eps) (*.f64 -2/3 (pow.f64 eps 3)))
(*.f64 -2 eps)
(neg.f64 eps)
Outputs
(-.f64 (log1p.f64 (neg.f64 eps)) (log1p.f64 eps))
(+.f64 (*.f64 -2 eps) (*.f64 -2/3 (pow.f64 eps 3)))
(+.f64 (*.f64 eps -2) (*.f64 -2/3 (pow.f64 eps 3)))
(*.f64 -2 eps)
(*.f64 eps -2)
(neg.f64 eps)
Compiler

Compiled 24 to 18 computations (25% saved)

soundness568.0ms (8.6%)

Algorithm
egg-herbie
Rules
1088×fma-neg_binary64
890×fma-def_binary64
719×distribute-rgt-in_binary64
491×distribute-lft-in_binary64
331×sub-neg_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0712
11810
22810
34110
47110
510310
615910
729210
860410
9103710
10144410
11200210
12274010
13383510
14467010
15476810
16480010
17480010
18639310
19674810
20682610
21683410
22684210
23684210
24704210
Stop Event
node limit
Compiler

Compiled 43 to 33 computations (23.3% saved)

end54.0ms (0.8%)

Compiler

Compiled 21 to 14 computations (33.3% saved)

Profiling

Loading profile data...