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{\left(-b\right) + \left(1.5 \cdot \frac{a \cdot c}{b} - b\right)}{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{0 + 3 \cdot \left(a \cdot c\right)}{\left(-b\right) - \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}}{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{\left(-b\right) + \left(1.5 \cdot \frac{a \cdot c}{b} - b\right)}{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{0 + 3 \cdot \left(a \cdot c\right)}{\left(-b\right) - \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}}{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 r123813 = b;
        double r123814 = -r123813;
        double r123815 = r123813 * r123813;
        double r123816 = 3.0;
        double r123817 = a;
        double r123818 = r123816 * r123817;
        double r123819 = c;
        double r123820 = r123818 * r123819;
        double r123821 = r123815 - r123820;
        double r123822 = sqrt(r123821);
        double r123823 = r123814 + r123822;
        double r123824 = r123823 / r123818;
        return r123824;
}

double f(double a, double b, double c) {
        double r123825 = b;
        double r123826 = -1.5694170650899903e+163;
        bool r123827 = r123825 <= r123826;
        double r123828 = -r123825;
        double r123829 = 1.5;
        double r123830 = a;
        double r123831 = c;
        double r123832 = r123830 * r123831;
        double r123833 = r123832 / r123825;
        double r123834 = r123829 * r123833;
        double r123835 = r123834 - r123825;
        double r123836 = r123828 + r123835;
        double r123837 = 3.0;
        double r123838 = r123837 * r123830;
        double r123839 = r123836 / r123838;
        double r123840 = 1.1928781235179368e-176;
        bool r123841 = r123825 <= r123840;
        double r123842 = r123825 * r123825;
        double r123843 = r123838 * r123831;
        double r123844 = r123842 - r123843;
        double r123845 = sqrt(r123844);
        double r123846 = r123828 + r123845;
        double r123847 = r123846 / r123838;
        double r123848 = 4.898816022123459e+152;
        bool r123849 = r123825 <= r123848;
        double r123850 = 0.0;
        double r123851 = r123837 * r123832;
        double r123852 = r123850 + r123851;
        double r123853 = r123828 - r123845;
        double r123854 = r123852 / r123853;
        double r123855 = r123854 / r123838;
        double r123856 = -1.5;
        double r123857 = r123856 * r123833;
        double r123858 = r123857 / r123838;
        double r123859 = r123849 ? r123855 : r123858;
        double r123860 = r123841 ? r123847 : r123859;
        double r123861 = r123827 ? r123839 : r123860;
        return r123861;
}

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. Taylor expanded around -inf 13.1

      \[\leadsto \frac{\left(-b\right) + \color{blue}{\left(1.5 \cdot \frac{a \cdot c}{b} - b\right)}}{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 flip-+38.9

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

      \[\leadsto \frac{\frac{\color{blue}{0 + 3 \cdot \left(a \cdot c\right)}}{\left(-b\right) - \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}}{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{\left(-b\right) + \left(1.5 \cdot \frac{a \cdot c}{b} - b\right)}{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{0 + 3 \cdot \left(a \cdot c\right)}{\left(-b\right) - \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}}{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)))