Details

Time bar (total: 30.7s)

analyze3.7s (11.9%)

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)

sample7.4s (24%)

Results
1.8s5724×body128valid
982.0ms825×body1024invalid
938.0ms713×body2048valid
857.0ms880×body1024valid
766.0ms2997×body128invalid
719.0ms587×body2048invalid
471.0ms601×body512valid
428.0ms576×body512invalid
173.0ms336×body256valid
169.0ms355×body256invalid
6.0msbody4096valid
Compiler

Compiled 134 to 98 computations (26.9% saved)

simplify75.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
45.5b
Counts
3 → 2
Alt Table
StatusErrorProgram
49.6b
(/.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)))
46.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)))
Compiler

Compiled 239 to 156 computations (34.7% saved)

localize19.0ms (0.1%)

Local error

Found 4 expressions with local error:

NewErrorProgram
1.6b
(+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))
4.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))))))
13.5b
(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)))))))
22.3b
(/.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)))

series8.8s (28.7%)

Counts
4 → 124
Calls

4 calls:

4.7s
(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)))))))
3.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)))
169.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))))))
42.0ms
(+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))

rewrite51.0ms (0.2%)

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:

10.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))))))
10.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 (+.f64 A C) (hypot.f64 B (-.f64 A C)))
6.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)))

simplify424.0ms (1.4%)

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

prune1.1s (3.7%)

Pruning

23 alts after pruning (23 fresh and 0 done)

