Add union and union's unittest.
This commit is contained in:
@@ -550,3 +550,25 @@ Matrix Aurora::linspace(double aStart, double aEnd, int aNum)
|
|||||||
|
|
||||||
return Matrix::New(resultData,aNum);
|
return Matrix::New(resultData,aNum);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Matrix Aurora::auroraUnion(const Matrix& aMatrix1, const Matrix& aMatrix2)
|
||||||
|
{
|
||||||
|
if(aMatrix1.isNull() || aMatrix2.isNull() || aMatrix1.getValueType() == Complex || aMatrix2.getValueType() == Complex)
|
||||||
|
{
|
||||||
|
return Matrix();
|
||||||
|
}
|
||||||
|
|
||||||
|
size_t size1= aMatrix1.getDataSize();
|
||||||
|
size_t size2= aMatrix2.getDataSize();
|
||||||
|
double* resultData = Aurora::malloc(size1 + size2);
|
||||||
|
cblas_dcopy(size1, aMatrix1.getData(), 1, resultData, 1);
|
||||||
|
cblas_dcopy(size2, aMatrix2.getData(), 1, resultData + size1, 1);
|
||||||
|
std::vector<double> vector(resultData, resultData + size1 + size2);
|
||||||
|
Aurora::free(resultData);
|
||||||
|
std::sort(vector.begin(), vector.end());
|
||||||
|
auto last = std::unique(vector.begin(), vector.end());
|
||||||
|
vector.erase(last, vector.end());
|
||||||
|
|
||||||
|
return Matrix::copyFromRawData(vector.data(),vector.size());
|
||||||
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -74,6 +74,8 @@ namespace Aurora {
|
|||||||
|
|
||||||
Matrix linspace(double aStart, double aEnd, int aNum);
|
Matrix linspace(double aStart, double aEnd, int aNum);
|
||||||
|
|
||||||
|
Matrix auroraUnion(const Matrix& aMatrix1, const Matrix& aMatrix2);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 多项式计算
|
* 多项式计算
|
||||||
* @brief 例如p[1 0 1],x[3 2 5],代表对多项式 y = x^2 + 1 求(x=3, x=2, x=5)时所有的y
|
* @brief 例如p[1 0 1],x[3 2 5],代表对多项式 y = x^2 + 1 求(x=3, x=2, x=5)时所有的y
|
||||||
|
|||||||
@@ -439,3 +439,19 @@ TEST_F(Function1D_Test, linspace) {
|
|||||||
EXPECT_DOUBLE_AE(result.getData()[5], 3.3333);
|
EXPECT_DOUBLE_AE(result.getData()[5], 3.3333);
|
||||||
EXPECT_DOUBLE_AE(result.getData()[6], 5.0000);
|
EXPECT_DOUBLE_AE(result.getData()[6], 5.0000);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST_F(Function1D_Test, auroraUnion) {
|
||||||
|
double* data1 = new double[9]{3,3,2,2,2,1,4,4,7};
|
||||||
|
auto matrix1 = Aurora::Matrix::fromRawData(data1, 9,1,1);
|
||||||
|
double* data2 = new double[8]{6,6,7,7,8,1,2};
|
||||||
|
auto matrix2 = Aurora::Matrix::fromRawData(data2, 7,1,1);
|
||||||
|
|
||||||
|
auto result = Aurora::auroraUnion(matrix1, matrix2);
|
||||||
|
EXPECT_DOUBLE_AE(result.getData()[0],1);
|
||||||
|
EXPECT_DOUBLE_AE(result.getData()[1],2);
|
||||||
|
EXPECT_DOUBLE_AE(result.getData()[2],3);
|
||||||
|
EXPECT_DOUBLE_AE(result.getData()[3],4);
|
||||||
|
EXPECT_DOUBLE_AE(result.getData()[4],6);
|
||||||
|
EXPECT_DOUBLE_AE(result.getData()[5],7);
|
||||||
|
EXPECT_DOUBLE_AE(result.getData()[6],8);
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user