\left(1 + t \cdot 1.999999999999999958195573448069207123682 \cdot 10^{-16}\right) \cdot \left(1 + t \cdot 1.999999999999999958195573448069207123682 \cdot 10^{-16}\right) + \left(-1 - 2 \cdot \left(t \cdot 1.999999999999999958195573448069207123682 \cdot 10^{-16}\right)\right)\sqrt{\sqrt{3.999999999999999676487027278085939408227 \cdot 10^{-32}}} \cdot \left({\left(\sqrt{\sqrt{3.999999999999999676487027278085939408227 \cdot 10^{-32}}}\right)}^{3} \cdot \left(t \cdot t\right)\right)double f(double t) {
double r99336 = 1.0;
double r99337 = t;
double r99338 = 2e-16;
double r99339 = r99337 * r99338;
double r99340 = r99336 + r99339;
double r99341 = r99340 * r99340;
double r99342 = -1.0;
double r99343 = 2.0;
double r99344 = r99343 * r99339;
double r99345 = r99342 - r99344;
double r99346 = r99341 + r99345;
return r99346;
}
double f(double t) {
double r99347 = 3.9999999999999997e-32;
double r99348 = sqrt(r99347);
double r99349 = sqrt(r99348);
double r99350 = 3.0;
double r99351 = pow(r99349, r99350);
double r99352 = t;
double r99353 = r99352 * r99352;
double r99354 = r99351 * r99353;
double r99355 = r99349 * r99354;
return r99355;
}




Bits error versus t
Results
| Original | 61.8 |
|---|---|
| Target | 50.6 |
| Herbie | 0.4 |
Initial program 61.8
Taylor expanded around 0 0.4
rmApplied add-sqr-sqrt0.4
Applied associate-*l*0.4
rmApplied add-sqr-sqrt0.4
Applied sqrt-prod0.4
Applied associate-*l*0.4
rmApplied add-sqr-sqrt0.4
Applied sqrt-prod0.4
Applied associate-*l*0.5
Simplified0.4
Final simplification0.4
herbie shell --seed 2019208
(FPCore (t)
:name "fma_test1"
:precision binary64
:pre (<= 0.900000000000000022 t 1.1000000000000001)
: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)))))