Сумма элементов в 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);
Другие вопросы по тегам