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