Average Error: 34.2 → 7.2
Time: 17.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 -3.828737593568666707297780122417133955299 \cdot 10^{109}:\\ \;\;\;\;\left(\frac{c}{b} - \frac{b}{a}\right) \cdot 1\\ \mathbf{elif}\;b \le -4.565615297402513793822059617442033581563 \cdot 10^{-201}:\\ \;\;\;\;\frac{\left|\sqrt[3]{{b}^{2} - 4 \cdot \left(a \cdot c\right)}\right| \cdot \sqrt{\sqrt[3]{{b}^{2} - 4 \cdot \left(a \cdot c\right)}} + \left(-b\right)}{a \cdot 2}\\ \mathbf{elif}\;b \le 4.287176096066254708923845932443784224798 \cdot 10^{77}:\\ \;\;\;\;\frac{1}{2} \cdot \frac{\frac{4}{\frac{1}{c}}}{-\left(b + \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}\right)}\\ \mathbf{else}:\\ \;\;\;\;\frac{c \cdot -1}{b}\\ \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 -3.828737593568666707297780122417133955299 \cdot 10^{109}:\\
\;\;\;\;\left(\frac{c}{b} - \frac{b}{a}\right) \cdot 1\\

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

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

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

\end{array}
double f(double a, double b, double c) {
        double r86436 = b;
        double r86437 = -r86436;
        double r86438 = r86436 * r86436;
        double r86439 = 4.0;
        double r86440 = a;
        double r86441 = c;
        double r86442 = r86440 * r86441;
        double r86443 = r86439 * r86442;
        double r86444 = r86438 - r86443;
        double r86445 = sqrt(r86444);
        double r86446 = r86437 + r86445;
        double r86447 = 2.0;
        double r86448 = r86447 * r86440;
        double r86449 = r86446 / r86448;
        return r86449;
}

double f(double a, double b, double c) {
        double r86450 = b;
        double r86451 = -3.828737593568667e+109;
        bool r86452 = r86450 <= r86451;
        double r86453 = c;
        double r86454 = r86453 / r86450;
        double r86455 = a;
        double r86456 = r86450 / r86455;
        double r86457 = r86454 - r86456;
        double r86458 = 1.0;
        double r86459 = r86457 * r86458;
        double r86460 = -4.565615297402514e-201;
        bool r86461 = r86450 <= r86460;
        double r86462 = 2.0;
        double r86463 = pow(r86450, r86462);
        double r86464 = 4.0;
        double r86465 = r86455 * r86453;
        double r86466 = r86464 * r86465;
        double r86467 = r86463 - r86466;
        double r86468 = cbrt(r86467);
        double r86469 = fabs(r86468);
        double r86470 = sqrt(r86468);
        double r86471 = r86469 * r86470;
        double r86472 = -r86450;
        double r86473 = r86471 + r86472;
        double r86474 = 2.0;
        double r86475 = r86455 * r86474;
        double r86476 = r86473 / r86475;
        double r86477 = 4.2871760960662547e+77;
        bool r86478 = r86450 <= r86477;
        double r86479 = 1.0;
        double r86480 = r86479 / r86474;
        double r86481 = r86479 / r86453;
        double r86482 = r86464 / r86481;
        double r86483 = r86450 * r86450;
        double r86484 = r86483 - r86466;
        double r86485 = sqrt(r86484);
        double r86486 = r86450 + r86485;
        double r86487 = -r86486;
        double r86488 = r86482 / r86487;
        double r86489 = r86480 * r86488;
        double r86490 = -1.0;
        double r86491 = r86453 * r86490;
        double r86492 = r86491 / r86450;
        double r86493 = r86478 ? r86489 : r86492;
        double r86494 = r86461 ? r86476 : r86493;
        double r86495 = r86452 ? r86459 : r86494;
        return r86495;
}

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.0
Herbie7.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 4 regimes
  2. if b < -3.828737593568667e+109

    1. Initial program 49.5

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

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

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

    if -3.828737593568667e+109 < b < -4.565615297402514e-201

    1. Initial program 8.1

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

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

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

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

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

    if -4.565615297402514e-201 < b < 4.2871760960662547e+77

    1. Initial program 28.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 flip-+28.5

      \[\leadsto \frac{\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)}}}}{2 \cdot a}\]
    4. Simplified16.7

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

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

      \[\leadsto \frac{\frac{0 + 4 \cdot \left(c \cdot a\right)}{\color{blue}{1 \cdot \left(\left(-b\right) - \sqrt{{b}^{2} - 4 \cdot \left(c \cdot a\right)}\right)}}}{2 \cdot a}\]
    8. Using strategy rm
    9. Applied *-un-lft-identity16.7

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

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

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

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

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

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

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

    if 4.2871760960662547e+77 < b

    1. Initial program 58.5

      \[\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}}\]
    3. Simplified3.5

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;b \le -3.828737593568666707297780122417133955299 \cdot 10^{109}:\\ \;\;\;\;\left(\frac{c}{b} - \frac{b}{a}\right) \cdot 1\\ \mathbf{elif}\;b \le -4.565615297402513793822059617442033581563 \cdot 10^{-201}:\\ \;\;\;\;\frac{\left|\sqrt[3]{{b}^{2} - 4 \cdot \left(a \cdot c\right)}\right| \cdot \sqrt{\sqrt[3]{{b}^{2} - 4 \cdot \left(a \cdot c\right)}} + \left(-b\right)}{a \cdot 2}\\ \mathbf{elif}\;b \le 4.287176096066254708923845932443784224798 \cdot 10^{77}:\\ \;\;\;\;\frac{1}{2} \cdot \frac{\frac{4}{\frac{1}{c}}}{-\left(b + \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}\right)}\\ \mathbf{else}:\\ \;\;\;\;\frac{c \cdot -1}{b}\\ \end{array}\]

Reproduce

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