Average Error: 33.8 → 8.6
Time: 16.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 -1.970010565552108757188050455448622102575 \cdot 10^{58}:\\ \;\;\;\;\frac{c}{b} \cdot -1\\ \mathbf{elif}\;b \le -1.018798663578592878613720979047018430442 \cdot 10^{-256}:\\ \;\;\;\;\frac{\sqrt[3]{\frac{a}{\frac{\sqrt{b \cdot b - a \cdot \left(c \cdot 4\right)} - b}{c \cdot 4}}} \cdot \left(\sqrt[3]{\frac{a}{\frac{\sqrt{b \cdot b - a \cdot \left(c \cdot 4\right)} - b}{c \cdot 4}}} \cdot \sqrt[3]{\frac{a}{\frac{\sqrt{b \cdot b - a \cdot \left(c \cdot 4\right)} - b}{c \cdot 4}}}\right)}{2 \cdot a}\\ \mathbf{elif}\;b \le 3.628799960716311990444092539387346352569 \cdot 10^{50}:\\ \;\;\;\;\frac{\left(-b\right) - \sqrt{b \cdot b - a \cdot \left(c \cdot 4\right)}}{2 \cdot a}\\ \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 -1.970010565552108757188050455448622102575 \cdot 10^{58}:\\
\;\;\;\;\frac{c}{b} \cdot -1\\

\mathbf{elif}\;b \le -1.018798663578592878613720979047018430442 \cdot 10^{-256}:\\
\;\;\;\;\frac{\sqrt[3]{\frac{a}{\frac{\sqrt{b \cdot b - a \cdot \left(c \cdot 4\right)} - b}{c \cdot 4}}} \cdot \left(\sqrt[3]{\frac{a}{\frac{\sqrt{b \cdot b - a \cdot \left(c \cdot 4\right)} - b}{c \cdot 4}}} \cdot \sqrt[3]{\frac{a}{\frac{\sqrt{b \cdot b - a \cdot \left(c \cdot 4\right)} - b}{c \cdot 4}}}\right)}{2 \cdot a}\\

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

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

\end{array}
double f(double a, double b, double c) {
        double r91207 = b;
        double r91208 = -r91207;
        double r91209 = r91207 * r91207;
        double r91210 = 4.0;
        double r91211 = a;
        double r91212 = c;
        double r91213 = r91211 * r91212;
        double r91214 = r91210 * r91213;
        double r91215 = r91209 - r91214;
        double r91216 = sqrt(r91215);
        double r91217 = r91208 - r91216;
        double r91218 = 2.0;
        double r91219 = r91218 * r91211;
        double r91220 = r91217 / r91219;
        return r91220;
}

