Vector.Dot не работает правильно
Я пытаюсь использовать 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 build с сообщением: Expected 168 actual -458674576 (cnt: 4, acc:True)
,
Все остальные сборки, где Vector не аппаратно ускоряется, дают правильные результаты.
Это ошибка в RyuJIT или я что-то не так делаю?
РЕДАКТИРОВАТЬ
После замены int
с float
код дает правильный результат. Этот код не работает с int
ожидаемый результат?