\frac{x}{y} \cdot \left(z - t\right) + t\begin{array}{l}
\mathbf{if}\;y \le -4329597223011.141:\\
\;\;\;\;\frac{x}{y} \cdot \left(z - t\right) + t\\
\mathbf{elif}\;y \le 2.08341651453868214 \cdot 10^{29}:\\
\;\;\;\;\left(\frac{1}{\frac{y}{x \cdot z}} - \frac{t \cdot x}{y}\right) + t\\
\mathbf{else}:\\
\;\;\;\;\frac{\sqrt[3]{x} \cdot \sqrt[3]{x}}{1} \cdot \left(\frac{\sqrt[3]{x}}{y} \cdot \left(z - t\right)\right) + t\\
\end{array}double f(double x, double y, double z, double t) {
double r382977 = x;
double r382978 = y;
double r382979 = r382977 / r382978;
double r382980 = z;
double r382981 = t;
double r382982 = r382980 - r382981;
double r382983 = r382979 * r382982;
double r382984 = r382983 + r382981;
return r382984;
}
double f(double x, double y, double z, double t) {
double r382985 = y;
double r382986 = -4329597223011.1406;
bool r382987 = r382985 <= r382986;
double r382988 = x;
double r382989 = r382988 / r382985;
double r382990 = z;
double r382991 = t;
double r382992 = r382990 - r382991;
double r382993 = r382989 * r382992;
double r382994 = r382993 + r382991;
double r382995 = 2.083416514538682e+29;
bool r382996 = r382985 <= r382995;
double r382997 = 1.0;
double r382998 = r382988 * r382990;
double r382999 = r382985 / r382998;
double r383000 = r382997 / r382999;
double r383001 = r382991 * r382988;
double r383002 = r383001 / r382985;
double r383003 = r383000 - r383002;
double r383004 = r383003 + r382991;
double r383005 = cbrt(r382988);
double r383006 = r383005 * r383005;
double r383007 = r383006 / r382997;
double r383008 = r383005 / r382985;
double r383009 = r383008 * r382992;
double r383010 = r383007 * r383009;
double r383011 = r383010 + r382991;
double r383012 = r382996 ? r383004 : r383011;
double r383013 = r382987 ? r382994 : r383012;
return r383013;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 2.2 |
|---|---|
| Target | 2.3 |
| Herbie | 1.3 |
if y < -4329597223011.1406Initial program 1.2
if -4329597223011.1406 < y < 2.083416514538682e+29Initial program 3.6
rmApplied add-cube-cbrt4.3
Applied associate-*l*4.3
Taylor expanded around 0 1.5
rmApplied clear-num1.6
if 2.083416514538682e+29 < y Initial program 1.1
rmApplied *-un-lft-identity1.1
Applied add-cube-cbrt1.5
Applied times-frac1.5
Applied associate-*l*1.0
Final simplification1.3
herbie shell --seed 2020021
(FPCore (x y z t)
:name "Numeric.Signal.Multichannel:$cget from hsignal-0.2.7.1"
:precision binary64
: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))