Average Error: 34.3 → 12.9
Time: 21.7s
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.205465986680909011843083811411405971894 \cdot 10^{135}:\\ \;\;\;\;\frac{1.5 \cdot \frac{a \cdot c}{b} - 2 \cdot b}{3 \cdot a}\\ \mathbf{elif}\;b \le -2.06033220120780029089998808218980405169 \cdot 10^{-258}:\\ \;\;\;\;\frac{\frac{\sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c} - b}{3}}{a}\\ \mathbf{elif}\;b \le 9.437505947861471790660874606217630038564 \cdot 10^{134}:\\ \;\;\;\;\frac{\frac{\frac{-\left(3 \cdot a\right) \cdot c}{\sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c} + b}}{3}}{a}\\ \mathbf{else}:\\ \;\;\;\;\frac{\frac{-1.5 \cdot \frac{a \cdot c}{b}}{3}}{a}\\ \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.205465986680909011843083811411405971894 \cdot 10^{135}:\\
\;\;\;\;\frac{1.5 \cdot \frac{a \cdot c}{b} - 2 \cdot b}{3 \cdot a}\\

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

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

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

\end{array}
double f(double a, double b, double c) {
        double r81389 = b;
        double r81390 = -r81389;
        double r81391 = r81389 * r81389;
        double r81392 = 3.0;
        double r81393 = a;
        double r81394 = r81392 * r81393;
        double r81395 = c;
        double r81396 = r81394 * r81395;
        double r81397 = r81391 - r81396;
        double r81398 = sqrt(r81397);
        double r81399 = r81390 + r81398;
        double r81400 = r81399 / r81394;
        return r81400;
}

double f(double a, double b, double c) {
        double r81401 = b;
        double r81402 = -2.205465986680909e+135;
        bool r81403 = r81401 <= r81402;
        double r81404 = 1.5;
        double r81405 = a;
        double r81406 = c;
        double r81407 = r81405 * r81406;
        double r81408 = r81407 / r81401;
        double r81409 = r81404 * r81408;
        double r81410 = 2.0;
        double r81411 = r81410 * r81401;
        double r81412 = r81409 - r81411;
        double r81413 = 3.0;
        double r81414 = r81413 * r81405;
        double r81415 = r81412 / r81414;
        double r81416 = -2.0603322012078003e-258;
        bool r81417 = r81401 <= r81416;
        double r81418 = r81401 * r81401;
        double r81419 = r81414 * r81406;
        double r81420 = r81418 - r81419;
        double r81421 = sqrt(r81420);
        double r81422 = r81421 - r81401;
        double r81423 = r81422 / r81413;
        double r81424 = r81423 / r81405;
        double r81425 = 9.437505947861472e+134;
        bool r81426 = r81401 <= r81425;
        double r81427 = -r81419;
        double r81428 = r81421 + r81401;
        double r81429 = r81427 / r81428;
        double r81430 = r81429 / r81413;
        double r81431 = r81430 / r81405;
        double r81432 = -1.5;
        double r81433 = r81432 * r81408;
        double r81434 = r81433 / r81413;
        double r81435 = r81434 / r81405;
        double r81436 = r81426 ? r81431 : r81435;
        double r81437 = r81417 ? r81424 : r81436;
        double r81438 = r81403 ? r81415 : r81437;
        return r81438;
}

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 4 regimes
  2. if b < -2.205465986680909e+135

    1. Initial program 56.7

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

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

    if -2.205465986680909e+135 < b < -2.0603322012078003e-258

    1. Initial program 8.0

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

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

    if -2.0603322012078003e-258 < b < 9.437505947861472e+134

    1. Initial program 32.3

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

      \[\leadsto \color{blue}{\frac{\frac{\sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c} - b}{3}}{a}}\]
    3. Using strategy rm
    4. Applied flip--32.3

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

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

    if 9.437505947861472e+134 < b

    1. Initial program 62.0

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

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;b \le -2.205465986680909011843083811411405971894 \cdot 10^{135}:\\ \;\;\;\;\frac{1.5 \cdot \frac{a \cdot c}{b} - 2 \cdot b}{3 \cdot a}\\ \mathbf{elif}\;b \le -2.06033220120780029089998808218980405169 \cdot 10^{-258}:\\ \;\;\;\;\frac{\frac{\sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c} - b}{3}}{a}\\ \mathbf{elif}\;b \le 9.437505947861471790660874606217630038564 \cdot 10^{134}:\\ \;\;\;\;\frac{\frac{\frac{-\left(3 \cdot a\right) \cdot c}{\sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c} + b}}{3}}{a}\\ \mathbf{else}:\\ \;\;\;\;\frac{\frac{-1.5 \cdot \frac{a \cdot c}{b}}{3}}{a}\\ \end{array}\]

Reproduce

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