Average Error: 34.5 → 11.1
Time: 10.9s
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.086872071402004108381543238220970134651 \cdot 10^{144}:\\ \;\;\;\;0.5 \cdot \frac{c}{b} - 0.6666666666666666296592325124947819858789 \cdot \frac{b}{a}\\ \mathbf{elif}\;b \le 1.388070047225937856958905133202240499626 \cdot 10^{-143}:\\ \;\;\;\;\frac{\frac{\sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c} - b}{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 -2.086872071402004108381543238220970134651 \cdot 10^{144}:\\
\;\;\;\;0.5 \cdot \frac{c}{b} - 0.6666666666666666296592325124947819858789 \cdot \frac{b}{a}\\

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

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

\end{array}
double f(double a, double b, double c) {
        double r136279 = b;
        double r136280 = -r136279;
        double r136281 = r136279 * r136279;
        double r136282 = 3.0;
        double r136283 = a;
        double r136284 = r136282 * r136283;
        double r136285 = c;
        double r136286 = r136284 * r136285;
        double r136287 = r136281 - r136286;
        double r136288 = sqrt(r136287);
        double r136289 = r136280 + r136288;
        double r136290 = r136289 / r136284;
        return r136290;
}

double f(double a, double b, double c) {
        double r136291 = b;
        double r136292 = -2.086872071402004e+144;
        bool r136293 = r136291 <= r136292;
        double r136294 = 0.5;
        double r136295 = c;
        double r136296 = r136295 / r136291;
        double r136297 = r136294 * r136296;
        double r136298 = 0.6666666666666666;
        double r136299 = a;
        double r136300 = r136291 / r136299;
        double r136301 = r136298 * r136300;
        double r136302 = r136297 - r136301;
        double r136303 = 1.3880700472259379e-143;
        bool r136304 = r136291 <= r136303;
        double r136305 = r136291 * r136291;
        double r136306 = 3.0;
        double r136307 = r136306 * r136299;
        double r136308 = r136307 * r136295;
        double r136309 = r136305 - r136308;
        double r136310 = sqrt(r136309);
        double r136311 = r136310 - r136291;
        double r136312 = r136311 / r136306;
        double r136313 = r136312 / r136299;
        double r136314 = -0.5;
        double r136315 = r136314 * r136296;
        double r136316 = r136304 ? r136313 : r136315;
        double r136317 = r136293 ? r136302 : r136316;
        return r136317;
}

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.086872071402004e+144

    1. Initial program 60.3

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

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

    if -2.086872071402004e+144 < b < 1.3880700472259379e-143

    1. Initial program 11.6

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

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

    if 1.3880700472259379e-143 < b

    1. Initial program 50.2

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;b \le -2.086872071402004108381543238220970134651 \cdot 10^{144}:\\ \;\;\;\;0.5 \cdot \frac{c}{b} - 0.6666666666666666296592325124947819858789 \cdot \frac{b}{a}\\ \mathbf{elif}\;b \le 1.388070047225937856958905133202240499626 \cdot 10^{-143}:\\ \;\;\;\;\frac{\frac{\sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c} - b}{3}}{a}\\ \mathbf{else}:\\ \;\;\;\;-0.5 \cdot \frac{c}{b}\\ \end{array}\]

Reproduce

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