\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) \le 6.34434390289444677 \cdot 10^{108}:\\
\;\;\;\;\frac{\sqrt{1}}{1} \cdot \frac{1}{\frac{y - z}{\frac{x}{t - z}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{x}{y - z}}{t - z}\\
\end{array}double f(double x, double y, double z, double t) {
double r861039 = x;
double r861040 = y;
double r861041 = z;
double r861042 = r861040 - r861041;
double r861043 = t;
double r861044 = r861043 - r861041;
double r861045 = r861042 * r861044;
double r861046 = r861039 / r861045;
return r861046;
}
double f(double x, double y, double z, double t) {
double r861047 = y;
double r861048 = z;
double r861049 = r861047 - r861048;
double r861050 = t;
double r861051 = r861050 - r861048;
double r861052 = r861049 * r861051;
double r861053 = 6.344343902894447e+108;
bool r861054 = r861052 <= r861053;
double r861055 = 1.0;
double r861056 = sqrt(r861055);
double r861057 = r861056 / r861055;
double r861058 = x;
double r861059 = r861058 / r861051;
double r861060 = r861049 / r861059;
double r861061 = r861055 / r861060;
double r861062 = r861057 * r861061;
double r861063 = r861058 / r861049;
double r861064 = r861063 / r861051;
double r861065 = r861054 ? r861062 : r861064;
return r861065;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 7.5 |
|---|---|
| Target | 8.2 |
| Herbie | 2.2 |
if (* (- y z) (- t z)) < 6.344343902894447e+108Initial program 5.2
rmApplied *-un-lft-identity5.2
Applied times-frac3.5
rmApplied *-un-lft-identity3.5
Applied add-sqr-sqrt3.5
Applied times-frac3.5
Applied associate-*l*3.5
Simplified3.4
rmApplied clear-num3.8
if 6.344343902894447e+108 < (* (- y z) (- t z)) Initial program 9.8
rmApplied associate-/r*0.5
Final simplification2.2
herbie shell --seed 2020065
(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))))