Details

Time bar (total: 10.9s)

analyze2.3s (21%)

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
0%99.9%0.1%5
0%99.9%0.1%6
0%93.6%6.4%7
0%93.6%6.4%8
0%91.3%8.7%9
0%86.6%13.4%10
0%85%15%11
1.6%80.7%17.7%12
2.3%77.5%20.2%13
2.3%76.5%21.2%14
Compiler

Compiled 42 to 27 computations (35.7% saved)

sample2.4s (21.7%)

Results
1.6s8256×body128valid
440.0ms366×body8192exit
169.0ms874×body128invalid
Compiler

Compiled 83 to 53 computations (36.1% saved)

simplify155.0ms (1.4%)

Algorithm
egg-herbie
Rules
1753×fma-neg_binary64
1288×fma-def_binary64
631×div-sub_binary64
512×times-frac_binary64
430×associate-/l*_binary64
Counts
1 → 2
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
02258
14752
211852
326950
442950
574350
6131550
7173850
8217650
9285350
10406650
11352350
12357550
13354350
14355750
15451050
16462250
17476150

prune4.0ms (0%)

Pruning

1 alts after pruning (1 fresh and 0 done)

PrunedKeptTotal
New112
Fresh101
Picked000
Done000
Total213
Error
20.4b
Counts
3 → 1
Alt Table
StatusErrorProgram
20.4b
(if (>=.f64 b 0) (*.f64 -1/2 (/.f64 (+.f64 b (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b)))) a)) (/.f64 (*.f64 c 2) (-.f64 (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b))) b)))
Compiler

Compiled 149 to 91 computations (38.9% saved)

localize20.0ms (0.2%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.2b
(fma.f64 a (*.f64 c -4) (*.f64 b b))
0.7b
(-.f64 (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b))) b)
1.1b
(+.f64 b (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b))))
22.9b
(sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b)))
Compiler

Compiled 1536 to 1280 computations (16.7% saved)

series158.0ms (1.4%)

Counts
4 → 96
Calls

4 calls:

53.0ms
(-.f64 (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b))) b)
51.0ms
(+.f64 b (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b))))
44.0ms
(sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b)))
10.0ms
(fma.f64 a (*.f64 c -4) (*.f64 b b))

rewrite14.0ms (0.1%)

Algorithm
rewrite-expression-head
Rules
26×add-sqr-sqrt_binary64
25×*-un-lft-identity_binary64
21×add-cube-cbrt_binary64
18×prod-diff_binary64
16×sqrt-prod_binary64
Counts
4 → 85
Calls

4 calls:

4.0ms
(-.f64 (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b))) b)
3.0ms
(+.f64 b (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b))))
1.0ms
(fma.f64 a (*.f64 c -4) (*.f64 b b))
1.0ms
(sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b)))

simplify122.0ms (1.1%)

Algorithm
egg-herbie
Rules
758×fma-neg_binary64
487×associate-/l*_binary64
478×associate-/r*_binary64
345×cancel-sign-sub-inv_binary64
150×distribute-rgt-in_binary64
Counts
181 → 187
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
01864403
14603612
215713474
348213474
450633474

prune353.0ms (3.2%)

Pruning

7 alts after pruning (7 fresh and 0 done)

PrunedKeptTotal
New2487255
Fresh000
Picked101
Done000
Total2497256
Error
7.4b
Counts
256 → 7
Alt Table
StatusErrorProgram
34.5b
(if (>=.f64 b 0) (*.f64 -1/2 (/.f64 (+.f64 b (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b)))) a)) (/.f64 (*.f64 c 2) (/.f64 (+.f64 (*.f64 c (*.f64 a -4)) 0) (+.f64 b (hypot.f64 b (sqrt.f64 (*.f64 c (*.f64 a -4))))))))
22.5b
(if (>=.f64 b 0) (*.f64 -1/2 (/.f64 (+.f64 b (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b)))) a)) (/.f64 (*.f64 c 2) (-.f64 (*.f64 -1 b) b)))
21.3b
(if (>=.f64 b 0) (*.f64 -1/2 (/.f64 (+.f64 b (*.f64 (sqrt.f64 (hypot.f64 b (sqrt.f64 (*.f64 c (*.f64 a -4))))) (sqrt.f64 (hypot.f64 b (sqrt.f64 (*.f64 c (*.f64 a -4))))))) a)) (/.f64 (*.f64 c 2) (-.f64 (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b))) b)))
20.4b
(if (>=.f64 b 0) (*.f64 -1/2 (/.f64 (+.f64 b (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b)))) a)) (/.f64 (*.f64 c 2) (-.f64 (*.f64 (sqrt.f64 (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b)))) (sqrt.f64 (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b))))) b)))
24.6b
(if (>=.f64 b 0) (*.f64 -1/2 (/.f64 (+.f64 b (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b)))) a)) (/.f64 (*.f64 c 2) (-.f64 (exp.f64 (log.f64 (hypot.f64 b (sqrt.f64 (*.f64 c (*.f64 a -4)))))) b)))
30.3b
(if (>=.f64 b 0) (*.f64 -1/2 (/.f64 (/.f64 (-.f64 (*.f64 b b) (fma.f64 b b (*.f64 c (*.f64 a -4)))) (-.f64 b (hypot.f64 b (sqrt.f64 (*.f64 c (*.f64 a -4)))))) a)) (/.f64 (*.f64 c 2) (-.f64 (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b))) b)))
22.7b
(if (>=.f64 b 0) (*.f64 -1/2 (/.f64 (+.f64 b b) a)) (/.f64 (*.f64 c 2) (-.f64 (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b))) b)))
Compiler