double f(double a, double b, double c) {
        double r91221 = b;
        double r91222 = -1.9700105655521088e+58;
        bool r91223 = r91221 <= r91222;
        double r91224 = c;
        double r91225 = r91224 / r91221;
        double r91226 = -1.0;
        double r91227 = r91225 * r91226;
        double r91228 = -1.0187986635785929e-256;
        bool r91229 = r91221 <= r91228;
        double r91230 = a;
        double r91231 = r91221 * r91221;
        double r91232 = 4.0;
        double r91233 = r91224 * r91232;
        double r91234 = r91230 * r91233;
        double r91235 = r91231 - r91234;
        double r91236 = sqrt(r91235);
        double r91237 = r91236 - r91221;
        double r91238 = r91237 / r91233;
        double r91239 = r91230 / r91238;
        double r91240 = cbrt(r91239);
        double r91241 = r91240 * r91240;
        double r91242 = r91240 * r91241;
        double r91243 = 2.0;
        double r91244 = r91243 * r91230;
        double r91245 = r91242 / r91244;
        double r91246 = 3.628799960716312e+50;
        bool r91247 = r91221 <= r91246;
        double r91248 = -r91221;
        double r91249 = r91248 - r91236;
        double r91250 = r91249 / r91244;
        double r91251 = r91221 / r91230;
        double r91252 = r91226 * r91251;
        double r91253 = r91247 ? r91250 : r91252;
        double r91254 = r91229 ? r91245 : r91253;
        double r91255 = r91223 ? r91227 : r91254;
        return r91255;
}

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.8
Target20.7
Herbie8.6
\[\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 < -1.9700105655521088e+58

    1. Initial program 57.5

      \[\frac{\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}{2 \cdot a}\]
    2. Simplified57.5

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

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

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

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

    if -1.9700105655521088e+58 < b < -1.0187986635785929e-256

    1. Initial program 31.6

      \[\frac{\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}{2 \cdot a}\]
    2. Simplified31.7

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

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

      \[\leadsto \frac{\frac{\color{blue}{0 + a \cdot \left(4 \cdot c\right)}}{\left(-b\right) + \sqrt{b \cdot b - a \cdot \left(4 \cdot c\right)}}}{2 \cdot a}\]
    6. Simplified17.3

      \[\leadsto \frac{\frac{0 + a \cdot \left(4 \cdot c\right)}{\color{blue}{\sqrt{b \cdot b - a \cdot \left(4 \cdot c\right)} - b}}}{2 \cdot a}\]
    7. Using strategy rm
    8. Applied add-cube-cbrt18.0

      \[\leadsto \frac{\color{blue}{\left(\sqrt[3]{\frac{0 + a \cdot \left(4 \cdot c\right)}{\sqrt{b \cdot b - a \cdot \left(4 \cdot c\right)} - b}} \cdot \sqrt[3]{\frac{0 + a \cdot \left(4 \cdot c\right)}{\sqrt{b \cdot b - a \cdot \left(4 \cdot c\right)} - b}}\right) \cdot \sqrt[3]{\frac{0 + a \cdot \left(4 \cdot c\right)}{\sqrt{b \cdot b - a \cdot \left(4 \cdot c\right)} - b}}}}{2 \cdot a}\]
    9. Simplified18.0

      \[\leadsto \frac{\color{blue}{\left(\sqrt[3]{\frac{a}{\frac{\sqrt{b \cdot b - a \cdot \left(4 \cdot c\right)} - b}{4 \cdot c}}} \cdot \sqrt[3]{\frac{a}{\frac{\sqrt{b \cdot b - a \cdot \left(4 \cdot c\right)} - b}{4 \cdot c}}}\right)} \cdot \sqrt[3]{\frac{0 + a \cdot \left(4 \cdot c\right)}{\sqrt{b \cdot b - a \cdot \left(4 \cdot c\right)} - b}}}{2 \cdot a}\]
    10. Simplified15.0

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

    if -1.0187986635785929e-256 < b < 3.628799960716312e+50

    1. Initial program 10.0

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

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

    if 3.628799960716312e+50 < b

    1. Initial program 38.2

      \[\frac{\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}{2 \cdot a}\]
    2. Simplified38.2

      \[\leadsto \color{blue}{\frac{\left(-b\right) - \sqrt{b \cdot b - a \cdot \left(4 \cdot c\right)}}{2 \cdot a}}\]
    3. Using strategy rm
    4. Applied clear-num38.3

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

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;b \le -1.970010565552108757188050455448622102575 \cdot 10^{58}:\\ \;\;\;\;\frac{c}{b} \cdot -1\\ \mathbf{elif}\;b \le -1.018798663578592878613720979047018430442 \cdot 10^{-256}:\\ \;\;\;\;\frac{\sqrt[3]{\frac{a}{\frac{\sqrt{b \cdot b - a \cdot \left(c \cdot 4\right)} - b}{c \cdot 4}}} \cdot \left(\sqrt[3]{\frac{a}{\frac{\sqrt{b \cdot b - a \cdot \left(c \cdot 4\right)} - b}{c \cdot 4}}} \cdot \sqrt[3]{\frac{a}{\frac{\sqrt{b \cdot b - a \cdot \left(c \cdot 4\right)} - b}{c \cdot 4}}}\right)}{2 \cdot a}\\ \mathbf{elif}\;b \le 3.628799960716311990444092539387346352569 \cdot 10^{50}:\\ \;\;\;\;\frac{\left(-b\right) - \sqrt{b \cdot b - a \cdot \left(c \cdot 4\right)}}{2 \cdot a}\\ \mathbf{else}:\\ \;\;\;\;-1 \cdot \frac{b}{a}\\ \end{array}\]

Reproduce

herbie shell --seed 2019179 
(FPCore (a b c)
  :name "The quadratic formula (r2)"

  :herbie-target
  (if (< b 0.0) (/ c (* a (/ (+ (- b) (sqrt (- (* b b) (* 4.0 (* a c))))) (* 2.0 a)))) (/ (- (- b) (sqrt (- (* b b) (* 4.0 (* a c))))) (* 2.0 a)))

  (/ (- (- b) (sqrt (- (* b b) (* 4.0 (* a c))))) (* 2.0 a)))