我试图以
this paper (google docs link)
(link to the pdf)第5页所述的方式实现一个算法来对一个矩阵进行Howellize.
我认为,大部分内容都非常明显,但我不确定第16行,是否>>意味着右转?如果是的话,它甚至如何工作?当然这意味着比特被砍掉了?据我所知,目前无法保证它正在转移的数字正在转移一个保留信息的数量.
如果它不意味着正确的转变,它意味着什么?
如果有人可以节省时间,我也想要一个测试用例(我不相信自己想出一个,我不太了解它).
我已经像这样实现了,这是正确的吗? (我没有测试用例,所以如何找到?)
int j = 0; for (int i = 0; i < 2 * k + 1; i++) { var R = (from row in rows where leading_index(row) == i orderby rank(row[i]) ascending select row).ToList(); if (R.Count > 0) { uint[] r = R[0]; int p = rank(r[i]); // rank counts the trailing zeroes uint u = r[i] >> p; invert(r,u); // multiplies each element of r by the // multiplicative inverse of u for (int s = 1; s < R.Count; s++) { int t = rank(R[s][i]); uint v = R[s][i] >> t; if (subtract(R[s],r,v << (t - p)) == 0) // subtracts (v<<(t-p)) * r from R[s],// removes if all elements are zero rows.Remove(R[s]); } swap(rows,rows.IndexOf(r),j); for (int h = 0; h < j - 1; h++) { uint d = rows[h][i] >> p; subtract(rows[h],d); } if (r[i] != 1) // shifted returns r left-shifted by 32-p rows.Add(shifted(r,32 - p)); j++; } }
解决方法
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。