namespace Eigen {

o /** \mainpage Eigen

<div class="eimainmenu">
    \ref GettingStarted       "Getting started"
  | \ref TutorialMatrixClass  "Tutorial"
  | \ref QuickRefPage         "Short reference"
</div>

This is the API documentation for Eigen3. You can <a href="eigen-doc.tgz">download</a> it as a tgz archive for offline reading.

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 feature, or to have a quick look at the API. For Matlab users, there is also a <a href="AsciiQuickReference.txt">ASCII quick reference</a> 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
  - \ref GettingStarted
  - \b Tutorial
    - \ref TutorialMatrixClass
    - \ref TutorialMatrixArithmetic
    - \ref TutorialArrayClass
    - \ref TutorialBlockOperations
    - \ref TutorialAdvancedInitialization
    - \ref TutorialLinearAlgebra
    - \ref TutorialReductionsVisitorsBroadcasting
    - \ref TutorialGeometry
    - \ref TutorialSparse
    - \ref TutorialMapClass
  - \ref QuickRefPage
  - <b>Advanced topics</b>
    - \ref TopicAliasing
    - \ref TopicLazyEvaluation
    - \ref TopicLinearAlgebraDecompositions
    - \ref TopicCustomizingEigen
    - \ref TopicMultiThreading
    - \ref TopicPreprocessorDirectives
    - \ref TopicStorageOrders
    - \ref TopicInsideEigenExample
    - \ref TopicWritingEfficientProductExpression
    - \ref TopicClassHierarchy
    - \ref TopicFunctionTakingEigenTypes
    - \ref TopicTemplateKeyword
    - \ref TopicUsingIntelMKL
  - <b>Topics related to alignment issues</b>
    - \ref TopicUnalignedArrayAssert
    - \ref TopicFixedSizeVectorizable
    - \ref TopicStlContainers
    - \ref TopicStructHavingEigenMembers
    - \ref TopicPassingByValue
    - \ref TopicWrongStackAlignment
  
   

Want more? Checkout the \ref Unsupported_modules "unsupported modules" <a href="unsupported/index.html">documentation</a>.

*/

}
