Details

Time bar (total: 1.4min)

analyze3.3s (4.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)

sample6.6s (8%)

Results
1.6s5729×body128valid
845.0ms884×body1024valid
770.0ms697×body2048valid
744.0ms3069×body128invalid
721.0ms824×body1024invalid
661.0ms610×body2048invalid
424.0ms582×body512invalid
414.0ms606×body512valid
155.0ms338×body256valid
153.0ms347×body256invalid
4.0msbody4096valid
Compiler

Compiled 134 to 98 computations (26.9% saved)

simplify76.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

prune5.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.9b
(/.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)))
52.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)

localize16.0ms (0%)

Local error

Found 4 expressions with local error:

NewErrorProgram
1.4b
(+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))
3.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))))))
11.7b
(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)))

series16.7s (20.4%)

Counts
4 → 124
Calls

4 calls:

9.0s
(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.4s
(/.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)))
209.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))))))
56.0ms
(+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))

rewrite85.0ms (0.1%)

Algorithm
batch-egg-rewrite
Rules
225×add-sqr-sqrt_binary64
215×log1p-expm1-u_binary64
215×expm1-log1p-u_binary64
210×add-cbrt-cube_binary64
210×add-exp-log_binary64
Counts
4 → 112
Calls

4 calls:

82.0ms
(+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))
82.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))))))
82.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)))))))
82.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)))
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
020128
1448126
24697126
34938126
000
100

simplify378.0ms (0.5%)

Algorithm
egg-herbie
Rules
582×fma-def_binary64
267×associate-/l*_binary64
212×associate-*l/_binary64
171×associate-/r*_binary64
146×times-frac_binary64
Counts
236 → 323
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0222137666
1501837666

prune997.0ms (1.2%)

Pruning

29 alts after pruning (29 fresh and 0 done)

PrunedKeptTotal
New29429323
Fresh101
Picked101
Done000
Total29629325
Error
27.9b
Counts
325 → 29
Alt Table
StatusErrorProgram
50.3b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (fma.f64 (sqrt.f64 (hypot.f64 B (-.f64 A C))) (sqrt.f64 (hypot.f64 B (-.f64 A C))) (+.f64 A C))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
56.9b
(/.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)))
56.6b
(/.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)))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
50.3b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (fma.f64 (pow.f64 (cbrt.f64 (hypot.f64 B (-.f64 A C))) 2) (cbrt.f64 (hypot.f64 B (-.f64 A C))) (+.f64 A C))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
57.6b
(/.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)))
60.8b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (neg.f64 B)))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
60.9b
(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.4b
(/.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)))
49.3b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (fma.f64 (pow.f64 (cbrt.f64 A) 2) (cbrt.f64 A) (+.f64 C (hypot.f64 B (-.f64 A C))))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
49.8b
(/.f64 (neg.f64 (*.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) 2)) (sqrt.f64 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
56.1b
(/.f64 (neg.f64 (*.f64 A (*.f64 (sqrt.f64 2) (sqrt.f64 (*.f64 -8 (*.f64 C F)))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
61.6b
(sqrt.f64 (/.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)))))) (pow.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) 2)))
52.3b
(*.f64 (/.f64 -1 (sqrt.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)))) (/.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))))))) (sqrt.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)))))
59.5b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 2 (*.f64 F (pow.f64 B 3))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
53.7b
(/.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)))
60.2b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (-.f64 (+.f64 A (fma.f64 1/2 (/.f64 (*.f64 A A) B) (fma.f64 1/2 (/.f64 (*.f64 C C) B) (+.f64 C B)))) (/.f64 (*.f64 A C) B))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
61.6b
(/.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)))
54.5b
(/.f64 (neg.f64 (sqrt.f64 (-.f64 (fma.f64 (*.f64 (*.f64 C C) (*.f64 F (*.f64 B B))) (sqrt.f64 (/.f64 1 (+.f64 (*.f64 A A) (*.f64 B B)))) (fma.f64 2 (*.f64 C (*.f64 F (*.f64 B B))) (fma.f64 2 (*.f64 (*.f64 F (*.f64 B B)) (sqrt.f64 (+.f64 (*.f64 A A) (*.f64 B B)))) (fma.f64 2 (*.f64 A (*.f64 F (*.f64 B B))) (*.f64 8 (*.f64 (*.f64 (*.f64 A A) (*.f64 (*.f64 C C) F)) (sqrt.f64 (/.f64 1 (+.f64 (*.f64 A A) (*.f64 B B)))))))))) (fma.f64 8 (*.f64 A (*.f64 (*.f64 C C) F)) (fma.f64 8 (*.f64 (*.f64 A (*.f64 C F)) (sqrt.f64 (+.f64 (*.f64 A A) (*.f64 B B)))) (fma.f64 (*.f64 (*.f64 A A) (*.f64 (*.f64 C C) (*.f64 F (*.f64 B B)))) (sqrt.f64 (/.f64 1 (pow.f64 (+.f64 (*.f64 A A) (*.f64 B B)) 3))) (fma.f64 2 (*.f64 (*.f64 A (*.f64 C (*.f64 F (*.f64 B B)))) (sqrt.f64 (/.f64 1 (+.f64 (*.f64 A A) (*.f64 B B))))) (*.f64 8 (*.f64 (*.f64 A A) (*.f64 C F)))))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
59.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)))
56.9b
(/.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.5b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 -16 (*.f64 (pow.f64 A 2) (*.f64 C F))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
56.4b
(neg.f64 (*.f64 (sqrt.f64 2) (sqrt.f64 (*.f64 -1/2 (/.f64 F A)))))
50.1b
(*.f64 (/.f64 -1 (pow.f64 (cbrt.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B))) 2)) (/.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C))))))) (cbrt.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)))))
59.1b
(neg.f64 (*.f64 (sqrt.f64 (*.f64 (+.f64 (sqrt.f64 (+.f64 (*.f64 B B) (*.f64 C C))) C) F)) (/.f64 (sqrt.f64 2) B)))
60.1b
(/.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)))
58.6b
(/.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)))
61.1b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 -2 (*.f64 F (pow.f64 B 3))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
57.4b
(/.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)))
53.5b
(neg.f64 (*.f64 (sqrt.f64 (*.f64 -1/2 (/.f64 F C))) (sqrt.f64 2)))
Compiler

