Average Error: 34.0 → 10.2
Time: 18.1s
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 -5.836476522143192884813309842834615858794 \cdot 10^{134}:\\ \;\;\;\;\frac{\left(2 \cdot \frac{c}{b} - \frac{b}{a}\right) - \frac{b}{a}}{2}\\ \mathbf{elif}\;b \le 8.272706925888016273629504343982488312855 \cdot 10^{-43}:\\ \;\;\;\;\frac{\frac{1}{a} \cdot \left(\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} - b\right)}{2}\\ \mathbf{else}:\\ \;\;\;\;\frac{\frac{c}{b} \cdot -2}{2}\\ \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 -5.836476522143192884813309842834615858794 \cdot 10^{134}:\\
\;\;\;\;\frac{\left(2 \cdot \frac{c}{b} - \frac{b}{a}\right) - \frac{b}{a}}{2}\\

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

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

\end{array}
double f(double a, double b, double c) {
        double r4166439 = b;
        double r4166440 = -r4166439;
        double r4166441 = r4166439 * r4166439;
        double r4166442 = 4.0;
        double r4166443 = a;
        double r4166444 = c;
        double r4166445 = r4166443 * r4166444;
        double r4166446 = r4166442 * r4166445;
        double r4166447 = r4166441 - r4166446;
        double r4166448 = sqrt(r4166447);
        double r4166449 = r4166440 + r4166448;
        double r4166450 = 2.0;
        double r4166451 = r4166450 * r4166443;
        double r4166452 = r4166449 / r4166451;
        return r4166452;
}

double f(double a, double b, double c) {
        double r4166453 = b;
        double r4166454 = -5.836476522143193e+134;
        bool r4166455 = r4166453 <= r4166454;
        double r4166456 = 2.0;
        double r4166457 = c;
        double r4166458 = r4166457 / r4166453;
        double r4166459 = r4166456 * r4166458;
        double r4166460 = a;
        double r4166461 = r4166453 / r4166460;
        double r4166462 = r4166459 - r4166461;
        double r4166463 = r4166462 - r4166461;
        double r4166464 = r4166463 / r4166456;
        double r4166465 = 8.272706925888016e-43;
        bool r4166466 = r4166453 <= r4166465;
        double r4166467 = 1.0;
        double r4166468 = r4166467 / r4166460;
        double r4166469 = r4166453 * r4166453;
        double r4166470 = 4.0;
        double r4166471 = r4166470 * r4166460;
        double r4166472 = r4166471 * r4166457;
        double r4166473 = r4166469 - r4166472;
        double r4166474 = sqrt(r4166473);
        double r4166475 = r4166474 - r4166453;
        double r4166476 = r4166468 * r4166475;
        double r4166477 = r4166476 / r4166456;
        double r4166478 = -2.0;
        double r4166479 = r4166458 * r4166478;
        double r4166480 = r4166479 / r4166456;
        double r4166481 = r4166466 ? r4166477 : r4166480;
        double r4166482 = r4166455 ? r4166464 : r4166481;
        return r4166482;
}

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.0
Target21.1
Herbie10.2
\[\begin{array}{l} \mathbf{if}\;b \lt 0.0:\\ \;\;\;\;\frac{\left(-b\right) + \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}{2 \cdot a}\\ \mathbf{else}:\\ \;\;\;\;\frac{c}{a \cdot \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 < -5.836476522143193e+134

    1. Initial program 56.2

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

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

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

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

    if -5.836476522143193e+134 < b < 8.272706925888016e-43

    1. Initial program 14.0

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

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

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

    if 8.272706925888016e-43 < b

    1. Initial program 54.4

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

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;b \le -5.836476522143192884813309842834615858794 \cdot 10^{134}:\\ \;\;\;\;\frac{\left(2 \cdot \frac{c}{b} - \frac{b}{a}\right) - \frac{b}{a}}{2}\\ \mathbf{elif}\;b \le 8.272706925888016273629504343982488312855 \cdot 10^{-43}:\\ \;\;\;\;\frac{\frac{1}{a} \cdot \left(\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} - b\right)}{2}\\ \mathbf{else}:\\ \;\;\;\;\frac{\frac{c}{b} \cdot -2}{2}\\ \end{array}\]

Reproduce

herbie shell --seed 2019169 
(FPCore (a b c)
  :name "quadp (p42, positive)"

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

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