double f(double a, double b, double c, double __attribute__((unused)) d) {
double r26212661 = b;
double r26212662 = -r26212661;
double r26212663 = r26212661 * r26212661;
double r26212664 = 3.0;
double r26212665 = a;
double r26212666 = r26212664 * r26212665;
double r26212667 = c;
double r26212668 = r26212666 * r26212667;
double r26212669 = r26212663 - r26212668;
double r26212670 = sqrt(r26212669);
double r26212671 = r26212662 + r26212670;
double r26212672 = r26212671 / r26212666;
return r26212672;
}
double f(double a, double b, double c, double __attribute__((unused)) d) {
double r26212673 = b;
double r26212674 = 3.1756143268028576;
bool r26212675 = r26212673 <= r26212674;
double r26212676 = a;
double r26212677 = -3.0;
double r26212678 = c;
double r26212679 = r26212677 * r26212678;
double r26212680 = r26212676 * r26212679;
double r26212681 = fma(r26212673, r26212673, r26212680);
double r26212682 = r26212681 * r26212681;
double r26212683 = sqrt(r26212681);
double r26212684 = r26212682 * r26212683;
double r26212685 = r26212684 * r26212682;
double r26212686 = r26212673 * r26212673;
double r26212687 = r26212686 * r26212686;
double r26212688 = r26212687 * r26212687;
double r26212689 = r26212688 * r26212673;
double r26212690 = r26212685 - r26212689;
double r26212691 = r26212681 * r26212683;
double r26212692 = r26212686 * r26212673;
double r26212693 = r26212691 * r26212692;
double r26212694 = r26212692 * r26212692;
double r26212695 = r26212693 + r26212694;
double r26212696 = r26212691 * r26212691;
double r26212697 = r26212695 + r26212696;
double r26212698 = 3.0;
double r26212699 = r26212676 * r26212698;
double r26212700 = r26212676 * r26212678;
double r26212701 = fma(r26212677, r26212700, r26212686);
double r26212702 = sqrt(r26212701);
double r26212703 = r26212702 * r26212702;
double r26212704 = r26212673 * r26212702;
double r26212705 = r26212704 + r26212686;
double r26212706 = r26212703 + r26212705;
double r26212707 = r26212699 * r26212706;
double r26212708 = r26212697 * r26212707;
double r26212709 = r26212690 / r26212708;
double r26212710 = -1.5;
double r26212711 = r26212678 / r26212673;
double r26212712 = 1.125;
double r26212713 = r26212711 * r26212712;
double r26212714 = r26212713 * r26212676;
double r26212715 = fma(r26212710, r26212673, r26212714);
double r26212716 = r26212678 * r26212715;
double r26212717 = r26212686 + r26212701;
double r26212718 = fma(r26212673, r26212702, r26212717);
double r26212719 = r26212716 / r26212718;
double r26212720 = r26212675 ? r26212709 : r26212719;
return r26212720;
}
\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 3.1756143268028576:\\
\;\;\;\;\frac{\left(\left((b \cdot b + \left(a \cdot \left(-3 \cdot c\right)\right))_* \cdot (b \cdot b + \left(a \cdot \left(-3 \cdot c\right)\right))_*\right) \cdot \sqrt{(b \cdot b + \left(a \cdot \left(-3 \cdot c\right)\right))_*}\right) \cdot \left((b \cdot b + \left(a \cdot \left(-3 \cdot c\right)\right))_* \cdot (b \cdot b + \left(a \cdot \left(-3 \cdot c\right)\right))_*\right) - \left(\left(\left(b \cdot b\right) \cdot \left(b \cdot b\right)\right) \cdot \left(\left(b \cdot b\right) \cdot \left(b \cdot b\right)\right)\right) \cdot b}{\left(\left(\left((b \cdot b + \left(a \cdot \left(-3 \cdot c\right)\right))_* \cdot \sqrt{(b \cdot b + \left(a \cdot \left(-3 \cdot c\right)\right))_*}\right) \cdot \left(\left(b \cdot b\right) \cdot b\right) + \left(\left(b \cdot b\right) \cdot b\right) \cdot \left(\left(b \cdot b\right) \cdot b\right)\right) + \left((b \cdot b + \left(a \cdot \left(-3 \cdot c\right)\right))_* \cdot \sqrt{(b \cdot b + \left(a \cdot \left(-3 \cdot c\right)\right))_*}\right) \cdot \left((b \cdot b + \left(a \cdot \left(-3 \cdot c\right)\right))_* \cdot \sqrt{(b \cdot b + \left(a \cdot \left(-3 \cdot c\right)\right))_*}\right)\right) \cdot \left(\left(a \cdot 3\right) \cdot \left(\sqrt{(-3 \cdot \left(a \cdot c\right) + \left(b \cdot b\right))_*} \cdot \sqrt{(-3 \cdot \left(a \cdot c\right) + \left(b \cdot b\right))_*} + \left(b \cdot \sqrt{(-3 \cdot \left(a \cdot c\right) + \left(b \cdot b\right))_*} + b \cdot b\right)\right)\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{c \cdot (\frac{-3}{2} \cdot b + \left(\left(\frac{c}{b} \cdot \frac{9}{8}\right) \cdot a\right))_*}{(b \cdot \left(\sqrt{(-3 \cdot \left(a \cdot c\right) + \left(b \cdot b\right))_*}\right) + \left(b \cdot b + (-3 \cdot \left(a \cdot c\right) + \left(b \cdot b\right))_*\right))_*}\\
\end{array}


Bits error versus a



Bits error versus b



Bits error versus c



Bits error versus d
if b < 3.1756143268028576Initial program 12.7
Simplified12.7
rmApplied flip3--12.7
Applied associate-/l/12.7
Simplified12.1
rmApplied flip3--12.1
Applied associate-/l/12.1
Simplified12.1
if 3.1756143268028576 < b Initial program 32.2
Simplified32.2
rmApplied flip3--32.2
Applied associate-/l/32.2
Simplified31.6
Taylor expanded around inf 8.8
Simplified8.8
rmApplied associate-/r*8.8
Simplified8.7
Taylor expanded around -inf 8.7
Simplified8.7
Final simplification9.3
herbie shell --seed 2019102 +o rules:numerics
(FPCore (a b c d)
:name "Cubic critical, narrow range"
:pre (and (< 1.0536712127723509e-08 a 94906265.62425156) (< 1.0536712127723509e-08 b 94906265.62425156) (< 1.0536712127723509e-08 c 94906265.62425156))
(/ (+ (- b) (sqrt (- (* b b) (* (* 3 a) c)))) (* 3 a)))