\frac{x}{\left(y - z\right) \cdot \left(t - z\right)}\begin{array}{l}
\mathbf{if}\;\left(t - z\right) \cdot \left(y - z\right) = -\infty \lor \neg \left(\left(t - z\right) \cdot \left(y - z\right) \le 1.217220199270374023216280482755360574816 \cdot 10^{303}\right):\\
\;\;\;\;\frac{\frac{x}{t - z}}{y - z}\\
\mathbf{else}:\\
\;\;\;\;\frac{x}{\left(t - z\right) \cdot \left(y - z\right)}\\
\end{array}double f(double x, double y, double z, double t) {
double r475371 = x;
double r475372 = y;
double r475373 = z;
double r475374 = r475372 - r475373;
double r475375 = t;
double r475376 = r475375 - r475373;
double r475377 = r475374 * r475376;
double r475378 = r475371 / r475377;
return r475378;
}
double f(double x, double y, double z, double t) {
double r475379 = t;
double r475380 = z;
double r475381 = r475379 - r475380;
double r475382 = y;
double r475383 = r475382 - r475380;
double r475384 = r475381 * r475383;
double r475385 = -inf.0;
bool r475386 = r475384 <= r475385;
double r475387 = 1.217220199270374e+303;
bool r475388 = r475384 <= r475387;
double r475389 = !r475388;
bool r475390 = r475386 || r475389;
double r475391 = x;
double r475392 = r475391 / r475381;
double r475393 = r475392 / r475383;
double r475394 = r475391 / r475384;
double r475395 = r475390 ? r475393 : r475394;
return r475395;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 7.8 |
|---|---|
| Target | 8.7 |
| Herbie | 0.7 |
if (* (- y z) (- t z)) < -inf.0 or 1.217220199270374e+303 < (* (- y z) (- t z)) Initial program 17.3
rmApplied *-un-lft-identity17.3
Applied times-frac0.1
rmApplied associate-*l/0.1
Simplified0.1
if -inf.0 < (* (- y z) (- t z)) < 1.217220199270374e+303Initial program 1.2
Final simplification0.7
herbie shell --seed 2019174 +o rules:numerics
(FPCore (x y z t)
:name "Data.Random.Distribution.Triangular:triangularCDF from random-fu-0.2.6.2, B"
:herbie-target
(if (< (/ x (* (- y z) (- t z))) 0.0) (/ (/ x (- y z)) (- t z)) (* x (/ 1.0 (* (- y z) (- t z)))))
(/ x (* (- y z) (- t z))))