Details

Time bar (total: 13.4s)

analyze1.2s (8.9%)

Algorithm
search
Search
TrueOtherFalseIter
0%99.9%0.1%0
0%99.9%0.1%1
0%99.9%0.1%2
0%99.9%0.1%3
0%99.9%0.1%4
12.5%87.4%0.1%5
18.7%81.1%0.1%6
21.8%71.8%6.4%7
31.2%62.4%6.4%8
35.9%55.4%8.7%9
37.8%48.8%13.4%10
42.7%42.3%15%11
47.7%34.2%18.1%12
49.1%30.4%20.5%13
51.9%25.8%22.3%14
Compiler

Compiled 21 to 15 computations (28.6% saved)

sample3.6s (26.7%)

Results
1.1s5260×body128valid
965.0ms1186×body2048valid
528.0ms795×body1024valid
396.0ms410×body4096valid
215.0ms434×body512valid
213.0ms1071×body128invalid
60.0ms171×body256valid
Compiler

Compiled 62 to 44 computations (29% saved)

simplify379.0ms (2.8%)

Algorithm
egg-herbie
Rules
2009×fma-neg_binary64
1508×div-sub_binary64
1334×associate-/l*_binary64
1156×fma-def_binary64
685×associate-/l/_binary64
Counts
1 → 2
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
01526
13422
26422
313222
419822
532522
655222
791822
8135222
9155422
10235922
11315822
12256522
13265322
14321922
15336122
16346122
17398522
18417122
19443922
20465922
21470122
22475722
23494122
24494122
25336522
26305922
27298322
28298522
29299722
30299722
31299722
32299722
33273622

prune4.0ms (0%)

Pruning

3 alts after pruning (3 fresh and 0 done)

PrunedKeptTotal
New022
Fresh011
Picked000
Done000
Total033
Error
34.1b
Counts
3 → 2
Alt Table
StatusErrorProgram
34.2b
(/.f64 (+.f64 (neg.f64 b) (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 4 (*.f64 a c))))) (*.f64 2 a))
34.2b
(*.f64 (-.f64 (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b))) b) (/.f64 1/2 a))
Compiler

Compiled 111 to 74 computations (33.3% saved)

localize12.0ms (0.1%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.1b
(/.f64 (+.f64 (neg.f64 b) (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 4 (*.f64 a c))))) (*.f64 2 a))
0.6b
(-.f64 (*.f64 b b) (*.f64 4 (*.f64 a c)))
1.0b
(+.f64 (neg.f64 b) (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 4 (*.f64 a c)))))
21.6b
(sqrt.f64 (-.f64 (*.f64 b b) (*.f64 4 (*.f64 a c))))

series138.0ms (1%)

Counts
4 → 96
Calls

4 calls:

57.0ms
(/.f64 (+.f64 (neg.f64 b) (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 4 (*.f64 a c))))) (*.f64 2 a))
36.0ms
(+.f64 (neg.f64 b) (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 4 (*.f64 a c)))))
33.0ms
(sqrt.f64 (-.f64 (*.f64 b b) (*.f64 4 (*.f64 a c))))
11.0ms
(-.f64 (*.f64 b b) (*.f64 4 (*.f64 a c)))

rewrite123.0ms (0.9%)

Algorithm
batch-egg-rewrite
Rules
507×fma-neg_binary64
277×expm1-udef_binary64
277×log1p-udef_binary64
178×egg-rr
166×add-sqr-sqrt_binary64
Counts
4 → 178
Calls

4 calls:

119.0ms
(/.f64 (+.f64 (neg.f64 b) (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 4 (*.f64 a c))))) (*.f64 2 a))
119.0ms
(-.f64 (*.f64 b b) (*.f64 4 (*.f64 a c)))
119.0ms
(+.f64 (neg.f64 b) (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 4 (*.f64 a c)))))
119.0ms
(sqrt.f64 (-.f64 (*.f64 b b) (*.f64 4 (*.f64 a c))))
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
01574
133862
2415362
3497962
4534962

simplify84.0ms (0.6%)

Algorithm
egg-herbie
Rules
742×times-frac_binary64
467×associate-/l*_binary64
436×fma-def_binary64
432×fma-neg_binary64
426×associate-/r*_binary64
Counts
274 → 251
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
01212241
13982164
213272078
349542078
452182078

prune365.0ms (2.7%)

Pruning

11 alts after pruning (11 fresh and 0 done)

