Details

Time bar (total: 54.5s)

analyze3.6s (6.6%)

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.2s (13.2%)

Results
1.7s5733×body128valid
902.0ms660×body2048valid
858.0ms905×body1024valid
817.0ms2892×body128invalid
787.0ms831×body1024invalid
715.0ms637×body2048invalid
469.0ms620×body512invalid
449.0ms621×body512valid
267.0ms364×body256invalid
164.0ms336×body256valid
1.0msbody4096valid
Compiler

Compiled 134 to 98 computations (26.9% saved)

simplify79.0ms (0.1%)

Algorithm
egg-herbie
Rules
1006×rules-43_binary64
751×rules-40_binary64
751×rules-41_binary64
751×rules-42_binary64
223×fma-neg_binary64
Counts
1 → 2
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
02361
113753
249653
3247853
4415953
5487753
6498853

prune6.0ms (0%)

Pruning

3 alts after pruning (3 fresh and 0 done)

PrunedKeptTotal
New022
Fresh011
Picked000
Done000
Total033
Error
49.6b
Counts
3 → 2
Alt Table
StatusErrorProgram
49.6b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 (*.f64 2 (*.f64 (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)) F)) (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))) (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)))
52.1b
(/.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 245 to 162 computations (33.9% saved)

localize18.0ms (0%)

Local error

Found 4 expressions with local error:

NewErrorProgram
5.6b
(*.f64 (*.f64 2 (*.f64 (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)) F)) (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C))))
7.0b
(*.f64 (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)) F)
17.6b
(sqrt.f64 (*.f64 (*.f64 2 (*.f64 (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)) F)) (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))
23.2b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 (*.f64 2 (*.f64 (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)) F)) (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))) (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)))

series17.2s (31.5%)

Counts
4 → 136
Calls

4 calls:

9.2s
(sqrt.f64 (*.f64 (*.f64 2 (*.f64 (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)) F)) (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))
7.7s
(/.f64 (neg.f64 (sqrt.f64 (*.f64 (*.f64 2 (*.f64 (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)) F)) (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))) (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)))
203.0ms
(*.f64 (*.f64 2 (*.f64 (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)) F)) (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C))))
27.0ms
(*.f64 (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)) F)

rewrite87.0ms (0.2%)

Algorithm
batch-egg-rewrite
Rules
226×add-sqr-sqrt_binary64
219×log1p-expm1-u_binary64
219×expm1-log1p-u_binary64
212×add-cbrt-cube_binary64
212×add-exp-log_binary64
Counts
4 → 105
Calls

4 calls:

84.0ms
(*.f64 (*.f64 2 (*.f64 (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)) F)) (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C))))
84.0ms
(*.f64 (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)) F)
84.0ms
(sqrt.f64 (*.f64 (*.f64 2 (*.f64 (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)) F)) (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))
84.0ms
(/.f64 (neg.f64 (sqrt.f64 (*.f64 (*.f64 2 (*.f64 (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)) F)) (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))) (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)))
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
021139
1518139
24860139
34996139
000
100

simplify329.0ms (0.6%)

Algorithm
egg-herbie
Rules
2029×rules-42_binary64
2029×rules-43_binary64
538×fma-def_binary64
17×cube-mult_binary64
17×unpow3_binary64
Counts
241 → 258
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0206936755
1673736755

prune883.0ms (1.6%)

Pruning

22 alts after pruning (22 fresh and 0 done)