PrunedKeptTotal
New33823361
Fresh101
Picked101
Done000
Total34023363
Error
24.4b
Counts
363 → 23
Alt Table
StatusErrorProgram
54.8b
(/.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.0b
(neg.f64 (*.f64 (sqrt.f64 (*.f64 (+.f64 (sqrt.f64 (+.f64 (*.f64 B B) (*.f64 C C))) C) F)) (/.f64 (sqrt.f64 2) B)))
59.0b
(/.f64 (neg.f64 (*.f64 (sqrt.f64 (*.f64 F (+.f64 C (sqrt.f64 (+.f64 (pow.f64 C 2) (pow.f64 B 2)))))) (*.f64 (sqrt.f64 2) B))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
54.5b
(/.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.5b
(neg.f64 (*.f64 (sqrt.f64 2) (sqrt.f64 (*.f64 -1/2 (/.f64 F A)))))
51.1b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (-.f64 (+.f64 A (+.f64 C (sqrt.f64 (+.f64 (pow.f64 C 2) (pow.f64 B 2))))) (*.f64 (*.f64 A C) (sqrt.f64 (/.f64 1 (+.f64 (pow.f64 C 2) (pow.f64 B 2))))))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
46.0b
(/.f64 -1 (/.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (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)))))))))
58.6b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 -16 (*.f64 (pow.f64 A 2) (*.f64 C F))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
46.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)))))))) (/.f64 1 (fma.f64 A (*.f64 C -4) (*.f64 B B))))
50.8b
(/.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.8b
(neg.f64 (*.f64 (sqrt.f64 (*.f64 -1/2 (/.f64 F C))) (sqrt.f64 2)))
59.8b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F B))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
60.5b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 2 (*.f64 F (pow.f64 B 3))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
44.8b
(*.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)))))
59.5b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (-.f64 (fma.f64 2 A (*.f64 1/8 (/.f64 (pow.f64 B 4) (pow.f64 C 3)))) (fma.f64 1/2 (/.f64 (*.f64 B B) C) (*.f64 1/2 (+.f64 (/.f64 (*.f64 (*.f64 A A) (*.f64 B B)) (pow.f64 C 3)) (/.f64 (*.f64 A (*.f64 B B)) (*.f64 C C))))))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
57.0b
(/.f64 (neg.f64 (sqrt.f64 (-.f64 (fma.f64 (sqrt.f64 (/.f64 1 (-.f64 (+.f64 (*.f64 A A) (*.f64 C C)) (*.f64 2 (*.f64 A C))))) (*.f64 F (pow.f64 B 4)) (fma.f64 2 (*.f64 C (*.f64 F (*.f64 B B))) (fma.f64 (*.f64 A (*.f64 C (*.f64 F (pow.f64 B 4)))) (sqrt.f64 (/.f64 1 (pow.f64 (-.f64 (+.f64 (*.f64 A A) (*.f64 C C)) (*.f64 2 (*.f64 A C))) 3))) (*.f64 2 (+.f64 (*.f64 (sqrt.f64 (-.f64 (+.f64 (*.f64 A A) (*.f64 C C)) (*.f64 2 (*.f64 A C)))) (*.f64 F (*.f64 B B))) (*.f64 A (*.f64 F (*.f64 B B)))))))) (fma.f64 8 (*.f64 A (*.f64 (*.f64 C C) F)) (fma.f64 4 (*.f64 (*.f64 A (*.f64 C (*.f64 F (*.f64 B B)))) (sqrt.f64 (/.f64 1 (-.f64 (+.f64 (*.f64 A A) (*.f64 C C)) (*.f64 2 (*.f64 A C)))))) (fma.f64 1/4 (*.f64 (sqrt.f64 (/.f64 1 (pow.f64 (-.f64 (+.f64 (*.f64 A A) (*.f64 C C)) (*.f64 2 (*.f64 A C))) 3))) (*.f64 F (pow.f64 B 6))) (fma.f64 1/2 (*.f64 (*.f64 A (*.f64 C (*.f64 F (pow.f64 B 6)))) (sqrt.f64 (/.f64 1 (pow.f64 (-.f64 (+.f64 (*.f64 A A) (*.f64 C C)) (*.f64 2 (*.f64 A C))) 5)))) (*.f64 8 (+.f64 (*.f64 (*.f64 A A) (*.f64 C F)) (*.f64 (*.f64 A (*.f64 C F)) (sqrt.f64 (-.f64 (+.f64 (*.f64 A A) (*.f64 C C)) (*.f64 2 (*.f64 A C)))))))))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
58.0b
(/.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.8b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (-.f64 (*.f64 2 C) (*.f64 1/2 (/.f64 (pow.f64 B 2) A)))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
45.4b
(/.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)))
58.6b
(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))))))
57.2b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 -16 (*.f64 A (*.f64 (pow.f64 C 2) F))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
57.1b
(/.f64 (neg.f64 (fma.f64 (sqrt.f64 (*.f64 -8 (*.f64 A F))) (*.f64 C (sqrt.f64 2)) (/.f64 (*.f64 F (*.f64 (sqrt.f64 2) (*.f64 B B))) (sqrt.f64 (*.f64 -8 (*.f64 A F)))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
61.2b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 -2 (*.f64 F (pow.f64 B 3))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
Compiler

Compiled 61936 to 33910 computations (45.2% saved)

localize32.0ms (0.1%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.2b
(fma.f64 A (*.f64 C -4) (*.f64 B B))
1.6b
(+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))
9.5b
(sqrt.f64 (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C))))))
18.7b
(sqrt.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)))

series710.0ms (2.3%)

Counts
3 → 76
Calls

3 calls:

665.0ms
(sqrt.f64 (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C))))))
33.0ms
(sqrt.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)))
11.0ms
(fma.f64 A (*.f64 C -4) (*.f64 B B))

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

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)))
0.0ms
(fma.f64 A (*.f64 C -4) (*.f64 B B))

simplify124.0ms (0.4%)

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

prune340.0ms (1.1%)

Pruning

32 alts after pruning (32 fresh and 0 done)

