Details

Time bar (total: 44.5s)

analyze3.4s (7.5%)

Algorithm
search
Search
TrueOtherFalseIter
0%99.8%0.2%0
0%99.8%0.2%1
0%99.8%0.2%2
0%99.8%0.2%3
0%99.8%0.2%4
0%99.8%0.2%5
0%99.8%0.2%6
0%99.8%0.2%7
0%98.2%1.8%8
0%94.3%5.7%9
0.4%93%6.6%10
7.4%83.3%9.3%11
12.4%75.2%12.4%12
14.4%68.9%16.7%13
16.8%65.4%17.8%14
Compiler

Compiled 45 to 33 computations (26.7% saved)

sample178.0ms (0.4%)

Algorithm
intervals
Results
33.0ms175×body128valid
21.0ms29×body1024valid
19.0ms19×body2048nan
18.0ms25×body1024nan
18.0ms17×body2048valid
15.0ms28×body512nan
13.0ms21×body512valid
12.0ms72×body128nan
5.0ms14×body256valid
3.0msbody256nan
Compiler

Compiled 93 to 69 computations (25.8% saved)

simplify86.0ms (0.2%)

Algorithm
egg-herbie
Rules
560×associate-*l*_binary64
528×associate-*r*_binary64
455×distribute-rgt-in_binary64
450×fma-def_binary64
449×distribute-lft-in_binary64
Counts
1 → 2
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
02361
16649
220249
372149
4297349
5496849
6496649
7496949
8493949

prune6.0ms (0%)

Pruning

3 alts after pruning (3 fresh and 0 done)

PrunedKeptTotal
New022
Fresh011
Picked000
Done000
Total033
Error
48.9b
Counts
3 → 2
Alt Table
StatusErrorProgram
49.4b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
51.7b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 (*.f64 2 (*.f64 (-.f64 (pow.f64 B 2) (*.f64 (*.f64 4 A) C)) F)) (+.f64 (+.f64 A C) (sqrt.f64 (+.f64 (pow.f64 (-.f64 A C) 2) (pow.f64 B 2))))))) (-.f64 (pow.f64 B 2) (*.f64 (*.f64 4 A) C)))
Compiler

Compiled 239 to 156 computations (34.7% saved)

localize17.0ms (0%)

Local error

Found 4 expressions with local error:

NewErrorProgram
1.9b
(+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))
5.2b
(*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C))))))
14.1b
(sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))))
21.0b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))

rewrite40.0ms (0.1%)

Algorithm
rewrite-expression-head
Rules
38×*-un-lft-identity_binary64
36×times-frac_binary64
31×add-sqr-sqrt_binary64
31×add-cube-cbrt_binary64
23×pow1_binary64
Counts
4 → 140
Calls

4 calls:

9.0ms
(*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C))))))
8.0ms
(sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))))
6.0ms
(+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))
5.0ms
(/.f64 (neg.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))

series15.7s (35.3%)

Counts
4 → 124
Calls

4 calls:

8.5s
(sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))))
6.9s
(/.f64 (neg.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
235.0ms
(*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C))))))
53.0ms
(+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))

simplify570.0ms (1.3%)

Algorithm
egg-herbie
Rules
583×fma-def_binary64
274×associate-/l*_binary64
213×associate-*l/_binary64
183×associate-/r*_binary64
149×times-frac_binary64
Counts
264 → 417
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0244845159
1505245159

prune1.1s (2.4%)

Pruning

29 alts after pruning (29 fresh and 0 done)

