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;
|
data[i] /= temp;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
return Matrix::New(data, aMatrix);
|
||||||
return Aurora::Matrix(std::shared_ptr<double>(data,Aurora::free),std::vector<int>{aMatrix.getDimSize(0),aMatrix.getDimSize(1),aMatrix.getDimSize(2)});
|
}
|
||||||
|
|
||||||
|
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 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
|
* @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];
|
double value = getData()[(k*getDimSize(1)*getDimSize(0)+j*getDimSize(0)+i)*complexstep+1];
|
||||||
if(value<0)
|
if(value<0)
|
||||||
{
|
{
|
||||||
mark = "-";
|
mark = "";
|
||||||
}
|
}
|
||||||
::printf("%s%f2i",mark,value);
|
::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()[1],0.6021);
|
||||||
EXPECT_DOUBLE_AE(result.getData()[2],0.7782);
|
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