public static ImplicitMatrix <T> operator *(ImplicitMatrix <T> m1, ImplicitMatrix <T> m2) { if (m1.Columns != m2.Rows) { throw new Exception("Matrix multiplication error, row of m1 isn't equal to the column count of m2"); } ImplicitMatrix <T> output = new ImplicitMatrix <T>(m1.Rows, m2.Columns); for (int i = 0; i < output.Rows; i++) { for (int j = 0; j < output.Columns; j++) { CalculatingUnit <T> item = bop.Zero(); foreach (MatrixItem mItem1 in m1.mRf[i]) { if (m2.mCf[j].Exists(x => x.row == mItem1.column)) { MatrixItem mItem2 = m2.mCf[j].Find(x => x.row == mItem1.column); item = bop.Add(item, bop.Multiply(mItem1.value, mItem2.value)); } } output[i, j] = item; } } return(output); }
public static HyperPoint <T> operator *(ImplicitMatrix <T> m, HyperPoint <T> p) { if (m.Columns != p.Dim) { throw new Exception("Matrix multiplication error, row of m1 isn't equal to the column count of m2"); } HyperPoint <T> output = new HyperPoint <T>(m.Rows); for (int i = 0; i < output.Dim; i++) { CalculatingUnit <T> item = bop.Zero(); foreach (MatrixItem mItem in m.mRf[i]) { item = bop.Add(item, mItem.value * p[mItem.column]); } output[i] = item; } return(output); }
private Action GetArgumentAction(CalculatingUnit unit) { return(() => { unit.ComputeParameter(new int[1, 2]); }); }
private Action GetArgumentNullAction(CalculatingUnit unit) { return(() => { unit.ComputeParameter(null); }); }