Average Error: 33.8 → 7.0
Time: 15.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 -2.90813916198160293963366976401570687923 \cdot 10^{62}:\\ \;\;\;\;\frac{\frac{\left(\frac{a \cdot 1.5}{\frac{b}{c}} - b\right) - b}{a}}{3}\\ \mathbf{elif}\;b \le -1.160679944395394427376937112683747781511 \cdot 10^{-265}:\\ \;\;\;\;\frac{\frac{\sqrt{b \cdot b - 3 \cdot \left(a \cdot c\right)} - b}{3}}{a}\\ \mathbf{elif}\;b \le 1.384078670752047991329508030364988612145 \cdot 10^{134}:\\ \;\;\;\;\frac{1}{3} \cdot \left(\frac{a}{a} \cdot \frac{3 \cdot c}{\left(-b\right) - \sqrt{b \cdot b - 3 \cdot \left(a \cdot c\right)}}\right)\\ \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.90813916198160293963366976401570687923 \cdot 10^{62}:\\
\;\;\;\;\frac{\frac{\left(\frac{a \cdot 1.5}{\frac{b}{c}} - b\right) - b}{a}}{3}\\

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

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

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

\end{array}
double f(double a, double b, double c) {
        double r95628 = b;
        double r95629 = -r95628;
        double r95630 = r95628 * r95628;
        double r95631 = 3.0;
        double r95632 = a;
        double r95633 = r95631 * r95632;
        double r95634 = c;
        double r95635 = r95633 * r95634;
        double r95636 = r95630 - r95635;
        double r95637 = sqrt(r95636);
        double r95638 = r95629 + r95637;
        double r95639 = r95638 / r95633;
        return r95639;
}

double f(double a, double b, double c) {
        double r95640 = b;
        double r95641 = -2.908139161981603e+62;
        bool r95642 = r95640 <= r95641;
        double r95643 = a;
        double r95644 = 1.5;
        double r95645 = r95643 * r95644;
        double r95646 = c;
        double r95647 = r95640 / r95646;
        double r95648 = r95645 / r95647;
        double r95649 = r95648 - r95640;
        double r95650 = r95649 - r95640;
        double r95651 = r95650 / r95643;
        double r95652 = 3.0;
        double r95653 = r95651 / r95652;
        double r95654 = -1.1606799443953944e-265;
        bool r95655 = r95640 <= r95654;
        double r95656 = r95640 * r95640;
        double r95657 = r95643 * r95646;
        double r95658 = r95652 * r95657;
        double r95659 = r95656 - r95658;
        double r95660 = sqrt(r95659);
        double r95661 = r95660 - r95640;
        double r95662 = r95661 / r95652;
        double r95663 = r95662 / r95643;
        double r95664 = 1.384078670752048e+134;
        bool r95665 = r95640 <= r95664;
        double r95666 = 1.0;
        double r95667 = r95666 / r95652;
        double r95668 = r95643 / r95643;
        double r95669 = r95652 * r95646;
        double r95670 = -r95640;
        double r95671 = r95670 - r95660;
        double r95672 = r95669 / r95671;
        double r95673 = r95668 * r95672;
        double r95674 = r95667 * r95673;
        double r95675 = -0.5;
        double r95676 = r95646 / r95640;
        double r95677 = r95675 * r95676;
        double r95678 = r95665 ? r95674 : r95677;
        double r95679 = r95655 ? r95663 : r95678;
        double r95680 = r95642 ? r95653 : r95679;
        return r95680;
}

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 < -2.908139161981603e+62

    1. Initial program 40.0

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

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

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

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

    if -2.908139161981603e+62 < b < -1.1606799443953944e-265

    1. Initial program 8.8

      \[\frac{\left(-b\right) + \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}{3 \cdot a}\]
    2. Using strategy rm
    3. Applied associate-/r*8.8

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

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

    if -1.1606799443953944e-265 < b < 1.384078670752048e+134

    1. Initial program 32.1

      \[\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-+32.2

      \[\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. Simplified16.6

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

      \[\leadsto \frac{\frac{0 + \left(a \cdot c\right) \cdot 3}{\color{blue}{\left(-b\right) - \sqrt{b \cdot b - \left(a \cdot c\right) \cdot 3}}}}{3 \cdot a}\]
    6. Using strategy rm
    7. Applied *-un-lft-identity16.6

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

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

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

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

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

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

    if 1.384078670752048e+134 < b

    1. Initial program 62.0

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;b \le -2.90813916198160293963366976401570687923 \cdot 10^{62}:\\ \;\;\;\;\frac{\frac{\left(\frac{a \cdot 1.5}{\frac{b}{c}} - b\right) - b}{a}}{3}\\ \mathbf{elif}\;b \le -1.160679944395394427376937112683747781511 \cdot 10^{-265}:\\ \;\;\;\;\frac{\frac{\sqrt{b \cdot b - 3 \cdot \left(a \cdot c\right)} - b}{3}}{a}\\ \mathbf{elif}\;b \le 1.384078670752047991329508030364988612145 \cdot 10^{134}:\\ \;\;\;\;\frac{1}{3} \cdot \left(\frac{a}{a} \cdot \frac{3 \cdot c}{\left(-b\right) - \sqrt{b \cdot b - 3 \cdot \left(a \cdot c\right)}}\right)\\ \mathbf{else}:\\ \;\;\;\;-0.5 \cdot \frac{c}{b}\\ \end{array}\]

Reproduce

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