PrunedKeptTotal
New38928417
Fresh011
Picked101
Done000
Total39029419
Error
24.8b
Counts
419 → 29
Alt Table
StatusErrorProgram
49.0b
(*.f64 (sqrt.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B))) (/.f64 (neg.f64 (sqrt.f64 (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B))))
57.4b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (fma.f64 2 A (*.f64 1/2 (/.f64 (*.f64 B B) A)))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
56.6b
(/.f64 (neg.f64 (*.f64 (sqrt.f64 (*.f64 -8 (*.f64 A F))) (*.f64 C (sqrt.f64 2)))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
58.7b
(neg.f64 (*.f64 (sqrt.f64 (*.f64 F (+.f64 A (sqrt.f64 (+.f64 (*.f64 A A) (*.f64 B B)))))) (/.f64 (sqrt.f64 2) B)))
55.3b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (*.f64 2 A)))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
49.7b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (fma.f64 (*.f64 (cbrt.f64 (+.f64 A C)) (cbrt.f64 (+.f64 A C))) (cbrt.f64 (+.f64 A C)) (hypot.f64 B (-.f64 A C)))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
49.4b
(*.f64 (neg.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))))) (/.f64 1 (fma.f64 A (*.f64 C -4) (*.f64 B B))))
58.9b
(/.f64 (neg.f64 (sqrt.f64 (-.f64 (fma.f64 4 (/.f64 (*.f64 (*.f64 C C) (*.f64 F (*.f64 B B))) A) (*.f64 8 (*.f64 C (*.f64 F (*.f64 B B))))) (+.f64 (/.f64 (*.f64 F (pow.f64 B 4)) A) (*.f64 16 (*.f64 A (*.f64 (*.f64 C C) F))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
56.1b
(/.f64 (neg.f64 (*.f64 A (*.f64 (sqrt.f64 2) (sqrt.f64 (*.f64 -8 (*.f64 C F)))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
49.6b
(*.f64 (*.f64 (cbrt.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))))) (cbrt.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C))))))))) (/.f64 (neg.f64 (cbrt.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C))))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B))))
59.8b
(/.f64 (neg.f64 (-.f64 (fma.f64 (sqrt.f64 (*.f64 F (+.f64 C (sqrt.f64 (+.f64 (*.f64 C C) (*.f64 B B)))))) (*.f64 (sqrt.f64 2) B) (*.f64 1/2 (*.f64 (*.f64 A (*.f64 (sqrt.f64 2) B)) (sqrt.f64 (/.f64 F (+.f64 C (sqrt.f64 (+.f64 (*.f64 C C) (*.f64 B B))))))))) (fma.f64 2 (*.f64 (/.f64 (*.f64 A (*.f64 C (sqrt.f64 2))) B) (sqrt.f64 (/.f64 (*.f64 (+.f64 (*.f64 C C) (*.f64 B B)) F) (+.f64 C (sqrt.f64 (+.f64 (*.f64 C C) (*.f64 B B))))))) (fma.f64 1/2 (*.f64 (*.f64 A (*.f64 C (*.f64 (sqrt.f64 2) B))) (sqrt.f64 (/.f64 F (*.f64 (+.f64 (*.f64 C C) (*.f64 B B)) (+.f64 C (sqrt.f64 (+.f64 (*.f64 C C) (*.f64 B B)))))))) (*.f64 2 (*.f64 (/.f64 (*.f64 A (*.f64 (*.f64 C C) (sqrt.f64 2))) B) (sqrt.f64 (/.f64 F (+.f64 C (sqrt.f64 (+.f64 (*.f64 C C) (*.f64 B B)))))))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
59.8b
(-.f64 (*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 F (*.f64 (+.f64 (sqrt.f64 (+.f64 (*.f64 B B) (*.f64 C C))) C) (+.f64 (*.f64 B B) (*.f64 C C))))) (/.f64 (*.f64 A (*.f64 C (sqrt.f64 2))) B))) (fma.f64 2 (*.f64 (sqrt.f64 (/.f64 (*.f64 (+.f64 (*.f64 C C) (*.f64 B B)) F) (+.f64 (sqrt.f64 (+.f64 (*.f64 B B) (*.f64 C C))) C))) (/.f64 (*.f64 A (*.f64 C (sqrt.f64 2))) (pow.f64 B 3))) (fma.f64 2 (*.f64 (sqrt.f64 (/.f64 F (+.f64 (sqrt.f64 (+.f64 (*.f64 B B) (*.f64 C C))) C))) (/.f64 (*.f64 A (*.f64 (*.f64 C C) (sqrt.f64 2))) (pow.f64 B 3))) (fma.f64 1/2 (*.f64 (sqrt.f64 (/.f64 F (+.f64 (sqrt.f64 (+.f64 (*.f64 B B) (*.f64 C C))) C))) (/.f64 (*.f64 A (sqrt.f64 2)) B)) (*.f64 (sqrt.f64 (*.f64 (+.f64 (sqrt.f64 (+.f64 (*.f64 B B) (*.f64 C C))) C) F)) (/.f64 (sqrt.f64 2) B))))))
60.4b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (neg.f64 B)))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
49.5b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 (*.f64 (cbrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C))))))) (cbrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))))) (cbrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
61.0b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 -2 (*.f64 F (pow.f64 B 3))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
58.3b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 -16 (*.f64 A (*.f64 (pow.f64 C 2) F))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
58.8b
(neg.f64 (*.f64 (sqrt.f64 (*.f64 (+.f64 (sqrt.f64 (+.f64 (*.f64 B B) (*.f64 C C))) C) F)) (/.f64 (sqrt.f64 2) B)))
51.7b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 (*.f64 2 (*.f64 (-.f64 (pow.f64 B 2) (*.f64 (*.f64 4 A) C)) F)) (+.f64 (+.f64 A C) (sqrt.f64 (+.f64 (pow.f64 (-.f64 A C) 2) (pow.f64 B 2))))))) (-.f64 (pow.f64 B 2) (*.f64 (*.f64 4 A) C)))
49.0b
(/.f64 (neg.f64 (*.f64 (sqrt.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B))) (sqrt.f64 (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
55.3b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (-.f64 (*.f64 2 A) (*.f64 1/2 (/.f64 (pow.f64 B 2) C)))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
60.4b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 2 (*.f64 F (pow.f64 B 3))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
59.8b
(neg.f64 (*.f64 (sqrt.f64 2) (sqrt.f64 (*.f64 -1/4 (/.f64 (*.f64 F (+.f64 A (+.f64 C (sqrt.f64 (-.f64 (+.f64 (*.f64 A A) (*.f64 C C)) (*.f64 2 (*.f64 A C))))))) (*.f64 A C))))))
59.8b
(-.f64 (*.f64 1/2 (*.f64 (/.f64 (*.f64 A (*.f64 C (sqrt.f64 2))) B) (sqrt.f64 (/.f64 F (*.f64 (+.f64 (*.f64 A A) (*.f64 B B)) (+.f64 A (sqrt.f64 (+.f64 (*.f64 A A) (*.f64 B B))))))))) (fma.f64 1/2 (*.f64 (/.f64 (*.f64 C (sqrt.f64 2)) B) (sqrt.f64 (/.f64 F (+.f64 A (sqrt.f64 (+.f64 (*.f64 A A) (*.f64 B B))))))) (fma.f64 2 (*.f64 (/.f64 (*.f64 A (*.f64 C (sqrt.f64 2))) (pow.f64 B 3)) (sqrt.f64 (/.f64 (*.f64 F (+.f64 (*.f64 A A) (*.f64 B B))) (+.f64 A (sqrt.f64 (+.f64 (*.f64 A A) (*.f64 B B))))))) (fma.f64 (sqrt.f64 (*.f64 F (+.f64 A (sqrt.f64 (+.f64 (*.f64 A A) (*.f64 B B)))))) (/.f64 (sqrt.f64 2) B) (*.f64 2 (*.f64 (/.f64 (*.f64 (*.f64 A A) (*.f64 C (sqrt.f64 2))) (pow.f64 B 3)) (sqrt.f64 (/.f64 F (+.f64 A (sqrt.f64 (+.f64 (*.f64 A A) (*.f64 B B))))))))))))
55.4b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (*.f64 2 C)))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
58.7b
(/.f64 (neg.f64 (*.f64 (sqrt.f64 (*.f64 F (+.f64 A (sqrt.f64 (+.f64 (pow.f64 A 2) (pow.f64 B 2)))))) (*.f64 (sqrt.f64 2) B))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
55.0b
(neg.f64 (*.f64 (sqrt.f64 (*.f64 -1/2 (/.f64 F C))) (sqrt.f64 2)))
57.5b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 -16 (*.f64 (pow.f64 A 2) (*.f64 C F))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
48.4b
(*.f64 -1 (/.f64 (sqrt.f64 (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))) (sqrt.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)))))
55.9b
(neg.f64 (*.f64 (sqrt.f64 2) (sqrt.f64 (*.f64 -1/2 (/.f64 F A)))))
Compiler

