diff --git a/src/Function1D.cpp b/src/Function1D.cpp index f63b1b8..141a59c 100644 --- a/src/Function1D.cpp +++ b/src/Function1D.cpp @@ -726,10 +726,10 @@ Matrix Aurora::horzcat(const Matrix& aMatrix1, const Matrix& aMatrix2) int column2 = aMatrix2.getDimSize(1); int slice = aMatrix1.getDimSize(2); int row = aMatrix1.getDimSize(0); - size_t size1= row*column1; - size_t size2= row*column2; + size_t size1= row*column1*aMatrix1.getValueType(); + size_t size2= row*column2*aMatrix1.getValueType(); float* resultData = Aurora::malloc(aMatrix1.getDataSize() + aMatrix2.getDataSize(),aMatrix1.getValueType()); - size_t sliceStride = row*(column1+column2); + size_t sliceStride = row*(column1+column2)*aMatrix1.getValueType(); for (size_t i = 0; i < slice; i++) { cblas_scopy(size1, aMatrix1.getData()+i*size1 , 1, resultData + i*sliceStride, 1); diff --git a/test/Function1D_Test.cpp b/test/Function1D_Test.cpp index b17682e..f058fb3 100644 --- a/test/Function1D_Test.cpp +++ b/test/Function1D_Test.cpp @@ -426,8 +426,8 @@ TEST_F(Function1D_Test, horzcat) { result = Aurora::horzcat(matrix1,matrix2); EXPECT_FLOAT_EQ(result.getData()[0],1); EXPECT_FLOAT_EQ(result.getData()[1],2); - EXPECT_FLOAT_EQ(result.getData()[8],5); - EXPECT_FLOAT_EQ(result.getData()[9],6); + EXPECT_FLOAT_EQ(result.getData()[8],9); + EXPECT_FLOAT_EQ(result.getData()[9],10); EXPECT_FLOAT_EQ(result.getDimSize(0),3); EXPECT_FLOAT_EQ(result.getDimSize(1),2);