Details

Time bar (total: 58.9s)

analyze3.6s (6.1%)

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)

sample390.0ms (0.7%)

Algorithm
intervals
Results
60.0ms174×body128valid
51.0ms27×body2048valid
36.0ms105×body128nan
36.0ms27×body1024nan
28.0ms22×body1024valid
24.0ms15×body2048nan
21.0ms21×body512nan
14.0ms15×body512valid
11.0ms18×body256valid
7.0ms11×body256nan
Compiler

Compiled 93 to 69 computations (25.8% saved)

simplify87.0ms (0.1%)

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

prune12.0ms (0%)

Pruning

3 alts after pruning (3 fresh and 0 done)

PrunedKeptTotal
New022
Fresh011
Picked000
Done000
Total033
Error
49.8b
Counts
3 → 2
Alt Table
StatusErrorProgram
49.8b
(/.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)))
54.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)

localize36.0ms (0.1%)

Local error

Found 4 expressions with local error:

NewErrorProgram
2.8b
(*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C))))))
3.7b
(+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))
16.9b
(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)))))))
20.6b
(/.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)))

series28.2s (47.8%)

Counts
4 → 124
Calls

4 calls:

16.1s
(/.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)))
11.8s
(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)))))))
214.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))))))
55.0ms
(+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))

rewrite48.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:

11.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)))))))
7.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)))
5.0ms
(+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))

simplify426.0ms (0.7%)

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 → 361
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0244845159
1505245159

prune2.0s (3.4%)

Pruning

27 alts after pruning (27 fresh and 0 done)

PrunedKeptTotal
New33427361
Fresh101
Picked101
Done000
Total33627363
Error
25.3b
Counts
363 → 27
Alt Table
StatusErrorProgram
62.1b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 -2 (*.f64 F (pow.f64 B 3))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
53.5b
(/.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)))
55.6b
(/.f64 (neg.f64 (fma.f64 A (*.f64 (sqrt.f64 2) (sqrt.f64 (*.f64 -8 (*.f64 C F)))) (/.f64 (*.f64 F (*.f64 (sqrt.f64 2) (*.f64 B B))) (sqrt.f64 (*.f64 -8 (*.f64 C F)))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
58.6b
(neg.f64 (*.f64 (sqrt.f64 (*.f64 (+.f64 (sqrt.f64 (+.f64 (*.f64 B B) (*.f64 C C))) C) F)) (/.f64 (sqrt.f64 2) B)))
50.4b
(/.f64 (sqrt.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B))) (/.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (neg.f64 (sqrt.f64 (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))))))
60.5b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 2 (*.f64 F (pow.f64 B 3))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
59.4b
(/.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)))
55.9b
(/.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)))
61.7b
(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.6b
(/.f64 (neg.f64 (sqrt.f64 (-.f64 (*.f64 8 (*.f64 C (*.f64 F (pow.f64 B 2)))) (*.f64 16 (*.f64 A (*.f64 (pow.f64 C 2) F)))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
57.3b
(neg.f64 (*.f64 (sqrt.f64 2) (sqrt.f64 (*.f64 -1/2 (/.f64 F A)))))
49.1b
(*.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)))))
57.8b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 -16 (*.f64 (pow.f64 A 2) (*.f64 C F))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
54.6b
(/.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)))
57.3b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 F (-.f64 (fma.f64 2 (*.f64 C (*.f64 B B)) (*.f64 2 (+.f64 (*.f64 (sqrt.f64 (-.f64 (+.f64 (*.f64 A A) (+.f64 (*.f64 B B) (*.f64 C C))) (*.f64 2 (*.f64 A C)))) (*.f64 B B)) (*.f64 A (*.f64 B B))))) (fma.f64 8 (*.f64 (*.f64 A A) C) (*.f64 8 (+.f64 (*.f64 A (*.f64 C C)) (*.f64 (*.f64 A C) (sqrt.f64 (-.f64 (+.f64 (*.f64 A A) (+.f64 (*.f64 B B) (*.f64 C C))) (*.f64 2 (*.f64 A C)))))))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
53.6b
(neg.f64 (*.f64 (sqrt.f64 (*.f64 -1/2 (/.f64 F C))) (sqrt.f64 2)))
50.1b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (*.f64 (sqrt.f64 (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))) (sqrt.f64 (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
50.0b
(*.f64 (/.f64 (sqrt.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B))) (*.f64 (cbrt.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B))) (cbrt.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))))))) (cbrt.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)))))
49.9b
(*.f64 (sqrt.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 (sqrt.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))))
62.8b
(/.f64 (neg.f64 (sqrt.f64 (-.f64 (fma.f64 2 (*.f64 C (*.f64 F (*.f64 B B))) (fma.f64 2 (*.f64 A (*.f64 F (*.f64 B B))) (*.f64 10 (*.f64 A (*.f64 C (*.f64 F B)))))) (fma.f64 2 (*.f64 F (pow.f64 B 3)) (*.f64 (*.f64 F B) (+.f64 (*.f64 A A) (*.f64 C C))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
58.9b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (+.f64 A (+.f64 C B))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
57.7b
(/.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)))
61.2b
(/.f64 (neg.f64 (sqrt.f64 (-.f64 (fma.f64 2 (*.f64 C (*.f64 F (*.f64 B B))) (fma.f64 2 (*.f64 A (*.f64 F (*.f64 B B))) (fma.f64 2 (*.f64 F (pow.f64 B 3)) (*.f64 (*.f64 F B) (+.f64 (*.f64 A A) (*.f64 C C)))))) (*.f64 10 (*.f64 A (*.f64 C (*.f64 F B))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
55.3b
(/.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)))
50.3b
(*.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))))
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)))
50.2b
(/.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)))
Compiler

