Average Error: 32.9 → 11.3
Time: 2.8m
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 -2.880394710329243 \cdot 10^{+120}:\\ \;\;\;\;\left(\frac{1}{2} \cdot \frac{c}{b_2} - \frac{b_2}{a}\right) - \frac{b_2}{a}\\ \mathbf{elif}\;b_2 \le 6.671555931634925 \cdot 10^{+42}:\\ \;\;\;\;\frac{\sqrt{b_2 \cdot b_2 - a \cdot c}}{a} - \frac{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 -2.880394710329243 \cdot 10^{+120}:\\
\;\;\;\;\left(\frac{1}{2} \cdot \frac{c}{b_2} - \frac{b_2}{a}\right) - \frac{b_2}{a}\\

\mathbf{elif}\;b_2 \le 6.671555931634925 \cdot 10^{+42}:\\
\;\;\;\;\frac{\sqrt{b_2 \cdot b_2 - a \cdot c}}{a} - \frac{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 r4672151 = b_2;
        double r4672152 = -r4672151;
        double r4672153 = r4672151 * r4672151;
        double r4672154 = a;
        double r4672155 = c;
        double r4672156 = r4672154 * r4672155;
        double r4672157 = r4672153 - r4672156;
        double r4672158 = sqrt(r4672157);
        double r4672159 = r4672152 + r4672158;
        double r4672160 = r4672159 / r4672154;
        return r4672160;
}

double f(double a, double b_2, double c) {
        double r4672161 = b_2;
        double r4672162 = -2.880394710329243e+120;
        bool r4672163 = r4672161 <= r4672162;
        double r4672164 = 0.5;
        double r4672165 = c;
        double r4672166 = r4672165 / r4672161;
        double r4672167 = r4672164 * r4672166;
        double r4672168 = a;
        double r4672169 = r4672161 / r4672168;
        double r4672170 = r4672167 - r4672169;
        double r4672171 = r4672170 - r4672169;
        double r4672172 = 6.671555931634925e+42;
        bool r4672173 = r4672161 <= r4672172;
        double r4672174 = r4672161 * r4672161;
        double r4672175 = r4672168 * r4672165;
        double r4672176 = r4672174 - r4672175;
        double r4672177 = sqrt(r4672176);
        double r4672178 = r4672177 / r4672168;
        double r4672179 = r4672178 - r4672169;
        double r4672180 = -0.5;
        double r4672181 = r4672166 * r4672180;
        double r4672182 = r4672173 ? r4672179 : r4672181;
        double r4672183 = r4672163 ? r4672171 : r4672182;
        return r4672183;
}

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 < -2.880394710329243e+120

    1. Initial program 49.0

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

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

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

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

    if -2.880394710329243e+120 < b_2 < 6.671555931634925e+42

    1. Initial program 17.0

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

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

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

    if 6.671555931634925e+42 < b_2

    1. Initial program 56.4

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

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;b_2 \le -2.880394710329243 \cdot 10^{+120}:\\ \;\;\;\;\left(\frac{1}{2} \cdot \frac{c}{b_2} - \frac{b_2}{a}\right) - \frac{b_2}{a}\\ \mathbf{elif}\;b_2 \le 6.671555931634925 \cdot 10^{+42}:\\ \;\;\;\;\frac{\sqrt{b_2 \cdot b_2 - a \cdot c}}{a} - \frac{b_2}{a}\\ \mathbf{else}:\\ \;\;\;\;\frac{c}{b_2} \cdot \frac{-1}{2}\\ \end{array}\]

Reproduce

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