\frac{\left(-b\right) + \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}{3 \cdot a}\sqrt[3]{\left(\frac{(\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))_*}{3 \cdot a} \cdot \frac{(\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))_*}{3 \cdot a}\right) \cdot \frac{(\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))_*}{3 \cdot a}}double f(double a, double b, double c, double __attribute__((unused)) d) {
double r16251295 = b;
double r16251296 = -r16251295;
double r16251297 = r16251295 * r16251295;
double r16251298 = 3.0;
double r16251299 = a;
double r16251300 = r16251298 * r16251299;
double r16251301 = c;
double r16251302 = r16251300 * r16251301;
double r16251303 = r16251297 - r16251302;
double r16251304 = sqrt(r16251303);
double r16251305 = r16251296 + r16251304;
double r16251306 = r16251305 / r16251300;
return r16251306;
}
double f(double a, double b, double c, double __attribute__((unused)) d) {
double r16251307 = -3.0;
double r16251308 = a;
double r16251309 = c;
double r16251310 = r16251308 * r16251309;
double r16251311 = b;
double r16251312 = r16251311 * r16251311;
double r16251313 = fma(r16251307, r16251310, r16251312);
double r16251314 = sqrt(r16251313);
double r16251315 = sqrt(r16251314);
double r16251316 = -r16251311;
double r16251317 = fma(r16251315, r16251315, r16251316);
double r16251318 = 3.0;
double r16251319 = r16251318 * r16251308;
double r16251320 = r16251317 / r16251319;
double r16251321 = r16251320 * r16251320;
double r16251322 = r16251321 * r16251320;
double r16251323 = cbrt(r16251322);
return r16251323;
}



Bits error versus a



Bits error versus b



Bits error versus c



Bits error versus d
Initial program 43.6
Simplified43.6
rmApplied add-sqr-sqrt43.6
Applied sqrt-prod43.5
Applied fma-neg42.9
rmApplied add-cbrt-cube42.9
Final simplification42.9
herbie shell --seed 2019119 +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)))