Average Error: 33.7 → 8.9
Time: 4.9s
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 -73773484249037.312:\\ \;\;\;\;-1 \cdot \frac{c}{b}\\ \mathbf{elif}\;b \le -8.143231117685541 \cdot 10^{-211}:\\ \;\;\;\;\frac{\frac{\left({b}^{2} - {b}^{2}\right) + 4 \cdot \left(a \cdot c\right)}{\sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)} - b}}{2 \cdot a}\\ \mathbf{elif}\;b \le 8.633216037833923 \cdot 10^{65}:\\ \;\;\;\;\left(\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}\right) \cdot \frac{1}{2 \cdot a}\\ \mathbf{else}:\\ \;\;\;\;1 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)\\ \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 -73773484249037.312:\\
\;\;\;\;-1 \cdot \frac{c}{b}\\

\mathbf{elif}\;b \le -8.143231117685541 \cdot 10^{-211}:\\
\;\;\;\;\frac{\frac{\left({b}^{2} - {b}^{2}\right) + 4 \cdot \left(a \cdot c\right)}{\sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)} - b}}{2 \cdot a}\\

\mathbf{elif}\;b \le 8.633216037833923 \cdot 10^{65}:\\
\;\;\;\;\left(\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}\right) \cdot \frac{1}{2 \cdot a}\\

\mathbf{else}:\\
\;\;\;\;1 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)\\

\end{array}
double f(double a, double b, double c) {
        double r80553 = b;
        double r80554 = -r80553;
        double r80555 = r80553 * r80553;
        double r80556 = 4.0;
        double r80557 = a;
        double r80558 = c;
        double r80559 = r80557 * r80558;
        double r80560 = r80556 * r80559;
        double r80561 = r80555 - r80560;
        double r80562 = sqrt(r80561);
        double r80563 = r80554 - r80562;
        double r80564 = 2.0;
        double r80565 = r80564 * r80557;
        double r80566 = r80563 / r80565;
        return r80566;
}

double f(double a, double b, double c) {
        double r80567 = b;
        double r80568 = -73773484249037.31;
        bool r80569 = r80567 <= r80568;
        double r80570 = -1.0;
        double r80571 = c;
        double r80572 = r80571 / r80567;
        double r80573 = r80570 * r80572;
        double r80574 = -8.143231117685541e-211;
        bool r80575 = r80567 <= r80574;
        double r80576 = 2.0;
        double r80577 = pow(r80567, r80576);
        double r80578 = r80577 - r80577;
        double r80579 = 4.0;
        double r80580 = a;
        double r80581 = r80580 * r80571;
        double r80582 = r80579 * r80581;
        double r80583 = r80578 + r80582;
        double r80584 = r80567 * r80567;
        double r80585 = r80584 - r80582;
        double r80586 = sqrt(r80585);
        double r80587 = r80586 - r80567;
        double r80588 = r80583 / r80587;
        double r80589 = 2.0;
        double r80590 = r80589 * r80580;
        double r80591 = r80588 / r80590;
        double r80592 = 8.633216037833923e+65;
        bool r80593 = r80567 <= r80592;
        double r80594 = -r80567;
        double r80595 = r80594 - r80586;
        double r80596 = 1.0;
        double r80597 = r80596 / r80590;
        double r80598 = r80595 * r80597;
        double r80599 = 1.0;
        double r80600 = r80567 / r80580;
        double r80601 = r80572 - r80600;
        double r80602 = r80599 * r80601;
        double r80603 = r80593 ? r80598 : r80602;
        double r80604 = r80575 ? r80591 : r80603;
        double r80605 = r80569 ? r80573 : r80604;
        return r80605;
}

Error

Bits error versus a

Bits error versus b

Bits error versus c

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Target

Original33.7
Target21.0
Herbie8.9
\[\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 < -73773484249037.31

    1. Initial program 55.9

      \[\frac{\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}{2 \cdot a}\]
    2. Taylor expanded around -inf 5.7

      \[\leadsto \color{blue}{-1 \cdot \frac{c}{b}}\]

    if -73773484249037.31 < b < -8.143231117685541e-211

    1. Initial program 29.4

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

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

      \[\leadsto \frac{\frac{\color{blue}{\left({b}^{2} - {b}^{2}\right) + 4 \cdot \left(a \cdot c\right)}}{\left(-b\right) + \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}}{2 \cdot a}\]
    5. Simplified16.8

      \[\leadsto \frac{\frac{\left({b}^{2} - {b}^{2}\right) + 4 \cdot \left(a \cdot c\right)}{\color{blue}{\sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)} - b}}}{2 \cdot a}\]

    if -8.143231117685541e-211 < b < 8.633216037833923e+65

    1. Initial program 10.2

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

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

    if 8.633216037833923e+65 < b

    1. Initial program 40.1

      \[\frac{\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}{2 \cdot a}\]
    2. Taylor expanded around inf 4.7

      \[\leadsto \color{blue}{1 \cdot \frac{c}{b} - 1 \cdot \frac{b}{a}}\]
    3. Simplified4.7

      \[\leadsto \color{blue}{1 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)}\]
  3. Recombined 4 regimes into one program.
  4. Final simplification8.9

    \[\leadsto \begin{array}{l} \mathbf{if}\;b \le -73773484249037.312:\\ \;\;\;\;-1 \cdot \frac{c}{b}\\ \mathbf{elif}\;b \le -8.143231117685541 \cdot 10^{-211}:\\ \;\;\;\;\frac{\frac{\left({b}^{2} - {b}^{2}\right) + 4 \cdot \left(a \cdot c\right)}{\sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)} - b}}{2 \cdot a}\\ \mathbf{elif}\;b \le 8.633216037833923 \cdot 10^{65}:\\ \;\;\;\;\left(\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}\right) \cdot \frac{1}{2 \cdot a}\\ \mathbf{else}:\\ \;\;\;\;1 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)\\ \end{array}\]

Reproduce

herbie shell --seed 2020057 
(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)))