\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 -7.10938901979545519 \cdot 10^{300} \lor \neg \left(\left(y - z\right) \cdot \left(t - z\right) \le -2.4754507687590531 \cdot 10^{-14}\right):\\
\;\;\;\;\frac{\frac{x}{t - z}}{y - z}\\
\mathbf{else}:\\
\;\;\;\;\frac{x}{\left(y - z\right) \cdot \left(t - z\right)}\\
\end{array}double f(double x, double y, double z, double t) {
double r963834 = x;
double r963835 = y;
double r963836 = z;
double r963837 = r963835 - r963836;
double r963838 = t;
double r963839 = r963838 - r963836;
double r963840 = r963837 * r963839;
double r963841 = r963834 / r963840;
return r963841;
}
double f(double x, double y, double z, double t) {
double r963842 = y;
double r963843 = z;
double r963844 = r963842 - r963843;
double r963845 = t;
double r963846 = r963845 - r963843;
double r963847 = r963844 * r963846;
double r963848 = -7.109389019795455e+300;
bool r963849 = r963847 <= r963848;
double r963850 = -2.475450768759053e-14;
bool r963851 = r963847 <= r963850;
double r963852 = !r963851;
bool r963853 = r963849 || r963852;
double r963854 = x;
double r963855 = r963854 / r963846;
double r963856 = r963855 / r963844;
double r963857 = r963854 / r963847;
double r963858 = r963853 ? r963856 : r963857;
return r963858;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 7.7 |
|---|---|
| Target | 8.4 |
| Herbie | 1.5 |
if (* (- y z) (- t z)) < -7.109389019795455e+300 or -2.475450768759053e-14 < (* (- y z) (- t z)) Initial program 9.1
rmApplied *-un-lft-identity9.1
Applied times-frac1.9
rmApplied associate-*l/1.8
Simplified1.8
if -7.109389019795455e+300 < (* (- y z) (- t z)) < -2.475450768759053e-14Initial program 0.2
rmApplied *-un-lft-identity0.2
Applied times-frac5.5
rmApplied *-un-lft-identity5.5
Applied associate-*l*5.5
Simplified4.2
rmApplied div-inv4.3
Applied associate-/l*0.3
Simplified0.2
Final simplification1.5
herbie shell --seed 2020045 +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))))