Compiled 58748 to 32838 computations (44.1% saved)

localize65.0ms (0.1%)

Local error

Found 4 expressions with local error:

NewErrorProgram
2.1b
(*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (fma.f64 (pow.f64 (cbrt.f64 A) 2) (cbrt.f64 A) (+.f64 C (hypot.f64 B (-.f64 A C)))))))
9.5b
(fma.f64 (pow.f64 (cbrt.f64 A) 2) (cbrt.f64 A) (+.f64 C (hypot.f64 B (-.f64 A C))))
17.2b
(sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (fma.f64 (pow.f64 (cbrt.f64 A) 2) (cbrt.f64 A) (+.f64 C (hypot.f64 B (-.f64 A C))))))))
24.8b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (fma.f64 (pow.f64 (cbrt.f64 A) 2) (cbrt.f64 A) (+.f64 C (hypot.f64 B (-.f64 A C))))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))

series27.0s (33%)

Counts
4 → 132
Calls

4 calls:

17.9s
(sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (fma.f64 (pow.f64 (cbrt.f64 A) 2) (cbrt.f64 A) (+.f64 C (hypot.f64 B (-.f64 A C))))))))
7.7s
(/.f64 (neg.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (fma.f64 (pow.f64 (cbrt.f64 A) 2) (cbrt.f64 A) (+.f64 C (hypot.f64 B (-.f64 A C))))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
1.3s
(*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (fma.f64 (pow.f64 (cbrt.f64 A) 2) (cbrt.f64 A) (+.f64 C (hypot.f64 B (-.f64 A C)))))))
115.0ms
(fma.f64 (pow.f64 (cbrt.f64 A) 2) (cbrt.f64 A) (+.f64 C (hypot.f64 B (-.f64 A C))))

rewrite160.0ms (0.2%)