PrunedKeptTotal
New18713200
Fresh31922
Picked101
Done000
Total19132223
Error
16.3b
Counts
223 → 32
Alt Table
StatusErrorProgram
54.8b
(/.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.0b
(neg.f64 (*.f64 (sqrt.f64 (*.f64 (+.f64 (sqrt.f64 (+.f64 (*.f64 B B) (*.f64 C C))) C) F)) (/.f64 (sqrt.f64 2) B)))
45.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.6b
(*.f64 -1 (/.f64 (*.f64 (sqrt.f64 (*.f64 (+.f64 C (hypot.f64 B C)) F)) (sqrt.f64 2)) (sqrt.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)))))
55.8b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (-.f64 (*.f64 2 C) (*.f64 1/2 (/.f64 (pow.f64 B 2) A)))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
55.9b
(*.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)))))
59.0b
(/.f64 (neg.f64 (*.f64 (sqrt.f64 (*.f64 F (+.f64 C (sqrt.f64 (+.f64 (pow.f64 C 2) (pow.f64 B 2)))))) (*.f64 (sqrt.f64 2) B))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
58.6b
(*.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)))))
54.5b
(/.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)))
58.6b
(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))))))
54.0b
(*.f64 -1 (/.f64 (sqrt.f64 (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))) (neg.f64 B)))
56.5b
(neg.f64 (*.f64 (sqrt.f64 2) (sqrt.f64 (*.f64 -1/2 (/.f64 F A)))))
52.1b
(*.f64 -1 (/.f64 (sqrt.f64 (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))) B))
51.1b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (-.f64 (+.f64 A (+.f64 C (sqrt.f64 (+.f64 (pow.f64 C 2) (pow.f64 B 2))))) (*.f64 (*.f64 A C) (sqrt.f64 (/.f64 1 (+.f64 (pow.f64 C 2) (pow.f64 B 2))))))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
58.0b
(*.f64 -1 (/.f64 (*.f64 2 (sqrt.f64 (*.f64 C F))) (sqrt.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)))))
46.0b
(/.f64 -1 (/.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (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)))))))))
58.6b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 -16 (*.f64 (pow.f64 A 2) (*.f64 C F))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
46.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)))))))) (/.f64 1 (fma.f64 A (*.f64 C -4) (*.f64 B B))))
50.8b
(/.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)))
60.4b
(*.f64 -1 (/.f64 (sqrt.f64 (*.f64 2 (*.f64 F (-.f64 (fma.f64 2 A (*.f64 1/8 (/.f64 (pow.f64 B 4) (pow.f64 C 3)))) (fma.f64 1/2 (/.f64 (*.f64 B B) C) (*.f64 1/2 (+.f64 (/.f64 (*.f64 (*.f64 A A) (*.f64 B B)) (pow.f64 C 3)) (/.f64 (*.f64 A (*.f64 B B)) (*.f64 C C))))))))) (sqrt.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)))))
53.8b
(neg.f64 (*.f64 (sqrt.f64 (*.f64 -1/2 (/.f64 F C))) (sqrt.f64 2)))
45.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)))))
59.8b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F B))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
50.3b
(*.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)))))
59.5b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (-.f64 (fma.f64 2 A (*.f64 1/8 (/.f64 (pow.f64 B 4) (pow.f64 C 3)))) (fma.f64 1/2 (/.f64 (*.f64 B B) C) (*.f64 1/2 (+.f64 (/.f64 (*.f64 (*.f64 A A) (*.f64 B B)) (pow.f64 C 3)) (/.f64 (*.f64 A (*.f64 B B)) (*.f64 C C))))))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
57.0b
(/.f64 (neg.f64 (sqrt.f64 (-.f64 (fma.f64 (sqrt.f64 (/.f64 1 (-.f64 (+.f64 (*.f64 A A) (*.f64 C C)) (*.f64 2 (*.f64 A C))))) (*.f64 F (pow.f64 B 4)) (fma.f64 2 (*.f64 C (*.f64 F (*.f64 B B))) (fma.f64 (*.f64 A (*.f64 C (*.f64 F (pow.f64 B 4)))) (sqrt.f64 (/.f64 1 (pow.f64 (-.f64 (+.f64 (*.f64 A A) (*.f64 C C)) (*.f64 2 (*.f64 A C))) 3))) (*.f64 2 (+.f64 (*.f64 (sqrt.f64 (-.f64 (+.f64 (*.f64 A A) (*.f64 C C)) (*.f64 2 (*.f64 A C)))) (*.f64 F (*.f64 B B))) (*.f64 A (*.f64 F (*.f64 B B)))))))) (fma.f64 8 (*.f64 A (*.f64 (*.f64 C C) F)) (fma.f64 4 (*.f64 (*.f64 A (*.f64 C (*.f64 F (*.f64 B B)))) (sqrt.f64 (/.f64 1 (-.f64 (+.f64 (*.f64 A A) (*.f64 C C)) (*.f64 2 (*.f64 A C)))))) (fma.f64 1/4 (*.f64 (sqrt.f64 (/.f64 1 (pow.f64 (-.f64 (+.f64 (*.f64 A A) (*.f64 C C)) (*.f64 2 (*.f64 A C))) 3))) (*.f64 F (pow.f64 B 6))) (fma.f64 1/2 (*.f64 (*.f64 A (*.f64 C (*.f64 F (pow.f64 B 6)))) (sqrt.f64 (/.f64 1 (pow.f64 (-.f64 (+.f64 (*.f64 A A) (*.f64 C C)) (*.f64 2 (*.f64 A C))) 5)))) (*.f64 8 (+.f64 (*.f64 (*.f64 A A) (*.f64 C F)) (*.f64 (*.f64 A (*.f64 C F)) (sqrt.f64 (-.f64 (+.f64 (*.f64 A A) (*.f64 C C)) (*.f64 2 (*.f64 A C)))))))))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
59.9b
(*.f64 -1 (/.f64 (sqrt.f64 (*.f64 2 (*.f64 F (neg.f64 B)))) (sqrt.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)))))
57.2b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 -16 (*.f64 A (*.f64 (pow.f64 C 2) F))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
45.1b
(*.f64 -1 (/.f64 (sqrt.f64 (*.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)))))) (sqrt.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)))))
57.1b
(/.f64 (neg.f64 (fma.f64 (sqrt.f64 (*.f64 -8 (*.f64 A F))) (*.f64 C (sqrt.f64 2)) (/.f64 (*.f64 F (*.f64 (sqrt.f64 2) (*.f64 B B))) (sqrt.f64 (*.f64 -8 (*.f64 A F)))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
61.2b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 -2 (*.f64 F (pow.f64 B 3))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
54.7b
(*.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)))))
Compiler

