\frac{x \cdot y}{z}\begin{array}{l}
\mathbf{if}\;\frac{x \cdot y}{z} \le -2.66985847088286362 \cdot 10^{271}:\\
\;\;\;\;\frac{x}{\frac{z}{y}}\\
\mathbf{elif}\;\frac{x \cdot y}{z} \le -2.2813575988703053 \cdot 10^{-294}:\\
\;\;\;\;\frac{x \cdot y}{z}\\
\mathbf{elif}\;\frac{x \cdot y}{z} \le 4.12286438253875463 \cdot 10^{-275}:\\
\;\;\;\;\frac{x}{z} \cdot y\\
\mathbf{elif}\;\frac{x \cdot y}{z} \le 2.2046490361409421 \cdot 10^{173}:\\
\;\;\;\;\frac{x \cdot y}{z}\\
\mathbf{else}:\\
\;\;\;\;\frac{x}{\frac{z}{y}}\\
\end{array}double f(double x, double y, double z) {
double r730962 = x;
double r730963 = y;
double r730964 = r730962 * r730963;
double r730965 = z;
double r730966 = r730964 / r730965;
return r730966;
}
double f(double x, double y, double z) {
double r730967 = x;
double r730968 = y;
double r730969 = r730967 * r730968;
double r730970 = z;
double r730971 = r730969 / r730970;
double r730972 = -2.6698584708828636e+271;
bool r730973 = r730971 <= r730972;
double r730974 = r730970 / r730968;
double r730975 = r730967 / r730974;
double r730976 = -2.2813575988703053e-294;
bool r730977 = r730971 <= r730976;
double r730978 = 4.1228643825387546e-275;
bool r730979 = r730971 <= r730978;
double r730980 = r730967 / r730970;
double r730981 = r730980 * r730968;
double r730982 = 2.204649036140942e+173;
bool r730983 = r730971 <= r730982;
double r730984 = r730983 ? r730971 : r730975;
double r730985 = r730979 ? r730981 : r730984;
double r730986 = r730977 ? r730971 : r730985;
double r730987 = r730973 ? r730975 : r730986;
return r730987;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 6.4 |
|---|---|
| Target | 6.4 |
| Herbie | 2.0 |
if (/ (* x y) z) < -2.6698584708828636e+271 or 2.204649036140942e+173 < (/ (* x y) z) Initial program 26.4
rmApplied associate-/l*10.5
if -2.6698584708828636e+271 < (/ (* x y) z) < -2.2813575988703053e-294 or 4.1228643825387546e-275 < (/ (* x y) z) < 2.204649036140942e+173Initial program 0.5
if -2.2813575988703053e-294 < (/ (* x y) z) < 4.1228643825387546e-275Initial program 10.8
rmApplied associate-/l*1.5
rmApplied associate-/r/1.6
Final simplification2.0
herbie shell --seed 2020083 +o rules:numerics
(FPCore (x y z)
:name "Diagrams.Solve.Tridiagonal:solveCyclicTriDiagonal from diagrams-solve-0.1, A"
:precision binary64
:herbie-target
(if (< z -4.262230790519429e-138) (/ (* x y) z) (if (< z 1.7042130660650472e-164) (/ x (/ z y)) (* (/ x z) y)))
(/ (* x y) z))