Compiled 62608 to 34194 computations (45.4% saved)

localize17.0ms (0%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.1b
(/.f64 (sqrt.f64 (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))) (sqrt.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B))))
1.9b
(+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))
10.5b
(sqrt.f64 (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C))))))
20.0b
(sqrt.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)))

rewrite24.0ms (0.1%)

Algorithm
rewrite-expression-head
Rules
26×sqrt-prod_binary64
24×times-frac_binary64
22×add-sqr-sqrt_binary64
21×*-un-lft-identity_binary64
21×add-cube-cbrt_binary64
Counts
3 → 82
Calls

3 calls:

9.0ms
(/.f64 (sqrt.f64 (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))) (sqrt.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B))))
7.0ms
(sqrt.f64 (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C))))))
1.0ms
(sqrt.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)))

series4.0s (8.9%)

Counts
3 → 60
Calls

3 calls:

3.0s
(/.f64 (sqrt.f64 (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))) (sqrt.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B))))
932.0ms
(sqrt.f64 (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C))))))
40.0ms
(sqrt.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)))

simplify274.0ms (0.6%)

Algorithm
egg-herbie
Rules
657×*-commutative_binary64
324×fma-def_binary64
297×associate-*r*_binary64
284×associate-+r+_binary64
170×associate-/l*_binary64
Counts
142 → 222
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0151926044
1520126044

prune708.0ms (1.6%)

Pruning

33 alts after pruning (33 fresh and 0 done)

