Add mean and mean's unit test.

This commit is contained in:
Krad
2023-04-24 15:24:23 +08:00
parent 2855d5c9a0
commit a895785319
3 changed files with 219 additions and 18 deletions

View File

@@ -74,7 +74,7 @@ TEST_F(Function2D_Test, std){
TEST_F(Function2D_Test, min) {
double *dataA = new double[3]{1, 2, 3};
double *dataB = new double[9]{2, 3, 3, 2, 2, 1, 3, 3, 3};
double *dataB = new double[9]{2, 3, 3, 2, 2, -1, 3, 3, 3};
double *dataC = new double[1]{1.5};
auto A = Aurora::Matrix::fromRawData(dataA, 3, 1);
auto B = Aurora::Matrix::fromRawData(dataB, 3, 3);
@@ -84,18 +84,18 @@ TEST_F(Function2D_Test, min) {
EXPECT_EQ(1, ret.getDimSize(0));
EXPECT_EQ(3, ret.getDimSize(1));
EXPECT_DOUBLE_EQ(2, ret.getData()[0]);
EXPECT_DOUBLE_EQ(1, ret.getData()[1]);
EXPECT_DOUBLE_EQ(-1, ret.getData()[1]);
EXPECT_DOUBLE_EQ(3, ret.getData()[2]);
ret = Aurora::min(B, Aurora::All);
EXPECT_DOUBLE_EQ(1, ret.getDataSize());
EXPECT_DOUBLE_EQ(1, ret.getData()[0]);
EXPECT_DOUBLE_EQ(-1, ret.getData()[0]);
ret = Aurora::min(B, Aurora::Row);
EXPECT_DOUBLE_EQ(3, ret.getDataSize());
EXPECT_EQ(3, ret.getDimSize(0));
EXPECT_EQ(1, ret.getDimSize(1));
EXPECT_DOUBLE_EQ(2, ret.getData()[0]);
EXPECT_DOUBLE_EQ(2, ret.getData()[1]);
EXPECT_DOUBLE_EQ(1, ret.getData()[2]);
EXPECT_DOUBLE_EQ(-1, ret.getData()[2]);
ret = Aurora::min(A, C);
EXPECT_DOUBLE_EQ(3, ret.getDataSize());
EXPECT_DOUBLE_EQ(1, ret.getData()[0]);
@@ -132,24 +132,104 @@ TEST_F(Function2D_Test, max) {
}
TEST_F(Function2D_Test, sum) {
double *dataB = new double[9]{2, 3, 3, 2, 2, 1, 3, 3, 3};
double *dataB = new double[9]{2, 3, 3, 2, 2, 1, 3, 3, -3};
auto B = Aurora::Matrix::fromRawData(dataB, 3, 3);
Aurora::Matrix ret = Aurora::sum(B);
EXPECT_EQ(1, ret.getDimSize(0));
EXPECT_EQ(3, ret.getDimSize(1));
EXPECT_DOUBLE_EQ(8, ret.getData()[0]);
EXPECT_DOUBLE_EQ(5, ret.getData()[1]);
EXPECT_DOUBLE_EQ(9, ret.getData()[2]);
EXPECT_DOUBLE_EQ(3, ret.getData()[2]);
ret = Aurora::sum(B, Aurora::All);
EXPECT_DOUBLE_EQ(1, ret.getDataSize());
EXPECT_DOUBLE_EQ(22, ret.getData()[0]);
EXPECT_DOUBLE_EQ(16, ret.getData()[0]);
ret = Aurora::sum(B, Aurora::Row);
EXPECT_DOUBLE_EQ(3, ret.getDataSize());
EXPECT_EQ(3, ret.getDimSize(0));
EXPECT_EQ(1, ret.getDimSize(1));
EXPECT_DOUBLE_EQ(7, ret.getData()[0]);
EXPECT_DOUBLE_EQ(8, ret.getData()[1]);
EXPECT_DOUBLE_EQ(7, ret.getData()[2]);
EXPECT_DOUBLE_EQ(1, ret.getData()[2]);
}
TEST_F(Function2D_Test, mean) {
{
double *dataB = new double[16]{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};
auto B = Aurora::Matrix::fromRawData(dataB, 4, 4);
auto r = Aurora::mean(B, Aurora::All);
EXPECT_EQ(1, r.getDimSize(0));
EXPECT_EQ(1, r.getDimSize(1));
EXPECT_DOUBLE_EQ(7.9625, fourDecimalRound(r.getData()[0]));
r = Aurora::mean(B);
EXPECT_EQ(1, r.getDimSize(0));
EXPECT_EQ(4, r.getDimSize(1));
EXPECT_DOUBLE_EQ(3.4250, fourDecimalRound(r.getData()[0]));
EXPECT_DOUBLE_EQ(6.8750, fourDecimalRound(r.getData()[1]));
EXPECT_DOUBLE_EQ(9.0750, fourDecimalRound(r.getData()[2]));
EXPECT_DOUBLE_EQ(12.4750, fourDecimalRound(r.getData()[3]));
r = Aurora::mean(B, Aurora::Row);
EXPECT_EQ(4, r.getDimSize(0));
EXPECT_EQ(1, r.getDimSize(1));
EXPECT_DOUBLE_EQ(7.5750, fourDecimalRound(r.getData()[0]));
EXPECT_DOUBLE_EQ(7.4750, fourDecimalRound(r.getData()[1]));
EXPECT_DOUBLE_EQ(11.7250, fourDecimalRound(r.getData()[2]));
EXPECT_DOUBLE_EQ(5.0750, fourDecimalRound(r.getData()[3]));
}
//with nan
{
double tnan = std::nan("");
double *dataB = new double[16]{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,tnan , -7.7};
auto B = Aurora::Matrix::fromRawData(dataB, 4, 4);
auto r = Aurora::mean(B, Aurora::All);
EXPECT_EQ(1, r.getDimSize(0));
EXPECT_EQ(1, r.getDimSize(1));
EXPECT_TRUE(std::isnan(r.getData()[0]));
r = Aurora::mean(B);
EXPECT_EQ(1, r.getDimSize(0));
EXPECT_EQ(4, r.getDimSize(1));
EXPECT_DOUBLE_EQ(3.4250, fourDecimalRound(r.getData()[0]));
EXPECT_DOUBLE_EQ(6.8750, fourDecimalRound(r.getData()[1]));
EXPECT_DOUBLE_EQ(9.0750, fourDecimalRound(r.getData()[2]));
EXPECT_TRUE(std::isnan(r.getData()[3]));
r = Aurora::mean(B, Aurora::Row);
EXPECT_EQ(4, r.getDimSize(0));
EXPECT_EQ(1, r.getDimSize(1));
EXPECT_DOUBLE_EQ(7.5750, fourDecimalRound(r.getData()[0]));
EXPECT_DOUBLE_EQ(7.4750, fourDecimalRound(r.getData()[1]));
EXPECT_TRUE(std::isnan(r.getData()[2]));
EXPECT_DOUBLE_EQ(5.0750, fourDecimalRound(r.getData()[3]));
r = Aurora::mean(B, Aurora::All,false);
EXPECT_EQ(1, r.getDimSize(0));
EXPECT_EQ(1, r.getDimSize(1));
EXPECT_DOUBLE_EQ(6.7267, fourDecimalRound(r.getData()[0]));
r = Aurora::mean(B, Aurora::Column, false);
EXPECT_EQ(1, r.getDimSize(0));
EXPECT_EQ(4, r.getDimSize(1));
EXPECT_DOUBLE_EQ(3.4250, fourDecimalRound(r.getData()[0]));
EXPECT_DOUBLE_EQ(6.8750, fourDecimalRound(r.getData()[1]));
EXPECT_DOUBLE_EQ(9.0750, fourDecimalRound(r.getData()[2]));
EXPECT_DOUBLE_EQ(7.8, fourDecimalRound(r.getData()[3]));
r = Aurora::mean(B, Aurora::Row, false);
EXPECT_EQ(4, r.getDimSize(0));
EXPECT_EQ(1, r.getDimSize(1));
EXPECT_DOUBLE_EQ(7.5750, fourDecimalRound(r.getData()[0]));
EXPECT_DOUBLE_EQ(7.4750, fourDecimalRound(r.getData()[1]));
EXPECT_DOUBLE_EQ(6.8, fourDecimalRound(r.getData()[2]));
EXPECT_DOUBLE_EQ(5.0750, fourDecimalRound(r.getData()[3]));
}
}
TEST_F(Function2D_Test, fftAndComplexAndIfft){