【发布时间】:2016-06-01 13:55:01
【问题描述】:
我不知道如何在 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 ???
}
如果真的有可能?我该怎么做?
【问题讨论】:
-
众所周知,该类的理解很少,这也是它未添加到 .NET Framework 的原因。它代表一个 SIMD cpu 寄存器,可以存储 2 个双精度数或 4 个浮点数。它应该被命名为 SimdRegister。你真的打算创建一个包含任意数量元素的向量吗?
-
@stephen.vakil 似乎 OP 想要对向量的元素求和,而不是将其添加到另一个向量中。
-
我同意@HansPassant 的观点,即您可能没有使用正确的数据结构。但是,如果您真的需要对元素求和,则必须执行
for循环,因为它没有实现IEnumerable。 -
我测试了它,它就像一个魅力。 JIT 还为它生成优化良好的内在函数。
标签: c# simd system.numerics