.. Ceres Solver documentation master file, crea`%ted by
   sphinx-quickstart on Sat Jan 19 00:07:33 2013.
   You can adapt this file completely to your liking, but it should at least
   contain the root `toctree` directive.

============
Ceres Solver
============

Ceres Solver is a portable C++ library for solving non-linear least
squares problems.

* Download the latest stable `release
  <https://ceres-solver.googlecode.com/files/ceres-solver-1.6.0.tar.gz>`_
  or clone the `repository
  <https://ceres-solver.googlesource.com/ceres-solver>`_

* Read the :ref:`chapter-tutorial`

* Browse the :ref:`chapter-modeling` and :ref:`chapter-solving`

* Join the `mailing list
  <https://groups.google.com/forum/?fromgroups#!forum/ceres-solver>`_
  and ask questions.

* File bugs, feature requests in the `issue tracker
  <https://code.google.com/p/ceres-solver/issues/list>`_.


.. toctree::
   :maxdepth: 1
   :hidden:

   introduction
   building
   tutorial
   modeling
   solving
   reading
   contributing
   acknowledgements
   version_history
   bibliography
   license
   citation
