x + \left(y - z\right) \cdot \frac{t - x}{a - z}\begin{array}{l}
\mathbf{if}\;a \le -1.4801961206040853 \cdot 10^{-87} \lor \neg \left(a \le -1.46265163071345889 \cdot 10^{-196} \lor \neg \left(a \le 3.0921765523630852 \cdot 10^{-306} \lor \neg \left(a \le 2.3190386960694568 \cdot 10^{-9}\right)\right)\right):\\
\;\;\;\;\mathsf{fma}\left(\left(\sqrt[3]{y - z} \cdot \sqrt[3]{y - z}\right) \cdot \left(\sqrt[3]{y - z} \cdot \frac{\sqrt[3]{t - x} \cdot \sqrt[3]{t - x}}{\sqrt[3]{a - z} \cdot \sqrt[3]{a - z}}\right), \frac{\sqrt[3]{t - x}}{\sqrt[3]{a - z}}, 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 r130869 = x;
double r130870 = y;
double r130871 = z;
double r130872 = r130870 - r130871;
double r130873 = t;
double r130874 = r130873 - r130869;
double r130875 = a;
double r130876 = r130875 - r130871;
double r130877 = r130874 / r130876;
double r130878 = r130872 * r130877;
double r130879 = r130869 + r130878;
return r130879;
}
double f(double x, double y, double z, double t, double a) {
double r130880 = a;
double r130881 = -1.4801961206040853e-87;
bool r130882 = r130880 <= r130881;
double r130883 = -1.462651630713459e-196;
bool r130884 = r130880 <= r130883;
double r130885 = 3.092176552363085e-306;
bool r130886 = r130880 <= r130885;
double r130887 = 2.319038696069457e-09;
bool r130888 = r130880 <= r130887;
double r130889 = !r130888;
bool r130890 = r130886 || r130889;
double r130891 = !r130890;
bool r130892 = r130884 || r130891;
double r130893 = !r130892;
bool r130894 = r130882 || r130893;
double r130895 = y;
double r130896 = z;
double r130897 = r130895 - r130896;
double r130898 = cbrt(r130897);
double r130899 = r130898 * r130898;
double r130900 = t;
double r130901 = x;
double r130902 = r130900 - r130901;
double r130903 = cbrt(r130902);
double r130904 = r130903 * r130903;
double r130905 = r130880 - r130896;
double r130906 = cbrt(r130905);
double r130907 = r130906 * r130906;
double r130908 = r130904 / r130907;
double r130909 = r130898 * r130908;
double r130910 = r130899 * r130909;
double r130911 = r130903 / r130906;
double r130912 = fma(r130910, r130911, r130901);
double r130913 = r130901 / r130896;
double r130914 = r130900 / r130896;
double r130915 = r130913 - r130914;
double r130916 = fma(r130895, r130915, r130900);
double r130917 = r130894 ? r130912 : r130916;
return r130917;
}



Bits error versus x



Bits error versus y



Bits error versus z



Bits error versus t



Bits error versus a
if a < -1.4801961206040853e-87 or -1.462651630713459e-196 < a < 3.092176552363085e-306 or 2.319038696069457e-09 < a Initial program 11.1
Simplified11.0
rmApplied fma-udef11.1
rmApplied add-cube-cbrt11.5
Applied add-cube-cbrt11.7
Applied times-frac11.7
Applied associate-*r*9.4
rmApplied fma-def9.4
rmApplied add-cube-cbrt9.4
Applied associate-*l*9.4
if -1.4801961206040853e-87 < a < -1.462651630713459e-196 or 3.092176552363085e-306 < a < 2.319038696069457e-09Initial program 23.1
Simplified23.1
Taylor expanded around inf 21.9
Simplified18.8
Final simplification12.2
herbie shell --seed 2020024 +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)))))