double f(double a, double b, double c, double __attribute__((unused)) d) {
double r16032127 = b;
double r16032128 = -r16032127;
double r16032129 = r16032127 * r16032127;
double r16032130 = 3.0;
double r16032131 = a;
double r16032132 = r16032130 * r16032131;
double r16032133 = c;
double r16032134 = r16032132 * r16032133;
double r16032135 = r16032129 - r16032134;
double r16032136 = sqrt(r16032135);
double r16032137 = r16032128 + r16032136;
double r16032138 = r16032137 / r16032132;
return r16032138;
}
double f(double a, double b, double c, double __attribute__((unused)) d) {
double r16032139 = 1.0;
double r16032140 = a;
double r16032141 = 3.0;
double r16032142 = r16032140 * r16032141;
double r16032143 = r16032139 / r16032142;
double r16032144 = cbrt(r16032143);
double r16032145 = 0.3333333333333333;
double r16032146 = pow(r16032143, r16032145);
double r16032147 = r16032146 * r16032144;
double r16032148 = -3.0;
double r16032149 = c;
double r16032150 = r16032140 * r16032149;
double r16032151 = b;
double r16032152 = r16032151 * r16032151;
double r16032153 = fma(r16032148, r16032150, r16032152);
double r16032154 = sqrt(r16032153);
double r16032155 = sqrt(r16032154);
double r16032156 = -r16032151;
double r16032157 = fma(r16032155, r16032155, r16032156);
double r16032158 = r16032147 * r16032157;
double r16032159 = r16032144 * r16032158;
return r16032159;
}
\frac{\left(-b\right) + \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}{3 \cdot a}\sqrt[3]{\frac{1}{a \cdot 3}} \cdot \left(\left({\left(\frac{1}{a \cdot 3}\right)}^{\frac{1}{3}} \cdot \sqrt[3]{\frac{1}{a \cdot 3}}\right) \cdot (\left(\sqrt{\sqrt{(-3 \cdot \left(a \cdot c\right) + \left(b \cdot b\right))_*}}\right) \cdot \left(\sqrt{\sqrt{(-3 \cdot \left(a \cdot c\right) + \left(b \cdot b\right))_*}}\right) + \left(-b\right))_*\right)


Bits error versus a



Bits error versus b



Bits error versus c



Bits error versus d
Initial program 43.7
Simplified43.7
rmApplied add-sqr-sqrt43.7
Applied sqrt-prod43.8
Applied fma-neg43.1
rmApplied div-inv43.1
rmApplied add-cube-cbrt43.2
Applied associate-*r*43.2
rmApplied pow1/343.2
Final simplification43.2
herbie shell --seed 2019102 +o rules:numerics
(FPCore (a b c d)
:name "Cubic critical, medium range"
:pre (and (< 1.1102230246251565e-16 a 9007199254740992.0) (< 1.1102230246251565e-16 b 9007199254740992.0) (< 1.1102230246251565e-16 c 9007199254740992.0))
(/ (+ (- b) (sqrt (- (* b b) (* (* 3 a) c)))) (* 3 a)))