Details

Time bar (total: 2.5min)

analyze3.3s (2.2%)

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)

sample143.0ms (0.1%)

Algorithm
intervals
Results
35.0ms192×body128valid
17.0ms24×body1024valid
15.0ms22×body1024nan
13.0ms67×body128nan
12.0ms14×body2048nan
10.0ms12×body2048valid
9.0ms19×body512valid
6.0ms11×body512nan
3.0msbody256valid
3.0msbody256nan
1.0msbody4096valid
Compiler

Compiled 93 to 69 computations (25.8% saved)

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

prune6.0ms (0%)

Pruning

3 alts after pruning (3 fresh and 0 done)

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

localize18.0ms (0%)

Local error

Found 4 expressions with local error:

NewErrorProgram
1.3b
(+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))
5.4b
(*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C))))))
15.9b
(sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))))
21.2b
(/.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)))

rewrite41.0ms (0%)

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

4 calls:

11.0ms
(*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C))))))
8.0ms
(sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))))
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)))
5.0ms
(+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))

series20.1s (13.4%)

Counts
4 → 124
Calls

4 calls:

11.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)))))))
8.8s
(/.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)))
219.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))))))
48.0ms
(+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))

simplify478.0ms (0.3%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
0244845159
1505245159

prune1.0s (0.7%)

Pruning

24 alts after pruning (24 fresh and 0 done)

PrunedKeptTotal
New39324417
Fresh101
Picked101
Done000
Total39524419
Error
24.1b
Counts
419 → 24
Alt Table
StatusErrorProgram
47.3b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (*.f64 (sqrt.f64 (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))) (sqrt.f64 (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
53.6b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (*.f64 2 A)))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
54.3b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (-.f64 (*.f64 2 A) (*.f64 1/2 (/.f64 (pow.f64 B 2) C)))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
47.2b
(/.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)))))))))
48.6b
(*.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)))))
60.7b
(/.f64 (neg.f64 (-.f64 (fma.f64 (sqrt.f64 (*.f64 F (+.f64 A (sqrt.f64 (+.f64 (*.f64 A A) (*.f64 B B)))))) (*.f64 (sqrt.f64 2) B) (*.f64 1/2 (*.f64 (*.f64 C (*.f64 (sqrt.f64 2) B)) (sqrt.f64 (/.f64 F (+.f64 A (sqrt.f64 (+.f64 (*.f64 A A) (*.f64 B B))))))))) (fma.f64 1/2 (*.f64 (*.f64 A (*.f64 C (*.f64 (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)))))))) (*.f64 2 (+.f64 (*.f64 (/.f64 (*.f64 A (*.f64 C (sqrt.f64 2))) B) (sqrt.f64 (/.f64 (*.f64 F (+.f64 (*.f64 A A) (*.f64 B B))) (+.f64 A (sqrt.f64 (+.f64 (*.f64 A A) (*.f64 B B))))))) (*.f64 (/.f64 (*.f64 (*.f64 A A) (*.f64 C (sqrt.f64 2))) B) (sqrt.f64 (/.f64 F (+.f64 A (sqrt.f64 (+.f64 (*.f64 A A) (*.f64 B B)))))))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
59.0b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (-.f64 (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)) (fma.f64 2 C (*.f64 1/2 (/.f64 (*.f64 A (*.f64 B B)) (*.f64 C C)))))) (*.f64 1/8 (/.f64 (pow.f64 B 4) (pow.f64 C 3))))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
55.3b
(/.f64 (neg.f64 (*.f64 A (*.f64 (sqrt.f64 2) (sqrt.f64 (*.f64 -8 (*.f64 C F)))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
60.8b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (-.f64 (+.f64 A (+.f64 C (/.f64 (*.f64 A C) B))) (fma.f64 1/2 (/.f64 (*.f64 A A) B) (fma.f64 1/2 (/.f64 (*.f64 C C) B) 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)))
55.7b
(/.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)))
57.5b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 -16 (*.f64 A (*.f64 (pow.f64 C 2) F))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
54.8b
(neg.f64 (*.f64 (sqrt.f64 2) (sqrt.f64 (*.f64 -1/2 (/.f64 F A)))))
59.2b
(neg.f64 (*.f64 (sqrt.f64 (*.f64 F (+.f64 A (sqrt.f64 (+.f64 (*.f64 A A) (*.f64 B B)))))) (/.f64 (sqrt.f64 2) B)))
60.4b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 2 (*.f64 F (pow.f64 B 3))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
49.8b
(/.f64 (sqrt.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B))) (/.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (neg.f64 (sqrt.f64 (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))))))
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)))
47.3b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 (*.f64 (cbrt.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B))) (cbrt.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)))) (*.f64 (cbrt.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)))
47.2b
(*.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))))
61.2b
(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))))))
60.3b
(/.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)))
56.7b
(neg.f64 (*.f64 (sqrt.f64 (*.f64 -1/2 (/.f64 F C))) (sqrt.f64 2)))
55.1b
(/.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)))
58.1b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 -16 (*.f64 (pow.f64 A 2) (*.f64 C F))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
Compiler

