\frac{x}{\left(y - z\right) \cdot \left(t - z\right)}\begin{array}{l}
\mathbf{if}\;\left(y - z\right) \cdot \left(t - z\right) = -\infty:\\
\;\;\;\;\frac{\frac{x}{t - z}}{y - z}\\
\mathbf{elif}\;\left(y - z\right) \cdot \left(t - z\right) \le 1.22506240341463963 \cdot 10^{298}:\\
\;\;\;\;\frac{x}{\left(y - z\right) \cdot \left(t - 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 r456214 = x;
double r456215 = y;
double r456216 = z;
double r456217 = r456215 - r456216;
double r456218 = t;
double r456219 = r456218 - r456216;
double r456220 = r456217 * r456219;
double r456221 = r456214 / r456220;
return r456221;
}
double f(double x, double y, double z, double t) {
double r456222 = y;
double r456223 = z;
double r456224 = r456222 - r456223;
double r456225 = t;
double r456226 = r456225 - r456223;
double r456227 = r456224 * r456226;
double r456228 = -inf.0;
bool r456229 = r456227 <= r456228;
double r456230 = x;
double r456231 = r456230 / r456226;
double r456232 = r456231 / r456224;
double r456233 = 1.2250624034146396e+298;
bool r456234 = r456227 <= r456233;
double r456235 = r456230 / r456227;
double r456236 = 1.0;
double r456237 = r456226 / r456230;
double r456238 = r456236 / r456237;
double r456239 = r456238 / r456224;
double r456240 = r456234 ? r456235 : r456239;
double r456241 = r456229 ? r456232 : r456240;
return r456241;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 7.8 |
|---|---|
| Target | 8.6 |
| Herbie | 0.9 |
if (* (- y z) (- t z)) < -inf.0Initial program 19.1
rmApplied *-un-lft-identity19.1
Applied times-frac0.1
rmApplied associate-*l/0.1
Simplified0.1
if -inf.0 < (* (- y z) (- t z)) < 1.2250624034146396e+298Initial program 1.4
rmApplied *-un-lft-identity1.4
Applied times-frac3.5
rmApplied *-un-lft-identity3.5
Applied associate-*l*3.5
Simplified1.4
if 1.2250624034146396e+298 < (* (- y z) (- t z)) Initial program 16.3
rmApplied *-un-lft-identity16.3
Applied times-frac0.1
rmApplied associate-*l/0.1
Simplified0.1
rmApplied clear-num0.1
Final simplification0.9
herbie shell --seed 2020042 +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))))