Average Error: 34.2 → 10.2
Time: 5.8s
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 -2.675733832275465886979422961103066713356 \cdot 10^{144}:\\ \;\;\;\;0.5 \cdot \frac{c}{b} - 0.6666666666666666296592325124947819858789 \cdot \frac{b}{a}\\ \mathbf{elif}\;b \le 8.955698051059873403585681401912267705382 \cdot 10^{-30}:\\ \;\;\;\;\frac{1}{3} \cdot \frac{\left(-b\right) + \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}{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 -2.675733832275465886979422961103066713356 \cdot 10^{144}:\\
\;\;\;\;0.5 \cdot \frac{c}{b} - 0.6666666666666666296592325124947819858789 \cdot \frac{b}{a}\\

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

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

\end{array}
double f(double a, double b, double c) {
        double r132732 = b;
        double r132733 = -r132732;
        double r132734 = r132732 * r132732;
        double r132735 = 3.0;
        double r132736 = a;
        double r132737 = r132735 * r132736;
        double r132738 = c;
        double r132739 = r132737 * r132738;
        double r132740 = r132734 - r132739;
        double r132741 = sqrt(r132740);
        double r132742 = r132733 + r132741;
        double r132743 = r132742 / r132737;
        return r132743;
}

double f(double a, double b, double c) {
        double r132744 = b;
        double r132745 = -2.675733832275466e+144;
        bool r132746 = r132744 <= r132745;
        double r132747 = 0.5;
        double r132748 = c;
        double r132749 = r132748 / r132744;
        double r132750 = r132747 * r132749;
        double r132751 = 0.6666666666666666;
        double r132752 = a;
        double r132753 = r132744 / r132752;
        double r132754 = r132751 * r132753;
        double r132755 = r132750 - r132754;
        double r132756 = 8.955698051059873e-30;
        bool r132757 = r132744 <= r132756;
        double r132758 = 1.0;
        double r132759 = 3.0;
        double r132760 = r132758 / r132759;
        double r132761 = -r132744;
        double r132762 = r132744 * r132744;
        double r132763 = r132759 * r132752;
        double r132764 = r132763 * r132748;
        double r132765 = r132762 - r132764;
        double r132766 = sqrt(r132765);
        double r132767 = r132761 + r132766;
        double r132768 = r132767 / r132752;
        double r132769 = r132760 * r132768;
        double r132770 = -0.5;
        double r132771 = r132770 * r132749;
        double r132772 = r132757 ? r132769 : r132771;
        double r132773 = r132746 ? r132755 : r132772;
        return r132773;
}

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 < -2.675733832275466e+144

    1. Initial program 60.4

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

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

    if -2.675733832275466e+144 < b < 8.955698051059873e-30

    1. Initial program 14.2

      \[\frac{\left(-b\right) + \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}{3 \cdot a}\]
    2. Using strategy rm
    3. Applied *-un-lft-identity14.2

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

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

    if 8.955698051059873e-30 < b

    1. Initial program 54.7

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;b \le -2.675733832275465886979422961103066713356 \cdot 10^{144}:\\ \;\;\;\;0.5 \cdot \frac{c}{b} - 0.6666666666666666296592325124947819858789 \cdot \frac{b}{a}\\ \mathbf{elif}\;b \le 8.955698051059873403585681401912267705382 \cdot 10^{-30}:\\ \;\;\;\;\frac{1}{3} \cdot \frac{\left(-b\right) + \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}{a}\\ \mathbf{else}:\\ \;\;\;\;-0.5 \cdot \frac{c}{b}\\ \end{array}\]

Reproduce

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