Ceres Solver

Ceres Solver 1 is an open source C++ library for modeling and solving large, complicated optimization problems. It can be used to solve Non-linear Least Squares problems with bounds constraints and general unconstrained optimization problems. It is a mature, feature rich, and performant library that has been used in production at Google since 2010. For more, see Why?.

ceres-solver@googlegroups.com is the place for discussions and questions about Ceres Solver. We use the GitHub Issue Tracker to manage bug reports and feature requests.

Cite Us

If you use Ceres Solver for a publication, please cite it as:

  author = {Agarwal, Sameer and Mierle, Keir and The Ceres Solver Team},
  title = {{Ceres Solver}},
  license = {Apache-2.0},
  url = {https://github.com/ceres-solver/ceres-solver},
  version = {2.1},
  year = {2022},
  month = {3}



While there is some debate as to who invented the method of Least Squares [Stigler], there is no questioning the fact that it was Carl Friedrich Gauss who brought it to the attention of the world. Using just 22 observations of the newly discovered asteroid Ceres, Gauss used the method of least squares to correctly predict when and where the asteroid will emerge from behind the Sun [TenenbaumDirector]. We named our solver after Ceres to celebrate this seminal event in the history of astronomy, statistics and optimization.