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, LaTeX, 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 -j3</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:</h2>
<a href="http://eigen.tuxfamily.org/dox/">http://eigen.tuxfamily.org/dox</a> for the stable version and
<a href="http://eigen.tuxfamily.org/dox-devel/">http://eigen.tuxfamily.org/dox-devel</a> for the development branch version.
*/
