Average Error: 34.2 → 8.8
Time: 13.6s
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 -2.836428028485715319451603232683389323254 \cdot 10^{57}:\\ \;\;\;\;-1 \cdot \frac{c}{b}\\ \mathbf{elif}\;b \le 3.453257280209626363179514948804869253532 \cdot 10^{-290}:\\ \;\;\;\;\frac{\frac{\frac{1}{2} \cdot \left(\left({b}^{2} - {b}^{2}\right) + 4 \cdot \left(a \cdot c\right)\right)}{a}}{\left(-b\right) + \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}\\ \mathbf{elif}\;b \le 6.390820394725621542655113374079691934397 \cdot 10^{97}:\\ \;\;\;\;\frac{\frac{1 \cdot \left(\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}\right)}{2}}{a} \cdot 1\\ \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 -2.836428028485715319451603232683389323254 \cdot 10^{57}:\\
\;\;\;\;-1 \cdot \frac{c}{b}\\

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

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

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

\end{array}
double f(double a, double b, double c) {
        double r73071 = b;
        double r73072 = -r73071;
        double r73073 = r73071 * r73071;
        double r73074 = 4.0;
        double r73075 = a;
        double r73076 = c;
        double r73077 = r73075 * r73076;
        double r73078 = r73074 * r73077;
        double r73079 = r73073 - r73078;
        double r73080 = sqrt(r73079);
        double r73081 = r73072 - r73080;
        double r73082 = 2.0;
        double r73083 = r73082 * r73075;
        double r73084 = r73081 / r73083;
        return r73084;
}

double f(double a, double b, double c) {
        double r73085 = b;
        double r73086 = -2.8364280284857153e+57;
        bool r73087 = r73085 <= r73086;
        double r73088 = -1.0;
        double r73089 = c;
        double r73090 = r73089 / r73085;
        double r73091 = r73088 * r73090;
        double r73092 = 3.4532572802096264e-290;
        bool r73093 = r73085 <= r73092;
        double r73094 = 1.0;
        double r73095 = 2.0;
        double r73096 = r73094 / r73095;
        double r73097 = 2.0;
        double r73098 = pow(r73085, r73097);
        double r73099 = r73098 - r73098;
        double r73100 = 4.0;
        double r73101 = a;
        double r73102 = r73101 * r73089;
        double r73103 = r73100 * r73102;
        double r73104 = r73099 + r73103;
        double r73105 = r73096 * r73104;
        double r73106 = r73105 / r73101;
        double r73107 = -r73085;
        double r73108 = r73085 * r73085;
        double r73109 = r73108 - r73103;
        double r73110 = sqrt(r73109);
        double r73111 = r73107 + r73110;
        double r73112 = r73106 / r73111;
        double r73113 = 6.3908203947256215e+97;
        bool r73114 = r73085 <= r73113;
        double r73115 = r73107 - r73110;
        double r73116 = r73094 * r73115;
        double r73117 = r73116 / r73095;
        double r73118 = r73117 / r73101;
        double r73119 = r73118 * r73094;
        double r73120 = r73085 / r73101;
        double r73121 = r73088 * r73120;
        double r73122 = r73114 ? r73119 : r73121;
        double r73123 = r73093 ? r73112 : r73122;
        double r73124 = r73087 ? r73091 : r73123;
        return r73124;
}

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

Original34.2
Target21.1
Herbie8.8
\[\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 < -2.8364280284857153e+57

    1. Initial program 57.4

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

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

    if -2.8364280284857153e+57 < b < 3.4532572802096264e-290

    1. Initial program 29.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-num29.4

      \[\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 flip--29.4

      \[\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)}}}}}\]
    6. Applied associate-/r/29.4

      \[\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)}}\]
    7. Applied associate-/r*29.4

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

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

    if 3.4532572802096264e-290 < b < 6.3908203947256215e+97

    1. Initial program 9.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 clear-num9.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 add-sqr-sqrt9.3

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

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

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

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

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

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

    if 6.3908203947256215e+97 < b

    1. Initial program 47.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 clear-num47.5

      \[\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.0

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;b \le -2.836428028485715319451603232683389323254 \cdot 10^{57}:\\ \;\;\;\;-1 \cdot \frac{c}{b}\\ \mathbf{elif}\;b \le 3.453257280209626363179514948804869253532 \cdot 10^{-290}:\\ \;\;\;\;\frac{\frac{\frac{1}{2} \cdot \left(\left({b}^{2} - {b}^{2}\right) + 4 \cdot \left(a \cdot c\right)\right)}{a}}{\left(-b\right) + \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}\\ \mathbf{elif}\;b \le 6.390820394725621542655113374079691934397 \cdot 10^{97}:\\ \;\;\;\;\frac{\frac{1 \cdot \left(\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}\right)}{2}}{a} \cdot 1\\ \mathbf{else}:\\ \;\;\;\;-1 \cdot \frac{b}{a}\\ \end{array}\]

Reproduce

herbie shell --seed 2019297 
(FPCore (a b c)
  :name "The quadratic formula (r2)"
  :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)))