x + \frac{\left(y - x\right) \cdot \left(z - t\right)}{a - t}\begin{array}{l}
\mathbf{if}\;a \le -4.2852583466209365 \cdot 10^{-144} \lor \neg \left(a \le 2.0695378041879823 \cdot 10^{-147}\right):\\
\;\;\;\;x + \frac{y - x}{\frac{a - t}{z - t}}\\
\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 r748363 = x;
double r748364 = y;
double r748365 = r748364 - r748363;
double r748366 = z;
double r748367 = t;
double r748368 = r748366 - r748367;
double r748369 = r748365 * r748368;
double r748370 = a;
double r748371 = r748370 - r748367;
double r748372 = r748369 / r748371;
double r748373 = r748363 + r748372;
return r748373;
}
double f(double x, double y, double z, double t, double a) {
double r748374 = a;
double r748375 = -4.2852583466209365e-144;
bool r748376 = r748374 <= r748375;
double r748377 = 2.0695378041879823e-147;
bool r748378 = r748374 <= r748377;
double r748379 = !r748378;
bool r748380 = r748376 || r748379;
double r748381 = x;
double r748382 = y;
double r748383 = r748382 - r748381;
double r748384 = t;
double r748385 = r748374 - r748384;
double r748386 = z;
double r748387 = r748386 - r748384;
double r748388 = r748385 / r748387;
double r748389 = r748383 / r748388;
double r748390 = r748381 + r748389;
double r748391 = r748381 * r748386;
double r748392 = r748391 / r748384;
double r748393 = r748382 + r748392;
double r748394 = r748386 * r748382;
double r748395 = r748394 / r748384;
double r748396 = r748393 - r748395;
double r748397 = r748380 ? r748390 : r748396;
return r748397;
}




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 | 9.3 |
| Herbie | 10.3 |
if a < -4.2852583466209365e-144 or 2.0695378041879823e-147 < a Initial program 22.4
rmApplied associate-/l*9.2
if -4.2852583466209365e-144 < a < 2.0695378041879823e-147Initial program 30.0
Taylor expanded around inf 14.1
Final simplification10.3
herbie shell --seed 2020045
(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.774403170083174e-182) (- y (* (/ z t) (- y x))) (+ x (* (/ (- y x) 1) (/ (- z t) (- a t))))))
(+ x (/ (* (- y x) (- z t)) (- a t))))