Average Error: 33.9 → 10.4
Time: 19.7s
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.5961406266953245 \cdot 10^{-58}:\\ \;\;\;\;-\frac{c}{b}\\ \mathbf{elif}\;b \le 3.1115579814291686 \cdot 10^{+29}:\\ \;\;\;\;\frac{\left(-b\right) - \sqrt{b \cdot b - \left(c \cdot a\right) \cdot 4}}{a \cdot 2}\\ \mathbf{else}:\\ \;\;\;\;-\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 -1.5961406266953245 \cdot 10^{-58}:\\
\;\;\;\;-\frac{c}{b}\\

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

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

\end{array}
double f(double a, double b, double c) {
        double r3213248 = b;
        double r3213249 = -r3213248;
        double r3213250 = r3213248 * r3213248;
        double r3213251 = 4.0;
        double r3213252 = a;
        double r3213253 = c;
        double r3213254 = r3213252 * r3213253;
        double r3213255 = r3213251 * r3213254;
        double r3213256 = r3213250 - r3213255;
        double r3213257 = sqrt(r3213256);
        double r3213258 = r3213249 - r3213257;
        double r3213259 = 2.0;
        double r3213260 = r3213259 * r3213252;
        double r3213261 = r3213258 / r3213260;
        return r3213261;
}

double f(double a, double b, double c) {
        double r3213262 = b;
        double r3213263 = -1.5961406266953245e-58;
        bool r3213264 = r3213262 <= r3213263;
        double r3213265 = c;
        double r3213266 = r3213265 / r3213262;
        double r3213267 = -r3213266;
        double r3213268 = 3.1115579814291686e+29;
        bool r3213269 = r3213262 <= r3213268;
        double r3213270 = -r3213262;
        double r3213271 = r3213262 * r3213262;
        double r3213272 = a;
        double r3213273 = r3213265 * r3213272;
        double r3213274 = 4.0;
        double r3213275 = r3213273 * r3213274;
        double r3213276 = r3213271 - r3213275;
        double r3213277 = sqrt(r3213276);
        double r3213278 = r3213270 - r3213277;
        double r3213279 = 2.0;
        double r3213280 = r3213272 * r3213279;
        double r3213281 = r3213278 / r3213280;
        double r3213282 = r3213262 / r3213272;
        double r3213283 = -r3213282;
        double r3213284 = r3213269 ? r3213281 : r3213283;
        double r3213285 = r3213264 ? r3213267 : r3213284;
        return r3213285;
}

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.9
Target20.6
Herbie10.4
\[\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 3 regimes
  2. if b < -1.5961406266953245e-58

    1. Initial program 53.4

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

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

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

    if -1.5961406266953245e-58 < b < 3.1115579814291686e+29

    1. Initial program 14.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 *-un-lft-identity14.7

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

      \[\leadsto \frac{\left(-\color{blue}{1 \cdot b}\right) - 1 \cdot \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}{2 \cdot a}\]
    5. Applied distribute-rgt-neg-in14.7

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

      \[\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}\]
    7. Applied associate-/l*14.9

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

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

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

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

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

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

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

    if 3.1115579814291686e+29 < b

    1. Initial program 34.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 *-un-lft-identity34.4

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

      \[\leadsto \frac{\left(-\color{blue}{1 \cdot b}\right) - 1 \cdot \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}{2 \cdot a}\]
    5. Applied distribute-rgt-neg-in34.4

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

      \[\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}\]
    7. Applied associate-/l*34.5

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

      \[\leadsto \color{blue}{-1 \cdot \frac{b}{a}}\]
    9. Simplified6.5

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;b \le -1.5961406266953245 \cdot 10^{-58}:\\ \;\;\;\;-\frac{c}{b}\\ \mathbf{elif}\;b \le 3.1115579814291686 \cdot 10^{+29}:\\ \;\;\;\;\frac{\left(-b\right) - \sqrt{b \cdot b - \left(c \cdot a\right) \cdot 4}}{a \cdot 2}\\ \mathbf{else}:\\ \;\;\;\;-\frac{b}{a}\\ \end{array}\]

Reproduce

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