Average Error: 34.1 → 6.5
Time: 5.7s
Precision: 64
\[\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\]
\[\begin{array}{l} \mathbf{if}\;b \le -1.7431685240570133 \cdot 10^{102}:\\ \;\;\;\;1 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)\\ \mathbf{elif}\;b \le 1.0417939395900796 \cdot 10^{-259}:\\ \;\;\;\;\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\\ \mathbf{elif}\;b \le 9.37351117144741807 \cdot 10^{103}:\\ \;\;\;\;\frac{1}{\frac{\frac{2}{4}}{c} \cdot \left(\sqrt[3]{1} \cdot \sqrt[3]{1}\right)} \cdot \frac{\frac{1}{\sqrt[3]{1}}}{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}\\ \mathbf{else}:\\ \;\;\;\;-1 \cdot \frac{c}{b}\\ \end{array}\]
\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}
\begin{array}{l}
\mathbf{if}\;b \le -1.7431685240570133 \cdot 10^{102}:\\
\;\;\;\;1 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)\\

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

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

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

\end{array}
double f(double a, double b, double c) {
        double r114310 = b;
        double r114311 = -r114310;
        double r114312 = r114310 * r114310;
        double r114313 = 4.0;
        double r114314 = a;
        double r114315 = r114313 * r114314;
        double r114316 = c;
        double r114317 = r114315 * r114316;
        double r114318 = r114312 - r114317;
        double r114319 = sqrt(r114318);
        double r114320 = r114311 + r114319;
        double r114321 = 2.0;
        double r114322 = r114321 * r114314;
        double r114323 = r114320 / r114322;
        return r114323;
}

double f(double a, double b, double c) {
        double r114324 = b;
        double r114325 = -1.7431685240570133e+102;
        bool r114326 = r114324 <= r114325;
        double r114327 = 1.0;
        double r114328 = c;
        double r114329 = r114328 / r114324;
        double r114330 = a;
        double r114331 = r114324 / r114330;
        double r114332 = r114329 - r114331;
        double r114333 = r114327 * r114332;
        double r114334 = 1.0417939395900796e-259;
        bool r114335 = r114324 <= r114334;
        double r114336 = -r114324;
        double r114337 = r114324 * r114324;
        double r114338 = 4.0;
        double r114339 = r114338 * r114330;
        double r114340 = r114339 * r114328;
        double r114341 = r114337 - r114340;
        double r114342 = sqrt(r114341);
        double r114343 = r114336 + r114342;
        double r114344 = 2.0;
        double r114345 = r114344 * r114330;
        double r114346 = r114343 / r114345;
        double r114347 = 9.373511171447418e+103;
        bool r114348 = r114324 <= r114347;
        double r114349 = 1.0;
        double r114350 = r114344 / r114338;
        double r114351 = r114350 / r114328;
        double r114352 = cbrt(r114349);
        double r114353 = r114352 * r114352;
        double r114354 = r114351 * r114353;
        double r114355 = r114349 / r114354;
        double r114356 = r114349 / r114352;
        double r114357 = r114336 - r114342;
        double r114358 = r114356 / r114357;
        double r114359 = r114355 * r114358;
        double r114360 = -1.0;
        double r114361 = r114360 * r114329;
        double r114362 = r114348 ? r114359 : r114361;
        double r114363 = r114335 ? r114346 : r114362;
        double r114364 = r114326 ? r114333 : r114363;
        return r114364;
}

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.1
Target20.5
Herbie6.5
\[\begin{array}{l} \mathbf{if}\;b \lt 0.0:\\ \;\;\;\;\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\\ \mathbf{else}:\\ \;\;\;\;\frac{c}{a \cdot \frac{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}}\\ \end{array}\]

Derivation

  1. Split input into 4 regimes
  2. if b < -1.7431685240570133e+102

    1. Initial program 47.5

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

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

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

    if -1.7431685240570133e+102 < b < 1.0417939395900796e-259

    1. Initial program 9.7

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

    if 1.0417939395900796e-259 < b < 9.373511171447418e+103

    1. Initial program 34.9

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

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

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

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

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

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

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

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

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

      \[\leadsto \frac{\frac{1}{1}}{\left(\frac{2}{4} \cdot \color{blue}{\frac{1}{c}}\right) \cdot \left(\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}\right)}\]
    14. Using strategy rm
    15. Applied add-cube-cbrt8.3

      \[\leadsto \frac{\frac{1}{\color{blue}{\left(\sqrt[3]{1} \cdot \sqrt[3]{1}\right) \cdot \sqrt[3]{1}}}}{\left(\frac{2}{4} \cdot \frac{1}{c}\right) \cdot \left(\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}\right)}\]
    16. Applied add-sqr-sqrt8.3

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

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

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

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

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

    if 9.373511171447418e+103 < b

    1. Initial program 59.9

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

      \[\leadsto \color{blue}{-1 \cdot \frac{c}{b}}\]
  3. Recombined 4 regimes into one program.
  4. Final simplification6.5

    \[\leadsto \begin{array}{l} \mathbf{if}\;b \le -1.7431685240570133 \cdot 10^{102}:\\ \;\;\;\;1 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)\\ \mathbf{elif}\;b \le 1.0417939395900796 \cdot 10^{-259}:\\ \;\;\;\;\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\\ \mathbf{elif}\;b \le 9.37351117144741807 \cdot 10^{103}:\\ \;\;\;\;\frac{1}{\frac{\frac{2}{4}}{c} \cdot \left(\sqrt[3]{1} \cdot \sqrt[3]{1}\right)} \cdot \frac{\frac{1}{\sqrt[3]{1}}}{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}\\ \mathbf{else}:\\ \;\;\;\;-1 \cdot \frac{c}{b}\\ \end{array}\]

Reproduce

herbie shell --seed 2020024 +o rules:numerics
(FPCore (a b c)
  :name "The quadratic formula (r1)"
  :precision binary64

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

  (/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)))