Add conj and conj's unittest.
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user