Average Error: 34.0 → 10.3
Time: 22.0s
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.177289780863109 \cdot 10^{+94}:\\ \;\;\;\;\mathsf{fma}\left(\frac{b_2}{a}, -2, \frac{1}{2} \cdot \frac{c}{b_2}\right)\\ \mathbf{elif}\;b_2 \le 7.296044290893796 \cdot 10^{-114}:\\ \;\;\;\;\frac{\sqrt{b_2 \cdot b_2 - a \cdot c} - 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 -3.177289780863109 \cdot 10^{+94}:\\
\;\;\;\;\mathsf{fma}\left(\frac{b_2}{a}, -2, \frac{1}{2} \cdot \frac{c}{b_2}\right)\\

\mathbf{elif}\;b_2 \le 7.296044290893796 \cdot 10^{-114}:\\
\;\;\;\;\frac{\sqrt{b_2 \cdot b_2 - a \cdot c} - 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 r613309 = b_2;
        double r613310 = -r613309;
        double r613311 = r613309 * r613309;
        double r613312 = a;
        double r613313 = c;
        double r613314 = r613312 * r613313;
        double r613315 = r613311 - r613314;
        double r613316 = sqrt(r613315);
        double r613317 = r613310 + r613316;
        double r613318 = r613317 / r613312;
        return r613318;
}

double f(double a, double b_2, double c) {
        double r613319 = b_2;
        double r613320 = -3.177289780863109e+94;
        bool r613321 = r613319 <= r613320;
        double r613322 = a;
        double r613323 = r613319 / r613322;
        double r613324 = -2.0;
        double r613325 = 0.5;
        double r613326 = c;
        double r613327 = r613326 / r613319;
        double r613328 = r613325 * r613327;
        double r613329 = fma(r613323, r613324, r613328);
        double r613330 = 7.296044290893796e-114;
        bool r613331 = r613319 <= r613330;
        double r613332 = r613319 * r613319;
        double r613333 = r613322 * r613326;
        double r613334 = r613332 - r613333;
        double r613335 = sqrt(r613334);
        double r613336 = r613335 - r613319;
        double r613337 = r613336 / r613322;
        double r613338 = -0.5;
        double r613339 = r613327 * r613338;
        double r613340 = r613331 ? r613337 : r613339;
        double r613341 = r613321 ? r613329 : r613340;
        return r613341;
}

Error

Bits error versus a

Bits error versus b_2

Bits error versus c

Derivation

  1. Split input into 3 regimes
  2. if b_2 < -3.177289780863109e+94

    1. Initial program 43.5

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

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

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

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

    if -3.177289780863109e+94 < b_2 < 7.296044290893796e-114

    1. Initial program 12.3

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

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

      \[\leadsto \frac{\sqrt{\color{blue}{{b_2}^{2} - a \cdot c}} - b_2}{a}\]
    4. Simplified12.3

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

    if 7.296044290893796e-114 < b_2

    1. Initial program 51.6

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

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

      \[\leadsto \frac{\sqrt{\color{blue}{{b_2}^{2} - a \cdot c}} - b_2}{a}\]
    4. Simplified51.6

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;b_2 \le -3.177289780863109 \cdot 10^{+94}:\\ \;\;\;\;\mathsf{fma}\left(\frac{b_2}{a}, -2, \frac{1}{2} \cdot \frac{c}{b_2}\right)\\ \mathbf{elif}\;b_2 \le 7.296044290893796 \cdot 10^{-114}:\\ \;\;\;\;\frac{\sqrt{b_2 \cdot b_2 - a \cdot c} - b_2}{a}\\ \mathbf{else}:\\ \;\;\;\;\frac{c}{b_2} \cdot \frac{-1}{2}\\ \end{array}\]

Reproduce

herbie shell --seed 2019141 +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))