Compiled 15403 to 8888 computations (42.3% saved)

localize22.0ms (0.1%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.6b
(cbrt.f64 (+.f64 A C))
10.9b
(sqrt.f64 (*.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))))))
15.9b
(fma.f64 (*.f64 (cbrt.f64 (+.f64 A C)) (cbrt.f64 (+.f64 A C))) (cbrt.f64 (+.f64 A C)) (hypot.f64 B (-.f64 A C)))
18.7b
(sqrt.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)))

series943.0ms (3.1%)

Counts
3 → 72
Calls

3 calls:

865.0ms
(sqrt.f64 (*.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))))))
59.0ms
(fma.f64 (*.f64 (cbrt.f64 (+.f64 A C)) (cbrt.f64 (+.f64 A C))) (cbrt.f64 (+.f64 A C)) (hypot.f64 B (-.f64 A C)))
18.0ms
(cbrt.f64 (+.f64 A C))

rewrite7.0ms (0%)

Algorithm
rewrite-expression-head
Rules
pow1_binary64
*-un-lft-identity_binary64
cbrt-prod_binary64
add-sqr-sqrt_binary64
add-cube-cbrt_binary64
Counts
3 → 40
Calls

3 calls:

3.0ms
(sqrt.f64 (*.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))))))
2.0ms
(cbrt.f64 (+.f64 A C))
0.0ms
(fma.f64 (*.f64 (cbrt.f64 (+.f64 A C)) (cbrt.f64 (+.f64 A C))) (cbrt.f64 (+.f64 A C)) (hypot.f64 B (-.f64 A C)))

simplify112.0ms (0.4%)