Compiled 61984 to 33938 computations (45.2% saved)

localize36.0ms (0.1%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.3b
(fma.f64 A (*.f64 C -4) (*.f64 B B))
3.7b
(+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))
10.8b
(sqrt.f64 (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C))))))
16.2b
(sqrt.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)))

series2.3s (3.9%)

Counts
3 → 76
Calls

3 calls:

2.2s
(sqrt.f64 (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C))))))
88.0ms
(sqrt.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)))
20.0ms
(fma.f64 A (*.f64 C -4) (*.f64 B B))

rewrite19.0ms (0%)

Algorithm
rewrite-expression-head
Rules
10×pow1_binary64
add-sqr-sqrt_binary64
associate-*r/_binary64
*-un-lft-identity_binary64
sqrt-prod_binary64
Counts
3 → 41
Calls

3 calls:

12.0ms
(sqrt.f64 (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C))))))
3.0ms
(sqrt.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)))
1.0ms
(fma.f64 A (*.f64 C -4) (*.f64 B B))

simplify204.0ms (0.3%)

Algorithm
egg-herbie
Rules
521×fma-def_binary64
457×associate-*l*_binary64
213×associate-/r*_binary64
195×*-commutative_binary64
163×associate-*r/_binary64
Counts
117 → 118
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
05256271
116425185
249625170
349815170

prune636.0ms (1.1%)

Pruning

32 alts after pruning (32 fresh and 0 done)

