x + \left(y - x\right) \cdot \frac{z}{t}\begin{array}{l}
\mathbf{if}\;\frac{z}{t} \le \frac{-5241384180875533}{5192296858534827628530496329220096}:\\
\;\;\;\;x + \left(\sqrt[3]{\left(\left(\sqrt[3]{z} \cdot \sqrt[3]{z}\right) \cdot \left(y - x\right)\right) \cdot \frac{\sqrt[3]{z}}{t}} \cdot \sqrt[3]{\left(\left(\sqrt[3]{z} \cdot \sqrt[3]{z}\right) \cdot \left(y - x\right)\right) \cdot \frac{\sqrt[3]{z}}{t}}\right) \cdot \sqrt[3]{\left(\left(\sqrt[3]{z} \cdot \sqrt[3]{z}\right) \cdot \left(y - x\right)\right) \cdot \frac{\sqrt[3]{z}}{t}}\\
\mathbf{elif}\;\frac{z}{t} \le 0.0:\\
\;\;\;\;x + \left(\sqrt[3]{z} \cdot \sqrt[3]{z}\right) \cdot \left(\left(\sqrt[3]{y - x} \cdot \sqrt[3]{y - x}\right) \cdot \left(\frac{\sqrt[3]{y - x}}{\sqrt[3]{t} \cdot \sqrt[3]{t}} \cdot \frac{\sqrt[3]{z}}{\sqrt[3]{t}}\right)\right)\\
\mathbf{else}:\\
\;\;\;\;x + \left(y - x\right) \cdot \frac{z}{t}\\
\end{array}double f(double x, double y, double z, double t) {
double r431075 = x;
double r431076 = y;
double r431077 = r431076 - r431075;
double r431078 = z;
double r431079 = t;
double r431080 = r431078 / r431079;
double r431081 = r431077 * r431080;
double r431082 = r431075 + r431081;
return r431082;
}
double f(double x, double y, double z, double t) {
double r431083 = z;
double r431084 = t;
double r431085 = r431083 / r431084;
double r431086 = -5241384180875533.0;
double r431087 = 5.192296858534828e+33;
double r431088 = r431086 / r431087;
bool r431089 = r431085 <= r431088;
double r431090 = x;
double r431091 = cbrt(r431083);
double r431092 = r431091 * r431091;
double r431093 = y;
double r431094 = r431093 - r431090;
double r431095 = r431092 * r431094;
double r431096 = r431091 / r431084;
double r431097 = r431095 * r431096;
double r431098 = cbrt(r431097);
double r431099 = r431098 * r431098;
double r431100 = r431099 * r431098;
double r431101 = r431090 + r431100;
double r431102 = 0.0;
bool r431103 = r431085 <= r431102;
double r431104 = cbrt(r431094);
double r431105 = r431104 * r431104;
double r431106 = cbrt(r431084);
double r431107 = r431106 * r431106;
double r431108 = r431104 / r431107;
double r431109 = r431091 / r431106;
double r431110 = r431108 * r431109;
double r431111 = r431105 * r431110;
double r431112 = r431092 * r431111;
double r431113 = r431090 + r431112;
double r431114 = r431094 * r431085;
double r431115 = r431090 + r431114;
double r431116 = r431103 ? r431113 : r431115;
double r431117 = r431089 ? r431101 : r431116;
return r431117;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 1.9 |
|---|---|
| Target | 2.2 |
| Herbie | 2.7 |
if (/ z t) < -1.0094538743985753e-18Initial program 3.5
rmApplied *-un-lft-identity3.5
Applied add-cube-cbrt4.4
Applied times-frac4.4
Applied associate-*r*6.9
Simplified6.9
rmApplied add-cube-cbrt7.1
if -1.0094538743985753e-18 < (/ z t) < 0.0Initial program 0.9
rmApplied *-un-lft-identity0.9
Applied add-cube-cbrt1.1
Applied times-frac1.1
Applied associate-*r*3.4
Simplified3.4
rmApplied associate-*l*2.2
rmApplied add-cube-cbrt2.2
Applied associate-*l*2.2
rmApplied add-cube-cbrt2.2
Applied *-un-lft-identity2.2
Applied times-frac2.2
Applied associate-*r*2.2
Simplified2.2
if 0.0 < (/ z t) Initial program 2.0
Final simplification2.7
herbie shell --seed 2019303
(FPCore (x y z t)
:name "Graphics.Rendering.Plot.Render.Plot.Axis:tickPosition from plot-0.2.3.4"
:precision binary64
:herbie-target
(if (< (* (- y x) (/ z t)) -1013646692435.887) (+ x (/ (- y x) (/ t z))) (if (< (* (- y x) (/ z t)) -0.0) (+ x (/ (* (- y x) z) t)) (+ x (/ (- y x) (/ t z)))))
(+ x (* (- y x) (/ z t))))