\frac{x \cdot y}{z}\begin{array}{l}
\mathbf{if}\;x \cdot y \le -2.166521247594354925726439343625696917212 \cdot 10^{205}:\\
\;\;\;\;\frac{x}{\frac{z}{y}}\\
\mathbf{elif}\;x \cdot y \le -1.343713460892298755823259752013121029537 \cdot 10^{-191}:\\
\;\;\;\;\frac{x \cdot y}{z}\\
\mathbf{elif}\;x \cdot y \le 4.152478566064296352109998791440075706057 \cdot 10^{-204}:\\
\;\;\;\;\frac{y}{z} \cdot x\\
\mathbf{elif}\;x \cdot y \le 9.404611212472955651642851083785275703569 \cdot 10^{253}:\\
\;\;\;\;\frac{x \cdot y}{z}\\
\mathbf{else}:\\
\;\;\;\;\frac{y}{z} \cdot x\\
\end{array}double f(double x, double y, double z) {
double r37209741 = x;
double r37209742 = y;
double r37209743 = r37209741 * r37209742;
double r37209744 = z;
double r37209745 = r37209743 / r37209744;
return r37209745;
}
double f(double x, double y, double z) {
double r37209746 = x;
double r37209747 = y;
double r37209748 = r37209746 * r37209747;
double r37209749 = -2.166521247594355e+205;
bool r37209750 = r37209748 <= r37209749;
double r37209751 = z;
double r37209752 = r37209751 / r37209747;
double r37209753 = r37209746 / r37209752;
double r37209754 = -1.3437134608922988e-191;
bool r37209755 = r37209748 <= r37209754;
double r37209756 = r37209748 / r37209751;
double r37209757 = 4.152478566064296e-204;
bool r37209758 = r37209748 <= r37209757;
double r37209759 = r37209747 / r37209751;
double r37209760 = r37209759 * r37209746;
double r37209761 = 9.404611212472956e+253;
bool r37209762 = r37209748 <= r37209761;
double r37209763 = r37209762 ? r37209756 : r37209760;
double r37209764 = r37209758 ? r37209760 : r37209763;
double r37209765 = r37209755 ? r37209756 : r37209764;
double r37209766 = r37209750 ? r37209753 : r37209765;
return r37209766;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 6.0 |
|---|---|
| Target | 6.2 |
| Herbie | 0.4 |
if (* x y) < -2.166521247594355e+205Initial program 27.2
rmApplied associate-/l*1.5
if -2.166521247594355e+205 < (* x y) < -1.3437134608922988e-191 or 4.152478566064296e-204 < (* x y) < 9.404611212472956e+253Initial program 0.2
if -1.3437134608922988e-191 < (* x y) < 4.152478566064296e-204 or 9.404611212472956e+253 < (* x y) Initial program 13.8
rmApplied *-un-lft-identity13.8
Applied times-frac0.5
Simplified0.5
Final simplification0.4
herbie shell --seed 2019179
(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))