PrunedKeptTotal
New23622258
Fresh101
Picked101
Done000
Total23822260
Error
27.3b
Counts
260 → 22
Alt Table
StatusErrorProgram
51.6b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 2 (*.f64 (-.f64 (pow.f64 B 2) (*.f64 4 (*.f64 A C))) (*.f64 F (+.f64 A (+.f64 C (sqrt.f64 (-.f64 (+.f64 (pow.f64 A 2) (+.f64 (pow.f64 B 2) (pow.f64 C 2))) (*.f64 2 (*.f64 A C))))))))))) (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)))
60.8b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 -2 (*.f64 F (pow.f64 B 3))))) (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)))
61.1b
(/.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)) (fma.f64 (*.f64 A A) (*.f64 F B) (*.f64 (*.f64 C C) (*.f64 F B)))))) (*.f64 10 (*.f64 A (*.f64 C (*.f64 F B))))))) (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)))
58.4b
(/.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)))))) (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)))
50.5b
(/.f64 (neg.f64 (exp.f64 (log.f64 (sqrt.f64 (*.f64 (*.f64 2 (*.f64 (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)) F)) (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))))) (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)))
58.4b
(/.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))) (fma.f64 2 (*.f64 (sqrt.f64 (-.f64 (+.f64 (*.f64 A A) (*.f64 C C)) (*.f64 2 (*.f64 A C)))) (*.f64 F (*.f64 B B))) (*.f64 2 (*.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 8 (*.f64 (*.f64 A A) (*.f64 C F)) (*.f64 8 (*.f64 (*.f64 A (*.f64 C F)) (sqrt.f64 (-.f64 (+.f64 (*.f64 A A) (*.f64 C C)) (*.f64 2 (*.f64 A C)))))))))))) (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)))
58.4b
(/.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))) (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)))
49.6b
(/.f64 (neg.f64 (pow.f64 (pow.f64 (*.f64 (*.f64 2 (*.f64 (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)) F)) (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))) 1/4) 2)) (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)))
59.6b
(-.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))))))))))))
57.9b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 -16 (*.f64 A (*.f64 (pow.f64 C 2) F))))) (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)))
58.1b
(*.f64 -1 (*.f64 (sqrt.f64 (*.f64 F (+.f64 A (sqrt.f64 (+.f64 (pow.f64 A 2) (pow.f64 B 2)))))) (/.f64 (sqrt.f64 2) B)))
58.0b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 -16 (*.f64 (pow.f64 A 2) (*.f64 C F))))) (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)))
56.3b
(*.f64 -1 (*.f64 (sqrt.f64 (*.f64 -1/2 (/.f64 F C))) (sqrt.f64 2)))
56.8b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 2 (*.f64 (+.f64 (sqrt.f64 (+.f64 (pow.f64 B 2) (pow.f64 C 2))) C) (*.f64 F (pow.f64 B 2)))))) (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)))
58.4b
(*.f64 -1 (*.f64 (sqrt.f64 (*.f64 (+.f64 (sqrt.f64 (+.f64 (pow.f64 B 2) (pow.f64 C 2))) C) F)) (/.f64 (sqrt.f64 2) B)))
57.0b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 (*.f64 2 (cbrt.f64 (pow.f64 (*.f64 (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)) F) 3))) (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))) (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)))
49.8b
(*.f64 (pow.f64 (cbrt.f64 (/.f64 (neg.f64 (sqrt.f64 (*.f64 (*.f64 2 (*.f64 (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)) F)) (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))) (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)))) 2) (cbrt.f64 (/.f64 (neg.f64 (sqrt.f64 (*.f64 (*.f64 2 (*.f64 (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)) F)) (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))) (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)))))
55.6b
(*.f64 -1 (*.f64 (sqrt.f64 2) (sqrt.f64 (*.f64 -1/2 (/.f64 F A)))))
49.8b
(/.f64 (neg.f64 (sqrt.f64 (fma.f64 (*.f64 2 (*.f64 (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)) F)) (+.f64 A C) (*.f64 (*.f64 2 (*.f64 (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)) F)) (hypot.f64 B (-.f64 A C)))))) (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)))
58.0b
(/.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)))))) (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)))
45.1b
(/.f64 (neg.f64 (*.f64 (sqrt.f64 (*.f64 2 (*.f64 (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)) F))) (sqrt.f64 (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))) (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)))
60.1b
(*.f64 -1 (*.f64 (sqrt.f64 2) (sqrt.f64 (*.f64 -1/4 (/.f64 (*.f64 F (+.f64 A (+.f64 C (sqrt.f64 (-.f64 (+.f64 (pow.f64 A 2) (pow.f64 C 2)) (*.f64 2 (*.f64 A C))))))) (*.f64 A C))))))
Compiler

Compiled 54888 to 31011 computations (43.5% saved)

localize18.0ms (0%)

Local error

Found 4 expressions with local error:

NewErrorProgram
1.7b
(+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))
7.0b
(*.f64 (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)) F)
20.1b
(sqrt.f64 (*.f64 2 (*.f64 (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)) F)))
21.7b
(/.f64 (neg.f64 (*.f64 (sqrt.f64 (*.f64 2 (*.f64 (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)) F))) (sqrt.f64 (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))) (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)))

series3.7s (6.8%)

Counts
3 → 76
Calls

3 calls:

3.5s
(/.f64 (neg.f64 (*.f64 (sqrt.f64 (*.f64 2 (*.f64 (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)) F))) (sqrt.f64 (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))) (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)))
193.0ms
(sqrt.f64 (*.f64 2 (*.f64 (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)) F)))
51.0ms
(+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))

rewrite76.0ms (0.1%)

Algorithm
batch-egg-rewrite
Rules
232×add-sqr-sqrt_binary64
225×log1p-expm1-u_binary64
225×expm1-log1p-u_binary64
218×add-cbrt-cube_binary64
218×add-exp-log_binary64
Counts
3 → 80
Calls

3 calls:

74.0ms
(+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))
74.0ms
(sqrt.f64 (*.f64 2 (*.f64 (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)) F)))
74.0ms
(/.f64 (neg.f64 (*.f64 (sqrt.f64 (*.f64 2 (*.f64 (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)) F))) (sqrt.f64 (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))) (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)))
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
02287
153887
2479787
3495687
000
100

simplify190.0ms (0.3%)

Algorithm
egg-herbie
Rules
1278×rules-41_binary64
1278×rules-42_binary64
1278×rules-43_binary64
298×fma-def_binary64
15×cube-mult_binary64
Counts
156 → 199
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0131320348
1551520348

prune609.0ms (1.1%)

Pruning

25 alts after pruning (25 fresh and 0 done)

PrunedKeptTotal
New2228230
Fresh41721
Picked101
Done000
Total22725252
Error
25.4b
Counts
252 → 25
Alt Table
StatusErrorProgram
51.6b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 2 (*.f64 (-.f64 (pow.f64 B 2) (*.f64 4 (*.f64 A C))) (*.f64 F (+.f64 A (+.f64 C (sqrt.f64 (-.f64 (+.f64 (pow.f64 A 2) (+.f64 (pow.f64 B 2) (pow.f64 C 2))) (*.f64 2 (*.f64 A C))))))))))) (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)))
60.8b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 -2 (*.f64 F (pow.f64 B 3))))) (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)))
55.1b
(cbrt.f64 (pow.f64 (/.f64 (neg.f64 (sqrt.f64 (*.f64 (*.f64 2 (*.f64 (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)) F)) (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))) (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C))) 3))
55.3b
(/.f64 (neg.f64 (*.f64 (-.f64 (*.f64 (sqrt.f64 F) (*.f64 (sqrt.f64 2) B)) (*.f64 2 (*.f64 (/.f64 (*.f64 A (*.f64 C (sqrt.f64 2))) B) (sqrt.f64 F)))) (sqrt.f64 (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))) (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)))
61.1b
(/.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)) (fma.f64 (*.f64 A A) (*.f64 F B) (*.f64 (*.f64 C C) (*.f64 F B)))))) (*.f64 10 (*.f64 A (*.f64 C (*.f64 F B))))))) (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)))
58.4b
(/.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)))))) (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)))
45.1b
(/.f64 (neg.f64 (*.f64 (pow.f64 (sqrt.f64 (sqrt.f64 (*.f64 2 (*.f64 (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)) F)))) 2) (sqrt.f64 (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))) (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)))
58.4b
(/.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))) (fma.f64 2 (*.f64 (sqrt.f64 (-.f64 (+.f64 (*.f64 A A) (*.f64 C C)) (*.f64 2 (*.f64 A C)))) (*.f64 F (*.f64 B B))) (*.f64 2 (*.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 8 (*.f64 (*.f64 A A) (*.f64 C F)) (*.f64 8 (*.f64 (*.f64 A (*.f64 C F)) (sqrt.f64 (-.f64 (+.f64 (*.f64 A A) (*.f64 C C)) (*.f64 2 (*.f64 A C)))))))))))) (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)))
58.4b
(/.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))) (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)))
61.8b
(/.f64 (neg.f64 (*.f64 (sqrt.f64 (*.f64 2 (*.f64 (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)) F))) (sqrt.f64 (-.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) (fma.f64 1/2 (/.f64 (*.f64 (*.f64 A A) (*.f64 B B)) (pow.f64 C 3)) (*.f64 1/2 (/.f64 (*.f64 A (*.f64 B B)) (*.f64 C C))))))))) (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)))
58.1b
(*.f64 -1 (*.f64 (sqrt.f64 (*.f64 F (+.f64 A (sqrt.f64 (+.f64 (pow.f64 A 2) (pow.f64 B 2)))))) (/.f64 (sqrt.f64 2) B)))
57.9b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 -16 (*.f64 A (*.f64 (pow.f64 C 2) F))))) (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)))
54.0b
(/.f64 (neg.f64 (*.f64 (sqrt.f64 (*.f64 2 (*.f64 (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)) F))) (sqrt.f64 (pow.f64 (pow.f64 (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C))) 3) 1/3)))) (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)))
58.0b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 -16 (*.f64 (pow.f64 A 2) (*.f64 C F))))) (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)))
56.3b
(*.f64 -1 (*.f64 (sqrt.f64 (*.f64 -1/2 (/.f64 F C))) (sqrt.f64 2)))
45.0b
(/.f64 (neg.f64 (*.f64 (*.f64 (sqrt.f64 F) (pow.f64 (*.f64 2 (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C))) 1/2)) (sqrt.f64 (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))) (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)))
58.0b
(/.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)))))) (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)))
57.9b
(/.f64 (neg.f64 (*.f64 (sqrt.f64 (*.f64 2 (*.f64 (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)) F))) (sqrt.f64 (-.f64 (*.f64 2 A) (*.f64 1/2 (/.f64 (pow.f64 B 2) C)))))) (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)))
56.8b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 2 (*.f64 (+.f64 (sqrt.f64 (+.f64 (pow.f64 B 2) (pow.f64 C 2))) C) (*.f64 F (pow.f64 B 2)))))) (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)))
58.4b
(*.f64 -1 (*.f64 (sqrt.f64 (*.f64 (+.f64 (sqrt.f64 (+.f64 (pow.f64 B 2) (pow.f64 C 2))) C) F)) (/.f64 (sqrt.f64 2) B)))
55.6b
(*.f64 -1 (*.f64 (sqrt.f64 2) (sqrt.f64 (*.f64 -1/2 (/.f64 F A)))))
49.6b
(/.f64 (neg.f64 (pow.f64 (pow.f64 (*.f64 (*.f64 2 (*.f64 (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)) F)) (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))) 1/4) 2)) (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)))
49.8b
(/.f64 (neg.f64 (sqrt.f64 (fma.f64 (*.f64 2 (*.f64 (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)) F)) (+.f64 A C) (*.f64 (*.f64 2 (*.f64 (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)) F)) (hypot.f64 B (-.f64 A C)))))) (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)))
56.0b
(/.f64 (neg.f64 (*.f64 (sqrt.f64 (*.f64 2 (*.f64 (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)) F))) (sqrt.f64 (-.f64 (*.f64 2 C) (*.f64 1/2 (/.f64 (pow.f64 B 2) A)))))) (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)))
60.1b
(*.f64 -1 (*.f64 (sqrt.f64 2) (sqrt.f64 (*.f64 -1/4 (/.f64 (*.f64 F (+.f64 A (+.f64 C (sqrt.f64 (-.f64 (+.f64 (pow.f64 A 2) (pow.f64 C 2)) (*.f64 2 (*.f64 A C))))))) (*.f64 A C))))))
Compiler

