Average Error: 33.8 → 10.3
Time: 8.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 -3.12428337420519208 \cdot 10^{57}:\\ \;\;\;\;0.5 \cdot \frac{c}{b} - 0.66666666666666663 \cdot \frac{b}{a}\\ \mathbf{elif}\;b \le 3.84613441880260993 \cdot 10^{-81}:\\ \;\;\;\;\frac{\sqrt{\sqrt{b \cdot b - 3 \cdot \left(a \cdot c\right)} - b}}{3} \cdot \frac{\sqrt{\sqrt{b \cdot b - 3 \cdot \left(a \cdot c\right)} - b}}{a}\\ \mathbf{else}:\\ \;\;\;\;-0.5 \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 -3.12428337420519208 \cdot 10^{57}:\\
\;\;\;\;0.5 \cdot \frac{c}{b} - 0.66666666666666663 \cdot \frac{b}{a}\\

\mathbf{elif}\;b \le 3.84613441880260993 \cdot 10^{-81}:\\
\;\;\;\;\frac{\sqrt{\sqrt{b \cdot b - 3 \cdot \left(a \cdot c\right)} - b}}{3} \cdot \frac{\sqrt{\sqrt{b \cdot b - 3 \cdot \left(a \cdot c\right)} - b}}{a}\\

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

\end{array}
double f(double a, double b, double c) {
        double r98965 = b;
        double r98966 = -r98965;
        double r98967 = r98965 * r98965;
        double r98968 = 3.0;
        double r98969 = a;
        double r98970 = r98968 * r98969;
        double r98971 = c;
        double r98972 = r98970 * r98971;
        double r98973 = r98967 - r98972;
        double r98974 = sqrt(r98973);
        double r98975 = r98966 + r98974;
        double r98976 = r98975 / r98970;
        return r98976;
}

double f(double a, double b, double c) {
        double r98977 = b;
        double r98978 = -3.124283374205192e+57;
        bool r98979 = r98977 <= r98978;
        double r98980 = 0.5;
        double r98981 = c;
        double r98982 = r98981 / r98977;
        double r98983 = r98980 * r98982;
        double r98984 = 0.6666666666666666;
        double r98985 = a;
        double r98986 = r98977 / r98985;
        double r98987 = r98984 * r98986;
        double r98988 = r98983 - r98987;
        double r98989 = 3.84613441880261e-81;
        bool r98990 = r98977 <= r98989;
        double r98991 = r98977 * r98977;
        double r98992 = 3.0;
        double r98993 = r98985 * r98981;
        double r98994 = r98992 * r98993;
        double r98995 = r98991 - r98994;
        double r98996 = sqrt(r98995);
        double r98997 = r98996 - r98977;
        double r98998 = sqrt(r98997);
        double r98999 = r98998 / r98992;
        double r99000 = r98998 / r98985;
        double r99001 = r98999 * r99000;
        double r99002 = -0.5;
        double r99003 = r99002 * r98982;
        double r99004 = r98990 ? r99001 : r99003;
        double r99005 = r98979 ? r98988 : r99004;
        return r99005;
}

Error

Bits error versus a

Bits error versus b

Bits error versus c

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

  1. Split input into 3 regimes
  2. if b < -3.124283374205192e+57

    1. Initial program 39.6

      \[\frac{\left(-b\right) + \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}{3 \cdot a}\]
    2. Simplified39.6

      \[\leadsto \color{blue}{\frac{\sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c} - b}{3 \cdot a}}\]
    3. Taylor expanded around -inf 5.7

      \[\leadsto \color{blue}{0.5 \cdot \frac{c}{b} - 0.66666666666666663 \cdot \frac{b}{a}}\]

    if -3.124283374205192e+57 < b < 3.84613441880261e-81

    1. Initial program 12.8

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

      \[\leadsto \color{blue}{\frac{\sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c} - b}{3 \cdot a}}\]
    3. Taylor expanded around 0 12.9

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

      \[\leadsto \frac{\sqrt{\color{blue}{b \cdot b - 3 \cdot \left(a \cdot c\right)}} - b}{3 \cdot a}\]
    5. Using strategy rm
    6. Applied add-sqr-sqrt13.2

      \[\leadsto \frac{\color{blue}{\sqrt{\sqrt{b \cdot b - 3 \cdot \left(a \cdot c\right)} - b} \cdot \sqrt{\sqrt{b \cdot b - 3 \cdot \left(a \cdot c\right)} - b}}}{3 \cdot a}\]
    7. Applied times-frac13.1

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

    if 3.84613441880261e-81 < b

    1. Initial program 53.0

      \[\frac{\left(-b\right) + \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}{3 \cdot a}\]
    2. Simplified53.0

      \[\leadsto \color{blue}{\frac{\sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c} - b}{3 \cdot a}}\]
    3. Taylor expanded around inf 9.5

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;b \le -3.12428337420519208 \cdot 10^{57}:\\ \;\;\;\;0.5 \cdot \frac{c}{b} - 0.66666666666666663 \cdot \frac{b}{a}\\ \mathbf{elif}\;b \le 3.84613441880260993 \cdot 10^{-81}:\\ \;\;\;\;\frac{\sqrt{\sqrt{b \cdot b - 3 \cdot \left(a \cdot c\right)} - b}}{3} \cdot \frac{\sqrt{\sqrt{b \cdot b - 3 \cdot \left(a \cdot c\right)} - b}}{a}\\ \mathbf{else}:\\ \;\;\;\;-0.5 \cdot \frac{c}{b}\\ \end{array}\]

Reproduce

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