Add exp and exp's unittest.

This commit is contained in:
sunwen
2023-04-23 15:47:29 +08:00
parent 3833040672
commit 9212115e47
4 changed files with 39 additions and 3 deletions

View File

@@ -333,6 +333,22 @@ Matrix Aurora::log(const Matrix& aMatrix, int aBaseNum)
data[i] /= temp;
}
}
return Aurora::Matrix(std::shared_ptr<double>(data,Aurora::free),std::vector<int>{aMatrix.getDimSize(0),aMatrix.getDimSize(1),aMatrix.getDimSize(2)});
return Matrix::New(data, aMatrix);
}
Matrix Aurora::exp(const Matrix& aMatrix)
{
size_t size = aMatrix.getDataSize();
double* data;
if (aMatrix.isComplex())
{
data = Aurora::malloc(size, true);
vzExp(size, (MKL_Complex16*)aMatrix.getData(), (MKL_Complex16*)data);
}
else
{
data = Aurora::malloc(size);
vdExp(size, aMatrix.getData(), data);
}
return Matrix::New(data, aMatrix);
}

View File

@@ -49,6 +49,8 @@ namespace Aurora {
Matrix log(const Matrix& aMatrix, int aBaseNum = -1);
Matrix exp(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

@@ -448,7 +448,7 @@ namespace Aurora {
double value = getData()[(k*getDimSize(1)*getDimSize(0)+j*getDimSize(0)+i)*complexstep+1];
if(value<0)
{
mark = "-";
mark = "";
}
::printf("%s%f2i",mark,value);
}

View File

@@ -222,3 +222,21 @@ TEST_F(Function1D_Test, log) {
EXPECT_DOUBLE_AE(result.getData()[1],0.6021);
EXPECT_DOUBLE_AE(result.getData()[2],0.7782);
}
TEST_F(Function1D_Test, exp) {
double *data1 = new double[4]{1,2,3,4};
auto matrix1 = Aurora::Matrix::fromRawData(data1, 4,1,1);
auto result = Aurora::exp(matrix1);
EXPECT_DOUBLE_AE(result.getData()[0],2.7183);
EXPECT_DOUBLE_AE(result.getData()[1],7.3891);
EXPECT_DOUBLE_AE(result.getData()[2],20.0855);
EXPECT_DOUBLE_AE(result.getData()[3],54.5982);
double *data2 = new double[4]{1,2,3,4};
auto matrix2 = Aurora::Matrix::fromRawData(data2, 2,1,1,Aurora::Complex);
result = Aurora::exp(matrix2);
EXPECT_DOUBLE_AE(result.getData()[0],-1.1312);
EXPECT_DOUBLE_AE(result.getData()[1],2.4717);
EXPECT_DOUBLE_AE(result.getData()[2],-13.1288);
EXPECT_DOUBLE_AE(result.getData()[3],-15.2008);
}