Compiled 35297 to 20143 computations (42.9% saved)

localize21.0ms (0%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.7b
(*.f64 (*.f64 (sqrt.f64 F) (pow.f64 (*.f64 2 (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C))) 1/2)) (sqrt.f64 (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))
1.7b
(+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))
20.8b
(/.f64 (neg.f64 (*.f64 (*.f64 (sqrt.f64 F) (pow.f64 (*.f64 2 (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C))) 1/2)) (sqrt.f64 (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))) (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)))
24.2b
(pow.f64 (*.f64 2 (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C))) 1/2)

series9.6s (17.6%)

Counts
3 → 76
Calls

3 calls:

6.3s
(*.f64 (*.f64 (sqrt.f64 F) (pow.f64 (*.f64 2 (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C))) 1/2)) (sqrt.f64 (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))
3.2s
(/.f64 (neg.f64 (*.f64 (*.f64 (sqrt.f64 F) (pow.f64 (*.f64 2 (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C))) 1/2)) (sqrt.f64 (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))) (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)))
54.0ms
(pow.f64 (*.f64 2 (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C))) 1/2)

rewrite45.0ms (0.1%)

Algorithm
batch-egg-rewrite
Rules
248×add-sqr-sqrt_binary64
242×log1p-expm1-u_binary64
242×expm1-log1p-u_binary64
232×add-cbrt-cube_binary64
232×add-exp-log_binary64
Counts
3 → 66
Calls

3 calls:

42.0ms
(*.f64 (*.f64 (sqrt.f64 F) (pow.f64 (*.f64 2 (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C))) 1/2)) (sqrt.f64 (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))
42.0ms
(/.f64 (neg.f64 (*.f64 (*.f64 (sqrt.f64 F) (pow.f64 (*.f64 2 (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C))) 1/2)) (sqrt.f64 (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))) (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)))
42.0ms
(pow.f64 (*.f64 2 (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C))) 1/2)
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
024115
1583113
24947113
000
100

simplify316.0ms (0.6%)

Algorithm
egg-herbie
Rules
1923×rules-42_binary64
1923×rules-43_binary64
467×fma-def_binary64
17×cube-mult_binary64
17×unpow3_binary64
Counts
142 → 200
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0196033888
1636533888

prune907.0ms (1.7%)

Pruning

30 alts after pruning (29 fresh and 1 done)

