New Research: Supply Chain Attack on Axios Pulls Malicious Dependency from npm.Details →
Socket
Book a DemoSign in
Socket

ceres-solver

Package Overview
Dependencies
Maintainers
1
Versions
16
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

ceres-solver

Source
crates.io
Version
0.5.0
Version published
Maintainers
1
Created
Source

ceres-solver-rs

Rust bindings for Ceres Solver

Test pre-commit.ci status docs.rs Crates.io

cargo add ceres-solver --features=source

Ceres Solver is a C++ library for large optimization problems. It can be used to solve Non-linear Least Squares problems with constraints and general optimization problems. Here we provide a Rust binding for this library.

The bindings require Ceres Solver version 2.2, but the bindings may work with older or new versions. Please submit an issue if you need a support of other versions.

This project consists of three crates:

  • ceres-solver is a safe Rust bindings
  • ceres-solver-sys is an unsafe Rust bindings written with the usage of cxx
  • ceres-solver-src is an optional no-code crate to build and distribute a minimal static Ceres Solver library

To build Ceres Solver statically and link it to your project, use source Cargo feature, which would add ceres-solver-src dependency into your project.

Status of the binding support

Current implementation of the binding is not complete. The following list shows the status of the binding support:

  • Non-linear Least squares
    • Problem - basic class for NLLS, supports adding residual blocks, setting boundary conditions, marking parameter blocks to be constant/variable, and solving the problem
    • CostFunction - user provides both residual and Jacobian
    • SizedCostFunction - same but with the residual vector shape is known at compile time
    • AutoDiffCostFunction - user provides residual and Jacobian is computed by automatic differentiation
    • DynamicAutoDiffCostFunction - same but with the residual vector shape is unknown at compile time
    • NumericDiffCostFunction - user provides residual and Jacobian is computed by numerical differentiation
    • CostFunctionToFunctor and DynamicCostFunctionToFunctor - adapter to use CostFunction as a mix of all other cost functions
    • ConditionedCostFunction - adapter to use CostFunction with different conditioning
    • GradientChecker - helper class to check the correctness of the Jacobian
    • NormalPrior - changes a cost function to use a covariance matrix instead of a simple scalar product
    • LossFunction - a function applied to the squared norm of the residual vector, both custom and Ceres stack loss functions are supported
    • Manifold, AutoDiffManifold
    • EvaluationCallback
  • Solver - Solver class itself is not implemented, but the following nested classes are supported:
    • Solver::Options
      • Minimizer options
      • Line search options
      • Trust region options
      • Linear solver options
      • Preconditioner options
      • Sparse and dense linear algebra library selection
      • Setting of the number of threads
      • Bundle adjustment options
      • Logging options
      • Validation of the options
      • Callbacks
    • Solver::Summary
      • Brief and full reports
      • Cost function evaluation statistics
      • Time statistics
  • Jets
  • Covariance estimation
  • General unconstrained minimization

Please don't hesitate to create an issue to request prioritization of any functionality you need.

FAQs

Package last updated on 13 Dec 2025

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts