\frac{x}{y} \cdot \left(z - t\right) + t\begin{array}{l}
\mathbf{if}\;\frac{x}{y} \le -1.141100597297648032802527423462757536886 \cdot 10^{145}:\\
\;\;\;\;t + x \cdot \frac{z - t}{y}\\
\mathbf{elif}\;\frac{x}{y} \le 1.351614225725563424608543172676723060249 \cdot 10^{171}:\\
\;\;\;\;\left(t + \left(\sqrt[3]{\frac{x}{y}} \cdot \sqrt[3]{\frac{x}{y}}\right) \cdot \left(-\sqrt[3]{\frac{x}{y}} \cdot t\right)\right) + \frac{x}{y} \cdot z\\
\mathbf{else}:\\
\;\;\;\;t + x \cdot \frac{z - t}{y}\\
\end{array}double f(double x, double y, double z, double t) {
double r23964831 = x;
double r23964832 = y;
double r23964833 = r23964831 / r23964832;
double r23964834 = z;
double r23964835 = t;
double r23964836 = r23964834 - r23964835;
double r23964837 = r23964833 * r23964836;
double r23964838 = r23964837 + r23964835;
return r23964838;
}
double f(double x, double y, double z, double t) {
double r23964839 = x;
double r23964840 = y;
double r23964841 = r23964839 / r23964840;
double r23964842 = -1.141100597297648e+145;
bool r23964843 = r23964841 <= r23964842;
double r23964844 = t;
double r23964845 = z;
double r23964846 = r23964845 - r23964844;
double r23964847 = r23964846 / r23964840;
double r23964848 = r23964839 * r23964847;
double r23964849 = r23964844 + r23964848;
double r23964850 = 1.3516142257255634e+171;
bool r23964851 = r23964841 <= r23964850;
double r23964852 = cbrt(r23964841);
double r23964853 = r23964852 * r23964852;
double r23964854 = r23964852 * r23964844;
double r23964855 = -r23964854;
double r23964856 = r23964853 * r23964855;
double r23964857 = r23964844 + r23964856;
double r23964858 = r23964841 * r23964845;
double r23964859 = r23964857 + r23964858;
double r23964860 = r23964851 ? r23964859 : r23964849;
double r23964861 = r23964843 ? r23964849 : r23964860;
return r23964861;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 2.1 |
|---|---|
| Target | 2.3 |
| Herbie | 1.1 |
if (/ x y) < -1.141100597297648e+145 or 1.3516142257255634e+171 < (/ x y) Initial program 13.1
rmApplied div-inv13.2
Applied associate-*l*2.1
Simplified2.0
if -1.141100597297648e+145 < (/ x y) < 1.3516142257255634e+171Initial program 0.9
rmApplied sub-neg0.9
Applied distribute-lft-in0.9
Applied associate-+l+0.9
rmApplied add-cube-cbrt1.0
Applied associate-*l*1.0
Final simplification1.1
herbie shell --seed 2019179
(FPCore (x y z t)
:name "Numeric.Signal.Multichannel:$cget from hsignal-0.2.7.1"
:herbie-target
(if (< z 2.759456554562692e-282) (+ (* (/ x y) (- z t)) t) (if (< z 2.326994450874436e-110) (+ (* x (/ (- z t) y)) t) (+ (* (/ x y) (- z t)) t)))
(+ (* (/ x y) (- z t)) t))