PrunedKeptTotal
New2847291
Fresh22224
Picked011
Done000
Total28630316
Error
25.4b
Counts
316 → 30
Alt Table
StatusErrorProgram
51.6b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 2 (*.f64 (-.f64 (pow.f64 B 2) (*.f64 4 (*.f64 A C))) (*.f64 F (+.f64 A (+.f64 C (sqrt.f64 (-.f64 (+.f64 (pow.f64 A 2) (+.f64 (pow.f64 B 2) (pow.f64 C 2))) (*.f64 2 (*.f64 A C))))))))))) (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)))
60.8b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 -2 (*.f64 F (pow.f64 B 3))))) (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)))
55.1b
(cbrt.f64 (pow.f64 (/.f64 (neg.f64 (sqrt.f64 (*.f64 (*.f64 2 (*.f64 (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)) F)) (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))) (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C))) 3))
57.2b
(/.f64 (neg.f64 (*.f64 (*.f64 (sqrt.f64 F) (pow.f64 (*.f64 2 (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C))) 1/2)) (sqrt.f64 (-.f64 (*.f64 2 A) (*.f64 1/2 (/.f64 (*.f64 B B) C)))))) (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)))
61.1b
(/.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)) (fma.f64 (*.f64 A A) (*.f64 F B) (*.f64 (*.f64 C C) (*.f64 F B)))))) (*.f64 10 (*.f64 A (*.f64 C (*.f64 F B))))))) (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)))
58.4b
(/.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)))))) (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)))
45.1b
(/.f64 (neg.f64 (*.f64 (pow.f64 (sqrt.f64 (sqrt.f64 (*.f64 2 (*.f64 (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)) F)))) 2) (sqrt.f64 (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))) (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)))
58.4b
(/.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))) (fma.f64 2 (*.f64 (sqrt.f64 (-.f64 (+.f64 (*.f64 A A) (*.f64 C C)) (*.f64 2 (*.f64 A C)))) (*.f64 F (*.f64 B B))) (*.f64 2 (*.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 8 (*.f64 (*.f64 A A) (*.f64 C F)) (*.f64 8 (*.f64 (*.f64 A (*.f64 C F)) (sqrt.f64 (-.f64 (+.f64 (*.f64 A A) (*.f64 C C)) (*.f64 2 (*.f64 A C)))))))))))) (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)))
58.4b
(/.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))) (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)))
49.8b
(/.f64 (neg.f64 (sqrt.f64 (fma.f64 (*.f64 2 (*.f64 (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)) F)) (+.f64 A C) (*.f64 (*.f64 2 (*.f64 (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)) F)) (hypot.f64 B (-.f64 A C)))))) (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)))
45.4b
(/.f64 (neg.f64 (pow.f64 (cbrt.f64 (*.f64 (pow.f64 (*.f64 (*.f64 2 (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C))) F) 1/2) (sqrt.f64 (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))) 3)) (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)))
61.8b
(/.f64 (neg.f64 (*.f64 (sqrt.f64 (*.f64 2 (*.f64 (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)) F))) (sqrt.f64 (-.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) (fma.f64 1/2 (/.f64 (*.f64 (*.f64 A A) (*.f64 B B)) (pow.f64 C 3)) (*.f64 1/2 (/.f64 (*.f64 A (*.f64 B B)) (*.f64 C C))))))))) (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)))
58.1b
(*.f64 -1 (*.f64 (sqrt.f64 (*.f64 F (+.f64 A (sqrt.f64 (+.f64 (pow.f64 A 2) (pow.f64 B 2)))))) (/.f64 (sqrt.f64 2) B)))
57.9b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 -16 (*.f64 A (*.f64 (pow.f64 C 2) F))))) (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)))
57.0b
(/.f64 (neg.f64 (*.f64 (*.f64 (sqrt.f64 F) (pow.f64 (*.f64 2 (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C))) 1/2)) (sqrt.f64 (*.f64 2 A)))) (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)))
54.0b
(/.f64 (neg.f64 (*.f64 (sqrt.f64 (*.f64 2 (*.f64 (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)) F))) (sqrt.f64 (pow.f64 (pow.f64 (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C))) 3) 1/3)))) (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)))
58.0b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 -16 (*.f64 (pow.f64 A 2) (*.f64 C F))))) (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)))
56.3b
(*.f64 -1 (*.f64 (sqrt.f64 (*.f64 -1/2 (/.f64 F C))) (sqrt.f64 2)))
45.0b
(/.f64 (neg.f64 (*.f64 (*.f64 (sqrt.f64 F) (pow.f64 (*.f64 2 (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C))) 1/2)) (sqrt.f64 (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))) (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)))
58.0b
(/.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)))))) (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)))
56.6b
(/.f64 (neg.f64 (*.f64 (*.f64 (sqrt.f64 F) (pow.f64 (*.f64 2 (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C))) 1/2)) (sqrt.f64 (-.f64 (*.f64 2 C) (*.f64 1/2 (/.f64 (*.f64 B B) A)))))) (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)))
55.3b
(/.f64 (neg.f64 (*.f64 (*.f64 (sqrt.f64 F) (-.f64 (*.f64 (sqrt.f64 2) B) (*.f64 2 (/.f64 (*.f64 A (*.f64 C (sqrt.f64 2))) B)))) (sqrt.f64 (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))) (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)))
56.8b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 2 (*.f64 (+.f64 (sqrt.f64 (+.f64 (pow.f64 B 2) (pow.f64 C 2))) C) (*.f64 F (pow.f64 B 2)))))) (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)))
58.4b
(*.f64 -1 (*.f64 (sqrt.f64 (*.f64 (+.f64 (sqrt.f64 (+.f64 (pow.f64 B 2) (pow.f64 C 2))) C) F)) (/.f64 (sqrt.f64 2) B)))
58.0b
(/.f64 (neg.f64 (*.f64 (*.f64 (sqrt.f64 F) (pow.f64 (*.f64 2 (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C))) 1/2)) (sqrt.f64 B))) (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)))
55.6b
(*.f64 -1 (*.f64 (sqrt.f64 2) (sqrt.f64 (*.f64 -1/2 (/.f64 F A)))))
49.6b
(/.f64 (neg.f64 (pow.f64 (pow.f64 (*.f64 (*.f64 2 (*.f64 (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)) F)) (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))) 1/4) 2)) (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)))
56.0b
(/.f64 (neg.f64 (*.f64 (sqrt.f64 (*.f64 2 (*.f64 (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)) F))) (sqrt.f64 (-.f64 (*.f64 2 C) (*.f64 1/2 (/.f64 (pow.f64 B 2) A)))))) (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)))
60.1b
(*.f64 -1 (*.f64 (sqrt.f64 2) (sqrt.f64 (*.f64 -1/4 (/.f64 (*.f64 F (+.f64 A (+.f64 C (sqrt.f64 (-.f64 (+.f64 (pow.f64 A 2) (pow.f64 C 2)) (*.f64 2 (*.f64 A C))))))) (*.f64 A C))))))
60.9b
(pow.f64 (sqrt.f64 (/.f64 (neg.f64 (*.f64 (pow.f64 (*.f64 (*.f64 2 (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C))) F) 1/2) (sqrt.f64 (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))) (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)))) 2)
Compiler

