Add union and union's unittest.

This commit is contained in:
sunwen
2023-04-26 15:57:29 +08:00
parent b4423b756e
commit 9a3ec2805e
3 changed files with 40 additions and 0 deletions

View File

@@ -550,3 +550,25 @@ Matrix Aurora::linspace(double aStart, double aEnd, int 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());
}

View File

@@ -74,6 +74,8 @@ namespace Aurora {
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