Add Matrix-Vector and Matrix-Matrix product

function mul to Matrix class.
This commit is contained in:
kradchen
2023-05-16 10:00:53 +08:00
parent 0148966137
commit b2bacd8894
3 changed files with 125 additions and 0 deletions

View File

@@ -357,4 +357,32 @@ TEST_F(Matrix_Test, matrixCompare){
EXPECT_EQ(C.getData()[2], 1);
EXPECT_EQ(C.getData()[3], 0);
}
TEST_F(Matrix_Test, matrixfunction){
double *dataA = new double[9]{1,6,9,4,1,0,5,8,1};
double *dataB = new double[3]{1,2,3};
Aurora::Matrix A = Aurora::Matrix::fromRawData(dataA, 3, 3);
Aurora::Matrix B = Aurora::Matrix::fromRawData(dataB, 1, 3);
auto C = B.mul(A);
EXPECT_DOUBLE_EQ(C.getData()[0], 40);
EXPECT_DOUBLE_EQ(C.getData()[1], 6);
EXPECT_DOUBLE_EQ(C.getData()[2], 24);
B.forceReshape(3, 1, 1);
C = A.mul(B);
EXPECT_DOUBLE_EQ(C.getData()[0], 24);
EXPECT_DOUBLE_EQ(C.getData()[1], 32);
EXPECT_DOUBLE_EQ(C.getData()[2], 12);
double *dataD = new double[9]{2.1,3,9,-3,1,0,51,-8,1};
Aurora::Matrix D = Aurora::Matrix::fromRawData(dataD, 3, 3);
C = A.mul(D);
EXPECT_DOUBLE_EQ(C.getData()[0], 59.1);
EXPECT_DOUBLE_EQ(C.getData()[1], 87.6);
EXPECT_DOUBLE_EQ(C.getData()[2], 27.9);
EXPECT_DOUBLE_EQ(C.getData()[3], 1);
EXPECT_DOUBLE_EQ(C.getData()[4], -17);
EXPECT_DOUBLE_EQ(C.getData()[5], -27);
EXPECT_DOUBLE_EQ(C.getData()[6], 24);
EXPECT_DOUBLE_EQ(C.getData()[7], 306);
EXPECT_DOUBLE_EQ(C.getData()[8], 460);
}