\frac{x \cdot y - \left(z \cdot 9\right) \cdot t}{a \cdot 2}\frac{\frac{\mathsf{fma}\left(x, y, -\left(z \cdot 9\right) \cdot t\right)}{a}}{2} \cdot \sqrt{1}double f(double x, double y, double z, double t, double a) {
double r643959 = x;
double r643960 = y;
double r643961 = r643959 * r643960;
double r643962 = z;
double r643963 = 9.0;
double r643964 = r643962 * r643963;
double r643965 = t;
double r643966 = r643964 * r643965;
double r643967 = r643961 - r643966;
double r643968 = a;
double r643969 = 2.0;
double r643970 = r643968 * r643969;
double r643971 = r643967 / r643970;
return r643971;
}
double f(double x, double y, double z, double t, double a) {
double r643972 = x;
double r643973 = y;
double r643974 = z;
double r643975 = 9.0;
double r643976 = r643974 * r643975;
double r643977 = t;
double r643978 = r643976 * r643977;
double r643979 = -r643978;
double r643980 = fma(r643972, r643973, r643979);
double r643981 = a;
double r643982 = r643980 / r643981;
double r643983 = 2.0;
double r643984 = r643982 / r643983;
double r643985 = 1.0;
double r643986 = sqrt(r643985);
double r643987 = r643984 * r643986;
return r643987;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
| Original | 8.0 |
|---|---|
| Target | 5.9 |
| Herbie | 8.0 |
Initial program 8.0
rmApplied *-un-lft-identity8.0
Applied times-frac8.1
rmApplied *-un-lft-identity8.1
Applied add-sqr-sqrt8.1
Applied times-frac8.1
Applied associate-*l*8.1
Simplified8.0
Final simplification8.0
herbie shell --seed 2020047 +o rules:numerics
(FPCore (x y z t a)
:name "Diagrams.Solve.Polynomial:cubForm from diagrams-solve-0.1, I"
:precision binary64
:herbie-target
(if (< a -2.090464557976709e+86) (- (* 0.5 (/ (* y x) a)) (* 4.5 (/ t (/ a z)))) (if (< a 2.144030707833976e+99) (/ (- (* x y) (* z (* 9 t))) (* a 2)) (- (* (/ y a) (* x 0.5)) (* (/ t a) (* z 4.5)))))
(/ (- (* x y) (* (* z 9) t)) (* a 2)))