Average Error: 34.4 → 9.0
Time: 10.4s
Precision: 64
\[\frac{\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}{2 \cdot a}\]
\[\begin{array}{l} \mathbf{if}\;b \le -5.10985616674947893 \cdot 10^{57}:\\ \;\;\;\;\frac{1}{2} \cdot \left(-2 \cdot \frac{c}{b}\right)\\ \mathbf{elif}\;b \le -1.33116871382552448 \cdot 10^{-114}:\\ \;\;\;\;\frac{1}{2} \cdot \frac{\frac{4 \cdot \left(a \cdot c\right)}{\mathsf{fma}\left(1, \sqrt{\mathsf{fma}\left(b, b, -4 \cdot \left(a \cdot c\right)\right)}, -b\right)}}{a}\\ \mathbf{elif}\;b \le 6.74838527698993 \cdot 10^{90}:\\ \;\;\;\;\frac{1}{2} \cdot \frac{1}{\frac{a}{\left(-b\right) - \sqrt{\mathsf{fma}\left(b, b, -4 \cdot \left(a \cdot c\right)\right)}}}\\ \mathbf{else}:\\ \;\;\;\;-1 \cdot \frac{b}{a}\\ \end{array}\]
\frac{\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}{2 \cdot a}
\begin{array}{l}
\mathbf{if}\;b \le -5.10985616674947893 \cdot 10^{57}:\\
\;\;\;\;\frac{1}{2} \cdot \left(-2 \cdot \frac{c}{b}\right)\\

\mathbf{elif}\;b \le -1.33116871382552448 \cdot 10^{-114}:\\
\;\;\;\;\frac{1}{2} \cdot \frac{\frac{4 \cdot \left(a \cdot c\right)}{\mathsf{fma}\left(1, \sqrt{\mathsf{fma}\left(b, b, -4 \cdot \left(a \cdot c\right)\right)}, -b\right)}}{a}\\

\mathbf{elif}\;b \le 6.74838527698993 \cdot 10^{90}:\\
\;\;\;\;\frac{1}{2} \cdot \frac{1}{\frac{a}{\left(-b\right) - \sqrt{\mathsf{fma}\left(b, b, -4 \cdot \left(a \cdot c\right)\right)}}}\\

\mathbf{else}:\\
\;\;\;\;-1 \cdot \frac{b}{a}\\

\end{array}
double f(double a, double b, double c) {
        double r89508 = b;
        double r89509 = -r89508;
        double r89510 = r89508 * r89508;
        double r89511 = 4.0;
        double r89512 = a;
        double r89513 = c;
        double r89514 = r89512 * r89513;
        double r89515 = r89511 * r89514;
        double r89516 = r89510 - r89515;
        double r89517 = sqrt(r89516);
        double r89518 = r89509 - r89517;
        double r89519 = 2.0;
        double r89520 = r89519 * r89512;
        double r89521 = r89518 / r89520;
        return r89521;
}

double f(double a, double b, double c) {
        double r89522 = b;
        double r89523 = -5.109856166749479e+57;
        bool r89524 = r89522 <= r89523;
        double r89525 = 1.0;
        double r89526 = 2.0;
        double r89527 = r89525 / r89526;
        double r89528 = -2.0;
        double r89529 = c;
        double r89530 = r89529 / r89522;
        double r89531 = r89528 * r89530;
        double r89532 = r89527 * r89531;
        double r89533 = -1.3311687138255245e-114;
        bool r89534 = r89522 <= r89533;
        double r89535 = 4.0;
        double r89536 = a;
        double r89537 = r89536 * r89529;
        double r89538 = r89535 * r89537;
        double r89539 = -r89538;
        double r89540 = fma(r89522, r89522, r89539);
        double r89541 = sqrt(r89540);
        double r89542 = -r89522;
        double r89543 = fma(r89525, r89541, r89542);
        double r89544 = r89538 / r89543;
        double r89545 = r89544 / r89536;
        double r89546 = r89527 * r89545;
        double r89547 = 6.74838527698993e+90;
        bool r89548 = r89522 <= r89547;
        double r89549 = r89542 - r89541;
        double r89550 = r89536 / r89549;
        double r89551 = r89525 / r89550;
        double r89552 = r89527 * r89551;
        double r89553 = -1.0;
        double r89554 = r89522 / r89536;
        double r89555 = r89553 * r89554;
        double r89556 = r89548 ? r89552 : r89555;
        double r89557 = r89534 ? r89546 : r89556;
        double r89558 = r89524 ? r89532 : r89557;
        return r89558;
}

Error

Bits error versus a

Bits error versus b

Bits error versus c

Target

Original34.4
Target21.3
Herbie9.0
\[\begin{array}{l} \mathbf{if}\;b \lt 0.0:\\ \;\;\;\;\frac{c}{a \cdot \frac{\left(-b\right) + \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}{2 \cdot a}}\\ \mathbf{else}:\\ \;\;\;\;\frac{\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}{2 \cdot a}\\ \end{array}\]

