Average Error: 33.5 → 10.4
Time: 21.3s
Precision: 64
\[\frac{\left(-b\right) + \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}{3 \cdot a}\]
\[\begin{array}{l} \mathbf{if}\;b \le -1.4577715279110013 \cdot 10^{+36}:\\ \;\;\;\;\frac{\mathsf{fma}\left(\frac{a}{\frac{b}{c}}, \frac{3}{2}, b \cdot -2\right)}{a \cdot 3}\\ \mathbf{elif}\;b \le 2.854741727591693 \cdot 10^{-61}:\\ \;\;\;\;\frac{\frac{\sqrt{\mathsf{fma}\left(b, b, \left(a \cdot c\right) \cdot -3\right)} - b}{3}}{a}\\ \mathbf{else}:\\ \;\;\;\;\frac{-1}{2} \cdot \frac{c}{b}\\ \end{array}\]
\frac{\left(-b\right) + \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}{3 \cdot a}
\begin{array}{l}
\mathbf{if}\;b \le -1.4577715279110013 \cdot 10^{+36}:\\
\;\;\;\;\frac{\mathsf{fma}\left(\frac{a}{\frac{b}{c}}, \frac{3}{2}, b \cdot -2\right)}{a \cdot 3}\\

\mathbf{elif}\;b \le 2.854741727591693 \cdot 10^{-61}:\\
\;\;\;\;\frac{\frac{\sqrt{\mathsf{fma}\left(b, b, \left(a \cdot c\right) \cdot -3\right)} - b}{3}}{a}\\

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

\end{array}
double f(double a, double b, double c) {
        double r3365818 = b;
        double r3365819 = -r3365818;
        double r3365820 = r3365818 * r3365818;
        double r3365821 = 3.0;
        double r3365822 = a;
        double r3365823 = r3365821 * r3365822;
        double r3365824 = c;
        double r3365825 = r3365823 * r3365824;
        double r3365826 = r3365820 - r3365825;
        double r3365827 = sqrt(r3365826);
        double r3365828 = r3365819 + r3365827;
        double r3365829 = r3365828 / r3365823;
        return r3365829;
}

double f(double a, double b, double c) {
        double r3365830 = b;
        double r3365831 = -1.4577715279110013e+36;
        bool r3365832 = r3365830 <= r3365831;
        double r3365833 = a;
        double r3365834 = c;
        double r3365835 = r3365830 / r3365834;
        double r3365836 = r3365833 / r3365835;
        double r3365837 = 1.5;
        double r3365838 = -2.0;
        double r3365839 = r3365830 * r3365838;
        double r3365840 = fma(r3365836, r3365837, r3365839);
        double r3365841 = 3.0;
        double r3365842 = r3365833 * r3365841;
        double r3365843 = r3365840 / r3365842;
        double r3365844 = 2.854741727591693e-61;
        bool r3365845 = r3365830 <= r3365844;
        double r3365846 = r3365833 * r3365834;
        double r3365847 = -3.0;
        double r3365848 = r3365846 * r3365847;
        double r3365849 = fma(r3365830, r3365830, r3365848);
        double r3365850 = sqrt(r3365849);
        double r3365851 = r3365850 - r3365830;
        double r3365852 = r3365851 / r3365841;
        double r3365853 = r3365852 / r3365833;
        double r3365854 = -0.5;
        double r3365855 = r3365834 / r3365830;
        double r3365856 = r3365854 * r3365855;
        double r3365857 = r3365845 ? r3365853 : r3365856;
        double r3365858 = r3365832 ? r3365843 : r3365857;
        return r3365858;
}

Error

Bits error versus a

Bits error versus b

Bits error versus c

Derivation

  1. Split input into 3 regimes
  2. if b < -1.4577715279110013e+36

    1. Initial program 35.6

      \[\frac{\left(-b\right) + \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}{3 \cdot a}\]
    2. Taylor expanded around -inf 10.5

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

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

    if -1.4577715279110013e+36 < b < 2.854741727591693e-61

    1. Initial program 14.5

      \[\frac{\left(-b\right) + \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}{3 \cdot a}\]
    2. Using strategy rm
    3. Applied associate-/r*14.6

      \[\leadsto \color{blue}{\frac{\frac{\left(-b\right) + \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}{3}}{a}}\]
    4. Simplified14.6

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

    if 2.854741727591693e-61 < b

    1. Initial program 52.8

      \[\frac{\left(-b\right) + \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}{3 \cdot a}\]
    2. Taylor expanded around inf 8.3

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;b \le -1.4577715279110013 \cdot 10^{+36}:\\ \;\;\;\;\frac{\mathsf{fma}\left(\frac{a}{\frac{b}{c}}, \frac{3}{2}, b \cdot -2\right)}{a \cdot 3}\\ \mathbf{elif}\;b \le 2.854741727591693 \cdot 10^{-61}:\\ \;\;\;\;\frac{\frac{\sqrt{\mathsf{fma}\left(b, b, \left(a \cdot c\right) \cdot -3\right)} - b}{3}}{a}\\ \mathbf{else}:\\ \;\;\;\;\frac{-1}{2} \cdot \frac{c}{b}\\ \end{array}\]

Reproduce

herbie shell --seed 2019146 +o rules:numerics
(FPCore (a b c)
  :name "Cubic critical"
  (/ (+ (- b) (sqrt (- (* b b) (* (* 3 a) c)))) (* 3 a)))