Fix matrix operator bug on - and /.
This commit is contained in:
@@ -133,9 +133,11 @@ TEST_F(FunctionTester, MatrixCreate) {
|
||||
TEST_F(FunctionTester, matrixSlice) {
|
||||
double * dataA =Aurora::malloc(8);
|
||||
double * dataB =Aurora::malloc(8);
|
||||
double * dataC =Aurora::malloc(8);
|
||||
for (int i = 0; i < 8; ++i) {
|
||||
dataA[i]=(double)(i-3);
|
||||
dataB[i]=(double)(i+2);
|
||||
dataA[i]=(double)(i);
|
||||
dataB[i]=(double)(1);
|
||||
dataC[i]=(double)(9-i);
|
||||
}
|
||||
Aurora::Matrix A = Aurora::Matrix::New(dataA,2,2,2);
|
||||
printf("A:\r\n");
|
||||
@@ -143,32 +145,53 @@ TEST_F(FunctionTester, matrixSlice) {
|
||||
Aurora::Matrix B = Aurora::Matrix::New(dataB,2,2,2);
|
||||
printf("B:\r\n");
|
||||
B.printf();
|
||||
A(Aurora::$,Aurora::$,1) = B(Aurora::$,Aurora::$,0);
|
||||
printf("New A:\r\n");
|
||||
A.printf();
|
||||
printf("New B:\r\n");
|
||||
B.printf();
|
||||
Aurora::Matrix C = Aurora::Matrix::New(dataC,2,2,2);
|
||||
printf("C:\r\n");
|
||||
C.printf();
|
||||
//2D slice
|
||||
EXPECT_EQ(4.0,dataA[4]);
|
||||
A(Aurora::$,Aurora::$,1) = B(0,Aurora::$,Aurora::$);
|
||||
EXPECT_EQ(1,dataA[4]);
|
||||
EXPECT_EQ(3,dataA[3]);
|
||||
A(Aurora::$,1,Aurora::$) = B(Aurora::$,Aurora::$,0);
|
||||
EXPECT_EQ(1.0,dataA[3]);
|
||||
EXPECT_EQ(0.0,dataA[0]);
|
||||
A(0,Aurora::$,Aurora::$) = B(Aurora::$,0,Aurora::$);
|
||||
EXPECT_EQ(1.0,dataA[0]);
|
||||
//vector slice
|
||||
A(0,Aurora::$,0) = C(0,0,Aurora::$);
|
||||
EXPECT_EQ(9.0,dataA[0]);
|
||||
A(Aurora::$,0,0) = C(0,Aurora::$,1);
|
||||
EXPECT_EQ(5.0,dataA[0]);
|
||||
//error slice
|
||||
EXPECT_EQ(1,A(Aurora::$,Aurora::$,Aurora::$).toMatrix().getDataSize() );
|
||||
auto D =C(0,0,0).toMatrix();
|
||||
EXPECT_EQ(1,D.getDataSize() );
|
||||
EXPECT_EQ(9,D.getData()[0] );
|
||||
}
|
||||
|
||||
TEST_F(FunctionTester, RawDataMatrix) {
|
||||
double * dataA =new double[8];
|
||||
double * dataB =new double[8];
|
||||
for (int i = 0; i < 8; ++i) {
|
||||
dataA[i]=(double)(i-3);
|
||||
dataB[i]=(double)(i+2);
|
||||
TEST_F(FunctionTester, matrixOpertaor) {
|
||||
//3D
|
||||
{
|
||||
double * dataA =new double[8];
|
||||
double * dataB =new double[8];
|
||||
for (int i = 0; i < 8; ++i) {
|
||||
dataA[i]=(double)(i);
|
||||
dataB[i]=(double)(2);
|
||||
}
|
||||
Aurora::Matrix A = Aurora::Matrix::fromRawData(dataA,2,2,2);
|
||||
DISPLAY_MATRIX(A)
|
||||
Aurora::Matrix B = Aurora::Matrix::fromRawData(dataB,2,2,2);
|
||||
DISPLAY_MATRIX(B)
|
||||
auto C = (A*B)-B;
|
||||
DISPLAY_MATRIX(C)
|
||||
EXPECT_EQ(C.getData()[2],2);
|
||||
C = A*B/2.0;
|
||||
EXPECT_EQ(C.getData()[2],2);
|
||||
C = A*B*B/2.0;
|
||||
EXPECT_EQ(C.getData()[2],4);
|
||||
}
|
||||
Aurora::Matrix A = Aurora::Matrix::fromRawData(dataA,2,2,2);
|
||||
printf("A:\r\n");
|
||||
A.printf();
|
||||
Aurora::Matrix B = Aurora::Matrix::copyFromRawData(dataB,2,2,2);
|
||||
delete [] dataB;
|
||||
printf("B:\r\n");
|
||||
B.printf();
|
||||
A(Aurora::$,Aurora::$,1) = B(Aurora::$,Aurora::$,0);
|
||||
printf("New A:\r\n");
|
||||
A.printf();
|
||||
printf("New B:\r\n");
|
||||
B.printf();
|
||||
|
||||
}
|
||||
|
||||
TEST_F(FunctionTester, sign) {
|
||||
|
||||
Reference in New Issue
Block a user