Compiled 57276 to 33002 computations (42.4% saved)

localize21.0ms (0%)

Local error

Found 4 expressions with local error:

NewErrorProgram
3.4b
(sqrt.f64 (sqrt.f64 (*.f64 2 (*.f64 (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)) F))))
7.0b
(*.f64 (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)) F)
20.1b
(sqrt.f64 (*.f64 2 (*.f64 (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)) F)))
21.7b
(/.f64 (neg.f64 (*.f64 (pow.f64 (sqrt.f64 (sqrt.f64 (*.f64 2 (*.f64 (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)) F)))) 2) (sqrt.f64 (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))) (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)))

series4.2s (7.7%)

Counts
2 → 64
Calls

2 calls:

3.6s
(/.f64 (neg.f64 (*.f64 (pow.f64 (sqrt.f64 (sqrt.f64 (*.f64 2 (*.f64 (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)) F)))) 2) (sqrt.f64 (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))) (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)))
618.0ms
(sqrt.f64 (sqrt.f64 (*.f64 2 (*.f64 (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)) F))))

rewrite77.0ms (0.1%)

Algorithm
batch-egg-rewrite
Rules
238×add-sqr-sqrt_binary64
233×log1p-expm1-u_binary64
233×expm1-log1p-u_binary64
225×add-cbrt-cube_binary64
225×add-exp-log_binary64
Counts
2 → 48
Calls

2 calls:

75.0ms
(sqrt.f64 (sqrt.f64 (*.f64 2 (*.f64 (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)) F))))
75.0ms
(/.f64 (neg.f64 (*.f64 (pow.f64 (sqrt.f64 (sqrt.f64 (*.f64 2 (*.f64 (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)) F)))) 2) (sqrt.f64 (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))) (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)))
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
02478
156376
2495776
3511176
000
100

simplify204.0ms (0.4%)

Algorithm
egg-herbie
Rules
1302×rules-41_binary64
1302×rules-42_binary64
1302×rules-43_binary64
271×fma-def_binary64
28×fma-neg_binary64
Counts
112 → 148
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0134120874
1564920874

prune622.0ms (1.1%)

Pruning

33 alts after pruning (31 fresh and 2 done)

