x + \left(y - z\right) \cdot \frac{t - x}{a - z}\begin{array}{l}
\mathbf{if}\;z \le -5.803426678630030535334652634557233676058 \cdot 10^{240}:\\
\;\;\;\;\left(t + \frac{x \cdot y}{z}\right) - \frac{t}{z} \cdot y\\
\mathbf{elif}\;z \le -2.411587565692804897575894344515356329807 \cdot 10^{-52}:\\
\;\;\;\;x + \left(\left(t - x\right) \cdot \frac{1}{a - z}\right) \cdot \left(y - z\right)\\
\mathbf{elif}\;z \le 2.628588462703719811957819335846933965946 \cdot 10^{201}:\\
\;\;\;\;\frac{y - z}{\sqrt[3]{a - z} \cdot \sqrt[3]{a - z}} \cdot \frac{t - x}{\sqrt[3]{a - z}} + x\\
\mathbf{else}:\\
\;\;\;\;\left(t - \frac{t}{\frac{z}{y}}\right) + \frac{x}{z} \cdot y\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r105630 = x;
double r105631 = y;
double r105632 = z;
double r105633 = r105631 - r105632;
double r105634 = t;
double r105635 = r105634 - r105630;
double r105636 = a;
double r105637 = r105636 - r105632;
double r105638 = r105635 / r105637;
double r105639 = r105633 * r105638;
double r105640 = r105630 + r105639;
return r105640;
}
double f(double x, double y, double z, double t, double a) {
double r105641 = z;
double r105642 = -5.8034266786300305e+240;
bool r105643 = r105641 <= r105642;
double r105644 = t;
double r105645 = x;
double r105646 = y;
double r105647 = r105645 * r105646;
double r105648 = r105647 / r105641;
double r105649 = r105644 + r105648;
double r105650 = r105644 / r105641;
double r105651 = r105650 * r105646;
double r105652 = r105649 - r105651;
double r105653 = -2.411587565692805e-52;
bool r105654 = r105641 <= r105653;
double r105655 = r105644 - r105645;
double r105656 = 1.0;
double r105657 = a;
double r105658 = r105657 - r105641;
double r105659 = r105656 / r105658;
double r105660 = r105655 * r105659;
double r105661 = r105646 - r105641;
double r105662 = r105660 * r105661;
double r105663 = r105645 + r105662;
double r105664 = 2.62858846270372e+201;
bool r105665 = r105641 <= r105664;
double r105666 = cbrt(r105658);
double r105667 = r105666 * r105666;
double r105668 = r105661 / r105667;
double r105669 = r105655 / r105666;
double r105670 = r105668 * r105669;
double r105671 = r105670 + r105645;
double r105672 = r105641 / r105646;
double r105673 = r105644 / r105672;
double r105674 = r105644 - r105673;
double r105675 = r105645 / r105641;
double r105676 = r105675 * r105646;
double r105677 = r105674 + r105676;
double r105678 = r105665 ? r105671 : r105677;
double r105679 = r105654 ? r105663 : r105678;
double r105680 = r105643 ? r105652 : r105679;
return r105680;
}



Bits error versus x



Bits error versus y



Bits error versus z



Bits error versus t



Bits error versus a
Results
if z < -5.8034266786300305e+240Initial program 31.9
rmApplied add-cube-cbrt32.4
Applied add-cube-cbrt32.5
Applied times-frac32.5
Applied associate-*r*28.1
Simplified28.3
Taylor expanded around inf 23.5
Simplified19.8
if -5.8034266786300305e+240 < z < -2.411587565692805e-52Initial program 15.8
rmApplied div-inv15.9
if -2.411587565692805e-52 < z < 2.62858846270372e+201Initial program 9.3
rmApplied add-cube-cbrt9.8
Applied *-un-lft-identity9.8
Applied times-frac9.8
Applied associate-*r*7.4
Simplified7.4
if 2.62858846270372e+201 < z Initial program 32.0
rmApplied div-inv32.0
Taylor expanded around inf 22.9
Simplified14.6
Final simplification11.0
herbie shell --seed 2019194
(FPCore (x y z t a)
:name "Numeric.Signal:interpolate from hsignal-0.2.7.1"
(+ x (* (- y z) (/ (- t x) (- a z)))))