x + \left(y - z\right) \cdot \frac{t - x}{a - z}\begin{array}{l}
\mathbf{if}\;a \le -7.51801560809933867 \cdot 10^{-132} \lor \neg \left(a \le 3.72023372207912083 \cdot 10^{-99}\right):\\
\;\;\;\;\mathsf{fma}\left(\frac{y - z}{a - z}, t - x, x\right)\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(y, \frac{x}{z} - \frac{t}{z}, t\right)\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r156455 = x;
double r156456 = y;
double r156457 = z;
double r156458 = r156456 - r156457;
double r156459 = t;
double r156460 = r156459 - r156455;
double r156461 = a;
double r156462 = r156461 - r156457;
double r156463 = r156460 / r156462;
double r156464 = r156458 * r156463;
double r156465 = r156455 + r156464;
return r156465;
}
double f(double x, double y, double z, double t, double a) {
double r156466 = a;
double r156467 = -7.518015608099339e-132;
bool r156468 = r156466 <= r156467;
double r156469 = 3.720233722079121e-99;
bool r156470 = r156466 <= r156469;
double r156471 = !r156470;
bool r156472 = r156468 || r156471;
double r156473 = y;
double r156474 = z;
double r156475 = r156473 - r156474;
double r156476 = r156466 - r156474;
double r156477 = r156475 / r156476;
double r156478 = t;
double r156479 = x;
double r156480 = r156478 - r156479;
double r156481 = fma(r156477, r156480, r156479);
double r156482 = r156479 / r156474;
double r156483 = r156478 / r156474;
double r156484 = r156482 - r156483;
double r156485 = fma(r156473, r156484, r156478);
double r156486 = r156472 ? r156481 : r156485;
return r156486;
}



Bits error versus x



Bits error versus y



Bits error versus z



Bits error versus t



Bits error versus a
if a < -7.518015608099339e-132 or 3.720233722079121e-99 < a Initial program 11.0
Simplified11.0
rmApplied clear-num11.2
rmApplied fma-udef11.3
Simplified11.1
rmApplied associate-/r/8.8
Applied fma-def8.8
if -7.518015608099339e-132 < a < 3.720233722079121e-99Initial program 24.6
Simplified24.6
Taylor expanded around inf 15.3
Simplified13.2
Final simplification10.1
herbie shell --seed 2020036 +o rules:numerics
(FPCore (x y z t a)
:name "Numeric.Signal:interpolate from hsignal-0.2.7.1"
:precision binary64
(+ x (* (- y z) (/ (- t x) (- a z)))))