Average Error: 33.8 → 9.9
Time: 30.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 -3.8424248185280593 \cdot 10^{-34}:\\ \;\;\;\;\frac{-1}{2} \cdot \frac{c}{b_2}\\ \mathbf{elif}\;b_2 \le 2.276690291884487 \cdot 10^{80}:\\ \;\;\;\;\left(\left(-b_2\right) - \sqrt{b_2 \cdot b_2 - a \cdot c}\right) \cdot \frac{1}{a}\\ \mathbf{else}:\\ \;\;\;\;-2 \cdot \frac{b_2}{a}\\ \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 -3.8424248185280593 \cdot 10^{-34}:\\
\;\;\;\;\frac{-1}{2} \cdot \frac{c}{b_2}\\

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

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

\end{array}
double f(double a, double b_2, double c) {
        double r27804 = b_2;
        double r27805 = -r27804;
        double r27806 = r27804 * r27804;
        double r27807 = a;
        double r27808 = c;
        double r27809 = r27807 * r27808;
        double r27810 = r27806 - r27809;
        double r27811 = sqrt(r27810);
        double r27812 = r27805 - r27811;
        double r27813 = r27812 / r27807;
        return r27813;
}

double f(double a, double b_2, double c) {
        double r27814 = b_2;
        double r27815 = -3.8424248185280593e-34;
        bool r27816 = r27814 <= r27815;
        double r27817 = -0.5;
        double r27818 = c;
        double r27819 = r27818 / r27814;
        double r27820 = r27817 * r27819;
        double r27821 = 2.2766902918844874e+80;
        bool r27822 = r27814 <= r27821;
        double r27823 = -r27814;
        double r27824 = r27814 * r27814;
        double r27825 = a;
        double r27826 = r27825 * r27818;
        double r27827 = r27824 - r27826;
        double r27828 = sqrt(r27827);
        double r27829 = r27823 - r27828;
        double r27830 = 1.0;
        double r27831 = r27830 / r27825;
        double r27832 = r27829 * r27831;
        double r27833 = -2.0;
        double r27834 = r27814 / r27825;
        double r27835 = r27833 * r27834;
        double r27836 = r27822 ? r27832 : r27835;
        double r27837 = r27816 ? r27820 : r27836;
        return r27837;
}

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 < -3.8424248185280593e-34

    1. Initial program 54.2

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

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

    if -3.8424248185280593e-34 < b_2 < 2.2766902918844874e+80

    1. Initial program 13.9

      \[\frac{\left(-b_2\right) - \sqrt{b_2 \cdot b_2 - a \cdot c}}{a}\]
    2. Using strategy rm
    3. Applied div-inv14.0

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

    if 2.2766902918844874e+80 < b_2

    1. Initial program 44.4

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

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

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

      \[\leadsto \color{blue}{-2 \cdot \frac{b_2}{a}}\]
  3. Recombined 3 regimes into one program.
  4. Final simplification9.9

    \[\leadsto \begin{array}{l} \mathbf{if}\;b_2 \le -3.8424248185280593 \cdot 10^{-34}:\\ \;\;\;\;\frac{-1}{2} \cdot \frac{c}{b_2}\\ \mathbf{elif}\;b_2 \le 2.276690291884487 \cdot 10^{80}:\\ \;\;\;\;\left(\left(-b_2\right) - \sqrt{b_2 \cdot b_2 - a \cdot c}\right) \cdot \frac{1}{a}\\ \mathbf{else}:\\ \;\;\;\;-2 \cdot \frac{b_2}{a}\\ \end{array}\]

Reproduce

herbie shell --seed 2019199 +o rules:numerics
(FPCore (a b_2 c)
  :name "quad2m (problem 3.2.1, negative)"
  (/ (- (- b_2) (sqrt (- (* b_2 b_2) (* a c)))) a))