x + \left(y - z\right) \cdot \frac{t - x}{a - z}\begin{array}{l}
\mathbf{if}\;a \le -2.145869478761536680500210929593317634387 \cdot 10^{-21}:\\
\;\;\;\;\mathsf{fma}\left(\frac{1}{\frac{a - z}{t - x}}, y - z, x\right)\\
\mathbf{elif}\;a \le 9.245984676792925009764001853570344430799 \cdot 10^{-181}:\\
\;\;\;\;\mathsf{fma}\left(\frac{x}{z}, y, t - \frac{y \cdot t}{z}\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{t - x}{\frac{a - z}{y - z}} + x\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r119589 = x;
double r119590 = y;
double r119591 = z;
double r119592 = r119590 - r119591;
double r119593 = t;
double r119594 = r119593 - r119589;
double r119595 = a;
double r119596 = r119595 - r119591;
double r119597 = r119594 / r119596;
double r119598 = r119592 * r119597;
double r119599 = r119589 + r119598;
return r119599;
}
double f(double x, double y, double z, double t, double a) {
double r119600 = a;
double r119601 = -2.1458694787615367e-21;
bool r119602 = r119600 <= r119601;
double r119603 = 1.0;
double r119604 = z;
double r119605 = r119600 - r119604;
double r119606 = t;
double r119607 = x;
double r119608 = r119606 - r119607;
double r119609 = r119605 / r119608;
double r119610 = r119603 / r119609;
double r119611 = y;
double r119612 = r119611 - r119604;
double r119613 = fma(r119610, r119612, r119607);
double r119614 = 9.245984676792925e-181;
bool r119615 = r119600 <= r119614;
double r119616 = r119607 / r119604;
double r119617 = r119611 * r119606;
double r119618 = r119617 / r119604;
double r119619 = r119606 - r119618;
double r119620 = fma(r119616, r119611, r119619);
double r119621 = r119605 / r119612;
double r119622 = r119608 / r119621;
double r119623 = r119622 + r119607;
double r119624 = r119615 ? r119620 : r119623;
double r119625 = r119602 ? r119613 : r119624;
return r119625;
}



Bits error versus x



Bits error versus y



Bits error versus z



Bits error versus t



Bits error versus a
if a < -2.1458694787615367e-21Initial program 8.6
Simplified8.6
rmApplied clear-num8.9
if -2.1458694787615367e-21 < a < 9.245984676792925e-181Initial program 23.0
Simplified23.0
rmApplied fma-udef23.0
rmApplied div-inv23.1
Applied associate-*l*18.8
Simplified18.7
Taylor expanded around inf 18.0
Simplified16.9
if 9.245984676792925e-181 < a Initial program 11.5
Simplified11.5
rmApplied fma-udef11.5
rmApplied div-inv11.6
Applied associate-*l*9.1
Simplified9.0
rmApplied clear-num9.2
rmApplied *-un-lft-identity9.2
Applied associate-*l*9.2
Simplified9.1
Final simplification11.4
herbie shell --seed 2019179 +o rules:numerics
(FPCore (x y z t a)
:name "Numeric.Signal:interpolate from hsignal-0.2.7.1"
(+ x (* (- y z) (/ (- t x) (- a z)))))