x + \left(y - x\right) \cdot \frac{z}{t}\begin{array}{l}
\mathbf{if}\;x \le -2.83245230970383374 \cdot 10^{-70}:\\
\;\;\;\;x + \left(y - x\right) \cdot \frac{z}{t}\\
\mathbf{elif}\;x \le -2.07809484407539427 \cdot 10^{-240}:\\
\;\;\;\;x + \left(\frac{z \cdot y}{t} - \frac{x \cdot z}{t}\right)\\
\mathbf{else}:\\
\;\;\;\;x + \frac{y - x}{\sqrt[3]{t} \cdot \sqrt[3]{t}} \cdot \frac{z}{\sqrt[3]{t}}\\
\end{array}double f(double x, double y, double z, double t) {
double r900160 = x;
double r900161 = y;
double r900162 = r900161 - r900160;
double r900163 = z;
double r900164 = t;
double r900165 = r900163 / r900164;
double r900166 = r900162 * r900165;
double r900167 = r900160 + r900166;
return r900167;
}
double f(double x, double y, double z, double t) {
double r900168 = x;
double r900169 = -2.8324523097038337e-70;
bool r900170 = r900168 <= r900169;
double r900171 = y;
double r900172 = r900171 - r900168;
double r900173 = z;
double r900174 = t;
double r900175 = r900173 / r900174;
double r900176 = r900172 * r900175;
double r900177 = r900168 + r900176;
double r900178 = -2.0780948440753943e-240;
bool r900179 = r900168 <= r900178;
double r900180 = r900173 * r900171;
double r900181 = r900180 / r900174;
double r900182 = r900168 * r900173;
double r900183 = r900182 / r900174;
double r900184 = r900181 - r900183;
double r900185 = r900168 + r900184;
double r900186 = cbrt(r900174);
double r900187 = r900186 * r900186;
double r900188 = r900172 / r900187;
double r900189 = r900173 / r900186;
double r900190 = r900188 * r900189;
double r900191 = r900168 + r900190;
double r900192 = r900179 ? r900185 : r900191;
double r900193 = r900170 ? r900177 : r900192;
return r900193;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 2.2 |
|---|---|
| Target | 2.4 |
| Herbie | 3.3 |
if x < -2.8324523097038337e-70Initial program 0.4
if -2.8324523097038337e-70 < x < -2.0780948440753943e-240Initial program 4.4
rmApplied add-cube-cbrt5.0
Applied *-un-lft-identity5.0
Applied times-frac5.0
Applied associate-*r*3.4
Simplified3.4
Taylor expanded around 0 3.5
if -2.0780948440753943e-240 < x Initial program 2.4
rmApplied add-cube-cbrt3.0
Applied *-un-lft-identity3.0
Applied times-frac3.0
Applied associate-*r*4.7
Simplified4.7
Final simplification3.3
herbie shell --seed 2020047
(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))))