Compiled 61778 to 33818 computations (45.3% saved)

localize21.0ms (0%)

Local error

Found 4 expressions with local error:

NewErrorProgram
1.3b
(+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))
5.4b
(*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C))))))
15.9b
(sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))))
20.9b
(/.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))))))))

rewrite13.0ms (0%)

Algorithm
rewrite-expression-head
Rules
12×times-frac_binary64
10×*-un-lft-identity_binary64
10×add-sqr-sqrt_binary64
10×add-cube-cbrt_binary64
associate-*r/_binary64
Counts
1 → 35
Calls

1 calls:

10.0ms
(/.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))))))))

series1.8min (72.6%)

Counts
1 → 20
Calls

1 calls:

1.8min
(/.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))))))))

simplify245.0ms (0.2%)

Algorithm
egg-herbie
Rules
996×fma-def_binary64
460×*-commutative_binary64
229×associate-*r*_binary64
189×+-commutative_binary64
185×distribute-rgt-in_binary64
Counts
55 → 105
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0103716452
1344213557
2508013557

prune1.0s (0.7%)

Pruning

30 alts after pruning (30 fresh and 0 done)

PrunedKeptTotal
New37514389
Fresh71623
Picked101
Done000
Total38330413
Error
19.9b
Counts
413 → 30
Alt Table
StatusErrorProgram
47.3b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (*.f64 (sqrt.f64 (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))) (sqrt.f64 (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
56.9b
(/.f64 -1 (fma.f64 1/4 (/.f64 (*.f64 B B) (*.f64 C (*.f64 F (*.f64 (sqrt.f64 2) (sqrt.f64 (*.f64 -2 (/.f64 A F))))))) (/.f64 (sqrt.f64 (*.f64 -2 (/.f64 A F))) (sqrt.f64 2))))
48.6b
(*.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)))))
60.7b
(/.f64 (neg.f64 (-.f64 (fma.f64 (sqrt.f64 (*.f64 F (+.f64 A (sqrt.f64 (+.f64 (*.f64 A A) (*.f64 B B)))))) (*.f64 (sqrt.f64 2) B) (*.f64 1/2 (*.f64 (*.f64 C (*.f64 (sqrt.f64 2) B)) (sqrt.f64 (/.f64 F (+.f64 A (sqrt.f64 (+.f64 (*.f64 A A) (*.f64 B B))))))))) (fma.f64 1/2 (*.f64 (*.f64 A (*.f64 C (*.f64 (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)))))))) (*.f64 2 (+.f64 (*.f64 (/.f64 (*.f64 A (*.f64 C (sqrt.f64 2))) B) (sqrt.f64 (/.f64 (*.f64 F (+.f64 (*.f64 A A) (*.f64 B B))) (+.f64 A (sqrt.f64 (+.f64 (*.f64 A A) (*.f64 B B))))))) (*.f64 (/.f64 (*.f64 (*.f64 A A) (*.f64 C (sqrt.f64 2))) B) (sqrt.f64 (/.f64 F (+.f64 A (sqrt.f64 (+.f64 (*.f64 A A) (*.f64 B B)))))))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
57.5b
(/.f64 -1 (/.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (sqrt.f64 (*.f64 -16 (*.f64 A (*.f64 (*.f64 C C) F))))))
59.0b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (-.f64 (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)) (fma.f64 2 C (*.f64 1/2 (/.f64 (*.f64 A (*.f64 B B)) (*.f64 C C)))))) (*.f64 1/8 (/.f64 (pow.f64 B 4) (pow.f64 C 3))))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
55.1b
(/.f64 -1 (/.f64 (sqrt.f64 (*.f64 -2 (/.f64 A F))) (sqrt.f64 2)))
55.3b
(/.f64 (neg.f64 (*.f64 A (*.f64 (sqrt.f64 2) (sqrt.f64 (*.f64 -8 (*.f64 C F)))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
60.8b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (-.f64 (+.f64 A (+.f64 C (/.f64 (*.f64 A C) B))) (fma.f64 1/2 (/.f64 (*.f64 A A) B) (fma.f64 1/2 (/.f64 (*.f64 C C) B) B)))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
47.2b
(/.f64 -1 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (/.f64 1 (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 -1 (fma.f64 1/4 (/.f64 (*.f64 B B) (*.f64 A (*.f64 F (*.f64 (sqrt.f64 2) (sqrt.f64 (*.f64 -2 (/.f64 C F))))))) (/.f64 (sqrt.f64 (*.f64 -2 (/.f64 C F))) (sqrt.f64 2))))
60.3b
(/.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 -1 (/.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (sqrt.f64 (*.f64 -2 (*.f64 F (pow.f64 B 3))))))
56.7b
(neg.f64 (*.f64 (sqrt.f64 (*.f64 -1/2 (/.f64 F C))) (sqrt.f64 2)))
55.1b
(/.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)))
53.7b
(/.f64 -1 (*.f64 (sqrt.f64 (/.f64 1 (*.f64 F (+.f64 C (hypot.f64 C B))))) (/.f64 B (sqrt.f64 2))))
54.7b
(/.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 2 C)))))))
54.8b
(neg.f64 (*.f64 (sqrt.f64 2) (sqrt.f64 (*.f64 -1/2 (/.f64 F A)))))
59.2b
(neg.f64 (*.f64 (sqrt.f64 (*.f64 F (+.f64 A (sqrt.f64 (+.f64 (*.f64 A A) (*.f64 B B)))))) (/.f64 (sqrt.f64 2) B)))
60.4b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 2 (*.f64 F (pow.f64 B 3))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
59.0b
(neg.f64 (*.f64 (sqrt.f64 (*.f64 (+.f64 (sqrt.f64 (+.f64 (*.f64 B B) (*.f64 C C))) C) F)) (/.f64 (sqrt.f64 2) B)))
53.6b
(/.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 2 A)))))))
61.4b
(/.f64 -1 (/.f64 (sqrt.f64 (*.f64 -4 (/.f64 (*.f64 C A) (*.f64 F (+.f64 A (+.f64 C (sqrt.f64 (fma.f64 A A (*.f64 C (-.f64 C (*.f64 2 A))))))))))) (sqrt.f64 2)))
47.2b
(*.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))))
61.2b
(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.4b
(/.f64 -1 (*.f64 (/.f64 B (sqrt.f64 2)) (sqrt.f64 (/.f64 1 (*.f64 F (+.f64 A (hypot.f64 B A)))))))
56.9b
(/.f64 -1 (/.f64 (sqrt.f64 (*.f64 -2 (/.f64 C F))) (sqrt.f64 2)))
58.1b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 -16 (*.f64 (pow.f64 A 2) (*.f64 C F))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
55.4b
(/.f64 -1 (/.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 (sqrt.f64 (*.f64 -8 (*.f64 A F))) (*.f64 C (sqrt.f64 2)))))
54.3b
(/.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 2 A) (*.f64 1/2 (/.f64 (*.f64 B B) C)))))))))
Compiler

