\frac{x}{\left(y - z\right) \cdot \left(t - z\right)}\begin{array}{l}
\mathbf{if}\;t \le 2.230776748510506 \cdot 10^{-184}:\\
\;\;\;\;\frac{\frac{x}{t - z}}{y - z}\\
\mathbf{elif}\;t \le 3.221537725138539 \cdot 10^{+102}:\\
\;\;\;\;\frac{x}{\left(y - z\right) \cdot \left(t - z\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{x}{t - z}}{y - z}\\
\end{array}double f(double x, double y, double z, double t) {
double r36728507 = x;
double r36728508 = y;
double r36728509 = z;
double r36728510 = r36728508 - r36728509;
double r36728511 = t;
double r36728512 = r36728511 - r36728509;
double r36728513 = r36728510 * r36728512;
double r36728514 = r36728507 / r36728513;
return r36728514;
}
double f(double x, double y, double z, double t) {
double r36728515 = t;
double r36728516 = 2.230776748510506e-184;
bool r36728517 = r36728515 <= r36728516;
double r36728518 = x;
double r36728519 = z;
double r36728520 = r36728515 - r36728519;
double r36728521 = r36728518 / r36728520;
double r36728522 = y;
double r36728523 = r36728522 - r36728519;
double r36728524 = r36728521 / r36728523;
double r36728525 = 3.221537725138539e+102;
bool r36728526 = r36728515 <= r36728525;
double r36728527 = r36728523 * r36728520;
double r36728528 = r36728518 / r36728527;
double r36728529 = r36728526 ? r36728528 : r36728524;
double r36728530 = r36728517 ? r36728524 : r36728529;
return r36728530;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 7.7 |
|---|---|
| Target | 8.4 |
| Herbie | 2.9 |
if t < 2.230776748510506e-184 or 3.221537725138539e+102 < t Initial program 8.4
rmApplied add-cube-cbrt8.9
Applied times-frac1.8
rmApplied associate-*l/2.6
Simplified2.0
if 2.230776748510506e-184 < t < 3.221537725138539e+102Initial program 5.5
rmApplied add-cube-cbrt6.1
Applied times-frac1.1
rmApplied associate-*l/2.2
Simplified1.5
rmApplied div-inv1.6
Applied associate-/l*5.6
Simplified5.5
Final simplification2.9
herbie shell --seed 2019162
(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 (* (- y z) (- t z)))))
(/ x (* (- y z) (- t z))))