Average Error: 29.0 → 16.7
Time: 17.6s
Precision: 64
\[1.0536712127723509 \cdot 10^{-08} \lt a \lt 94906265.62425156 \land 1.0536712127723509 \cdot 10^{-08} \lt b \lt 94906265.62425156 \land 1.0536712127723509 \cdot 10^{-08} \lt c \lt 94906265.62425156\]
\[\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 92.31787710257002:\\ \;\;\;\;\frac{\frac{\left(\left(a \cdot c\right) \cdot -3 + b \cdot b\right) \cdot \sqrt{\left(a \cdot c\right) \cdot -3 + b \cdot b} - b \cdot \left(b \cdot b\right)}{\left(b \cdot \sqrt{\left(a \cdot c\right) \cdot -3 + b \cdot b} + \left(\left(a \cdot c\right) \cdot -3 + b \cdot b\right)\right) + b \cdot b}}{a \cdot 3}\\ \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 92.31787710257002:\\
\;\;\;\;\frac{\frac{\left(\left(a \cdot c\right) \cdot -3 + b \cdot b\right) \cdot \sqrt{\left(a \cdot c\right) \cdot -3 + b \cdot b} - b \cdot \left(b \cdot b\right)}{\left(b \cdot \sqrt{\left(a \cdot c\right) \cdot -3 + b \cdot b} + \left(\left(a \cdot c\right) \cdot -3 + b \cdot b\right)\right) + b \cdot b}}{a \cdot 3}\\

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

\end{array}
double f(double a, double b, double c, double __attribute__((unused)) d) {
        double r2100870 = b;
        double r2100871 = -r2100870;
        double r2100872 = r2100870 * r2100870;
        double r2100873 = 3.0;
        double r2100874 = a;
        double r2100875 = r2100873 * r2100874;
        double r2100876 = c;
        double r2100877 = r2100875 * r2100876;
        double r2100878 = r2100872 - r2100877;
        double r2100879 = sqrt(r2100878);
        double r2100880 = r2100871 + r2100879;
        double r2100881 = r2100880 / r2100875;
        return r2100881;
}

double f(double a, double b, double c, double __attribute__((unused)) d) {
        double r2100882 = b;
        double r2100883 = 92.31787710257002;
        bool r2100884 = r2100882 <= r2100883;
        double r2100885 = a;
        double r2100886 = c;
        double r2100887 = r2100885 * r2100886;
        double r2100888 = -3.0;
        double r2100889 = r2100887 * r2100888;
        double r2100890 = r2100882 * r2100882;
        double r2100891 = r2100889 + r2100890;
        double r2100892 = sqrt(r2100891);
        double r2100893 = r2100891 * r2100892;
        double r2100894 = r2100882 * r2100890;
        double r2100895 = r2100893 - r2100894;
        double r2100896 = r2100882 * r2100892;
        double r2100897 = r2100896 + r2100891;
        double r2100898 = r2100897 + r2100890;
        double r2100899 = r2100895 / r2100898;
        double r2100900 = 3.0;
        double r2100901 = r2100885 * r2100900;
        double r2100902 = r2100899 / r2100901;
        double r2100903 = -0.5;
        double r2100904 = r2100886 / r2100882;
        double r2100905 = r2100903 * r2100904;
        double r2100906 = r2100884 ? r2100902 : r2100905;
        return r2100906;
}

Error

Bits error versus a

Bits error versus b

Bits error versus c

Bits error versus d

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

  1. Split input into 2 regimes
  2. if b < 92.31787710257002

    1. Initial program 15.6

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

      \[\leadsto \color{blue}{\frac{\sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c} - b}{3 \cdot a}}\]
    3. Using strategy rm
    4. Applied flip3--15.6

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

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

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

    if 92.31787710257002 < b

    1. Initial program 34.8

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

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

      \[\leadsto \frac{\color{blue}{\frac{-3}{2} \cdot \frac{a \cdot c}{b}}}{3 \cdot a}\]
    4. Using strategy rm
    5. Applied div-inv17.6

      \[\leadsto \frac{\frac{-3}{2} \cdot \color{blue}{\left(\left(a \cdot c\right) \cdot \frac{1}{b}\right)}}{3 \cdot a}\]
    6. Applied associate-*r*17.6

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;b \le 92.31787710257002:\\ \;\;\;\;\frac{\frac{\left(\left(a \cdot c\right) \cdot -3 + b \cdot b\right) \cdot \sqrt{\left(a \cdot c\right) \cdot -3 + b \cdot b} - b \cdot \left(b \cdot b\right)}{\left(b \cdot \sqrt{\left(a \cdot c\right) \cdot -3 + b \cdot b} + \left(\left(a \cdot c\right) \cdot -3 + b \cdot b\right)\right) + b \cdot b}}{a \cdot 3}\\ \mathbf{else}:\\ \;\;\;\;\frac{-1}{2} \cdot \frac{c}{b}\\ \end{array}\]

Reproduce

herbie shell --seed 2019135 
(FPCore (a b c d)
  :name "Cubic critical, narrow range"
  :pre (and (< 1.0536712127723509e-08 a 94906265.62425156) (< 1.0536712127723509e-08 b 94906265.62425156) (< 1.0536712127723509e-08 c 94906265.62425156))
  (/ (+ (- b) (sqrt (- (* b b) (* (* 3 a) c)))) (* 3 a)))