\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:\\
\;\;\;\;\frac{1}{\frac{t - z}{\frac{x}{y - z}}}\\
\mathbf{elif}\;\left(t - z\right) \cdot \left(y - z\right) \le 7.073499185269093437018292211666512529491 \cdot 10^{141}:\\
\;\;\;\;x \cdot \frac{\frac{1}{y - z}}{t - z}\\
\mathbf{else}:\\
\;\;\;\;\frac{x}{t - z} \cdot \frac{1}{y - z}\\
\end{array}double f(double x, double y, double z, double t) {
double r38522485 = x;
double r38522486 = y;
double r38522487 = z;
double r38522488 = r38522486 - r38522487;
double r38522489 = t;
double r38522490 = r38522489 - r38522487;
double r38522491 = r38522488 * r38522490;
double r38522492 = r38522485 / r38522491;
return r38522492;
}
double f(double x, double y, double z, double t) {
double r38522493 = t;
double r38522494 = z;
double r38522495 = r38522493 - r38522494;
double r38522496 = y;
double r38522497 = r38522496 - r38522494;
double r38522498 = r38522495 * r38522497;
double r38522499 = -inf.0;
bool r38522500 = r38522498 <= r38522499;
double r38522501 = 1.0;
double r38522502 = x;
double r38522503 = r38522502 / r38522497;
double r38522504 = r38522495 / r38522503;
double r38522505 = r38522501 / r38522504;
double r38522506 = 7.073499185269093e+141;
bool r38522507 = r38522498 <= r38522506;
double r38522508 = r38522501 / r38522497;
double r38522509 = r38522508 / r38522495;
double r38522510 = r38522502 * r38522509;
double r38522511 = r38522502 / r38522495;
double r38522512 = r38522511 * r38522508;
double r38522513 = r38522507 ? r38522510 : r38522512;
double r38522514 = r38522500 ? r38522505 : r38522513;
return r38522514;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 7.5 |
|---|---|
| Target | 8.1 |
| Herbie | 1.2 |
if (* (- y z) (- t z)) < -inf.0Initial program 19.8
rmApplied associate-/r*0.1
rmApplied clear-num0.8
if -inf.0 < (* (- y z) (- t z)) < 7.073499185269093e+141Initial program 1.6
rmApplied associate-/r*3.9
rmApplied *-un-lft-identity3.9
Applied div-inv4.0
Applied times-frac1.9
Simplified1.9
if 7.073499185269093e+141 < (* (- y z) (- t z)) Initial program 10.4
rmApplied *-un-lft-identity10.4
Applied times-frac0.6
Final simplification1.2
herbie shell --seed 2019192
(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))))