PrunedKeptTotal
New18911200
Fresh52126
Picked101
Done000
Total19532227
Error
18.6b
Counts
227 → 32
Alt Table
StatusErrorProgram
57.5b
(*.f64 -1 (/.f64 (*.f64 2 (sqrt.f64 (*.f64 A F))) (sqrt.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)))))
62.1b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 -2 (*.f64 F (pow.f64 B 3))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
53.5b
(/.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)))
55.6b
(/.f64 (neg.f64 (fma.f64 A (*.f64 (sqrt.f64 2) (sqrt.f64 (*.f64 -8 (*.f64 C F)))) (/.f64 (*.f64 F (*.f64 (sqrt.f64 2) (*.f64 B B))) (sqrt.f64 (*.f64 -8 (*.f64 C F)))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
58.5b
(*.f64 -1 (/.f64 (sqrt.f64 (*.f64 2 (*.f64 F (-.f64 (*.f64 2 C) (*.f64 1/2 (/.f64 (*.f64 B B) A)))))) (sqrt.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)))))
55.3b
(/.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)))
50.4b
(/.f64 (sqrt.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B))) (/.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (neg.f64 (sqrt.f64 (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))))))
60.5b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 2 (*.f64 F (pow.f64 B 3))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
53.5b
(*.f64 -1 (/.f64 (sqrt.f64 (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))) 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)))))
59.4b
(/.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)))
55.9b
(/.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)))
61.7b
(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))))))
49.6b
(*.f64 -1 (/.f64 (sqrt.f64 (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))) (*.f64 (*.f64 (cbrt.f64 (hypot.f64 (sqrt.f64 (*.f64 A (*.f64 C -4))) B)) (cbrt.f64 (hypot.f64 (sqrt.f64 (*.f64 A (*.f64 C -4))) B))) (cbrt.f64 (hypot.f64 (sqrt.f64 (*.f64 A (*.f64 C -4))) B)))))
53.3b
(*.f64 -1 (/.f64 (fma.f64 1/2 (*.f64 (sqrt.f64 (/.f64 F (+.f64 C (hypot.f64 B C)))) (*.f64 A (sqrt.f64 2))) (fma.f64 (sqrt.f64 (*.f64 (+.f64 C (hypot.f64 B C)) F)) (sqrt.f64 2) (*.f64 (*.f64 (sqrt.f64 (/.f64 F (*.f64 (fma.f64 B B (*.f64 C C)) (+.f64 C (hypot.f64 B C))))) (*.f64 A (*.f64 C (sqrt.f64 2)))) -1/2))) (sqrt.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)))))
57.3b
(neg.f64 (*.f64 (sqrt.f64 2) (sqrt.f64 (*.f64 -1/2 (/.f64 F A)))))
57.8b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 -16 (*.f64 (pow.f64 A 2) (*.f64 C F))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
58.7b
(*.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)))))
50.4b
(*.f64 -1 (/.f64 (sqrt.f64 (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))) (exp.f64 (log.f64 (hypot.f64 (sqrt.f64 (*.f64 A (*.f64 C -4))) B)))))
57.3b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 F (-.f64 (fma.f64 2 (*.f64 C (*.f64 B B)) (*.f64 2 (+.f64 (*.f64 (sqrt.f64 (-.f64 (+.f64 (*.f64 A A) (+.f64 (*.f64 B B) (*.f64 C C))) (*.f64 2 (*.f64 A C)))) (*.f64 B B)) (*.f64 A (*.f64 B B))))) (fma.f64 8 (*.f64 (*.f64 A A) C) (*.f64 8 (+.f64 (*.f64 A (*.f64 C C)) (*.f64 (*.f64 A C) (sqrt.f64 (-.f64 (+.f64 (*.f64 A A) (+.f64 (*.f64 B B) (*.f64 C C))) (*.f64 2 (*.f64 A C)))))))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
55.0b
(*.f64 -1 (/.f64 (sqrt.f64 (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))) (neg.f64 B)))
53.6b
(neg.f64 (*.f64 (sqrt.f64 (*.f64 -1/2 (/.f64 F C))) (sqrt.f64 2)))
50.1b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (*.f64 (sqrt.f64 (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))) (sqrt.f64 (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
53.0b
(*.f64 -1 (/.f64 (fma.f64 1/2 (*.f64 (*.f64 C (sqrt.f64 2)) (sqrt.f64 (/.f64 F (+.f64 A (hypot.f64 B A))))) (fma.f64 (sqrt.f64 2) (sqrt.f64 (*.f64 F (+.f64 A (hypot.f64 B A)))) (*.f64 (*.f64 (*.f64 A (*.f64 C (sqrt.f64 2))) (sqrt.f64 (/.f64 F (*.f64 (fma.f64 B B (*.f64 A A)) (+.f64 A (hypot.f64 B A)))))) -1/2))) (sqrt.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)))))
49.9b
(*.f64 (sqrt.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 (sqrt.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))))
62.8b
(/.f64 (neg.f64 (sqrt.f64 (-.f64 (fma.f64 2 (*.f64 C (*.f64 F (*.f64 B B))) (fma.f64 2 (*.f64 A (*.f64 F (*.f64 B B))) (*.f64 10 (*.f64 A (*.f64 C (*.f64 F B)))))) (fma.f64 2 (*.f64 F (pow.f64 B 3)) (*.f64 (*.f64 F B) (+.f64 (*.f64 A A) (*.f64 C C))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
58.9b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (+.f64 A (+.f64 C B))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
57.7b
(/.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)))
61.2b
(/.f64 (neg.f64 (sqrt.f64 (-.f64 (fma.f64 2 (*.f64 C (*.f64 F (*.f64 B B))) (fma.f64 2 (*.f64 A (*.f64 F (*.f64 B B))) (fma.f64 2 (*.f64 F (pow.f64 B 3)) (*.f64 (*.f64 F B) (+.f64 (*.f64 A A) (*.f64 C C)))))) (*.f64 10 (*.f64 A (*.f64 C (*.f64 F B))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
49.4b
(*.f64 -1 (/.f64 (sqrt.f64 (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))) (*.f64 (sqrt.f64 (hypot.f64 (sqrt.f64 (*.f64 A (*.f64 C -4))) B)) (sqrt.f64 (hypot.f64 (sqrt.f64 (*.f64 A (*.f64 C -4))) B)))))
50.3b
(*.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))))
50.2b
(/.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)))
Compiler

Compiled 15167 to 8738 computations (42.4% saved)

localize39.0ms (0.1%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.2b
(*.f64 (sqrt.f64 (hypot.f64 (sqrt.f64 (*.f64 A (*.f64 C -4))) B)) (sqrt.f64 (hypot.f64 (sqrt.f64 (*.f64 A (*.f64 C -4))) B)))
3.7b
(+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))
10.8b
(sqrt.f64 (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C))))))
11.0b
(sqrt.f64 (*.f64 A (*.f64 C -4)))

series192.0ms (0.3%)

Counts
2 → 14
Calls

2 calls:

156.0ms
(*.f64 (sqrt.f64 (hypot.f64 (sqrt.f64 (*.f64 A (*.f64 C -4))) B)) (sqrt.f64 (hypot.f64 (sqrt.f64 (*.f64 A (*.f64 C -4))) B)))
36.0ms
(sqrt.f64 (*.f64 A (*.f64 C -4)))

rewrite13.0ms (0%)

Algorithm
rewrite-expression-head
Rules
26×add-sqr-sqrt_binary64
23×pow1_binary64
19×sqrt-prod_binary64
11×sqrt-pow1_binary64
10×*-un-lft-identity_binary64
Counts
2 → 67
Calls

2 calls:

5.0ms
(*.f64 (sqrt.f64 (hypot.f64 (sqrt.f64 (*.f64 A (*.f64 C -4))) B)) (sqrt.f64 (hypot.f64 (sqrt.f64 (*.f64 A (*.f64 C -4))) B)))
3.0ms
(sqrt.f64 (*.f64 A (*.f64 C -4)))

simplify87.0ms (0.1%)

Algorithm
egg-herbie
Rules
767×fma-def_binary64
542×times-frac_binary64
416×fma-neg_binary64
389×associate-*r*_binary64
366×associate-*l*_binary64
Counts
81 → 105
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
01101605
12311417
26771333
338471293
449871293
549691293

prune423.0ms (0.7%)

Pruning

37 alts after pruning (37 fresh and 0 done)

