x + \frac{\left(y - x\right) \cdot \left(z - t\right)}{a - t}\begin{array}{l}
\mathbf{if}\;a \le -9.750789174983166 \cdot 10^{-119}:\\
\;\;\;\;x + \left(y - x\right) \cdot \frac{z - t}{a - t}\\
\mathbf{elif}\;a \le 6.1598368637294395 \cdot 10^{-208}:\\
\;\;\;\;\left(y + \frac{x \cdot z}{t}\right) - \frac{z \cdot y}{t}\\
\mathbf{else}:\\
\;\;\;\;x + \left(y - x\right) \cdot \frac{z - t}{a - t}\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r31636242 = x;
double r31636243 = y;
double r31636244 = r31636243 - r31636242;
double r31636245 = z;
double r31636246 = t;
double r31636247 = r31636245 - r31636246;
double r31636248 = r31636244 * r31636247;
double r31636249 = a;
double r31636250 = r31636249 - r31636246;
double r31636251 = r31636248 / r31636250;
double r31636252 = r31636242 + r31636251;
return r31636252;
}
double f(double x, double y, double z, double t, double a) {
double r31636253 = a;
double r31636254 = -9.750789174983166e-119;
bool r31636255 = r31636253 <= r31636254;
double r31636256 = x;
double r31636257 = y;
double r31636258 = r31636257 - r31636256;
double r31636259 = z;
double r31636260 = t;
double r31636261 = r31636259 - r31636260;
double r31636262 = r31636253 - r31636260;
double r31636263 = r31636261 / r31636262;
double r31636264 = r31636258 * r31636263;
double r31636265 = r31636256 + r31636264;
double r31636266 = 6.1598368637294395e-208;
bool r31636267 = r31636253 <= r31636266;
double r31636268 = r31636256 * r31636259;
double r31636269 = r31636268 / r31636260;
double r31636270 = r31636257 + r31636269;
double r31636271 = r31636259 * r31636257;
double r31636272 = r31636271 / r31636260;
double r31636273 = r31636270 - r31636272;
double r31636274 = r31636267 ? r31636273 : r31636265;
double r31636275 = r31636255 ? r31636265 : r31636274;
return r31636275;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 24.0 |
|---|---|
| Target | 9.5 |
| Herbie | 10.5 |
if a < -9.750789174983166e-119 or 6.1598368637294395e-208 < a Initial program 22.7
rmApplied *-un-lft-identity22.7
Applied times-frac10.0
Simplified10.0
if -9.750789174983166e-119 < a < 6.1598368637294395e-208Initial program 28.9
Taylor expanded around inf 12.3
Final simplification10.5
herbie shell --seed 2019163
(FPCore (x y z t a)
:name "Graphics.Rendering.Chart.Axis.Types:linMap from Chart-1.5.3"
:herbie-target
(if (< a -1.6153062845442575e-142) (+ x (* (/ (- y x) 1) (/ (- z t) (- a t)))) (if (< a 3.774403170083174e-182) (- y (* (/ z t) (- y x))) (+ x (* (/ (- y x) 1) (/ (- z t) (- a t))))))
(+ x (/ (* (- y x) (- z t)) (- a t))))