Average Error: 33.8 → 10.3
Time: 7.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 -3.12428337420519208 \cdot 10^{57}:\\ \;\;\;\;0.5 \cdot \frac{c}{b} - 0.66666666666666663 \cdot \frac{b}{a}\\ \mathbf{elif}\;b \le 3.84613441880260993 \cdot 10^{-81}:\\ \;\;\;\;\frac{\sqrt{\sqrt{{b}^{2} - 3 \cdot \left(a \cdot c\right)} - b}}{3} \cdot \frac{\sqrt{\sqrt{{b}^{2} - 3 \cdot \left(a \cdot c\right)} - b}}{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 -3.12428337420519208 \cdot 10^{57}:\\
\;\;\;\;0.5 \cdot \frac{c}{b} - 0.66666666666666663 \cdot \frac{b}{a}\\

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

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

\end{array}
double f(double a, double b, double c) {
        double r179304 = b;
        double r179305 = -r179304;
        double r179306 = r179304 * r179304;
        double r179307 = 3.0;
        double r179308 = a;
        double r179309 = r179307 * r179308;
        double r179310 = c;
        double r179311 = r179309 * r179310;
        double r179312 = r179306 - r179311;
        double r179313 = sqrt(r179312);
        double r179314 = r179305 + r179313;
        double r179315 = r179314 / r179309;
        return r179315;
}

double f(double a, double b, double c) {
        double r179316 = b;
        double r179317 = -3.124283374205192e+57;
        bool r179318 = r179316 <= r179317;
        double r179319 = 0.5;
        double r179320 = c;
        double r179321 = r179320 / r179316;
        double r179322 = r179319 * r179321;
        double r179323 = 0.6666666666666666;
        double r179324 = a;
        double r179325 = r179316 / r179324;
        double r179326 = r179323 * r179325;
        double r179327 = r179322 - r179326;
        double r179328 = 3.84613441880261e-81;
        bool r179329 = r179316 <= r179328;
        double r179330 = 2.0;
        double r179331 = pow(r179316, r179330);
        double r179332 = 3.0;
        double r179333 = r179324 * r179320;
        double r179334 = r179332 * r179333;
        double r179335 = r179331 - r179334;
        double r179336 = sqrt(r179335);
        double r179337 = r179336 - r179316;
        double r179338 = sqrt(r179337);
        double r179339 = r179338 / r179332;
        double r179340 = r179338 / r179324;
        double r179341 = r179339 * r179340;
        double r179342 = -0.5;
        double r179343 = r179342 * r179321;
        double r179344 = r179329 ? r179341 : r179343;
        double r179345 = r179318 ? r179327 : r179344;
        return r179345;
}

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 < -3.124283374205192e+57

    1. Initial program 39.6

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

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

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

    if -3.124283374205192e+57 < b < 3.84613441880261e-81

    1. Initial program 12.8

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

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

      \[\leadsto \frac{\sqrt{\color{blue}{{b}^{2} - 3 \cdot \left(a \cdot c\right)}} - b}{3 \cdot a}\]
    4. Using strategy rm
    5. Applied add-sqr-sqrt13.2

      \[\leadsto \frac{\color{blue}{\sqrt{\sqrt{{b}^{2} - 3 \cdot \left(a \cdot c\right)} - b} \cdot \sqrt{\sqrt{{b}^{2} - 3 \cdot \left(a \cdot c\right)} - b}}}{3 \cdot a}\]
    6. Applied times-frac13.1

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

    if 3.84613441880261e-81 < b

    1. Initial program 53.0

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

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;b \le -3.12428337420519208 \cdot 10^{57}:\\ \;\;\;\;0.5 \cdot \frac{c}{b} - 0.66666666666666663 \cdot \frac{b}{a}\\ \mathbf{elif}\;b \le 3.84613441880260993 \cdot 10^{-81}:\\ \;\;\;\;\frac{\sqrt{\sqrt{{b}^{2} - 3 \cdot \left(a \cdot c\right)} - b}}{3} \cdot \frac{\sqrt{\sqrt{{b}^{2} - 3 \cdot \left(a \cdot c\right)} - b}}{a}\\ \mathbf{else}:\\ \;\;\;\;-0.5 \cdot \frac{c}{b}\\ \end{array}\]

Reproduce

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