Average Error: 33.5 → 10.3
Time: 20.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 -4.024746736984847 \cdot 10^{+40}:\\ \;\;\;\;\frac{1}{2} \cdot \frac{c}{b} - \frac{b}{a} \cdot \frac{2}{3}\\ \mathbf{elif}\;b \le 1.9824764136407443 \cdot 10^{-61}:\\ \;\;\;\;\frac{\frac{\sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c} - b}{3}}{a}\\ \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 -4.024746736984847 \cdot 10^{+40}:\\
\;\;\;\;\frac{1}{2} \cdot \frac{c}{b} - \frac{b}{a} \cdot \frac{2}{3}\\

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

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

\end{array}
double f(double a, double b, double c) {
        double r4643598 = b;
        double r4643599 = -r4643598;
        double r4643600 = r4643598 * r4643598;
        double r4643601 = 3.0;
        double r4643602 = a;
        double r4643603 = r4643601 * r4643602;
        double r4643604 = c;
        double r4643605 = r4643603 * r4643604;
        double r4643606 = r4643600 - r4643605;
        double r4643607 = sqrt(r4643606);
        double r4643608 = r4643599 + r4643607;
        double r4643609 = r4643608 / r4643603;
        return r4643609;
}

double f(double a, double b, double c) {
        double r4643610 = b;
        double r4643611 = -4.024746736984847e+40;
        bool r4643612 = r4643610 <= r4643611;
        double r4643613 = 0.5;
        double r4643614 = c;
        double r4643615 = r4643614 / r4643610;
        double r4643616 = r4643613 * r4643615;
        double r4643617 = a;
        double r4643618 = r4643610 / r4643617;
        double r4643619 = 0.6666666666666666;
        double r4643620 = r4643618 * r4643619;
        double r4643621 = r4643616 - r4643620;
        double r4643622 = 1.9824764136407443e-61;
        bool r4643623 = r4643610 <= r4643622;
        double r4643624 = r4643610 * r4643610;
        double r4643625 = 3.0;
        double r4643626 = r4643625 * r4643617;
        double r4643627 = r4643626 * r4643614;
        double r4643628 = r4643624 - r4643627;
        double r4643629 = sqrt(r4643628);
        double r4643630 = r4643629 - r4643610;
        double r4643631 = r4643630 / r4643625;
        double r4643632 = r4643631 / r4643617;
        double r4643633 = -0.5;
        double r4643634 = r4643633 * r4643615;
        double r4643635 = r4643623 ? r4643632 : r4643634;
        double r4643636 = r4643612 ? r4643621 : r4643635;
        return r4643636;
}

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 < -4.024746736984847e+40

    1. Initial program 36.1

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

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

      \[\leadsto \color{blue}{\frac{1}{2} \cdot \frac{c}{b} - \frac{2}{3} \cdot \frac{b}{a}}\]

    if -4.024746736984847e+40 < b < 1.9824764136407443e-61

    1. Initial program 14.4

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

      \[\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 associate-/r*14.4

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

    if 1.9824764136407443e-61 < b

    1. Initial program 52.8

      \[\frac{\left(-b\right) + \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}{3 \cdot a}\]
    2. Simplified52.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 8.3

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;b \le -4.024746736984847 \cdot 10^{+40}:\\ \;\;\;\;\frac{1}{2} \cdot \frac{c}{b} - \frac{b}{a} \cdot \frac{2}{3}\\ \mathbf{elif}\;b \le 1.9824764136407443 \cdot 10^{-61}:\\ \;\;\;\;\frac{\frac{\sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c} - b}{3}}{a}\\ \mathbf{else}:\\ \;\;\;\;\frac{-1}{2} \cdot \frac{c}{b}\\ \end{array}\]

Reproduce

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