x + \left(y - z\right) \cdot \frac{t - x}{a - z}\begin{array}{l}
\mathbf{if}\;z \le -6.3409255795068648 \cdot 10^{216}:\\
\;\;\;\;\mathsf{fma}\left(\frac{x}{z}, y, t - \frac{t \cdot y}{z}\right)\\
\mathbf{elif}\;z \le 8.482328112026546 \cdot 10^{-274}:\\
\;\;\;\;\frac{y}{\frac{a - z}{t - x}} - \left(\frac{z}{\frac{a - z}{t - x}} - x\right)\\
\mathbf{elif}\;z \le 1.0048489443141935 \cdot 10^{163}:\\
\;\;\;\;\frac{y - z}{a - z} \cdot \left(t - x\right) + x\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(\frac{x}{z}, y, t - \frac{t \cdot y}{z}\right)\\
\end{array}double code(double x, double y, double z, double t, double a) {
return ((double) (x + ((double) (((double) (y - z)) * ((double) (((double) (t - x)) / ((double) (a - z))))))));
}
double code(double x, double y, double z, double t, double a) {
double VAR;
if ((z <= -6.340925579506865e+216)) {
VAR = ((double) fma(((double) (x / z)), y, ((double) (t - ((double) (((double) (t * y)) / z))))));
} else {
double VAR_1;
if ((z <= 8.482328112026546e-274)) {
VAR_1 = ((double) (((double) (y / ((double) (((double) (a - z)) / ((double) (t - x)))))) - ((double) (((double) (z / ((double) (((double) (a - z)) / ((double) (t - x)))))) - x))));
} else {
double VAR_2;
if ((z <= 1.0048489443141935e+163)) {
VAR_2 = ((double) (((double) (((double) (((double) (y - z)) / ((double) (a - z)))) * ((double) (t - x)))) + x));
} else {
VAR_2 = ((double) fma(((double) (x / z)), y, ((double) (t - ((double) (((double) (t * y)) / z))))));
}
VAR_1 = VAR_2;
}
VAR = VAR_1;
}
return VAR;
}



Bits error versus x



Bits error versus y



Bits error versus z



Bits error versus t



Bits error versus a
Results
if z < -6.340925579506865e+216 or 1.0048489443141935e+163 < z Initial program 29.2
Simplified29.1
rmApplied div-inv29.2
Taylor expanded around inf 24.4
Simplified22.2
if -6.340925579506865e+216 < z < 8.482328112026546e-274Initial program 11.2
Simplified11.2
rmApplied *-un-lft-identity11.2
Applied add-cube-cbrt11.8
Applied times-frac11.8
Simplified11.8
rmApplied fma-udef11.8
Simplified11.0
rmApplied div-sub11.0
Applied associate-+l-9.1
if 8.482328112026546e-274 < z < 1.0048489443141935e+163Initial program 9.9
Simplified9.8
rmApplied *-un-lft-identity9.8
Applied add-cube-cbrt10.4
Applied times-frac10.4
Simplified10.4
rmApplied fma-udef10.4
Simplified9.7
rmApplied associate-/r/7.2
Final simplification11.4
herbie shell --seed 2020121 +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)))))