PrunedKeptTotal
New3038311
Fresh32528
Picked101
Done000
Total30733340
Error
16.3b
Counts
340 → 33
Alt Table
StatusErrorProgram
48.5b
(*.f64 -1 (*.f64 (/.f64 1 (fabs.f64 (cbrt.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B))))) (/.f64 (sqrt.f64 (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))) (sqrt.f64 (cbrt.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)))))))
59.8b
(-.f64 (*.f64 1/2 (*.f64 (/.f64 (*.f64 A (*.f64 C (sqrt.f64 2))) B) (sqrt.f64 (/.f64 F (*.f64 (+.f64 (*.f64 A A) (*.f64 B B)) (+.f64 A (sqrt.f64 (+.f64 (*.f64 A A) (*.f64 B B))))))))) (fma.f64 1/2 (*.f64 (/.f64 (*.f64 C (sqrt.f64 2)) B) (sqrt.f64 (/.f64 F (+.f64 A (sqrt.f64 (+.f64 (*.f64 A A) (*.f64 B B))))))) (fma.f64 2 (*.f64 (/.f64 (*.f64 A (*.f64 C (sqrt.f64 2))) (pow.f64 B 3)) (sqrt.f64 (/.f64 (*.f64 F (+.f64 (*.f64 A A) (*.f64 B B))) (+.f64 A (sqrt.f64 (+.f64 (*.f64 A A) (*.f64 B B))))))) (fma.f64 (sqrt.f64 (*.f64 F (+.f64 A (sqrt.f64 (+.f64 (*.f64 A A) (*.f64 B B)))))) (/.f64 (sqrt.f64 2) B) (*.f64 2 (*.f64 (/.f64 (*.f64 (*.f64 A A) (*.f64 C (sqrt.f64 2))) (pow.f64 B 3)) (sqrt.f64 (/.f64 F (+.f64 A (sqrt.f64 (+.f64 (*.f64 A A) (*.f64 B B))))))))))))
53.6b
(*.f64 -1 (/.f64 (sqrt.f64 (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))) B))
57.4b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (fma.f64 2 A (*.f64 1/2 (/.f64 (*.f64 B B) A)))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
49.0b
(*.f64 (sqrt.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B))) (/.f64 (neg.f64 (sqrt.f64 (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B))))
56.6b
(/.f64 (neg.f64 (*.f64 (sqrt.f64 (*.f64 -8 (*.f64 A F))) (*.f64 C (sqrt.f64 2)))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
58.7b
(neg.f64 (*.f64 (sqrt.f64 (*.f64 F (+.f64 A (sqrt.f64 (+.f64 (*.f64 A A) (*.f64 B B)))))) (/.f64 (sqrt.f64 2) B)))
49.2b
(*.f64 -1 (sqrt.f64 (/.f64 (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))))
58.7b
(/.f64 (neg.f64 (*.f64 (sqrt.f64 (*.f64 F (+.f64 A (sqrt.f64 (+.f64 (pow.f64 A 2) (pow.f64 B 2)))))) (*.f64 (sqrt.f64 2) B))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
58.0b
(*.f64 -1 (/.f64 (sqrt.f64 (*.f64 2 (*.f64 F (fma.f64 1/2 (/.f64 (*.f64 B B) C) (*.f64 2 C))))) (sqrt.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)))))
49.7b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (fma.f64 (*.f64 (cbrt.f64 (+.f64 A C)) (cbrt.f64 (+.f64 A C))) (cbrt.f64 (+.f64 A C)) (hypot.f64 B (-.f64 A C)))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
49.4b
(*.f64 (neg.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))))) (/.f64 1 (fma.f64 A (*.f64 C -4) (*.f64 B B))))
57.7b
(*.f64 -1 (/.f64 (sqrt.f64 (*.f64 2 (*.f64 F (-.f64 (*.f64 2 A) (*.f64 1/2 (/.f64 (*.f64 B B) C)))))) (sqrt.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)))))
58.9b
(/.f64 (neg.f64 (sqrt.f64 (-.f64 (fma.f64 4 (/.f64 (*.f64 (*.f64 C C) (*.f64 F (*.f64 B B))) A) (*.f64 8 (*.f64 C (*.f64 F (*.f64 B B))))) (+.f64 (/.f64 (*.f64 F (pow.f64 B 4)) A) (*.f64 16 (*.f64 A (*.f64 (*.f64 C C) F))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
56.1b
(/.f64 (neg.f64 (*.f64 A (*.f64 (sqrt.f64 2) (sqrt.f64 (*.f64 -8 (*.f64 C F)))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
59.8b
(/.f64 (neg.f64 (-.f64 (fma.f64 (sqrt.f64 (*.f64 F (+.f64 C (sqrt.f64 (+.f64 (*.f64 C C) (*.f64 B B)))))) (*.f64 (sqrt.f64 2) B) (*.f64 1/2 (*.f64 (*.f64 A (*.f64 (sqrt.f64 2) B)) (sqrt.f64 (/.f64 F (+.f64 C (sqrt.f64 (+.f64 (*.f64 C C) (*.f64 B B))))))))) (fma.f64 2 (*.f64 (/.f64 (*.f64 A (*.f64 C (sqrt.f64 2))) B) (sqrt.f64 (/.f64 (*.f64 (+.f64 (*.f64 C C) (*.f64 B B)) F) (+.f64 C (sqrt.f64 (+.f64 (*.f64 C C) (*.f64 B B))))))) (fma.f64 1/2 (*.f64 (*.f64 A (*.f64 C (*.f64 (sqrt.f64 2) B))) (sqrt.f64 (/.f64 F (*.f64 (+.f64 (*.f64 C C) (*.f64 B B)) (+.f64 C (sqrt.f64 (+.f64 (*.f64 C C) (*.f64 B B)))))))) (*.f64 2 (*.f64 (/.f64 (*.f64 A (*.f64 (*.f64 C C) (sqrt.f64 2))) B) (sqrt.f64 (/.f64 F (+.f64 C (sqrt.f64 (+.f64 (*.f64 C C) (*.f64 B B)))))))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
59.8b
(-.f64 (*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 F (*.f64 (+.f64 (sqrt.f64 (+.f64 (*.f64 B B) (*.f64 C C))) C) (+.f64 (*.f64 B B) (*.f64 C C))))) (/.f64 (*.f64 A (*.f64 C (sqrt.f64 2))) B))) (fma.f64 2 (*.f64 (sqrt.f64 (/.f64 (*.f64 (+.f64 (*.f64 C C) (*.f64 B B)) F) (+.f64 (sqrt.f64 (+.f64 (*.f64 B B) (*.f64 C C))) C))) (/.f64 (*.f64 A (*.f64 C (sqrt.f64 2))) (pow.f64 B 3))) (fma.f64 2 (*.f64 (sqrt.f64 (/.f64 F (+.f64 (sqrt.f64 (+.f64 (*.f64 B B) (*.f64 C C))) C))) (/.f64 (*.f64 A (*.f64 (*.f64 C C) (sqrt.f64 2))) (pow.f64 B 3))) (fma.f64 1/2 (*.f64 (sqrt.f64 (/.f64 F (+.f64 (sqrt.f64 (+.f64 (*.f64 B B) (*.f64 C C))) C))) (/.f64 (*.f64 A (sqrt.f64 2)) B)) (*.f64 (sqrt.f64 (*.f64 (+.f64 (sqrt.f64 (+.f64 (*.f64 B B) (*.f64 C C))) C) F)) (/.f64 (sqrt.f64 2) B))))))
60.4b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (neg.f64 B)))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
49.5b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 (*.f64 (cbrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C))))))) (cbrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))))) (cbrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
61.0b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 -2 (*.f64 F (pow.f64 B 3))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
58.3b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 -16 (*.f64 A (*.f64 (pow.f64 C 2) F))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
58.8b
(neg.f64 (*.f64 (sqrt.f64 (*.f64 (+.f64 (sqrt.f64 (+.f64 (*.f64 B B) (*.f64 C C))) C) F)) (/.f64 (sqrt.f64 2) B)))
57.6b
(*.f64 -1 (/.f64 (*.f64 (sqrt.f64 (*.f64 A F)) (pow.f64 (sqrt.f64 2) 2)) (sqrt.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)))))
57.5b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 -16 (*.f64 (pow.f64 A 2) (*.f64 C F))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
57.2b
(*.f64 -1 (/.f64 (*.f64 (sqrt.f64 (*.f64 C F)) (pow.f64 (sqrt.f64 2) 2)) (sqrt.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)))))
55.3b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (-.f64 (*.f64 2 A) (*.f64 1/2 (/.f64 (pow.f64 B 2) C)))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
60.4b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 2 (*.f64 F (pow.f64 B 3))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
59.8b
(neg.f64 (*.f64 (sqrt.f64 2) (sqrt.f64 (*.f64 -1/4 (/.f64 (*.f64 F (+.f64 A (+.f64 C (sqrt.f64 (-.f64 (+.f64 (*.f64 A A) (*.f64 C C)) (*.f64 2 (*.f64 A C))))))) (*.f64 A C))))))
53.2b
(*.f64 -1 (/.f64 (sqrt.f64 (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))) (neg.f64 B)))
55.9b
(neg.f64 (*.f64 (sqrt.f64 2) (sqrt.f64 (*.f64 -1/2 (/.f64 F A)))))
55.4b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (*.f64 2 C)))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
55.0b
(neg.f64 (*.f64 (sqrt.f64 (*.f64 -1/2 (/.f64 F C))) (sqrt.f64 2)))
51.7b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 (*.f64 2 (*.f64 (-.f64 (pow.f64 B 2) (*.f64 (*.f64 4 A) C)) F)) (+.f64 (+.f64 A C) (sqrt.f64 (+.f64 (pow.f64 (-.f64 A C) 2) (pow.f64 B 2))))))) (-.f64 (pow.f64 B 2) (*.f64 (*.f64 4 A) C)))
Compiler

Compiled 41241 to 23201 computations (43.7% saved)

localize23.0ms (0.1%)

Local error

Found 4 expressions with local error:

NewErrorProgram
1.9b
(+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))
10.5b
(sqrt.f64 (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C))))))
22.9b
(cbrt.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)))
22.9b
(cbrt.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)))

rewrite1.0ms (0%)

Algorithm
rewrite-expression-head
Rules
cbrt-prod_binary64
*-un-lft-identity_binary64
add-sqr-sqrt_binary64
add-cube-cbrt_binary64
add-cbrt-cube_binary64
Counts
1 → 13
Calls

