Average Error: 34.3 → 15.4
Time: 21.8s
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 -1.367002129773412099713675796535889049973 \cdot 10^{154}:\\ \;\;\;\;\frac{\left(1.5 \cdot \frac{a \cdot c}{b} - b\right) - b}{3 \cdot a}\\ \mathbf{elif}\;b \le 5.828767493902222235048735741826480335074 \cdot 10^{-61}:\\ \;\;\;\;\frac{\sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c} - b}{3 \cdot a}\\ \mathbf{else}:\\ \;\;\;\;\frac{-1.5 \cdot \frac{a \cdot c}{b}}{3 \cdot 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 -1.367002129773412099713675796535889049973 \cdot 10^{154}:\\
\;\;\;\;\frac{\left(1.5 \cdot \frac{a \cdot c}{b} - b\right) - b}{3 \cdot a}\\

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

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

\end{array}
double f(double a, double b, double c) {
        double r76671 = b;
        double r76672 = -r76671;
        double r76673 = r76671 * r76671;
        double r76674 = 3.0;
        double r76675 = a;
        double r76676 = r76674 * r76675;
        double r76677 = c;
        double r76678 = r76676 * r76677;
        double r76679 = r76673 - r76678;
        double r76680 = sqrt(r76679);
        double r76681 = r76672 + r76680;
        double r76682 = r76681 / r76676;
        return r76682;
}

double f(double a, double b, double c) {
        double r76683 = b;
        double r76684 = -1.367002129773412e+154;
        bool r76685 = r76683 <= r76684;
        double r76686 = 1.5;
        double r76687 = a;
        double r76688 = c;
        double r76689 = r76687 * r76688;
        double r76690 = r76689 / r76683;
        double r76691 = r76686 * r76690;
        double r76692 = r76691 - r76683;
        double r76693 = r76692 - r76683;
        double r76694 = 3.0;
        double r76695 = r76694 * r76687;
        double r76696 = r76693 / r76695;
        double r76697 = 5.828767493902222e-61;
        bool r76698 = r76683 <= r76697;
        double r76699 = r76683 * r76683;
        double r76700 = r76695 * r76688;
        double r76701 = r76699 - r76700;
        double r76702 = sqrt(r76701);
        double r76703 = r76702 - r76683;
        double r76704 = r76703 / r76695;
        double r76705 = -1.5;
        double r76706 = r76705 * r76690;
        double r76707 = r76706 / r76695;
        double r76708 = r76698 ? r76704 : r76707;
        double r76709 = r76685 ? r76696 : r76708;
        return r76709;
}

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 < -1.367002129773412e+154

    1. Initial program 64.0

      \[\frac{\left(-b\right) + \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}{3 \cdot a}\]
    2. Simplified64.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 11.7

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

    if -1.367002129773412e+154 < b < 5.828767493902222e-61

    1. Initial program 13.3

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

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

    if 5.828767493902222e-61 < b

    1. Initial program 53.8

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

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;b \le -1.367002129773412099713675796535889049973 \cdot 10^{154}:\\ \;\;\;\;\frac{\left(1.5 \cdot \frac{a \cdot c}{b} - b\right) - b}{3 \cdot a}\\ \mathbf{elif}\;b \le 5.828767493902222235048735741826480335074 \cdot 10^{-61}:\\ \;\;\;\;\frac{\sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c} - b}{3 \cdot a}\\ \mathbf{else}:\\ \;\;\;\;\frac{-1.5 \cdot \frac{a \cdot c}{b}}{3 \cdot a}\\ \end{array}\]

Reproduce

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