mirror of
https://gitlab.com/libeigen/eigen.git
synced 2026-04-10 11:34:33 +08:00
Fix all the doxygen warnings.
This commit is contained in:
@@ -16,7 +16,7 @@
|
||||
|
||||
#include "src/util/CXX11Meta.h"
|
||||
|
||||
/** \defgroup CXX11_TensorSymmetry_Module Tensor Symmetry Module
|
||||
/** \defgroup TensorSymmetry_Module Tensor Symmetry Module
|
||||
*
|
||||
* This module provides a classes that allow for the definition of
|
||||
* symmetries w.r.t. tensor indices.
|
||||
|
||||
@@ -8,7 +8,6 @@ but more complex types such as strings are also supported.
|
||||
You can manipulate a tensor with one of the following classes. They all are in
|
||||
the namespace `::Eigen.`
|
||||
|
||||
|
||||
### Class Tensor<data_type, rank>
|
||||
|
||||
This is the class to use to create a tensor and allocate memory for it. The
|
||||
@@ -90,7 +89,7 @@ See Assigning to a `TensorRef` below.
|
||||
|
||||
## Accessing Tensor Elements
|
||||
|
||||
#### <data_type> tensor(index0, index1...)
|
||||
#### data_type tensor(index0, index1...)
|
||||
|
||||
Return the element at position `(index0, index1...)` in tensor
|
||||
`tensor`. You must pass as many parameters as the rank of `tensor`.
|
||||
|
||||
@@ -428,7 +428,7 @@ struct ThreadProperties {
|
||||
* \tparam input_mapper_properties : determine if the input tensors are matrix. If they are matrix, special memory
|
||||
access is used to guarantee that always the memory access are coalesced.
|
||||
*
|
||||
* \tptaram IsFinal : determine if this is the final kernel. If so, the result will be written in a final output.
|
||||
* \tparam IsFinal : determine if this is the final kernel. If so, the result will be written in a final output.
|
||||
Otherwise, the result of contraction will be written iin a temporary buffer. This is the case when Tall/Skinny
|
||||
contraction is used. So in this case, a final reduction step is required to compute final output.
|
||||
|
||||
|
||||
@@ -261,7 +261,7 @@ struct TensorEvaluator<const TensorFFTOp<FFT, ArgType, FFTResultType, FFTDir>, D
|
||||
// pos_j_base_powered[0] = ComplexScalar(1, 0);
|
||||
// if (line_len > 1) {
|
||||
// const ComplexScalar pos_j_base = ComplexScalar(
|
||||
// numext::cos(M_PI / line_len), numext::sin(M_PI / line_len));
|
||||
// numext::cos(EIGEN_PI / line_len), numext::sin(EIGEN_PI / line_len));
|
||||
// pos_j_base_powered[1] = pos_j_base;
|
||||
// if (line_len > 2) {
|
||||
// const ComplexScalar pos_j_base_sq = pos_j_base * pos_j_base;
|
||||
@@ -511,8 +511,8 @@ struct TensorEvaluator<const TensorFFTOp<FFT, ArgType, FFTResultType, FFTDir>, D
|
||||
template <int Dir>
|
||||
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void butterfly_1D_merge(ComplexScalar* data, Index n, Index n_power_of_2) {
|
||||
// Original code:
|
||||
// RealScalar wtemp = std::sin(M_PI/n);
|
||||
// RealScalar wpi = -std::sin(2 * M_PI/n);
|
||||
// RealScalar wtemp = std::sin(EIGEN_PI/n);
|
||||
// RealScalar wpi = -std::sin(2 * EIGEN_PI/n);
|
||||
const RealScalar wtemp = m_sin_PI_div_n_LUT[n_power_of_2];
|
||||
const RealScalar wpi =
|
||||
(Dir == FFT_FORWARD) ? m_minus_sin_2_PI_div_n_LUT[n_power_of_2] : -m_minus_sin_2_PI_div_n_LUT[n_power_of_2];
|
||||
@@ -600,7 +600,7 @@ struct TensorEvaluator<const TensorFFTOp<FFT, ArgType, FFTResultType, FFTDir>, D
|
||||
const Device EIGEN_DEVICE_REF m_device;
|
||||
|
||||
// This will support a maximum FFT size of 2^32 for each dimension
|
||||
// m_sin_PI_div_n_LUT[i] = (-2) * std::sin(M_PI / std::pow(2,i)) ^ 2;
|
||||
// m_sin_PI_div_n_LUT[i] = (-2) * std::sin(EIGEN_PI / std::pow(2,i)) ^ 2;
|
||||
const RealScalar m_sin_PI_div_n_LUT[32] = {RealScalar(0.0),
|
||||
RealScalar(-2),
|
||||
RealScalar(-0.999999999999999),
|
||||
@@ -634,7 +634,7 @@ struct TensorEvaluator<const TensorFFTOp<FFT, ArgType, FFTResultType, FFTDir>, D
|
||||
RealScalar(-1.71210344531737e-17),
|
||||
RealScalar(-4.28025861329343e-18)};
|
||||
|
||||
// m_minus_sin_2_PI_div_n_LUT[i] = -std::sin(2 * M_PI / std::pow(2,i));
|
||||
// m_minus_sin_2_PI_div_n_LUT[i] = -std::sin(2 * EIGEN_PI / std::pow(2,i));
|
||||
const RealScalar m_minus_sin_2_PI_div_n_LUT[32] = {RealScalar(0.0),
|
||||
RealScalar(0.0),
|
||||
RealScalar(-1.00000000000000e+00),
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
#include "../../Eigen/Householder"
|
||||
|
||||
/**
|
||||
* \defgroup IterativeLinearSolvers_Module Iterative Solvers module
|
||||
* \defgroup IterativeLinearSolvers_Module IterativeLinearSolvers module
|
||||
* This module aims to provide various iterative linear and non linear solver algorithms.
|
||||
* It currently provides:
|
||||
* - a Householder GMRES implementation
|
||||
@@ -26,40 +26,48 @@
|
||||
* - a IDRSTABL implementation
|
||||
*
|
||||
* Choosing the best solver for solving \c A \c x = \c b depends a lot on the preconditioner chosen as well as the
|
||||
*properties of \c A. The following flowchart might help you. \dot width=50% digraph g { node [ fontname=Arial,
|
||||
*fontsize=11]; edge [ fontname=Helvetica, fontsize=10 ]; A1[label="hermitian",shape="box"]; A2[label="positive
|
||||
*definite",shape="box"]; CG[shape="plaintext"]; A3[label="ill conditioned",shape="box"]; A4[label="good
|
||||
*preconditioner",shape="box"]; A5[label="flexible preconditioner",shape="box"]; A6[label="strongly
|
||||
*indefinite",shape="box"]; A8[label="large imaginary eigenvalue",shape="box"]; A7[label="large imaginary
|
||||
*eigenvalue",shape="box"];
|
||||
*properties of \c A. The following flowchart might help you.
|
||||
* \dot width=50%
|
||||
* digraph g {
|
||||
* node [ fontname=Arial, fontsize=11];
|
||||
* edge [ fontname=Helvetica, fontsize=10 ];
|
||||
* A1[label="hermitian", shape="box"];
|
||||
* A2[label="positive definite", shape="box"];
|
||||
* CG[shape="plaintext"];
|
||||
* A3[label="ill conditioned", shape="box"];
|
||||
* A4[label="good preconditioner", shape="box"];
|
||||
* A5[label="flexible preconditioner", shape="box"];
|
||||
* A6[label="strongly indefinite", shape="box"];
|
||||
* A8[label="large imaginary eigenvalue", shape="box"];
|
||||
* A7[label="large imaginary eigenvalue",shape="box"];
|
||||
*
|
||||
* SYMMLQ[shape="plaintext"];
|
||||
* MINRES[shape="plaintext"];
|
||||
* GCR[shape="plaintext"];
|
||||
* GMRES[shape="plaintext"];
|
||||
* IDRSTABL[shape="plaintext"];
|
||||
* IDRS[shape="plaintext"];
|
||||
* BICGSTABL[shape="plaintext"];
|
||||
* BICGSTAB[shape="plaintext"];
|
||||
* SYMMLQ[shape="plaintext"];
|
||||
* MINRES[shape="plaintext"];
|
||||
* GCR[shape="plaintext"];
|
||||
* GMRES[shape="plaintext"];
|
||||
* IDRSTABL[shape="plaintext"];
|
||||
* IDRS[shape="plaintext"];
|
||||
* BICGSTABL[shape="plaintext"];
|
||||
* BICGSTAB[shape="plaintext"];
|
||||
*
|
||||
* A1 -> A2 [label="yes"];
|
||||
* A2 -> CG [label="yes"];
|
||||
* A2 -> A3 [label="no"];
|
||||
* A3 -> SYMMLQ [label="yes"];
|
||||
* A3 -> MINRES [label="no"];
|
||||
* A1 -> A2 [label="yes"];
|
||||
* A2 -> CG [label="yes"];
|
||||
* A2 -> A3 [label="no"];
|
||||
* A3 -> SYMMLQ [label="yes"];
|
||||
* A3 -> MINRES [label="no"];
|
||||
*
|
||||
* A1 -> A4 [label="no"];
|
||||
* A4 -> A5 [label="yes"];
|
||||
* A5 -> GCR [label="yes"];
|
||||
* A5 -> GMRES [label="no"];
|
||||
* A1 -> A4 [label="no"];
|
||||
* A4 -> A5 [label="yes"];
|
||||
* A5 -> GCR [label="yes"];
|
||||
* A5 -> GMRES [label="no"];
|
||||
*
|
||||
* A4 -> A6 [label="no"];
|
||||
* A6 -> A8 [label="yes"];
|
||||
* A6 -> A7 [label="no"];
|
||||
* A7 -> BICGSTABL [label="yes"];
|
||||
* A7 -> BICGSTAB [label="no"];
|
||||
* A8 -> IDRSTABL [label="yes"];
|
||||
* A8 -> IDRS [label="no"];
|
||||
* A4 -> A6 [label="no"];
|
||||
* A6 -> A8 [label="yes"];
|
||||
* A6 -> A7 [label="no"];
|
||||
* A7 -> BICGSTABL [label="yes"];
|
||||
* A7 -> BICGSTAB [label="no"];
|
||||
* A8 -> IDRSTABL [label="yes"];
|
||||
* A8 -> IDRS [label="no"];
|
||||
* }
|
||||
* \enddot
|
||||
* \code
|
||||
|
||||
@@ -55,20 +55,20 @@ struct get_boxes_helper<ObjectList, VolumeList, int> {
|
||||
*
|
||||
* \param Scalar_ The underlying scalar type of the bounding boxes
|
||||
* \param Dim_ The dimension of the space in which the hierarchy lives
|
||||
* \param _Object The object type that lives in the hierarchy. It must have value semantics. Either
|
||||
* bounding_box(_Object) must be defined and return an AlignedBox<Scalar_, Dim_> or bounding boxes must be provided to
|
||||
* the tree initializer.
|
||||
* \param Object_ The object type that lives in the hierarchy. It must have value semantics. Either
|
||||
* `bounding_box(Object_)` must be defined and return an `AlignedBox<Scalar_, Dim_>` or bounding boxes
|
||||
* must be provided to the tree initializer.
|
||||
*
|
||||
* This class provides a simple (as opposed to optimized) implementation of a bounding volume hierarchy analogous to a
|
||||
* This class provides a simple (as opposed to optimized) implementation of a bounding volume hierarchy analogous to a
|
||||
* Kd-tree. Given a sequence of objects, it computes their bounding boxes, constructs a Kd-tree of their centers and
|
||||
* builds a BVH with the structure of that Kd-tree. When the elements of the tree are too expensive to be copied
|
||||
* around, it is useful for _Object to be a pointer.
|
||||
* around, it is useful for `Object_` to be a pointer.
|
||||
*/
|
||||
template <typename Scalar_, int Dim_, typename _Object>
|
||||
template <typename Scalar_, int Dim_, typename Object_>
|
||||
class KdBVH {
|
||||
public:
|
||||
enum { Dim = Dim_ };
|
||||
typedef _Object Object;
|
||||
typedef Object_ Object;
|
||||
typedef std::vector<Object, aligned_allocator<Object> > ObjectList;
|
||||
typedef Scalar_ Scalar;
|
||||
typedef AlignedBox<Scalar, Dim> Volume;
|
||||
|
||||
@@ -315,6 +315,16 @@ class EulerAngles : public RotationBase<EulerAngles<Scalar_, _System>, 3> {
|
||||
EIGEN_EULER_ANGLES_TYPEDEFS(float, f)
|
||||
EIGEN_EULER_ANGLES_TYPEDEFS(double, d)
|
||||
|
||||
// Specifically-referenced instantiations.
|
||||
/** \typedef EulerAnglesXYZd
|
||||
* \ingroup EulerAngles_Module
|
||||
* Euler XYZ system with type double entries.
|
||||
*/
|
||||
/** \typedef EulerAnglesZYZf
|
||||
* \ingroup EulerAngles_Module
|
||||
* Euler ZYZ system with type float entries.
|
||||
*/
|
||||
|
||||
namespace internal {
|
||||
template <typename Scalar_, class _System>
|
||||
struct traits<EulerAngles<Scalar_, _System> > {
|
||||
|
||||
@@ -260,10 +260,11 @@ class EulerSystem {
|
||||
friend struct internal::eulerangles_assign_impl;
|
||||
};
|
||||
|
||||
#define EIGEN_EULER_SYSTEM_TYPEDEF(A, B, C) \
|
||||
/** \ingroup EulerAngles_Module */ \
|
||||
typedef EulerSystem<EULER_##A, EULER_##B, EULER_##C> EulerSystem##A##B##C;
|
||||
#define EIGEN_EULER_SYSTEM_TYPEDEF(A, B, C) typedef EulerSystem<EULER_##A, EULER_##B, EULER_##C> EulerSystem##A##B##C;
|
||||
|
||||
/** Default XYZ Euler coordinate system.
|
||||
* \ingroup EulerAngles_Module
|
||||
*/
|
||||
EIGEN_EULER_SYSTEM_TYPEDEF(X, Y, Z)
|
||||
EIGEN_EULER_SYSTEM_TYPEDEF(X, Y, X)
|
||||
EIGEN_EULER_SYSTEM_TYPEDEF(X, Z, Y)
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
namespace Eigen {
|
||||
|
||||
/**
|
||||
* \ingroup IterativeSolvers_Module
|
||||
* \ingroup IterativeLinearSolvers_Module
|
||||
* \brief iterative scaling algorithm to equilibrate rows and column norms in matrices
|
||||
*
|
||||
* This class can be used as a preprocessing tool to accelerate the convergence of iterative methods
|
||||
|
||||
Reference in New Issue
Block a user