PrunedKeptTotal
New2253228
Fresh02828
Picked011
Done011
Total22533258
Error
25.2b
Counts
258 → 33
Alt Table
StatusErrorProgram
51.6b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 2 (*.f64 (-.f64 (pow.f64 B 2) (*.f64 4 (*.f64 A C))) (*.f64 F (+.f64 A (+.f64 C (sqrt.f64 (-.f64 (+.f64 (pow.f64 A 2) (+.f64 (pow.f64 B 2) (pow.f64 C 2))) (*.f64 2 (*.f64 A C))))))))))) (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)))
60.8b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 -2 (*.f64 F (pow.f64 B 3))))) (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)))
55.1b
(cbrt.f64 (pow.f64 (/.f64 (neg.f64 (sqrt.f64 (*.f64 (*.f64 2 (*.f64 (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)) F)) (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))) (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C))) 3))
57.2b
(/.f64 (neg.f64 (*.f64 (*.f64 (sqrt.f64 F) (pow.f64 (*.f64 2 (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C))) 1/2)) (sqrt.f64 (-.f64 (*.f64 2 A) (*.f64 1/2 (/.f64 (*.f64 B B) C)))))) (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)))
61.1b
(/.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)) (fma.f64 (*.f64 A A) (*.f64 F B) (*.f64 (*.f64 C C) (*.f64 F B)))))) (*.f64 10 (*.f64 A (*.f64 C (*.f64 F B))))))) (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)))
58.4b
(/.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)))))) (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)))
45.1b
(/.f64 (neg.f64 (*.f64 (pow.f64 (sqrt.f64 (sqrt.f64 (*.f64 2 (*.f64 (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)) F)))) 2) (sqrt.f64 (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))) (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)))
58.4b
(/.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))) (fma.f64 2 (*.f64 (sqrt.f64 (-.f64 (+.f64 (*.f64 A A) (*.f64 C C)) (*.f64 2 (*.f64 A C)))) (*.f64 F (*.f64 B B))) (*.f64 2 (*.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 8 (*.f64 (*.f64 A A) (*.f64 C F)) (*.f64 8 (*.f64 (*.f64 A (*.f64 C F)) (sqrt.f64 (-.f64 (+.f64 (*.f64 A A) (*.f64 C C)) (*.f64 2 (*.f64 A C)))))))))))) (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)))
58.4b
(/.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))) (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)))
58.3b
(/.f64 (neg.f64 (*.f64 (pow.f64 (*.f64 (pow.f64 (exp.f64 1/4) (-.f64 (log.f64 (*.f64 -4 (*.f64 C F))) (neg.f64 (log.f64 A)))) (sqrt.f64 (sqrt.f64 2))) 2) (sqrt.f64 (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))) (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)))
49.8b
(/.f64 (neg.f64 (sqrt.f64 (fma.f64 (*.f64 2 (*.f64 (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)) F)) (+.f64 A C) (*.f64 (*.f64 2 (*.f64 (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)) F)) (hypot.f64 B (-.f64 A C)))))) (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)))
45.4b
(/.f64 (neg.f64 (pow.f64 (cbrt.f64 (*.f64 (pow.f64 (*.f64 (*.f64 2 (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C))) F) 1/2) (sqrt.f64 (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))) 3)) (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)))
61.8b
(/.f64 (neg.f64 (*.f64 (sqrt.f64 (*.f64 2 (*.f64 (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)) F))) (sqrt.f64 (-.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) (fma.f64 1/2 (/.f64 (*.f64 (*.f64 A A) (*.f64 B B)) (pow.f64 C 3)) (*.f64 1/2 (/.f64 (*.f64 A (*.f64 B B)) (*.f64 C C))))))))) (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)))
58.1b
(*.f64 -1 (*.f64 (sqrt.f64 (*.f64 F (+.f64 A (sqrt.f64 (+.f64 (pow.f64 A 2) (pow.f64 B 2)))))) (/.f64 (sqrt.f64 2) B)))
58.1b
(/.f64 (neg.f64 (*.f64 (pow.f64 (*.f64 (exp.f64 (*.f64 1/4 (-.f64 (log.f64 (*.f64 -4 (*.f64 C F))) (log.f64 (/.f64 1 A))))) (sqrt.f64 (sqrt.f64 2))) 2) (sqrt.f64 (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))) (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)))
57.9b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 -16 (*.f64 A (*.f64 (pow.f64 C 2) F))))) (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)))
57.0b
(/.f64 (neg.f64 (*.f64 (*.f64 (sqrt.f64 F) (pow.f64 (*.f64 2 (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C))) 1/2)) (sqrt.f64 (*.f64 2 A)))) (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)))
54.0b
(/.f64 (neg.f64 (*.f64 (sqrt.f64 (*.f64 2 (*.f64 (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)) F))) (sqrt.f64 (pow.f64 (pow.f64 (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C))) 3) 1/3)))) (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)))
58.0b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 -16 (*.f64 (pow.f64 A 2) (*.f64 C F))))) (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)))
56.3b
(*.f64 -1 (*.f64 (sqrt.f64 (*.f64 -1/2 (/.f64 F C))) (sqrt.f64 2)))
45.0b
(/.f64 (neg.f64 (*.f64 (*.f64 (sqrt.f64 F) (pow.f64 (*.f64 2 (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C))) 1/2)) (sqrt.f64 (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))) (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)))
58.0b
(/.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)))))) (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)))
56.6b
(/.f64 (neg.f64 (*.f64 (*.f64 (sqrt.f64 F) (pow.f64 (*.f64 2 (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C))) 1/2)) (sqrt.f64 (-.f64 (*.f64 2 C) (*.f64 1/2 (/.f64 (*.f64 B B) A)))))) (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)))
55.3b
(/.f64 (neg.f64 (*.f64 (*.f64 (sqrt.f64 F) (-.f64 (*.f64 (sqrt.f64 2) B) (*.f64 2 (/.f64 (*.f64 A (*.f64 C (sqrt.f64 2))) B)))) (sqrt.f64 (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))) (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)))
56.0b
(/.f64 (neg.f64 (*.f64 (pow.f64 (*.f64 (sqrt.f64 (sqrt.f64 2)) (exp.f64 (*.f64 1/4 (-.f64 (log.f64 F) (*.f64 2 (log.f64 (/.f64 1 B))))))) 2) (sqrt.f64 (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))) (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)))
56.0b
(/.f64 (neg.f64 (*.f64 (sqrt.f64 (*.f64 2 (*.f64 (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)) F))) (sqrt.f64 (-.f64 (*.f64 2 C) (*.f64 1/2 (/.f64 (pow.f64 B 2) A)))))) (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)))
56.8b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 2 (*.f64 (+.f64 (sqrt.f64 (+.f64 (pow.f64 B 2) (pow.f64 C 2))) C) (*.f64 F (pow.f64 B 2)))))) (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)))
58.4b
(*.f64 -1 (*.f64 (sqrt.f64 (*.f64 (+.f64 (sqrt.f64 (+.f64 (pow.f64 B 2) (pow.f64 C 2))) C) F)) (/.f64 (sqrt.f64 2) B)))
58.0b
(/.f64 (neg.f64 (*.f64 (*.f64 (sqrt.f64 F) (pow.f64 (*.f64 2 (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C))) 1/2)) (sqrt.f64 B))) (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)))
55.6b
(*.f64 -1 (*.f64 (sqrt.f64 2) (sqrt.f64 (*.f64 -1/2 (/.f64 F A)))))
49.6b
(/.f64 (neg.f64 (pow.f64 (pow.f64 (*.f64 (*.f64 2 (*.f64 (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)) F)) (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))) 1/4) 2)) (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)))
60.1b
(*.f64 -1 (*.f64 (sqrt.f64 2) (sqrt.f64 (*.f64 -1/4 (/.f64 (*.f64 F (+.f64 A (+.f64 C (sqrt.f64 (-.f64 (+.f64 (pow.f64 A 2) (pow.f64 C 2)) (*.f64 2 (*.f64 A C))))))) (*.f64 A C))))))
60.9b
(pow.f64 (sqrt.f64 (/.f64 (neg.f64 (*.f64 (pow.f64 (*.f64 (*.f64 2 (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C))) F) 1/2) (sqrt.f64 (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))) (-.f64 (*.f64 B B) (*.f64 (*.f64 4 A) C)))) 2)
Compiler

Compiled 35823 to 20832 computations (41.8% saved)

regimes3.3s (6%)

Accuracy

Total 17.7b remaining (42.8%)

Threshold costs 0b (0%)

Counts
191 → 6
Compiler

Compiled 56654 to 36276 computations (36% saved)

bsearch483.0ms (0.9%)

Steps
ItersRangePoint
6
5.4880541512515054e+172
6.098023762335932e+173
3.718423827809515e+173
5
6.3096734433383285e+53
2.0161045823309827e+54
1.1150151595515204e+54
9
3.211081560272966e-270
2.9914885296432184e-262
1.9811684140282612e-269
5
-2.1635952194332943e-134
-8.974520102303552e-135
-2.1406366566139761e-134
7
-5.522448650465628e-16
-2.371396959971025e-17
-2.592644457333761e-17
Compiler

Compiled 5 to 4 computations (20% saved)

simplify5.0ms (0%)

Algorithm
egg-herbie
Rules
1-exp_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
069270
171270
270270

end790.0ms (1.5%)

Compiler

Compiled 1797 to 1149 computations (36.1% saved)

Profiling

Loading profile data...