1

我正在尝试使用System.Numeric.Vectorsnuget 包(版本 4.4.0),但以下代码无法按预期工作:

static void Main(string[] args)
{
    var cnt = Vector<int>.Count;

    var arr = new int[] { 42, 42, 42, 42 };
    var arr2 = new int[] { 1, 1, 1, 1 };

    var vec = new Vector<int>(arr, 0);
    var vec2 = new Vector<int>(arr2, 0);

    var result = Vector.Dot(vec, vec2);

    if (result != 168)
        throw new Exception($"Expected 168 actual {result} (cnt: {cnt}, acc:{Vector.IsHardwareAccelerated})");
}

代码在 x64 Release .NET 4.7 版本中引发异常,并带有消息:Expected 168 actual -458674576 (cnt: 4, acc:True)

Vector 没有硬件加速的所有其他构建都会给出正确的结果。

这是 RyuJIT 中的错误还是我做错了什么?


编辑

替换为 后intfloat代码给出了正确的结果。此代码是否无法达到int预期结果?

4

0 回答 0