Average Error: 33.8 → 9.4
Time: 17.8s
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 -0.03099989563658142946445117615894560003653:\\ \;\;\;\;\frac{-1}{2} \cdot \frac{c}{b_2}\\ \mathbf{elif}\;b_2 \le 5.992812285264992608677553115821113751089 \cdot 10^{-289}:\\ \;\;\;\;\frac{\frac{c \cdot a}{\sqrt{b_2 \cdot b_2 - c \cdot a} - b_2}}{a}\\ \mathbf{elif}\;b_2 \le 63580190853209333432320:\\ \;\;\;\;\frac{\mathsf{fma}\left(\sqrt[3]{b_2} \cdot \sqrt[3]{b_2}, -\sqrt[3]{b_2}, -\sqrt{b_2 \cdot b_2 - c \cdot a}\right)}{a}\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(\frac{b_2}{a}, -2, \frac{\frac{1}{2}}{\frac{b_2}{c}}\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 -0.03099989563658142946445117615894560003653:\\
\;\;\;\;\frac{-1}{2} \cdot \frac{c}{b_2}\\

\mathbf{elif}\;b_2 \le 5.992812285264992608677553115821113751089 \cdot 10^{-289}:\\
\;\;\;\;\frac{\frac{c \cdot a}{\sqrt{b_2 \cdot b_2 - c \cdot a} - b_2}}{a}\\

\mathbf{elif}\;b_2 \le 63580190853209333432320:\\
\;\;\;\;\frac{\mathsf{fma}\left(\sqrt[3]{b_2} \cdot \sqrt[3]{b_2}, -\sqrt[3]{b_2}, -\sqrt{b_2 \cdot b_2 - c \cdot a}\right)}{a}\\

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

\end{array}
double f(double a, double b_2, double c) {
        double r2522157 = b_2;
        double r2522158 = -r2522157;
        double r2522159 = r2522157 * r2522157;
        double r2522160 = a;
        double r2522161 = c;
        double r2522162 = r2522160 * r2522161;
        double r2522163 = r2522159 - r2522162;
        double r2522164 = sqrt(r2522163);
        double r2522165 = r2522158 - r2522164;
        double r2522166 = r2522165 / r2522160;
        return r2522166;
}

double f(double a, double b_2, double c) {
        double r2522167 = b_2;
        double r2522168 = -0.03099989563658143;
        bool r2522169 = r2522167 <= r2522168;
        double r2522170 = -0.5;
        double r2522171 = c;
        double r2522172 = r2522171 / r2522167;
        double r2522173 = r2522170 * r2522172;
        double r2522174 = 5.992812285264993e-289;
        bool r2522175 = r2522167 <= r2522174;
        double r2522176 = a;
        double r2522177 = r2522171 * r2522176;
        double r2522178 = r2522167 * r2522167;
        double r2522179 = r2522178 - r2522177;
        double r2522180 = sqrt(r2522179);
        double r2522181 = r2522180 - r2522167;
        double r2522182 = r2522177 / r2522181;
        double r2522183 = r2522182 / r2522176;
        double r2522184 = 6.358019085320933e+22;
        bool r2522185 = r2522167 <= r2522184;
        double r2522186 = cbrt(r2522167);
        double r2522187 = r2522186 * r2522186;
        double r2522188 = -r2522186;
        double r2522189 = -r2522180;
        double r2522190 = fma(r2522187, r2522188, r2522189);
        double r2522191 = r2522190 / r2522176;
        double r2522192 = r2522167 / r2522176;
        double r2522193 = -2.0;
        double r2522194 = 0.5;
        double r2522195 = r2522167 / r2522171;
        double r2522196 = r2522194 / r2522195;
        double r2522197 = fma(r2522192, r2522193, r2522196);
        double r2522198 = r2522185 ? r2522191 : r2522197;
        double r2522199 = r2522175 ? r2522183 : r2522198;
        double r2522200 = r2522169 ? r2522173 : r2522199;
        return r2522200;
}

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 < -0.03099989563658143

    1. Initial program 55.6

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

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

    if -0.03099989563658143 < b_2 < 5.992812285264993e-289

    1. Initial program 24.4

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

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

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

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

    if 5.992812285264993e-289 < b_2 < 6.358019085320933e+22

    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 add-cube-cbrt10.3

      \[\leadsto \frac{\left(-\color{blue}{\left(\sqrt[3]{b_2} \cdot \sqrt[3]{b_2}\right) \cdot \sqrt[3]{b_2}}\right) - \sqrt{b_2 \cdot b_2 - a \cdot c}}{a}\]
    4. Applied distribute-rgt-neg-in10.3

      \[\leadsto \frac{\color{blue}{\left(\sqrt[3]{b_2} \cdot \sqrt[3]{b_2}\right) \cdot \left(-\sqrt[3]{b_2}\right)} - \sqrt{b_2 \cdot b_2 - a \cdot c}}{a}\]
    5. Applied fma-neg10.3

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

    if 6.358019085320933e+22 < b_2

    1. Initial program 33.1

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

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;b_2 \le -0.03099989563658142946445117615894560003653:\\ \;\;\;\;\frac{-1}{2} \cdot \frac{c}{b_2}\\ \mathbf{elif}\;b_2 \le 5.992812285264992608677553115821113751089 \cdot 10^{-289}:\\ \;\;\;\;\frac{\frac{c \cdot a}{\sqrt{b_2 \cdot b_2 - c \cdot a} - b_2}}{a}\\ \mathbf{elif}\;b_2 \le 63580190853209333432320:\\ \;\;\;\;\frac{\mathsf{fma}\left(\sqrt[3]{b_2} \cdot \sqrt[3]{b_2}, -\sqrt[3]{b_2}, -\sqrt{b_2 \cdot b_2 - c \cdot a}\right)}{a}\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(\frac{b_2}{a}, -2, \frac{\frac{1}{2}}{\frac{b_2}{c}}\right)\\ \end{array}\]

Reproduce

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