x + \frac{\left(y - x\right) \cdot z}{t}\begin{array}{l}
\mathbf{if}\;z \le -1.47437460621894122515597907358401131123 \cdot 10^{-73}:\\
\;\;\;\;x + \frac{y - x}{t} \cdot z\\
\mathbf{else}:\\
\;\;\;\;x + \left(y - x\right) \cdot \frac{z}{t}\\
\end{array}double f(double x, double y, double z, double t) {
double r22418807 = x;
double r22418808 = y;
double r22418809 = r22418808 - r22418807;
double r22418810 = z;
double r22418811 = r22418809 * r22418810;
double r22418812 = t;
double r22418813 = r22418811 / r22418812;
double r22418814 = r22418807 + r22418813;
return r22418814;
}
double f(double x, double y, double z, double t) {
double r22418815 = z;
double r22418816 = -1.4743746062189412e-73;
bool r22418817 = r22418815 <= r22418816;
double r22418818 = x;
double r22418819 = y;
double r22418820 = r22418819 - r22418818;
double r22418821 = t;
double r22418822 = r22418820 / r22418821;
double r22418823 = r22418822 * r22418815;
double r22418824 = r22418818 + r22418823;
double r22418825 = r22418815 / r22418821;
double r22418826 = r22418820 * r22418825;
double r22418827 = r22418818 + r22418826;
double r22418828 = r22418817 ? r22418824 : r22418827;
return r22418828;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 6.4 |
|---|---|
| Target | 1.9 |
| Herbie | 1.8 |
if z < -1.4743746062189412e-73Initial program 11.2
rmApplied associate-/l*2.5
rmApplied associate-/r/2.1
if -1.4743746062189412e-73 < z Initial program 4.8
rmApplied *-un-lft-identity4.8
Applied times-frac1.8
Simplified1.8
Final simplification1.8
herbie shell --seed 2019179
(FPCore (x y z t)
:name "Numeric.Histogram:binBounds from Chart-1.5.3"
:herbie-target
(if (< x -9.025511195533005e-135) (- x (* (/ z t) (- x y))) (if (< x 4.275032163700715e-250) (+ x (* (/ (- y x) t) z)) (+ x (/ (- y x) (/ t z)))))
(+ x (/ (* (- y x) z) t)))