x + \frac{\left(y - x\right) \cdot \left(z - t\right)}{a - t}\begin{array}{l}
\mathbf{if}\;a \le \frac{-3896972974696937}{1.645504557321206042154969182557350504983 \cdot 10^{63}} \lor \neg \left(a \le \frac{7215309785800599}{2.644223875160994395807661232131084159314 \cdot 10^{123}}\right):\\
\;\;\;\;x + \frac{1}{\frac{\frac{a - t}{z - t}}{y - x}}\\
\mathbf{else}:\\
\;\;\;\;\left(y + \frac{x \cdot z}{t}\right) - \frac{z \cdot y}{t}\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r369233 = x;
double r369234 = y;
double r369235 = r369234 - r369233;
double r369236 = z;
double r369237 = t;
double r369238 = r369236 - r369237;
double r369239 = r369235 * r369238;
double r369240 = a;
double r369241 = r369240 - r369237;
double r369242 = r369239 / r369241;
double r369243 = r369233 + r369242;
return r369243;
}
double f(double x, double y, double z, double t, double a) {
double r369244 = a;
double r369245 = -3896972974696937.0;
double r369246 = 1.645504557321206e+63;
double r369247 = r369245 / r369246;
bool r369248 = r369244 <= r369247;
double r369249 = 7215309785800599.0;
double r369250 = 2.6442238751609944e+123;
double r369251 = r369249 / r369250;
bool r369252 = r369244 <= r369251;
double r369253 = !r369252;
bool r369254 = r369248 || r369253;
double r369255 = x;
double r369256 = 1.0;
double r369257 = t;
double r369258 = r369244 - r369257;
double r369259 = z;
double r369260 = r369259 - r369257;
double r369261 = r369258 / r369260;
double r369262 = y;
double r369263 = r369262 - r369255;
double r369264 = r369261 / r369263;
double r369265 = r369256 / r369264;
double r369266 = r369255 + r369265;
double r369267 = r369255 * r369259;
double r369268 = r369267 / r369257;
double r369269 = r369262 + r369268;
double r369270 = r369259 * r369262;
double r369271 = r369270 / r369257;
double r369272 = r369269 - r369271;
double r369273 = r369254 ? r369266 : r369272;
return r369273;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 24.4 |
|---|---|
| Target | 9.3 |
| Herbie | 11.5 |
if a < -2.3682541366163105e-48Initial program 22.4
rmApplied *-un-lft-identity22.4
Applied times-frac7.7
Simplified7.7
rmApplied div-inv7.7
if -2.3682541366163105e-48 < a < 2.7287060878539615e-108Initial program 28.4
Taylor expanded around inf 18.2
if 2.7287060878539615e-108 < a Initial program 22.5
rmApplied associate-/l*8.5
rmApplied clear-num8.6
Final simplification11.5
herbie shell --seed 2019304
(FPCore (x y z t a)
:name "Graphics.Rendering.Chart.Axis.Types:linMap from Chart-1.5.3"
:precision binary64
:herbie-target
(if (< a -1.6153062845442575e-142) (+ x (* (/ (- y x) 1) (/ (- z t) (- a t)))) (if (< a 3.7744031700831742e-182) (- y (* (/ z t) (- y x))) (+ x (* (/ (- y x) 1) (/ (- z t) (- a t))))))
(+ x (/ (* (- y x) (- z t)) (- a t))))