\frac{x}{y} + \frac{2 + \left(z \cdot 2\right) \cdot \left(1 - t\right)}{t \cdot z}\mathsf{fma}\left(\mathsf{fma}\left(2, 1, \frac{2}{z}\right), \frac{1}{t}, \frac{x}{y} - 2\right)double f(double x, double y, double z, double t) {
double r492585 = x;
double r492586 = y;
double r492587 = r492585 / r492586;
double r492588 = 2.0;
double r492589 = z;
double r492590 = r492589 * r492588;
double r492591 = 1.0;
double r492592 = t;
double r492593 = r492591 - r492592;
double r492594 = r492590 * r492593;
double r492595 = r492588 + r492594;
double r492596 = r492592 * r492589;
double r492597 = r492595 / r492596;
double r492598 = r492587 + r492597;
return r492598;
}
double f(double x, double y, double z, double t) {
double r492599 = 2.0;
double r492600 = 1.0;
double r492601 = z;
double r492602 = r492599 / r492601;
double r492603 = fma(r492599, r492600, r492602);
double r492604 = 1.0;
double r492605 = t;
double r492606 = r492604 / r492605;
double r492607 = x;
double r492608 = y;
double r492609 = r492607 / r492608;
double r492610 = r492609 - r492599;
double r492611 = fma(r492603, r492606, r492610);
return r492611;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
| Original | 8.9 |
|---|---|
| Target | 0.1 |
| Herbie | 0.1 |
Initial program 8.9
Simplified0.1
rmApplied div-inv0.1
Applied fma-def0.1
Final simplification0.1
herbie shell --seed 2019347 +o rules:numerics
(FPCore (x y z t)
:name "Data.HashTable.ST.Basic:computeOverhead from hashtables-1.2.0.2"
:precision binary64
:herbie-target
(- (/ (+ (/ 2 z) 2) t) (- 2 (/ x y)))
(+ (/ x y) (/ (+ 2 (* (* z 2) (- 1 t))) (* t z))))