Compiled 11829 to 6925 computations (41.5% saved)

localize22.0ms (0.2%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.5b
(*.f64 (sqrt.f64 (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b)))) (sqrt.f64 (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b)))))
1.1b
(+.f64 b (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b))))
9.4b
(-.f64 (*.f64 (sqrt.f64 (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b)))) (sqrt.f64 (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b))))) b)
22.9b
(sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b)))
Compiler

Compiled 1536 to 1280 computations (16.7% saved)

series97.0ms (0.9%)

Counts
2 → 40
Calls

2 calls:

52.0ms
(-.f64 (*.f64 (sqrt.f64 (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b)))) (sqrt.f64 (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b))))) b)
44.0ms
(*.f64 (sqrt.f64 (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b)))) (sqrt.f64 (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b)))))

rewrite30.0ms (0.3%)

Algorithm
rewrite-expression-head
Rules
74×sqrt-prod_binary64
63×add-sqr-sqrt_binary64
32×sqrt-pow1_binary64
25×pow1_binary64
16×rem-sqrt-square_binary64
Counts
2 → 106
Calls

2 calls:

8.0ms
(*.f64 (sqrt.f64 (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b)))) (sqrt.f64 (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b)))))
7.0ms
(-.f64 (*.f64 (sqrt.f64 (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b)))) (sqrt.f64 (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b))))) b)

simplify113.0ms (1%)

Algorithm
egg-herbie
Rules
781×fma-def_binary64
520×fma-neg_binary64
492×associate-/l*_binary64
466×associate-/r*_binary64
216×cancel-sign-sub-inv_binary64
Counts
146 → 157
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
01863334
14333107
215192864
349242864
450702864

prune547.0ms (5%)

Pruning

7 alts after pruning (6 fresh and 1 done)

PrunedKeptTotal
New3351336
Fresh156
Picked011
Done000
Total3367343
Error
7.4b
Counts
343 → 7
Alt Table
StatusErrorProgram
21.3b
(if (>=.f64 b 0) (*.f64 -1/2 (/.f64 (+.f64 b (*.f64 (sqrt.f64 (hypot.f64 b (sqrt.f64 (*.f64 c (*.f64 a -4))))) (sqrt.f64 (hypot.f64 b (sqrt.f64 (*.f64 c (*.f64 a -4))))))) a)) (/.f64 (*.f64 c 2) (-.f64 (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b))) b)))
20.4b
(if (>=.f64 b 0) (*.f64 -1/2 (/.f64 (+.f64 b (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b)))) a)) (/.f64 (*.f64 c 2) (-.f64 (*.f64 (sqrt.f64 (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b)))) (sqrt.f64 (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b))))) b)))
34.5b
(if (>=.f64 b 0) (*.f64 -1/2 (/.f64 (+.f64 b (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b)))) a)) (/.f64 (*.f64 c 2) (/.f64 (fma.f64 a (*.f64 c -4) 0) (+.f64 b (hypot.f64 b (sqrt.f64 (*.f64 a (*.f64 c -4))))))))
24.6b
(if (>=.f64 b 0) (*.f64 -1/2 (/.f64 (+.f64 b (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b)))) a)) (/.f64 (*.f64 c 2) (-.f64 (exp.f64 (log.f64 (hypot.f64 b (sqrt.f64 (*.f64 c (*.f64 a -4)))))) b)))
22.5b
(if (>=.f64 b 0) (*.f64 -1/2 (/.f64 (+.f64 b (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b)))) a)) (/.f64 (*.f64 c 2) (-.f64 (*.f64 -1 b) b)))
30.3b
(if (>=.f64 b 0) (*.f64 -1/2 (/.f64 (/.f64 (-.f64 (*.f64 b b) (fma.f64 b b (*.f64 c (*.f64 a -4)))) (-.f64 b (hypot.f64 b (sqrt.f64 (*.f64 c (*.f64 a -4)))))) a)) (/.f64 (*.f64 c 2) (-.f64 (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b))) b)))
22.7b
(if (>=.f64 b 0) (*.f64 -1/2 (/.f64 (+.f64 b b) a)) (/.f64 (*.f64 c 2) (-.f64 (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b))) b)))
Compiler