Algorithm
egg-herbie
Rules
616×fma-def_binary64
498×associate-*l*_binary64
216×*-commutative_binary64
200×associate-/r*_binary64
189×associate-/l*_binary64
Counts
112 → 185
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
06647236
120306037
254936037

prune510.0ms (1.7%)

Pruning

33 alts after pruning (32 fresh and 1 done)

PrunedKeptTotal
New3401341
Fresh03131
Picked011
Done000
Total34033373
Error
16.3b
Counts
373 → 33
Alt Table
StatusErrorProgram
54.8b
(/.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.0b
(neg.f64 (*.f64 (sqrt.f64 (*.f64 (+.f64 (sqrt.f64 (+.f64 (*.f64 B B) (*.f64 C C))) C) F)) (/.f64 (sqrt.f64 2) B)))
45.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.6b
(*.f64 -1 (/.f64 (*.f64 (sqrt.f64 (*.f64 (+.f64 C (hypot.f64 B C)) F)) (sqrt.f64 2)) (sqrt.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)))))
55.8b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (-.f64 (*.f64 2 C) (*.f64 1/2 (/.f64 (pow.f64 B 2) A)))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
55.9b
(*.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)))))
59.0b
(/.f64 (neg.f64 (*.f64 (sqrt.f64 (*.f64 F (+.f64 C (sqrt.f64 (+.f64 (pow.f64 C 2) (pow.f64 B 2)))))) (*.f64 (sqrt.f64 2) B))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
58.6b
(*.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)))))
54.5b
(/.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)))
58.6b
(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))))))
54.0b
(*.f64 -1 (/.f64 (sqrt.f64 (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))) (neg.f64 B)))
54.4b
(*.f64 -1 (/.f64 (sqrt.f64 (*.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)))))) (-.f64 (*.f64 2 (/.f64 (*.f64 A C) B)) B)))
56.5b
(neg.f64 (*.f64 (sqrt.f64 2) (sqrt.f64 (*.f64 -1/2 (/.f64 F A)))))
52.1b
(*.f64 -1 (/.f64 (sqrt.f64 (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))) B))
51.1b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (-.f64 (+.f64 A (+.f64 C (sqrt.f64 (+.f64 (pow.f64 C 2) (pow.f64 B 2))))) (*.f64 (*.f64 A C) (sqrt.f64 (/.f64 1 (+.f64 (pow.f64 C 2) (pow.f64 B 2))))))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
58.0b
(*.f64 -1 (/.f64 (*.f64 2 (sqrt.f64 (*.f64 C F))) (sqrt.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)))))
46.0b
(/.f64 -1 (/.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (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)))))))))
58.6b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 -16 (*.f64 (pow.f64 A 2) (*.f64 C F))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
46.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)))))))) (/.f64 1 (fma.f64 A (*.f64 C -4) (*.f64 B B))))
50.8b
(/.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)))
60.4b
(*.f64 -1 (/.f64 (sqrt.f64 (*.f64 2 (*.f64 F (-.f64 (fma.f64 2 A (*.f64 1/8 (/.f64 (pow.f64 B 4) (pow.f64 C 3)))) (fma.f64 1/2 (/.f64 (*.f64 B B) C) (*.f64 1/2 (+.f64 (/.f64 (*.f64 (*.f64 A A) (*.f64 B B)) (pow.f64 C 3)) (/.f64 (*.f64 A (*.f64 B B)) (*.f64 C C))))))))) (sqrt.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)))))
53.8b
(neg.f64 (*.f64 (sqrt.f64 (*.f64 -1/2 (/.f64 F C))) (sqrt.f64 2)))
45.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)))))
59.8b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F B))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
50.3b
(*.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)))))
59.5b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (-.f64 (fma.f64 2 A (*.f64 1/8 (/.f64 (pow.f64 B 4) (pow.f64 C 3)))) (fma.f64 1/2 (/.f64 (*.f64 B B) C) (*.f64 1/2 (+.f64 (/.f64 (*.f64 (*.f64 A A) (*.f64 B B)) (pow.f64 C 3)) (/.f64 (*.f64 A (*.f64 B B)) (*.f64 C C))))))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
57.0b
(/.f64 (neg.f64 (sqrt.f64 (-.f64 (fma.f64 (sqrt.f64 (/.f64 1 (-.f64 (+.f64 (*.f64 A A) (*.f64 C C)) (*.f64 2 (*.f64 A C))))) (*.f64 F (pow.f64 B 4)) (fma.f64 2 (*.f64 C (*.f64 F (*.f64 B B))) (fma.f64 (*.f64 A (*.f64 C (*.f64 F (pow.f64 B 4)))) (sqrt.f64 (/.f64 1 (pow.f64 (-.f64 (+.f64 (*.f64 A A) (*.f64 C C)) (*.f64 2 (*.f64 A C))) 3))) (*.f64 2 (+.f64 (*.f64 (sqrt.f64 (-.f64 (+.f64 (*.f64 A A) (*.f64 C C)) (*.f64 2 (*.f64 A C)))) (*.f64 F (*.f64 B B))) (*.f64 A (*.f64 F (*.f64 B B)))))))) (fma.f64 8 (*.f64 A (*.f64 (*.f64 C C) F)) (fma.f64 4 (*.f64 (*.f64 A (*.f64 C (*.f64 F (*.f64 B B)))) (sqrt.f64 (/.f64 1 (-.f64 (+.f64 (*.f64 A A) (*.f64 C C)) (*.f64 2 (*.f64 A C)))))) (fma.f64 1/4 (*.f64 (sqrt.f64 (/.f64 1 (pow.f64 (-.f64 (+.f64 (*.f64 A A) (*.f64 C C)) (*.f64 2 (*.f64 A C))) 3))) (*.f64 F (pow.f64 B 6))) (fma.f64 1/2 (*.f64 (*.f64 A (*.f64 C (*.f64 F (pow.f64 B 6)))) (sqrt.f64 (/.f64 1 (pow.f64 (-.f64 (+.f64 (*.f64 A A) (*.f64 C C)) (*.f64 2 (*.f64 A C))) 5)))) (*.f64 8 (+.f64 (*.f64 (*.f64 A A) (*.f64 C F)) (*.f64 (*.f64 A (*.f64 C F)) (sqrt.f64 (-.f64 (+.f64 (*.f64 A A) (*.f64 C C)) (*.f64 2 (*.f64 A C)))))))))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
59.9b
(*.f64 -1 (/.f64 (sqrt.f64 (*.f64 2 (*.f64 F (neg.f64 B)))) (sqrt.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)))))
57.2b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 -16 (*.f64 A (*.f64 (pow.f64 C 2) F))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
45.1b
(*.f64 -1 (/.f64 (sqrt.f64 (*.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)))))) (sqrt.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)))))
57.1b
(/.f64 (neg.f64 (fma.f64 (sqrt.f64 (*.f64 -8 (*.f64 A F))) (*.f64 C (sqrt.f64 2)) (/.f64 (*.f64 F (*.f64 (sqrt.f64 2) (*.f64 B B))) (sqrt.f64 (*.f64 -8 (*.f64 A F)))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
61.2b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 -2 (*.f64 F (pow.f64 B 3))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
54.7b
(*.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)))))
Compiler

