Average Error: 34.5 → 10.1
Time: 4.6s
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.018762283622710426864404427574628112872 \cdot 10^{102}:\\ \;\;\;\;\frac{1}{3} \cdot \left(1.5 \cdot \frac{c}{b} - 2 \cdot \frac{b}{a}\right)\\ \mathbf{elif}\;b \le 1.209120745343099452134664059704875392955 \cdot 10^{-70}:\\ \;\;\;\;\frac{\frac{\left(-b\right) + \sqrt{b \cdot b - 3 \cdot \left(a \cdot c\right)}}{3}}{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 -1.018762283622710426864404427574628112872 \cdot 10^{102}:\\
\;\;\;\;\frac{1}{3} \cdot \left(1.5 \cdot \frac{c}{b} - 2 \cdot \frac{b}{a}\right)\\

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

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

\end{array}
double f(double a, double b, double c) {
        double r111978 = b;
        double r111979 = -r111978;
        double r111980 = r111978 * r111978;
        double r111981 = 3.0;
        double r111982 = a;
        double r111983 = r111981 * r111982;
        double r111984 = c;
        double r111985 = r111983 * r111984;
        double r111986 = r111980 - r111985;
        double r111987 = sqrt(r111986);
        double r111988 = r111979 + r111987;
        double r111989 = r111988 / r111983;
        return r111989;
}

double f(double a, double b, double c) {
        double r111990 = b;
        double r111991 = -1.0187622836227104e+102;
        bool r111992 = r111990 <= r111991;
        double r111993 = 1.0;
        double r111994 = 3.0;
        double r111995 = r111993 / r111994;
        double r111996 = 1.5;
        double r111997 = c;
        double r111998 = r111997 / r111990;
        double r111999 = r111996 * r111998;
        double r112000 = 2.0;
        double r112001 = a;
        double r112002 = r111990 / r112001;
        double r112003 = r112000 * r112002;
        double r112004 = r111999 - r112003;
        double r112005 = r111995 * r112004;
        double r112006 = 1.2091207453430995e-70;
        bool r112007 = r111990 <= r112006;
        double r112008 = -r111990;
        double r112009 = r111990 * r111990;
        double r112010 = r112001 * r111997;
        double r112011 = r111994 * r112010;
        double r112012 = r112009 - r112011;
        double r112013 = sqrt(r112012);
        double r112014 = r112008 + r112013;
        double r112015 = r112014 / r111994;
        double r112016 = r112015 / r112001;
        double r112017 = -0.5;
        double r112018 = r112017 * r111998;
        double r112019 = r112007 ? r112016 : r112018;
        double r112020 = r111992 ? r112005 : r112019;
        return r112020;
}

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 < -1.0187622836227104e+102

    1. Initial program 46.9

      \[\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-*l*46.9

      \[\leadsto \frac{\left(-b\right) + \sqrt{b \cdot b - \color{blue}{3 \cdot \left(a \cdot c\right)}}}{3 \cdot a}\]
    4. Using strategy rm
    5. Applied *-un-lft-identity46.9

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

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

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

    if -1.0187622836227104e+102 < b < 1.2091207453430995e-70

    1. Initial program 13.4

      \[\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-*l*13.5

      \[\leadsto \frac{\left(-b\right) + \sqrt{b \cdot b - \color{blue}{3 \cdot \left(a \cdot c\right)}}}{3 \cdot a}\]
    4. Using strategy rm
    5. Applied associate-/r*13.4

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

    if 1.2091207453430995e-70 < b

    1. Initial program 53.7

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;b \le -1.018762283622710426864404427574628112872 \cdot 10^{102}:\\ \;\;\;\;\frac{1}{3} \cdot \left(1.5 \cdot \frac{c}{b} - 2 \cdot \frac{b}{a}\right)\\ \mathbf{elif}\;b \le 1.209120745343099452134664059704875392955 \cdot 10^{-70}:\\ \;\;\;\;\frac{\frac{\left(-b\right) + \sqrt{b \cdot b - 3 \cdot \left(a \cdot c\right)}}{3}}{a}\\ \mathbf{else}:\\ \;\;\;\;-0.5 \cdot \frac{c}{b}\\ \end{array}\]

Reproduce

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