Average Error: 34.5 → 11.1
Time: 11.3s
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 -2.615257373542238721197930661559276546696 \cdot 10^{153}:\\ \;\;\;\;0.5 \cdot \frac{c}{b} - 0.6666666666666666296592325124947819858789 \cdot \frac{b}{a}\\ \mathbf{elif}\;b \le 1.388070047225937856958905133202240499626 \cdot 10^{-143}:\\ \;\;\;\;\frac{1}{\frac{3 \cdot a}{\sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c} - b}}\\ \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 -2.615257373542238721197930661559276546696 \cdot 10^{153}:\\
\;\;\;\;0.5 \cdot \frac{c}{b} - 0.6666666666666666296592325124947819858789 \cdot \frac{b}{a}\\

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

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

\end{array}
double f(double a, double b, double c) {
        double r119590 = b;
        double r119591 = -r119590;
        double r119592 = r119590 * r119590;
        double r119593 = 3.0;
        double r119594 = a;
        double r119595 = r119593 * r119594;
        double r119596 = c;
        double r119597 = r119595 * r119596;
        double r119598 = r119592 - r119597;
        double r119599 = sqrt(r119598);
        double r119600 = r119591 + r119599;
        double r119601 = r119600 / r119595;
        return r119601;
}

double f(double a, double b, double c) {
        double r119602 = b;
        double r119603 = -2.6152573735422387e+153;
        bool r119604 = r119602 <= r119603;
        double r119605 = 0.5;
        double r119606 = c;
        double r119607 = r119606 / r119602;
        double r119608 = r119605 * r119607;
        double r119609 = 0.6666666666666666;
        double r119610 = a;
        double r119611 = r119602 / r119610;
        double r119612 = r119609 * r119611;
        double r119613 = r119608 - r119612;
        double r119614 = 1.3880700472259379e-143;
        bool r119615 = r119602 <= r119614;
        double r119616 = 1.0;
        double r119617 = 3.0;
        double r119618 = r119617 * r119610;
        double r119619 = r119602 * r119602;
        double r119620 = r119618 * r119606;
        double r119621 = r119619 - r119620;
        double r119622 = sqrt(r119621);
        double r119623 = r119622 - r119602;
        double r119624 = r119618 / r119623;
        double r119625 = r119616 / r119624;
        double r119626 = -0.5;
        double r119627 = r119626 * r119607;
        double r119628 = r119615 ? r119625 : r119627;
        double r119629 = r119604 ? r119613 : r119628;
        return r119629;
}

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 < -2.6152573735422387e+153

    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 2.6

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

    if -2.6152573735422387e+153 < b < 1.3880700472259379e-143

    1. Initial program 11.6

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

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

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

    if 1.3880700472259379e-143 < b

    1. Initial program 50.2

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;b \le -2.615257373542238721197930661559276546696 \cdot 10^{153}:\\ \;\;\;\;0.5 \cdot \frac{c}{b} - 0.6666666666666666296592325124947819858789 \cdot \frac{b}{a}\\ \mathbf{elif}\;b \le 1.388070047225937856958905133202240499626 \cdot 10^{-143}:\\ \;\;\;\;\frac{1}{\frac{3 \cdot a}{\sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c} - b}}\\ \mathbf{else}:\\ \;\;\;\;-0.5 \cdot \frac{c}{b}\\ \end{array}\]

Reproduce

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