Average Error: 34.1 → 13.5
Time: 4.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.56941706508999029 \cdot 10^{163}:\\ \;\;\;\;\frac{1.5 \cdot \frac{a \cdot c}{b} - 2 \cdot b}{3 \cdot a}\\ \mathbf{elif}\;b \le 1.1928781235179368 \cdot 10^{-176}:\\ \;\;\;\;\frac{\left(-b\right) + \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}{3 \cdot a}\\ \mathbf{elif}\;b \le 4.89881602212345888 \cdot 10^{152}:\\ \;\;\;\;\frac{\frac{3 \cdot \left(a \cdot c\right) + 0}{-\left(b + \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}\right)}}{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.56941706508999029 \cdot 10^{163}:\\
\;\;\;\;\frac{1.5 \cdot \frac{a \cdot c}{b} - 2 \cdot b}{3 \cdot a}\\

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

\mathbf{elif}\;b \le 4.89881602212345888 \cdot 10^{152}:\\
\;\;\;\;\frac{\frac{3 \cdot \left(a \cdot c\right) + 0}{-\left(b + \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}\right)}}{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 r118008 = b;
        double r118009 = -r118008;
        double r118010 = r118008 * r118008;
        double r118011 = 3.0;
        double r118012 = a;
        double r118013 = r118011 * r118012;
        double r118014 = c;
        double r118015 = r118013 * r118014;
        double r118016 = r118010 - r118015;
        double r118017 = sqrt(r118016);
        double r118018 = r118009 + r118017;
        double r118019 = r118018 / r118013;
        return r118019;
}

double f(double a, double b, double c) {
        double r118020 = b;
        double r118021 = -1.5694170650899903e+163;
        bool r118022 = r118020 <= r118021;
        double r118023 = 1.5;
        double r118024 = a;
        double r118025 = c;
        double r118026 = r118024 * r118025;
        double r118027 = r118026 / r118020;
        double r118028 = r118023 * r118027;
        double r118029 = 2.0;
        double r118030 = r118029 * r118020;
        double r118031 = r118028 - r118030;
        double r118032 = 3.0;
        double r118033 = r118032 * r118024;
        double r118034 = r118031 / r118033;
        double r118035 = 1.1928781235179368e-176;
        bool r118036 = r118020 <= r118035;
        double r118037 = -r118020;
        double r118038 = r118020 * r118020;
        double r118039 = r118033 * r118025;
        double r118040 = r118038 - r118039;
        double r118041 = sqrt(r118040);
        double r118042 = r118037 + r118041;
        double r118043 = r118042 / r118033;
        double r118044 = 4.898816022123459e+152;
        bool r118045 = r118020 <= r118044;
        double r118046 = r118032 * r118026;
        double r118047 = 0.0;
        double r118048 = r118046 + r118047;
        double r118049 = r118020 + r118041;
        double r118050 = -r118049;
        double r118051 = r118048 / r118050;
        double r118052 = r118051 / r118033;
        double r118053 = -1.5;
        double r118054 = r118053 * r118027;
        double r118055 = r118054 / r118033;
        double r118056 = r118045 ? r118052 : r118055;
        double r118057 = r118036 ? r118043 : r118056;
        double r118058 = r118022 ? r118034 : r118057;
        return r118058;
}

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 < -1.5694170650899903e+163

    1. Initial program 64.0

      \[\frac{\left(-b\right) + \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}{3 \cdot a}\]
    2. Using strategy rm
    3. Applied add-sqr-sqrt64.0

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

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

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

    if -1.5694170650899903e+163 < b < 1.1928781235179368e-176

    1. Initial program 11.7

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

    if 1.1928781235179368e-176 < b < 4.898816022123459e+152

    1. Initial program 38.9

      \[\frac{\left(-b\right) + \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}{3 \cdot a}\]
    2. Using strategy rm
    3. Applied add-sqr-sqrt38.9

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

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

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

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

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

    if 4.898816022123459e+152 < b

    1. Initial program 63.8

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;b \le -1.56941706508999029 \cdot 10^{163}:\\ \;\;\;\;\frac{1.5 \cdot \frac{a \cdot c}{b} - 2 \cdot b}{3 \cdot a}\\ \mathbf{elif}\;b \le 1.1928781235179368 \cdot 10^{-176}:\\ \;\;\;\;\frac{\left(-b\right) + \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}{3 \cdot a}\\ \mathbf{elif}\;b \le 4.89881602212345888 \cdot 10^{152}:\\ \;\;\;\;\frac{\frac{3 \cdot \left(a \cdot c\right) + 0}{-\left(b + \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}\right)}}{3 \cdot a}\\ \mathbf{else}:\\ \;\;\;\;\frac{-1.5 \cdot \frac{a \cdot c}{b}}{3 \cdot a}\\ \end{array}\]

Reproduce

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