\frac{x}{y} \cdot \left(z - t\right) + t\begin{array}{l}
\mathbf{if}\;x \le -65880637746913342896120675670310776733700:\\
\;\;\;\;\frac{\sqrt[3]{x} \cdot \sqrt[3]{x}}{1} \cdot \left(\frac{\sqrt[3]{x}}{y} \cdot \left(z - t\right)\right) + t\\
\mathbf{elif}\;x \le -2.599483881294392560239504629277942316765 \cdot 10^{-235}:\\
\;\;\;\;\left(\frac{x \cdot z}{y} - \frac{t \cdot x}{y}\right) + t\\
\mathbf{else}:\\
\;\;\;\;\frac{x}{y} \cdot \left(z - t\right) + t\\
\end{array}double f(double x, double y, double z, double t) {
double r487159 = x;
double r487160 = y;
double r487161 = r487159 / r487160;
double r487162 = z;
double r487163 = t;
double r487164 = r487162 - r487163;
double r487165 = r487161 * r487164;
double r487166 = r487165 + r487163;
return r487166;
}
double f(double x, double y, double z, double t) {
double r487167 = x;
double r487168 = -6.588063774691334e+40;
bool r487169 = r487167 <= r487168;
double r487170 = cbrt(r487167);
double r487171 = r487170 * r487170;
double r487172 = 1.0;
double r487173 = r487171 / r487172;
double r487174 = y;
double r487175 = r487170 / r487174;
double r487176 = z;
double r487177 = t;
double r487178 = r487176 - r487177;
double r487179 = r487175 * r487178;
double r487180 = r487173 * r487179;
double r487181 = r487180 + r487177;
double r487182 = -2.5994838812943926e-235;
bool r487183 = r487167 <= r487182;
double r487184 = r487167 * r487176;
double r487185 = r487184 / r487174;
double r487186 = r487177 * r487167;
double r487187 = r487186 / r487174;
double r487188 = r487185 - r487187;
double r487189 = r487188 + r487177;
double r487190 = r487167 / r487174;
double r487191 = r487190 * r487178;
double r487192 = r487191 + r487177;
double r487193 = r487183 ? r487189 : r487192;
double r487194 = r487169 ? r487181 : r487193;
return r487194;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 2.3 |
|---|---|
| Target | 2.3 |
| Herbie | 1.8 |
if x < -6.588063774691334e+40Initial program 4.9
rmApplied *-un-lft-identity4.9
Applied add-cube-cbrt5.6
Applied times-frac5.6
Applied associate-*l*2.2
if -6.588063774691334e+40 < x < -2.5994838812943926e-235Initial program 0.9
rmApplied add-cube-cbrt1.3
Applied associate-*r*1.3
Taylor expanded around 0 0.9
if -2.5994838812943926e-235 < x Initial program 2.2
Final simplification1.8
herbie shell --seed 2019356
(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))