
// Please don't remove the following lines:
// this is the only way to specify doxygen options
// to api.kde.org's scripts

// DOXYGEN_SET_PROJECT_NAME         = Eigen2
// DOXYGEN_SET_PROJECT_NUMBER       = "2.0-beta6"

// DOXYGEN_SET_CREATE_SUBDIRS         = NO
// DOXYGEN_SET_BRIEF_MEMBER_DESC      = YES
// DOXYGEN_SET_REPEAT_BRIEF           = YES
// DOXYGEN_SET_ALWAYS_DETAILED_SEC    = NO
// DOXYGEN_SET_INLINE_INHERITED_MEMB  = NO
// DOXYGEN_SET_FULL_PATH_NAMES        = NO
// DOXYGEN_SET_SHORT_NAMES            = NO
// DOXYGEN_SET_JAVADOC_AUTOBRIEF      = NO
// DOXYGEN_SET_QT_AUTOBRIEF           = NO
// DOXYGEN_SET_MULTILINE_CPP_IS_BRIEF = NO
// DOXYGEN_SET_DETAILS_AT_TOP         = YES
// DOXYGEN_SET_INHERIT_DOCS           = YES
// DOXYGEN_SET_ALIASES                = "only_for_vectors=This is only for vectors (either row-vectors or column-vectors), i.e. matrices which are known at compile-time to have either one row or one column."                          "array_module=This is defined in the %Array module. \code #include <Eigen/Array> \endcode"                          "lu_module=This is defined in the %LU module. \code #include <Eigen/LU> \endcode"                          "cholesky_module=This is defined in the %Cholesky module. \code #include <Eigen/Cholesky> \endcode"                          "qr_module=This is defined in the %QR module. \code #include <Eigen/QR> \endcode"                          "svd_module=This is defined in the %SVD module. \code #include <Eigen/SVD> \endcode"                          "geometry_module=This is defined in the %Geometry module. \code #include <Eigen/Geometry> \endcode"                          "regression_module=This is defined in the %Regression module. \code #include <Eigen/Regression> \endcode"                          "addexample=\anchor"             "label=\bug"             "redstar=<a href='#warningarraymodule' style='color:red;text-decoration: none;'>*</a>"
// DOXYGEN_SET_DISTRIBUTE_GROUP_DOC   = NO
// DOXYGEN_SET_SUBGROUPING            = YES
// DOXYGEN_SET_TYPEDEF_HIDES_STRUCT   = NO

// DOXYGEN_SET_EXTRACT_ALL            = NO
// DOXYGEN_SET_EXTRACT_PRIVATE        = NO
// DOXYGEN_SET_EXTRACT_STATIC         = NO
// DOXYGEN_SET_EXTRACT_LOCAL_CLASSES  = NO
// DOXYGEN_SET_EXTRACT_LOCAL_METHODS  = NO
// DOXYGEN_SET_EXTRACT_ANON_NSPACES   = NO
// DOXYGEN_SET_HIDE_UNDOC_MEMBERS     = NO
// DOXYGEN_SET_HIDE_UNDOC_CLASSES     = YES
// DOXYGEN_SET_HIDE_FRIEND_COMPOUNDS  = YES
// DOXYGEN_SET_HIDE_IN_BODY_DOCS      = NO
// DOXYGEN_SET_INTERNAL_DOCS          = NO
// DOXYGEN_SET_CASE_SENSE_NAMES       = YES
// DOXYGEN_SET_HIDE_SCOPE_NAMES       = YES
// DOXYGEN_SET_SHOW_INCLUDE_FILES     = YES
// DOXYGEN_SET_INLINE_INFO            = YES
// DOXYGEN_SET_SORT_MEMBER_DOCS       = YES
// DOXYGEN_SET_SORT_BRIEF_DOCS        = YES
// DOXYGEN_SET_SORT_GROUP_NAMES       = NO
// DOXYGEN_SET_SORT_BY_SCOPE_NAME     = NO
// DOXYGEN_SET_GENERATE_TODOLIST      = NO
// DOXYGEN_SET_GENERATE_TESTLIST      = NO
// DOXYGEN_SET_GENERATE_BUGLIST       = NO
// DOXYGEN_SET_GENERATE_DEPRECATEDLIST= NO
// DOXYGEN_SET_SHOW_USED_FILES        = YES
// DOXYGEN_SET_SHOW_DIRECTORIES       = NO
// DOXYGEN_SET_SHOW_FILES             = YES
// DOXYGEN_SET_SHOW_NAMESPACES        = NO

// DOXYGEN_SET_WARN_IF_UNDOCUMENTED   = NO
// DOXYGEN_SET_WARN_NO_PARAMDOC       = NO