Compiled 18515 to 11037 computations (40.4% saved)

localize27.0ms (0.2%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.7b
(-.f64 (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b))) b)
4.5b
(+.f64 b (*.f64 (sqrt.f64 (hypot.f64 b (sqrt.f64 (*.f64 c (*.f64 a -4))))) (sqrt.f64 (hypot.f64 b (sqrt.f64 (*.f64 c (*.f64 a -4)))))))
15.9b
(sqrt.f64 (*.f64 c (*.f64 a -4)))
22.9b
(sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b)))
Compiler

Compiled 1536 to 1280 computations (16.7% saved)

series156.0ms (1.4%)

Counts
2 → 14
Calls

2 calls:

135.0ms
(+.f64 b (*.f64 (sqrt.f64 (hypot.f64 b (sqrt.f64 (*.f64 c (*.f64 a -4))))) (sqrt.f64 (hypot.f64 b (sqrt.f64 (*.f64 c (*.f64 a -4)))))))
20.0ms
(sqrt.f64 (*.f64 c (*.f64 a -4)))

rewrite6.0ms (0.1%)

Algorithm
rewrite-expression-head
Rules
pow1_binary64
add-log-exp_binary64
fma-def_binary64
*-un-lft-identity_binary64
sqrt-pow1_binary64
Counts
2 → 30
Calls

2 calls:

3.0ms
(sqrt.f64 (*.f64 c (*.f64 a -4)))
2.0ms
(+.f64 b (*.f64 (sqrt.f64 (hypot.f64 b (sqrt.f64 (*.f64 c (*.f64 a -4))))) (sqrt.f64 (hypot.f64 b (sqrt.f64 (*.f64 c (*.f64 a -4)))))))

simplify57.0ms (0.5%)

Algorithm
egg-herbie
Rules
568×times-frac_binary64
432×associate-*r*_binary64
352×fma-neg_binary64
318×associate-*l*_binary64
306×associate-/l*_binary64
Counts
44 → 68
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
098865
1259811
2732786
34272784
44965784

prune348.0ms (3.2%)

Pruning

7 alts after pruning (6 fresh and 1 done)

PrunedKeptTotal
New2031204
Fresh055
Picked101
Done011
Total2047211
Error
7.4b
Counts
211 → 7
Alt Table
StatusErrorProgram
31.0b
(if (>=.f64 b 0) (*.f64 -1/2 (/.f64 (+.f64 b (*.f64 (sqrt.f64 (hypot.f64 b (sqrt.f64 (*.f64 c (*.f64 a -4))))) (sqrt.f64 (hypot.f64 b (*.f64 (sqrt.f64 c) (sqrt.f64 (*.f64 a -4))))))) a)) (/.f64 (*.f64 c 2) (-.f64 (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b))) b)))
20.4b
(if (>=.f64 b 0) (*.f64 -1/2 (/.f64 (+.f64 b (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b)))) a)) (/.f64 (*.f64 c 2) (-.f64 (*.f64 (sqrt.f64 (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b)))) (sqrt.f64 (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b))))) b)))
34.5b
(if (>=.f64 b 0) (*.f64 -1/2 (/.f64 (+.f64 b (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b)))) a)) (/.f64 (*.f64 c 2) (/.f64 (fma.f64 a (*.f64 c -4) 0) (+.f64 b (hypot.f64 b (sqrt.f64 (*.f64 a (*.f64 c -4))))))))
24.6b
(if (>=.f64 b 0) (*.f64 -1/2 (/.f64 (+.f64 b (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b)))) a)) (/.f64 (*.f64 c 2) (-.f64 (exp.f64 (log.f64 (hypot.f64 b (sqrt.f64 (*.f64 c (*.f64 a -4)))))) b)))
22.5b
(if (>=.f64 b 0) (*.f64 -1/2 (/.f64 (+.f64 b (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b)))) a)) (/.f64 (*.f64 c 2) (-.f64 (*.f64 -1 b) b)))
30.3b
(if (>=.f64 b 0) (*.f64 -1/2 (/.f64 (/.f64 (-.f64 (*.f64 b b) (fma.f64 b b (*.f64 c (*.f64 a -4)))) (-.f64 b (hypot.f64 b (sqrt.f64 (*.f64 c (*.f64 a -4)))))) a)) (/.f64 (*.f64 c 2) (-.f64 (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b))) b)))
22.7b
(if (>=.f64 b 0) (*.f64 -1/2 (/.f64 (+.f64 b b) a)) (/.f64 (*.f64 c 2) (-.f64 (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b))) b)))
Compiler

