\frac{x}{y} + \frac{2 + \left(z \cdot 2\right) \cdot \left(1 - t\right)}{t \cdot z}\frac{x}{y} + \left(\left(\frac{2}{t} + \frac{\frac{2}{t}}{z}\right) - 2\right)double f(double x, double y, double z, double t) {
double r547473 = x;
double r547474 = y;
double r547475 = r547473 / r547474;
double r547476 = 2.0;
double r547477 = z;
double r547478 = r547477 * r547476;
double r547479 = 1.0;
double r547480 = t;
double r547481 = r547479 - r547480;
double r547482 = r547478 * r547481;
double r547483 = r547476 + r547482;
double r547484 = r547480 * r547477;
double r547485 = r547483 / r547484;
double r547486 = r547475 + r547485;
return r547486;
}
double f(double x, double y, double z, double t) {
double r547487 = x;
double r547488 = y;
double r547489 = r547487 / r547488;
double r547490 = 2.0;
double r547491 = t;
double r547492 = r547490 / r547491;
double r547493 = z;
double r547494 = r547492 / r547493;
double r547495 = r547492 + r547494;
double r547496 = r547495 - r547490;
double r547497 = r547489 + r547496;
return r547497;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 9.2 |
|---|---|
| Target | 0.1 |
| Herbie | 0.1 |
Initial program 9.2
Taylor expanded around 0 0.1
Simplified0.1
rmApplied associate-/r*0.1
Final simplification0.1
herbie shell --seed 2019305
(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))))