Algorithm
batch-egg-rewrite
Rules
392×log1p-udef_binary64
234×add-sqr-sqrt_binary64
223×log1p-expm1-u_binary64
223×expm1-log1p-u_binary64
219×add-cbrt-cube_binary64
Counts
4 → 95
Calls

4 calls:

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

Useful iterations: 0 (0.0ms)

IterNodesCost
022128
1474126
24498126
35167126
000
100

simplify817.0ms (1%)

Algorithm
egg-herbie
Rules
642×fma-def_binary64
280×associate-/l*_binary64
214×associate-*l/_binary64
179×associate-*r/_binary64
174×associate-/r*_binary64
Counts
227 → 323
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0242741113
1526941113

prune2.7s (3.2%)

Pruning

31 alts after pruning (30 fresh and 1 done)

PrunedKeptTotal
New3167323
Fresh52328
Picked011
Done000
Total32131352
Error
27.7b
Counts
352 → 31
Alt Table
StatusErrorProgram
63.5b
(/.f64 (neg.f64 (-.f64 (fma.f64 2 (*.f64 (sqrt.f64 (*.f64 (pow.f64 C 3) F)) (sqrt.f64 2)) (*.f64 1/4 (*.f64 (sqrt.f64 (/.f64 F C)) (*.f64 (sqrt.f64 2) (*.f64 B B))))) (*.f64 (*.f64 A (sqrt.f64 2)) (sqrt.f64 (*.f64 C F))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
56.6b
(/.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)))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
50.3b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (fma.f64 (sqrt.f64 (hypot.f64 B (-.f64 A C))) (sqrt.f64 (hypot.f64 B (-.f64 A C))) (+.f64 A C))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
50.3b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (fma.f64 (pow.f64 (cbrt.f64 (hypot.f64 B (-.f64 A C))) 2) (cbrt.f64 (hypot.f64 B (-.f64 A C))) (+.f64 A C))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
57.6b
(/.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)))
60.8b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (neg.f64 B)))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
62.8b
(/.f64 (neg.f64 (*.f64 -2 (*.f64 (*.f64 A (sqrt.f64 2)) (sqrt.f64 (*.f64 C F))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
59.4b
(/.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)))
49.3b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (fma.f64 (pow.f64 (cbrt.f64 A) 2) (cbrt.f64 A) (+.f64 C (hypot.f64 B (-.f64 A C))))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
49.8b
(/.f64 (neg.f64 (*.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) 2)) (sqrt.f64 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
63.7b
(-.f64 (*.f64 1/2 (*.f64 (/.f64 (sqrt.f64 2) A) (sqrt.f64 (*.f64 C F)))) (fma.f64 1/16 (*.f64 (/.f64 (*.f64 (sqrt.f64 2) (*.f64 B B)) A) (sqrt.f64 (/.f64 F (pow.f64 C 3)))) (*.f64 1/4 (*.f64 (sqrt.f64 (/.f64 F C)) (sqrt.f64 2)))))
58.6b
(/.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)))
56.1b
(/.f64 (neg.f64 (*.f64 A (*.f64 (sqrt.f64 2) (sqrt.f64 (*.f64 -8 (*.f64 C F)))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
61.6b
(sqrt.f64 (/.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)))))) (pow.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) 2)))
62.7b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 8 (*.f64 (pow.f64 A 2) (*.f64 C F))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
62.4b
(*.f64 -1/2 (*.f64 (sqrt.f64 (/.f64 F C)) (sqrt.f64 2)))
61.1b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 -2 (*.f64 F (pow.f64 B 3))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
52.3b
(*.f64 (/.f64 -1 (sqrt.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)))) (/.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))))))) (sqrt.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)))))
59.5b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 2 (*.f64 F (pow.f64 B 3))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
60.8b
(neg.f64 (*.f64 (sqrt.f64 2) (sqrt.f64 (*.f64 -1/4 (/.f64 F C)))))
60.2b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (-.f64 (+.f64 A (fma.f64 1/2 (/.f64 (*.f64 A A) B) (fma.f64 1/2 (/.f64 (*.f64 C C) B) (+.f64 C B)))) (/.f64 (*.f64 A C) B))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
61.6b
(/.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)))
53.5b
(neg.f64 (*.f64 (sqrt.f64 (*.f64 -1/2 (/.f64 F C))) (sqrt.f64 2)))
63.1b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (neg.f64 A)))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
56.9b
(/.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.5b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 -16 (*.f64 (pow.f64 A 2) (*.f64 C F))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
56.4b
(neg.f64 (*.f64 (sqrt.f64 2) (sqrt.f64 (*.f64 -1/2 (/.f64 F A)))))
50.1b
(*.f64 (/.f64 -1 (pow.f64 (cbrt.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B))) 2)) (/.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C))))))) (cbrt.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)))))
60.1b
(/.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)))
57.4b
(/.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)))
54.5b
(/.f64 (neg.f64 (sqrt.f64 (-.f64 (fma.f64 (*.f64 (*.f64 C C) (*.f64 F (*.f64 B B))) (sqrt.f64 (/.f64 1 (+.f64 (*.f64 A A) (*.f64 B B)))) (fma.f64 2 (*.f64 C (*.f64 F (*.f64 B B))) (fma.f64 2 (*.f64 (*.f64 F (*.f64 B B)) (sqrt.f64 (+.f64 (*.f64 A A) (*.f64 B B)))) (fma.f64 2 (*.f64 A (*.f64 F (*.f64 B B))) (*.f64 8 (*.f64 (*.f64 (*.f64 A A) (*.f64 (*.f64 C C) F)) (sqrt.f64 (/.f64 1 (+.f64 (*.f64 A A) (*.f64 B B)))))))))) (fma.f64 8 (*.f64 A (*.f64 (*.f64 C C) F)) (fma.f64 8 (*.f64 (*.f64 A (*.f64 C F)) (sqrt.f64 (+.f64 (*.f64 A A) (*.f64 B B)))) (fma.f64 (*.f64 (*.f64 A A) (*.f64 (*.f64 C C) (*.f64 F (*.f64 B B)))) (sqrt.f64 (/.f64 1 (pow.f64 (+.f64 (*.f64 A A) (*.f64 B B)) 3))) (fma.f64 2 (*.f64 (*.f64 A (*.f64 C (*.f64 F (*.f64 B B)))) (sqrt.f64 (/.f64 1 (+.f64 (*.f64 A A) (*.f64 B B))))) (*.f64 8 (*.f64 (*.f64 A A) (*.f64 C F)))))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
Compiler

Compiled 62663 to 35249 computations (43.7% saved)

localize33.0ms (0%)

Local error

Found 4 expressions with local error:

NewErrorProgram
1.4b
(+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))
9.5b
(sqrt.f64 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))
18.4b
(/.f64 (neg.f64 (*.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) 2)) (sqrt.f64 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
18.5b
(sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) 2))

series8.5s (10.4%)

Counts
3 → 60
Calls

3 calls:

6.8s
(/.f64 (neg.f64 (*.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) 2)) (sqrt.f64 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
1.6s
(sqrt.f64 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))
127.0ms
(sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) 2))

rewrite119.0ms (0.1%)

Algorithm
batch-egg-rewrite
Rules
395×log1p-udef_binary64
233×add-sqr-sqrt_binary64
223×log1p-expm1-u_binary64
223×expm1-log1p-u_binary64
218×add-cbrt-cube_binary64
Counts
3 → 88
Calls

3 calls:

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

Useful iterations: 0 (0.0ms)

IterNodesCost
02183
146981
2461881
3532381
000
100

simplify406.0ms (0.5%)

Algorithm
egg-herbie
Rules
657×*-commutative_binary64
317×fma-def_binary64
294×associate-*r*_binary64
285×associate-+r+_binary64
171×associate-/l*_binary64
Counts
148 → 191
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0142822547
1507722547

prune1.5s (1.8%)

Pruning

34 alts after pruning (33 fresh and 1 done)

PrunedKeptTotal
New2806286
Fresh22729
Picked101
Done011
Total28334317
Error
26.3b
Counts
317 → 34
Alt Table
StatusErrorProgram
50.2b
(*.f64 (/.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) 2)) 1) (/.f64 (neg.f64 (sqrt.f64 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))) (fma.f64 A (*.f64 C -4) (*.f64 B B))))
50.3b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (fma.f64 (sqrt.f64 (hypot.f64 B (-.f64 A C))) (sqrt.f64 (hypot.f64 B (-.f64 A C))) (+.f64 A C))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
63.5b
(/.f64 (neg.f64 (-.f64 (fma.f64 2 (*.f64 (sqrt.f64 (*.f64 (pow.f64 C 3) F)) (sqrt.f64 2)) (*.f64 1/4 (*.f64 (sqrt.f64 (/.f64 F C)) (*.f64 (sqrt.f64 2) (*.f64 B B))))) (*.f64 (*.f64 A (sqrt.f64 2)) (sqrt.f64 (*.f64 C F))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
56.6b
(/.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)))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
50.3b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (fma.f64 (pow.f64 (cbrt.f64 (hypot.f64 B (-.f64 A C))) 2) (cbrt.f64 (hypot.f64 B (-.f64 A C))) (+.f64 A C))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
57.6b
(/.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)))
60.8b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (neg.f64 B)))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
55.9b
(/.f64 (neg.f64 (*.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) 2)) (sqrt.f64 (*.f64 F (-.f64 (*.f64 2 A) (*.f64 1/2 (/.f64 (*.f64 B B) C))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
62.8b
(/.f64 (neg.f64 (*.f64 -2 (*.f64 (*.f64 A (sqrt.f64 2)) (sqrt.f64 (*.f64 C F))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
59.4b
(/.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)))
49.3b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (fma.f64 (pow.f64 (cbrt.f64 A) 2) (cbrt.f64 A) (+.f64 C (hypot.f64 B (-.f64 A C))))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
63.7b
(-.f64 (*.f64 1/2 (*.f64 (/.f64 (sqrt.f64 2) A) (sqrt.f64 (*.f64 C F)))) (fma.f64 1/16 (*.f64 (/.f64 (*.f64 (sqrt.f64 2) (*.f64 B B)) A) (sqrt.f64 (/.f64 F (pow.f64 C 3)))) (*.f64 1/4 (*.f64 (sqrt.f64 (/.f64 F C)) (sqrt.f64 2)))))
55.5b
(/.f64 (neg.f64 (*.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) 2)) (*.f64 (sqrt.f64 (*.f64 A F)) (sqrt.f64 2)))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
58.6b
(/.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)))
56.1b
(/.f64 (neg.f64 (*.f64 A (*.f64 (sqrt.f64 2) (sqrt.f64 (*.f64 -8 (*.f64 C F)))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
61.6b
(sqrt.f64 (/.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)))))) (pow.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) 2)))
62.4b
(*.f64 -1/2 (*.f64 (sqrt.f64 (/.f64 F C)) (sqrt.f64 2)))
61.1b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 -2 (*.f64 F (pow.f64 B 3))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
52.3b
(*.f64 (/.f64 -1 (sqrt.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)))) (/.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))))))) (sqrt.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)))))
59.5b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 2 (*.f64 F (pow.f64 B 3))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
60.8b
(neg.f64 (*.f64 (sqrt.f64 2) (sqrt.f64 (*.f64 -1/4 (/.f64 F C)))))
57.4b
(/.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)))
53.1b
(/.f64 (neg.f64 (*.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) 2)) (sqrt.f64 (*.f64 F (+.f64 C (sqrt.f64 (+.f64 (pow.f64 C 2) (pow.f64 B 2)))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
60.2b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (-.f64 (+.f64 A (fma.f64 1/2 (/.f64 (*.f64 A A) B) (fma.f64 1/2 (/.f64 (*.f64 C C) B) (+.f64 C B)))) (/.f64 (*.f64 A C) B))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
61.6b
(/.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)))
53.5b
(neg.f64 (*.f64 (sqrt.f64 (*.f64 -1/2 (/.f64 F C))) (sqrt.f64 2)))
63.1b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (neg.f64 A)))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
57.9b
(/.f64 (neg.f64 (*.f64 (neg.f64 (*.f64 (sqrt.f64 2) B)) (sqrt.f64 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
56.9b
(/.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.5b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 -16 (*.f64 (pow.f64 A 2) (*.f64 C F))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
47.3b
(/.f64 (neg.f64 (*.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) 2)) (*.f64 (sqrt.f64 F) (sqrt.f64 (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
56.4b
(neg.f64 (*.f64 (sqrt.f64 2) (sqrt.f64 (*.f64 -1/2 (/.f64 F A)))))
60.1b
(/.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)))
54.5b
(/.f64 (neg.f64 (sqrt.f64 (-.f64 (fma.f64 (*.f64 (*.f64 C C) (*.f64 F (*.f64 B B))) (sqrt.f64 (/.f64 1 (+.f64 (*.f64 A A) (*.f64 B B)))) (fma.f64 2 (*.f64 C (*.f64 F (*.f64 B B))) (fma.f64 2 (*.f64 (*.f64 F (*.f64 B B)) (sqrt.f64 (+.f64 (*.f64 A A) (*.f64 B B)))) (fma.f64 2 (*.f64 A (*.f64 F (*.f64 B B))) (*.f64 8 (*.f64 (*.f64 (*.f64 A A) (*.f64 (*.f64 C C) F)) (sqrt.f64 (/.f64 1 (+.f64 (*.f64 A A) (*.f64 B B)))))))))) (fma.f64 8 (*.f64 A (*.f64 (*.f64 C C) F)) (fma.f64 8 (*.f64 (*.f64 A (*.f64 C F)) (sqrt.f64 (+.f64 (*.f64 A A) (*.f64 B B)))) (fma.f64 (*.f64 (*.f64 A A) (*.f64 (*.f64 C C) (*.f64 F (*.f64 B B)))) (sqrt.f64 (/.f64 1 (pow.f64 (+.f64 (*.f64 A A) (*.f64 B B)) 3))) (fma.f64 2 (*.f64 (*.f64 A (*.f64 C (*.f64 F (*.f64 B B)))) (sqrt.f64 (/.f64 1 (+.f64 (*.f64 A A) (*.f64 B B))))) (*.f64 8 (*.f64 (*.f64 A A) (*.f64 C F)))))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
Compiler

Compiled 42462 to 23551 computations (44.5% saved)

localize35.0ms (0%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.5b
(fma.f64 A (*.f64 C -4) (*.f64 B B))
1.4b
(+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))
18.4b
(/.f64 (neg.f64 (*.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) 2)) (*.f64 (sqrt.f64 F) (sqrt.f64 (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
18.5b
(sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) 2))

series6.0s (7.3%)

Counts
2 → 56
Calls

2 calls:

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

rewrite120.0ms (0.1%)

Algorithm
batch-egg-rewrite
Rules
401×log1p-udef_binary64
237×add-sqr-sqrt_binary64
227×log1p-expm1-u_binary64
227×expm1-log1p-u_binary64
222×add-cbrt-cube_binary64
Counts
2 → 37
Calls

2 calls:

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

Useful iterations: 0 (0.0ms)

IterNodesCost
02262
148258
2455558
3527358
000
100

simplify424.0ms (0.5%)

Algorithm
egg-herbie
Rules
507×*-commutative_binary64
257×+-commutative_binary64
249×fma-def_binary64
235×associate-*r*_binary64
232×associate-+r+_binary64
Counts
93 → 83
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0110817937
1414215285
2503615285

prune1.2s (1.4%)

Pruning

39 alts after pruning (38 fresh and 1 done)

PrunedKeptTotal
New2398247
Fresh23032
Picked101
Done011
Total24239281
Error
22.2b
Counts
281 → 39
Alt Table
StatusErrorProgram
50.2b
(*.f64 (/.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) 2)) 1) (/.f64 (neg.f64 (sqrt.f64 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))) (fma.f64 A (*.f64 C -4) (*.f64 B B))))
50.3b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (fma.f64 (sqrt.f64 (hypot.f64 B (-.f64 A C))) (sqrt.f64 (hypot.f64 B (-.f64 A C))) (+.f64 A C))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
63.5b
(/.f64 (neg.f64 (-.f64 (fma.f64 2 (*.f64 (sqrt.f64 (*.f64 (pow.f64 C 3) F)) (sqrt.f64 2)) (*.f64 1/4 (*.f64 (sqrt.f64 (/.f64 F C)) (*.f64 (sqrt.f64 2) (*.f64 B B))))) (*.f64 (*.f64 A (sqrt.f64 2)) (sqrt.f64 (*.f64 C F))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
56.6b
(/.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)))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
50.3b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (fma.f64 (pow.f64 (cbrt.f64 (hypot.f64 B (-.f64 A C))) 2) (cbrt.f64 (hypot.f64 B (-.f64 A C))) (+.f64 A C))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
57.6b
(/.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)))
60.8b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (neg.f64 B)))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
55.9b
(/.f64 (neg.f64 (*.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) 2)) (sqrt.f64 (*.f64 F (-.f64 (*.f64 2 A) (*.f64 1/2 (/.f64 (*.f64 B B) C))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
62.8b
(/.f64 (neg.f64 (*.f64 -2 (*.f64 (*.f64 A (sqrt.f64 2)) (sqrt.f64 (*.f64 C F))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
59.4b
(/.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)))
49.3b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (fma.f64 (pow.f64 (cbrt.f64 A) 2) (cbrt.f64 A) (+.f64 C (hypot.f64 B (-.f64 A C))))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
57.0b
(/.f64 (neg.f64 (*.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) 2)) (*.f64 (sqrt.f64 F) (sqrt.f64 (-.f64 (*.f64 2 C) (*.f64 1/2 (/.f64 (*.f64 B B) A))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
63.7b
(-.f64 (*.f64 1/2 (*.f64 (/.f64 (sqrt.f64 2) A) (sqrt.f64 (*.f64 C F)))) (fma.f64 1/16 (*.f64 (/.f64 (*.f64 (sqrt.f64 2) (*.f64 B B)) A) (sqrt.f64 (/.f64 F (pow.f64 C 3)))) (*.f64 1/4 (*.f64 (sqrt.f64 (/.f64 F C)) (sqrt.f64 2)))))
55.5b
(/.f64 (neg.f64 (*.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) 2)) (*.f64 (sqrt.f64 (*.f64 A F)) (sqrt.f64 2)))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
58.6b
(/.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)))
56.1b
(/.f64 (neg.f64 (*.f64 A (*.f64 (sqrt.f64 2) (sqrt.f64 (*.f64 -8 (*.f64 C F)))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
47.3b
(/.f64 (neg.f64 (*.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) 2)) (*.f64 (sqrt.f64 F) (sqrt.f64 (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C))))))) (pow.f64 (sqrt.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B))) 2))
54.4b
(neg.f64 (*.f64 (/.f64 (sqrt.f64 2) B) (sqrt.f64 (*.f64 F (+.f64 A (hypot.f64 B A))))))
61.6b
(sqrt.f64 (/.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)))))) (pow.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) 2)))
62.4b
(*.f64 -1/2 (*.f64 (sqrt.f64 (/.f64 F C)) (sqrt.f64 2)))
50.1b
(/.f64 (neg.f64 (*.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) 2)) (*.f64 (sqrt.f64 F) (sqrt.f64 (+.f64 A (sqrt.f64 (+.f64 (*.f64 A A) (*.f64 B B)))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
54.2b
(neg.f64 (*.f64 (sqrt.f64 (*.f64 (+.f64 C (hypot.f64 B C)) F)) (/.f64 (sqrt.f64 2) B)))
61.1b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 -2 (*.f64 F (pow.f64 B 3))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
52.3b
(*.f64 (/.f64 -1 (sqrt.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)))) (/.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))))))) (sqrt.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)))))
59.5b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 2 (*.f64 F (pow.f64 B 3))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
60.8b
(neg.f64 (*.f64 (sqrt.f64 2) (sqrt.f64 (*.f64 -1/4 (/.f64 F C)))))
56.6b
(/.f64 (neg.f64 (*.f64 (neg.f64 (*.f64 (sqrt.f64 2) B)) (*.f64 (sqrt.f64 F) (sqrt.f64 (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
57.4b
(/.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)))
53.1b
(/.f64 (neg.f64 (*.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) 2)) (sqrt.f64 (*.f64 F (+.f64 C (sqrt.f64 (+.f64 (pow.f64 C 2) (pow.f64 B 2)))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
53.5b
(neg.f64 (*.f64 (sqrt.f64 (*.f64 -1/2 (/.f64 F C))) (sqrt.f64 2)))
63.1b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (neg.f64 A)))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
47.6b
(/.f64 (neg.f64 (*.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) 2)) (*.f64 (sqrt.f64 F) (sqrt.f64 (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C))))))) (*.f64 (pow.f64 (cbrt.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B))) 2) (cbrt.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)))))
54.5b
(/.f64 (neg.f64 (sqrt.f64 (-.f64 (fma.f64 (*.f64 (*.f64 C C) (*.f64 F (*.f64 B B))) (sqrt.f64 (/.f64 1 (+.f64 (*.f64 A A) (*.f64 B B)))) (fma.f64 2 (*.f64 C (*.f64 F (*.f64 B B))) (fma.f64 2 (*.f64 (*.f64 F (*.f64 B B)) (sqrt.f64 (+.f64 (*.f64 A A) (*.f64 B B)))) (fma.f64 2 (*.f64 A (*.f64 F (*.f64 B B))) (*.f64 8 (*.f64 (*.f64 (*.f64 A A) (*.f64 (*.f64 C C) F)) (sqrt.f64 (/.f64 1 (+.f64 (*.f64 A A) (*.f64 B B)))))))))) (fma.f64 8 (*.f64 A (*.f64 (*.f64 C C) F)) (fma.f64 8 (*.f64 (*.f64 A (*.f64 C F)) (sqrt.f64 (+.f64 (*.f64 A A) (*.f64 B B)))) (fma.f64 (*.f64 (*.f64 A A) (*.f64 (*.f64 C C) (*.f64 F (*.f64 B B)))) (sqrt.f64 (/.f64 1 (pow.f64 (+.f64 (*.f64 A A) (*.f64 B B)) 3))) (fma.f64 2 (*.f64 (*.f64 A (*.f64 C (*.f64 F (*.f64 B B)))) (sqrt.f64 (/.f64 1 (+.f64 (*.f64 A A) (*.f64 B B))))) (*.f64 8 (*.f64 (*.f64 A A) (*.f64 C F)))))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
51.4b
(/.f64 (neg.f64 (*.f64 (cbrt.f64 (pow.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) 2) 3/2)) (*.f64 (sqrt.f64 F) (sqrt.f64 (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
56.9b
(/.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.5b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 -16 (*.f64 (pow.f64 A 2) (*.f64 C F))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
56.4b
(neg.f64 (*.f64 (sqrt.f64 2) (sqrt.f64 (*.f64 -1/2 (/.f64 F A)))))
60.1b
(/.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)))
60.2b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (-.f64 (+.f64 A (fma.f64 1/2 (/.f64 (*.f64 A A) B) (fma.f64 1/2 (/.f64 (*.f64 C C) B) (+.f64 C B)))) (/.f64 (*.f64 A C) B))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
Compiler

Compiled 33076 to 19445 computations (41.2% saved)

regimes3.7s (4.5%)

Accuracy

Total 22.0b remaining (53.2%)

Threshold costs 0b (0%)

Counts
209 → 4
Compiler

Compiled 55800 to 35247 computations (36.8% saved)

bsearch288.0ms (0.4%)

Steps
ItersRangePoint
3
5.253076716964708e+48
7.068835606170797e+48
6.316120380681736e+48
10
5.627970350040218e-126
2.7553854351036366e-116
2.0318267948283777e-124
8
-8.927548187230698e-34
-1.3313429753760538e-37
-5.535441828491868e-34
Compiler

Compiled 5 to 4 computations (20% saved)

simplify7.0ms (0%)

Algorithm
egg-herbie
Rules
27×*-commutative_binary64
22×+-commutative_binary64
18×sub-neg_binary64
17×neg-sub0_binary64
17×neg-mul-1_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
057195
1104195
2152195
3182195
4198195
5201195
6200195

end713.0ms (0.9%)

Compiler

Compiled 1763 to 1080 computations (38.7% saved)

Profiling

Loading profile data...