Average Error: 34.6 → 15.2
Time: 46.3s
Precision: 64
\[\frac{\left(-b\right) + \sqrt{b \cdot b - \left(3.0 \cdot a\right) \cdot c}}{3.0 \cdot a}\]
\[\begin{array}{l} \mathbf{if}\;b \le -2.0519886074223697 \cdot 10^{+155}:\\ \;\;\;\;\frac{\left(1.5 \cdot \frac{a \cdot c}{b} - b\right) - b}{3.0 \cdot a}\\ \mathbf{elif}\;b \le 1.3635892865650846 \cdot 10^{-93}:\\ \;\;\;\;\frac{\sqrt{b \cdot b - \left(3.0 \cdot a\right) \cdot c} - b}{3.0 \cdot a}\\ \mathbf{else}:\\ \;\;\;\;\frac{-1.5 \cdot \frac{a \cdot c}{b}}{3.0 \cdot a}\\ \end{array}\]
\frac{\left(-b\right) + \sqrt{b \cdot b - \left(3.0 \cdot a\right) \cdot c}}{3.0 \cdot a}
\begin{array}{l}
\mathbf{if}\;b \le -2.0519886074223697 \cdot 10^{+155}:\\
\;\;\;\;\frac{\left(1.5 \cdot \frac{a \cdot c}{b} - b\right) - b}{3.0 \cdot a}\\

\mathbf{elif}\;b \le 1.3635892865650846 \cdot 10^{-93}:\\
\;\;\;\;\frac{\sqrt{b \cdot b - \left(3.0 \cdot a\right) \cdot c} - b}{3.0 \cdot a}\\

\mathbf{else}:\\
\;\;\;\;\frac{-1.5 \cdot \frac{a \cdot c}{b}}{3.0 \cdot a}\\

\end{array}
double f(double a, double b, double c) {
        double r4561434 = b;
        double r4561435 = -r4561434;
        double r4561436 = r4561434 * r4561434;
        double r4561437 = 3.0;
        double r4561438 = a;
        double r4561439 = r4561437 * r4561438;
        double r4561440 = c;
        double r4561441 = r4561439 * r4561440;
        double r4561442 = r4561436 - r4561441;
        double r4561443 = sqrt(r4561442);
        double r4561444 = r4561435 + r4561443;
        double r4561445 = r4561444 / r4561439;
        return r4561445;
}

double f(double a, double b, double c) {
        double r4561446 = b;
        double r4561447 = -2.0519886074223697e+155;
        bool r4561448 = r4561446 <= r4561447;
        double r4561449 = 1.5;
        double r4561450 = a;
        double r4561451 = c;
        double r4561452 = r4561450 * r4561451;
        double r4561453 = r4561452 / r4561446;
        double r4561454 = r4561449 * r4561453;
        double r4561455 = r4561454 - r4561446;
        double r4561456 = r4561455 - r4561446;
        double r4561457 = 3.0;
        double r4561458 = r4561457 * r4561450;
        double r4561459 = r4561456 / r4561458;
        double r4561460 = 1.3635892865650846e-93;
        bool r4561461 = r4561446 <= r4561460;
        double r4561462 = r4561446 * r4561446;
        double r4561463 = r4561458 * r4561451;
        double r4561464 = r4561462 - r4561463;
        double r4561465 = sqrt(r4561464);
        double r4561466 = r4561465 - r4561446;
        double r4561467 = r4561466 / r4561458;
        double r4561468 = -1.5;
        double r4561469 = r4561468 * r4561453;
        double r4561470 = r4561469 / r4561458;
        double r4561471 = r4561461 ? r4561467 : r4561470;
        double r4561472 = r4561448 ? r4561459 : r4561471;
        return r4561472;
}

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.0519886074223697e+155

    1. Initial program 64.0

      \[\frac{\left(-b\right) + \sqrt{b \cdot b - \left(3.0 \cdot a\right) \cdot c}}{3.0 \cdot a}\]
    2. Simplified64.0

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

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

    if -2.0519886074223697e+155 < b < 1.3635892865650846e-93

    1. Initial program 11.8

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

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

    if 1.3635892865650846e-93 < b

    1. Initial program 52.9

      \[\frac{\left(-b\right) + \sqrt{b \cdot b - \left(3.0 \cdot a\right) \cdot c}}{3.0 \cdot a}\]
    2. Simplified52.9

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

      \[\leadsto \frac{\color{blue}{-1.5 \cdot \frac{a \cdot c}{b}}}{3.0 \cdot a}\]
  3. Recombined 3 regimes into one program.
  4. Final simplification15.2

    \[\leadsto \begin{array}{l} \mathbf{if}\;b \le -2.0519886074223697 \cdot 10^{+155}:\\ \;\;\;\;\frac{\left(1.5 \cdot \frac{a \cdot c}{b} - b\right) - b}{3.0 \cdot a}\\ \mathbf{elif}\;b \le 1.3635892865650846 \cdot 10^{-93}:\\ \;\;\;\;\frac{\sqrt{b \cdot b - \left(3.0 \cdot a\right) \cdot c} - b}{3.0 \cdot a}\\ \mathbf{else}:\\ \;\;\;\;\frac{-1.5 \cdot \frac{a \cdot c}{b}}{3.0 \cdot a}\\ \end{array}\]

Reproduce

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