Average Error: 33.6 → 6.6
Time: 18.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.5014200692921863 \cdot 10^{+151}:\\ \;\;\;\;\frac{-1}{2} \cdot \frac{c}{b_2}\\ \mathbf{elif}\;b_2 \le -2.1709787588541967 \cdot 10^{-224}:\\ \;\;\;\;\frac{1}{\left(\sqrt{b_2 \cdot b_2 - c \cdot a} - b_2\right) \cdot \frac{1}{c}}\\ \mathbf{elif}\;b_2 \le 1.9396144761399596 \cdot 10^{+100}:\\ \;\;\;\;\left(\left(-b_2\right) - \sqrt{b_2 \cdot b_2 - c \cdot a}\right) \cdot \frac{1}{a}\\ \mathbf{else}:\\ \;\;\;\;\frac{c}{b_2} \cdot \frac{1}{2} - 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.5014200692921863 \cdot 10^{+151}:\\
\;\;\;\;\frac{-1}{2} \cdot \frac{c}{b_2}\\

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

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

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

\end{array}
double f(double a, double b_2, double c) {
        double r420166 = b_2;
        double r420167 = -r420166;
        double r420168 = r420166 * r420166;
        double r420169 = a;
        double r420170 = c;
        double r420171 = r420169 * r420170;
        double r420172 = r420168 - r420171;
        double r420173 = sqrt(r420172);
        double r420174 = r420167 - r420173;
        double r420175 = r420174 / r420169;
        return r420175;
}

double f(double a, double b_2, double c) {
        double r420176 = b_2;
        double r420177 = -3.5014200692921863e+151;
        bool r420178 = r420176 <= r420177;
        double r420179 = -0.5;
        double r420180 = c;
        double r420181 = r420180 / r420176;
        double r420182 = r420179 * r420181;
        double r420183 = -2.1709787588541967e-224;
        bool r420184 = r420176 <= r420183;
        double r420185 = 1.0;
        double r420186 = r420176 * r420176;
        double r420187 = a;
        double r420188 = r420180 * r420187;
        double r420189 = r420186 - r420188;
        double r420190 = sqrt(r420189);
        double r420191 = r420190 - r420176;
        double r420192 = r420185 / r420180;
        double r420193 = r420191 * r420192;
        double r420194 = r420185 / r420193;
        double r420195 = 1.9396144761399596e+100;
        bool r420196 = r420176 <= r420195;
        double r420197 = -r420176;
        double r420198 = r420197 - r420190;
        double r420199 = r420185 / r420187;
        double r420200 = r420198 * r420199;
        double r420201 = 0.5;
        double r420202 = r420181 * r420201;
        double r420203 = 2.0;
        double r420204 = r420176 / r420187;
        double r420205 = r420203 * r420204;
        double r420206 = r420202 - r420205;
        double r420207 = r420196 ? r420200 : r420206;
        double r420208 = r420184 ? r420194 : r420207;
        double r420209 = r420178 ? r420182 : r420208;
        return r420209;
}

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 < -3.5014200692921863e+151

    1. Initial program 62.5

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

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

    if -3.5014200692921863e+151 < b_2 < -2.1709787588541967e-224

    1. Initial program 38.0

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

      \[\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. Simplified15.4

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

      \[\leadsto \frac{\frac{0 + a \cdot c}{\color{blue}{\sqrt{b_2 \cdot b_2 - a \cdot c} - b_2}}}{a}\]
    6. Using strategy rm
    7. Applied clear-num15.5

      \[\leadsto \color{blue}{\frac{1}{\frac{a}{\frac{0 + a \cdot c}{\sqrt{b_2 \cdot b_2 - a \cdot c} - b_2}}}}\]
    8. Simplified13.7

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

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

    if -2.1709787588541967e-224 < b_2 < 1.9396144761399596e+100

    1. Initial program 10.0

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

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

    if 1.9396144761399596e+100 < b_2

    1. Initial program 44.2

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;b_2 \le -3.5014200692921863 \cdot 10^{+151}:\\ \;\;\;\;\frac{-1}{2} \cdot \frac{c}{b_2}\\ \mathbf{elif}\;b_2 \le -2.1709787588541967 \cdot 10^{-224}:\\ \;\;\;\;\frac{1}{\left(\sqrt{b_2 \cdot b_2 - c \cdot a} - b_2\right) \cdot \frac{1}{c}}\\ \mathbf{elif}\;b_2 \le 1.9396144761399596 \cdot 10^{+100}:\\ \;\;\;\;\left(\left(-b_2\right) - \sqrt{b_2 \cdot b_2 - c \cdot a}\right) \cdot \frac{1}{a}\\ \mathbf{else}:\\ \;\;\;\;\frac{c}{b_2} \cdot \frac{1}{2} - 2 \cdot \frac{b_2}{a}\\ \end{array}\]

Reproduce

herbie shell --seed 2019151 
(FPCore (a b_2 c)
  :name "quad2m (problem 3.2.1, negative)"
  (/ (- (- b_2) (sqrt (- (* b_2 b_2) (* a c)))) a))