\frac{x}{y} \cdot \left(z - t\right) + t\begin{array}{l}
\mathbf{if}\;x \le -4.723193511360802009043525679019870030067 \cdot 10^{-34} \lor \neg \left(x \le 3728411986898782208\right):\\
\;\;\;\;t + \frac{z - t}{y} \cdot x\\
\mathbf{else}:\\
\;\;\;\;\frac{1}{\sqrt[3]{y} \cdot \sqrt[3]{y}} \cdot \frac{z - t}{\frac{\sqrt[3]{y}}{x}} + t\\
\end{array}double f(double x, double y, double z, double t) {
double r282549 = x;
double r282550 = y;
double r282551 = r282549 / r282550;
double r282552 = z;
double r282553 = t;
double r282554 = r282552 - r282553;
double r282555 = r282551 * r282554;
double r282556 = r282555 + r282553;
return r282556;
}
double f(double x, double y, double z, double t) {
double r282557 = x;
double r282558 = -4.723193511360802e-34;
bool r282559 = r282557 <= r282558;
double r282560 = 3.728411986898782e+18;
bool r282561 = r282557 <= r282560;
double r282562 = !r282561;
bool r282563 = r282559 || r282562;
double r282564 = t;
double r282565 = z;
double r282566 = r282565 - r282564;
double r282567 = y;
double r282568 = r282566 / r282567;
double r282569 = r282568 * r282557;
double r282570 = r282564 + r282569;
double r282571 = 1.0;
double r282572 = cbrt(r282567);
double r282573 = r282572 * r282572;
double r282574 = r282571 / r282573;
double r282575 = r282572 / r282557;
double r282576 = r282566 / r282575;
double r282577 = r282574 * r282576;
double r282578 = r282577 + r282564;
double r282579 = r282563 ? r282570 : r282578;
return r282579;
}




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.4 |
if x < -4.723193511360802e-34 or 3.728411986898782e+18 < x Initial program 3.6
rmApplied *-un-lft-identity3.6
Applied associate-*l*3.6
Simplified2.1
rmApplied div-inv2.2
Simplified1.9
if -4.723193511360802e-34 < x < 3.728411986898782e+18Initial program 1.2
rmApplied add-cube-cbrt1.6
Applied *-un-lft-identity1.6
Applied times-frac1.6
Applied associate-*l*1.0
Simplified1.0
Final simplification1.4
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))