\frac{x \cdot y}{z}\begin{array}{l}
\mathbf{if}\;x \cdot y \le -6.939593118092855 \cdot 10^{+188}:\\
\;\;\;\;x \cdot \frac{y}{z}\\
\mathbf{elif}\;x \cdot y \le -1.454055052210347 \cdot 10^{-302}:\\
\;\;\;\;\frac{1}{\frac{z}{x \cdot y}}\\
\mathbf{elif}\;x \cdot y \le 1.8266963535821708 \cdot 10^{-240}:\\
\;\;\;\;x \cdot \frac{y}{z}\\
\mathbf{elif}\;x \cdot y \le 1.1730839583412028 \cdot 10^{+147}:\\
\;\;\;\;\frac{1}{\frac{z}{x \cdot y}}\\
\mathbf{else}:\\
\;\;\;\;x \cdot \frac{y}{z}\\
\end{array}double f(double x, double y, double z) {
double r26776886 = x;
double r26776887 = y;
double r26776888 = r26776886 * r26776887;
double r26776889 = z;
double r26776890 = r26776888 / r26776889;
return r26776890;
}
double f(double x, double y, double z) {
double r26776891 = x;
double r26776892 = y;
double r26776893 = r26776891 * r26776892;
double r26776894 = -6.939593118092855e+188;
bool r26776895 = r26776893 <= r26776894;
double r26776896 = z;
double r26776897 = r26776892 / r26776896;
double r26776898 = r26776891 * r26776897;
double r26776899 = -1.454055052210347e-302;
bool r26776900 = r26776893 <= r26776899;
double r26776901 = 1.0;
double r26776902 = r26776896 / r26776893;
double r26776903 = r26776901 / r26776902;
double r26776904 = 1.8266963535821708e-240;
bool r26776905 = r26776893 <= r26776904;
double r26776906 = 1.1730839583412028e+147;
bool r26776907 = r26776893 <= r26776906;
double r26776908 = r26776907 ? r26776903 : r26776898;
double r26776909 = r26776905 ? r26776898 : r26776908;
double r26776910 = r26776900 ? r26776903 : r26776909;
double r26776911 = r26776895 ? r26776898 : r26776910;
return r26776911;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 6.1 |
|---|---|
| Target | 5.4 |
| Herbie | 0.7 |
if (* x y) < -6.939593118092855e+188 or -1.454055052210347e-302 < (* x y) < 1.8266963535821708e-240 or 1.1730839583412028e+147 < (* x y) Initial program 17.1
rmApplied *-un-lft-identity17.1
Applied times-frac0.9
Simplified0.9
if -6.939593118092855e+188 < (* x y) < -1.454055052210347e-302 or 1.8266963535821708e-240 < (* x y) < 1.1730839583412028e+147Initial program 0.2
rmApplied clear-num0.6
Final simplification0.7
herbie shell --seed 2019162 +o rules:numerics
(FPCore (x y z)
:name "Diagrams.Solve.Tridiagonal:solveCyclicTriDiagonal from diagrams-solve-0.1, A"
:herbie-target
(if (< z -4.262230790519429e-138) (/ (* x y) z) (if (< z 1.7042130660650472e-164) (/ x (/ z y)) (* (/ x z) y)))
(/ (* x y) z))