Average Error: 33.1 → 10.5
Time: 29.1s
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.3030622379606599 \cdot 10^{+153}:\\ \;\;\;\;\left(\frac{c}{b} \cdot \frac{3}{2} - 2 \cdot \frac{b}{a}\right) \cdot \frac{1}{3}\\ \mathbf{elif}\;b \le 2.5044838769273558 \cdot 10^{-121}:\\ \;\;\;\;\frac{1}{\frac{3 \cdot a}{\sqrt{b \cdot b + -3 \cdot \left(a \cdot c\right)} - b}}\\ \mathbf{elif}\;b \le 1.0342433475418466 \cdot 10^{-79}:\\ \;\;\;\;\frac{c}{b} \cdot \frac{-1}{2}\\ \mathbf{elif}\;b \le 1.7543503512431287 \cdot 10^{-69}:\\ \;\;\;\;\frac{\sqrt{b \cdot b - c \cdot \left(3 \cdot a\right)} - b}{\sqrt[3]{3} \cdot a} \cdot \frac{1}{\sqrt[3]{3} \cdot \sqrt[3]{3}}\\ \mathbf{else}:\\ \;\;\;\;\frac{c}{b} \cdot \frac{-1}{2}\\ \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.3030622379606599 \cdot 10^{+153}:\\
\;\;\;\;\left(\frac{c}{b} \cdot \frac{3}{2} - 2 \cdot \frac{b}{a}\right) \cdot \frac{1}{3}\\

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

\mathbf{elif}\;b \le 1.0342433475418466 \cdot 10^{-79}:\\
\;\;\;\;\frac{c}{b} \cdot \frac{-1}{2}\\

\mathbf{elif}\;b \le 1.7543503512431287 \cdot 10^{-69}:\\
\;\;\;\;\frac{\sqrt{b \cdot b - c \cdot \left(3 \cdot a\right)} - b}{\sqrt[3]{3} \cdot a} \cdot \frac{1}{\sqrt[3]{3} \cdot \sqrt[3]{3}}\\

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

\end{array}
double f(double a, double b, double c) {
        double r6206689 = b;
        double r6206690 = -r6206689;
        double r6206691 = r6206689 * r6206689;
        double r6206692 = 3.0;
        double r6206693 = a;
        double r6206694 = r6206692 * r6206693;
        double r6206695 = c;
        double r6206696 = r6206694 * r6206695;
        double r6206697 = r6206691 - r6206696;
        double r6206698 = sqrt(r6206697);
        double r6206699 = r6206690 + r6206698;
        double r6206700 = r6206699 / r6206694;
        return r6206700;
}

