\frac{x}{y} \cdot \left(z - t\right) + t\begin{array}{l}
\mathbf{if}\;x \le -4.091870269310474233912169562668515221046 \cdot 10^{-74}:\\
\;\;\;\;x \cdot \frac{z - t}{y} + t\\
\mathbf{else}:\\
\;\;\;\;t + \left(\frac{x}{y} \cdot \left(\left(-t\right) + t\right) + \frac{\sqrt[3]{x} \cdot \sqrt[3]{x}}{\sqrt[3]{y} \cdot \sqrt[3]{y}} \cdot \frac{z - t}{\frac{\sqrt[3]{y}}{\sqrt[3]{x}}}\right)\\
\end{array}double f(double x, double y, double z, double t) {
double r289137 = x;
double r289138 = y;
double r289139 = r289137 / r289138;
double r289140 = z;
double r289141 = t;
double r289142 = r289140 - r289141;
double r289143 = r289139 * r289142;
double r289144 = r289143 + r289141;
return r289144;
}
double f(double x, double y, double z, double t) {
double r289145 = x;
double r289146 = -4.091870269310474e-74;
bool r289147 = r289145 <= r289146;
double r289148 = z;
double r289149 = t;
double r289150 = r289148 - r289149;
double r289151 = y;
double r289152 = r289150 / r289151;
double r289153 = r289145 * r289152;
double r289154 = r289153 + r289149;
double r289155 = r289145 / r289151;
double r289156 = -r289149;
double r289157 = r289156 + r289149;
double r289158 = r289155 * r289157;
double r289159 = cbrt(r289145);
double r289160 = r289159 * r289159;
double r289161 = cbrt(r289151);
double r289162 = r289161 * r289161;
double r289163 = r289160 / r289162;
double r289164 = r289161 / r289159;
double r289165 = r289150 / r289164;
double r289166 = r289163 * r289165;
double r289167 = r289158 + r289166;
double r289168 = r289149 + r289167;
double r289169 = r289147 ? r289154 : r289168;
return r289169;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 1.9 |
|---|---|
| Target | 2.3 |
| Herbie | 1.7 |
if x < -4.091870269310474e-74Initial program 3.1
rmApplied div-inv3.1
Applied associate-*l*2.5
Simplified2.4
if -4.091870269310474e-74 < x Initial program 1.5
rmApplied add-cube-cbrt2.0
Applied add-cube-cbrt2.1
Applied times-frac2.1
Applied associate-*l*0.8
rmApplied add-cube-cbrt0.8
Applied add-sqr-sqrt31.7
Applied prod-diff31.7
Applied distribute-lft-in31.7
Applied distribute-lft-in31.7
Simplified1.5
Simplified1.5
rmApplied *-un-lft-identity1.5
Applied *-un-lft-identity1.5
Applied times-frac1.5
Applied associate-*l*1.5
Simplified1.5
rmApplied add-cube-cbrt2.0
Applied add-cube-cbrt2.1
Applied times-frac2.1
Applied *-un-lft-identity2.1
Applied times-frac1.5
Simplified1.4
Final simplification1.7
herbie shell --seed 2019325 +o rules:numerics
(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))