\frac{\left(-b\right) + \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}{3 \cdot a}\frac{\left(\sqrt[3]{\mathsf{fma}\left(\left(\sqrt{\sqrt{{\left(\left(\mathsf{fma}\left(c, \left(a \cdot -3\right), \left(b \cdot b\right)\right) \cdot \mathsf{fma}\left(c, \left(a \cdot -3\right), \left(b \cdot b\right)\right)\right) \cdot \mathsf{fma}\left(c, \left(a \cdot -3\right), \left(b \cdot b\right)\right)\right)}^{\frac{1}{3}}}}\right), \left(\sqrt{\sqrt{\mathsf{fma}\left(c, \left(a \cdot -3\right), \left(b \cdot b\right)\right)}}\right), \left(-b\right)\right)} \cdot \sqrt[3]{\mathsf{fma}\left(\left(\sqrt{\sqrt{{\left(\left(\mathsf{fma}\left(c, \left(a \cdot -3\right), \left(b \cdot b\right)\right) \cdot \mathsf{fma}\left(c, \left(a \cdot -3\right), \left(b \cdot b\right)\right)\right) \cdot \mathsf{fma}\left(c, \left(a \cdot -3\right), \left(b \cdot b\right)\right)\right)}^{\frac{1}{3}}}}\right), \left(\sqrt{\sqrt{\mathsf{fma}\left(c, \left(a \cdot -3\right), \left(b \cdot b\right)\right)}}\right), \left(-b\right)\right)}\right) \cdot \sqrt[3]{\mathsf{fma}\left(\left(\sqrt{\sqrt{{\left(\left(\mathsf{fma}\left(c, \left(a \cdot -3\right), \left(b \cdot b\right)\right) \cdot \mathsf{fma}\left(c, \left(a \cdot -3\right), \left(b \cdot b\right)\right)\right) \cdot \mathsf{fma}\left(c, \left(a \cdot -3\right), \left(b \cdot b\right)\right)\right)}^{\frac{1}{3}}}}\right), \left(\sqrt{\sqrt{\mathsf{fma}\left(c, \left(a \cdot -3\right), \left(b \cdot b\right)\right)}}\right), \left(-b\right)\right)}}{a \cdot 3}double f(double a, double b, double c, double __attribute__((unused)) d) {
double r3618976 = b;
double r3618977 = -r3618976;
double r3618978 = r3618976 * r3618976;
double r3618979 = 3.0;
double r3618980 = a;
double r3618981 = r3618979 * r3618980;
double r3618982 = c;
double r3618983 = r3618981 * r3618982;
double r3618984 = r3618978 - r3618983;
double r3618985 = sqrt(r3618984);
double r3618986 = r3618977 + r3618985;
double r3618987 = r3618986 / r3618981;
return r3618987;
}
double f(double a, double b, double c, double __attribute__((unused)) d) {
double r3618988 = c;
double r3618989 = a;
double r3618990 = -3.0;
double r3618991 = r3618989 * r3618990;
double r3618992 = b;
double r3618993 = r3618992 * r3618992;
double r3618994 = fma(r3618988, r3618991, r3618993);
double r3618995 = r3618994 * r3618994;
double r3618996 = r3618995 * r3618994;
double r3618997 = 0.3333333333333333;
double r3618998 = pow(r3618996, r3618997);
double r3618999 = sqrt(r3618998);
double r3619000 = sqrt(r3618999);
double r3619001 = sqrt(r3618994);
double r3619002 = sqrt(r3619001);
double r3619003 = -r3618992;
double r3619004 = fma(r3619000, r3619002, r3619003);
double r3619005 = cbrt(r3619004);
double r3619006 = r3619005 * r3619005;
double r3619007 = r3619006 * r3619005;
double r3619008 = 3.0;
double r3619009 = r3618989 * r3619008;
double r3619010 = r3619007 / r3619009;
return r3619010;
}



Bits error versus a



Bits error versus b



Bits error versus c



Bits error versus d
Initial program 52.7
Simplified52.7
rmApplied add-sqr-sqrt52.7
Applied sqrt-prod52.5
Applied fma-neg51.9
rmApplied add-cbrt-cube52.0
rmApplied pow1/351.3
rmApplied add-cube-cbrt51.3
Final simplification51.3
herbie shell --seed 2019133 +o rules:numerics
(FPCore (a b c d)
:name "Cubic critical, wide range"
:pre (and (< 4.930380657631324e-32 a 2.028240960365167e+31) (< 4.930380657631324e-32 b 2.028240960365167e+31) (< 4.930380657631324e-32 c 2.028240960365167e+31))
(/ (+ (- b) (sqrt (- (* b b) (* (* 3 a) c)))) (* 3 a)))