x + \left(y - z\right) \cdot \frac{t - x}{a - z}\begin{array}{l}
\mathbf{if}\;x + \left(y - z\right) \cdot \frac{t - x}{a - z} \le -3.7545844755986678 \cdot 10^{-296} \lor \neg \left(x + \left(y - z\right) \cdot \frac{t - x}{a - z} \le 0.0\right):\\
\;\;\;\;x + \left(\left(y - z\right) \cdot \frac{\sqrt[3]{t - x} \cdot \sqrt[3]{t - x}}{\sqrt[3]{a - z} \cdot \sqrt[3]{a - z}}\right) \cdot \frac{\sqrt[3]{\sqrt[3]{t - x} \cdot \sqrt[3]{t - x}} \cdot \sqrt[3]{\sqrt[3]{t - x}}}{\sqrt[3]{a - z}}\\
\mathbf{else}:\\
\;\;\;\;t + y \cdot \left(\frac{x}{z} - \frac{t}{z}\right)\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r107036 = x;
double r107037 = y;
double r107038 = z;
double r107039 = r107037 - r107038;
double r107040 = t;
double r107041 = r107040 - r107036;
double r107042 = a;
double r107043 = r107042 - r107038;
double r107044 = r107041 / r107043;
double r107045 = r107039 * r107044;
double r107046 = r107036 + r107045;
return r107046;
}
double f(double x, double y, double z, double t, double a) {
double r107047 = x;
double r107048 = y;
double r107049 = z;
double r107050 = r107048 - r107049;
double r107051 = t;
double r107052 = r107051 - r107047;
double r107053 = a;
double r107054 = r107053 - r107049;
double r107055 = r107052 / r107054;
double r107056 = r107050 * r107055;
double r107057 = r107047 + r107056;
double r107058 = -3.754584475598668e-296;
bool r107059 = r107057 <= r107058;
double r107060 = 0.0;
bool r107061 = r107057 <= r107060;
double r107062 = !r107061;
bool r107063 = r107059 || r107062;
double r107064 = cbrt(r107052);
double r107065 = r107064 * r107064;
double r107066 = cbrt(r107054);
double r107067 = r107066 * r107066;
double r107068 = r107065 / r107067;
double r107069 = r107050 * r107068;
double r107070 = cbrt(r107065);
double r107071 = cbrt(r107064);
double r107072 = r107070 * r107071;
double r107073 = r107072 / r107066;
double r107074 = r107069 * r107073;
double r107075 = r107047 + r107074;
double r107076 = r107047 / r107049;
double r107077 = r107051 / r107049;
double r107078 = r107076 - r107077;
double r107079 = r107048 * r107078;
double r107080 = r107051 + r107079;
double r107081 = r107063 ? r107075 : r107080;
return r107081;
}



Bits error versus x



Bits error versus y



Bits error versus z



Bits error versus t



Bits error versus a
Results
if (+ x (* (- y z) (/ (- t x) (- a z)))) < -3.754584475598668e-296 or 0.0 < (+ x (* (- y z) (/ (- t x) (- a z)))) Initial program 7.5
rmApplied add-cube-cbrt8.2
Applied add-cube-cbrt8.4
Applied times-frac8.4
Applied associate-*r*4.6
rmApplied add-cube-cbrt4.6
Applied cbrt-prod4.6
if -3.754584475598668e-296 < (+ x (* (- y z) (/ (- t x) (- a z)))) < 0.0Initial program 61.1
rmApplied add-cube-cbrt60.7
Applied add-cube-cbrt60.6
Applied times-frac60.6
Applied associate-*r*59.9
rmApplied add-cube-cbrt59.9
Applied cbrt-prod59.9
rmApplied add-cube-cbrt60.0
Applied associate-*r*60.0
Taylor expanded around inf 25.3
Simplified20.2
Final simplification6.8
herbie shell --seed 2020060
(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)))))