Compiled 23514 to 12641 computations (46.2% saved)

localize19.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)))
1.6b
(+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))
9.5b
(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)))

series96.0ms (0.3%)

Counts
2 → 14
Calls

2 calls:

81.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)))
15.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.3%)

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

prune405.0ms (1.3%)

Pruning

34 alts after pruning (33 fresh and 1 done)

PrunedKeptTotal
New2594263
Fresh22931
Picked101
Done011
Total26234296
Error
16.3b
Counts
296 → 34
Alt Table
StatusErrorProgram
54.8b
(/.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.0b
(neg.f64 (*.f64 (sqrt.f64 (*.f64 (+.f64 (sqrt.f64 (+.f64 (*.f64 B B) (*.f64 C C))) C) F)) (/.f64 (sqrt.f64 2) B)))
50.6b
(*.f64 -1 (/.f64 (*.f64 (sqrt.f64 (*.f64 (+.f64 C (hypot.f64 B C)) F)) (sqrt.f64 2)) (sqrt.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)))))
55.8b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (-.f64 (*.f64 2 C) (*.f64 1/2 (/.f64 (pow.f64 B 2) A)))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
55.9b
(*.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)))))
59.0b
(/.f64 (neg.f64 (*.f64 (sqrt.f64 (*.f64 F (+.f64 C (sqrt.f64 (+.f64 (pow.f64 C 2) (pow.f64 B 2)))))) (*.f64 (sqrt.f64 2) B))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
58.6b
(*.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)))))
54.5b
(/.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)))
58.6b
(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))))))
54.0b
(*.f64 -1 (/.f64 (sqrt.f64 (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))) (neg.f64 B)))
45.6b
(*.f64 -1 (/.f64 (sqrt.f64 (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))) (*.f64 (pow.f64 (sqrt.f64 (cbrt.f64 (hypot.f64 (sqrt.f64 (*.f64 -4 (*.f64 A C))) B))) 4) (cbrt.f64 (hypot.f64 (sqrt.f64 (*.f64 -4 (*.f64 A C))) B)))))
54.4b
(*.f64 -1 (/.f64 (sqrt.f64 (*.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)))))) (-.f64 (*.f64 2 (/.f64 (*.f64 A C) B)) B)))
56.5b
(neg.f64 (*.f64 (sqrt.f64 2) (sqrt.f64 (*.f64 -1/2 (/.f64 F A)))))
52.1b
(*.f64 -1 (/.f64 (sqrt.f64 (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))) B))
58.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)))))
51.1b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (-.f64 (+.f64 A (+.f64 C (sqrt.f64 (+.f64 (pow.f64 C 2) (pow.f64 B 2))))) (*.f64 (*.f64 A C) (sqrt.f64 (/.f64 1 (+.f64 (pow.f64 C 2) (pow.f64 B 2))))))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
58.0b
(*.f64 -1 (/.f64 (*.f64 2 (sqrt.f64 (*.f64 C F))) (sqrt.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)))))
46.0b
(/.f64 -1 (/.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (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)))))))))
58.6b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 -16 (*.f64 (pow.f64 A 2) (*.f64 C F))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
45.1b
(*.f64 -1 (/.f64 (sqrt.f64 (*.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)))))) (sqrt.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)))))
47.5b
(*.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)))))
55.4b
(*.f64 -1 (/.f64 (*.f64 (sqrt.f64 (*.f64 A 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)))))
46.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)))))))) (/.f64 1 (fma.f64 A (*.f64 C -4) (*.f64 B B))))
50.8b
(/.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)))
60.4b
(*.f64 -1 (/.f64 (sqrt.f64 (*.f64 2 (*.f64 F (-.f64 (fma.f64 2 A (*.f64 1/8 (/.f64 (pow.f64 B 4) (pow.f64 C 3)))) (fma.f64 1/2 (/.f64 (*.f64 B B) C) (*.f64 1/2 (+.f64 (/.f64 (*.f64 (*.f64 A A) (*.f64 B B)) (pow.f64 C 3)) (/.f64 (*.f64 A (*.f64 B B)) (*.f64 C C))))))))) (sqrt.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)))))
53.8b
(neg.f64 (*.f64 (sqrt.f64 (*.f64 -1/2 (/.f64 F C))) (sqrt.f64 2)))
59.8b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F B))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
50.3b
(*.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)))))
59.5b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (-.f64 (fma.f64 2 A (*.f64 1/8 (/.f64 (pow.f64 B 4) (pow.f64 C 3)))) (fma.f64 1/2 (/.f64 (*.f64 B B) C) (*.f64 1/2 (+.f64 (/.f64 (*.f64 (*.f64 A A) (*.f64 B B)) (pow.f64 C 3)) (/.f64 (*.f64 A (*.f64 B B)) (*.f64 C C))))))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
57.0b
(/.f64 (neg.f64 (sqrt.f64 (-.f64 (fma.f64 (sqrt.f64 (/.f64 1 (-.f64 (+.f64 (*.f64 A A) (*.f64 C C)) (*.f64 2 (*.f64 A C))))) (*.f64 F (pow.f64 B 4)) (fma.f64 2 (*.f64 C (*.f64 F (*.f64 B B))) (fma.f64 (*.f64 A (*.f64 C (*.f64 F (pow.f64 B 4)))) (sqrt.f64 (/.f64 1 (pow.f64 (-.f64 (+.f64 (*.f64 A A) (*.f64 C C)) (*.f64 2 (*.f64 A C))) 3))) (*.f64 2 (+.f64 (*.f64 (sqrt.f64 (-.f64 (+.f64 (*.f64 A A) (*.f64 C C)) (*.f64 2 (*.f64 A C)))) (*.f64 F (*.f64 B B))) (*.f64 A (*.f64 F (*.f64 B B)))))))) (fma.f64 8 (*.f64 A (*.f64 (*.f64 C C) F)) (fma.f64 4 (*.f64 (*.f64 A (*.f64 C (*.f64 F (*.f64 B B)))) (sqrt.f64 (/.f64 1 (-.f64 (+.f64 (*.f64 A A) (*.f64 C C)) (*.f64 2 (*.f64 A C)))))) (fma.f64 1/4 (*.f64 (sqrt.f64 (/.f64 1 (pow.f64 (-.f64 (+.f64 (*.f64 A A) (*.f64 C C)) (*.f64 2 (*.f64 A C))) 3))) (*.f64 F (pow.f64 B 6))) (fma.f64 1/2 (*.f64 (*.f64 A (*.f64 C (*.f64 F (pow.f64 B 6)))) (sqrt.f64 (/.f64 1 (pow.f64 (-.f64 (+.f64 (*.f64 A A) (*.f64 C C)) (*.f64 2 (*.f64 A C))) 5)))) (*.f64 8 (+.f64 (*.f64 (*.f64 A A) (*.f64 C F)) (*.f64 (*.f64 A (*.f64 C F)) (sqrt.f64 (-.f64 (+.f64 (*.f64 A A) (*.f64 C C)) (*.f64 2 (*.f64 A C)))))))))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
59.9b
(*.f64 -1 (/.f64 (sqrt.f64 (*.f64 2 (*.f64 F (neg.f64 B)))) (sqrt.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)))))
57.2b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 -16 (*.f64 A (*.f64 (pow.f64 C 2) F))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
57.1b
(/.f64 (neg.f64 (fma.f64 (sqrt.f64 (*.f64 -8 (*.f64 A F))) (*.f64 C (sqrt.f64 2)) (/.f64 (*.f64 F (*.f64 (sqrt.f64 2) (*.f64 B B))) (sqrt.f64 (*.f64 -8 (*.f64 A F)))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
61.2b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 -2 (*.f64 F (pow.f64 B 3))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
Compiler

Compiled 18515 to 11150 computations (39.8% saved)

regimes4.2s (13.6%)

Accuracy

Total 22.2b remaining (58.4%)

Threshold costs 0b (0%)

Counts
218 → 5
Compiler

Compiled 58439 to 36797 computations (37% saved)

bsearch655.0ms (2.1%)

Steps
ItersRangePoint
7
4.913099090158398
1206.5034603853478
1174.7036553333758
9
2.127197010704103e-308
1.3613232018606078e-302
7.496348083330435e-303
10
-1.6403020875512916e-199
-4.247543712303229e-215
-3.883371458485761e-210
9
-7.795975313307718e+37
-1.5011763295620477e+32
-2.0715755995410293e+32
Compiler

Compiled 5 to 4 computations (20% saved)

simplify8.0ms (0%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
056231
188231
2106231
3119231
4126231
5127231
6127231

end854.0ms (2.8%)

Compiler

Compiled 1737 to 1046 computations (39.8% saved)

Profiling

Loading profile data...