\frac{x}{y} + \frac{2 + \left(z \cdot 2\right) \cdot \left(1 - t\right)}{t \cdot z}\begin{array}{l}
\mathbf{if}\;z \le -141453706896209001594861152542654464 \lor \neg \left(z \le 21282048288.189067840576171875\right):\\
\;\;\;\;\frac{x}{y} + \left(\frac{{\left(\frac{2}{z}\right)}^{3} + {2}^{3}}{\left(2 \cdot \left(2 - \frac{2}{z}\right) + \frac{2}{z} \cdot \frac{2}{z}\right) \cdot t} - 2\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{x}{y} + \frac{2 + \left(z \cdot 2\right) \cdot \left(1 - t\right)}{t \cdot z}\\
\end{array}double f(double x, double y, double z, double t) {
double r547595 = x;
double r547596 = y;
double r547597 = r547595 / r547596;
double r547598 = 2.0;
double r547599 = z;
double r547600 = r547599 * r547598;
double r547601 = 1.0;
double r547602 = t;
double r547603 = r547601 - r547602;
double r547604 = r547600 * r547603;
double r547605 = r547598 + r547604;
double r547606 = r547602 * r547599;
double r547607 = r547605 / r547606;
double r547608 = r547597 + r547607;
return r547608;
}
double f(double x, double y, double z, double t) {
double r547609 = z;
double r547610 = -1.41453706896209e+35;
bool r547611 = r547609 <= r547610;
double r547612 = 21282048288.189068;
bool r547613 = r547609 <= r547612;
double r547614 = !r547613;
bool r547615 = r547611 || r547614;
double r547616 = x;
double r547617 = y;
double r547618 = r547616 / r547617;
double r547619 = 2.0;
double r547620 = r547619 / r547609;
double r547621 = 3.0;
double r547622 = pow(r547620, r547621);
double r547623 = pow(r547619, r547621);
double r547624 = r547622 + r547623;
double r547625 = r547619 - r547620;
double r547626 = r547619 * r547625;
double r547627 = r547620 * r547620;
double r547628 = r547626 + r547627;
double r547629 = t;
double r547630 = r547628 * r547629;
double r547631 = r547624 / r547630;
double r547632 = r547631 - r547619;
double r547633 = r547618 + r547632;
double r547634 = r547609 * r547619;
double r547635 = 1.0;
double r547636 = r547635 - r547629;
double r547637 = r547634 * r547636;
double r547638 = r547619 + r547637;
double r547639 = r547629 * r547609;
double r547640 = r547638 / r547639;
double r547641 = r547618 + r547640;
double r547642 = r547615 ? r547633 : r547641;
return r547642;
}




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 |
if z < -1.41453706896209e+35 or 21282048288.189068 < z Initial program 17.5
Taylor expanded around 0 0.0
Simplified0.0
rmApplied flip3-+0.0
Applied frac-times0.0
Simplified0.0
Simplified0.0
if -1.41453706896209e+35 < z < 21282048288.189068Initial program 0.3
Final simplification0.1
herbie shell --seed 2019298
(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))))