Average Error: 34.4 → 8.4
Time: 44.3s
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.234164035284793 \cdot 10^{+22}:\\ \;\;\;\;\frac{-1}{2} \cdot \frac{c}{b_2}\\ \mathbf{elif}\;b_2 \le -2.4242286502051438 \cdot 10^{-135}:\\ \;\;\;\;\frac{\frac{a \cdot c + \left(b_2 \cdot b_2 - b_2 \cdot b_2\right)}{\sqrt{b_2 \cdot b_2 - a \cdot c} - b_2}}{a}\\ \mathbf{elif}\;b_2 \le 1.7205132563858266 \cdot 10^{+103}:\\ \;\;\;\;\frac{1}{a} \cdot \left(\left(-b_2\right) - \sqrt{b_2 \cdot b_2 - a \cdot c}\right)\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(\frac{1}{2}, \frac{c}{b_2}, \frac{-2 \cdot b_2}{a}\right)\\ \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.234164035284793 \cdot 10^{+22}:\\
\;\;\;\;\frac{-1}{2} \cdot \frac{c}{b_2}\\

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

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

\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(\frac{1}{2}, \frac{c}{b_2}, \frac{-2 \cdot b_2}{a}\right)\\

\end{array}
double f(double a, double b_2, double c) {
        double r4117230 = b_2;
        double r4117231 = -r4117230;
        double r4117232 = r4117230 * r4117230;
        double r4117233 = a;
        double r4117234 = c;
        double r4117235 = r4117233 * r4117234;
        double r4117236 = r4117232 - r4117235;
        double r4117237 = sqrt(r4117236);
        double r4117238 = r4117231 - r4117237;
        double r4117239 = r4117238 / r4117233;
        return r4117239;
}

double f(double a, double b_2, double c) {
        double r4117240 = b_2;
        double r4117241 = -3.234164035284793e+22;
        bool r4117242 = r4117240 <= r4117241;
        double r4117243 = -0.5;
        double r4117244 = c;
        double r4117245 = r4117244 / r4117240;
        double r4117246 = r4117243 * r4117245;
        double r4117247 = -2.4242286502051438e-135;
        bool r4117248 = r4117240 <= r4117247;
        double r4117249 = a;
        double r4117250 = r4117249 * r4117244;
        double r4117251 = r4117240 * r4117240;
        double r4117252 = r4117251 - r4117251;
        double r4117253 = r4117250 + r4117252;
        double r4117254 = r4117251 - r4117250;
        double r4117255 = sqrt(r4117254);
        double r4117256 = r4117255 - r4117240;
        double r4117257 = r4117253 / r4117256;
        double r4117258 = r4117257 / r4117249;
        double r4117259 = 1.7205132563858266e+103;
        bool r4117260 = r4117240 <= r4117259;
        double r4117261 = 1.0;
        double r4117262 = r4117261 / r4117249;
        double r4117263 = -r4117240;
        double r4117264 = r4117263 - r4117255;
        double r4117265 = r4117262 * r4117264;
        double r4117266 = 0.5;
        double r4117267 = -2.0;
        double r4117268 = r4117267 * r4117240;
        double r4117269 = r4117268 / r4117249;
        double r4117270 = fma(r4117266, r4117245, r4117269);
        double r4117271 = r4117260 ? r4117265 : r4117270;
        double r4117272 = r4117248 ? r4117258 : r4117271;
        double r4117273 = r4117242 ? r4117246 : r4117272;
        return r4117273;
}

Error

Bits error versus a

Bits error versus b_2

Bits error versus c

Derivation

  1. Split input into 4 regimes
  2. if b_2 < -3.234164035284793e+22

    1. Initial program 56.6

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

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

    if -3.234164035284793e+22 < b_2 < -2.4242286502051438e-135

    1. Initial program 36.2

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

      \[\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.0

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

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

    if -2.4242286502051438e-135 < b_2 < 1.7205132563858266e+103

    1. Initial program 11.1

      \[\frac{\left(-b_2\right) - \sqrt{b_2 \cdot b_2 - a \cdot c}}{a}\]
    2. Using strategy rm
    3. Applied div-inv11.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.7205132563858266e+103 < b_2

    1. Initial program 47.4

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

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

      \[\leadsto \color{blue}{\mathsf{fma}\left(\frac{1}{2}, \frac{c}{b_2}, \frac{-2 \cdot b_2}{a}\right)}\]
  3. Recombined 4 regimes into one program.
  4. Final simplification8.4

    \[\leadsto \begin{array}{l} \mathbf{if}\;b_2 \le -3.234164035284793 \cdot 10^{+22}:\\ \;\;\;\;\frac{-1}{2} \cdot \frac{c}{b_2}\\ \mathbf{elif}\;b_2 \le -2.4242286502051438 \cdot 10^{-135}:\\ \;\;\;\;\frac{\frac{a \cdot c + \left(b_2 \cdot b_2 - b_2 \cdot b_2\right)}{\sqrt{b_2 \cdot b_2 - a \cdot c} - b_2}}{a}\\ \mathbf{elif}\;b_2 \le 1.7205132563858266 \cdot 10^{+103}:\\ \;\;\;\;\frac{1}{a} \cdot \left(\left(-b_2\right) - \sqrt{b_2 \cdot b_2 - a \cdot c}\right)\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(\frac{1}{2}, \frac{c}{b_2}, \frac{-2 \cdot b_2}{a}\right)\\ \end{array}\]

Reproduce

herbie shell --seed 2019165 +o rules:numerics
(FPCore (a b_2 c)
  :name "NMSE problem 3.2.1"
  (/ (- (- b_2) (sqrt (- (* b_2 b_2) (* a c)))) a))