Compiled 11486 to 7263 computations (36.8% saved)

localize20.0ms (0.2%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.1b
(/.f64 (+.f64 b (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b)))) a)
0.2b
(fma.f64 a (*.f64 c -4) (*.f64 b b))
1.1b
(+.f64 b (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b))))
22.9b
(sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b)))
Compiler

Compiled 1536 to 1280 computations (16.7% saved)

series71.0ms (0.6%)

Counts
1 → 20
Calls

1 calls:

70.0ms
(/.f64 (+.f64 b (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b)))) a)

rewrite7.0ms (0.1%)

Algorithm
rewrite-expression-head
Rules
18×*-un-lft-identity_binary64
12×times-frac_binary64
10×add-sqr-sqrt_binary64
10×add-cube-cbrt_binary64
associate-/l*_binary64
Counts
1 → 35
Calls

1 calls:

5.0ms
(/.f64 (+.f64 b (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b)))) a)

simplify71.0ms (0.7%)

Algorithm
egg-herbie
Rules
411×times-frac_binary64
390×unswap-sqr_binary64
384×fma-neg_binary64
293×associate-/l*_binary64
285×associate-*r*_binary64
Counts
55 → 78
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
01191633
13261543
29451470
340831470
452171470

prune407.0ms (3.7%)

Pruning

7 alts after pruning (6 fresh and 1 done)

PrunedKeptTotal
New1912193
Fresh145
Picked101
Done011
Total1937200
Error
7.4b
Counts
200 → 7
Alt Table
StatusErrorProgram
32.9b
(if (>=.f64 b 0) (*.f64 -1/2 (/.f64 (+.f64 b (sqrt.f64 (cbrt.f64 (pow.f64 (fma.f64 b b (*.f64 c (*.f64 a -4))) 3)))) a)) (/.f64 (*.f64 c 2) (-.f64 (*.f64 -1 b) b)))
31.0b
(if (>=.f64 b 0) (*.f64 -1/2 (/.f64 (+.f64 b (*.f64 (sqrt.f64 (hypot.f64 b (sqrt.f64 (*.f64 c (*.f64 a -4))))) (sqrt.f64 (hypot.f64 b (*.f64 (sqrt.f64 c) (sqrt.f64 (*.f64 a -4))))))) a)) (/.f64 (*.f64 c 2) (-.f64 (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b))) b)))
20.4b
(if (>=.f64 b 0) (*.f64 -1/2 (/.f64 (+.f64 b (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b)))) a)) (/.f64 (*.f64 c 2) (-.f64 (*.f64 (sqrt.f64 (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b)))) (sqrt.f64 (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b))))) b)))
23.5b
(if (>=.f64 b 0) (*.f64 -1/2 (*.f64 (sqrt.f64 (+.f64 b (hypot.f64 (sqrt.f64 (*.f64 c (*.f64 a -4))) b))) (/.f64 (sqrt.f64 (+.f64 b (hypot.f64 (sqrt.f64 (*.f64 c (*.f64 a -4))) b))) a))) (/.f64 (*.f64 c 2) (-.f64 (*.f64 -1 b) b)))
34.5b
(if (>=.f64 b 0) (*.f64 -1/2 (/.f64 (+.f64 b (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b)))) a)) (/.f64 (*.f64 c 2) (/.f64 (fma.f64 a (*.f64 c -4) 0) (+.f64 b (hypot.f64 b (sqrt.f64 (*.f64 a (*.f64 c -4))))))))
24.6b
(if (>=.f64 b 0) (*.f64 -1/2 (/.f64 (+.f64 b (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b)))) a)) (/.f64 (*.f64 c 2) (-.f64 (exp.f64 (log.f64 (hypot.f64 b (sqrt.f64 (*.f64 c (*.f64 a -4)))))) b)))
22.7b
(if (>=.f64 b 0) (*.f64 -1/2 (/.f64 (+.f64 b b) a)) (/.f64 (*.f64 c 2) (-.f64 (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b))) b)))
Compiler

Compiled 7613 to 4812 computations (36.8% saved)

regimes3.2s (29.1%)

Accuracy

Total 0.9b remaining (14.7%)

Threshold costs 0.9b (14.7%)

Counts
192 → 5
Compiler

Compiled 30654 to 20998 computations (31.5% saved)

bsearch12.0ms (0.1%)

Compiler

Compiled 41 to 26 computations (36.6% saved)

simplify14.0ms (0.1%)

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

Useful iterations: 1 (0.0ms)

IterNodesCost
054484
174472
292472
3111472
4124472
5130472
6131472
7130472

end256.0ms (2.3%)

Compiler

Compiled 912 to 563 computations (38.3% saved)

Profiling

Loading profile data...