\left(1 + t \cdot 2 \cdot 10^{-16}\right) \cdot \left(1 + t \cdot 2 \cdot 10^{-16}\right) + \left(-1 - 2 \cdot \left(t \cdot 2 \cdot 10^{-16}\right)\right)\left(t \cdot \left(t \cdot 2 \cdot 10^{-16}\right)\right) \cdot 2 \cdot 10^{-16}double f(double t) {
double r3368863 = 1.0;
double r3368864 = t;
double r3368865 = 2e-16;
double r3368866 = r3368864 * r3368865;
double r3368867 = r3368863 + r3368866;
double r3368868 = r3368867 * r3368867;
double r3368869 = -1.0;
double r3368870 = 2.0;
double r3368871 = r3368870 * r3368866;
double r3368872 = r3368869 - r3368871;
double r3368873 = r3368868 + r3368872;
return r3368873;
}
double f(double t) {
double r3368874 = t;
double r3368875 = 2e-16;
double r3368876 = r3368874 * r3368875;
double r3368877 = r3368874 * r3368876;
double r3368878 = r3368877 * r3368875;
return r3368878;
}




Bits error versus t
Results
| Original | 61.8 |
|---|---|
| Target | 50.6 |
| Herbie | 0.3 |
Initial program 61.8
Simplified0.4
rmApplied associate-*r*0.3
Final simplification0.3
herbie shell --seed 2019158
(FPCore (t)
:name "fma_test1"
:pre (<= 0.9 t 1.1)
:herbie-target
(fma (+ 1 (* t 2e-16)) (+ 1 (* t 2e-16)) (- -1 (* 2 (* t 2e-16))))
(+ (* (+ 1 (* t 2e-16)) (+ 1 (* t 2e-16))) (- -1 (* 2 (* t 2e-16)))))