Time bar (total: 1.0min)
| 1× | search |
| True | Other | False | Iter |
|---|---|---|---|
| 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 |
| 3.1% | 96.7% | 0.2% | 7 |
| 9.4% | 88.9% | 1.8% | 8 |
| 9.4% | 85% | 5.7% | 9 |
| 11.3% | 82.1% | 6.6% | 10 |
| 15.8% | 75% | 9.3% | 11 |
| 20.9% | 66.8% | 12.4% | 12 |
| 20.9% | 62.4% | 16.7% | 13 |
| 22.2% | 60.1% | 17.8% | 14 |
Compiled 45 to 33 computations (26.7% saved)
| 2.3s | 5743× | body | 128 | valid |
| 1.4s | 670× | body | 2048 | valid |
| 1.2s | 570× | body | 2048 | invalid |
| 1.2s | 875× | body | 1024 | invalid |
| 1.2s | 3023× | body | 128 | invalid |
| 1.2s | 891× | body | 1024 | valid |
| 667.0ms | 602× | body | 512 | invalid |
| 599.0ms | 589× | body | 512 | valid |
| 251.0ms | 361× | body | 256 | valid |
| 250.0ms | 350× | body | 256 | invalid |
| 4.0ms | 2× | body | 4096 | valid |
Compiled 134 to 98 computations (26.9% saved)
| 1× | egg-herbie |
| 560× | associate-*l*_binary64 |
| 528× | associate-*r*_binary64 |
| 455× | distribute-rgt-in_binary64 |
| 450× | fma-def_binary64 |
| 449× | distribute-lft-in_binary64 |
Useful iterations: 1 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 23 | 61 |
| 1 | 66 | 49 |
| 2 | 202 | 49 |
| 3 | 721 | 49 |
| 4 | 2973 | 49 |
| 5 | 4968 | 49 |
| 6 | 4966 | 49 |
| 7 | 4969 | 49 |
| 8 | 4939 | 49 |
3 alts after pruning (3 fresh and 0 done)
| Pruned | Kept | Total | |
|---|---|---|---|
| New | 0 | 2 | 2 |
| Fresh | 0 | 1 | 1 |
| Picked | 0 | 0 | 0 |
| Done | 0 | 0 | 0 |
| Total | 0 | 3 | 3 |
| Status | Error | Program |
| 48.3b | (/.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))) | |
| ▶ | 45.0b | (/.f64 (neg.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B))) |
Compiled 239 to 156 computations (34.7% saved)
Found 4 expressions with local error:
| New | Error | Program |
| ✓ | 2.2b | (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C))) |
| ✓ | 5.1b | (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))) |
| ✓ | 16.9b | (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C))))))) |
| ✓ | 20.8b | (/.f64 (neg.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B))) |
4 calls:
| 15.9s | (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))))))) |
| 14.2s | (/.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))) |
| 380.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)))))) |
| 97.0ms | (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C))) |
| 1× | rewrite-expression-head |
| 38× | *-un-lft-identity_binary64 |
| 36× | times-frac_binary64 |
| 31× | add-sqr-sqrt_binary64 |
| 31× | add-cube-cbrt_binary64 |
| 23× | pow1_binary64 |
4 calls:
| 18.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)))))) |
| 16.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))))))) |
| 13.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))) |
| 10.0ms | (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C))) |
| 1× | egg-herbie |
| 583× | fma-def_binary64 |
| 274× | associate-/l*_binary64 |
| 213× | associate-*l/_binary64 |
| 183× | associate-/r*_binary64 |
| 149× | times-frac_binary64 |
Useful iterations: 0 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 2448 | 45159 |
| 1 | 5052 | 45159 |
26 alts after pruning (26 fresh and 0 done)
| Pruned | Kept | Total | |
|---|---|---|---|
| New | 335 | 26 | 361 |
| Fresh | 1 | 0 | 1 |
| Picked | 1 | 0 | 1 |
| Done | 0 | 0 | 0 |
| Total | 337 | 26 | 363 |
| Status | Error | Program |
| 45.1b | (/.f64 (neg.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (*.f64 (*.f64 (cbrt.f64 (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))) (cbrt.f64 (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C))))) (cbrt.f64 (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B))) | |
| 55.8b | (/.f64 (neg.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (-.f64 (*.f64 2 A) (*.f64 1/2 (/.f64 (pow.f64 B 2) C)))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B))) | |
| 57.5b | (/.f64 (neg.f64 (fma.f64 (sqrt.f64 (*.f64 -8 (*.f64 A F))) (*.f64 C (sqrt.f64 2)) (/.f64 (*.f64 F (*.f64 (sqrt.f64 2) (*.f64 B B))) (sqrt.f64 (*.f64 -8 (*.f64 A F)))))) (fma.f64 A (*.f64 C -4) (*.f64 B B))) | |
| 61.7b | (/.f64 (neg.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (log.f64 (*.f64 (exp.f64 (+.f64 A C)) (exp.f64 (hypot.f64 B (-.f64 A C)))))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B))) | |
| 55.0b | (/.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))) | |
| 57.1b | (/.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))) | |
| 59.0b | (/.f64 (neg.f64 (*.f64 (sqrt.f64 (*.f64 F (+.f64 A (sqrt.f64 (+.f64 (pow.f64 A 2) (pow.f64 B 2)))))) (*.f64 (sqrt.f64 2) B))) (fma.f64 A (*.f64 C -4) (*.f64 B B))) | |
| 55.6b | (neg.f64 (*.f64 (sqrt.f64 (*.f64 -1/2 (/.f64 F C))) (sqrt.f64 2))) | |
| 46.2b | (/.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.4b | (/.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))) | |
| 45.1b | (/.f64 (sqrt.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))))) (/.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (neg.f64 (sqrt.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C))))))))))) | |
| 59.9b | (/.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))) | |
| 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))) | |
| 58.3b | (/.f64 (neg.f64 (*.f64 (sqrt.f64 (*.f64 F (+.f64 C (sqrt.f64 (+.f64 (pow.f64 C 2) (pow.f64 B 2)))))) (*.f64 (sqrt.f64 2) B))) (fma.f64 A (*.f64 C -4) (*.f64 B B))) | |
| 45.3b | (/.f64 (*.f64 (cbrt.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 (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 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (neg.f64 (cbrt.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))))))))))) | |
| 57.2b | (/.f64 (neg.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (-.f64 (+.f64 A C) B)))))) (fma.f64 A (*.f64 C -4) (*.f64 B B))) | |
| 60.7b | (neg.f64 (*.f64 (sqrt.f64 2) (sqrt.f64 (*.f64 -1/4 (/.f64 (*.f64 F (+.f64 A (+.f64 C (sqrt.f64 (-.f64 (+.f64 (*.f64 A A) (*.f64 C C)) (*.f64 2 (*.f64 A C))))))) (*.f64 A C)))))) | |
| 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 | (/.f64 (neg.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (/.f64 (-.f64 (*.f64 (+.f64 A C) (+.f64 A C)) (*.f64 (hypot.f64 B (-.f64 A C)) (hypot.f64 B (-.f64 A C)))) (-.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C))))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B))) | |
| 55.5b | (/.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))) | |
| 54.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)))))) (fma.f64 A (*.f64 C -4) (*.f64 B B))) | |
| ▶ | 44.5b | (*.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))))) |
| 54.2b | (/.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))) | |
| 57.9b | (neg.f64 (*.f64 (sqrt.f64 (*.f64 (+.f64 (sqrt.f64 (+.f64 (*.f64 B B) (*.f64 C C))) C) F)) (/.f64 (sqrt.f64 2) B))) | |
| 59.6b | (/.f64 (neg.f64 (sqrt.f64 (*.f64 -2 (*.f64 F (pow.f64 B 3))))) (fma.f64 A (*.f64 C -4) (*.f64 B B))) | |
| 55.3b | (neg.f64 (*.f64 (sqrt.f64 2) (sqrt.f64 (*.f64 -1/2 (/.f64 F A))))) |
Compiled 61902 to 33892 computations (45.2% saved)
Found 4 expressions with local error:
| New | Error | Program |
| ✓ | 0.5b | (fma.f64 A (*.f64 C -4) (*.f64 B B)) |
| 2.2b | (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C))) | |
| ✓ | 7.4b | (sqrt.f64 (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))) |
| ✓ | 19.2b | (sqrt.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B))) |
3 calls:
| 1.6s | (sqrt.f64 (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))) |
| 45.0ms | (sqrt.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B))) |
| 11.0ms | (fma.f64 A (*.f64 C -4) (*.f64 B B)) |
| 1× | rewrite-expression-head |
| 10× | pow1_binary64 |
| 5× | add-sqr-sqrt_binary64 |
| 4× | associate-*r/_binary64 |
| 4× | *-un-lft-identity_binary64 |
| 4× | sqrt-prod_binary64 |
3 calls:
| 12.0ms | (sqrt.f64 (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))) |
| 2.0ms | (sqrt.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B))) |
| 1.0ms | (fma.f64 A (*.f64 C -4) (*.f64 B B)) |
| 1× | egg-herbie |
| 521× | fma-def_binary64 |
| 457× | associate-*l*_binary64 |
| 213× | associate-/r*_binary64 |
| 195× | *-commutative_binary64 |
| 163× | associate-*r/_binary64 |
Useful iterations: 2 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 525 | 6271 |
| 1 | 1642 | 5185 |
| 2 | 4962 | 5170 |
| 3 | 4981 | 5170 |
31 alts after pruning (31 fresh and 0 done)
| Pruned | Kept | Total | |
|---|---|---|---|
| New | 189 | 11 | 200 |
| Fresh | 5 | 20 | 25 |
| Picked | 1 | 0 | 1 |
| Done | 0 | 0 | 0 |
| Total | 195 | 31 | 226 |
| Status | Error | Program |
| 45.1b | (/.f64 (neg.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (*.f64 (*.f64 (cbrt.f64 (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))) (cbrt.f64 (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C))))) (cbrt.f64 (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B))) | |
| 55.8b | (/.f64 (neg.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (-.f64 (*.f64 2 A) (*.f64 1/2 (/.f64 (pow.f64 B 2) C)))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B))) | |
| 44.6b | (*.f64 -1 (/.f64 (sqrt.f64 (*.f64 2 (*.f64 F (*.f64 (*.f64 (cbrt.f64 (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))) (cbrt.f64 (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C))))) (cbrt.f64 (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))))) (sqrt.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B))))) | |
| 57.5b | (/.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))) | |
| 45.0b | (*.f64 -1 (/.f64 (sqrt.f64 (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))) (exp.f64 (log.f64 (hypot.f64 (sqrt.f64 (*.f64 A (*.f64 C -4))) B))))) | |
| 58.4b | (*.f64 -1 (/.f64 (sqrt.f64 (*.f64 2 (*.f64 F (-.f64 (*.f64 2 C) (*.f64 1/2 (/.f64 (*.f64 B B) A)))))) (sqrt.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B))))) | |
| 55.5b | (/.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))) | |
| 61.7b | (/.f64 (neg.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (log.f64 (*.f64 (exp.f64 (+.f64 A C)) (exp.f64 (hypot.f64 B (-.f64 A C)))))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B))) | |
| 54.2b | (*.f64 -1 (/.f64 (sqrt.f64 (*.f64 2 (*.f64 F (/.f64 (-.f64 (*.f64 (+.f64 A C) (+.f64 A C)) (*.f64 (hypot.f64 B (-.f64 A C)) (hypot.f64 B (-.f64 A C)))) (-.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C))))))) (sqrt.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B))))) | |
| 57.1b | (/.f64 (neg.f64 (*.f64 (sqrt.f64 (*.f64 -8 (*.f64 A F))) (*.f64 C (sqrt.f64 2)))) (fma.f64 A (*.f64 C -4) (*.f64 B B))) | |
| 57.5b | (*.f64 -1 (/.f64 (*.f64 (sqrt.f64 (*.f64 C F)) (pow.f64 (sqrt.f64 2) 2)) (sqrt.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B))))) | |
| 55.6b | (neg.f64 (*.f64 (sqrt.f64 (*.f64 -1/2 (/.f64 F C))) (sqrt.f64 2))) | |
| 48.2b | (*.f64 -1 (/.f64 (*.f64 (sqrt.f64 (*.f64 (+.f64 C (hypot.f64 B C)) F)) (sqrt.f64 2)) (sqrt.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B))))) | |
| 46.2b | (/.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.4b | (/.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))) | |
| 45.1b | (/.f64 (sqrt.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))))) (/.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (neg.f64 (sqrt.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C))))))))))) | |
| 59.9b | (/.f64 (neg.f64 (sqrt.f64 (-.f64 (fma.f64 2 (*.f64 C (*.f64 F (*.f64 B B))) (fma.f64 2 (*.f64 A (*.f64 F (*.f64 B B))) (*.f64 10 (*.f64 A (*.f64 C (*.f64 F B)))))) (fma.f64 2 (*.f64 F (pow.f64 B 3)) (*.f64 (*.f64 F B) (+.f64 (*.f64 A A) (*.f64 C C))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B))) | |
| 58.3b | (/.f64 (neg.f64 (*.f64 (sqrt.f64 (*.f64 F (+.f64 C (sqrt.f64 (+.f64 (pow.f64 C 2) (pow.f64 B 2)))))) (*.f64 (sqrt.f64 2) B))) (fma.f64 A (*.f64 C -4) (*.f64 B B))) | |
| 45.3b | (/.f64 (*.f64 (cbrt.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 (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 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (neg.f64 (cbrt.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))))))))))) | |
| 57.2b | (/.f64 (neg.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (-.f64 (+.f64 A C) B)))))) (fma.f64 A (*.f64 C -4) (*.f64 B B))) | |
| 60.7b | (neg.f64 (*.f64 (sqrt.f64 2) (sqrt.f64 (*.f64 -1/4 (/.f64 (*.f64 F (+.f64 A (+.f64 C (sqrt.f64 (-.f64 (+.f64 (*.f64 A A) (*.f64 C C)) (*.f64 2 (*.f64 A C))))))) (*.f64 A C)))))) | |
| 51.6b | (*.f64 -1 (/.f64 (sqrt.f64 (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))) B)) | |
| 59.6b | (/.f64 (neg.f64 (sqrt.f64 (*.f64 -2 (*.f64 F (pow.f64 B 3))))) (fma.f64 A (*.f64 C -4) (*.f64 B B))) | |
| ▶ | 43.5b | (*.f64 -1 (/.f64 (sqrt.f64 (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))) (*.f64 (sqrt.f64 (hypot.f64 (sqrt.f64 (*.f64 A (*.f64 C -4))) B)) (sqrt.f64 (hypot.f64 (sqrt.f64 (*.f64 A (*.f64 C -4))) B))))) |
| 44.5b | (*.f64 -1 (/.f64 (sqrt.f64 (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))) (*.f64 (sqrt.f64 (sqrt.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)))) (sqrt.f64 (sqrt.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B))))))) | |
| 55.3b | (neg.f64 (*.f64 (sqrt.f64 2) (sqrt.f64 (*.f64 -1/2 (/.f64 F A))))) | |
| 55.8b | (*.f64 -1 (/.f64 (*.f64 2 (sqrt.f64 (*.f64 A F))) (sqrt.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B))))) | |
| 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))) | |
| 54.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)))))) (fma.f64 A (*.f64 C -4) (*.f64 B B))) | |
| 50.4b | (*.f64 -1 (/.f64 (sqrt.f64 (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))) (-.f64 (*.f64 2 (/.f64 (*.f64 A C) B)) B))) | |
| 54.2b | (/.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))) |
Compiled 15035 to 8640 computations (42.5% saved)
Found 4 expressions with local error:
| New | Error | Program |
| ✓ | 0.3b | (*.f64 (sqrt.f64 (hypot.f64 (sqrt.f64 (*.f64 A (*.f64 C -4))) B)) (sqrt.f64 (hypot.f64 (sqrt.f64 (*.f64 A (*.f64 C -4))) B))) |
| 2.2b | (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C))) | |
| 7.4b | (sqrt.f64 (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))) | |
| ✓ | 12.2b | (sqrt.f64 (*.f64 A (*.f64 C -4))) |
2 calls:
| 117.0ms | (*.f64 (sqrt.f64 (hypot.f64 (sqrt.f64 (*.f64 A (*.f64 C -4))) B)) (sqrt.f64 (hypot.f64 (sqrt.f64 (*.f64 A (*.f64 C -4))) B))) |
| 26.0ms | (sqrt.f64 (*.f64 A (*.f64 C -4))) |
| 1× | rewrite-expression-head |
| 26× | add-sqr-sqrt_binary64 |
| 23× | pow1_binary64 |
| 19× | sqrt-prod_binary64 |
| 11× | sqrt-pow1_binary64 |
| 10× | *-un-lft-identity_binary64 |
2 calls:
| 7.0ms | (*.f64 (sqrt.f64 (hypot.f64 (sqrt.f64 (*.f64 A (*.f64 C -4))) B)) (sqrt.f64 (hypot.f64 (sqrt.f64 (*.f64 A (*.f64 C -4))) B))) |
| 3.0ms | (sqrt.f64 (*.f64 A (*.f64 C -4))) |
| 1× | egg-herbie |
| 767× | fma-def_binary64 |
| 542× | times-frac_binary64 |
| 416× | fma-neg_binary64 |
| 389× | associate-*r*_binary64 |
| 366× | associate-*l*_binary64 |
Useful iterations: 3 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 110 | 1605 |
| 1 | 231 | 1417 |
| 2 | 677 | 1333 |
| 3 | 3847 | 1293 |
| 4 | 4987 | 1293 |
| 5 | 4969 | 1293 |
34 alts after pruning (34 fresh and 0 done)
| Pruned | Kept | Total | |
|---|---|---|---|
| New | 256 | 7 | 263 |
| Fresh | 3 | 27 | 30 |
| Picked | 1 | 0 | 1 |
| Done | 0 | 0 | 0 |
| Total | 260 | 34 | 294 |
| Status | Error | Program |
| 44.6b | (*.f64 -1 (/.f64 (*.f64 (sqrt.f64 2) (sqrt.f64 (*.f64 F (+.f64 A (hypot.f64 B A))))) (*.f64 (sqrt.f64 (hypot.f64 (sqrt.f64 (*.f64 A (*.f64 C -4))) B)) (sqrt.f64 (hypot.f64 (sqrt.f64 (*.f64 A (*.f64 C -4))) B))))) | |
| 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 | (*.f64 -1 (/.f64 (*.f64 2 (sqrt.f64 (*.f64 A F))) (*.f64 (sqrt.f64 (hypot.f64 (sqrt.f64 (*.f64 A (*.f64 C -4))) B)) (sqrt.f64 (hypot.f64 (sqrt.f64 (*.f64 A (*.f64 C -4))) B))))) | |
| 45.1b | (/.f64 (neg.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (*.f64 (*.f64 (cbrt.f64 (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))) (cbrt.f64 (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C))))) (cbrt.f64 (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B))) | |
| 55.8b | (/.f64 (neg.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (-.f64 (*.f64 2 A) (*.f64 1/2 (/.f64 (pow.f64 B 2) C)))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B))) | |
| 44.6b | (*.f64 -1 (/.f64 (sqrt.f64 (*.f64 2 (*.f64 F (*.f64 (*.f64 (cbrt.f64 (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))) (cbrt.f64 (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C))))) (cbrt.f64 (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))))) (sqrt.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B))))) | |
| 57.5b | (/.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))) | |
| 45.0b | (*.f64 -1 (/.f64 (sqrt.f64 (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))) (exp.f64 (log.f64 (hypot.f64 (sqrt.f64 (*.f64 A (*.f64 C -4))) B))))) | |
| 58.4b | (*.f64 -1 (/.f64 (sqrt.f64 (*.f64 2 (*.f64 F (-.f64 (*.f64 2 C) (*.f64 1/2 (/.f64 (*.f64 B B) A)))))) (sqrt.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B))))) | |
| 55.5b | (/.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))) | |
| 61.7b | (/.f64 (neg.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (log.f64 (*.f64 (exp.f64 (+.f64 A C)) (exp.f64 (hypot.f64 B (-.f64 A C)))))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B))) | |
| 57.1b | (/.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))) | |
| 57.5b | (*.f64 -1 (/.f64 (*.f64 (sqrt.f64 (*.f64 C F)) (pow.f64 (sqrt.f64 2) 2)) (sqrt.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B))))) | |
| 56.5b | (*.f64 -1 (/.f64 (sqrt.f64 (*.f64 2 (*.f64 F (neg.f64 B)))) (*.f64 (sqrt.f64 (hypot.f64 (sqrt.f64 (*.f64 A (*.f64 C -4))) B)) (sqrt.f64 (hypot.f64 (sqrt.f64 (*.f64 A (*.f64 C -4))) B))))) | |
| 54.2b | (/.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))) | |
| 46.2b | (/.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.4b | (/.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))) | |
| 45.1b | (/.f64 (sqrt.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))))) (/.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (neg.f64 (sqrt.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C))))))))))) | |
| 59.9b | (/.f64 (neg.f64 (sqrt.f64 (-.f64 (fma.f64 2 (*.f64 C (*.f64 F (*.f64 B B))) (fma.f64 2 (*.f64 A (*.f64 F (*.f64 B B))) (*.f64 10 (*.f64 A (*.f64 C (*.f64 F B)))))) (fma.f64 2 (*.f64 F (pow.f64 B 3)) (*.f64 (*.f64 F B) (+.f64 (*.f64 A A) (*.f64 C C))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B))) | |
| 58.3b | (/.f64 (neg.f64 (*.f64 (sqrt.f64 (*.f64 F (+.f64 C (sqrt.f64 (+.f64 (pow.f64 C 2) (pow.f64 B 2)))))) (*.f64 (sqrt.f64 2) B))) (fma.f64 A (*.f64 C -4) (*.f64 B B))) | |
| 56.1b | (*.f64 -1 (/.f64 (sqrt.f64 (*.f64 2 (*.f64 F (/.f64 (-.f64 (*.f64 (+.f64 A C) (+.f64 A C)) (*.f64 (hypot.f64 B (-.f64 A C)) (hypot.f64 B (-.f64 A C)))) (-.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C))))))) (*.f64 (sqrt.f64 (hypot.f64 (sqrt.f64 (*.f64 A (*.f64 C -4))) B)) (sqrt.f64 (hypot.f64 (sqrt.f64 (*.f64 A (*.f64 C -4))) B))))) | |
| 45.3b | (/.f64 (*.f64 (cbrt.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 (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 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (neg.f64 (cbrt.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))))))))))) | |
| 57.2b | (/.f64 (neg.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (-.f64 (+.f64 A C) B)))))) (fma.f64 A (*.f64 C -4) (*.f64 B B))) | |
| 60.7b | (neg.f64 (*.f64 (sqrt.f64 2) (sqrt.f64 (*.f64 -1/4 (/.f64 (*.f64 F (+.f64 A (+.f64 C (sqrt.f64 (-.f64 (+.f64 (*.f64 A A) (*.f64 C C)) (*.f64 2 (*.f64 A C))))))) (*.f64 A C)))))) | |
| 51.6b | (*.f64 -1 (/.f64 (sqrt.f64 (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))) B)) | |
| 44.5b | (*.f64 -1 (/.f64 (sqrt.f64 (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))) (*.f64 (sqrt.f64 (sqrt.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)))) (sqrt.f64 (sqrt.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B))))))) | |
| 55.3b | (neg.f64 (*.f64 (sqrt.f64 2) (sqrt.f64 (*.f64 -1/2 (/.f64 F A))))) | |
| 58.6b | (*.f64 -1 (/.f64 (*.f64 (sqrt.f64 (*.f64 C F)) (pow.f64 (sqrt.f64 2) 2)) (*.f64 (sqrt.f64 (hypot.f64 (sqrt.f64 (*.f64 A (*.f64 C -4))) B)) (sqrt.f64 (hypot.f64 (sqrt.f64 (*.f64 A (*.f64 C -4))) B))))) | |
| ▶ | 43.8b | (*.f64 -1 (/.f64 (sqrt.f64 (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))) (*.f64 (pow.f64 (sqrt.f64 (cbrt.f64 (hypot.f64 (sqrt.f64 (*.f64 -4 (*.f64 A C))) B))) 4) (cbrt.f64 (hypot.f64 (sqrt.f64 (*.f64 -4 (*.f64 A C))) B))))) |
| 56.8b | (*.f64 -1 (/.f64 (*.f64 (sqrt.f64 (*.f64 A F)) (pow.f64 (sqrt.f64 2) 2)) (*.f64 (sqrt.f64 (hypot.f64 (sqrt.f64 (*.f64 A (*.f64 C -4))) B)) (sqrt.f64 (hypot.f64 (sqrt.f64 (*.f64 A (*.f64 C -4))) B))))) | |
| 55.6b | (neg.f64 (*.f64 (sqrt.f64 (*.f64 -1/2 (/.f64 F C))) (sqrt.f64 2))) | |
| 54.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)))))) (fma.f64 A (*.f64 C -4) (*.f64 B B))) | |
| 50.4b | (*.f64 -1 (/.f64 (sqrt.f64 (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))) (-.f64 (*.f64 2 (/.f64 (*.f64 A C) B)) B))) | |
| 59.6b | (/.f64 (neg.f64 (sqrt.f64 (*.f64 -2 (*.f64 F (pow.f64 B 3))))) (fma.f64 A (*.f64 C -4) (*.f64 B B))) |
Compiled 19692 to 11894 computations (39.6% saved)
Found 4 expressions with local error:
| New | Error | Program |
| ✓ | 0.5b | (pow.f64 (sqrt.f64 (cbrt.f64 (hypot.f64 (sqrt.f64 (*.f64 -4 (*.f64 A C))) B))) 4) |
| 2.2b | (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C))) | |
| 7.4b | (sqrt.f64 (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))) | |
| ✓ | 12.2b | (sqrt.f64 (*.f64 -4 (*.f64 A C))) |
2 calls:
| 562.0ms | (pow.f64 (sqrt.f64 (cbrt.f64 (hypot.f64 (sqrt.f64 (*.f64 -4 (*.f64 A C))) B))) 4) |
| 22.0ms | (sqrt.f64 (*.f64 -4 (*.f64 A C))) |
| 1× | rewrite-expression-head |
| 10× | pow1_binary64 |
| 9× | unpow-prod-down_binary64 |
| 7× | sqrt-prod_binary64 |
| 6× | *-un-lft-identity_binary64 |
| 6× | add-sqr-sqrt_binary64 |
2 calls:
| 3.0ms | (sqrt.f64 (*.f64 -4 (*.f64 A C))) |
| 3.0ms | (pow.f64 (sqrt.f64 (cbrt.f64 (hypot.f64 (sqrt.f64 (*.f64 -4 (*.f64 A C))) B))) 4) |
| 1× | egg-herbie |
| 562× | unswap-sqr_binary64 |
| 539× | associate-*r*_binary64 |
| 489× | associate-*l*_binary64 |
| 402× | fma-neg_binary64 |
| 368× | distribute-rgt-neg-in_binary64 |
Useful iterations: 3 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 125 | 1401 |
| 1 | 264 | 1257 |
| 2 | 664 | 1222 |
| 3 | 2852 | 1207 |
| 4 | 4952 | 1207 |
34 alts after pruning (34 fresh and 0 done)
| Pruned | Kept | Total | |
|---|---|---|---|
| New | 215 | 3 | 218 |
| Fresh | 2 | 31 | 33 |
| Picked | 1 | 0 | 1 |
| Done | 0 | 0 | 0 |
| Total | 218 | 34 | 252 |
| Status | Error | Program |
| 44.6b | (*.f64 -1 (/.f64 (*.f64 (sqrt.f64 2) (sqrt.f64 (*.f64 F (+.f64 A (hypot.f64 B A))))) (*.f64 (sqrt.f64 (hypot.f64 (sqrt.f64 (*.f64 A (*.f64 C -4))) B)) (sqrt.f64 (hypot.f64 (sqrt.f64 (*.f64 A (*.f64 C -4))) B))))) | |
| 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 | (*.f64 -1 (/.f64 (*.f64 2 (sqrt.f64 (*.f64 A F))) (*.f64 (sqrt.f64 (hypot.f64 (sqrt.f64 (*.f64 A (*.f64 C -4))) B)) (sqrt.f64 (hypot.f64 (sqrt.f64 (*.f64 A (*.f64 C -4))) B))))) | |
| 45.1b | (/.f64 (neg.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (*.f64 (*.f64 (cbrt.f64 (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))) (cbrt.f64 (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C))))) (cbrt.f64 (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B))) | |
| 55.8b | (/.f64 (neg.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (-.f64 (*.f64 2 A) (*.f64 1/2 (/.f64 (pow.f64 B 2) C)))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B))) | |
| 44.6b | (*.f64 -1 (/.f64 (sqrt.f64 (*.f64 2 (*.f64 F (*.f64 (*.f64 (cbrt.f64 (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))) (cbrt.f64 (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C))))) (cbrt.f64 (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))))) (sqrt.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B))))) | |
| 57.5b | (/.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))) | |
| 45.0b | (*.f64 -1 (/.f64 (sqrt.f64 (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))) (exp.f64 (log.f64 (hypot.f64 (sqrt.f64 (*.f64 A (*.f64 C -4))) B))))) | |
| 58.4b | (*.f64 -1 (/.f64 (sqrt.f64 (*.f64 2 (*.f64 F (-.f64 (*.f64 2 C) (*.f64 1/2 (/.f64 (*.f64 B B) A)))))) (sqrt.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B))))) | |
| 55.5b | (/.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.7b | (*.f64 -1 (/.f64 (*.f64 (sqrt.f64 (*.f64 C F)) (pow.f64 (sqrt.f64 2) 2)) (*.f64 (pow.f64 (sqrt.f64 (cbrt.f64 (hypot.f64 (sqrt.f64 (*.f64 -4 (*.f64 A C))) B))) 4) (cbrt.f64 (hypot.f64 (sqrt.f64 (*.f64 -4 (*.f64 A C))) B))))) | |
| 61.7b | (/.f64 (neg.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (log.f64 (*.f64 (exp.f64 (+.f64 A C)) (exp.f64 (hypot.f64 B (-.f64 A C)))))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B))) | |
| 57.1b | (/.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.8b | (*.f64 -1 (/.f64 (*.f64 (sqrt.f64 (*.f64 A F)) (pow.f64 (sqrt.f64 2) 2)) (*.f64 (pow.f64 (sqrt.f64 (cbrt.f64 (hypot.f64 (sqrt.f64 (*.f64 -4 (*.f64 A C))) B))) 4) (cbrt.f64 (hypot.f64 (sqrt.f64 (*.f64 -4 (*.f64 A C))) B))))) | |
| 55.6b | (neg.f64 (*.f64 (sqrt.f64 (*.f64 -1/2 (/.f64 F C))) (sqrt.f64 2))) | |
| 43.8b | (*.f64 -1 (/.f64 (sqrt.f64 (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))) (*.f64 (pow.f64 (pow.f64 (sqrt.f64 (cbrt.f64 (hypot.f64 (sqrt.f64 (*.f64 -4 (*.f64 A C))) B))) (sqrt.f64 4)) (sqrt.f64 4)) (cbrt.f64 (hypot.f64 (sqrt.f64 (*.f64 -4 (*.f64 A C))) B))))) | |
| 50.4b | (*.f64 -1 (/.f64 (sqrt.f64 (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))) (-.f64 (*.f64 2 (/.f64 (*.f64 A C) B)) B))) | |
| 56.5b | (*.f64 -1 (/.f64 (sqrt.f64 (*.f64 2 (*.f64 F (neg.f64 B)))) (*.f64 (sqrt.f64 (hypot.f64 (sqrt.f64 (*.f64 A (*.f64 C -4))) B)) (sqrt.f64 (hypot.f64 (sqrt.f64 (*.f64 A (*.f64 C -4))) B))))) | |
| 54.2b | (/.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))) | |
| 46.2b | (/.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.4b | (/.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))) | |
| 45.1b | (/.f64 (sqrt.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))))) (/.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (neg.f64 (sqrt.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C))))))))))) | |
| 59.9b | (/.f64 (neg.f64 (sqrt.f64 (-.f64 (fma.f64 2 (*.f64 C (*.f64 F (*.f64 B B))) (fma.f64 2 (*.f64 A (*.f64 F (*.f64 B B))) (*.f64 10 (*.f64 A (*.f64 C (*.f64 F B)))))) (fma.f64 2 (*.f64 F (pow.f64 B 3)) (*.f64 (*.f64 F B) (+.f64 (*.f64 A A) (*.f64 C C))))))) (fma.f64 A (*.f64 C -4) (*.f64 B B))) | |
| 58.3b | (/.f64 (neg.f64 (*.f64 (sqrt.f64 (*.f64 F (+.f64 C (sqrt.f64 (+.f64 (pow.f64 C 2) (pow.f64 B 2)))))) (*.f64 (sqrt.f64 2) B))) (fma.f64 A (*.f64 C -4) (*.f64 B B))) | |
| 56.1b | (*.f64 -1 (/.f64 (sqrt.f64 (*.f64 2 (*.f64 F (/.f64 (-.f64 (*.f64 (+.f64 A C) (+.f64 A C)) (*.f64 (hypot.f64 B (-.f64 A C)) (hypot.f64 B (-.f64 A C)))) (-.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C))))))) (*.f64 (sqrt.f64 (hypot.f64 (sqrt.f64 (*.f64 A (*.f64 C -4))) B)) (sqrt.f64 (hypot.f64 (sqrt.f64 (*.f64 A (*.f64 C -4))) B))))) | |
| 45.3b | (/.f64 (*.f64 (cbrt.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 (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 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (neg.f64 (cbrt.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))))))))))) | |
| 57.2b | (/.f64 (neg.f64 (sqrt.f64 (*.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)) (*.f64 2 (*.f64 F (-.f64 (+.f64 A C) B)))))) (fma.f64 A (*.f64 C -4) (*.f64 B B))) | |
| 60.7b | (neg.f64 (*.f64 (sqrt.f64 2) (sqrt.f64 (*.f64 -1/4 (/.f64 (*.f64 F (+.f64 A (+.f64 C (sqrt.f64 (-.f64 (+.f64 (*.f64 A A) (*.f64 C C)) (*.f64 2 (*.f64 A C))))))) (*.f64 A C)))))) | |
| 51.6b | (*.f64 -1 (/.f64 (sqrt.f64 (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))) B)) | |
| 44.5b | (*.f64 -1 (/.f64 (sqrt.f64 (*.f64 2 (*.f64 F (+.f64 (+.f64 A C) (hypot.f64 B (-.f64 A C)))))) (*.f64 (sqrt.f64 (sqrt.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B)))) (sqrt.f64 (sqrt.f64 (fma.f64 A (*.f64 C -4) (*.f64 B B))))))) | |
| 55.3b | (neg.f64 (*.f64 (sqrt.f64 2) (sqrt.f64 (*.f64 -1/2 (/.f64 F A))))) | |
| 56.8b | (*.f64 -1 (/.f64 (*.f64 (sqrt.f64 (*.f64 A F)) (pow.f64 (sqrt.f64 2) 2)) (*.f64 (sqrt.f64 (hypot.f64 (sqrt.f64 (*.f64 A (*.f64 C -4))) B)) (sqrt.f64 (hypot.f64 (sqrt.f64 (*.f64 A (*.f64 C -4))) B))))) | |
| 54.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)))))) (fma.f64 A (*.f64 C -4) (*.f64 B B))) | |
| 59.6b | (/.f64 (neg.f64 (sqrt.f64 (*.f64 -2 (*.f64 F (pow.f64 B 3))))) (fma.f64 A (*.f64 C -4) (*.f64 B B))) |
Compiled 17588 to 10595 computations (39.8% saved)
Total 21.8b remaining (57.1%)
Threshold costs 0b (0%)
Compiled 79122 to 49647 computations (37.3% saved)
| Iters | Range | Point | |
|---|---|---|---|
| 8 | 9.47360425949459e+73 | 2.7055843598556012e+78 | 9.636869577966142e+73 |
| 9 | 7.532429357011997e-97 | 2.68207148963378e-87 | 7.677474179576165e-97 |
| 9 | 1.0971469128064879e-254 | 5.623291985566744e-247 | 6.3763417357519274e-254 |
| 5 | -0.021971841061632972 | -0.005647819769988461 | -0.021493238530669236 |
Compiled 5 to 4 computations (20% saved)
| 1× | egg-herbie |
| 25× | *-commutative_binary64 |
| 19× | +-commutative_binary64 |
| 15× | sub-neg_binary64 |
| 13× | neg-sub0_binary64 |
| 11× | neg-mul-1_binary64 |
Useful iterations: 0 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 56 | 218 |
| 1 | 93 | 218 |
| 2 | 124 | 218 |
| 3 | 146 | 218 |
| 4 | 160 | 218 |
| 5 | 163 | 218 |
| 6 | 163 | 218 |
Compiled 1618 to 984 computations (39.2% saved)
Loading profile data...