Я пытаюсь оптимизировать точечный продукт двух массивов в стиле c: contant и small size и типа short.
Я прочитал несколько документов о встроенных функциях SIMD и множество сообщений / статей в блогах об оптимизации точечных продуктов с использованием этих встроенных функций.
Однако я не понимаю, как точечный продукт на коротких массивах с использованием этой встроенной функции может дать правильный результат. При создании скалярного произведения вычисленные значения могут быть (и всегда в моем случае) больше, чем SHORT_MAX, поэтому есть сумма. Следовательно, я храню их в переменной типа double.
Насколько я понимаю, точечный продукт с использованием встроенного simd, мы используем типы переменных __m128i, а операции возвращают __m128i. Итак, чего я не понимаю, так это того, почему он не «переполняется» и как результат может быть преобразован в тип значения, который может его обработать?
спасибо за советы