Average Error: 34.3 → 12.8
Time: 22.6s
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 -4.170863269453545152730522330511722629078 \cdot 10^{104}:\\ \;\;\;\;\frac{\frac{\left(1.5 \cdot \frac{a \cdot c}{b} - b\right) - b}{3}}{a}\\ \mathbf{elif}\;b \le 1.934433159970907894216118156165200792584 \cdot 10^{-151}:\\ \;\;\;\;\frac{\left(-b\right) + \sqrt{\sqrt{{b}^{2} - 3 \cdot \left(a \cdot c\right)} \cdot \left(\sqrt{\sqrt{{b}^{2} - 3 \cdot \left(a \cdot c\right)}} \cdot \sqrt{\sqrt{{b}^{2} - 3 \cdot \left(a \cdot c\right)}}\right)}}{3 \cdot a}\\ \mathbf{elif}\;b \le 2.270344858826677967855724412431829535769 \cdot 10^{135}:\\ \;\;\;\;\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{-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 -4.170863269453545152730522330511722629078 \cdot 10^{104}:\\
\;\;\;\;\frac{\frac{\left(1.5 \cdot \frac{a \cdot c}{b} - b\right) - b}{3}}{a}\\

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

\mathbf{elif}\;b \le 2.270344858826677967855724412431829535769 \cdot 10^{135}:\\
\;\;\;\;\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{-1.5 \cdot \frac{a \cdot c}{b}}{3 \cdot a}\\

\end{array}
double f(double a, double b, double c) {
        double r95950 = b;
        double r95951 = -r95950;
        double r95952 = r95950 * r95950;
        double r95953 = 3.0;
        double r95954 = a;
        double r95955 = r95953 * r95954;
        double r95956 = c;
        double r95957 = r95955 * r95956;
        double r95958 = r95952 - r95957;
        double r95959 = sqrt(r95958);
        double r95960 = r95951 + r95959;
        double r95961 = r95960 / r95955;
        return r95961;
}

double f(double a, double b, double c) {
        double r95962 = b;
        double r95963 = -4.170863269453545e+104;
        bool r95964 = r95962 <= r95963;
        double r95965 = 1.5;
        double r95966 = a;
        double r95967 = c;
        double r95968 = r95966 * r95967;
        double r95969 = r95968 / r95962;
        double r95970 = r95965 * r95969;
        double r95971 = r95970 - r95962;
        double r95972 = r95971 - r95962;
        double r95973 = 3.0;
        double r95974 = r95972 / r95973;
        double r95975 = r95974 / r95966;
        double r95976 = 1.934433159970908e-151;
        bool r95977 = r95962 <= r95976;
        double r95978 = -r95962;
        double r95979 = 2.0;
        double r95980 = pow(r95962, r95979);
        double r95981 = r95973 * r95968;
        double r95982 = r95980 - r95981;
        double r95983 = sqrt(r95982);
        double r95984 = sqrt(r95983);
        double r95985 = r95984 * r95984;
        double r95986 = r95983 * r95985;
        double r95987 = sqrt(r95986);
        double r95988 = r95978 + r95987;
        double r95989 = r95973 * r95966;
        double r95990 = r95988 / r95989;
        double r95991 = 2.270344858826678e+135;
        bool r95992 = r95962 <= r95991;
        double r95993 = r95989 * r95967;
        double r95994 = -r95993;
        double r95995 = r95962 * r95962;
        double r95996 = r95995 - r95993;
        double r95997 = sqrt(r95996);
        double r95998 = r95997 + r95962;
        double r95999 = r95994 / r95998;
        double r96000 = r95999 / r95973;
        double r96001 = r96000 / r95966;
        double r96002 = -1.5;
        double r96003 = r96002 * r95969;
        double r96004 = r96003 / r95989;
        double r96005 = r95992 ? r96001 : r96004;
        double r96006 = r95977 ? r95990 : r96005;
        double r96007 = r95964 ? r95975 : r96006;
        return r96007;
}

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 < -4.170863269453545e+104

    1. Initial program 48.7

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

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

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

    if -4.170863269453545e+104 < b < 1.934433159970908e-151

    1. Initial program 11.3

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

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

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

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

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

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

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

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

    if 1.934433159970908e-151 < b < 2.270344858826678e+135

    1. Initial program 41.0

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

      \[\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--41.0

      \[\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. Simplified15.9

      \[\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 2.270344858826678e+135 < b

    1. Initial program 62.3

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;b \le -4.170863269453545152730522330511722629078 \cdot 10^{104}:\\ \;\;\;\;\frac{\frac{\left(1.5 \cdot \frac{a \cdot c}{b} - b\right) - b}{3}}{a}\\ \mathbf{elif}\;b \le 1.934433159970907894216118156165200792584 \cdot 10^{-151}:\\ \;\;\;\;\frac{\left(-b\right) + \sqrt{\sqrt{{b}^{2} - 3 \cdot \left(a \cdot c\right)} \cdot \left(\sqrt{\sqrt{{b}^{2} - 3 \cdot \left(a \cdot c\right)}} \cdot \sqrt{\sqrt{{b}^{2} - 3 \cdot \left(a \cdot c\right)}}\right)}}{3 \cdot a}\\ \mathbf{elif}\;b \le 2.270344858826677967855724412431829535769 \cdot 10^{135}:\\ \;\;\;\;\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{-1.5 \cdot \frac{a \cdot c}{b}}{3 \cdot a}\\ \end{array}\]

Reproduce

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