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 ожидаемый результат?

0 ответов

Другие вопросы по тегам