1 calls:

1.0ms
(cbrt.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)))

series53.0ms (0.1%)

Counts
1 → 36
Calls

1 calls:

53.0ms
(cbrt.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)))

simplify98.0ms (0.2%)

Algorithm
egg-herbie
Rules
529×fma-def_binary64
374×fma-neg_binary64
373×cancel-sign-sub-inv_binary64
245×distribute-rgt-neg-in_binary64
239×distribute-lft-neg-in_binary64
Counts
49 → 95
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
01832243
15642203
220652145
347852145
450412145

prune441.0ms (1%)

Pruning

34 alts after pruning (33 fresh and 1 done)

PrunedKeptTotal
New4271428
Fresh03232
Picked011
Done000
Total42734461
Error
16.3b
Counts
461 → 34
Alt Table
StatusErrorProgram
48.5b
(*.f64 -1 (*.f64 (/.f64 1 (fabs.f64 (cbrt.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B))))) (/.f64 (sqrt.f64 (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))) (sqrt.f64 (cbrt.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)))))))
59.8b
(-.f64 (*.f64 1/2 (*.f64 (/.f64 (*.f64 A (*.f64 C (sqrt.f64 2))) B) (sqrt.f64 (/.f64 F (*.f64 (+.f64 (*.f64 A A) (*.f64 B B)) (+.f64 A (sqrt.f64 (+.f64 (*.f64 A A) (*.f64 B B))))))))) (fma.f64 1/2 (*.f64 (/.f64 (*.f64 C (sqrt.f64 2)) B) (sqrt.f64 (/.f64 F (+.f64 A (sqrt.f64 (+.f64 (*.f64 A A) (*.f64 B B))))))) (fma.f64 2 (*.f64 (/.f64 (*.f64 A (*.f64 C (sqrt.f64 2))) (pow.f64 B 3)) (sqrt.f64 (/.f64 (*.f64 F (+.f64 (*.f64 A A) (*.f64 B B))) (+.f64 A (sqrt.f64 (+.f64 (*.f64 A A) (*.f64 B B))))))) (fma.f64 (sqrt.f64 (*.f64 F (+.f64 A (sqrt.f64 (+.f64 (*.f64 A A) (*.f64 B B)))))) (/.f64 (sqrt.f64 2) B) (*.f64 2 (*.f64 (/.f64 (*.f64 (*.f64 A A) (*.f64 C (sqrt.f64 2))) (pow.f64 B 3)) (sqrt.f64 (/.f64 F (+.f64 A (sqrt.f64 (+.f64 (*.f64 A A) (*.f64 B B))))))))))))
55.4b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (*.f64 2 C)))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
57.2b
(*.f64 -1 (*.f64 (/.f64 1 (fabs.f64 (cbrt.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B))))) (/.f64 (sqrt.f64 (*.f64 2 (*.f64 F (*.f64 2 C)))) (sqrt.f64 (cbrt.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)))))))
53.6b
(*.f64 -1 (/.f64 (sqrt.f64 (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))) B))
57.4b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (fma.f64 2 A (*.f64 1/2 (/.f64 (*.f64 B B) A)))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
49.0b
(*.f64 (sqrt.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B))) (/.f64 (neg.f64 (sqrt.f64 (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B))))
56.6b
(/.f64 (neg.f64 (*.f64 (sqrt.f64 (*.f64 -8 (*.f64 A F))) (*.f64 C (sqrt.f64 2)))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
58.7b
(neg.f64 (*.f64 (sqrt.f64 (*.f64 F (+.f64 A (sqrt.f64 (+.f64 (*.f64 A A) (*.f64 B B)))))) (/.f64 (sqrt.f64 2) B)))
49.2b
(*.f64 -1 (sqrt.f64 (/.f64 (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))))
58.7b
(/.f64 (neg.f64 (*.f64 (sqrt.f64 (*.f64 F (+.f64 A (sqrt.f64 (+.f64 (pow.f64 A 2) (pow.f64 B 2)))))) (*.f64 (sqrt.f64 2) B))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
58.0b
(*.f64 -1 (/.f64 (sqrt.f64 (*.f64 2 (*.f64 F (fma.f64 1/2 (/.f64 (*.f64 B B) C) (*.f64 2 C))))) (sqrt.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)))))
49.7b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (fma.f64 (*.f64 (cbrt.f64 (+.f64 A C)) (cbrt.f64 (+.f64 A C))) (cbrt.f64 (+.f64 A C)) (hypot.f64 B (-.f64 A C)))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
49.4b
(*.f64 (neg.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))))) (/.f64 1 (fma.f64 A (*.f64 C -4) (*.f64 B B))))
57.7b
(*.f64 -1 (/.f64 (sqrt.f64 (*.f64 2 (*.f64 F (-.f64 (*.f64 2 A) (*.f64 1/2 (/.f64 (*.f64 B B) C)))))) (sqrt.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)))))
58.9b
(/.f64 (neg.f64 (sqrt.f64 (-.f64 (fma.f64 4 (/.f64 (*.f64 (*.f64 C C) (*.f64 F (*.f64 B B))) A) (*.f64 8 (*.f64 C (*.f64 F (*.f64 B B))))) (+.f64 (/.f64 (*.f64 F (pow.f64 B 4)) A) (*.f64 16 (*.f64 A (*.f64 (*.f64 C C) F))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
56.1b
(/.f64 (neg.f64 (*.f64 A (*.f64 (sqrt.f64 2) (sqrt.f64 (*.f64 -8 (*.f64 C F)))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
59.8b
(/.f64 (neg.f64 (-.f64 (fma.f64 (sqrt.f64 (*.f64 F (+.f64 C (sqrt.f64 (+.f64 (*.f64 C C) (*.f64 B B)))))) (*.f64 (sqrt.f64 2) B) (*.f64 1/2 (*.f64 (*.f64 A (*.f64 (sqrt.f64 2) B)) (sqrt.f64 (/.f64 F (+.f64 C (sqrt.f64 (+.f64 (*.f64 C C) (*.f64 B B))))))))) (fma.f64 2 (*.f64 (/.f64 (*.f64 A (*.f64 C (sqrt.f64 2))) B) (sqrt.f64 (/.f64 (*.f64 (+.f64 (*.f64 C C) (*.f64 B B)) F) (+.f64 C (sqrt.f64 (+.f64 (*.f64 C C) (*.f64 B B))))))) (fma.f64 1/2 (*.f64 (*.f64 A (*.f64 C (*.f64 (sqrt.f64 2) B))) (sqrt.f64 (/.f64 F (*.f64 (+.f64 (*.f64 C C) (*.f64 B B)) (+.f64 C (sqrt.f64 (+.f64 (*.f64 C C) (*.f64 B B)))))))) (*.f64 2 (*.f64 (/.f64 (*.f64 A (*.f64 (*.f64 C C) (sqrt.f64 2))) B) (sqrt.f64 (/.f64 F (+.f64 C (sqrt.f64 (+.f64 (*.f64 C C) (*.f64 B B)))))))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
59.8b
(-.f64 (*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 F (*.f64 (+.f64 (sqrt.f64 (+.f64 (*.f64 B B) (*.f64 C C))) C) (+.f64 (*.f64 B B) (*.f64 C C))))) (/.f64 (*.f64 A (*.f64 C (sqrt.f64 2))) B))) (fma.f64 2 (*.f64 (sqrt.f64 (/.f64 (*.f64 (+.f64 (*.f64 C C) (*.f64 B B)) F) (+.f64 (sqrt.f64 (+.f64 (*.f64 B B) (*.f64 C C))) C))) (/.f64 (*.f64 A (*.f64 C (sqrt.f64 2))) (pow.f64 B 3))) (fma.f64 2 (*.f64 (sqrt.f64 (/.f64 F (+.f64 (sqrt.f64 (+.f64 (*.f64 B B) (*.f64 C C))) C))) (/.f64 (*.f64 A (*.f64 (*.f64 C C) (sqrt.f64 2))) (pow.f64 B 3))) (fma.f64 1/2 (*.f64 (sqrt.f64 (/.f64 F (+.f64 (sqrt.f64 (+.f64 (*.f64 B B) (*.f64 C C))) C))) (/.f64 (*.f64 A (sqrt.f64 2)) B)) (*.f64 (sqrt.f64 (*.f64 (+.f64 (sqrt.f64 (+.f64 (*.f64 B B) (*.f64 C C))) C) F)) (/.f64 (sqrt.f64 2) B))))))
60.4b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (neg.f64 B)))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
49.5b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 (*.f64 (cbrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C))))))) (cbrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))))) (cbrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
61.0b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 -2 (*.f64 F (pow.f64 B 3))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
58.3b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 -16 (*.f64 A (*.f64 (pow.f64 C 2) F))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
58.8b
(neg.f64 (*.f64 (sqrt.f64 (*.f64 (+.f64 (sqrt.f64 (+.f64 (*.f64 B B) (*.f64 C C))) C) F)) (/.f64 (sqrt.f64 2) B)))
57.6b
(*.f64 -1 (/.f64 (*.f64 (sqrt.f64 (*.f64 A F)) (pow.f64 (sqrt.f64 2) 2)) (sqrt.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)))))
57.5b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 -16 (*.f64 (pow.f64 A 2) (*.f64 C F))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
57.2b
(*.f64 -1 (/.f64 (*.f64 (sqrt.f64 (*.f64 C F)) (pow.f64 (sqrt.f64 2) 2)) (sqrt.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)))))
55.3b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (-.f64 (*.f64 2 A) (*.f64 1/2 (/.f64 (pow.f64 B 2) C)))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
60.4b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 2 (*.f64 F (pow.f64 B 3))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
59.8b
(neg.f64 (*.f64 (sqrt.f64 2) (sqrt.f64 (*.f64 -1/4 (/.f64 (*.f64 F (+.f64 A (+.f64 C (sqrt.f64 (-.f64 (+.f64 (*.f64 A A) (*.f64 C C)) (*.f64 2 (*.f64 A C))))))) (*.f64 A C))))))
53.2b
(*.f64 -1 (/.f64 (sqrt.f64 (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))) (neg.f64 B)))
55.9b
(neg.f64 (*.f64 (sqrt.f64 2) (sqrt.f64 (*.f64 -1/2 (/.f64 F A)))))
55.0b
(neg.f64 (*.f64 (sqrt.f64 (*.f64 -1/2 (/.f64 F C))) (sqrt.f64 2)))
51.7b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 (*.f64 2 (*.f64 (-.f64 (pow.f64 B 2) (*.f64 (*.f64 4 A) C)) F)) (+.f64 (+.f64 A C) (sqrt.f64 (+.f64 (pow.f64 (-.f64 A C) 2) (pow.f64 B 2))))))) (-.f64 (pow.f64 B 2) (*.f64 (*.f64 4 A) C)))
Compiler

