\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) \le -2.342968553224854 \cdot 10^{+280}:\\
\;\;\;\;\frac{\frac{x}{y - z}}{t - z}\\
\mathbf{elif}\;\left(t - z\right) \cdot \left(y - z\right) \le 3.071620186460857 \cdot 10^{+194}:\\
\;\;\;\;\frac{x}{\left(t - z\right) \cdot \left(y - z\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{x}{y - z}}{t - z}\\
\end{array}double f(double x, double y, double z, double t) {
double r39001503 = x;
double r39001504 = y;
double r39001505 = z;
double r39001506 = r39001504 - r39001505;
double r39001507 = t;
double r39001508 = r39001507 - r39001505;
double r39001509 = r39001506 * r39001508;
double r39001510 = r39001503 / r39001509;
return r39001510;
}
double f(double x, double y, double z, double t) {
double r39001511 = t;
double r39001512 = z;
double r39001513 = r39001511 - r39001512;
double r39001514 = y;
double r39001515 = r39001514 - r39001512;
double r39001516 = r39001513 * r39001515;
double r39001517 = -2.342968553224854e+280;
bool r39001518 = r39001516 <= r39001517;
double r39001519 = x;
double r39001520 = r39001519 / r39001515;
double r39001521 = r39001520 / r39001513;
double r39001522 = 3.071620186460857e+194;
bool r39001523 = r39001516 <= r39001522;
double r39001524 = r39001519 / r39001516;
double r39001525 = r39001523 ? r39001524 : r39001521;
double r39001526 = r39001518 ? r39001521 : r39001525;
return r39001526;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 7.1 |
|---|---|
| Target | 7.9 |
| Herbie | 0.8 |
if (* (- y z) (- t z)) < -2.342968553224854e+280 or 3.071620186460857e+194 < (* (- y z) (- t z)) Initial program 12.2
rmApplied associate-/r*0.2
if -2.342968553224854e+280 < (* (- y z) (- t z)) < 3.071620186460857e+194Initial program 1.4
Final simplification0.8
herbie shell --seed 2019158
(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))))