Compiled 54762 to 31103 computations (43.2% saved)

localize29.0ms (0%)

Local error

Found 4 expressions with local error:

NewErrorProgram
1.3b
(+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))
5.4b
(*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C))))))
15.9b
(sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))))
20.5b
(*.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))))

rewrite15.0ms (0%)

Algorithm
rewrite-expression-head
Rules
18×add-sqr-sqrt_binary64
13×associate-*r*_binary64
13×associate-*r/_binary64
12×associate-*l*_binary64
12×*-un-lft-identity_binary64
Counts
1 → 52
Calls

1 calls:

9.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)))))))) (/.f64 1 (fma.f64 A (*.f64 C -4) (*.f64 B B))))

series7.3s (4.9%)

Counts
1 → 20
Calls

1 calls:

7.3s
(*.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))))

simplify436.0ms (0.3%)

Algorithm
egg-herbie
Rules
541×*-commutative_binary64
264×+-commutative_binary64
250×fma-def_binary64
243×associate-*r*_binary64
232×associate-+r+_binary64
Counts
72 → 140
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0121120662
1443418480
2495818480
3500018480
4493718480

prune933.0ms (0.6%)

Pruning

30 alts after pruning (29 fresh and 1 done)

PrunedKeptTotal
New7035708
Fresh52429
Picked011
Done000
Total70830738
Error
19.9b
Counts
738 → 30
Alt Table
StatusErrorProgram
47.3b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (*.f64 (sqrt.f64 (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))) (sqrt.f64 (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
56.9b
(/.f64 -1 (fma.f64 1/4 (/.f64 (*.f64 B B) (*.f64 C (*.f64 F (*.f64 (sqrt.f64 2) (sqrt.f64 (*.f64 -2 (/.f64 A F))))))) (/.f64 (sqrt.f64 (*.f64 -2 (/.f64 A F))) (sqrt.f64 2))))
48.6b
(*.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)))))
60.7b
(/.f64 (neg.f64 (-.f64 (fma.f64 (sqrt.f64 (*.f64 F (+.f64 A (sqrt.f64 (+.f64 (*.f64 A A) (*.f64 B B)))))) (*.f64 (sqrt.f64 2) B) (*.f64 1/2 (*.f64 (*.f64 C (*.f64 (sqrt.f64 2) B)) (sqrt.f64 (/.f64 F (+.f64 A (sqrt.f64 (+.f64 (*.f64 A A) (*.f64 B B))))))))) (fma.f64 1/2 (*.f64 (*.f64 A (*.f64 C (*.f64 (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)))))))) (*.f64 2 (+.f64 (*.f64 (/.f64 (*.f64 A (*.f64 C (sqrt.f64 2))) B) (sqrt.f64 (/.f64 (*.f64 F (+.f64 (*.f64 A A) (*.f64 B B))) (+.f64 A (sqrt.f64 (+.f64 (*.f64 A A) (*.f64 B B))))))) (*.f64 (/.f64 (*.f64 (*.f64 A A) (*.f64 C (sqrt.f64 2))) B) (sqrt.f64 (/.f64 F (+.f64 A (sqrt.f64 (+.f64 (*.f64 A A) (*.f64 B B)))))))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
59.0b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (-.f64 (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)) (fma.f64 2 C (*.f64 1/2 (/.f64 (*.f64 A (*.f64 B B)) (*.f64 C C)))))) (*.f64 1/8 (/.f64 (pow.f64 B 4) (pow.f64 C 3))))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
55.1b
(/.f64 -1 (/.f64 (sqrt.f64 (*.f64 -2 (/.f64 A F))) (sqrt.f64 2)))
55.3b
(/.f64 (neg.f64 (*.f64 A (*.f64 (sqrt.f64 2) (sqrt.f64 (*.f64 -8 (*.f64 C F)))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
47.2b
(/.f64 -1 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (/.f64 1 (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 -1 (fma.f64 1/4 (/.f64 (*.f64 B B) (*.f64 A (*.f64 F (*.f64 (sqrt.f64 2) (sqrt.f64 (*.f64 -2 (/.f64 C F))))))) (/.f64 (sqrt.f64 (*.f64 -2 (/.f64 C F))) (sqrt.f64 2))))
60.3b
(/.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 -1 (/.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (sqrt.f64 (*.f64 -2 (*.f64 F (pow.f64 B 3))))))
56.7b
(neg.f64 (*.f64 (sqrt.f64 (*.f64 -1/2 (/.f64 F C))) (sqrt.f64 2)))
55.4b
(*.f64 (neg.f64 (*.f64 (sqrt.f64 (*.f64 -8 (*.f64 A F))) (*.f64 C (sqrt.f64 2)))) (/.f64 1 (fma.f64 A (*.f64 C -4) (*.f64 B B))))
54.3b
(neg.f64 (*.f64 (/.f64 (sqrt.f64 2) B) (sqrt.f64 (*.f64 F (+.f64 A (hypot.f64 B A))))))
58.1b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 -16 (*.f64 (pow.f64 A 2) (*.f64 C F))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
57.5b
(*.f64 (neg.f64 (sqrt.f64 (*.f64 -16 (*.f64 A (*.f64 (pow.f64 C 2) F))))) (/.f64 1 (fma.f64 A (*.f64 C -4) (*.f64 B B))))
53.6b
(neg.f64 (*.f64 (sqrt.f64 (*.f64 (+.f64 C (hypot.f64 B C)) F)) (/.f64 (sqrt.f64 2) B)))
54.8b
(neg.f64 (*.f64 (sqrt.f64 2) (sqrt.f64 (*.f64 -1/2 (/.f64 F A)))))
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)))
60.8b
(*.f64 (neg.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (-.f64 (+.f64 A (+.f64 C (/.f64 (*.f64 A C) B))) (fma.f64 1/2 (/.f64 (*.f64 A A) B) (fma.f64 1/2 (/.f64 (*.f64 C C) B) B)))))))) (/.f64 1 (fma.f64 A (*.f64 C -4) (*.f64 B B))))
60.4b
(/.f64 (neg.f64 (sqrt.f64 (*.f64 2 (*.f64 F (pow.f64 B 3))))) (fma.f64 A (*.f64 C -4) (*.f64 B B)))
53.6b
(/.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 2 A)))))))
61.4b
(/.f64 -1 (/.f64 (sqrt.f64 (*.f64 -4 (/.f64 (*.f64 C A) (*.f64 F (+.f64 A (+.f64 C (sqrt.f64 (fma.f64 A A (*.f64 C (-.f64 C (*.f64 2 A))))))))))) (sqrt.f64 2)))
47.2b
(*.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))))
61.2b
(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.4b
(/.f64 -1 (*.f64 (/.f64 B (sqrt.f64 2)) (sqrt.f64 (/.f64 1 (*.f64 F (+.f64 A (hypot.f64 B A)))))))
56.9b
(/.f64 -1 (/.f64 (sqrt.f64 (*.f64 -2 (/.f64 C F))) (sqrt.f64 2)))
55.1b
(/.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.4b
(/.f64 -1 (/.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 (sqrt.f64 (*.f64 -8 (*.f64 A F))) (*.f64 C (sqrt.f64 2)))))
54.3b
(/.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 2 A) (*.f64 1/2 (/.f64 (*.f64 B B) C)))))))))
Compiler

Compiled 61058 to 34482 computations (43.5% saved)

localize20.0ms (0%)

Local error

Found 4 expressions with local error:

NewErrorProgram
1.3b
(+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))
5.4b
(*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C))))))
15.9b
(sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))))
21.0b
(*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (/.f64 1 (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)))))))))

rewrite21.0ms (0%)

Algorithm
rewrite-expression-head
Rules
18×associate-*r*_binary64
17×add-sqr-sqrt_binary64
14×times-frac_binary64
11×*-un-lft-identity_binary64
10×add-cube-cbrt_binary64
Counts
1 → 43
Calls

1 calls:

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

series5.8s (3.9%)

Profiling

Loading profile data...