Compiled 25061 to 14450 computations (42.3% saved)

localize19.0ms (0%)

Local error

Found 4 expressions with local error:

NewErrorProgram
7.2b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
10.5b
(sqrt.f64 (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C))))))
10.5b
(*.f64 (sqrt.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B))) (/.f64 (neg.f64 (sqrt.f64 (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B))))
20.0b
(sqrt.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)))

rewrite35.0ms (0.1%)

Algorithm
rewrite-expression-head
Rules
74×times-frac_binary64
61×add-sqr-sqrt_binary64
51×*-un-lft-identity_binary64
51×add-cube-cbrt_binary64
40×associate-*r*_binary64
Counts
2 → 136
Calls

2 calls:

13.0ms
(*.f64 (sqrt.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B))) (/.f64 (neg.f64 (sqrt.f64 (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B))))
6.0ms
(/.f64 (neg.f64 (sqrt.f64 (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))

series5.2s (11.7%)

Counts
2 → 40
Calls

2 calls:

3.5s
(*.f64 (sqrt.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B))) (/.f64 (neg.f64 (sqrt.f64 (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B))))
1.7s
(/.f64 (neg.f64 (sqrt.f64 (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))

simplify345.0ms (0.8%)

Algorithm
egg-herbie
Rules
384×fma-def_binary64
342×associate-+r+_binary64
341×associate-*r*_binary64
222×associate-/l*_binary64
190×associate-*l/_binary64
Counts
176 → 259
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0180333367
1543333367

prune866.0ms (1.9%)

Pruning

34 alts after pruning (32 fresh and 2 done)

PrunedKeptTotal
New4310431
Fresh03232
Picked011
Done011
Total43134465
Error
16.3b
Counts
465 → 34
Alt Table
StatusErrorProgram
48.5b
(*.f64 -1 (*.f64 (/.f64 1 (fabs.f64 (cbrt.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B))))) (/.f64 (sqrt.f64 (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))) (sqrt.f64 (cbrt.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)))))))
59.8b
(-.f64 (*.f64 1/2 (*.f64 (/.f64 (*.f64 A (*.f64 C (sqrt.f64 2))) B) (sqrt.f64 (/.f64 F (*.f64 (+.f64 (*.f64 A A) (*.f64 B B)) (+.f64 A (sqrt.f64 (+.f64 (*.f64 A A) (*.f64 B B))))))))) (fma.f64 1/2 (*.f64 (/.f64 (*.f64 C (sqrt.f64 2)) B) (sqrt.f64 (/.f64 F (+.f64 A (sqrt.f64 (+.f64 (*.f64 A A) (*.f64 B B))))))) (fma.f64 2 (*.f64 (/.f64 (*.f64 A (*.f64 C (sqrt.f64 2))) (pow.f64 B 3)) (sqrt.f64 (/.f64 (*.f64 F (+.f64 (*.f64 A A) (*.f64 B B))) (+.f64 A (sqrt.f64 (+.f64 (*.f64 A A) (*.f64 B B))))))) (fma.f64 (sqrt.f64 (*.f64 F (+.f64 A (sqrt.f64 (+.f64 (*.f64 A A) (*.f64 B B)))))) (/.f64 (sqrt.f64 2) B) (*.f64 2 (*.f64 (/.f64 (*.f64 (*.f64 A A) (*.f64 C (sqrt.f64 2))) (pow.f64 B 3)) (sqrt.f64 (/.f64 F (+.f64 A (sqrt.f64 (+.f64 (*.f64 A A) (*.f64 B B))))))))))))
55.4b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (*.f64 2 C)))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
57.2b
(*.f64 -1 (*.f64 (/.f64 1 (fabs.f64 (cbrt.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B))))) (/.f64 (sqrt.f64 (*.f64 2 (*.f64 F (*.f64 2 C)))) (sqrt.f64 (cbrt.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)))))))
53.6b
(*.f64 -1 (/.f64 (sqrt.f64 (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))) B))
57.4b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (fma.f64 2 A (*.f64 1/2 (/.f64 (*.f64 B B) A)))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
49.0b
(*.f64 (sqrt.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B))) (/.f64 (neg.f64 (sqrt.f64 (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B))))
56.6b
(/.f64 (neg.f64 (*.f64 (sqrt.f64 (*.f64 -8 (*.f64 A F))) (*.f64 C (sqrt.f64 2)))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
58.7b
(neg.f64 (*.f64 (sqrt.f64 (*.f64 F (+.f64 A (sqrt.f64 (+.f64 (*.f64 A A) (*.f64 B B)))))) (/.f64 (sqrt.f64 2) B)))
49.2b
(*.f64 -1 (sqrt.f64 (/.f64 (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))))
58.7b
(/.f64 (neg.f64 (*.f64 (sqrt.f64 (*.f64 F (+.f64 A (sqrt.f64 (+.f64 (pow.f64 A 2) (pow.f64 B 2)))))) (*.f64 (sqrt.f64 2) B))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
58.0b
(*.f64 -1 (/.f64 (sqrt.f64 (*.f64 2 (*.f64 F (fma.f64 1/2 (/.f64 (*.f64 B B) C) (*.f64 2 C))))) (sqrt.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)))))
49.7b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (fma.f64 (*.f64 (cbrt.f64 (+.f64 A C)) (cbrt.f64 (+.f64 A C))) (cbrt.f64 (+.f64 A C)) (hypot.f64 B (-.f64 A C)))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
49.4b
(*.f64 (neg.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))))) (/.f64 1 (fma.f64 A (*.f64 C -4) (*.f64 B B))))
57.7b
(*.f64 -1 (/.f64 (sqrt.f64 (*.f64 2 (*.f64 F (-.f64 (*.f64 2 A) (*.f64 1/2 (/.f64 (*.f64 B B) C)))))) (sqrt.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)))))
58.9b
(/.f64 (neg.f64 (sqrt.f64 (-.f64 (fma.f64 4 (/.f64 (*.f64 (*.f64 C C) (*.f64 F (*.f64 B B))) A) (*.f64 8 (*.f64 C (*.f64 F (*.f64 B B))))) (+.f64 (/.f64 (*.f64 F (pow.f64 B 4)) A) (*.f64 16 (*.f64 A (*.f64 (*.f64 C C) F))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
56.1b
(/.f64 (neg.f64 (*.f64 A (*.f64 (sqrt.f64 2) (sqrt.f64 (*.f64 -8 (*.f64 C F)))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
59.8b
(/.f64 (neg.f64 (-.f64 (fma.f64 (sqrt.f64 (*.f64 F (+.f64 C (sqrt.f64 (+.f64 (*.f64 C C) (*.f64 B B)))))) (*.f64 (sqrt.f64 2) B) (*.f64 1/2 (*.f64 (*.f64 A (*.f64 (sqrt.f64 2) B)) (sqrt.f64 (/.f64 F (+.f64 C (sqrt.f64 (+.f64 (*.f64 C C) (*.f64 B B))))))))) (fma.f64 2 (*.f64 (/.f64 (*.f64 A (*.f64 C (sqrt.f64 2))) B) (sqrt.f64 (/.f64 (*.f64 (+.f64 (*.f64 C C) (*.f64 B B)) F) (+.f64 C (sqrt.f64 (+.f64 (*.f64 C C) (*.f64 B B))))))) (fma.f64 1/2 (*.f64 (*.f64 A (*.f64 C (*.f64 (sqrt.f64 2) B))) (sqrt.f64 (/.f64 F (*.f64 (+.f64 (*.f64 C C) (*.f64 B B)) (+.f64 C (sqrt.f64 (+.f64 (*.f64 C C) (*.f64 B B)))))))) (*.f64 2 (*.f64 (/.f64 (*.f64 A (*.f64 (*.f64 C C) (sqrt.f64 2))) B) (sqrt.f64 (/.f64 F (+.f64 C (sqrt.f64 (+.f64 (*.f64 C C) (*.f64 B B)))))))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
59.8b
(-.f64 (*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 F (*.f64 (+.f64 (sqrt.f64 (+.f64 (*.f64 B B) (*.f64 C C))) C) (+.f64 (*.f64 B B) (*.f64 C C))))) (/.f64 (*.f64 A (*.f64 C (sqrt.f64 2))) B))) (fma.f64 2 (*.f64 (sqrt.f64 (/.f64 (*.f64 (+.f64 (*.f64 C C) (*.f64 B B)) F) (+.f64 (sqrt.f64 (+.f64 (*.f64 B B) (*.f64 C C))) C))) (/.f64 (*.f64 A (*.f64 C (sqrt.f64 2))) (pow.f64 B 3))) (fma.f64 2 (*.f64 (sqrt.f64 (/.f64 F (+.f64 (sqrt.f64 (+.f64 (*.f64 B B) (*.f64 C C))) C))) (/.f64 (*.f64 A (*.f64 (*.f64 C C) (sqrt.f64 2))) (pow.f64 B 3))) (fma.f64 1/2 (*.f64 (sqrt.f64 (/.f64 F (+.f64 (sqrt.f64 (+.f64 (*.f64 B B) (*.f64 C C))) C))) (/.f64 (*.f64 A (sqrt.f64 2)) B)) (*.f64 (sqrt.f64 (*.f64 (+.f64 (sqrt.f64 (+.f64 (*.f64 B B) (*.f64 C C))) C) F)) (/.f64 (sqrt.f64 2) B))))))
60.4b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (neg.f64 B)))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
49.5b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 (*.f64 (cbrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C))))))) (cbrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))))) (cbrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
61.0b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 -2 (*.f64 F (pow.f64 B 3))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
58.3b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 -16 (*.f64 A (*.f64 (pow.f64 C 2) F))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
58.8b
(neg.f64 (*.f64 (sqrt.f64 (*.f64 (+.f64 (sqrt.f64 (+.f64 (*.f64 B B) (*.f64 C C))) C) F)) (/.f64 (sqrt.f64 2) B)))
57.6b
(*.f64 -1 (/.f64 (*.f64 (sqrt.f64 (*.f64 A F)) (pow.f64 (sqrt.f64 2) 2)) (sqrt.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)))))
57.5b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 -16 (*.f64 (pow.f64 A 2) (*.f64 C F))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
57.2b
(*.f64 -1 (/.f64 (*.f64 (sqrt.f64 (*.f64 C F)) (pow.f64 (sqrt.f64 2) 2)) (sqrt.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)))))
55.3b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (-.f64 (*.f64 2 A) (*.f64 1/2 (/.f64 (pow.f64 B 2) C)))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
60.4b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 2 (*.f64 F (pow.f64 B 3))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
59.8b
(neg.f64 (*.f64 (sqrt.f64 2) (sqrt.f64 (*.f64 -1/4 (/.f64 (*.f64 F (+.f64 A (+.f64 C (sqrt.f64 (-.f64 (+.f64 (*.f64 A A) (*.f64 C C)) (*.f64 2 (*.f64 A C))))))) (*.f64 A C))))))
53.2b
(*.f64 -1 (/.f64 (sqrt.f64 (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))) (neg.f64 B)))
55.9b
(neg.f64 (*.f64 (sqrt.f64 2) (sqrt.f64 (*.f64 -1/2 (/.f64 F A)))))
55.0b
(neg.f64 (*.f64 (sqrt.f64 (*.f64 -1/2 (/.f64 F C))) (sqrt.f64 2)))
51.7b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 (*.f64 2 (*.f64 (-.f64 (pow.f64 B 2) (*.f64 (*.f64 4 A) C)) F)) (+.f64 (+.f64 A C) (sqrt.f64 (+.f64 (pow.f64 (-.f64 A C) 2) (pow.f64 B 2))))))) (-.f64 (pow.f64 B 2) (*.f64 (*.f64 4 A) C)))
Compiler

