Average Error: 32.9 → 14.8
Time: 17.0s
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.3376190644449892 \cdot 10^{+154}:\\ \;\;\;\;\frac{\mathsf{fma}\left(\frac{a \cdot c}{b}, \frac{3}{2}, b \cdot -2\right)}{a \cdot 3}\\ \mathbf{elif}\;b \le 6.235673785124529 \cdot 10^{-73}:\\ \;\;\;\;\frac{\sqrt{\mathsf{fma}\left(b, b, \left(a \cdot c\right) \cdot -3\right)} + \left(-b\right)}{a \cdot 3}\\ \mathbf{else}:\\ \;\;\;\;\frac{\frac{-3}{2} \cdot \frac{a \cdot c}{b}}{a \cdot 3}\\ \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.3376190644449892 \cdot 10^{+154}:\\
\;\;\;\;\frac{\mathsf{fma}\left(\frac{a \cdot c}{b}, \frac{3}{2}, b \cdot -2\right)}{a \cdot 3}\\

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

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

\end{array}
double f(double a, double b, double c) {
        double r2382094 = b;
        double r2382095 = -r2382094;
        double r2382096 = r2382094 * r2382094;
        double r2382097 = 3.0;
        double r2382098 = a;
        double r2382099 = r2382097 * r2382098;
        double r2382100 = c;
        double r2382101 = r2382099 * r2382100;
        double r2382102 = r2382096 - r2382101;
        double r2382103 = sqrt(r2382102);
        double r2382104 = r2382095 + r2382103;
        double r2382105 = r2382104 / r2382099;
        return r2382105;
}

double f(double a, double b, double c) {
        double r2382106 = b;
        double r2382107 = -1.3376190644449892e+154;
        bool r2382108 = r2382106 <= r2382107;
        double r2382109 = a;
        double r2382110 = c;
        double r2382111 = r2382109 * r2382110;
        double r2382112 = r2382111 / r2382106;
        double r2382113 = 1.5;
        double r2382114 = -2.0;
        double r2382115 = r2382106 * r2382114;
        double r2382116 = fma(r2382112, r2382113, r2382115);
        double r2382117 = 3.0;
        double r2382118 = r2382109 * r2382117;
        double r2382119 = r2382116 / r2382118;
        double r2382120 = 6.235673785124529e-73;
        bool r2382121 = r2382106 <= r2382120;
        double r2382122 = -3.0;
        double r2382123 = r2382111 * r2382122;
        double r2382124 = fma(r2382106, r2382106, r2382123);
        double r2382125 = sqrt(r2382124);
        double r2382126 = -r2382106;
        double r2382127 = r2382125 + r2382126;
        double r2382128 = r2382127 / r2382118;
        double r2382129 = -1.5;
        double r2382130 = r2382129 * r2382112;
        double r2382131 = r2382130 / r2382118;
        double r2382132 = r2382121 ? r2382128 : r2382131;
        double r2382133 = r2382108 ? r2382119 : r2382132;
        return r2382133;
}

Error

Bits error versus a

Bits error versus b

Bits error versus c

Derivation

  1. Split input into 3 regimes
  2. if b < -1.3376190644449892e+154

    1. Initial program 60.9

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

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

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

    if -1.3376190644449892e+154 < b < 6.235673785124529e-73

    1. Initial program 12.0

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

      \[\leadsto \frac{\left(-b\right) + \sqrt{\color{blue}{{b}^{2} - 3 \cdot \left(a \cdot c\right)}}}{3 \cdot a}\]
    3. Simplified12.1

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

    if 6.235673785124529e-73 < b

    1. Initial program 52.3

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

      \[\leadsto \frac{\left(-b\right) + \sqrt{\color{blue}{{b}^{2} - 3 \cdot \left(a \cdot c\right)}}}{3 \cdot a}\]
    3. Simplified52.3

      \[\leadsto \frac{\left(-b\right) + \sqrt{\color{blue}{\mathsf{fma}\left(b, b, -3 \cdot \left(a \cdot c\right)\right)}}}{3 \cdot a}\]
    4. Taylor expanded around inf 19.7

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

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

Reproduce

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