Average Error: 33.2 → 8.9
Time: 1.7m
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 -9.44750035307145 \cdot 10^{+99}:\\ \;\;\;\;-\frac{c}{b}\\ \mathbf{elif}\;b \le -9.715316061514381 \cdot 10^{-195}:\\ \;\;\;\;-\frac{\frac{\frac{a \cdot c}{\frac{-1}{2}}}{a}}{\left(-b\right) + \sqrt{b \cdot b - \left(a \cdot c\right) \cdot 4}}\\ \mathbf{elif}\;b \le 4.716596953029048 \cdot 10^{+90}:\\ \;\;\;\;\frac{\left(-b\right) - \sqrt{b \cdot b - \left(a \cdot c\right) \cdot 4}}{a \cdot 2}\\ \mathbf{else}:\\ \;\;\;\;\frac{c}{b} - \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 -9.44750035307145 \cdot 10^{+99}:\\
\;\;\;\;-\frac{c}{b}\\

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

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

\mathbf{else}:\\
\;\;\;\;\frac{c}{b} - \frac{b}{a}\\

\end{array}
double f(double a, double b, double c) {
        double r22212642 = b;
        double r22212643 = -r22212642;
        double r22212644 = r22212642 * r22212642;
        double r22212645 = 4.0;
        double r22212646 = a;
        double r22212647 = c;
        double r22212648 = r22212646 * r22212647;
        double r22212649 = r22212645 * r22212648;
        double r22212650 = r22212644 - r22212649;
        double r22212651 = sqrt(r22212650);
        double r22212652 = r22212643 - r22212651;
        double r22212653 = 2.0;
        double r22212654 = r22212653 * r22212646;
        double r22212655 = r22212652 / r22212654;
        return r22212655;
}

double f(double a, double b, double c) {
        double r22212656 = b;
        double r22212657 = -9.44750035307145e+99;
        bool r22212658 = r22212656 <= r22212657;
        double r22212659 = c;
        double r22212660 = r22212659 / r22212656;
        double r22212661 = -r22212660;
        double r22212662 = -9.715316061514381e-195;
        bool r22212663 = r22212656 <= r22212662;
        double r22212664 = a;
        double r22212665 = r22212664 * r22212659;
        double r22212666 = -0.5;
        double r22212667 = r22212665 / r22212666;
        double r22212668 = r22212667 / r22212664;
        double r22212669 = -r22212656;
        double r22212670 = r22212656 * r22212656;
        double r22212671 = 4.0;
        double r22212672 = r22212665 * r22212671;
        double r22212673 = r22212670 - r22212672;
        double r22212674 = sqrt(r22212673);
        double r22212675 = r22212669 + r22212674;
        double r22212676 = r22212668 / r22212675;
        double r22212677 = -r22212676;
        double r22212678 = 4.716596953029048e+90;
        bool r22212679 = r22212656 <= r22212678;
        double r22212680 = r22212669 - r22212674;
        double r22212681 = 2.0;
        double r22212682 = r22212664 * r22212681;
        double r22212683 = r22212680 / r22212682;
        double r22212684 = r22212656 / r22212664;
        double r22212685 = r22212660 - r22212684;
        double r22212686 = r22212679 ? r22212683 : r22212685;
        double r22212687 = r22212663 ? r22212677 : r22212686;
        double r22212688 = r22212658 ? r22212661 : r22212687;
        return r22212688;
}

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.2
Target20.1
Herbie8.9
\[\begin{array}{l} \mathbf{if}\;b \lt 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 < -9.44750035307145e+99

    1. Initial program 58.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 div-inv58.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}}\]
    4. Taylor expanded around -inf 2.1

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

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

    if -9.44750035307145e+99 < b < -9.715316061514381e-195

    1. Initial program 37.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-inv37.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}}\]
    4. Using strategy rm
    5. Applied flip--37.4

      \[\leadsto \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)}}} \cdot \frac{1}{2 \cdot a}\]
    6. Applied associate-*l/37.4

      \[\leadsto \color{blue}{\frac{\left(\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)}\right) \cdot \frac{1}{2 \cdot a}}{\left(-b\right) + \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}}\]
    7. Simplified15.3

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

    if -9.715316061514381e-195 < b < 4.716596953029048e+90

    1. Initial program 11.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 div-inv11.2

      \[\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}}\]
    4. Using strategy rm
    5. Applied un-div-inv11.0

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

    if 4.716596953029048e+90 < b

    1. Initial program 42.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-inv42.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}}\]
    4. Taylor expanded around inf 3.8

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;b \le -9.44750035307145 \cdot 10^{+99}:\\ \;\;\;\;-\frac{c}{b}\\ \mathbf{elif}\;b \le -9.715316061514381 \cdot 10^{-195}:\\ \;\;\;\;-\frac{\frac{\frac{a \cdot c}{\frac{-1}{2}}}{a}}{\left(-b\right) + \sqrt{b \cdot b - \left(a \cdot c\right) \cdot 4}}\\ \mathbf{elif}\;b \le 4.716596953029048 \cdot 10^{+90}:\\ \;\;\;\;\frac{\left(-b\right) - \sqrt{b \cdot b - \left(a \cdot c\right) \cdot 4}}{a \cdot 2}\\ \mathbf{else}:\\ \;\;\;\;\frac{c}{b} - \frac{b}{a}\\ \end{array}\]

Reproduce

herbie shell --seed 2019112 +o rules:numerics
(FPCore (a b c)
  :name "The quadratic formula (r2)"

  :herbie-target
  (if (< b 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)))