PrunedKeptTotal
New24011251
Fresh101
Picked101
Done000
Total24211253
Error
6.0b
Counts
253 → 11
Alt Table
StatusErrorProgram
42.8b
(/.f64 (/.f64 (-.f64 (fma.f64 b b (*.f64 (*.f64 a c) -4)) (*.f64 b b)) (+.f64 b (sqrt.f64 (fma.f64 b b (*.f64 (*.f64 a c) -4))))) (*.f64 2 a))
39.0b
(neg.f64 (/.f64 c b))
45.4b
(*.f64 (/.f64 1 (pow.f64 (cbrt.f64 (*.f64 a 2)) 2)) (/.f64 (+.f64 b (sqrt.f64 (fma.f64 b b (*.f64 (*.f64 a c) -4)))) (cbrt.f64 (*.f64 a 2))))
34.3b
(/.f64 (+.f64 (neg.f64 b) (sqrt.f64 (+.f64 (fma.f64 b b (*.f64 (*.f64 a c) -4)) (fma.f64 (neg.f64 (cbrt.f64 (*.f64 4 (*.f64 a c)))) (pow.f64 (cbrt.f64 (*.f64 4 (*.f64 a c))) 2) (*.f64 4 (*.f64 a c)))))) (*.f64 2 a))
34.2b
(/.f64 (fma.f64 -1 b (sqrt.f64 (fma.f64 b b (*.f64 (*.f64 a c) -4)))) (*.f64 2 a))
47.6b
(-.f64 (/.f64 c b) (/.f64 b a))
45.1b
(pow.f64 (/.f64 (*.f64 a 2) (+.f64 b (sqrt.f64 (fma.f64 b b (*.f64 (*.f64 a c) -4))))) -1)
45.7b
(/.f64 (*.f64 (+.f64 (fma.f64 b b (*.f64 b b)) (*.f64 4 (*.f64 a c))) (/.f64 1 (-.f64 b (sqrt.f64 (fma.f64 b b (*.f64 (*.f64 a c) -4)))))) (*.f64 2 a))
52.0b
(/.f64 (+.f64 (neg.f64 b) (sqrt.f64 (pow.f64 b 2))) (*.f64 2 a))
45.4b
(*.f64 (/.f64 (pow.f64 (cbrt.f64 (+.f64 b (sqrt.f64 (fma.f64 b b (*.f64 (*.f64 a c) -4))))) 2) 2) (/.f64 (cbrt.f64 (+.f64 b (sqrt.f64 (fma.f64 b b (*.f64 (*.f64 a c) -4))))) a))
43.3b
(/.f64 (+.f64 (neg.f64 b) (cbrt.f64 (pow.f64 (fma.f64 b b (*.f64 (*.f64 a c) -4)) 3/2))) (*.f64 2 a))
Compiler

Compiled 6793 to 3902 computations (42.6% saved)