PrunedKeptTotal
New2567263
Fresh13031
Picked101
Done000
Total25837295
Error
18.5b
Counts
295 → 37
Alt Table
StatusErrorProgram
57.5b
(*.f64 -1 (/.f64 (*.f64 2 (sqrt.f64 (*.f64 A F))) (sqrt.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)))))
62.1b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 -2 (*.f64 F (pow.f64 B 3))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
53.5b
(/.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)))
55.6b
(/.f64 (neg.f64 (fma.f64 A (*.f64 (sqrt.f64 2) (sqrt.f64 (*.f64 -8 (*.f64 C F)))) (/.f64 (*.f64 F (*.f64 (sqrt.f64 2) (*.f64 B B))) (sqrt.f64 (*.f64 -8 (*.f64 C F)))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
61.2b
(/.f64 (neg.f64 (sqrt.f64 (-.f64 (fma.f64 2 (*.f64 C (*.f64 F (*.f64 B B))) (fma.f64 2 (*.f64 A (*.f64 F (*.f64 B B))) (fma.f64 2 (*.f64 F (pow.f64 B 3)) (*.f64 (*.f64 F B) (+.f64 (*.f64 A A) (*.f64 C C)))))) (*.f64 10 (*.f64 A (*.f64 C (*.f64 F B))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
61.6b
(*.f64 -1 (/.f64 (*.f64 (sqrt.f64 2) (sqrt.f64 (*.f64 F (+.f64 A (+.f64 C (sqrt.f64 (fma.f64 A A (*.f64 C (-.f64 C (*.f64 2 A)))))))))) (*.f64 (sqrt.f64 (hypot.f64 (sqrt.f64 (*.f64 A (*.f64 C -4))) B)) (sqrt.f64 (hypot.f64 (sqrt.f64 (*.f64 A (*.f64 C -4))) B)))))
58.5b
(*.f64 -1 (/.f64 (sqrt.f64 (*.f64 2 (*.f64 F (-.f64 (*.f64 2 C) (*.f64 1/2 (/.f64 (*.f64 B B) A)))))) (sqrt.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)))))
55.3b
(/.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)))
63.5b
(*.f64 -1 (/.f64 (sqrt.f64 (*.f64 2 (*.f64 F (log.f64 (exp.f64 (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))))) (*.f64 (sqrt.f64 (hypot.f64 (sqrt.f64 (*.f64 A (*.f64 C -4))) B)) (sqrt.f64 (hypot.f64 (sqrt.f64 (*.f64 A (*.f64 C -4))) B)))))
50.4b
(/.f64 (sqrt.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B))) (/.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (neg.f64 (sqrt.f64 (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))))))
60.5b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 2 (*.f64 F (pow.f64 B 3))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
53.5b
(*.f64 -1 (/.f64 (sqrt.f64 (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))) 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)))))
59.4b
(/.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)))
55.9b
(/.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)))
61.7b
(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.3b
(*.f64 -1 (/.f64 (fma.f64 1/2 (*.f64 (sqrt.f64 (/.f64 F (+.f64 C (hypot.f64 B C)))) (*.f64 A (sqrt.f64 2))) (fma.f64 (sqrt.f64 (*.f64 (+.f64 C (hypot.f64 B C)) F)) (sqrt.f64 2) (*.f64 (*.f64 (sqrt.f64 (/.f64 F (*.f64 (fma.f64 B B (*.f64 C C)) (+.f64 C (hypot.f64 B C))))) (*.f64 A (*.f64 C (sqrt.f64 2)))) -1/2))) (sqrt.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)))))
57.3b
(neg.f64 (*.f64 (sqrt.f64 2) (sqrt.f64 (*.f64 -1/2 (/.f64 F A)))))
57.8b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 -16 (*.f64 (pow.f64 A 2) (*.f64 C F))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
58.7b
(*.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)))))
50.4b
(*.f64 -1 (/.f64 (sqrt.f64 (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))) (exp.f64 (log.f64 (hypot.f64 (sqrt.f64 (*.f64 A (*.f64 C -4))) B)))))
50.3b
(*.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))))
59.5b
(*.f64 -1 (/.f64 (*.f64 (sqrt.f64 (*.f64 C F)) (pow.f64 (sqrt.f64 2) 2)) (*.f64 (sqrt.f64 (hypot.f64 (sqrt.f64 (*.f64 A (*.f64 C -4))) B)) (sqrt.f64 (hypot.f64 (sqrt.f64 (*.f64 A (*.f64 C -4))) B)))))
57.3b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 F (-.f64 (fma.f64 2 (*.f64 C (*.f64 B B)) (*.f64 2 (+.f64 (*.f64 (sqrt.f64 (-.f64 (+.f64 (*.f64 A A) (+.f64 (*.f64 B B) (*.f64 C C))) (*.f64 2 (*.f64 A C)))) (*.f64 B B)) (*.f64 A (*.f64 B B))))) (fma.f64 8 (*.f64 (*.f64 A A) C) (*.f64 8 (+.f64 (*.f64 A (*.f64 C C)) (*.f64 (*.f64 A C) (sqrt.f64 (-.f64 (+.f64 (*.f64 A A) (+.f64 (*.f64 B B) (*.f64 C C))) (*.f64 2 (*.f64 A C)))))))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
55.0b
(*.f64 -1 (/.f64 (sqrt.f64 (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))) (neg.f64 B)))
53.6b
(neg.f64 (*.f64 (sqrt.f64 (*.f64 -1/2 (/.f64 F C))) (sqrt.f64 2)))
49.5b
(*.f64 -1 (/.f64 (sqrt.f64 (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))) (*.f64 (*.f64 (sqrt.f64 (hypot.f64 (sqrt.f64 (*.f64 -4 (*.f64 A C))) B)) (cbrt.f64 (hypot.f64 (sqrt.f64 (*.f64 -4 (*.f64 A C))) B))) (sqrt.f64 (cbrt.f64 (hypot.f64 (sqrt.f64 (*.f64 A (*.f64 C -4))) B))))))
50.1b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (*.f64 (sqrt.f64 (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))) (sqrt.f64 (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
53.0b
(*.f64 -1 (/.f64 (fma.f64 1/2 (*.f64 (*.f64 C (sqrt.f64 2)) (sqrt.f64 (/.f64 F (+.f64 A (hypot.f64 B A))))) (fma.f64 (sqrt.f64 2) (sqrt.f64 (*.f64 F (+.f64 A (hypot.f64 B A)))) (*.f64 (*.f64 (*.f64 A (*.f64 C (sqrt.f64 2))) (sqrt.f64 (/.f64 F (*.f64 (fma.f64 B B (*.f64 A A)) (+.f64 A (hypot.f64 B A)))))) -1/2))) (sqrt.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)))))
49.9b
(*.f64 (sqrt.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 (sqrt.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))))
62.8b
(/.f64 (neg.f64 (sqrt.f64 (-.f64 (fma.f64 2 (*.f64 C (*.f64 F (*.f64 B B))) (fma.f64 2 (*.f64 A (*.f64 F (*.f64 B B))) (*.f64 10 (*.f64 A (*.f64 C (*.f64 F B)))))) (fma.f64 2 (*.f64 F (pow.f64 B 3)) (*.f64 (*.f64 F B) (+.f64 (*.f64 A A) (*.f64 C C))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
58.9b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (+.f64 A (+.f64 C B))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
57.7b
(/.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)))
49.8b
(*.f64 -1 (/.f64 (*.f64 (sqrt.f64 2) (sqrt.f64 (*.f64 F (+.f64 A (hypot.f64 B A))))) (*.f64 (sqrt.f64 (hypot.f64 (sqrt.f64 (*.f64 A (*.f64 C -4))) B)) (sqrt.f64 (hypot.f64 (sqrt.f64 (*.f64 A (*.f64 C -4))) B)))))
50.2b
(/.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)))
59.6b
(*.f64 -1 (/.f64 (sqrt.f64 (*.f64 2 (*.f64 F (neg.f64 B)))) (*.f64 (sqrt.f64 (hypot.f64 (sqrt.f64 (*.f64 A (*.f64 C -4))) B)) (sqrt.f64 (hypot.f64 (sqrt.f64 (*.f64 A (*.f64 C -4))) B)))))
49.4b
(*.f64 -1 (/.f64 (sqrt.f64 (*.f64 2 (*.f64 F (*.f64 (sqrt.f64 (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))) (sqrt.f64 (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))))) (*.f64 (sqrt.f64 (hypot.f64 (sqrt.f64 (*.f64 A (*.f64 C -4))) B)) (sqrt.f64 (hypot.f64 (sqrt.f64 (*.f64 A (*.f64 C -4))) B)))))
Compiler

Compiled 19966 to 12070 computations (39.5% saved)

localize21.0ms (0%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.4b
(*.f64 (sqrt.f64 (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))) (sqrt.f64 (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))
3.7b
(+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))
10.8b
(sqrt.f64 (*.f64 2 (*.f64 F (*.f64 (sqrt.f64 (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))) (sqrt.f64 (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C))))))))
11.0b
(sqrt.f64 (*.f64 A (*.f64 C -4)))

