Average Error: 34.3 → 12.9
Time: 20.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 -2.205465986680909011843083811411405971894 \cdot 10^{135}:\\ \;\;\;\;\frac{\left(-b\right) + \left(1.5 \cdot \frac{a \cdot c}{b} - b\right)}{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{\left(-b\right) + \left(1.5 \cdot \frac{a \cdot c}{b} - b\right)}{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 r61475 = b;
        double r61476 = -r61475;
        double r61477 = r61475 * r61475;
        double r61478 = 3.0;
        double r61479 = a;
        double r61480 = r61478 * r61479;
        double r61481 = c;
        double r61482 = r61480 * r61481;
        double r61483 = r61477 - r61482;
        double r61484 = sqrt(r61483);
        double r61485 = r61476 + r61484;
        double r61486 = r61485 / r61480;
        return r61486;
}

double f(double a, double b, double c) {
        double r61487 = b;
        double r61488 = -2.205465986680909e+135;
        bool r61489 = r61487 <= r61488;
        double r61490 = -r61487;
        double r61491 = 1.5;
        double r61492 = a;
        double r61493 = c;
        double r61494 = r61492 * r61493;
        double r61495 = r61494 / r61487;
        double r61496 = r61491 * r61495;
        double r61497 = r61496 - r61487;
        double r61498 = r61490 + r61497;
        double r61499 = 3.0;
        double r61500 = r61499 * r61492;
        double r61501 = r61498 / r61500;
        double r61502 = -2.0603322012078003e-258;
        bool r61503 = r61487 <= r61502;
        double r61504 = r61487 * r61487;
        double r61505 = r61500 * r61493;
        double r61506 = r61504 - r61505;
        double r61507 = sqrt(r61506);
        double r61508 = r61507 - r61487;
        double r61509 = r61508 / r61499;
        double r61510 = r61509 / r61492;
        double r61511 = 9.437505947861472e+134;
        bool r61512 = r61487 <= r61511;
        double r61513 = -r61505;
        double r61514 = r61507 + r61487;
        double r61515 = r61513 / r61514;
        double r61516 = r61515 / r61499;
        double r61517 = r61516 / r61492;
        double r61518 = -1.5;
        double r61519 = r61518 * r61495;
        double r61520 = r61519 / r61499;
        double r61521 = r61520 / r61492;
        double r61522 = r61512 ? r61517 : r61521;
        double r61523 = r61503 ? r61510 : r61522;
        double r61524 = r61489 ? r61501 : r61523;
        return r61524;
}

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{\left(-b\right) + \color{blue}{\left(1.5 \cdot \frac{a \cdot c}{b} - b\right)}}{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{\left(-b\right) + \left(1.5 \cdot \frac{a \cdot c}{b} - b\right)}{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)))