public void TestJaggedUnrolled() { AssertMatrixJagged((result, a, b) => { VBMM.MatrixMulti_JaggedUnrolled(result, a, b); }); }
public void TestUnrolled() { AssertMatrix((result, a, b) => { VBMM.MatrixMulti_Unrolled(result, a, b); }); }
public void TestNoAlloc() { AssertMatrix((result, a, b) => { VBMM.MatrixMulti_Baseline(result, a, b); }); }
public void AssertMatrixJagged(Action <double[][], double[][], double[][]> action) { // Arrange var result = Helper.GenerateZeroMatrixJagged(); var a = Helper.ToJagged(Helper.GenerateTestMatrix()); var b = Helper.ToJagged(Helper.GenerateTestMatrix()); // Act action(result, a, b); var newResult = Helper.To2d(result); // Assert CollectionAssert.AreEqual(newResult, VBMM.MatrixMulti_Original(Helper.To2d(a), Helper.To2d(b))); }
public void AssertMatrix(Action <double[, ], double[, ], double[, ]> action) { // Arrange var result = Helper.GenerateZeroMatrix(); var a = Helper.GenerateTestMatrix(); var b = Helper.GenerateTestMatrix(); // Act action(result, a, b); var expected = VBMM.MatrixMulti_Original(a, b); // Assert for (var i = 0; i <= result.GetUpperBound(0); i++) { for (var j = 0; j <= result.GetUpperBound(1); j++) { Assert.AreEqual(expected[i, j], result[i, j], 0.00001, $"I={i}, J={j}, Expected={expected[i,j]}, Actual={result[i, j]}"); } } //CollectionAssert.AreEqual(expected, result); }
public double[][] Jagged_Unrolled() { VBMM.MatrixMulti_JaggedUnrolled(resultjag, ajag, bjag); return(resultjag); }
public double[,] Unrolled() { VBMM.MatrixMulti_Unrolled(result, a, b); return(result); }
public double[,] Baseline() { VBMM.MatrixMulti_Baseline(result, a, b); return(result); }
public double[,] Original() { var newResult = VBMM.MatrixMulti_Original(a, b); return(newResult); }