\frac{x}{\left(y - z\right) \cdot \left(t - z\right)}\begin{array}{l}
\mathbf{if}\;\left(y - z\right) \cdot \left(t - z\right) \le -4.026222793044682 \cdot 10^{168}:\\
\;\;\;\;\frac{\frac{x}{t - z}}{y - z}\\
\mathbf{elif}\;\left(y - z\right) \cdot \left(t - z\right) \le -3.16701534575747388 \cdot 10^{-22}:\\
\;\;\;\;{\left(x \cdot \frac{\frac{1}{y - z}}{t - z}\right)}^{1}\\
\mathbf{else}:\\
\;\;\;\;{\left(\frac{\frac{x}{y - z}}{t - z}\right)}^{1}\\
\end{array}double f(double x, double y, double z, double t) {
double r754818 = x;
double r754819 = y;
double r754820 = z;
double r754821 = r754819 - r754820;
double r754822 = t;
double r754823 = r754822 - r754820;
double r754824 = r754821 * r754823;
double r754825 = r754818 / r754824;
return r754825;
}
double f(double x, double y, double z, double t) {
double r754826 = y;
double r754827 = z;
double r754828 = r754826 - r754827;
double r754829 = t;
double r754830 = r754829 - r754827;
double r754831 = r754828 * r754830;
double r754832 = -4.026222793044682e+168;
bool r754833 = r754831 <= r754832;
double r754834 = x;
double r754835 = r754834 / r754830;
double r754836 = r754835 / r754828;
double r754837 = -3.167015345757474e-22;
bool r754838 = r754831 <= r754837;
double r754839 = 1.0;
double r754840 = r754839 / r754828;
double r754841 = r754840 / r754830;
double r754842 = r754834 * r754841;
double r754843 = pow(r754842, r754839);
double r754844 = r754834 / r754828;
double r754845 = r754844 / r754830;
double r754846 = pow(r754845, r754839);
double r754847 = r754838 ? r754843 : r754846;
double r754848 = r754833 ? r754836 : r754847;
return r754848;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 7.4 |
|---|---|
| Target | 8.3 |
| Herbie | 1.4 |
if (* (- y z) (- t z)) < -4.026222793044682e+168Initial program 11.3
rmApplied add-cube-cbrt11.6
Applied times-frac0.7
rmApplied associate-*l/0.9
Simplified0.4
if -4.026222793044682e+168 < (* (- y z) (- t z)) < -3.167015345757474e-22Initial program 0.2
rmApplied add-cube-cbrt1.2
Applied times-frac5.3
rmApplied pow15.3
Applied pow15.3
Applied pow-prod-down5.3
Simplified8.4
rmApplied *-un-lft-identity8.4
Applied div-inv8.5
Applied times-frac0.4
Simplified0.4
if -3.167015345757474e-22 < (* (- y z) (- t z)) Initial program 7.5
rmApplied add-cube-cbrt8.0
Applied times-frac1.6
rmApplied pow11.6
Applied pow11.6
Applied pow-prod-down1.6
Simplified1.7
Final simplification1.4
herbie shell --seed 2020039 +o rules:numerics
(FPCore (x y z t)
:name "Data.Random.Distribution.Triangular:triangularCDF from random-fu-0.2.6.2, B"
:precision binary64
:herbie-target
(if (< (/ x (* (- y z) (- t z))) 0.0) (/ (/ x (- y z)) (- t z)) (* x (/ 1 (* (- y z) (- t z)))))
(/ x (* (- y z) (- t z))))