x + \frac{\left(y - z\right) \cdot \left(t - x\right)}{a - z}\begin{array}{l}
\mathbf{if}\;x + \frac{\left(y - z\right) \cdot \left(t - x\right)}{a - z} \le -4.82516022252417878 \cdot 10^{-304}:\\
\;\;\;\;x + \left(\frac{\sqrt[3]{y - z}}{\sqrt[3]{\sqrt[3]{a - z} \cdot \sqrt[3]{a - z}}} \cdot \left(\sqrt[3]{y - z} \cdot \sqrt[3]{\frac{1}{\sqrt[3]{a - z} \cdot \sqrt[3]{a - z}}}\right)\right) \cdot \left(\sqrt[3]{\frac{y - z}{\sqrt[3]{a - z} \cdot \sqrt[3]{a - z}}} \cdot \frac{t - x}{\sqrt[3]{a - z}}\right)\\
\mathbf{elif}\;x + \frac{\left(y - z\right) \cdot \left(t - x\right)}{a - z} \le 0.0:\\
\;\;\;\;\left(\frac{x \cdot y}{z} + t\right) - \frac{t \cdot y}{z}\\
\mathbf{else}:\\
\;\;\;\;x + \left(\left(\sqrt[3]{y - z} \cdot \sqrt[3]{\frac{1}{\sqrt[3]{a - z} \cdot \sqrt[3]{a - z}}}\right) \cdot \left(\sqrt[3]{y - z} \cdot \sqrt[3]{\frac{1}{\sqrt[3]{a - z} \cdot \sqrt[3]{a - z}}}\right)\right) \cdot \left(\sqrt[3]{\frac{y - z}{\sqrt[3]{a - z} \cdot \sqrt[3]{a - z}}} \cdot \frac{t - x}{\sqrt[3]{a - z}}\right)\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r598267 = x;
double r598268 = y;
double r598269 = z;
double r598270 = r598268 - r598269;
double r598271 = t;
double r598272 = r598271 - r598267;
double r598273 = r598270 * r598272;
double r598274 = a;
double r598275 = r598274 - r598269;
double r598276 = r598273 / r598275;
double r598277 = r598267 + r598276;
return r598277;
}
double f(double x, double y, double z, double t, double a) {
double r598278 = x;
double r598279 = y;
double r598280 = z;
double r598281 = r598279 - r598280;
double r598282 = t;
double r598283 = r598282 - r598278;
double r598284 = r598281 * r598283;
double r598285 = a;
double r598286 = r598285 - r598280;
double r598287 = r598284 / r598286;
double r598288 = r598278 + r598287;
double r598289 = -4.825160222524179e-304;
bool r598290 = r598288 <= r598289;
double r598291 = cbrt(r598281);
double r598292 = cbrt(r598286);
double r598293 = r598292 * r598292;
double r598294 = cbrt(r598293);
double r598295 = r598291 / r598294;
double r598296 = 1.0;
double r598297 = r598296 / r598293;
double r598298 = cbrt(r598297);
double r598299 = r598291 * r598298;
double r598300 = r598295 * r598299;
double r598301 = r598281 / r598293;
double r598302 = cbrt(r598301);
double r598303 = r598283 / r598292;
double r598304 = r598302 * r598303;
double r598305 = r598300 * r598304;
double r598306 = r598278 + r598305;
double r598307 = 0.0;
bool r598308 = r598288 <= r598307;
double r598309 = r598278 * r598279;
double r598310 = r598309 / r598280;
double r598311 = r598310 + r598282;
double r598312 = r598282 * r598279;
double r598313 = r598312 / r598280;
double r598314 = r598311 - r598313;
double r598315 = r598299 * r598299;
double r598316 = r598315 * r598304;
double r598317 = r598278 + r598316;
double r598318 = r598308 ? r598314 : r598317;
double r598319 = r598290 ? r598306 : r598318;
return r598319;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 24.2 |
|---|---|
| Target | 11.7 |
| Herbie | 9.7 |
if (+ x (/ (* (- y z) (- t x)) (- a z))) < -4.825160222524179e-304Initial program 21.1
rmApplied add-cube-cbrt21.6
Applied times-frac8.7
rmApplied add-cube-cbrt8.9
Applied associate-*l*8.9
rmApplied div-inv8.9
Applied cbrt-prod8.9
rmApplied cbrt-div8.8
if -4.825160222524179e-304 < (+ x (/ (* (- y z) (- t x)) (- a z))) < 0.0Initial program 60.8
Taylor expanded around inf 19.3
if 0.0 < (+ x (/ (* (- y z) (- t x)) (- a z))) Initial program 20.7
rmApplied add-cube-cbrt21.2
Applied times-frac8.6
rmApplied add-cube-cbrt8.8
Applied associate-*l*8.8
rmApplied div-inv8.8
Applied cbrt-prod8.7
rmApplied div-inv8.7
Applied cbrt-prod8.8
Final simplification9.7
herbie shell --seed 2020045
(FPCore (x y z t a)
:name "Graphics.Rendering.Chart.Axis.Types:invLinMap from Chart-1.5.3"
:precision binary64
:herbie-target
(if (< z -1.2536131056095036e+188) (- t (* (/ y z) (- t x))) (if (< z 4.446702369113811e+64) (+ x (/ (- y z) (/ (- a z) (- t x)))) (- t (* (/ y z) (- t x)))))
(+ x (/ (* (- y z) (- t x)) (- a z))))