gpt4 book ai didi

c# - 矩阵化

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:02:14 25 4
gpt4 key购买 nike

我正尝试按照 this paper (google docs link) 的第 5 页上解释的方式实现一种对矩阵进行 Howellize 化的算法。 (link to the pdf) .

我认为其中大部分对我来说都非常明显,但我不确定第 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], r, d);
}
if (r[i] != 1)
// shifted returns r left-shifted by 32-p
rows.Add(shifted(r, 32 - p));
j++;
}
}

最佳答案

对于测试用例,this可能对您有帮助(第 2 页)。也试试 this .

我认为你对正确的转变是正确的。要获得 Howell 形式,他们希望列中除主值之外的值小于主值。右移似乎对此很有成效。

第 16 行说:

         Pick d so that 0 <= G(h,i) - d * ri < ri

考虑

         G(h,i) - d * ri = 0
G(h,i) = d * ri
G(h,i) = d * (2 ^ p) ... as the comment on line 8 says, ri = 2^p.
So d = G(h,i) / (2 ^ p)

将 G(h,i) 右移 p 个位置是计算 d 值的最快方法。

关于c# - 矩阵化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8854961/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com