\frac{x}{y} \cdot \left(z - t\right) + t\mathsf{fma}\left(\frac{x}{y}, z - t, t\right)double f(double x, double y, double z, double t) {
double r98062959 = x;
double r98062960 = y;
double r98062961 = r98062959 / r98062960;
double r98062962 = z;
double r98062963 = t;
double r98062964 = r98062962 - r98062963;
double r98062965 = r98062961 * r98062964;
double r98062966 = r98062965 + r98062963;
return r98062966;
}
double f(double x, double y, double z, double t) {
double r98062967 = x;
double r98062968 = y;
double r98062969 = r98062967 / r98062968;
double r98062970 = z;
double r98062971 = t;
double r98062972 = r98062970 - r98062971;
double r98062973 = fma(r98062969, r98062972, r98062971);
return r98062973;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
| Original | 2.3 |
|---|---|
| Target | 2.5 |
| Herbie | 2.3 |
Initial program 2.3
Simplified2.3
Final simplification2.3
herbie shell --seed 2019173 +o rules:numerics
(FPCore (x y z t)
:name "Numeric.Signal.Multichannel:$cget from hsignal-0.2.7.1"
:herbie-target
(if (< z 2.759456554562692e-282) (+ (* (/ x y) (- z t)) t) (if (< z 2.326994450874436e-110) (+ (* x (/ (- z t) y)) t) (+ (* (/ x y) (- z t)) t)))
(+ (* (/ x y) (- z t)) t))