namespace Cryville.Common.Math { public class ColumnVector { readonly T[] content; public int Size { get; private set; } public ColumnVector(int size) { content = new T[size]; Size = size; } public ColumnVector(T[] c) { Size = c.Length; content = c; } public T this[int i] { get { return content[i]; } set { content[i] = value; } } public T Dot(ColumnVector lhs, IVectorOperator o) { T res = default(T); for (var i = 0; i < Size; i++) res = o.Add(res, o.ScalarMultiply(lhs[i], content[i])); return res; } public static ColumnVector WithPolynomialCoefficients(int size, float num) { var m = new ColumnVector(size); for (var i = 0; i < size; i++) m[i] = (float)System.Math.Pow(num, i); return m; } } }