Average Error: 33.5 → 8.8
Time: 1.1m
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 -1.2624408798128872 \cdot 10^{+73}:\\ \;\;\;\;-\frac{c}{b}\\ \mathbf{elif}\;b \le -7.507092554429818 \cdot 10^{-252}:\\ \;\;\;\;\frac{\frac{a \cdot c}{\frac{-1}{2}}}{a} \cdot \frac{-1}{\sqrt{b \cdot b - \left(a \cdot c\right) \cdot 4} - b}\\ \mathbf{elif}\;b \le 2.695924339454757 \cdot 10^{+108}:\\ \;\;\;\;\frac{\left(-b\right) - \sqrt{b \cdot b - \left(a \cdot c\right) \cdot 4}}{a} \cdot \frac{1}{2}\\ \mathbf{else}:\\ \;\;\;\;\frac{-b}{a}\\ \end{array}\]
double f(double a, double b, double c) {
        double r10125711 = b;
        double r10125712 = -r10125711;
        double r10125713 = r10125711 * r10125711;
        double r10125714 = 4.0;
        double r10125715 = a;
        double r10125716 = c;
        double r10125717 = r10125715 * r10125716;
        double r10125718 = r10125714 * r10125717;
        double r10125719 = r10125713 - r10125718;
        double r10125720 = sqrt(r10125719);
        double r10125721 = r10125712 - r10125720;
        double r10125722 = 2.0;
        double r10125723 = r10125722 * r10125715;
        double r10125724 = r10125721 / r10125723;
        return r10125724;
}

double f(double a, double b, double c) {
        double r10125725 = b;
        double r10125726 = -1.2624408798128872e+73;
        bool r10125727 = r10125725 <= r10125726;
        double r10125728 = c;
        double r10125729 = r10125728 / r10125725;
        double r10125730 = -r10125729;
        double r10125731 = -7.507092554429818e-252;
        bool r10125732 = r10125725 <= r10125731;
        double r10125733 = a;
        double r10125734 = r10125733 * r10125728;
        double r10125735 = -0.5;
        double r10125736 = r10125734 / r10125735;
        double r10125737 = r10125736 / r10125733;
        double r10125738 = -1.0;
        double r10125739 = r10125725 * r10125725;
        double r10125740 = 4.0;
        double r10125741 = r10125734 * r10125740;
        double r10125742 = r10125739 - r10125741;
        double r10125743 = sqrt(r10125742);
        double r10125744 = r10125743 - r10125725;
        double r10125745 = r10125738 / r10125744;
        double r10125746 = r10125737 * r10125745;
        double r10125747 = 2.695924339454757e+108;
        bool r10125748 = r10125725 <= r10125747;
        double r10125749 = -r10125725;
        double r10125750 = r10125749 - r10125743;
        double r10125751 = r10125750 / r10125733;
        double r10125752 = 0.5;
        double r10125753 = r10125751 * r10125752;
        double r10125754 = r10125749 / r10125733;
        double r10125755 = r10125748 ? r10125753 : r10125754;
        double r10125756 = r10125732 ? r10125746 : r10125755;
        double r10125757 = r10125727 ? r10125730 : r10125756;
        return r10125757;
}

\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 -1.2624408798128872 \cdot 10^{+73}:\\
\;\;\;\;-\frac{c}{b}\\

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

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

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

\end{array}

Error

Bits error versus a

Bits error versus b

Bits error versus c

Target

Original33.5
Target20.8
Herbie8.8
\[\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 < -1.2624408798128872e+73

    1. Initial program 57.3

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

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

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

    if -1.2624408798128872e+73 < b < -7.507092554429818e-252

    1. Initial program 32.1

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

      \[\leadsto \frac{\color{blue}{1 \cdot \left(\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}\right)}}{2 \cdot a}\]
    4. Applied associate-/l*32.1

      \[\leadsto \color{blue}{\frac{1}{\frac{2 \cdot a}{\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}}}\]
    5. Using strategy rm
    6. Applied flip--32.2

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

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

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

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

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

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

    if -7.507092554429818e-252 < b < 2.695924339454757e+108

    1. Initial program 10.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 *-un-lft-identity10.0

      \[\leadsto \frac{\color{blue}{1 \cdot \left(\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}\right)}}{2 \cdot a}\]
    4. Applied associate-/l*10.1

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

      \[\leadsto \frac{1}{\frac{2 \cdot a}{\left(-b\right) - \color{blue}{1 \cdot \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}}}\]
    7. Applied *-un-lft-identity10.1

      \[\leadsto \frac{1}{\frac{2 \cdot a}{\color{blue}{1 \cdot \left(-b\right)} - 1 \cdot \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}}\]
    8. Applied distribute-lft-out--10.1

      \[\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)}}}\]
    9. Applied times-frac10.1

      \[\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)}}}}\]
    10. Applied *-un-lft-identity10.1

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

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

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

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

    if 2.695924339454757e+108 < b

    1. Initial program 47.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 *-un-lft-identity47.2

      \[\leadsto \frac{\color{blue}{1 \cdot \left(\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}\right)}}{2 \cdot a}\]
    4. Applied associate-/l*47.2

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

      \[\leadsto \color{blue}{-1 \cdot \frac{b}{a}}\]
    6. Simplified3.4

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;b \le -1.2624408798128872 \cdot 10^{+73}:\\ \;\;\;\;-\frac{c}{b}\\ \mathbf{elif}\;b \le -7.507092554429818 \cdot 10^{-252}:\\ \;\;\;\;\frac{\frac{a \cdot c}{\frac{-1}{2}}}{a} \cdot \frac{-1}{\sqrt{b \cdot b - \left(a \cdot c\right) \cdot 4} - b}\\ \mathbf{elif}\;b \le 2.695924339454757 \cdot 10^{+108}:\\ \;\;\;\;\frac{\left(-b\right) - \sqrt{b \cdot b - \left(a \cdot c\right) \cdot 4}}{a} \cdot \frac{1}{2}\\ \mathbf{else}:\\ \;\;\;\;\frac{-b}{a}\\ \end{array}\]

Reproduce

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