Average Error: 33.7 → 10.0
Time: 17.6s
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 -4.1982115506822474 \cdot 10^{+126}:\\ \;\;\;\;\frac{1}{2} \cdot \frac{c}{b_2} - \frac{b_2}{a} \cdot 2\\ \mathbf{elif}\;b_2 \le 2.6443485350724205 \cdot 10^{-92}:\\ \;\;\;\;\frac{\sqrt{b_2 \cdot b_2 - c \cdot a} - b_2}{a}\\ \mathbf{else}:\\ \;\;\;\;\frac{c}{b_2} \cdot \frac{-1}{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 -4.1982115506822474 \cdot 10^{+126}:\\
\;\;\;\;\frac{1}{2} \cdot \frac{c}{b_2} - \frac{b_2}{a} \cdot 2\\

\mathbf{elif}\;b_2 \le 2.6443485350724205 \cdot 10^{-92}:\\
\;\;\;\;\frac{\sqrt{b_2 \cdot b_2 - c \cdot a} - b_2}{a}\\

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

\end{array}
double f(double a, double b_2, double c) {
        double r490289 = b_2;
        double r490290 = -r490289;
        double r490291 = r490289 * r490289;
        double r490292 = a;
        double r490293 = c;
        double r490294 = r490292 * r490293;
        double r490295 = r490291 - r490294;
        double r490296 = sqrt(r490295);
        double r490297 = r490290 + r490296;
        double r490298 = r490297 / r490292;
        return r490298;
}

double f(double a, double b_2, double c) {
        double r490299 = b_2;
        double r490300 = -4.1982115506822474e+126;
        bool r490301 = r490299 <= r490300;
        double r490302 = 0.5;
        double r490303 = c;
        double r490304 = r490303 / r490299;
        double r490305 = r490302 * r490304;
        double r490306 = a;
        double r490307 = r490299 / r490306;
        double r490308 = 2.0;
        double r490309 = r490307 * r490308;
        double r490310 = r490305 - r490309;
        double r490311 = 2.6443485350724205e-92;
        bool r490312 = r490299 <= r490311;
        double r490313 = r490299 * r490299;
        double r490314 = r490303 * r490306;
        double r490315 = r490313 - r490314;
        double r490316 = sqrt(r490315);
        double r490317 = r490316 - r490299;
        double r490318 = r490317 / r490306;
        double r490319 = -0.5;
        double r490320 = r490304 * r490319;
        double r490321 = r490312 ? r490318 : r490320;
        double r490322 = r490301 ? r490310 : r490321;
        return r490322;
}

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 3 regimes
  2. if b_2 < -4.1982115506822474e+126

    1. Initial program 51.7

      \[\frac{\left(-b_2\right) + \sqrt{b_2 \cdot b_2 - a \cdot c}}{a}\]
    2. Simplified51.7

      \[\leadsto \color{blue}{\frac{\sqrt{b_2 \cdot b_2 - a \cdot c} - b_2}{a}}\]
    3. Taylor expanded around -inf 3.4

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

    if -4.1982115506822474e+126 < b_2 < 2.6443485350724205e-92

    1. Initial program 12.2

      \[\frac{\left(-b_2\right) + \sqrt{b_2 \cdot b_2 - a \cdot c}}{a}\]
    2. Simplified12.2

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

    if 2.6443485350724205e-92 < b_2

    1. Initial program 51.9

      \[\frac{\left(-b_2\right) + \sqrt{b_2 \cdot b_2 - a \cdot c}}{a}\]
    2. Simplified51.9

      \[\leadsto \color{blue}{\frac{\sqrt{b_2 \cdot b_2 - a \cdot c} - b_2}{a}}\]
    3. Using strategy rm
    4. Applied div-inv51.9

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;b_2 \le -4.1982115506822474 \cdot 10^{+126}:\\ \;\;\;\;\frac{1}{2} \cdot \frac{c}{b_2} - \frac{b_2}{a} \cdot 2\\ \mathbf{elif}\;b_2 \le 2.6443485350724205 \cdot 10^{-92}:\\ \;\;\;\;\frac{\sqrt{b_2 \cdot b_2 - c \cdot a} - b_2}{a}\\ \mathbf{else}:\\ \;\;\;\;\frac{c}{b_2} \cdot \frac{-1}{2}\\ \end{array}\]

Reproduce

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