\frac{x}{y} + \frac{2 + \left(z \cdot 2\right) \cdot \left(1 - t\right)}{t \cdot z}\left(\left(\frac{2}{t} - 2\right) + \frac{\frac{2}{z}}{t}\right) + \frac{x}{y}double f(double x, double y, double z, double t) {
double r420949 = x;
double r420950 = y;
double r420951 = r420949 / r420950;
double r420952 = 2.0;
double r420953 = z;
double r420954 = r420953 * r420952;
double r420955 = 1.0;
double r420956 = t;
double r420957 = r420955 - r420956;
double r420958 = r420954 * r420957;
double r420959 = r420952 + r420958;
double r420960 = r420956 * r420953;
double r420961 = r420959 / r420960;
double r420962 = r420951 + r420961;
return r420962;
}
double f(double x, double y, double z, double t) {
double r420963 = 2.0;
double r420964 = t;
double r420965 = r420963 / r420964;
double r420966 = r420965 - r420963;
double r420967 = z;
double r420968 = r420963 / r420967;
double r420969 = r420968 / r420964;
double r420970 = r420966 + r420969;
double r420971 = x;
double r420972 = y;
double r420973 = r420971 / r420972;
double r420974 = r420970 + r420973;
return r420974;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 10.1 |
|---|---|
| Target | 0.1 |
| Herbie | 0.1 |
Initial program 10.1
Simplified10.1
Taylor expanded around 0 0.1
Simplified0.1
rmApplied div-inv0.1
rmApplied associate-*l/0.1
Simplified0.1
Final simplification0.1
herbie shell --seed 2019174
(FPCore (x y z t)
:name "Data.HashTable.ST.Basic:computeOverhead from hashtables-1.2.0.2"
:herbie-target
(- (/ (+ (/ 2.0 z) 2.0) t) (- 2.0 (/ x y)))
(+ (/ x y) (/ (+ 2.0 (* (* z 2.0) (- 1.0 t))) (* t z))))