Compiled 53408 to 29101 computations (45.5% saved)

regimes4.7s (10.5%)

Accuracy

Total 22.9b remaining (57.5%)

Threshold costs 0b (0%)

Compiler

Compiled 50502 to 30397 computations (39.8% saved)

bsearch382.0ms (0.9%)

Steps
ItersRangePoint
8
0.0001855694547458208
0.14795290643157671
0.00018787339796933887
6
4.2216439191601243e-246
4.422670979632252e-245
1.9737339501045438e-245
4
-1.1228602956022147e-92
-6.228117315192861e-93
-8.208527862976466e-93
7
-1.6629266261350396e+125
-3.2213189260050886e+123
-5.66563505439078e+123
Compiler

Compiled 5 to 4 computations (20% saved)

simplify11.0ms (0%)

Algorithm
egg-herbie
Rules
28×*-commutative_binary64
20×+-commutative_binary64
16×sub-neg_binary64
14×neg-sub0_binary64
11×neg-mul-1_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
063208
1106208
2133208
3155208
4170208
5175208
6176208
7175208

end2.0ms (0%)

Compiler

Compiled 142 to 81 computations (43% saved)

sample6.4s (14.3%)

Algorithm
intervals
Results
1.0s5518×body128valid
760.0ms913×body1024valid
609.0ms632×body2048valid
602.0ms839×body1024nan
595.0ms2791×body128nan
554.0ms574×body2048nan
406.0ms595×body512nan
339.0ms597×body512valid
120.0ms319×body256nan
119.0ms339×body256valid
1.0msbody4096valid
Compiler

Compiled 1613 to 948 computations (41.2% saved)

Profiling

Loading profile data...