x + \left(y - x\right) \cdot \frac{z}{t}\begin{array}{l}
\mathbf{if}\;t \le -33659643301491531166215560935505920 \lor \neg \left(t \le 1.625406329571911990929648461559105916592 \cdot 10^{-217}\right):\\
\;\;\;\;x + \frac{y - x}{\sqrt[3]{t} \cdot \sqrt[3]{t}} \cdot \frac{z}{\sqrt[3]{t}}\\
\mathbf{else}:\\
\;\;\;\;x + \left(\left(y - x\right) \cdot z\right) \cdot \frac{1}{t}\\
\end{array}double f(double x, double y, double z, double t) {
double r540291 = x;
double r540292 = y;
double r540293 = r540292 - r540291;
double r540294 = z;
double r540295 = t;
double r540296 = r540294 / r540295;
double r540297 = r540293 * r540296;
double r540298 = r540291 + r540297;
return r540298;
}
double f(double x, double y, double z, double t) {
double r540299 = t;
double r540300 = -3.365964330149153e+34;
bool r540301 = r540299 <= r540300;
double r540302 = 1.625406329571912e-217;
bool r540303 = r540299 <= r540302;
double r540304 = !r540303;
bool r540305 = r540301 || r540304;
double r540306 = x;
double r540307 = y;
double r540308 = r540307 - r540306;
double r540309 = cbrt(r540299);
double r540310 = r540309 * r540309;
double r540311 = r540308 / r540310;
double r540312 = z;
double r540313 = r540312 / r540309;
double r540314 = r540311 * r540313;
double r540315 = r540306 + r540314;
double r540316 = r540308 * r540312;
double r540317 = 1.0;
double r540318 = r540317 / r540299;
double r540319 = r540316 * r540318;
double r540320 = r540306 + r540319;
double r540321 = r540305 ? r540315 : r540320;
return r540321;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 2.0 |
|---|---|
| Target | 2.1 |
| Herbie | 2.5 |
if t < -3.365964330149153e+34 or 1.625406329571912e-217 < t Initial program 1.5
rmApplied add-cube-cbrt1.9
Applied *-un-lft-identity1.9
Applied times-frac1.9
Applied associate-*r*2.6
Simplified2.6
if -3.365964330149153e+34 < t < 1.625406329571912e-217Initial program 3.4
rmApplied div-inv3.5
Applied associate-*r*2.0
Final simplification2.5
herbie shell --seed 2020001
(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))))