Сумма элементов в System.Numerics.Vector<T> в.NET 4.6
Я не могу понять, как получить сумму элементов в векторе типа System.Numerics.Vector.
double sum(System.Numerics.Vector<double> vect)
{
// Something like
// double sum = 0;
// foreach e in vect { sum += e; }
// return sum;
// Vector.method???
// For loop ???
}
Если это действительно возможно? Как я могу это сделать?
2 ответа
Предполагая, что вы намеревались иметь Vector
которые могут содержать (в сегодняшнем оборудовании) 2 или 4 двойных числа, это суммирует их.
double vectorSum = Vector.Dot(yourDoubleVector, Vector<double>.One);
Dot
метод вычисляет скалярное произведение двух векторов, которое определено для двух векторов A
а также B
размера n
как A1 * B1 + A2 * B2 + ... + An * Bn
Таким образом, скалярное произведение вектора A
и еще один вектор из всех 1 будет просто сумма элементов в векторе A
,
Начиная с .NET 6, это доступно напрямую черезVector.Sum<T>(Vector<T> value)
:
double sum(System.Numerics.Vector<double> vect) // note can be 'static'
=> Vector.Sum(vect);