Derivation

  1. Split input into 4 regimes
  2. if b < -5.109856166749479e+57

    1. Initial program 58.0

      \[\frac{\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}{2 \cdot a}\]
    2. Using strategy rm
    3. Applied clear-num58.0

      \[\leadsto \color{blue}{\frac{1}{\frac{2 \cdot a}{\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}}}\]
    4. Using strategy rm
    5. Applied *-un-lft-identity58.0

      \[\leadsto \frac{1}{\frac{2 \cdot a}{\color{blue}{1 \cdot \left(\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}\right)}}}\]
    6. Applied times-frac58.0

      \[\leadsto \frac{1}{\color{blue}{\frac{2}{1} \cdot \frac{a}{\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}}}\]
    7. Applied add-cube-cbrt58.0

      \[\leadsto \frac{\color{blue}{\left(\sqrt[3]{1} \cdot \sqrt[3]{1}\right) \cdot \sqrt[3]{1}}}{\frac{2}{1} \cdot \frac{a}{\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}}\]
    8. Applied times-frac58.0

      \[\leadsto \color{blue}{\frac{\sqrt[3]{1} \cdot \sqrt[3]{1}}{\frac{2}{1}} \cdot \frac{\sqrt[3]{1}}{\frac{a}{\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}}}\]
    9. Simplified58.0

      \[\leadsto \color{blue}{\frac{1}{2}} \cdot \frac{\sqrt[3]{1}}{\frac{a}{\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}}\]
    10. Simplified58.0

      \[\leadsto \frac{1}{2} \cdot \color{blue}{\frac{\left(-b\right) - \sqrt{\mathsf{fma}\left(b, b, -4 \cdot \left(a \cdot c\right)\right)}}{a}}\]
    11. Taylor expanded around -inf 3.4

      \[\leadsto \frac{1}{2} \cdot \color{blue}{\left(-2 \cdot \frac{c}{b}\right)}\]

    if -5.109856166749479e+57 < b < -1.3311687138255245e-114

    1. Initial program 41.3

      \[\frac{\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}{2 \cdot a}\]
    2. Using strategy rm
    3. Applied clear-num41.3

      \[\leadsto \color{blue}{\frac{1}{\frac{2 \cdot a}{\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}}}\]
    4. Using strategy rm
    5. Applied *-un-lft-identity41.3

      \[\leadsto \frac{1}{\frac{2 \cdot a}{\color{blue}{1 \cdot \left(\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}\right)}}}\]
    6. Applied times-frac41.3

      \[\leadsto \frac{1}{\color{blue}{\frac{2}{1} \cdot \frac{a}{\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}}}\]
    7. Applied add-cube-cbrt41.3

      \[\leadsto \frac{\color{blue}{\left(\sqrt[3]{1} \cdot \sqrt[3]{1}\right) \cdot \sqrt[3]{1}}}{\frac{2}{1} \cdot \frac{a}{\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}}\]
    8. Applied times-frac41.3

      \[\leadsto \color{blue}{\frac{\sqrt[3]{1} \cdot \sqrt[3]{1}}{\frac{2}{1}} \cdot \frac{\sqrt[3]{1}}{\frac{a}{\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}}}\]
    9. Simplified41.3

      \[\leadsto \color{blue}{\frac{1}{2}} \cdot \frac{\sqrt[3]{1}}{\frac{a}{\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}}\]
    10. Simplified41.3

      \[\leadsto \frac{1}{2} \cdot \color{blue}{\frac{\left(-b\right) - \sqrt{\mathsf{fma}\left(b, b, -4 \cdot \left(a \cdot c\right)\right)}}{a}}\]
    11. Using strategy rm
    12. Applied flip--41.3

      \[\leadsto \frac{1}{2} \cdot \frac{\color{blue}{\frac{\left(-b\right) \cdot \left(-b\right) - \sqrt{\mathsf{fma}\left(b, b, -4 \cdot \left(a \cdot c\right)\right)} \cdot \sqrt{\mathsf{fma}\left(b, b, -4 \cdot \left(a \cdot c\right)\right)}}{\left(-b\right) + \sqrt{\mathsf{fma}\left(b, b, -4 \cdot \left(a \cdot c\right)\right)}}}}{a}\]
    13. Simplified16.4

      \[\leadsto \frac{1}{2} \cdot \frac{\frac{\color{blue}{0 + 4 \cdot \left(a \cdot c\right)}}{\left(-b\right) + \sqrt{\mathsf{fma}\left(b, b, -4 \cdot \left(a \cdot c\right)\right)}}}{a}\]
    14. Simplified16.4

      \[\leadsto \frac{1}{2} \cdot \frac{\frac{0 + 4 \cdot \left(a \cdot c\right)}{\color{blue}{\sqrt{\mathsf{fma}\left(b, b, -4 \cdot \left(a \cdot c\right)\right)} - b}}}{a}\]
    15. Using strategy rm
    16. Applied *-un-lft-identity16.4

      \[\leadsto \frac{1}{2} \cdot \frac{\frac{0 + 4 \cdot \left(a \cdot c\right)}{\color{blue}{1 \cdot \sqrt{\mathsf{fma}\left(b, b, -4 \cdot \left(a \cdot c\right)\right)}} - b}}{a}\]
    17. Applied fma-neg16.4

      \[\leadsto \frac{1}{2} \cdot \frac{\frac{0 + 4 \cdot \left(a \cdot c\right)}{\color{blue}{\mathsf{fma}\left(1, \sqrt{\mathsf{fma}\left(b, b, -4 \cdot \left(a \cdot c\right)\right)}, -b\right)}}}{a}\]

    if -1.3311687138255245e-114 < b < 6.74838527698993e+90

    1. Initial program 11.9

      \[\frac{\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}{2 \cdot a}\]
    2. Using strategy rm
    3. Applied clear-num12.0

      \[\leadsto \color{blue}{\frac{1}{\frac{2 \cdot a}{\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}}}\]
    4. Using strategy rm
    5. Applied *-un-lft-identity12.0

      \[\leadsto \frac{1}{\frac{2 \cdot a}{\color{blue}{1 \cdot \left(\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}\right)}}}\]
    6. Applied times-frac12.0

      \[\leadsto \frac{1}{\color{blue}{\frac{2}{1} \cdot \frac{a}{\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}}}\]
    7. Applied add-cube-cbrt12.0

      \[\leadsto \frac{\color{blue}{\left(\sqrt[3]{1} \cdot \sqrt[3]{1}\right) \cdot \sqrt[3]{1}}}{\frac{2}{1} \cdot \frac{a}{\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}}\]
    8. Applied times-frac12.0

      \[\leadsto \color{blue}{\frac{\sqrt[3]{1} \cdot \sqrt[3]{1}}{\frac{2}{1}} \cdot \frac{\sqrt[3]{1}}{\frac{a}{\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}}}\]
    9. Simplified12.0

      \[\leadsto \color{blue}{\frac{1}{2}} \cdot \frac{\sqrt[3]{1}}{\frac{a}{\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}}\]
    10. Simplified11.9

      \[\leadsto \frac{1}{2} \cdot \color{blue}{\frac{\left(-b\right) - \sqrt{\mathsf{fma}\left(b, b, -4 \cdot \left(a \cdot c\right)\right)}}{a}}\]
    11. Using strategy rm
    12. Applied clear-num12.0

      \[\leadsto \frac{1}{2} \cdot \color{blue}{\frac{1}{\frac{a}{\left(-b\right) - \sqrt{\mathsf{fma}\left(b, b, -4 \cdot \left(a \cdot c\right)\right)}}}}\]

    if 6.74838527698993e+90 < b

    1. Initial program 45.7

      \[\frac{\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}{2 \cdot a}\]
    2. Using strategy rm
    3. Applied clear-num45.8

      \[\leadsto \color{blue}{\frac{1}{\frac{2 \cdot a}{\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}}}\]
    4. Taylor expanded around 0 4.6

      \[\leadsto \color{blue}{-1 \cdot \frac{b}{a}}\]
  3. Recombined 4 regimes into one program.
  4. Final simplification9.0

    \[\leadsto \begin{array}{l} \mathbf{if}\;b \le -5.10985616674947893 \cdot 10^{57}:\\ \;\;\;\;\frac{1}{2} \cdot \left(-2 \cdot \frac{c}{b}\right)\\ \mathbf{elif}\;b \le -1.33116871382552448 \cdot 10^{-114}:\\ \;\;\;\;\frac{1}{2} \cdot \frac{\frac{4 \cdot \left(a \cdot c\right)}{\mathsf{fma}\left(1, \sqrt{\mathsf{fma}\left(b, b, -4 \cdot \left(a \cdot c\right)\right)}, -b\right)}}{a}\\ \mathbf{elif}\;b \le 6.74838527698993 \cdot 10^{90}:\\ \;\;\;\;\frac{1}{2} \cdot \frac{1}{\frac{a}{\left(-b\right) - \sqrt{\mathsf{fma}\left(b, b, -4 \cdot \left(a \cdot c\right)\right)}}}\\ \mathbf{else}:\\ \;\;\;\;-1 \cdot \frac{b}{a}\\ \end{array}\]

Reproduce

herbie shell --seed 2020042 +o rules:numerics
(FPCore (a b c)
  :name "quadm (p42, negative)"
  :precision binary64

  :herbie-target
  (if (< b 0.0) (/ c (* a (/ (+ (- b) (sqrt (- (* b b) (* 4 (* a c))))) (* 2 a)))) (/ (- (- b) (sqrt (- (* b b) (* 4 (* a c))))) (* 2 a)))

  (/ (- (- b) (sqrt (- (* b b) (* 4 (* a c))))) (* 2 a)))