\frac{x}{y} + \frac{2 + \left(z \cdot 2\right) \cdot \left(1 - t\right)}{t \cdot z}\frac{x}{y} + \left(\frac{\frac{2}{t}}{z} + \left(\frac{2}{t} - 2\right)\right)double f(double x, double y, double z, double t) {
double r511440 = x;
double r511441 = y;
double r511442 = r511440 / r511441;
double r511443 = 2.0;
double r511444 = z;
double r511445 = r511444 * r511443;
double r511446 = 1.0;
double r511447 = t;
double r511448 = r511446 - r511447;
double r511449 = r511445 * r511448;
double r511450 = r511443 + r511449;
double r511451 = r511447 * r511444;
double r511452 = r511450 / r511451;
double r511453 = r511442 + r511452;
return r511453;
}
double f(double x, double y, double z, double t) {
double r511454 = x;
double r511455 = y;
double r511456 = r511454 / r511455;
double r511457 = 2.0;
double r511458 = t;
double r511459 = r511457 / r511458;
double r511460 = z;
double r511461 = r511459 / r511460;
double r511462 = r511459 - r511457;
double r511463 = r511461 + r511462;
double r511464 = r511456 + r511463;
return r511464;
}




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 +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))))