\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 -0.0:\\
\;\;\;\;\frac{x}{t - z} \cdot \frac{1}{y - z}\\
\mathbf{elif}\;\left(t - z\right) \cdot \left(y - z\right) \le 1.636232738758287 \cdot 10^{+98}:\\
\;\;\;\;x \cdot \frac{1}{\left(t - z\right) \cdot \left(y - z\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{1}{\frac{t - z}{x}}}{y - z}\\
\end{array}double f(double x, double y, double z, double t) {
double r36192922 = x;
double r36192923 = y;
double r36192924 = z;
double r36192925 = r36192923 - r36192924;
double r36192926 = t;
double r36192927 = r36192926 - r36192924;
double r36192928 = r36192925 * r36192927;
double r36192929 = r36192922 / r36192928;
return r36192929;
}
double f(double x, double y, double z, double t) {
double r36192930 = t;
double r36192931 = z;
double r36192932 = r36192930 - r36192931;
double r36192933 = y;
double r36192934 = r36192933 - r36192931;
double r36192935 = r36192932 * r36192934;
double r36192936 = -0.0;
bool r36192937 = r36192935 <= r36192936;
double r36192938 = x;
double r36192939 = r36192938 / r36192932;
double r36192940 = 1.0;
double r36192941 = r36192940 / r36192934;
double r36192942 = r36192939 * r36192941;
double r36192943 = 1.636232738758287e+98;
bool r36192944 = r36192935 <= r36192943;
double r36192945 = r36192940 / r36192935;
double r36192946 = r36192938 * r36192945;
double r36192947 = r36192932 / r36192938;
double r36192948 = r36192940 / r36192947;
double r36192949 = r36192948 / r36192934;
double r36192950 = r36192944 ? r36192946 : r36192949;
double r36192951 = r36192937 ? r36192942 : r36192950;
return r36192951;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 7.7 |
|---|---|
| Target | 8.4 |
| Herbie | 1.4 |
if (* (- y z) (- t z)) < -0.0Initial program 8.2
rmApplied *-un-lft-identity8.2
Applied times-frac3.0
if -0.0 < (* (- y z) (- t z)) < 1.636232738758287e+98Initial program 0.3
rmApplied div-inv0.5
if 1.636232738758287e+98 < (* (- y z) (- t z)) Initial program 9.8
rmApplied add-cube-cbrt10.1
Applied times-frac0.7
rmApplied associate-*l/1.0
Simplified0.6
rmApplied clear-num0.7
Final simplification1.4
herbie shell --seed 2019162 +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 (* (- y z) (- t z)))))
(/ x (* (- y z) (- t z))))