double f(double a, double b, double c) {
        double r6206701 = b;
        double r6206702 = -1.3030622379606599e+153;
        bool r6206703 = r6206701 <= r6206702;
        double r6206704 = c;
        double r6206705 = r6206704 / r6206701;
        double r6206706 = 1.5;
        double r6206707 = r6206705 * r6206706;
        double r6206708 = 2.0;
        double r6206709 = a;
        double r6206710 = r6206701 / r6206709;
        double r6206711 = r6206708 * r6206710;
        double r6206712 = r6206707 - r6206711;
        double r6206713 = 0.3333333333333333;
        double r6206714 = r6206712 * r6206713;
        double r6206715 = 2.5044838769273558e-121;
        bool r6206716 = r6206701 <= r6206715;
        double r6206717 = 1.0;
        double r6206718 = 3.0;
        double r6206719 = r6206718 * r6206709;
        double r6206720 = r6206701 * r6206701;
        double r6206721 = -3.0;
        double r6206722 = r6206709 * r6206704;
        double r6206723 = r6206721 * r6206722;
        double r6206724 = r6206720 + r6206723;
        double r6206725 = sqrt(r6206724);
        double r6206726 = r6206725 - r6206701;
        double r6206727 = r6206719 / r6206726;
        double r6206728 = r6206717 / r6206727;
        double r6206729 = 1.0342433475418466e-79;
        bool r6206730 = r6206701 <= r6206729;
        double r6206731 = -0.5;
        double r6206732 = r6206705 * r6206731;
        double r6206733 = 1.7543503512431287e-69;
        bool r6206734 = r6206701 <= r6206733;
        double r6206735 = r6206704 * r6206719;
        double r6206736 = r6206720 - r6206735;
        double r6206737 = sqrt(r6206736);
        double r6206738 = r6206737 - r6206701;
        double r6206739 = cbrt(r6206718);
        double r6206740 = r6206739 * r6206709;
        double r6206741 = r6206738 / r6206740;
        double r6206742 = r6206739 * r6206739;
        double r6206743 = r6206717 / r6206742;
        double r6206744 = r6206741 * r6206743;
        double r6206745 = r6206734 ? r6206744 : r6206732;
        double r6206746 = r6206730 ? r6206732 : r6206745;
        double r6206747 = r6206716 ? r6206728 : r6206746;
        double r6206748 = r6206703 ? r6206714 : r6206747;
        return r6206748;
}

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.3030622379606599e+153

    1. Initial program 60.2

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

      \[\leadsto \color{blue}{\frac{\sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c} - b}{3 \cdot a}}\]
    3. Using strategy rm
    4. Applied *-un-lft-identity60.2

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

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

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

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

    if -1.3030622379606599e+153 < b < 2.5044838769273558e-121

    1. Initial program 10.9

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

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

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

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

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

    if 2.5044838769273558e-121 < b < 1.0342433475418466e-79 or 1.7543503512431287e-69 < b

    1. Initial program 50.7

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

      \[\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.2

      \[\leadsto \color{blue}{\frac{-1}{2} \cdot \frac{c}{b}}\]

    if 1.0342433475418466e-79 < b < 1.7543503512431287e-69

    1. Initial program 36.1

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

      \[\leadsto \color{blue}{\frac{\sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c} - b}{3 \cdot a}}\]
    3. Using strategy rm
    4. Applied add-cube-cbrt36.1

      \[\leadsto \frac{\sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c} - b}{\color{blue}{\left(\left(\sqrt[3]{3} \cdot \sqrt[3]{3}\right) \cdot \sqrt[3]{3}\right)} \cdot a}\]
    5. Applied associate-*l*36.1

      \[\leadsto \frac{\sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c} - b}{\color{blue}{\left(\sqrt[3]{3} \cdot \sqrt[3]{3}\right) \cdot \left(\sqrt[3]{3} \cdot a\right)}}\]
    6. Applied *-un-lft-identity36.1

      \[\leadsto \frac{\color{blue}{1 \cdot \left(\sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c} - b\right)}}{\left(\sqrt[3]{3} \cdot \sqrt[3]{3}\right) \cdot \left(\sqrt[3]{3} \cdot a\right)}\]
    7. Applied times-frac36.0

      \[\leadsto \color{blue}{\frac{1}{\sqrt[3]{3} \cdot \sqrt[3]{3}} \cdot \frac{\sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c} - b}{\sqrt[3]{3} \cdot a}}\]
  3. Recombined 4 regimes into one program.
  4. Final simplification10.5

    \[\leadsto \begin{array}{l} \mathbf{if}\;b \le -1.3030622379606599 \cdot 10^{+153}:\\ \;\;\;\;\left(\frac{c}{b} \cdot \frac{3}{2} - 2 \cdot \frac{b}{a}\right) \cdot \frac{1}{3}\\ \mathbf{elif}\;b \le 2.5044838769273558 \cdot 10^{-121}:\\ \;\;\;\;\frac{1}{\frac{3 \cdot a}{\sqrt{b \cdot b + -3 \cdot \left(a \cdot c\right)} - b}}\\ \mathbf{elif}\;b \le 1.0342433475418466 \cdot 10^{-79}:\\ \;\;\;\;\frac{c}{b} \cdot \frac{-1}{2}\\ \mathbf{elif}\;b \le 1.7543503512431287 \cdot 10^{-69}:\\ \;\;\;\;\frac{\sqrt{b \cdot b - c \cdot \left(3 \cdot a\right)} - b}{\sqrt[3]{3} \cdot a} \cdot \frac{1}{\sqrt[3]{3} \cdot \sqrt[3]{3}}\\ \mathbf{else}:\\ \;\;\;\;\frac{c}{b} \cdot \frac{-1}{2}\\ \end{array}\]

Reproduce

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