Average Error: 34.2 → 10.1
Time: 4.3s
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 -5.2389466313579672 \cdot 10^{127}:\\ \;\;\;\;0.5 \cdot \frac{c}{b} - 0.66666666666666663 \cdot \frac{b}{a}\\ \mathbf{elif}\;b \le 1.6670468245058271 \cdot 10^{-85}:\\ \;\;\;\;\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 -5.2389466313579672 \cdot 10^{127}:\\
\;\;\;\;0.5 \cdot \frac{c}{b} - 0.66666666666666663 \cdot \frac{b}{a}\\

\mathbf{elif}\;b \le 1.6670468245058271 \cdot 10^{-85}:\\
\;\;\;\;\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 r109355 = b;
        double r109356 = -r109355;
        double r109357 = r109355 * r109355;
        double r109358 = 3.0;
        double r109359 = a;
        double r109360 = r109358 * r109359;
        double r109361 = c;
        double r109362 = r109360 * r109361;
        double r109363 = r109357 - r109362;
        double r109364 = sqrt(r109363);
        double r109365 = r109356 + r109364;
        double r109366 = r109365 / r109360;
        return r109366;
}

double f(double a, double b, double c) {
        double r109367 = b;
        double r109368 = -5.238946631357967e+127;
        bool r109369 = r109367 <= r109368;
        double r109370 = 0.5;
        double r109371 = c;
        double r109372 = r109371 / r109367;
        double r109373 = r109370 * r109372;
        double r109374 = 0.6666666666666666;
        double r109375 = a;
        double r109376 = r109367 / r109375;
        double r109377 = r109374 * r109376;
        double r109378 = r109373 - r109377;
        double r109379 = 1.667046824505827e-85;
        bool r109380 = r109367 <= r109379;
        double r109381 = -r109367;
        double r109382 = r109367 * r109367;
        double r109383 = 3.0;
        double r109384 = r109383 * r109375;
        double r109385 = r109384 * r109371;
        double r109386 = r109382 - r109385;
        double r109387 = sqrt(r109386);
        double r109388 = r109381 + r109387;
        double r109389 = r109388 / r109383;
        double r109390 = r109389 / r109375;
        double r109391 = -0.5;
        double r109392 = r109391 * r109372;
        double r109393 = r109380 ? r109390 : r109392;
        double r109394 = r109369 ? r109378 : r109393;
        return r109394;
}

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 < -5.238946631357967e+127

    1. Initial program 54.3

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

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

    if -5.238946631357967e+127 < b < 1.667046824505827e-85

    1. Initial program 12.3

      \[\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.3

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

    if 1.667046824505827e-85 < 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. Taylor expanded around inf 9.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 -5.2389466313579672 \cdot 10^{127}:\\ \;\;\;\;0.5 \cdot \frac{c}{b} - 0.66666666666666663 \cdot \frac{b}{a}\\ \mathbf{elif}\;b \le 1.6670468245058271 \cdot 10^{-85}:\\ \;\;\;\;\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 2020056 
(FPCore (a b c)
  :name "Cubic critical"
  :precision binary64
  (/ (+ (- b) (sqrt (- (* b b) (* (* 3 a) c)))) (* 3 a)))