\frac{x}{y} + \frac{2.0 + \left(z \cdot 2.0\right) \cdot \left(1.0 - t\right)}{t \cdot z}\left(\left(\frac{2.0}{t} + \frac{\frac{2.0}{t}}{z}\right) - 2.0\right) + \frac{x}{y}double f(double x, double y, double z, double t) {
double r16957642 = x;
double r16957643 = y;
double r16957644 = r16957642 / r16957643;
double r16957645 = 2.0;
double r16957646 = z;
double r16957647 = r16957646 * r16957645;
double r16957648 = 1.0;
double r16957649 = t;
double r16957650 = r16957648 - r16957649;
double r16957651 = r16957647 * r16957650;
double r16957652 = r16957645 + r16957651;
double r16957653 = r16957649 * r16957646;
double r16957654 = r16957652 / r16957653;
double r16957655 = r16957644 + r16957654;
return r16957655;
}
double f(double x, double y, double z, double t) {
double r16957656 = 2.0;
double r16957657 = t;
double r16957658 = r16957656 / r16957657;
double r16957659 = z;
double r16957660 = r16957658 / r16957659;
double r16957661 = r16957658 + r16957660;
double r16957662 = r16957661 - r16957656;
double r16957663 = x;
double r16957664 = y;
double r16957665 = r16957663 / r16957664;
double r16957666 = r16957662 + r16957665;
return r16957666;
}




Bits error versus x




Bits error versus y




Bits error versus z




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