localize27.0ms (0.2%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.1b
(/.f64 (fma.f64 -1 b (sqrt.f64 (fma.f64 b b (*.f64 (*.f64 a c) -4)))) (*.f64 2 a))
0.8b
(fma.f64 b b (*.f64 (*.f64 a c) -4))
1.0b
(fma.f64 -1 b (sqrt.f64 (fma.f64 b b (*.f64 (*.f64 a c) -4))))
21.6b
(sqrt.f64 (fma.f64 b b (*.f64 (*.f64 a c) -4)))

series227.0ms (1.7%)

Counts
4 → 96
Calls

4 calls:

92.0ms
(/.f64 (fma.f64 -1 b (sqrt.f64 (fma.f64 b b (*.f64 (*.f64 a c) -4)))) (*.f64 2 a))
61.0ms
(fma.f64 -1 b (sqrt.f64 (fma.f64 b b (*.f64 (*.f64 a c) -4))))
53.0ms
(sqrt.f64 (fma.f64 b b (*.f64 (*.f64 a c) -4)))
21.0ms
(fma.f64 b b (*.f64 (*.f64 a c) -4))

rewrite121.0ms (0.9%)

Algorithm
batch-egg-rewrite
Rules
304×prod-diff_binary64
247×expm1-udef_binary64
247×log1p-udef_binary64
218×log-pow_binary64
139×add-sqr-sqrt_binary64
Counts
4 → 122
Calls

4 calls:

118.0ms
(/.f64 (fma.f64 -1 b (sqrt.f64 (fma.f64 b b (*.f64 (*.f64 a c) -4)))) (*.f64 2 a))
118.0ms
(fma.f64 b b (*.f64 (*.f64 a c) -4))
118.0ms
(fma.f64 -1 b (sqrt.f64 (fma.f64 b b (*.f64 (*.f64 a c) -4))))
118.0ms
(sqrt.f64 (fma.f64 b b (*.f64 (*.f64 a c) -4)))
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
01464
128461
2331761
3498961
4503661

simplify83.0ms (0.6%)

Algorithm
egg-herbie
Rules
742×times-frac_binary64
467×associate-/l*_binary64
436×fma-def_binary64
432×fma-neg_binary64
426×associate-/r*_binary64
Counts
218 → 195
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
01212241
13982164
213272078
349542078
452182078

prune153.0ms (1.1%)

Pruning

10 alts after pruning (10 fresh and 0 done)

PrunedKeptTotal
New1932195
Fresh2810
Picked101
Done000
Total19610206
Error
6.0b
Counts
206 → 10
Alt Table
StatusErrorProgram
42.8b
(/.f64 (/.f64 (-.f64 (fma.f64 b b (*.f64 (*.f64 a c) -4)) (*.f64 b b)) (+.f64 b (sqrt.f64 (fma.f64 b b (*.f64 (*.f64 a c) -4))))) (*.f64 2 a))
39.0b
(neg.f64 (/.f64 c b))
45.4b
(*.f64 (/.f64 1 (pow.f64 (cbrt.f64 (*.f64 a 2)) 2)) (/.f64 (+.f64 b (sqrt.f64 (fma.f64 b b (*.f64 (*.f64 a c) -4)))) (cbrt.f64 (*.f64 a 2))))
34.3b
(/.f64 (+.f64 (neg.f64 b) (sqrt.f64 (+.f64 (fma.f64 b b (*.f64 (*.f64 a c) -4)) (fma.f64 (neg.f64 (cbrt.f64 (*.f64 4 (*.f64 a c)))) (pow.f64 (cbrt.f64 (*.f64 4 (*.f64 a c))) 2) (*.f64 4 (*.f64 a c)))))) (*.f64 2 a))
30.5b
(*.f64 (fma.f64 b -1 (hypot.f64 b (sqrt.f64 (*.f64 (*.f64 a c) -4)))) (/.f64 1/2 a))
47.6b
(-.f64 (/.f64 c b) (/.f64 b a))
30.5b
(pow.f64 (/.f64 (*.f64 a 2) (fma.f64 b -1 (hypot.f64 b (sqrt.f64 (*.f64 (*.f64 a c) -4))))) -1)
52.0b
(/.f64 (+.f64 (neg.f64 b) (sqrt.f64 (pow.f64 b 2))) (*.f64 2 a))
45.4b
(*.f64 (/.f64 (pow.f64 (cbrt.f64 (+.f64 b (sqrt.f64 (fma.f64 b b (*.f64 (*.f64 a c) -4))))) 2) 2) (/.f64 (cbrt.f64 (+.f64 b (sqrt.f64 (fma.f64 b b (*.f64 (*.f64 a c) -4))))) a))
43.3b
(/.f64 (+.f64 (neg.f64 b) (cbrt.f64 (pow.f64 (fma.f64 b b (*.f64 (*.f64 a c) -4)) 3/2))) (*.f64 2 a))
Compiler

Compiled 4915 to 3086 computations (37.2% saved)

localize12.0ms (0.1%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.0b
(*.f64 (*.f64 a c) -4)
0.1b
(*.f64 (fma.f64 b -1 (hypot.f64 b (sqrt.f64 (*.f64 (*.f64 a c) -4)))) (/.f64 1/2 a))
0.8b
(fma.f64 b -1 (hypot.f64 b (sqrt.f64 (*.f64 (*.f64 a c) -4))))
14.8b
(sqrt.f64 (*.f64 (*.f64 a c) -4))

series327.0ms (2.4%)

Counts
4 → 48
Calls

4 calls:

212.0ms
(*.f64 (fma.f64 b -1 (hypot.f64 b (sqrt.f64 (*.f64 (*.f64 a c) -4)))) (/.f64 1/2 a))
90.0ms
(fma.f64 b -1 (hypot.f64 b (sqrt.f64 (*.f64 (*.f64 a c) -4))))
16.0ms
(sqrt.f64 (*.f64 (*.f64 a c) -4))
8.0ms
(*.f64 (*.f64 a c) -4)

rewrite189.0ms (1.4%)

Algorithm
batch-egg-rewrite
Rules
266×prod-diff_binary64
245×expm1-udef_binary64
245×log1p-udef_binary64
239×fma-udef_binary64
218×log-pow_binary64
Counts
4 → 95
Calls

4 calls:

186.0ms
(*.f64 (*.f64 a c) -4)
186.0ms
(*.f64 (fma.f64 b -1 (hypot.f64 b (sqrt.f64 (*.f64 (*.f64 a c) -4)))) (/.f64 1/2 a))
186.0ms
(fma.f64 b -1 (hypot.f64 b (sqrt.f64 (*.f64 (*.f64 a c) -4))))
186.0ms
(sqrt.f64 (*.f64 (*.f64 a c) -4))
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01454
128654
2321154
3488454
4498454
5497254

simplify92.0ms (0.7%)

Algorithm
egg-herbie
Rules
728×times-frac_binary64
683×fma-neg_binary64
388×associate-/l*_binary64
364×associate-/r*_binary64
280×associate-*r*_binary64
Counts
143 → 141
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
01021156
13201076
210001025
349531025
454431025

prune164.0ms (1.2%)

Pruning

11 alts after pruning (10 fresh and 1 done)

PrunedKeptTotal
New1392141
Fresh189
Picked011
Done000
Total14011151
Error
2.7b
Counts
151 → 11
Alt Table
StatusErrorProgram
45.0b
(*.f64 (fma.f64 b -1 (hypot.f64 b (*.f64 (sqrt.f64 a) (sqrt.f64 (*.f64 c -4))))) (/.f64 1/2 a))
30.5b
(*.f64 (fma.f64 b -1 (hypot.f64 b (sqrt.f64 (*.f64 (*.f64 a c) -4)))) (/.f64 1/2 a))
42.8b
(/.f64 (/.f64 (-.f64 (fma.f64 b b (*.f64 (*.f64 a c) -4)) (*.f64 b b)) (+.f64 b (sqrt.f64 (fma.f64 b b (*.f64 (*.f64 a c) -4))))) (*.f64 2 a))
39.0b
(neg.f64 (/.f64 c b))
45.4b
(*.f64 (/.f64 1 (pow.f64 (cbrt.f64 (*.f64 a 2)) 2)) (/.f64 (+.f64 b (sqrt.f64 (fma.f64 b b (*.f64 (*.f64 a c) -4)))) (cbrt.f64 (*.f64 a 2))))
30.6b
(*.f64 (fma.f64 b -1 (hypot.f64 b (sqrt.f64 (pow.f64 (cbrt.f64 (*.f64 (*.f64 a c) -4)) 3)))) (/.f64 1/2 a))
47.6b
(-.f64 (/.f64 c b) (/.f64 b a))
30.5b
(pow.f64 (/.f64 (*.f64 a 2) (fma.f64 b -1 (hypot.f64 b (sqrt.f64 (*.f64 (*.f64 a c) -4))))) -1)
52.0b
(/.f64 (+.f64 (neg.f64 b) (sqrt.f64 (pow.f64 b 2))) (*.f64 2 a))
45.4b
(*.f64 (/.f64 (pow.f64 (cbrt.f64 (+.f64 b (sqrt.f64 (fma.f64 b b (*.f64 (*.f64 a c) -4))))) 2) 2) (/.f64 (cbrt.f64 (+.f64 b (sqrt.f64 (fma.f64 b b (*.f64 (*.f64 a c) -4))))) a))
43.3b
(/.f64 (+.f64 (neg.f64 b) (cbrt.f64 (pow.f64 (fma.f64 b b (*.f64 (*.f64 a c) -4)) 3/2))) (*.f64 2 a))
Compiler

Compiled 3579 to 2330 computations (34.9% saved)

localize20.0ms (0.1%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.1b
(/.f64 (*.f64 a 2) (fma.f64 b -1 (hypot.f64 b (sqrt.f64 (*.f64 (*.f64 a c) -4)))))
0.1b
(pow.f64 (/.f64 (*.f64 a 2) (fma.f64 b -1 (hypot.f64 b (sqrt.f64 (*.f64 (*.f64 a c) -4))))) -1)
0.8b
(fma.f64 b -1 (hypot.f64 b (sqrt.f64 (*.f64 (*.f64 a c) -4))))
14.8b
(sqrt.f64 (*.f64 (*.f64 a c) -4))

series1.2s (9.1%)

Counts
2 → 24
Calls

2 calls:

928.0ms
(pow.f64 (/.f64 (*.f64 a 2) (fma.f64 b -1 (hypot.f64 b (sqrt.f64 (*.f64 (*.f64 a c) -4))))) -1)
284.0ms
(/.f64 (*.f64 a 2) (fma.f64 b -1 (hypot.f64 b (sqrt.f64 (*.f64 (*.f64 a c) -4)))))

rewrite133.0ms (1%)

Algorithm
batch-egg-rewrite
Rules
264×expm1-udef_binary64
264×log1p-udef_binary64
260×prod-diff_binary64
232×fma-udef_binary64
222×fma-neg_binary64
Counts
2 → 94
Calls

2 calls:

131.0ms
(/.f64 (*.f64 a 2) (fma.f64 b -1 (hypot.f64 b (sqrt.f64 (*.f64 (*.f64 a c) -4)))))
131.0ms
(pow.f64 (/.f64 (*.f64 a 2) (fma.f64 b -1 (hypot.f64 b (sqrt.f64 (*.f64 (*.f64 a c) -4))))) -1)
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
01547
131244
2359044
3500044
4496044
5503544

simplify57.0ms (0.4%)

Algorithm
egg-herbie
Rules
871×times-frac_binary64
588×fma-neg_binary64
479×associate-/l*_binary64
450×associate-/r*_binary64
303×fma-def_binary64
Counts
118 → 140
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
01061073
1343970
21092931
34848931
45277931

prune283.0ms (2.1%)

Pruning

13 alts after pruning (11 fresh and 2 done)

PrunedKeptTotal
New2123215
Fresh189
Picked011
Done011
Total21313226
Error
2.6b
Counts
226 → 13
Alt Table
StatusErrorProgram
45.0b
(*.f64 (fma.f64 b -1 (hypot.f64 b (*.f64 (sqrt.f64 a) (sqrt.f64 (*.f64 c -4))))) (/.f64 1/2 a))
30.5b
(*.f64 (fma.f64 b -1 (hypot.f64 b (sqrt.f64 (*.f64 (*.f64 a c) -4)))) (/.f64 1/2 a))
42.8b
(/.f64 (/.f64 (-.f64 (fma.f64 b b (*.f64 (*.f64 a c) -4)) (*.f64 b b)) (+.f64 b (sqrt.f64 (fma.f64 b b (*.f64 (*.f64 a c) -4))))) (*.f64 2 a))
39.0b
(neg.f64 (/.f64 c b))
45.0b
(pow.f64 (+.f64 (*.f64 -1 (/.f64 (*.f64 a b) (*.f64 c a))) (/.f64 a b)) -1)
43.3b
(/.f64 (+.f64 (neg.f64 b) (cbrt.f64 (pow.f64 (fma.f64 b b (*.f64 (*.f64 a c) -4)) 3/2))) (*.f64 2 a))
45.4b
(*.f64 (/.f64 1 (pow.f64 (cbrt.f64 (*.f64 a 2)) 2)) (/.f64 (+.f64 b (sqrt.f64 (fma.f64 b b (*.f64 (*.f64 a c) -4)))) (cbrt.f64 (*.f64 a 2))))
30.5b
(/.f64 (/.f64 1 (*.f64 a 2)) (/.f64 1 (fma.f64 b -1 (hypot.f64 b (sqrt.f64 (*.f64 (*.f64 a c) -4))))))
47.6b
(-.f64 (/.f64 c b) (/.f64 b a))
45.0b
(pow.f64 (/.f64 (*.f64 a 2) (fma.f64 b -1 (hypot.f64 b (*.f64 (sqrt.f64 a) (sqrt.f64 (*.f64 c -4)))))) -1)
30.5b
(pow.f64 (/.f64 (*.f64 a 2) (fma.f64 b -1 (hypot.f64 b (sqrt.f64 (*.f64 (*.f64 a c) -4))))) -1)
52.0b
(/.f64 (+.f64 (neg.f64 b) (sqrt.f64 (pow.f64 b 2))) (*.f64 2 a))
45.4b
(*.f64 (/.f64 (pow.f64 (cbrt.f64 (+.f64 b (sqrt.f64 (fma.f64 b b (*.f64 (*.f64 a c) -4))))) 2) 2) (/.f64 (cbrt.f64 (+.f64 b (sqrt.f64 (fma.f64 b b (*.f64 (*.f64 a c) -4))))) a))
Compiler

Compiled 5777 to 3825 computations (33.8% saved)

regimes3.9s (29.1%)

Accuracy

Total 11.8b remaining (80.7%)

Threshold costs 0b (0%)

Counts
165 → 5
Compiler

Compiled 14384 to 10162 computations (29.4% saved)

bsearch12.0ms (0.1%)

Compiler

Compiled 20 to 14 computations (30% saved)

simplify19.0ms (0.1%)

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

Useful iterations: 1 (0.0ms)

IterNodesCost
046206
164198
276198
389198
495198
598198
699198
798198

end489.0ms (3.7%)

Compiler

Compiled 533 to 345 computations (35.3% saved)

Profiling

Loading profile data...