\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)t \cdot \left(t \cdot 3.9999999999999997 \cdot 10^{-32}\right)double f(double t) {
double r2424806 = 1.0;
double r2424807 = t;
double r2424808 = 2e-16;
double r2424809 = r2424807 * r2424808;
double r2424810 = r2424806 + r2424809;
double r2424811 = r2424810 * r2424810;
double r2424812 = -1.0;
double r2424813 = 2.0;
double r2424814 = r2424813 * r2424809;
double r2424815 = r2424812 - r2424814;
double r2424816 = r2424811 + r2424815;
return r2424816;
}
double f(double t) {
double r2424817 = t;
double r2424818 = 3.9999999999999997e-32;
double r2424819 = r2424817 * r2424818;
double r2424820 = r2424817 * r2424819;
return r2424820;
}




Bits error versus t
Results
| Original | 61.8 |
|---|---|
| Target | 50.6 |
| Herbie | 0.3 |
Initial program 61.8
Simplified0.4
Taylor expanded around -inf 0.4
Simplified0.3
Final simplification0.3
herbie shell --seed 2019138 +o rules:numerics
(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)))))