Average Error: 34.4 → 10.0
Time: 5.4s
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 -7.880762978310279727300808027314765515261 \cdot 10^{133}:\\ \;\;\;\;0.5 \cdot \frac{c}{b} - 0.6666666666666666296592325124947819858789 \cdot \frac{b}{a}\\ \mathbf{elif}\;b \le 1.64003611222649012035491681599105610175 \cdot 10^{-83}:\\ \;\;\;\;\frac{\frac{\left(-b\right) + \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}{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 -7.880762978310279727300808027314765515261 \cdot 10^{133}:\\
\;\;\;\;0.5 \cdot \frac{c}{b} - 0.6666666666666666296592325124947819858789 \cdot \frac{b}{a}\\

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

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

\end{array}
double f(double a, double b, double c) {
        double r90733 = b;
        double r90734 = -r90733;
        double r90735 = r90733 * r90733;
        double r90736 = 3.0;
        double r90737 = a;
        double r90738 = r90736 * r90737;
        double r90739 = c;
        double r90740 = r90738 * r90739;
        double r90741 = r90735 - r90740;
        double r90742 = sqrt(r90741);
        double r90743 = r90734 + r90742;
        double r90744 = r90743 / r90738;
        return r90744;
}

double f(double a, double b, double c) {
        double r90745 = b;
        double r90746 = -7.88076297831028e+133;
        bool r90747 = r90745 <= r90746;
        double r90748 = 0.5;
        double r90749 = c;
        double r90750 = r90749 / r90745;
        double r90751 = r90748 * r90750;
        double r90752 = 0.6666666666666666;
        double r90753 = a;
        double r90754 = r90745 / r90753;
        double r90755 = r90752 * r90754;
        double r90756 = r90751 - r90755;
        double r90757 = 1.6400361122264901e-83;
        bool r90758 = r90745 <= r90757;
        double r90759 = -r90745;
        double r90760 = r90745 * r90745;
        double r90761 = 3.0;
        double r90762 = r90761 * r90753;
        double r90763 = r90762 * r90749;
        double r90764 = r90760 - r90763;
        double r90765 = sqrt(r90764);
        double r90766 = r90759 + r90765;
        double r90767 = r90766 / r90761;
        double r90768 = r90767 / r90753;
        double r90769 = -0.5;
        double r90770 = r90769 * r90750;
        double r90771 = r90758 ? r90768 : r90770;
        double r90772 = r90747 ? r90756 : r90771;
        return r90772;
}

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 < -7.88076297831028e+133

    1. Initial program 56.1

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

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

    if -7.88076297831028e+133 < b < 1.6400361122264901e-83

    1. Initial program 12.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*12.5

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

    if 1.6400361122264901e-83 < b

    1. Initial program 53.1

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;b \le -7.880762978310279727300808027314765515261 \cdot 10^{133}:\\ \;\;\;\;0.5 \cdot \frac{c}{b} - 0.6666666666666666296592325124947819858789 \cdot \frac{b}{a}\\ \mathbf{elif}\;b \le 1.64003611222649012035491681599105610175 \cdot 10^{-83}:\\ \;\;\;\;\frac{\frac{\left(-b\right) + \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}{3}}{a}\\ \mathbf{else}:\\ \;\;\;\;-0.5 \cdot \frac{c}{b}\\ \end{array}\]

Reproduce

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