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 -1.1392530337654849 \cdot 10^{-282}:\\
\;\;\;\;\frac{y - z}{\sqrt[3]{a - z} \cdot \sqrt[3]{a - z}} \cdot \frac{t - x}{\sqrt[3]{a - z}} + x\\
\mathbf{elif}\;x + \frac{\left(y - z\right) \cdot \left(t - x\right)}{a - z} \le 1.0047143960441098 \cdot 10^{-265}:\\
\;\;\;\;\left(t + \frac{x \cdot y}{z}\right) - \frac{y \cdot t}{z}\\
\mathbf{else}:\\
\;\;\;\;\frac{y - z}{\sqrt[3]{a - z} \cdot \sqrt[3]{a - z}} \cdot \frac{t - x}{\sqrt[3]{a - z}} + x\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r29773252 = x;
double r29773253 = y;
double r29773254 = z;
double r29773255 = r29773253 - r29773254;
double r29773256 = t;
double r29773257 = r29773256 - r29773252;
double r29773258 = r29773255 * r29773257;
double r29773259 = a;
double r29773260 = r29773259 - r29773254;
double r29773261 = r29773258 / r29773260;
double r29773262 = r29773252 + r29773261;
return r29773262;
}
double f(double x, double y, double z, double t, double a) {
double r29773263 = x;
double r29773264 = y;
double r29773265 = z;
double r29773266 = r29773264 - r29773265;
double r29773267 = t;
double r29773268 = r29773267 - r29773263;
double r29773269 = r29773266 * r29773268;
double r29773270 = a;
double r29773271 = r29773270 - r29773265;
double r29773272 = r29773269 / r29773271;
double r29773273 = r29773263 + r29773272;
double r29773274 = -1.1392530337654849e-282;
bool r29773275 = r29773273 <= r29773274;
double r29773276 = cbrt(r29773271);
double r29773277 = r29773276 * r29773276;
double r29773278 = r29773266 / r29773277;
double r29773279 = r29773268 / r29773276;
double r29773280 = r29773278 * r29773279;
double r29773281 = r29773280 + r29773263;
double r29773282 = 1.0047143960441098e-265;
bool r29773283 = r29773273 <= r29773282;
double r29773284 = r29773263 * r29773264;
double r29773285 = r29773284 / r29773265;
double r29773286 = r29773267 + r29773285;
double r29773287 = r29773264 * r29773267;
double r29773288 = r29773287 / r29773265;
double r29773289 = r29773286 - r29773288;
double r29773290 = r29773283 ? r29773289 : r29773281;
double r29773291 = r29773275 ? r29773281 : r29773290;
return r29773291;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 23.2 |
|---|---|
| Target | 11.8 |
| Herbie | 9.2 |
if (+ x (/ (* (- y z) (- t x)) (- a z))) < -1.1392530337654849e-282 or 1.0047143960441098e-265 < (+ x (/ (* (- y z) (- t x)) (- a z))) Initial program 19.8
rmApplied add-cube-cbrt20.3
Applied times-frac8.0
if -1.1392530337654849e-282 < (+ x (/ (* (- y z) (- t x)) (- a z))) < 1.0047143960441098e-265Initial program 55.3
Taylor expanded around inf 20.4
Final simplification9.2
herbie shell --seed 2019158
(FPCore (x y z t a)
:name "Graphics.Rendering.Chart.Axis.Types:invLinMap from Chart-1.5.3"
: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))))