x + \frac{\left(y - x\right) \cdot z}{t}\begin{array}{l}
\mathbf{if}\;t \le -2.362884853252186351003430209899103823374 \cdot 10^{-200}:\\
\;\;\;\;x + \left(y - x\right) \cdot \frac{z}{t}\\
\mathbf{elif}\;t \le 8.698046239578131913729902310956849143645 \cdot 10^{-72}:\\
\;\;\;\;x + \frac{\left(y - x\right) \cdot z}{t}\\
\mathbf{else}:\\
\;\;\;\;x + \frac{y - x}{\frac{t}{z}}\\
\end{array}double f(double x, double y, double z, double t) {
double r468822 = x;
double r468823 = y;
double r468824 = r468823 - r468822;
double r468825 = z;
double r468826 = r468824 * r468825;
double r468827 = t;
double r468828 = r468826 / r468827;
double r468829 = r468822 + r468828;
return r468829;
}
double f(double x, double y, double z, double t) {
double r468830 = t;
double r468831 = -2.3628848532521864e-200;
bool r468832 = r468830 <= r468831;
double r468833 = x;
double r468834 = y;
double r468835 = r468834 - r468833;
double r468836 = z;
double r468837 = r468836 / r468830;
double r468838 = r468835 * r468837;
double r468839 = r468833 + r468838;
double r468840 = 8.698046239578132e-72;
bool r468841 = r468830 <= r468840;
double r468842 = r468835 * r468836;
double r468843 = r468842 / r468830;
double r468844 = r468833 + r468843;
double r468845 = r468830 / r468836;
double r468846 = r468835 / r468845;
double r468847 = r468833 + r468846;
double r468848 = r468841 ? r468844 : r468847;
double r468849 = r468832 ? r468839 : r468848;
return r468849;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 6.4 |
|---|---|
| Target | 2.1 |
| Herbie | 1.6 |
if t < -2.3628848532521864e-200Initial program 7.1
rmApplied *-un-lft-identity7.1
Applied times-frac1.6
Simplified1.6
if -2.3628848532521864e-200 < t < 8.698046239578132e-72Initial program 2.7
if 8.698046239578132e-72 < t Initial program 7.5
rmApplied associate-/l*1.1
Final simplification1.6
herbie shell --seed 2019322
(FPCore (x y z t)
:name "Numeric.Histogram:binBounds from Chart-1.5.3"
:precision binary64
:herbie-target
(if (< x -9.0255111955330046e-135) (- x (* (/ z t) (- x y))) (if (< x 4.2750321637007147e-250) (+ x (* (/ (- y x) t) z)) (+ x (/ (- y x) (/ t z)))))
(+ x (/ (* (- y x) z) t)))