\frac{\left(-b\right) + \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}{3 \cdot a}\frac{\sqrt[3]{\sqrt[3]{\mathsf{fma}\left(\sqrt{\sqrt{\mathsf{fma}\left(-3, a \cdot c, b \cdot b\right)}}, \sqrt{\sqrt{\mathsf{fma}\left(-3, a \cdot c, b \cdot b\right)}}, -b\right)} \cdot \left(\sqrt[3]{\mathsf{fma}\left(\sqrt{\sqrt{\mathsf{fma}\left(-3, a \cdot c, b \cdot b\right)}}, \sqrt{\sqrt{\mathsf{fma}\left(-3, a \cdot c, b \cdot b\right)}}, -b\right)} \cdot \sqrt[3]{\mathsf{fma}\left(\sqrt{\sqrt{\mathsf{fma}\left(-3, a \cdot c, b \cdot b\right)}}, \sqrt{\sqrt{\mathsf{fma}\left(-3, a \cdot c, b \cdot b\right)}}, -b\right)}\right)} \cdot \sqrt[3]{\mathsf{fma}\left(\sqrt{\sqrt{\mathsf{fma}\left(-3, a \cdot c, b \cdot b\right)}}, \sqrt{\sqrt{\mathsf{fma}\left(-3, a \cdot c, b \cdot b\right)}}, -b\right)}}{\frac{a \cdot 3}{\sqrt[3]{\sqrt[3]{\mathsf{fma}\left(\sqrt{\sqrt{\mathsf{fma}\left(-3, a \cdot c, b \cdot b\right)}}, \sqrt{\sqrt{\mathsf{fma}\left(-3, a \cdot c, b \cdot b\right)}}, -b\right)} \cdot \sqrt[3]{\mathsf{fma}\left(\sqrt{\sqrt{\mathsf{fma}\left(-3, a \cdot c, b \cdot b\right)}}, \sqrt{\sqrt{\mathsf{fma}\left(-3, a \cdot c, b \cdot b\right)}}, -b\right)}} \cdot \sqrt[3]{\sqrt[3]{\mathsf{fma}\left(\sqrt{\sqrt{\mathsf{fma}\left(-3, a \cdot c, b \cdot b\right)}}, \sqrt{\sqrt{\mathsf{fma}\left(-3, a \cdot c, b \cdot b\right)}}, -b\right)}}}}double f(double a, double b, double c) {
double r2864970 = b;
double r2864971 = -r2864970;
double r2864972 = r2864970 * r2864970;
double r2864973 = 3.0;
double r2864974 = a;
double r2864975 = r2864973 * r2864974;
double r2864976 = c;
double r2864977 = r2864975 * r2864976;
double r2864978 = r2864972 - r2864977;
double r2864979 = sqrt(r2864978);
double r2864980 = r2864971 + r2864979;
double r2864981 = r2864980 / r2864975;
return r2864981;
}
double f(double a, double b, double c) {
double r2864982 = -3.0;
double r2864983 = a;
double r2864984 = c;
double r2864985 = r2864983 * r2864984;
double r2864986 = b;
double r2864987 = r2864986 * r2864986;
double r2864988 = fma(r2864982, r2864985, r2864987);
double r2864989 = sqrt(r2864988);
double r2864990 = sqrt(r2864989);
double r2864991 = -r2864986;
double r2864992 = fma(r2864990, r2864990, r2864991);
double r2864993 = cbrt(r2864992);
double r2864994 = r2864993 * r2864993;
double r2864995 = r2864993 * r2864994;
double r2864996 = cbrt(r2864995);
double r2864997 = r2864996 * r2864993;
double r2864998 = 3.0;
double r2864999 = r2864983 * r2864998;
double r2865000 = cbrt(r2864994);
double r2865001 = cbrt(r2864993);
double r2865002 = r2865000 * r2865001;
double r2865003 = r2864999 / r2865002;
double r2865004 = r2864997 / r2865003;
return r2865004;
}



Bits error versus a



Bits error versus b



Bits error versus c
Initial program 53.0
Simplified53.0
rmApplied add-sqr-sqrt53.0
Applied sqrt-prod52.7
Applied fma-neg52.2
rmApplied add-cube-cbrt52.2
Applied associate-/l*52.2
rmApplied add-cube-cbrt52.2
Applied cbrt-prod52.2
rmApplied add-cube-cbrt52.2
Final simplification52.2
herbie shell --seed 2019146 +o rules:numerics
(FPCore (a b c)
: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)))