我正在尝试使用System.Numeric.Vectors
nuget 包(版本 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 中的错误还是我做错了什么?
编辑
替换为 后int
,float
代码给出了正确的结果。此代码是否无法达到int
预期结果?