Average Error: 34.1 → 6.4
Time: 18.8s
Precision: 64
\[\frac{\left(-b_2\right) + \sqrt{b_2 \cdot b_2 - a \cdot c}}{a}\]
\[\begin{array}{l} \mathbf{if}\;b_2 \le -1.406599291770866912849299146668339118937 \cdot 10^{122}:\\ \;\;\;\;\frac{1}{2} \cdot \frac{c}{b_2} - 2 \cdot \frac{b_2}{a}\\ \mathbf{elif}\;b_2 \le -3.517798769679198567266373905152163688501 \cdot 10^{-300}:\\ \;\;\;\;\frac{1}{\frac{a}{\sqrt{b_2 \cdot b_2 - a \cdot c} - b_2}}\\ \mathbf{elif}\;b_2 \le 5.732888581164670930257747643857376081135 \cdot 10^{134}:\\ \;\;\;\;\frac{c}{\left(-b_2\right) - \sqrt{b_2 \cdot b_2 - a \cdot c}}\\ \mathbf{else}:\\ \;\;\;\;\frac{-1}{2} \cdot \frac{c}{b_2}\\ \end{array}\]
\frac{\left(-b_2\right) + \sqrt{b_2 \cdot b_2 - a \cdot c}}{a}
\begin{array}{l}
\mathbf{if}\;b_2 \le -1.406599291770866912849299146668339118937 \cdot 10^{122}:\\
\;\;\;\;\frac{1}{2} \cdot \frac{c}{b_2} - 2 \cdot \frac{b_2}{a}\\

\mathbf{elif}\;b_2 \le -3.517798769679198567266373905152163688501 \cdot 10^{-300}:\\
\;\;\;\;\frac{1}{\frac{a}{\sqrt{b_2 \cdot b_2 - a \cdot c} - b_2}}\\

\mathbf{elif}\;b_2 \le 5.732888581164670930257747643857376081135 \cdot 10^{134}:\\
\;\;\;\;\frac{c}{\left(-b_2\right) - \sqrt{b_2 \cdot b_2 - a \cdot c}}\\

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

\end{array}
double f(double a, double b_2, double c) {
        double r24482 = b_2;
        double r24483 = -r24482;
        double r24484 = r24482 * r24482;
        double r24485 = a;
        double r24486 = c;
        double r24487 = r24485 * r24486;
        double r24488 = r24484 - r24487;
        double r24489 = sqrt(r24488);
        double r24490 = r24483 + r24489;
        double r24491 = r24490 / r24485;
        return r24491;
}

double f(double a, double b_2, double c) {
        double r24492 = b_2;
        double r24493 = -1.406599291770867e+122;
        bool r24494 = r24492 <= r24493;
        double r24495 = 0.5;
        double r24496 = c;
        double r24497 = r24496 / r24492;
        double r24498 = r24495 * r24497;
        double r24499 = 2.0;
        double r24500 = a;
        double r24501 = r24492 / r24500;
        double r24502 = r24499 * r24501;
        double r24503 = r24498 - r24502;
        double r24504 = -3.5177987696791986e-300;
        bool r24505 = r24492 <= r24504;
        double r24506 = 1.0;
        double r24507 = r24492 * r24492;
        double r24508 = r24500 * r24496;
        double r24509 = r24507 - r24508;
        double r24510 = sqrt(r24509);
        double r24511 = r24510 - r24492;
        double r24512 = r24500 / r24511;
        double r24513 = r24506 / r24512;
        double r24514 = 5.732888581164671e+134;
        bool r24515 = r24492 <= r24514;
        double r24516 = -r24492;
        double r24517 = r24516 - r24510;
        double r24518 = r24496 / r24517;
        double r24519 = -0.5;
        double r24520 = r24519 * r24497;
        double r24521 = r24515 ? r24518 : r24520;
        double r24522 = r24505 ? r24513 : r24521;
        double r24523 = r24494 ? r24503 : r24522;
        return r24523;
}

Error

Bits error versus a

Bits error versus b_2

Bits error versus c

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

  1. Split input into 4 regimes
  2. if b_2 < -1.406599291770867e+122

    1. Initial program 51.8

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

      \[\leadsto \color{blue}{\frac{1}{2} \cdot \frac{c}{b_2} - 2 \cdot \frac{b_2}{a}}\]

    if -1.406599291770867e+122 < b_2 < -3.5177987696791986e-300

    1. Initial program 8.2

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

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

      \[\leadsto \frac{1}{\color{blue}{\frac{a}{\sqrt{b_2 \cdot b_2 - a \cdot c} - b_2}}}\]

    if -3.5177987696791986e-300 < b_2 < 5.732888581164671e+134

    1. Initial program 33.9

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

      \[\leadsto \frac{\color{blue}{\frac{\left(-b_2\right) \cdot \left(-b_2\right) - \sqrt{b_2 \cdot b_2 - a \cdot c} \cdot \sqrt{b_2 \cdot b_2 - a \cdot c}}{\left(-b_2\right) - \sqrt{b_2 \cdot b_2 - a \cdot c}}}}{a}\]
    4. Simplified16.6

      \[\leadsto \frac{\frac{\color{blue}{a \cdot c}}{\left(-b_2\right) - \sqrt{b_2 \cdot b_2 - a \cdot c}}}{a}\]
    5. Using strategy rm
    6. Applied *-un-lft-identity16.6

      \[\leadsto \frac{\frac{a \cdot c}{\left(-b_2\right) - \sqrt{b_2 \cdot b_2 - a \cdot c}}}{\color{blue}{1 \cdot a}}\]
    7. Applied *-un-lft-identity16.6

      \[\leadsto \frac{\color{blue}{1 \cdot \frac{a \cdot c}{\left(-b_2\right) - \sqrt{b_2 \cdot b_2 - a \cdot c}}}}{1 \cdot a}\]
    8. Applied times-frac16.6

      \[\leadsto \color{blue}{\frac{1}{1} \cdot \frac{\frac{a \cdot c}{\left(-b_2\right) - \sqrt{b_2 \cdot b_2 - a \cdot c}}}{a}}\]
    9. Simplified16.6

      \[\leadsto \color{blue}{1} \cdot \frac{\frac{a \cdot c}{\left(-b_2\right) - \sqrt{b_2 \cdot b_2 - a \cdot c}}}{a}\]
    10. Simplified8.6

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

    if 5.732888581164671e+134 < b_2

    1. Initial program 62.2

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;b_2 \le -1.406599291770866912849299146668339118937 \cdot 10^{122}:\\ \;\;\;\;\frac{1}{2} \cdot \frac{c}{b_2} - 2 \cdot \frac{b_2}{a}\\ \mathbf{elif}\;b_2 \le -3.517798769679198567266373905152163688501 \cdot 10^{-300}:\\ \;\;\;\;\frac{1}{\frac{a}{\sqrt{b_2 \cdot b_2 - a \cdot c} - b_2}}\\ \mathbf{elif}\;b_2 \le 5.732888581164670930257747643857376081135 \cdot 10^{134}:\\ \;\;\;\;\frac{c}{\left(-b_2\right) - \sqrt{b_2 \cdot b_2 - a \cdot c}}\\ \mathbf{else}:\\ \;\;\;\;\frac{-1}{2} \cdot \frac{c}{b_2}\\ \end{array}\]

Reproduce

herbie shell --seed 2019326 
(FPCore (a b_2 c)
  :name "quad2p (problem 3.2.1, positive)"
  :precision binary64
  (/ (+ (- b_2) (sqrt (- (* b_2 b_2) (* a c)))) a))