From 9fa4e9a098630eb6196859ff11fefa9f758070d7 Mon Sep 17 00:00:00 2001 From: Jitse Niesen Date: Mon, 5 Jul 2010 10:59:29 +0100 Subject: Improve documentation, mostly by adding links to Quick Start Guide. --- doc/C00_QuickStartGuide.dox | 14 +++++++------- doc/C01_TutorialMatrixClass.dox | 4 ++-- doc/Overview.dox | 2 +- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/doc/C00_QuickStartGuide.dox b/doc/C00_QuickStartGuide.dox index 65bfe2f67..3b7c405ca 100644 --- a/doc/C00_QuickStartGuide.dox +++ b/doc/C00_QuickStartGuide.dox @@ -3,11 +3,11 @@ namespace Eigen { /** \page GettingStarted Getting started \ingroup Tutorial -This is a very short guide on how to get started with Eigen. It is intended for people who do not like to read long documents and want to start coding as soon as possible. The \ref TutorialMatrixClass "Tutorial" is a longer document wich goes in more detail. +This is a very short guide on how to get started with Eigen. It has a dual purpose. It serves as a minimal introduction to the Eigen library for people who want to start coding as soon as possible. You can also read this page as the first part of the Tutorial, which explains the library in more detail; in this case you will continue with \ref TutorialMatrixClass. \section GettingStartedInstallation How to "install" Eigen? -In order to use Eigen, you just need to download and extract Eigen's source code. In fact, the header files in the \c Eigen subdirectory are the only files required to compile programs using Eigen. The header files are the same for all platforms. It is not necessary to use CMake or install anything. +In order to use Eigen, you just need to download and extract Eigen's source code (see the wiki for download instructions). In fact, the header files in the \c Eigen subdirectory are the only files required to compile programs using Eigen. The header files are the same for all platforms. It is not necessary to use CMake or install anything. \section GettingStartedFirstProgram A simple first program @@ -32,9 +32,9 @@ When you run the program, it produces the following output: \section GettingStartedExplanation Explanation of the first program -The Eigen header files define many types, but for simple applications it may be enough to use only the \c MatrixXd type. This represents a matrix of arbitrary size (hence the \c X in \c MatrixXd), in which every entry is a \c double (hence the \c d in \c MatrixXd). See \ref Somewhere for a table of the different types you can use to represent a matrix. +The Eigen header files define many types, but for simple applications it may be enough to use only the \c MatrixXd type. This represents a matrix of arbitrary size (hence the \c X in \c MatrixXd), in which every entry is a \c double (hence the \c d in \c MatrixXd). See the \ref QuickRef_Types "quick reference guide" for an overview of the different types you can use to represent a matrix. -The \c Eigen/Dense header file defines all member functions for the MatrixXd type and related types. All classes and functions defined in this header file (and other Eigen header files) are in the \c Eigen namespace. +The \c Eigen/Dense header file defines all member functions for the MatrixXd type and related types (see also the \ref QuickRef_Headers "table of header files"). All classes and functions defined in this header file (and other Eigen header files) are in the \c Eigen namespace. The first line of the \c main function declares a variable of type \c MatrixXd and specifies that it is a matrix with 2 rows and 2 columns (the entries are not initialized). The statement m(0,0) = 3 sets the entry in the top-left corner to 3. You need to use round parentheses to refer to entries in the matrix. As usual in computer science, the index of the first index is 0, as opposed to the convention in mathematics that the first index is 1. @@ -61,9 +61,9 @@ The output is as follows: \section GettingStartedExplanation2 Explanation of the second example -The second example starts by declaring a 3-by-3 matrix \c m which is initialized with random values in the range [-1:1]. The next line applies a linear mapping such that the values fit in the range [10:110]. The function call MatrixXd::Constant(3,3,1.2) returns \c 3x3 matrix expression having all coefficient equal to 1.2. The rest is standard arithmetics. +The second example starts by declaring a 3-by-3 matrix \c m which is initialized using the \link DenseBase::Random(Index,Index) Random() \endlink method with random values between -1 and 1. The next line applies a linear mapping such that the values are between 10 and 110. The function call \link DenseBase::Constant(Index,Index,const Scalar&) MatrixXd::Constant\endlink(3,3,1.2) returns a 3-by-3 matrix expression having all coefficients equal to 1.2. The rest is standard arithmetics. -The next line of the \c main function introduces a new type: \c VectorXd. This represents a (column) vector of arbitrary size. Here, the vector \c v is created to contains \c 3 coefficients which are left unitialized. The one but last line sets all coefficients of the vector \c v to be as follow: +The next line of the \c main function introduces a new type: \c VectorXd. This represents a (column) vector of arbitrary size. Here, the vector \c v is created to contains \c 3 coefficients which are left unitialized. The one but last line uses the so-called comma-initializer, explained in \ref TutorialAdvancedInitialization, to set all coefficients of the vector \c v to be as follows: \f[ v = @@ -83,7 +83,7 @@ The use of fixed-size matrices and vectors has two advantages. The compiler emit \section GettingStartedConclusion Where to go from here? -You could directly use our reference tables and class documentation, or if you do not yet feel ready for that, you could +You could directly use our \ref QuickRefPage and class documentation, or if you do not yet feel ready for that, you could read the longer \ref TutorialMatrixClass "Tutorial" in which the Eigen library is explained in more detail. \li \b Next: \ref TutorialMatrixClass diff --git a/doc/C01_TutorialMatrixClass.dox b/doc/C01_TutorialMatrixClass.dox index 2eebc86ac..0a7275a5d 100644 --- a/doc/C01_TutorialMatrixClass.dox +++ b/doc/C01_TutorialMatrixClass.dox @@ -1,6 +1,6 @@ namespace Eigen { -/** \page TutorialMatrixClass Tutorial page 1 - the %Matrix class +/** \page TutorialMatrixClass Tutorial page 1 - The %Matrix class \ingroup Tutorial @@ -243,7 +243,7 @@ Eigen defines the following Matrix typedefs: \li RowVectorNt for Matrix. For example, RowVector3d for Matrix. Where: -\li N can be any one of \c 2,\c 3,\c 4, or \c d (meaning \c Dynamic). +\li N can be any one of \c 2,\c 3,\c 4, or \c X (meaning \c Dynamic). \li t can be any one of \c i (meaning int), \c f (meaning float), \c d (meaning double), \c cf (meaning complex), or \c cd (meaning complex). The fact that typedefs are only defined for these 5 types doesn't mean that they are the only supported scalar types. For example, diff --git a/doc/Overview.dox b/doc/Overview.dox index 60687fdf9..4cd872e43 100644 --- a/doc/Overview.dox +++ b/doc/Overview.dox @@ -12,7 +12,7 @@ This is the API documentation for Eigen3. Eigen2 users: here is a \ref Eigen2ToEigen3 guide to help porting your application. -For a first contact with Eigen, the best place is to have a look at the \ref GettingStarted "tutorial". The \ref QuickRefPage "short reference" page gives you a quite complete description of the API in a very condensed format that is specially useful to recall the syntax of a particular features, or to have a quick look at the API. For Matlab users, there is also a ASCII quick reference with Matlab translations. +For a first contact with Eigen, the best place is to have a look at the \ref GettingStarted "tutorial". The \ref QuickRefPage "short reference" page gives you a quite complete description of the API in a very condensed format that is specially useful to recall the syntax of a particular feature, or to have a quick look at the API. For Matlab users, there is also a ASCII quick reference with Matlab translations. The \e Modules and \e Classes tabs at the top of this page give you access to the API documentation of individual classes and functions. \b Table \b of \b contents - \ref Eigen2ToEigen3 -- cgit v1.2.3 From 1daf9b11ba6f47fceaf8cd55078d26baa3352590 Mon Sep 17 00:00:00 2001 From: Konstantinos Margaritis Date: Mon, 5 Jul 2010 16:42:11 +0300 Subject: check for !x86 platforms, otherwise the BTL benchmark doesn't compile on arm/powerpc --- bench/btl/generic_bench/btl.hh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bench/btl/generic_bench/btl.hh b/bench/btl/generic_bench/btl.hh index b5838ba94..17cd397a1 100644 --- a/bench/btl/generic_bench/btl.hh +++ b/bench/btl/generic_bench/btl.hh @@ -44,7 +44,7 @@ #define BTL_ASM_COMMENT(X) #endif -#if (defined __GNUC__) && (!defined __INTEL_COMPILER) +#if (defined __GNUC__) && (!defined __INTEL_COMPILER) && !defined(__arm__) && !defined(__powerpc__) #define BTL_DISABLE_SSE_EXCEPTIONS() { \ int aux; \ asm( \ -- cgit v1.2.3 From 1505221263c24ea6c3892cd73ff7c531f96be8e5 Mon Sep 17 00:00:00 2001 From: Konstantinos Margaritis Date: Mon, 5 Jul 2010 16:44:41 +0300 Subject: add check for non x86 platforms, we get a compile error on arm/powerpc without the check (there is no known -yet- method to get cpuid, without resolving to kernel /sys interface) --- Eigen/src/Core/util/Memory.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Eigen/src/Core/util/Memory.h b/Eigen/src/Core/util/Memory.h index 022c9b70d..4d3a25bf2 100644 --- a/Eigen/src/Core/util/Memory.h +++ b/Eigen/src/Core/util/Memory.h @@ -591,7 +591,7 @@ public: # if defined(__PIC__) && defined(__i386__) # define EIGEN_CPUID(abcd,func,id) \ __asm__ __volatile__ ("xchgl %%ebx, %%esi;cpuid; xchgl %%ebx,%%esi": "=a" (abcd[0]), "=S" (abcd[1]), "=c" (abcd[2]), "=d" (abcd[3]) : "a" (func), "c" (id)); -# else +# elif !defined(__arm__) && !defined(__powerpc__) # define EIGEN_CPUID(abcd,func,id) \ __asm__ __volatile__ ("cpuid": "=a" (abcd[0]), "=b" (abcd[1]), "=c" (abcd[2]), "=d" (abcd[3]) : "a" (func), "c" (id) ); # endif @@ -772,6 +772,7 @@ inline void ei_queryCacheSizes(int& l1, int& l2, int& l3) // ||ei_cpuid_is_vendor(abcd,"CentaurHauls") // ||ei_cpuid_is_vendor(abcd,"CentaurHauls") #endif + l1 = l2 = l3 = -1; } /** \internal -- cgit v1.2.3 From 8db60afb47a33a2b9aeadc82921ec49e0c5c7918 Mon Sep 17 00:00:00 2001 From: Gael Guennebaud Date: Mon, 5 Jul 2010 21:27:15 +0200 Subject: oops I did not see that --- Eigen/src/Core/util/Memory.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Eigen/src/Core/util/Memory.h b/Eigen/src/Core/util/Memory.h index 4d3a25bf2..1ec4fbfb5 100644 --- a/Eigen/src/Core/util/Memory.h +++ b/Eigen/src/Core/util/Memory.h @@ -771,8 +771,9 @@ inline void ei_queryCacheSizes(int& l1, int& l2, int& l3) // ||ei_cpuid_is_vendor(abcd,"NexGenDriven") // ||ei_cpuid_is_vendor(abcd,"CentaurHauls") // ||ei_cpuid_is_vendor(abcd,"CentaurHauls") - #endif + #else l1 = l2 = l3 = -1; + #endif } /** \internal -- cgit v1.2.3 From 8cfbf33f601ab95ed3a1d5b776bf456d7c4682c3 Mon Sep 17 00:00:00 2001 From: Benoit Jacob Date: Tue, 6 Jul 2010 00:50:16 -0400 Subject: fix the overview page and add mention that the wrong stack alignment issue may have been solved by gcc 4.5 --- doc/D03_WrongStackAlignment.dox | 3 +++ doc/Overview.dox | 6 ++---- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/doc/D03_WrongStackAlignment.dox b/doc/D03_WrongStackAlignment.dox index 3e6fc03d6..b0e42edce 100644 --- a/doc/D03_WrongStackAlignment.dox +++ b/doc/D03_WrongStackAlignment.dox @@ -2,6 +2,9 @@ namespace Eigen { /** \page TopicWrongStackAlignment Compiler making a wrong assumption on stack alignment +

It appears that this was a GCC bug that has been fixed in GCC 4.5. +If you hit this issue, please upgrade to GCC 4.5 and report to us, so we can update this page.

+ This is an issue that, so far, we met only with GCC on Windows: for instance, MinGW and TDM-GCC. By default, in a function like this, diff --git a/doc/Overview.dox b/doc/Overview.dox index 4cd872e43..59c043553 100644 --- a/doc/Overview.dox +++ b/doc/Overview.dox @@ -23,18 +23,16 @@ For a first contact with Eigen, the best place is to have a look at the \ref Get - \ref TutorialArrayClass - \ref TutorialBlockOperations - \ref TutorialAdvancedInitialization - - Comming soon: "Reductions, visitors, and broadcasting" + - Coming soon: "Reductions, visitors, and broadcasting" - \ref TutorialLinearAlgebra - \ref TutorialGeometry - - \ref TutorialSparseMatrix + - \ref TutorialSparse - \ref QuickRefPage - Advanced topics - \ref TopicLazyEvaluation - \ref TopicLinearAlgebraDecompositions - \ref TopicCustomizingEigen - \ref TopicInsideEigenExample - - \ref TopicHiPerformance - - Topics on getting high performances - \ref TopicWritingEfficientProductExpression - Topics related to alignment issues - \ref TopicUnalignedArrayAssert -- cgit v1.2.3 -- cgit v1.2.3 From 7d23e7f9f10a8d8b3d9d086571bdb0223e5cf34b Mon Sep 17 00:00:00 2001 From: Gael Guennebaud Date: Tue, 6 Jul 2010 11:02:01 +0200 Subject: indentation --- Eigen/src/Core/util/Memory.h | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Eigen/src/Core/util/Memory.h b/Eigen/src/Core/util/Memory.h index 1ec4fbfb5..21ea45a24 100644 --- a/Eigen/src/Core/util/Memory.h +++ b/Eigen/src/Core/util/Memory.h @@ -588,17 +588,17 @@ public: //---------- Cache sizes ---------- #if defined(__GNUC__) -# if defined(__PIC__) && defined(__i386__) +# if defined(__PIC__) && defined(__i386__) # define EIGEN_CPUID(abcd,func,id) \ __asm__ __volatile__ ("xchgl %%ebx, %%esi;cpuid; xchgl %%ebx,%%esi": "=a" (abcd[0]), "=S" (abcd[1]), "=c" (abcd[2]), "=d" (abcd[3]) : "a" (func), "c" (id)); -# elif !defined(__arm__) && !defined(__powerpc__) +# elif !defined(__arm__) && !defined(__powerpc__) # define EIGEN_CPUID(abcd,func,id) \ __asm__ __volatile__ ("cpuid": "=a" (abcd[0]), "=b" (abcd[1]), "=c" (abcd[2]), "=d" (abcd[3]) : "a" (func), "c" (id) ); -# endif +# endif #elif defined(_MSC_VER) -#if (_MSC_VER > 1500) /* newer than MSVC++ 9.0 */ || (_MSC_VER == 1500 && _MSC_FULL_VER >= 150030729) /* MSVC++ 9.0 with SP1*/ +# if (_MSC_VER > 1500) /* newer than MSVC++ 9.0 */ || (_MSC_VER == 1500 && _MSC_FULL_VER >= 150030729) /* MSVC++ 9.0 with SP1*/ # define EIGEN_CPUID(abcd,func,id) __cpuidex((int*)abcd,func,id) -#endif +# endif #endif #ifdef EIGEN_CPUID -- cgit v1.2.3 From 5322b670c86d17abac524bbaa9d1250b0d5e918e Mon Sep 17 00:00:00 2001 From: Jens Mueller Date: Tue, 6 Jul 2010 10:25:52 +0200 Subject: Add all unsupported modules and fix header file paths --- unsupported/Eigen/CMakeLists.txt | 5 ++++- unsupported/Eigen/SparseExtra | 6 +++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/unsupported/Eigen/CMakeLists.txt b/unsupported/Eigen/CMakeLists.txt index 87cc4be1e..d01f95d71 100644 --- a/unsupported/Eigen/CMakeLists.txt +++ b/unsupported/Eigen/CMakeLists.txt @@ -1,4 +1,7 @@ -set(Eigen_HEADERS AdolcForward BVH IterativeSolvers MatrixFunctions MoreVectorization AutoDiff AlignedVector3 Polynomials) +set(Eigen_HEADERS AdolcForward BVH IterativeSolvers MatrixFunctions MoreVectorization AutoDiff AlignedVector3 Polynomials + CholmodSupport FFT NonLinearOptimization SparseExtra SuperLUSupport UmfPackSupport IterativeSolvers + NumericalDiff Skyline TaucsSupport + ) install(FILES ${Eigen_HEADERS} diff --git a/unsupported/Eigen/SparseExtra b/unsupported/Eigen/SparseExtra index 3770d9506..116981a86 100644 --- a/unsupported/Eigen/SparseExtra +++ b/unsupported/Eigen/SparseExtra @@ -1,9 +1,9 @@ #ifndef EIGEN_SPARSE_EXTRA_MODULE_H #define EIGEN_SPARSE_EXTRA_MODULE_H -#include "../Eigen/Sparse" +#include "../../Eigen/Sparse" -#include "src/Core/util/DisableMSVCWarnings.h" +#include "../../Eigen/src/Core/util/DisableMSVCWarnings.h" #include #include @@ -63,6 +63,6 @@ enum { } // namespace Eigen -#include "src/Core/util/EnableMSVCWarnings.h" +#include "../../Eigen/src/Core/util/EnableMSVCWarnings.h" #endif // EIGEN_SPARSE_EXTRA_MODULE_H -- cgit v1.2.3 From d849bc440173dbe641a19f8d92cf6d33fdcf5afe Mon Sep 17 00:00:00 2001 From: Jens Mueller Date: Tue, 6 Jul 2010 10:11:18 +0200 Subject: Avoid calling resizeLike, if EIGEN_NO_AUTOMATIC_RESIZING is defined --- Eigen/src/Core/DenseStorageBase.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Eigen/src/Core/DenseStorageBase.h b/Eigen/src/Core/DenseStorageBase.h index a5282e316..6886e3f97 100644 --- a/Eigen/src/Core/DenseStorageBase.h +++ b/Eigen/src/Core/DenseStorageBase.h @@ -432,8 +432,9 @@ class DenseStorageBase : public ei_dense_xpr_base::type ei_assert((this->size()==0 || (IsVectorAtCompileTime ? (this->size() == other.size()) : (rows() == other.rows() && cols() == other.cols()))) && "Size mismatch. Automatic resizing is disabled because EIGEN_NO_AUTOMATIC_RESIZING is defined"); - #endif + #else resizeLike(other); + #endif } /** -- cgit v1.2.3 From 3428d80d20fb0a6e1a3f7f19b51f98927935e255 Mon Sep 17 00:00:00 2001 From: Jitse Niesen Date: Tue, 6 Jul 2010 10:48:25 +0100 Subject: Small changes to tutorial page 1. --- doc/C01_TutorialMatrixClass.dox | 59 +++++++++++++------------ doc/snippets/Tutorial_commainit_01.cpp | 2 +- doc/snippets/tut_matrix_assignment_resizing.cpp | 4 +- 3 files changed, 33 insertions(+), 32 deletions(-) diff --git a/doc/C01_TutorialMatrixClass.dox b/doc/C01_TutorialMatrixClass.dox index 0a7275a5d..27788b2b2 100644 --- a/doc/C01_TutorialMatrixClass.dox +++ b/doc/C01_TutorialMatrixClass.dox @@ -23,17 +23,17 @@ This page is the first one in a much longer multi-page tutorial. - \ref TutorialMatrixOptTemplParams - \ref TutorialMatrixTypedefs -In Eigen, all matrices and vectors are object of the Matrix class. +In Eigen, all matrices and vectors are objects of the Matrix template class. Vectors are just a special case of matrices, with either 1 row or 1 column. -\section TutorialMatrixFirst3Params The first 3 template parameters of Matrix +\section TutorialMatrixFirst3Params The first three template parameters of Matrix -The Matrix class takes 6 template parameters, but for now it's enough to -learn about the 3 first parameters. The 3 remaining parameters have default +The Matrix class takes six template parameters, but for now it's enough to +learn about the first three first parameters. The three remaining parameters have default values, which for now we will leave untouched, and which we \ref TutorialMatrixOptTemplParams "discuss below". -The 3 mandatory template parameters of Matrix are: +The three mandatory template parameters of Matrix are: \code Matrix \endcode @@ -42,12 +42,14 @@ Matrix See \ref TopicScalarTypes "Scalar types" for a list of all supported scalar types and for how to extend support to new types. \li \c RowsAtCompileTime and \c ColsAtCompileTime are the number of rows - and columns of the matrix as known at compile-time. + and columns of the matrix as known at compile time (see + \ref TutorialMatrixDynamic "below" for what to do if the number is not + known at compile time). We offer a lot of convenience typedefs to cover the usual cases. For example, \c Matrix4f is a 4x4 matrix of floats. Here is how it is defined by Eigen: \code -typedef Matrix Matrix4f; +typedef Matrix Matrix4f; \endcode We discuss \ref TutorialMatrixTypedefs "below" these convenience typedefs. @@ -58,11 +60,11 @@ matrices, with either 1 row or 1 column. The case where they have 1 column is th such vectors are called column-vectors, often abbreviated as just vectors. In the other case where they have 1 row, they are called row-vectors. -For example, the convenience typedef \c Vector3f is defined as follows by Eigen: +For example, the convenience typedef \c Vector3f is a (column) vector of 3 floats. It is defined as follows by Eigen: \code typedef Matrix Vector3f; \endcode -and we also offer convenience typedefs for row-vectors, for example: +We also offer convenience typedefs for row-vectors, for example: \code typedef Matrix RowVector2i; \endcode @@ -70,18 +72,18 @@ typedef Matrix RowVector2i; \section TutorialMatrixDynamic The special value Dynamic Of course, Eigen is not limited to matrices whose dimensions are known at compile time. -The above-discussed \c RowsAtCompileTime and \c ColsAtCompileTime can take the special +The \c RowsAtCompileTime and \c ColsAtCompileTime template parameters can take the special value \c Dynamic which indicates that the size is unknown at compile time, so must -be handled as a run time variable. In Eigen terminology, such a size is referred to as a +be handled as a run-time variable. In Eigen terminology, such a size is referred to as a \em dynamic \em size; while a size that is known at compile time is called a \em fixed \em size. For example, the convenience typedef \c MatrixXd, meaning a matrix of doubles with dynamic size, is defined as follows: \code -typedef Matrix MatrixXd; +typedef Matrix MatrixXd; \endcode And similarly, we define a self-explanatory typedef \c VectorXi as follows: \code -typedef Matrix VectorXi; +typedef Matrix VectorXi; \endcode You can perfectly have e.g. a fixed number of rows with a dynamic number of columns, as in: \code @@ -151,16 +153,16 @@ Matrix and vector coefficients can be conveniently set using the so-called \em c For now, it is enough to know this example: \include Tutorial_commainit_01.cpp Output: \verbinclude Tutorial_commainit_01.out -The right hand side can also contains matrix expressions as discussed in \ref TutorialAdvancedInitialization "this page". +The right-hand side can also contain matrix expressions as discussed in \ref TutorialAdvancedInitialization "this page". \section TutorialMatrixSizesResizing Resizing -The current sizes can be retrieved by rows(), cols() and size(). Resizing a dynamic-size matrix is done by the resize() method. +The current size of a matrix can be retrieved by \link EigenBase::rows() rows()\endlink, \link EigenBase::cols() cols() \endlink and \link EigenBase::size() size()\endlink. These methods return the number of rows, the number of columns and the number of coefficients, respectively. Resizing a dynamic-size matrix is done by the \link DenseStorageBase::resize(Index,Index) resize() \endlink method. For example: \include tut_matrix_resize.cpp Output: \verbinclude tut_matrix_resize.out -The resize() method is a no-operation if the actual array size doesn't change; otherwise it is destructive. -If you want a conservative variant of resize(), use conservativeResize(), see \ref TopicResizing "this page" for more details. +The resize() method is a no-operation if the actual matrix size doesn't change; otherwise it is destructive: the values of the coefficients may change. +If you want a conservative variant of resize() which does not change the coefficients, use \link DenseStorageBase::conservativeResize() conservativeResize()\endlink, see \ref TopicResizing "this page" for more details. All these methods are still available on fixed-size matrices, for the sake of API uniformity. Of course, you can't actually resize a fixed-size matrix. Trying to change a fixed size to an actually different value will trigger an assertion failure; @@ -170,12 +172,11 @@ Output: \verbinclude tut_matrix_resize_fixed_size.out \section TutorialMatrixAssignment Assignment and resizing -Assignment is the action of copying a matrix into another, using \c operator=. The only non-obvious thing to know here, is that -Eigen does automatic resizing of the left hand side to match the right hand side's size. For example: +Assignment is the action of copying a matrix into another, using \c operator=. Eigen resizes the matrix on the left-hand side automatically so that it matches the size of the matrix on the right-hand size. For example: \include tut_matrix_assignment_resizing.cpp Output: \verbinclude tut_matrix_assignment_resizing.out -Of course, if the left hand side is of fixed size, resizing it is not allowed. +Of course, if the left-hand side is of fixed size, resizing it is not allowed. If you do not want this automatic resizing to happen (for example for debugging purposes), you can disable it, see \ref TopicResizing "this page". @@ -210,8 +211,8 @@ Finally, depending on circumstances, Eigen can also be more aggressive trying to \section TutorialMatrixOptTemplParams Optional template parameters -We mentioned at the beginning of this page that the Matrix class takes 6 template parameters, -but so far we only discussed the first 3. The remaining 3 parameters are optional. Here is +We mentioned at the beginning of this page that the Matrix class takes six template parameters, +but so far we only discussed the first three. The remaining three parameters are optional. Here is the complete list of template parameters: \code Matrix \endcode -\li \c Options is a bit field; let us only mention here one bit: \c RowMajor. It specifies that the matrices - of this type use row-major storage order; the default is column-major. See the page on +\li \c Options is a bit field. Here, we discuss only one bit: \c RowMajor. It specifies that the matrices + of this type use row-major storage order; by default, the storage order is column-major. See the page on \ref TopicStorageOrders "storage orders". For example, this type means row-major 3x3 matrices: \code - Matrix + Matrix \endcode \li \c MaxRowsAtCompileTime and \c MaxColsAtCompileTime are useful when you want to specify that, even though - the exact sizes of your matrices are unknown at compile time, a fixed upper bound is known at + the exact sizes of your matrices are not known at compile time, a fixed upper bound is known at compile time. The biggest reason why you might want to do that is to avoid dynamic memory allocation. For example the following matrix type uses a static array of 12 floats, without dynamic memory allocation: \code - Matrix + Matrix \endcode \section TutorialMatrixTypedefs Convenience typedefs @@ -243,10 +244,10 @@ Eigen defines the following Matrix typedefs: \li RowVectorNt for Matrix. For example, RowVector3d for Matrix. Where: -\li N can be any one of \c 2,\c 3,\c 4, or \c X (meaning \c Dynamic). +\li N can be any one of \c 2, \c 3, \c 4, or \c X (meaning \c Dynamic). \li t can be any one of \c i (meaning int), \c f (meaning float), \c d (meaning double), \c cf (meaning complex), or \c cd (meaning complex). The fact that typedefs are only - defined for these 5 types doesn't mean that they are the only supported scalar types. For example, + defined for these five types doesn't mean that they are the only supported scalar types. For example, all standard integer types are supported, see \ref TopicScalarTypes "Scalar types". \li \b Next: \ref TutorialMatrixArithmetic diff --git a/doc/snippets/Tutorial_commainit_01.cpp b/doc/snippets/Tutorial_commainit_01.cpp index e3098cedb..47ba31dc9 100644 --- a/doc/snippets/Tutorial_commainit_01.cpp +++ b/doc/snippets/Tutorial_commainit_01.cpp @@ -2,4 +2,4 @@ Matrix3f m; m << 1, 2, 3, 4, 5, 6, 7, 8, 9; -cout << m; +std::cout << m; diff --git a/doc/snippets/tut_matrix_assignment_resizing.cpp b/doc/snippets/tut_matrix_assignment_resizing.cpp index 96b3c88d3..cf189983f 100644 --- a/doc/snippets/tut_matrix_assignment_resizing.cpp +++ b/doc/snippets/tut_matrix_assignment_resizing.cpp @@ -1,5 +1,5 @@ MatrixXf a(2,2); -cout << "a is of size " << a.rows() << "x" << a.cols() << std::endl; +std::cout << "a is of size " << a.rows() << "x" << a.cols() << std::endl; MatrixXf b(3,3); a = b; -cout << "a is now of size " << a.rows() << "x" << a.cols() << std::endl; +std::cout << "a is now of size " << a.rows() << "x" << a.cols() << std::endl; -- cgit v1.2.3 From 49747fa4a983cbd5b383a5b8054b8452437ff614 Mon Sep 17 00:00:00 2001 From: Jitse Niesen Date: Tue, 6 Jul 2010 13:10:08 +0100 Subject: Various documentation improvements. * Add short documentation for Array class * Put all classes explicitly in Core module (where applicable) * Section on Modules in Quick Reference Guide * Put Page 7 after Page 6 in Contents :) --- Eigen/src/Core/Array.h | 15 +++++++++++++++ Eigen/src/Core/ArrayBase.h | 1 + Eigen/src/Core/ArrayWrapper.h | 2 ++ Eigen/src/Core/BandMatrix.h | 2 ++ Eigen/src/Core/Block.h | 1 + Eigen/src/Core/CommaInitializer.h | 1 + Eigen/src/Core/CwiseBinaryOp.h | 1 + Eigen/src/Core/CwiseNullaryOp.h | 1 + Eigen/src/Core/CwiseUnaryOp.h | 1 + Eigen/src/Core/CwiseUnaryView.h | 1 + Eigen/src/Core/DenseBase.h | 1 + Eigen/src/Core/Diagonal.h | 1 + Eigen/src/Core/DiagonalMatrix.h | 2 ++ Eigen/src/Core/Flagged.h | 1 + Eigen/src/Core/ForceAlignedAccess.h | 1 + Eigen/src/Core/IO.h | 2 ++ Eigen/src/Core/Map.h | 1 + Eigen/src/Core/MapBase.h | 1 + Eigen/src/Core/Matrix.h | 1 + Eigen/src/Core/MatrixBase.h | 1 + Eigen/src/Core/MatrixStorage.h | 1 + Eigen/src/Core/NestByValue.h | 1 + Eigen/src/Core/NoAlias.h | 1 + Eigen/src/Core/NumTraits.h | 1 + Eigen/src/Core/PermutationMatrix.h | 1 + Eigen/src/Core/Product.h | 2 ++ Eigen/src/Core/ProductBase.h | 1 + Eigen/src/Core/Replicate.h | 1 + Eigen/src/Core/ReturnByValue.h | 1 + Eigen/src/Core/Reverse.h | 1 + Eigen/src/Core/Select.h | 1 + Eigen/src/Core/SelfAdjointView.h | 1 + Eigen/src/Core/SelfCwiseBinaryOp.h | 1 + Eigen/src/Core/Stride.h | 1 + Eigen/src/Core/Swap.h | 1 + Eigen/src/Core/Transpose.h | 1 + Eigen/src/Core/Transpositions.h | 1 + Eigen/src/Core/TriangularMatrix.h | 2 ++ Eigen/src/Core/VectorBlock.h | 1 + Eigen/src/Core/VectorwiseOp.h | 2 ++ Eigen/src/Core/util/Constants.h | 2 +- Eigen/src/Core/util/Memory.h | 1 + doc/Overview.dox | 2 +- doc/QuickReference.dox | 25 ++++++++++++++----------- unsupported/Eigen/NumericalDiff | 4 ++-- 45 files changed, 80 insertions(+), 15 deletions(-) diff --git a/Eigen/src/Core/Array.h b/Eigen/src/Core/Array.h index 0a9366254..61e1950eb 100644 --- a/Eigen/src/Core/Array.h +++ b/Eigen/src/Core/Array.h @@ -25,6 +25,20 @@ #ifndef EIGEN_ARRAY_H #define EIGEN_ARRAY_H +/** \class Array + * \ingroup Core_Module + * + * \brief General-purpose arrays with easy API for coefficient-wise operations + * + * The %Array class is very similar to the Matrix class. It provides + * general-purpose one- and two-dimensional arrays. The difference between the + * %Array and the %Matrix class is primarily in the API: the API for the + * %Array class provides easy access to coefficient-wise operations, while the + * API for the %Matrix class provides easy access to linear-algebra + * operations. + * + * \sa \ref TutorialArrayClass + */ template struct ei_traits > : ei_traits > { @@ -231,6 +245,7 @@ class Array }; /** \defgroup arraytypedefs Global array typedefs + * \ingroup Core_Module * * Eigen defines several typedef shortcuts for most common 1D and 2D array types. * diff --git a/Eigen/src/Core/ArrayBase.h b/Eigen/src/Core/ArrayBase.h index 20782e2cf..1a54b2335 100644 --- a/Eigen/src/Core/ArrayBase.h +++ b/Eigen/src/Core/ArrayBase.h @@ -28,6 +28,7 @@ template class MatrixWrapper; /** \class ArrayBase + * \ingroup Core_Module * * \brief Base class for all 1D and 2D array, and related expressions * diff --git a/Eigen/src/Core/ArrayWrapper.h b/Eigen/src/Core/ArrayWrapper.h index d4b7c45c0..dc5bba443 100644 --- a/Eigen/src/Core/ArrayWrapper.h +++ b/Eigen/src/Core/ArrayWrapper.h @@ -26,6 +26,7 @@ #define EIGEN_ARRAYWRAPPER_H /** \class ArrayWrapper + * \ingroup Core_Module * * \brief Expression of a mathematical vector or matrix as an array object * @@ -110,6 +111,7 @@ class ArrayWrapper : public ArrayBase > }; /** \class MatrixWrapper + * \ingroup Core_Module * * \brief Expression of an array as a mathematical vector or matrix * diff --git a/Eigen/src/Core/BandMatrix.h b/Eigen/src/Core/BandMatrix.h index 51b38aa7f..e846b38e5 100644 --- a/Eigen/src/Core/BandMatrix.h +++ b/Eigen/src/Core/BandMatrix.h @@ -27,6 +27,7 @@ /** * \class BandMatrix + * \ingroup Core_Module * * \brief Represents a rectangular matrix with a banded storage * @@ -205,6 +206,7 @@ class BandMatrix : public EigenBase::evalTo(MatrixBase &other) const #endif /** \class DiagonalMatrix + * \ingroup Core_Module * * \brief Represents a diagonal matrix with its storage * @@ -188,6 +189,7 @@ class DiagonalMatrix }; /** \class DiagonalWrapper + * \ingroup Core_Module * * \brief Expression of a diagonal matrix * diff --git a/Eigen/src/Core/Flagged.h b/Eigen/src/Core/Flagged.h index 7936f9dcf..9211c50e8 100644 --- a/Eigen/src/Core/Flagged.h +++ b/Eigen/src/Core/Flagged.h @@ -26,6 +26,7 @@ #define EIGEN_FLAGGED_H /** \class Flagged + * \ingroup Core_Module * * \brief Expression with modified flags * diff --git a/Eigen/src/Core/ForceAlignedAccess.h b/Eigen/src/Core/ForceAlignedAccess.h index 114d7bf97..06d78fbe2 100644 --- a/Eigen/src/Core/ForceAlignedAccess.h +++ b/Eigen/src/Core/ForceAlignedAccess.h @@ -26,6 +26,7 @@ #define EIGEN_FORCEALIGNEDACCESS_H /** \class ForceAlignedAccess + * \ingroup Core_Module * * \brief Enforce aligned packet loads and stores regardless of what is requested * diff --git a/Eigen/src/Core/IO.h b/Eigen/src/Core/IO.h index 7a823d225..7c742d867 100644 --- a/Eigen/src/Core/IO.h +++ b/Eigen/src/Core/IO.h @@ -31,6 +31,7 @@ enum { StreamPrecision = -1, FullPrecision = -2 }; /** \class IOFormat + * \ingroup Core_Module * * \brief Stores a set of parameters controlling the way matrices are printed * @@ -80,6 +81,7 @@ struct IOFormat }; /** \class WithFormat + * \ingroup Core_Module * * \brief Pseudo expression providing matrix output with given format * diff --git a/Eigen/src/Core/Map.h b/Eigen/src/Core/Map.h index 0c4d08a17..3386c6d69 100644 --- a/Eigen/src/Core/Map.h +++ b/Eigen/src/Core/Map.h @@ -27,6 +27,7 @@ #define EIGEN_MAP_H /** \class Map + * \ingroup Core_Module * * \brief A matrix or vector expression mapping an existing array of data. * diff --git a/Eigen/src/Core/MapBase.h b/Eigen/src/Core/MapBase.h index 4dfa8f82d..6af7bb793 100644 --- a/Eigen/src/Core/MapBase.h +++ b/Eigen/src/Core/MapBase.h @@ -27,6 +27,7 @@ #define EIGEN_MAPBASE_H /** \class MapBase + * \ingroup Core_Module * * \brief Base class for Map and Block expression with direct access * diff --git a/Eigen/src/Core/Matrix.h b/Eigen/src/Core/Matrix.h index 726969720..1c9d32a29 100644 --- a/Eigen/src/Core/Matrix.h +++ b/Eigen/src/Core/Matrix.h @@ -27,6 +27,7 @@ #define EIGEN_MATRIX_H /** \class Matrix + * \ingroup Core_Module * * \brief The matrix class, also used for vectors and row-vectors * diff --git a/Eigen/src/Core/MatrixBase.h b/Eigen/src/Core/MatrixBase.h index 94ddb8691..0c2bbf5bf 100644 --- a/Eigen/src/Core/MatrixBase.h +++ b/Eigen/src/Core/MatrixBase.h @@ -27,6 +27,7 @@ #define EIGEN_MATRIXBASE_H /** \class MatrixBase + * \ingroup Core_Module * * \brief Base class for all dense matrices, vectors, and expressions * diff --git a/Eigen/src/Core/MatrixStorage.h b/Eigen/src/Core/MatrixStorage.h index 5dc8640c0..c6e7e20b2 100644 --- a/Eigen/src/Core/MatrixStorage.h +++ b/Eigen/src/Core/MatrixStorage.h @@ -79,6 +79,7 @@ struct ei_matrix_array /** \internal * * \class ei_matrix_storage + * \ingroup Core_Module * * \brief Stores the data of a matrix * diff --git a/Eigen/src/Core/NestByValue.h b/Eigen/src/Core/NestByValue.h index f01e1e38d..885002e26 100644 --- a/Eigen/src/Core/NestByValue.h +++ b/Eigen/src/Core/NestByValue.h @@ -27,6 +27,7 @@ #define EIGEN_NESTBYVALUE_H /** \class NestByValue + * \ingroup Core_Module * * \brief Expression which must be nested by value * diff --git a/Eigen/src/Core/NoAlias.h b/Eigen/src/Core/NoAlias.h index ac889c565..d34f83b7b 100644 --- a/Eigen/src/Core/NoAlias.h +++ b/Eigen/src/Core/NoAlias.h @@ -26,6 +26,7 @@ #define EIGEN_NOALIAS_H /** \class NoAlias + * \ingroup Core_Module * * \brief Pseudo expression providing an operator = assuming no aliasing * diff --git a/Eigen/src/Core/NumTraits.h b/Eigen/src/Core/NumTraits.h index a0ffa4645..9e6e35a04 100644 --- a/Eigen/src/Core/NumTraits.h +++ b/Eigen/src/Core/NumTraits.h @@ -26,6 +26,7 @@ #define EIGEN_NUMTRAITS_H /** \class NumTraits + * \ingroup Core_Module * * \brief Holds information about the various numeric (i.e. scalar) types allowed by Eigen. * diff --git a/Eigen/src/Core/PermutationMatrix.h b/Eigen/src/Core/PermutationMatrix.h index 1b212efd7..afe37ef6d 100644 --- a/Eigen/src/Core/PermutationMatrix.h +++ b/Eigen/src/Core/PermutationMatrix.h @@ -27,6 +27,7 @@ #define EIGEN_PERMUTATIONMATRIX_H /** \class PermutationMatrix + * \ingroup Core_Module * * \brief Permutation matrix * diff --git a/Eigen/src/Core/Product.h b/Eigen/src/Core/Product.h index 707b6ec85..66435e0e3 100644 --- a/Eigen/src/Core/Product.h +++ b/Eigen/src/Core/Product.h @@ -27,6 +27,7 @@ #define EIGEN_PRODUCT_H /** \class GeneralProduct + * \ingroup Core_Module * * \brief Expression of the product of two general matrices or vectors * @@ -120,6 +121,7 @@ template<> struct ei_product_type_selector { en template<> struct ei_product_type_selector { enum { ret = GemmProduct }; }; /** \class ProductReturnType + * \ingroup Core_Module * * \brief Helper class to get the correct and optimized returned type of operator* * diff --git a/Eigen/src/Core/ProductBase.h b/Eigen/src/Core/ProductBase.h index 8f8052756..b3504f9d0 100644 --- a/Eigen/src/Core/ProductBase.h +++ b/Eigen/src/Core/ProductBase.h @@ -26,6 +26,7 @@ #define EIGEN_PRODUCTBASE_H /** \class ProductBase + * \ingroup Core_Module * */ template diff --git a/Eigen/src/Core/Replicate.h b/Eigen/src/Core/Replicate.h index 23f02c2d9..87dea0533 100644 --- a/Eigen/src/Core/Replicate.h +++ b/Eigen/src/Core/Replicate.h @@ -27,6 +27,7 @@ /** * \class Replicate + * \ingroup Core_Module * * \brief Expression of the multiple replication of a matrix or vector * diff --git a/Eigen/src/Core/ReturnByValue.h b/Eigen/src/Core/ReturnByValue.h index 52326b0e1..82f194b56 100644 --- a/Eigen/src/Core/ReturnByValue.h +++ b/Eigen/src/Core/ReturnByValue.h @@ -27,6 +27,7 @@ #define EIGEN_RETURNBYVALUE_H /** \class ReturnByValue + * \ingroup Core_Module * */ template diff --git a/Eigen/src/Core/Reverse.h b/Eigen/src/Core/Reverse.h index a581d9f27..5a96aeeb3 100644 --- a/Eigen/src/Core/Reverse.h +++ b/Eigen/src/Core/Reverse.h @@ -28,6 +28,7 @@ #define EIGEN_REVERSE_H /** \class Reverse + * \ingroup Core_Module * * \brief Expression of the reverse of a vector or matrix * diff --git a/Eigen/src/Core/Select.h b/Eigen/src/Core/Select.h index f5f220bff..000c70905 100644 --- a/Eigen/src/Core/Select.h +++ b/Eigen/src/Core/Select.h @@ -26,6 +26,7 @@ #define EIGEN_SELECT_H /** \class Select + * \ingroup Core_Module * * \brief Expression of a coefficient wise version of the C++ ternary operator ?: * diff --git a/Eigen/src/Core/SelfAdjointView.h b/Eigen/src/Core/SelfAdjointView.h index dadea9c09..bb8ab168d 100644 --- a/Eigen/src/Core/SelfAdjointView.h +++ b/Eigen/src/Core/SelfAdjointView.h @@ -26,6 +26,7 @@ #define EIGEN_SELFADJOINTMATRIX_H /** \class SelfAdjointView + * \ingroup Core_Module * * * \brief Expression of a selfadjoint matrix from a triangular part of a dense matrix diff --git a/Eigen/src/Core/SelfCwiseBinaryOp.h b/Eigen/src/Core/SelfCwiseBinaryOp.h index fbeb5bff2..acdbb8658 100644 --- a/Eigen/src/Core/SelfCwiseBinaryOp.h +++ b/Eigen/src/Core/SelfCwiseBinaryOp.h @@ -26,6 +26,7 @@ #define EIGEN_SELFCWISEBINARYOP_H /** \class SelfCwiseBinaryOp + * \ingroup Core_Module * * \internal * diff --git a/Eigen/src/Core/Stride.h b/Eigen/src/Core/Stride.h index 5f9a18523..47515b548 100644 --- a/Eigen/src/Core/Stride.h +++ b/Eigen/src/Core/Stride.h @@ -26,6 +26,7 @@ #define EIGEN_STRIDE_H /** \class Stride + * \ingroup Core_Module * * \brief Holds strides information for Map * diff --git a/Eigen/src/Core/Swap.h b/Eigen/src/Core/Swap.h index 8e5994aa9..086d7f32c 100644 --- a/Eigen/src/Core/Swap.h +++ b/Eigen/src/Core/Swap.h @@ -26,6 +26,7 @@ #define EIGEN_SWAP_H /** \class SwapWrapper + * \ingroup Core_Module * * \internal * diff --git a/Eigen/src/Core/Transpose.h b/Eigen/src/Core/Transpose.h index f9c82fb77..3a84b84ff 100644 --- a/Eigen/src/Core/Transpose.h +++ b/Eigen/src/Core/Transpose.h @@ -27,6 +27,7 @@ #define EIGEN_TRANSPOSE_H /** \class Transpose + * \ingroup Core_Module * * \brief Expression of the transpose of a matrix * diff --git a/Eigen/src/Core/Transpositions.h b/Eigen/src/Core/Transpositions.h index 012b74159..6703b1e58 100644 --- a/Eigen/src/Core/Transpositions.h +++ b/Eigen/src/Core/Transpositions.h @@ -26,6 +26,7 @@ #define EIGEN_TRANSPOSITIONS_H /** \class Transpositions + * \ingroup Core_Module * * \brief Represents a sequence of transpositions (row/column interchange) * diff --git a/Eigen/src/Core/TriangularMatrix.h b/Eigen/src/Core/TriangularMatrix.h index 99e8e426c..c66bbb9fa 100644 --- a/Eigen/src/Core/TriangularMatrix.h +++ b/Eigen/src/Core/TriangularMatrix.h @@ -29,6 +29,7 @@ /** \internal * * \class TriangularBase + * \ingroup Core_Module * * \brief Base class for triangular part in a matrix */ @@ -112,6 +113,7 @@ template class TriangularBase : public EigenBase }; /** \class TriangularView + * \ingroup Core_Module * * \brief Base class for triangular part in a matrix * diff --git a/Eigen/src/Core/VectorBlock.h b/Eigen/src/Core/VectorBlock.h index 1840095cf..84040bca1 100644 --- a/Eigen/src/Core/VectorBlock.h +++ b/Eigen/src/Core/VectorBlock.h @@ -27,6 +27,7 @@ #define EIGEN_VECTORBLOCK_H /** \class VectorBlock + * \ingroup Core_Module * * \brief Expression of a fixed-size or dynamic-size sub-vector * diff --git a/Eigen/src/Core/VectorwiseOp.h b/Eigen/src/Core/VectorwiseOp.h index 93373b49b..1867961f5 100644 --- a/Eigen/src/Core/VectorwiseOp.h +++ b/Eigen/src/Core/VectorwiseOp.h @@ -27,6 +27,7 @@ #define EIGEN_PARTIAL_REDUX_H /** \class PartialReduxExpr + * \ingroup Core_Module * * \brief Generic expression of a partially reduxed matrix * @@ -154,6 +155,7 @@ struct ei_member_redux { }; /** \class VectorwiseOp + * \ingroup Core_Module * * \brief Pseudo expression providing partial reduction operations * diff --git a/Eigen/src/Core/util/Constants.h b/Eigen/src/Core/util/Constants.h index 0c24d2fa9..d758c2a0b 100644 --- a/Eigen/src/Core/util/Constants.h +++ b/Eigen/src/Core/util/Constants.h @@ -38,7 +38,7 @@ const int Dynamic = -1; */ const int Infinity = -1; -/** \defgroup flags flags +/** \defgroup flags Flags * \ingroup Core_Module * * These are the possible bits which can be OR'ed to constitute the flags of a matrix or diff --git a/Eigen/src/Core/util/Memory.h b/Eigen/src/Core/util/Memory.h index 21ea45a24..1b89525a8 100644 --- a/Eigen/src/Core/util/Memory.h +++ b/Eigen/src/Core/util/Memory.h @@ -495,6 +495,7 @@ inline static Index ei_first_aligned(const Scalar* array, Index size) /****************************************************************************/ /** \class aligned_allocator +* \ingroup Core_Module * * \brief STL compatible allocator to use with with 16 byte aligned types * diff --git a/doc/Overview.dox b/doc/Overview.dox index 59c043553..72a30ac69 100644 --- a/doc/Overview.dox +++ b/doc/Overview.dox @@ -23,8 +23,8 @@ For a first contact with Eigen, the best place is to have a look at the \ref Get - \ref TutorialArrayClass - \ref TutorialBlockOperations - \ref TutorialAdvancedInitialization - - Coming soon: "Reductions, visitors, and broadcasting" - \ref TutorialLinearAlgebra + - Coming soon: "Reductions, visitors, and broadcasting" - \ref TutorialGeometry - \ref TutorialSparse - \ref QuickRefPage diff --git a/doc/QuickReference.dox b/doc/QuickReference.dox index 1ded32a5f..edd00988d 100644 --- a/doc/QuickReference.dox +++ b/doc/QuickReference.dox @@ -18,18 +18,21 @@ namespace Eigen { top \section QuickRef_Headers Modules and Header files +The Eigen library is divided in a Core module and several additional modules. Each module has a corresponding header file which has to be included in order to use the module. The \c %Dense and \c Eigen header files are provided to conveniently gain access to several modules at once. + - - - - - - - - - - + + + + + + + + + + +
ModuleHeader fileContents
Core\code#include \endcodeMatrix and Array classes, basic linear algebra (including triangular and selfadjoint products), array manipulation
Geometry\code#include \endcodeTransformation, Translation, Scaling, 2D and 3D rotations (Quaternion, AngleAxis)
LU\code#include \endcodeInverse, determinant, LU decompositions (FullPivLU, PartialPivLU) with solver
Cholesky\code#include \endcodeLLT and LDLT Cholesky factorization with solver
SVD\code#include \endcodeSVD decomposition with solver (HouseholderSVD, JacobiSVD)
QR\code#include \endcodeQR decomposition with solver (HouseholderQR, ColPivHouseholerQR, FullPivHouseholderQR)
Eigenvalues\code#include \endcodeEigenvalue, eigenvector decompositions for selfadjoint and non selfadjoint real or complex matrices.
Sparse\code#include \endcodeSparse matrix storage and related basic linear algebra.
\code#include \endcodeIncludes Core, Geometry, LU, Cholesky, SVD, QR, and Eigenvalues
\code#include \endcodeIncludes Dense and Sparse
\link Core_Module Core \endlink\code#include \endcodeMatrix and Array classes, basic linear algebra (including triangular and selfadjoint products), array manipulation
\link Geometry_Module Geometry \endlink\code#include \endcodeTransform, Translation, Scaling, Rotation2D and 3D rotations (Quaternion, AngleAxis)
\link LU_Module LU \endlink\code#include \endcodeInverse, determinant, LU decompositions with solver (FullPivLU, PartialPivLU)
\link Cholesky_Module Cholesky \endlink\code#include \endcodeLLT and LDLT Cholesky factorization with solver
\link Householder_Module Householder \endlink\code#include \endcodeHouseholder transformations; this module is used by several linear algebra modules
\link SVD_Module SVD \endlink\code#include \endcode%SVD decomposition with solver (SVD, JacobiSVD)
\link QR_Module QR \endlink\code#include \endcodeQR decomposition with solver (HouseholderQR, ColPivHouseholderQR, FullPivHouseholderQR)
\link Eigenvalues_Module Eigenvalues \endlink\code#include \endcodeEigenvalue, eigenvector decompositions (EigenSolver, SelfAdjointEigenSolver, ComplexEigenSolver)
\link Sparse_Module Sparse \endlink\code#include \endcode%Sparse matrix storage and related basic linear algebra (SparseMatrix, DynamicSparseMatrix, SparseVector)
\code#include \endcodeIncludes Core, Geometry, LU, Cholesky, %SVD, QR, and Eigenvalues header files
\code#include \endcodeIncludes %Dense and %Sparse header files (the whole Eigen library)
top @@ -486,7 +489,7 @@ Read-write access to sub-vectors: \code vec1.head(n)\endcode\code vec1.head()\endcodethe first \c n coeffs \code vec1.tail(n)\endcode\code vec1.tail()\endcodethe last \c n coeffs \code vec1.segment(pos,n)\endcode\code vec1.segment(pos)\endcode - the \c size coeffs in \n the range [\c pos : \c pos + \c n [ + the \c n coeffs in \n the range [\c pos : \c pos + \c n [ Read-write access to sub-matrices: diff --git a/unsupported/Eigen/NumericalDiff b/unsupported/Eigen/NumericalDiff index 9a5c65d67..2a59c14d5 100644 --- a/unsupported/Eigen/NumericalDiff +++ b/unsupported/Eigen/NumericalDiff @@ -30,7 +30,7 @@ namespace Eigen { /** \ingroup Unsupported_modules - * \defgroup NumericalDiff_Module Numerical differenciation module + * \defgroup NumericalDiff_Module Numerical differentiation module * * \code * #include @@ -51,7 +51,7 @@ namespace Eigen { * want to achieve with Eigen. * * This is why we will not provide wrappers for every great numerical - * differenciation software that exist, but should rather stick with those + * differentiation software that exist, but should rather stick with those * basic ones, that still are useful for testing. * * Also, the \ref NonLinearOptimization_Module needs this in order to -- cgit v1.2.3