series1.1s (1.9%)

Counts
2 → 56
Calls

2 calls:

1.1s
(sqrt.f64 (*.f64 2 (*.f64 F (*.f64 (sqrt.f64 (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))) (sqrt.f64 (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C))))))))
58.0ms
(*.f64 (sqrt.f64 (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))) (sqrt.f64 (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))

rewrite46.0ms (0.1%)

Algorithm
rewrite-expression-head
Rules
54×*-un-lft-identity_binary64
39×sqrt-prod_binary64
32×sqrt-div_binary64
27×pow1_binary64
26×add-sqr-sqrt_binary64
Counts
2 → 96
Calls

2 calls:

15.0ms
(sqrt.f64 (*.f64 2 (*.f64 F (*.f64 (sqrt.f64 (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))) (sqrt.f64 (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C))))))))
14.0ms
(*.f64 (sqrt.f64 (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))) (sqrt.f64 (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))

simplify139.0ms (0.2%)

Algorithm
egg-herbie
Rules
685×fma-def_binary64
267×associate-/r*_binary64
254×*-commutative_binary64
208×associate-/l*_binary64
183×times-frac_binary64
Counts
152 → 214
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
07169010
121937617
249757617

prune596.0ms (1%)

Pruning

40 alts after pruning (39 fresh and 1 done)

