Add sort, sortrows, median and their unit test.

This commit is contained in:
Krad
2023-04-25 09:41:40 +08:00
parent 37ffe9b51b
commit 55d27f25d7
3 changed files with 164 additions and 1 deletions

View File

@@ -245,6 +245,71 @@ TEST_F(Function2D_Test, mean) {
}
}
TEST_F(Function2D_Test, sort) {
double *dataB = new double[16]{1.1, 2.6, 6.2, 3.8,
4.3, 10.6, 5.7, 6.9,
7.1, 8.3, 9.7, 11.2,
17.8, 13.3,7 , -7.7};
auto B = Aurora::Matrix::fromRawData(dataB, 4, 4);
auto ret = Aurora::sort(B);
EXPECT_EQ(4, ret.getDimSize(0));
EXPECT_EQ(4, ret.getDimSize(1));
EXPECT_DOUBLE_EQ(3.8, ret.getData()[2]);
EXPECT_DOUBLE_EQ(5.7, ret.getData()[5]);
EXPECT_DOUBLE_EQ(-7.7, ret.getData()[12]);
ret = Aurora::sort(B*5);
EXPECT_EQ(4, ret.getDimSize(0));
EXPECT_EQ(4, ret.getDimSize(1));
EXPECT_DOUBLE_EQ(19, ret.getData()[2]);
EXPECT_DOUBLE_EQ(28.5, ret.getData()[5]);
EXPECT_DOUBLE_EQ(-38.5, ret.getData()[12]);
//big sort 10w以上多线程快
double * dataA = Aurora::random(1000000*4);
auto A = Aurora::Matrix::New(dataA, 1000000, 4);
ret = Aurora::sort(A);
}
TEST_F(Function2D_Test, sortrows) {
double *dataB = new double[16]{1.1, 2.6, 6.2, 3.8,
4.3, 10.6, 5.7, 6.9,
7.1, 8.3, 9.7, 11.2,
17.8, 13.3,7 , -7.7};
auto B = Aurora::Matrix::fromRawData(dataB, 4, 4);
auto ret = Aurora::sortrows(B);
EXPECT_EQ(4, ret.getDimSize(0));
EXPECT_EQ(4, ret.getDimSize(1));
EXPECT_DOUBLE_EQ(5.7, ret.getData()[2]);
EXPECT_DOUBLE_EQ(8.3, ret.getData()[5]);
EXPECT_DOUBLE_EQ(17.8, ret.getData()[12]);
ret = Aurora::sortrows(B*5);
EXPECT_EQ(4, ret.getDimSize(0));
EXPECT_EQ(4, ret.getDimSize(1));
EXPECT_DOUBLE_EQ(28.5, ret.getData()[2]);
EXPECT_DOUBLE_EQ(41.5, ret.getData()[5]);
EXPECT_DOUBLE_EQ(89, ret.getData()[12]);
//big sort 10w以上多线程快
double * dataA = Aurora::random(1000000*4);
auto A = Aurora::Matrix::New(dataA, 4, 1000000);
ret = Aurora::sortrows(A);
}
TEST_F(Function2D_Test, median) {
double *dataB = new double[20]{1.1, 2.6, 3.8, 6.2,
4.3, 5.7, 6.9, 10.6,
7.1, 8.3, 9.7, 11.2,
17.8, 13.3,26.5 , -7.7,
9.9, 8.2, 6.3, 5.1};
auto B = Aurora::Matrix::fromRawData(dataB, 4, 5);
auto ret = Aurora::median(B);
EXPECT_EQ(1, ret.getDimSize(0));
EXPECT_EQ(5, ret.getDimSize(1));
EXPECT_DOUBLE_EQ(3.2, ret.getData()[0]);
EXPECT_DOUBLE_EQ(6.3, ret.getData()[1]);
EXPECT_DOUBLE_EQ(9, ret.getData()[2]);
EXPECT_DOUBLE_EQ(15.55, ret.getData()[3]);
EXPECT_DOUBLE_EQ(7.25, ret.getData()[4]);
}
TEST_F(Function2D_Test, fftAndComplexAndIfft){
// double input[10]{1,1,0,2,2,0,1,1,0,2};
// std::complex<double>* complexInput = Aurora::complex(10,input);