diff options
author | David Tellenbach <david.tellenbach@me.com> | 2020-10-14 01:56:42 +0000 |
---|---|---|
committer | David Tellenbach <david.tellenbach@me.com> | 2020-10-14 01:56:42 +0000 |
commit | e3e2cf9d243e9dc59531240690e66c89f49d418e (patch) | |
tree | 71af97e7e7f9e350fb643588404d35e158ab1888 | |
parent | 61fc78bbda22f425a97761be57c219928d929ddc (diff) |
Add MatrixBase::cwiseArg()
-rw-r--r-- | Eigen/src/Core/GlobalFunctions.h | 2 | ||||
-rw-r--r-- | Eigen/src/plugins/MatrixCwiseUnaryOps.h | 10 | ||||
-rw-r--r-- | doc/CoeffwiseMathFunctionsTable.dox | 14 | ||||
-rw-r--r-- | doc/snippets/MatrixBase_cwiseArg.cpp | 3 |
4 files changed, 28 insertions, 1 deletions
diff --git a/Eigen/src/Core/GlobalFunctions.h b/Eigen/src/Core/GlobalFunctions.h index 8d54f92df..0a539ed8e 100644 --- a/Eigen/src/Core/GlobalFunctions.h +++ b/Eigen/src/Core/GlobalFunctions.h @@ -84,7 +84,7 @@ namespace Eigen EIGEN_ARRAY_DECLARE_GLOBAL_UNARY(log10,scalar_log10_op,base 10 logarithm,\sa Eigen::log DOXCOMMA ArrayBase::log) EIGEN_ARRAY_DECLARE_GLOBAL_UNARY(abs,scalar_abs_op,absolute value,\sa ArrayBase::abs DOXCOMMA MatrixBase::cwiseAbs) EIGEN_ARRAY_DECLARE_GLOBAL_UNARY(abs2,scalar_abs2_op,squared absolute value,\sa ArrayBase::abs2 DOXCOMMA MatrixBase::cwiseAbs2) - EIGEN_ARRAY_DECLARE_GLOBAL_UNARY(arg,scalar_arg_op,complex argument,\sa ArrayBase::arg) + EIGEN_ARRAY_DECLARE_GLOBAL_UNARY(arg,scalar_arg_op,complex argument,\sa ArrayBase::arg DOXCOMMA MatrixBase::cwiseArg) EIGEN_ARRAY_DECLARE_GLOBAL_UNARY(sqrt,scalar_sqrt_op,square root,\sa ArrayBase::sqrt DOXCOMMA MatrixBase::cwiseSqrt) EIGEN_ARRAY_DECLARE_GLOBAL_UNARY(rsqrt,scalar_rsqrt_op,reciprocal square root,\sa ArrayBase::rsqrt) EIGEN_ARRAY_DECLARE_GLOBAL_UNARY(square,scalar_square_op,square (power 2),\sa Eigen::abs2 DOXCOMMA Eigen::pow DOXCOMMA ArrayBase::square) diff --git a/Eigen/src/plugins/MatrixCwiseUnaryOps.h b/Eigen/src/plugins/MatrixCwiseUnaryOps.h index b1be3d566..0514d8f78 100644 --- a/Eigen/src/plugins/MatrixCwiseUnaryOps.h +++ b/Eigen/src/plugins/MatrixCwiseUnaryOps.h @@ -14,6 +14,7 @@ typedef CwiseUnaryOp<internal::scalar_abs_op<Scalar>, const Derived> CwiseAbsReturnType; typedef CwiseUnaryOp<internal::scalar_abs2_op<Scalar>, const Derived> CwiseAbs2ReturnType; +typedef CwiseUnaryOp<internal::scalar_arg_op<Scalar>, const Derived> CwiseArgReturnType; typedef CwiseUnaryOp<internal::scalar_sqrt_op<Scalar>, const Derived> CwiseSqrtReturnType; typedef CwiseUnaryOp<internal::scalar_sign_op<Scalar>, const Derived> CwiseSignReturnType; typedef CwiseUnaryOp<internal::scalar_inverse_op<Scalar>, const Derived> CwiseInverseReturnType; @@ -82,4 +83,13 @@ EIGEN_DEVICE_FUNC inline const CwiseInverseReturnType cwiseInverse() const { return CwiseInverseReturnType(derived()); } +/// \returns an expression of the coefficient-wise phase angle of \c *this +/// +/// Example: \include MatrixBase_cwiseArg.cpp +/// Output: \verbinclude MatrixBase_cwiseArg.out +/// +EIGEN_DOC_UNARY_ADDONS(cwiseArg,arg) +EIGEN_DEVICE_FUNC +inline const CwiseArgReturnType +cwiseArg() const { return CwiseArgReturnType(derived()); } diff --git a/doc/CoeffwiseMathFunctionsTable.dox b/doc/CoeffwiseMathFunctionsTable.dox index d6ad06f3a..3f5c56446 100644 --- a/doc/CoeffwiseMathFunctionsTable.dox +++ b/doc/CoeffwiseMathFunctionsTable.dox @@ -74,6 +74,20 @@ This also means that, unless specified, if the function \c std::foo is available <td>All engines (fc,fd)</td> </tr> <tr> + <td class="code"> + \anchor cwisetable_arg + a.\link ArrayBase::arg arg\endlink(); \n + \link Eigen::arg arg\endlink(a); \n + m.\link MatrixBase::cwiseArg cwiseArg\endlink(); + </td> + <td>phase angle of complex number</td> + <td class="code"> + using <a href="http://en.cppreference.com/w/cpp/numeric/complex/arg">std::arg</a>; \n + arg(a[i]); + </td> + <td>All engines (fc,fd)</td> +</tr> +<tr> <th colspan="4">Exponential functions</th> </tr> <tr> diff --git a/doc/snippets/MatrixBase_cwiseArg.cpp b/doc/snippets/MatrixBase_cwiseArg.cpp new file mode 100644 index 000000000..e0857cf97 --- /dev/null +++ b/doc/snippets/MatrixBase_cwiseArg.cpp @@ -0,0 +1,3 @@ +MatrixXcf v = MatrixXcf::Random(2, 3); +cout << v << endl << endl; +cout << v.cwiseArg() << endl;
\ No newline at end of file |