// DOXYGEN_SET_INPUT                  = @topdir@/eigen2/Eigen @topdir@/eigen2/doc @topdir@/eigen2/build/doc
// DOXYGEN_SET_EXCLUDE                = *.sh *.in

// DOXYGEN_SET_EXAMPLE_PATH           = @topdir@/eigen2/doc/snippets/ @topdir@/eigen2/doc/examples/ @topdir@/eigen2/build/doc/examples/ @topdir@/eigen2/build/doc/snippets/

// DOXYGEN_SET_FILE_PATTERNS          = *
// DOXYGEN_SET_RECURSIVE              = NO
// DOXYGEN_SET_FILTER_SOURCE_FILES    = YES

// DOXYGEN_SET_SOURCE_BROWSER         = NO
// DOXYGEN_SET_INLINE_SOURCES         = NO
// DOXYGEN_SET_STRIP_CODE_COMMENTS    = YES
// DOXYGEN_SET_REFERENCED_BY_RELATION = YES
// DOXYGEN_SET_REFERENCES_RELATION    = YES
// DOXYGEN_SET_REFERENCES_LINK_SOURCE = YES
// DOXYGEN_SET_VERBATIM_HEADERS       = YES

// DOXYGEN_SET_ALPHABETICAL_INDEX     = NO

// DOXYGEN_SET_HTML_ALIGN_MEMBERS     = YES
// DOXYGEN_SET_GENERATE_TREEVIEW      = NO
// DOXYGEN_SET_FORMULA_FONTSIZE       = 12

// DOXYGEN_SET_GENERATE_LATEX         = NO
// DOXYGEN_SET_EXTRA_PACKAGES         = amssymb

// DOXYGEN_SET_ENABLE_PREPROCESSING   = YES
// DOXYGEN_SET_MACRO_EXPANSION        = YES
// DOXYGEN_SET_EXPAND_ONLY_PREDEF     = YES
// DOXYGEN_SET_SEARCH_INCLUDES        = YES
// DOXYGEN_SET_PREDEFINED             = EIGEN_EMPTY_STRUCT EIGEN_PARSED_BY_DOXYGEN EIGEN_VECTORIZE EIGEN_QT_SUPPORT EIGEN_STRONG_INLINE=inline
// DOXYGEN_SET_EXPAND_AS_DEFINED      = EIGEN_MAKE_SCALAR_OPS EIGEN_MAKE_TYPEDEFS EIGEN_MAKE_TYPEDEFS_ALL_SIZES EIGEN_CWISE_UNOP_RETURN_TYPE EIGEN_CWISE_BINOP_RETURN_TYPE
// DOXYGEN_SET_SKIP_FUNCTION_MACROS   = YES

// DOXYGEN_SET_CLASS_DIAGRAMS         = NO
// DOXYGEN_SET_HIDE_UNDOC_RELATIONS   = NO
// DOXYGEN_SET_HAVE_DOT               = NO
// DOXYGEN_SET_CLASS_GRAPH            = NO
// DOXYGEN_SET_COLLABORATION_GRAPH    = NO
// DOXYGEN_SET_GROUP_GRAPHS           = NO
// DOXYGEN_SET_UML_LOOK               = NO
// DOXYGEN_SET_TEMPLATE_RELATIONS     = NO
// DOXYGEN_SET_INCLUDE_GRAPH          = NO
// DOXYGEN_SET_INCLUDED_BY_GRAPH      = NO
// DOXYGEN_SET_CALL_GRAPH             = NO
// DOXYGEN_SET_CALLER_GRAPH           = NO
// DOXYGEN_SET_GRAPHICAL_HIERARCHY    = NO
// DOXYGEN_SET_DIRECTORY_GRAPH        = NO


o /** \mainpage Eigen

<h3>If you see this page, then you have not properly generated the documentation. Namely, you have run doxygen from the source directory, which is not appropriate for generating the documentation of Eigen.</h3>

In order to generate the documentation of Eigen, please follow these steps:
<ul>
  <li>make sure you have the required software installed: cmake, doxygen, and a C++ compiler.
  <li>create a new directory, which we will call the "build directory", outside of the Eigen source directory.</li>
  <li>enter the build directory</li>
  <li>configure the project: <pre>cmake /path/to/source/directory</pre></li>
  <li>now generate the documentaion: <pre>make doc</pre> or, if you have two CPUs, <pre>make doc -j2</pre> Note that this will compile the examples, run them, and integrate their output into the documentation, which can take some time.</li>
</ul>

After doing that, you will find the HTML documentation in the doc/html/ subdirectory of the build directory.

<h2>Note however that the documentation is available online here:
<a href="http://eigen.tuxfamily.org/api/">http://eigen.tuxfamily.org/api</a></h2>

*/
