x + \left(y - z\right) \cdot \frac{t - x}{a - z}\begin{array}{l}
\mathbf{if}\;a \le -2.365131563615253545247895724884153953108 \cdot 10^{-149}:\\
\;\;\;\;x + \left(\frac{y - z}{\sqrt[3]{a - z} \cdot \sqrt[3]{a - z}} \cdot \frac{\sqrt[3]{t - x} \cdot \sqrt[3]{t - x}}{\sqrt[3]{1}}\right) \cdot \frac{\sqrt[3]{t - x}}{\sqrt[3]{a - z}}\\
\mathbf{elif}\;a \le 6.43586856095357665155011548681959269503 \cdot 10^{-167}:\\
\;\;\;\;\mathsf{fma}\left(y, \frac{x}{z} - \frac{t}{z}, t\right)\\
\mathbf{else}:\\
\;\;\;\;x + \frac{y - z}{\sqrt[3]{a - z} \cdot \sqrt[3]{a - z}} \cdot \frac{t - x}{\sqrt[3]{a - z}}\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r158682 = x;
double r158683 = y;
double r158684 = z;
double r158685 = r158683 - r158684;
double r158686 = t;
double r158687 = r158686 - r158682;
double r158688 = a;
double r158689 = r158688 - r158684;
double r158690 = r158687 / r158689;
double r158691 = r158685 * r158690;
double r158692 = r158682 + r158691;
return r158692;
}
double f(double x, double y, double z, double t, double a) {
double r158693 = a;
double r158694 = -2.3651315636152535e-149;
bool r158695 = r158693 <= r158694;
double r158696 = x;
double r158697 = y;
double r158698 = z;
double r158699 = r158697 - r158698;
double r158700 = r158693 - r158698;
double r158701 = cbrt(r158700);
double r158702 = r158701 * r158701;
double r158703 = r158699 / r158702;
double r158704 = t;
double r158705 = r158704 - r158696;
double r158706 = cbrt(r158705);
double r158707 = r158706 * r158706;
double r158708 = 1.0;
double r158709 = cbrt(r158708);
double r158710 = r158707 / r158709;
double r158711 = r158703 * r158710;
double r158712 = r158706 / r158701;
double r158713 = r158711 * r158712;
double r158714 = r158696 + r158713;
double r158715 = 6.435868560953577e-167;
bool r158716 = r158693 <= r158715;
double r158717 = r158696 / r158698;
double r158718 = r158704 / r158698;
double r158719 = r158717 - r158718;
double r158720 = fma(r158697, r158719, r158704);
double r158721 = r158705 / r158701;
double r158722 = r158703 * r158721;
double r158723 = r158696 + r158722;
double r158724 = r158716 ? r158720 : r158723;
double r158725 = r158695 ? r158714 : r158724;
return r158725;
}



Bits error versus x



Bits error versus y



Bits error versus z



Bits error versus t



Bits error versus a
if a < -2.3651315636152535e-149Initial program 11.3
rmApplied add-cube-cbrt11.8
Applied *-un-lft-identity11.8
Applied times-frac11.8
Applied associate-*r*9.7
Simplified9.7
rmApplied *-un-lft-identity9.7
Applied cbrt-prod9.7
Applied add-cube-cbrt9.9
Applied times-frac9.9
Applied associate-*r*9.4
if -2.3651315636152535e-149 < a < 6.435868560953577e-167Initial program 26.0
Simplified26.0
Taylor expanded around inf 14.4
Simplified11.2
if 6.435868560953577e-167 < a Initial program 11.9
rmApplied add-cube-cbrt12.4
Applied *-un-lft-identity12.4
Applied times-frac12.4
Applied associate-*r*10.2
Simplified10.2
Final simplification10.1
herbie shell --seed 2019352 +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)))))