\frac{x}{\left(y - z\right) \cdot \left(t - z\right)}\begin{array}{l}
\mathbf{if}\;\frac{x}{\left(y - z\right) \cdot \left(t - z\right)} \le 0.0:\\
\;\;\;\;\frac{\frac{1}{\frac{y - z}{x}}}{t - 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 r527392 = x;
double r527393 = y;
double r527394 = z;
double r527395 = r527393 - r527394;
double r527396 = t;
double r527397 = r527396 - r527394;
double r527398 = r527395 * r527397;
double r527399 = r527392 / r527398;
return r527399;
}
double f(double x, double y, double z, double t) {
double r527400 = x;
double r527401 = y;
double r527402 = z;
double r527403 = r527401 - r527402;
double r527404 = t;
double r527405 = r527404 - r527402;
double r527406 = r527403 * r527405;
double r527407 = r527400 / r527406;
double r527408 = 0.0;
bool r527409 = r527407 <= r527408;
double r527410 = 1.0;
double r527411 = r527403 / r527400;
double r527412 = r527410 / r527411;
double r527413 = r527412 / r527405;
double r527414 = r527409 ? r527413 : r527407;
return r527414;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 7.0 |
|---|---|
| Target | 7.8 |
| Herbie | 1.5 |
if (/ x (* (- y z) (- t z))) < 0.0Initial program 7.2
rmApplied associate-/r*2.1
rmApplied clear-num2.2
if 0.0 < (/ x (* (- y z) (- t z))) Initial program 6.8
Final simplification1.5
herbie shell --seed 2019323 +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))))