Details

Time bar (total: 13.3s)

analyze2.5s (18.7%)

Algorithm
search
Search
TrueOtherFalseIter
0%49.9%50.1%0
0%49.9%50.1%1
0%49.9%50.1%2
0%49.9%50.1%3
0%49.9%50.1%4
0%49.9%50.1%5
0%49.9%50.1%6
0%49.9%50.1%7
0%49.9%50.1%8
0.4%49.5%50.1%9
0.4%49.3%50.3%10
0.6%48.9%50.5%11
1.1%48.1%50.9%12
1.5%47.3%51.2%13
1.7%46.9%51.5%14
Compiler

Compiled 34 to 24 computations (29.4% saved)

sample8.1s (60.9%)

Symmetry

(sort a b)

Results
4.7s4168×body2048valid
1.8s2509×body1024valid
384.0ms601×body1024invalid
346.0ms743×body512valid
330.0ms372×body2048invalid
168.0ms310×body512invalid
130.0ms567×body128valid
85.0ms255×body256valid
45.0ms275×body128invalid
42.0ms147×body256invalid
25.0ms14×body4096valid
Compiler

Compiled 95 to 67 computations (29.5% saved)

simplify22.0ms (0.2%)

Algorithm
egg-herbie
Rules
986×times-frac_binary64
580×associate-/l*_binary64
372×fma-def_binary64
126×distribute-rgt-in_binary64
122×distribute-lft-in_binary64
Counts
1 → 2
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01828
14728
210828
325428
489728
5529228

prune5.0ms (0%)

Pruning

1 alts after pruning (1 fresh and 0 done)

PrunedKeptTotal
New112
Fresh101
Picked000
Done000
Total213
Error
39.2b
Counts
3 → 1
Alt Table
StatusErrorProgram
39.2b
(/.f64 (*.f64 eps (expm1.f64 (*.f64 eps (+.f64 a b)))) (*.f64 (expm1.f64 (*.f64 eps a)) (expm1.f64 (*.f64 eps b))))
Compiler

Compiled 87 to 54 computations (37.9% saved)

