Add conj and conj's unittest.

This commit is contained in:
sunwen
2023-04-24 13:05:44 +08:00
parent ba15a2a7be
commit 99b8d81210
3 changed files with 38 additions and 1 deletions

View File

@@ -403,3 +403,15 @@ Matrix Aurora::acosd(const Matrix& aMatrix)
}
return Matrix::New(resultData, aMatrix);
}
Matrix Aurora::conj(const Matrix& aMatrix)
{
if(!aMatrix.isComplex())
{
return Matrix::copyFromRawData(aMatrix.getData(),aMatrix.getDimSize(0),aMatrix.getDimSize(1),aMatrix.getDimSize(2));
}
size_t size = aMatrix.getDataSize();
double* data = malloc(size,true);
vzConj(size,(MKL_Complex16*)aMatrix.getData(), (MKL_Complex16*)data);
return Matrix::New(data, aMatrix);
}

View File

@@ -57,6 +57,8 @@ namespace Aurora {
Matrix acosd(const Matrix& aMatrix);
Matrix conj(const Matrix& aMatrix);
/**
* 多项式计算
* @brief 例如p[1 0 1],x[3 2 5],代表对多项式 y = x^2 + 1 求(x=3, x=2, x=5)时所有的y

View File

@@ -260,8 +260,31 @@ TEST_F(Function1D_Test, acosd) {
double *data = new double[3]{0.02,0.83,0.4,};
auto matrix = Aurora::Matrix::fromRawData(data, 3);
auto result = Aurora::acosd(matrix);
result.printf();
EXPECT_DOUBLE_AE(result.getData()[0],88.854);
EXPECT_DOUBLE_AE(result.getData()[1],33.9013);
EXPECT_DOUBLE_AE(result.getData()[2],66.4218);
}
TEST_F(Function1D_Test, conj) {
double *data = new double[6]{0.02,1,0.83,-1,0.4,2};
auto matrix = Aurora::Matrix::fromRawData(data, 3,1,1,Aurora::Complex);
auto result = Aurora::conj(matrix);
EXPECT_DOUBLE_AE(result.getData()[0],0.02);
EXPECT_DOUBLE_AE(result.getData()[1],-1);
EXPECT_DOUBLE_AE(result.getData()[2],0.83);
EXPECT_DOUBLE_AE(result.getData()[3],1);
EXPECT_DOUBLE_AE(result.getData()[4],0.4);
EXPECT_DOUBLE_AE(result.getData()[5],-2);
EXPECT_DOUBLE_AE((double)result.getValueType(), (double)Aurora::Complex);
data = new double[6]{0.02,1,0.83,-1,0.4,2};
matrix = Aurora::Matrix::fromRawData(data, 6,1,1);
result = Aurora::conj(matrix);
EXPECT_DOUBLE_AE(result.getData()[0],0.02);
EXPECT_DOUBLE_AE(result.getData()[1],1);
EXPECT_DOUBLE_AE(result.getData()[2],0.83);
EXPECT_DOUBLE_AE(result.getData()[3],-1);
EXPECT_DOUBLE_AE(result.getData()[4],0.4);
EXPECT_DOUBLE_AE(result.getData()[5],2);
EXPECT_DOUBLE_AE((double)result.getValueType(), (double)Aurora::Normal);
}