PrunedKeptTotal
New4144418
Fresh13536
Picked011
Done000
Total41540455
Error
18.5b
Counts
455 → 40
Alt Table
StatusErrorProgram
57.5b
(*.f64 -1 (/.f64 (*.f64 2 (sqrt.f64 (*.f64 A F))) (sqrt.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)))))
62.1b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 -2 (*.f64 F (pow.f64 B 3))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
53.5b
(/.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)))
55.6b
(/.f64 (neg.f64 (fma.f64 A (*.f64 (sqrt.f64 2) (sqrt.f64 (*.f64 -8 (*.f64 C F)))) (/.f64 (*.f64 F (*.f64 (sqrt.f64 2) (*.f64 B B))) (sqrt.f64 (*.f64 -8 (*.f64 C F)))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
61.2b
(/.f64 (neg.f64 (sqrt.f64 (-.f64 (fma.f64 2 (*.f64 C (*.f64 F (*.f64 B B))) (fma.f64 2 (*.f64 A (*.f64 F (*.f64 B B))) (fma.f64 2 (*.f64 F (pow.f64 B 3)) (*.f64 (*.f64 F B) (+.f64 (*.f64 A A) (*.f64 C C)))))) (*.f64 10 (*.f64 A (*.f64 C (*.f64 F B))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
61.6b
(*.f64 -1 (/.f64 (*.f64 (sqrt.f64 2) (sqrt.f64 (*.f64 F (+.f64 A (+.f64 C (sqrt.f64 (fma.f64 A A (*.f64 C (-.f64 C (*.f64 2 A)))))))))) (*.f64 (sqrt.f64 (hypot.f64 (sqrt.f64 (*.f64 A (*.f64 C -4))) B)) (sqrt.f64 (hypot.f64 (sqrt.f64 (*.f64 A (*.f64 C -4))) B)))))
58.5b
(*.f64 -1 (/.f64 (sqrt.f64 (*.f64 2 (*.f64 F (-.f64 (*.f64 2 C) (*.f64 1/2 (/.f64 (*.f64 B B) A)))))) (sqrt.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)))))
55.3b
(/.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)))
63.5b
(*.f64 -1 (/.f64 (sqrt.f64 (*.f64 2 (*.f64 F (log.f64 (exp.f64 (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))))) (*.f64 (sqrt.f64 (hypot.f64 (sqrt.f64 (*.f64 A (*.f64 C -4))) B)) (sqrt.f64 (hypot.f64 (sqrt.f64 (*.f64 A (*.f64 C -4))) B)))))
60.6b
(*.f64 -1 (/.f64 (sqrt.f64 (*.f64 2 (*.f64 F (*.f64 (sqrt.f64 (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))) (sqrt.f64 (*.f64 2 A)))))) (*.f64 (sqrt.f64 (hypot.f64 (sqrt.f64 (*.f64 A (*.f64 C -4))) B)) (sqrt.f64 (hypot.f64 (sqrt.f64 (*.f64 A (*.f64 C -4))) B)))))
50.4b
(/.f64 (sqrt.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B))) (/.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (neg.f64 (sqrt.f64 (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))))))
60.5b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 2 (*.f64 F (pow.f64 B 3))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
53.5b
(*.f64 -1 (/.f64 (sqrt.f64 (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))) 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)))))
59.4b
(/.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)))
55.9b
(/.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)))
61.7b
(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.3b
(*.f64 -1 (/.f64 (fma.f64 1/2 (*.f64 (sqrt.f64 (/.f64 F (+.f64 C (hypot.f64 B C)))) (*.f64 A (sqrt.f64 2))) (fma.f64 (sqrt.f64 (*.f64 (+.f64 C (hypot.f64 B C)) F)) (sqrt.f64 2) (*.f64 (*.f64 (sqrt.f64 (/.f64 F (*.f64 (fma.f64 B B (*.f64 C C)) (+.f64 C (hypot.f64 B C))))) (*.f64 A (*.f64 C (sqrt.f64 2)))) -1/2))) (sqrt.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)))))
57.3b
(neg.f64 (*.f64 (sqrt.f64 2) (sqrt.f64 (*.f64 -1/2 (/.f64 F A)))))
57.8b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 -16 (*.f64 (pow.f64 A 2) (*.f64 C F))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
58.7b
(*.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)))))
50.4b
(*.f64 -1 (/.f64 (sqrt.f64 (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))) (exp.f64 (log.f64 (hypot.f64 (sqrt.f64 (*.f64 A (*.f64 C -4))) B)))))
50.3b
(*.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))))
59.5b
(*.f64 -1 (/.f64 (*.f64 (sqrt.f64 (*.f64 C F)) (pow.f64 (sqrt.f64 2) 2)) (*.f64 (sqrt.f64 (hypot.f64 (sqrt.f64 (*.f64 A (*.f64 C -4))) B)) (sqrt.f64 (hypot.f64 (sqrt.f64 (*.f64 A (*.f64 C -4))) B)))))
49.8b
(*.f64 -1 (/.f64 (sqrt.f64 (*.f64 2 (*.f64 F (+.f64 A (hypot.f64 B A))))) (*.f64 (sqrt.f64 (hypot.f64 (sqrt.f64 (*.f64 A (*.f64 C -4))) B)) (sqrt.f64 (hypot.f64 (sqrt.f64 (*.f64 A (*.f64 C -4))) B)))))
57.3b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 F (-.f64 (fma.f64 2 (*.f64 C (*.f64 B B)) (*.f64 2 (+.f64 (*.f64 (sqrt.f64 (-.f64 (+.f64 (*.f64 A A) (+.f64 (*.f64 B B) (*.f64 C C))) (*.f64 2 (*.f64 A C)))) (*.f64 B B)) (*.f64 A (*.f64 B B))))) (fma.f64 8 (*.f64 (*.f64 A A) C) (*.f64 8 (+.f64 (*.f64 A (*.f64 C C)) (*.f64 (*.f64 A C) (sqrt.f64 (-.f64 (+.f64 (*.f64 A A) (+.f64 (*.f64 B B) (*.f64 C C))) (*.f64 2 (*.f64 A C)))))))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
55.0b
(*.f64 -1 (/.f64 (sqrt.f64 (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))) (neg.f64 B)))
53.6b
(neg.f64 (*.f64 (sqrt.f64 (*.f64 -1/2 (/.f64 F C))) (sqrt.f64 2)))
49.5b
(*.f64 -1 (/.f64 (sqrt.f64 (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))) (*.f64 (*.f64 (sqrt.f64 (hypot.f64 (sqrt.f64 (*.f64 -4 (*.f64 A C))) B)) (cbrt.f64 (hypot.f64 (sqrt.f64 (*.f64 -4 (*.f64 A C))) B))) (sqrt.f64 (cbrt.f64 (hypot.f64 (sqrt.f64 (*.f64 A (*.f64 C -4))) B))))))
50.1b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (*.f64 (sqrt.f64 (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))) (sqrt.f64 (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
53.0b
(*.f64 -1 (/.f64 (fma.f64 1/2 (*.f64 (*.f64 C (sqrt.f64 2)) (sqrt.f64 (/.f64 F (+.f64 A (hypot.f64 B A))))) (fma.f64 (sqrt.f64 2) (sqrt.f64 (*.f64 F (+.f64 A (hypot.f64 B A)))) (*.f64 (*.f64 (*.f64 A (*.f64 C (sqrt.f64 2))) (sqrt.f64 (/.f64 F (*.f64 (fma.f64 B B (*.f64 A A)) (+.f64 A (hypot.f64 B A)))))) -1/2))) (sqrt.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)))))
49.9b
(*.f64 (sqrt.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 (sqrt.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))))
62.8b
(/.f64 (neg.f64 (sqrt.f64 (-.f64 (fma.f64 2 (*.f64 C (*.f64 F (*.f64 B B))) (fma.f64 2 (*.f64 A (*.f64 F (*.f64 B B))) (*.f64 10 (*.f64 A (*.f64 C (*.f64 F B)))))) (fma.f64 2 (*.f64 F (pow.f64 B 3)) (*.f64 (*.f64 F B) (+.f64 (*.f64 A A) (*.f64 C C))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
58.9b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (+.f64 A (+.f64 C B))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
57.7b
(/.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)))
49.8b
(*.f64 -1 (/.f64 (*.f64 (sqrt.f64 2) (sqrt.f64 (*.f64 F (+.f64 A (hypot.f64 B A))))) (*.f64 (sqrt.f64 (hypot.f64 (sqrt.f64 (*.f64 A (*.f64 C -4))) B)) (sqrt.f64 (hypot.f64 (sqrt.f64 (*.f64 A (*.f64 C -4))) B)))))
61.4b
(*.f64 -1 (/.f64 (sqrt.f64 (*.f64 2 (*.f64 F (*.f64 (sqrt.f64 (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))) (sqrt.f64 (-.f64 (*.f64 2 A) (*.f64 1/2 (/.f64 (*.f64 B B) C)))))))) (*.f64 (sqrt.f64 (hypot.f64 (sqrt.f64 (*.f64 A (*.f64 C -4))) B)) (sqrt.f64 (hypot.f64 (sqrt.f64 (*.f64 A (*.f64 C -4))) B)))))
50.2b
(/.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 -1 (/.f64 (sqrt.f64 (*.f64 2 (*.f64 F (*.f64 (sqrt.f64 (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))) (sqrt.f64 (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))))) (*.f64 (sqrt.f64 (hypot.f64 (sqrt.f64 (*.f64 A (*.f64 C -4))) B)) (sqrt.f64 (hypot.f64 (sqrt.f64 (*.f64 A (*.f64 C -4))) B)))))
61.1b
(*.f64 -1 (/.f64 (sqrt.f64 (*.f64 2 (*.f64 F (*.f64 (sqrt.f64 (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))) (sqrt.f64 (*.f64 2 C)))))) (*.f64 (sqrt.f64 (hypot.f64 (sqrt.f64 (*.f64 A (*.f64 C -4))) B)) (sqrt.f64 (hypot.f64 (sqrt.f64 (*.f64 A (*.f64 C -4))) B)))))
Compiler

Compiled 32544 to 17504 computations (46.2% saved)

regimes6.4s (10.9%)

Accuracy

Total 27.5b remaining (63.5%)

Threshold costs 0b (0%)

Counts
187 → 7
Compiler

Compiled 53315 to 34679 computations (35% saved)

bsearch1.1s (1.9%)

Steps
ItersRangePoint
9
2.597106289018953e+189
8.766484306473704e+194
3.5282074295653997e+190
8
3.1601975149615427e+28
1.4272029008784346e+33
1.3878956288245037e+33
3
1.8637060949698904e-123
2.3057674365469418e-123
2.278138602698376e-123
9
-2.0182110308566735e-116
-5.614947028232111e-123
-1.9912769568690773e-116
9
-0.0009628676562707594
-1.1422993417741845e-8
-3.3733636712735783e-6
7
-2.5560799092813632e+106
-2.920073860167841e+104
-3.277008247238346e+104
Compiler

Compiled 5 to 4 computations (20% saved)

simplify24.0ms (0%)

Algorithm
egg-herbie
Rules
45×*-commutative_binary64
30×+-commutative_binary64
25×sub-neg_binary64
23×neg-sub0_binary64
21×neg-mul-1_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
095306
1160306
2210306
3252306
4276306
5284306
6286306
7285306

end6.0ms (0%)

Compiler

Compiled 205 to 132 computations (35.6% saved)

sample10.7s (18.2%)

Algorithm
intervals
Results
1.9s5544×body128valid
1.2s862×body1024nan
1.1s653×body2048valid
1.1s821×body1024valid
1.1s622×body2048nan
950.0ms2904×body128nan
629.0ms634×body512valid
584.0ms591×body512nan
240.0ms359×body256nan
235.0ms346×body256valid
10.0msbody4096valid
Compiler

Compiled 1840 to 1176 computations (36.1% saved)

Profiling

Loading profile data...