localize11.0ms (0.1%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.0b
(expm1.f64 (*.f64 eps a))
0.1b
(*.f64 (expm1.f64 (*.f64 eps a)) (expm1.f64 (*.f64 eps b)))
0.1b
(*.f64 eps (expm1.f64 (*.f64 eps (+.f64 a b))))
37.5b
(/.f64 (*.f64 eps (expm1.f64 (*.f64 eps (+.f64 a b)))) (*.f64 (expm1.f64 (*.f64 eps a)) (expm1.f64 (*.f64 eps b))))

series321.0ms (2.4%)

Counts
4 → 132
Calls

4 calls:

262.0ms
(/.f64 (*.f64 eps (expm1.f64 (*.f64 eps (+.f64 a b)))) (*.f64 (expm1.f64 (*.f64 eps a)) (expm1.f64 (*.f64 eps b))))
28.0ms
(*.f64 (expm1.f64 (*.f64 eps a)) (expm1.f64 (*.f64 eps b)))
25.0ms
(*.f64 eps (expm1.f64 (*.f64 eps (+.f64 a b))))
6.0ms
(expm1.f64 (*.f64 eps a))

rewrite15.0ms (0.1%)

Algorithm
rewrite-expression-head
Rules
20×add-cbrt-cube_binary64
20×add-exp-log_binary64
12×add-sqr-sqrt_binary64
*-un-lft-identity_binary64
add-cube-cbrt_binary64
Counts
4 → 74
Calls

4 calls:

4.0ms
(/.f64 (*.f64 eps (expm1.f64 (*.f64 eps (+.f64 a b)))) (*.f64 (expm1.f64 (*.f64 eps a)) (expm1.f64 (*.f64 eps b))))
4.0ms
(*.f64 eps (expm1.f64 (*.f64 eps (+.f64 a b))))
3.0ms
(*.f64 (expm1.f64 (*.f64 eps a)) (expm1.f64 (*.f64 eps b)))
0.0ms
(expm1.f64 (*.f64 eps a))

simplify120.0ms (0.9%)

Algorithm
egg-herbie
Rules
692×fma-def_binary64
622×times-frac_binary64
470×associate-/l*_binary64
249×*-commutative_binary64
163×+-commutative_binary64
Counts
206 → 213
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
06138300
120217554
250577554

prune153.0ms (1.1%)

Pruning

5 alts after pruning (4 fresh and 1 done)

PrunedKeptTotal
New2094213
Fresh000
Picked011
Done000
Total2095214
Error
0.1b
Counts
214 → 5
Alt Table
StatusErrorProgram
59.1b
(/.f64 (*.f64 eps (expm1.f64 (*.f64 eps (+.f64 a b)))) (log.f64 (exp.f64 (*.f64 (expm1.f64 (*.f64 eps a)) (expm1.f64 (*.f64 eps b))))))
39.2b
(/.f64 (*.f64 eps (expm1.f64 (*.f64 eps (+.f64 a b)))) (*.f64 (expm1.f64 (*.f64 eps a)) (expm1.f64 (*.f64 eps b))))
58.6b
(-.f64 (+.f64 (/.f64 (*.f64 (exp.f64 (*.f64 b eps)) (pow.f64 eps 3)) (pow.f64 (*.f64 eps (expm1.f64 (*.f64 b eps))) 2)) (fma.f64 (/.f64 eps a) (/.f64 (exp.f64 (*.f64 b eps)) (*.f64 eps (expm1.f64 (*.f64 b eps)))) (/.f64 (*.f64 (*.f64 eps eps) (exp.f64 (*.f64 b eps))) (*.f64 eps (expm1.f64 (*.f64 b eps)))))) (fma.f64 1/2 (/.f64 (*.f64 (pow.f64 eps 3) (pow.f64 (exp.f64 (*.f64 b eps)) 2)) (pow.f64 (*.f64 eps (expm1.f64 (*.f64 b eps))) 2)) (fma.f64 1/2 (/.f64 (pow.f64 eps 3) (pow.f64 (*.f64 eps (expm1.f64 (*.f64 b eps))) 2)) (/.f64 eps (*.f64 a (*.f64 eps (expm1.f64 (*.f64 b eps))))))))
8.1b
(fma.f64 1/12 (*.f64 a (*.f64 eps eps)) (+.f64 (/.f64 1 b) (fma.f64 1/12 (*.f64 b (*.f64 eps eps)) (/.f64 1 a))))
39.2b
(/.f64 1 (/.f64 (*.f64 (expm1.f64 (*.f64 eps a)) (expm1.f64 (*.f64 eps b))) (*.f64 eps (expm1.f64 (*.f64 eps (+.f64 a b))))))
Compiler

Compiled 10748 to 3600 computations (66.5% saved)

localize11.0ms (0.1%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.0b
(+.f64 (/.f64 1 b) (fma.f64 1/12 (*.f64 b (*.f64 eps eps)) (/.f64 1 a)))
0.1b
(fma.f64 1/12 (*.f64 b (*.f64 eps eps)) (/.f64 1 a))
5.1b
(*.f64 b (*.f64 eps eps))
6.6b
(*.f64 a (*.f64 eps eps))

series58.0ms (0.4%)

Counts
4 → 120
Calls

4 calls:

21.0ms
(fma.f64 1/12 (*.f64 b (*.f64 eps eps)) (/.f64 1 a))
20.0ms
(+.f64 (/.f64 1 b) (fma.f64 1/12 (*.f64 b (*.f64 eps eps)) (/.f64 1 a)))
9.0ms
(*.f64 b (*.f64 eps eps))
8.0ms
(*.f64 a (*.f64 eps eps))

rewrite23.0ms (0.2%)

Algorithm
rewrite-expression-head
Rules
16×*-un-lft-identity_binary64
15×add-sqr-sqrt_binary64
14×add-cbrt-cube_binary64
14×add-exp-log_binary64
14×pow1_binary64
Counts
4 → 81
Calls

4 calls:

5.0ms
(+.f64 (/.f64 1 b) (fma.f64 1/12 (*.f64 b (*.f64 eps eps)) (/.f64 1 a)))
4.0ms
(*.f64 b (*.f64 eps eps))
4.0ms
(*.f64 a (*.f64 eps eps))
0.0ms
(fma.f64 1/12 (*.f64 b (*.f64 eps eps)) (/.f64 1 a))

simplify101.0ms (0.8%)

Algorithm
egg-herbie
Rules
562×associate-+l+_binary64
523×associate-*l*_binary64
384×associate-*r*_binary64
262×cancel-sign-sub-inv_binary64
220×unswap-sqr_binary64
Counts
201 → 131
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
01052505
12362362
26562362
322572360
445242360
550012360

prune96.0ms (0.7%)

Pruning

6 alts after pruning (4 fresh and 2 done)

PrunedKeptTotal
New1301131
Fresh033
Picked011
Done011
Total1306136
Error
0.1b
Counts
136 → 6
Alt Table
StatusErrorProgram
59.1b
(/.f64 (*.f64 eps (expm1.f64 (*.f64 eps (+.f64 a b)))) (log.f64 (exp.f64 (*.f64 (expm1.f64 (*.f64 eps a)) (expm1.f64 (*.f64 eps b))))))
8.7b
(fma.f64 1/12 (*.f64 a (*.f64 eps eps)) (fma.f64 (/.f64 1 (*.f64 (cbrt.f64 b) (cbrt.f64 b))) (/.f64 1 (cbrt.f64 b)) (fma.f64 1/12 (*.f64 b (*.f64 eps eps)) (/.f64 1 a))))
39.2b
(/.f64 (*.f64 eps (expm1.f64 (*.f64 eps (+.f64 a b)))) (*.f64 (expm1.f64 (*.f64 eps a)) (expm1.f64 (*.f64 eps b))))
58.6b
(-.f64 (+.f64 (/.f64 (*.f64 (exp.f64 (*.f64 b eps)) (pow.f64 eps 3)) (pow.f64 (*.f64 eps (expm1.f64 (*.f64 b eps))) 2)) (fma.f64 (/.f64 eps a) (/.f64 (exp.f64 (*.f64 b eps)) (*.f64 eps (expm1.f64 (*.f64 b eps)))) (/.f64 (*.f64 (*.f64 eps eps) (exp.f64 (*.f64 b eps))) (*.f64 eps (expm1.f64 (*.f64 b eps)))))) (fma.f64 1/2 (/.f64 (*.f64 (pow.f64 eps 3) (pow.f64 (exp.f64 (*.f64 b eps)) 2)) (pow.f64 (*.f64 eps (expm1.f64 (*.f64 b eps))) 2)) (fma.f64 1/2 (/.f64 (pow.f64 eps 3) (pow.f64 (*.f64 eps (expm1.f64 (*.f64 b eps))) 2)) (/.f64 eps (*.f64 a (*.f64 eps (expm1.f64 (*.f64 b eps))))))))
8.1b
(fma.f64 1/12 (*.f64 a (*.f64 eps eps)) (+.f64 (/.f64 1 b) (fma.f64 1/12 (*.f64 b (*.f64 eps eps)) (/.f64 1 a))))
39.2b
(/.f64 1 (/.f64 (*.f64 (expm1.f64 (*.f64 eps a)) (expm1.f64 (*.f64 eps b))) (*.f64 eps (expm1.f64 (*.f64 eps (+.f64 a b))))))
Compiler

Compiled 3914 to 1851 computations (52.7% saved)

localize20.0ms (0.2%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.5b
(*.f64 (cbrt.f64 b) (cbrt.f64 b))
0.6b
(cbrt.f64 b)
5.1b
(*.f64 b (*.f64 eps eps))
6.6b
(*.f64 a (*.f64 eps eps))

series74.0ms (0.6%)

Counts
2 → 24
Calls

2 calls:

37.0ms
(cbrt.f64 b)
37.0ms
(*.f64 (cbrt.f64 b) (cbrt.f64 b))

rewrite7.0ms (0.1%)

Algorithm
rewrite-expression-head
Rules
19×add-sqr-sqrt_binary64
19×cbrt-prod_binary64
11×*-un-lft-identity_binary64
11×add-cube-cbrt_binary64
pow1_binary64
Counts
2 → 55
Calls

2 calls:

4.0ms
(*.f64 (cbrt.f64 b) (cbrt.f64 b))
1.0ms
(cbrt.f64 b)

simplify64.0ms (0.5%)

Algorithm
egg-herbie
Rules
577×distribute-rgt-in_binary64
561×log-prod_binary64
538×distribute-lft-in_binary64
525×unswap-sqr_binary64
384×fma-def_binary64
Counts
79 → 74
Iterations

Useful iterations: 4 (0.0ms)

IterNodesCost
058610
198554
2296516
3769502
41799410
54642410
64805410

prune146.0ms (1.1%)

Pruning

6 alts after pruning (3 fresh and 3 done)

PrunedKeptTotal
New1740174
Fresh033
Picked011
Done022
Total1746180
Error
0.1b
Counts
180 → 6
Alt Table
StatusErrorProgram
59.1b
(/.f64 (*.f64 eps (expm1.f64 (*.f64 eps (+.f64 a b)))) (log.f64 (exp.f64 (*.f64 (expm1.f64 (*.f64 eps a)) (expm1.f64 (*.f64 eps b))))))
8.7b
(fma.f64 1/12 (*.f64 a (*.f64 eps eps)) (fma.f64 (/.f64 1 (*.f64 (cbrt.f64 b) (cbrt.f64 b))) (/.f64 1 (cbrt.f64 b)) (fma.f64 1/12 (*.f64 b (*.f64 eps eps)) (/.f64 1 a))))
39.2b
(/.f64 (*.f64 eps (expm1.f64 (*.f64 eps (+.f64 a b)))) (*.f64 (expm1.f64 (*.f64 eps a)) (expm1.f64 (*.f64 eps b))))
58.6b
(-.f64 (+.f64 (/.f64 (*.f64 (exp.f64 (*.f64 b eps)) (pow.f64 eps 3)) (pow.f64 (*.f64 eps (expm1.f64 (*.f64 b eps))) 2)) (fma.f64 (/.f64 eps a) (/.f64 (exp.f64 (*.f64 b eps)) (*.f64 eps (expm1.f64 (*.f64 b eps)))) (/.f64 (*.f64 (*.f64 eps eps) (exp.f64 (*.f64 b eps))) (*.f64 eps (expm1.f64 (*.f64 b eps)))))) (fma.f64 1/2 (/.f64 (*.f64 (pow.f64 eps 3) (pow.f64 (exp.f64 (*.f64 b eps)) 2)) (pow.f64 (*.f64 eps (expm1.f64 (*.f64 b eps))) 2)) (fma.f64 1/2 (/.f64 (pow.f64 eps 3) (pow.f64 (*.f64 eps (expm1.f64 (*.f64 b eps))) 2)) (/.f64 eps (*.f64 a (*.f64 eps (expm1.f64 (*.f64 b eps))))))))
8.1b
(fma.f64 1/12 (*.f64 a (*.f64 eps eps)) (+.f64 (/.f64 1 b) (fma.f64 1/12 (*.f64 b (*.f64 eps eps)) (/.f64 1 a))))
39.2b
(/.f64 1 (/.f64 (*.f64 (expm1.f64 (*.f64 eps a)) (expm1.f64 (*.f64 eps b))) (*.f64 eps (expm1.f64 (*.f64 eps (+.f64 a b))))))
Compiler

Compiled 6155 to 2556 computations (58.5% saved)

localize13.0ms (0.1%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.0b
(/.f64 1 (/.f64 (*.f64 (expm1.f64 (*.f64 eps a)) (expm1.f64 (*.f64 eps b))) (*.f64 eps (expm1.f64 (*.f64 eps (+.f64 a b))))))
0.1b
(*.f64 (expm1.f64 (*.f64 eps a)) (expm1.f64 (*.f64 eps b)))
0.1b
(*.f64 eps (expm1.f64 (*.f64 eps (+.f64 a b))))
37.8b
(/.f64 (*.f64 (expm1.f64 (*.f64 eps a)) (expm1.f64 (*.f64 eps b))) (*.f64 eps (expm1.f64 (*.f64 eps (+.f64 a b)))))

series492.0ms (3.7%)

Counts
2 → 72
Calls

2 calls:

270.0ms
(/.f64 1 (/.f64 (*.f64 (expm1.f64 (*.f64 eps a)) (expm1.f64 (*.f64 eps b))) (*.f64 eps (expm1.f64 (*.f64 eps (+.f64 a b))))))
222.0ms
(/.f64 (*.f64 (expm1.f64 (*.f64 eps a)) (expm1.f64 (*.f64 eps b))) (*.f64 eps (expm1.f64 (*.f64 eps (+.f64 a b)))))

rewrite18.0ms (0.1%)

Algorithm
rewrite-expression-head
Rules
58×add-exp-log_binary64
32×add-cbrt-cube_binary64
26×div-exp_binary64
20×times-frac_binary64
16×prod-exp_binary64
Counts
2 → 81
Calls

2 calls:

5.0ms
(/.f64 1 (/.f64 (*.f64 (expm1.f64 (*.f64 eps a)) (expm1.f64 (*.f64 eps b))) (*.f64 eps (expm1.f64 (*.f64 eps (+.f64 a b))))))
4.0ms
(/.f64 (*.f64 (expm1.f64 (*.f64 eps a)) (expm1.f64 (*.f64 eps b))) (*.f64 eps (expm1.f64 (*.f64 eps (+.f64 a b)))))

simplify161.0ms (1.2%)

Algorithm
egg-herbie
Rules
657×associate-/r*_binary64
600×fma-def_binary64
305×*-commutative_binary64
213×+-commutative_binary64
187×associate-/r/_binary64
Counts
153 → 176
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
084211743
1278210959
2548210959

prune261.0ms (2%)

Pruning

6 alts after pruning (2 fresh and 4 done)

PrunedKeptTotal
New2960296
Fresh022
Picked011
Done033
Total2966302
Error
0.1b
Counts
302 → 6
Alt Table
StatusErrorProgram
59.1b
(/.f64 (*.f64 eps (expm1.f64 (*.f64 eps (+.f64 a b)))) (log.f64 (exp.f64 (*.f64 (expm1.f64 (*.f64 eps a)) (expm1.f64 (*.f64 eps b))))))
8.7b
(fma.f64 1/12 (*.f64 a (*.f64 eps eps)) (fma.f64 (/.f64 1 (*.f64 (cbrt.f64 b) (cbrt.f64 b))) (/.f64 1 (cbrt.f64 b)) (fma.f64 1/12 (*.f64 b (*.f64 eps eps)) (/.f64 1 a))))
39.2b
(/.f64 (*.f64 eps (expm1.f64 (*.f64 eps (+.f64 a b)))) (*.f64 (expm1.f64 (*.f64 eps a)) (expm1.f64 (*.f64 eps b))))
58.6b
(-.f64 (+.f64 (/.f64 (*.f64 (exp.f64 (*.f64 b eps)) (pow.f64 eps 3)) (pow.f64 (*.f64 eps (expm1.f64 (*.f64 b eps))) 2)) (fma.f64 (/.f64 eps a) (/.f64 (exp.f64 (*.f64 b eps)) (*.f64 eps (expm1.f64 (*.f64 b eps)))) (/.f64 (*.f64 (*.f64 eps eps) (exp.f64 (*.f64 b eps))) (*.f64 eps (expm1.f64 (*.f64 b eps)))))) (fma.f64 1/2 (/.f64 (*.f64 (pow.f64 eps 3) (pow.f64 (exp.f64 (*.f64 b eps)) 2)) (pow.f64 (*.f64 eps (expm1.f64 (*.f64 b eps))) 2)) (fma.f64 1/2 (/.f64 (pow.f64 eps 3) (pow.f64 (*.f64 eps (expm1.f64 (*.f64 b eps))) 2)) (/.f64 eps (*.f64 a (*.f64 eps (expm1.f64 (*.f64 b eps))))))))
8.1b
(fma.f64 1/12 (*.f64 a (*.f64 eps eps)) (+.f64 (/.f64 1 b) (fma.f64 1/12 (*.f64 b (*.f64 eps eps)) (/.f64 1 a))))
39.2b
(/.f64 1 (/.f64 (*.f64 (expm1.f64 (*.f64 eps a)) (expm1.f64 (*.f64 eps b))) (*.f64 eps (expm1.f64 (*.f64 eps (+.f64 a b))))))
Compiler

Compiled 18115 to 6788 computations (62.5% saved)

regimes374.0ms (2.8%)

Accuracy

Total 1.3b remaining (97.5%)

Threshold costs 0b (0%)

Counts
60 → 3
Compiler

Compiled 5998 to 3608 computations (39.8% saved)

bsearch2.0ms (0%)

Compiler

Compiled 27 to 19 computations (29.6% saved)

simplify4.0ms (0%)

Algorithm
egg-herbie
Rules
*-commutative_binary64
+-commutative_binary64
sub-neg_binary64
1-exp_binary64
if-if-or-not_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
040137
160137
263137
361137

end150.0ms (1.1%)

Remove

(sort a b)

Compiler

Compiled 588 to 325 computations (44.7% saved)

Profiling

Loading profile data...