# levmar: An implementation of the Levenberg-Marquardt algorithm

The Levenberg-Marquardt algorithm is an iterative technique that finds a local minimum of a function that is expressed as the sum of squares of nonlinear functions. It has become a standard technique for nonlinear least-squares problems and can be thought of as a combination of steepest descent and the Gauss-Newton method. When the current solution is far from the correct one, the algorithm behaves like a steepest descent method: slow, but guaranteed to converge. When the current solution is close to the correct solution, it becomes a Gauss-Newton method.

Optional box- and linear constraints can be given. Both single and double precision floating point types are supported.

The actual algorithm is implemented in a C library which is bundled with bindings-levmar which this package depends on. See: http://www.ics.forth.gr/~lourakis/levmar/.

This library consists of two layers:

LevMar.Intermediate: A medium-level layer that wraps the low-level functions from bindings-levmar to provide a more Haskell friendly interface.

LevMar: A high-level layer that uses type-level programming to add extra type safety.

Each layer also has special data-fitting variants:

LevMar.Intermediate.Fitting

LevMar.Fitting

All modules are self-contained; i.e. each module re-exports all the things you need to work with it.

For an example how to use this library see Demo.hs which is included in this package. Demo.hs is a Haskell translation of lmdemo.c from the C levmar library.

A note regarding the license:

This library depends on bindings-levmar which is bundled together with a C library which falls under the GPL. Please be aware of this when distributing programs linked with this library. For details see the description and license of bindings-levmar.

Versions [faq] | 0.1, 0.2, 0.2.1, 0.3, 1.0, 1.1, 1.1.0.1, 1.2, 1.2.0.1, 1.2.1, 1.2.1.1, 1.2.1.2, 1.2.1.3, 1.2.1.4, 1.2.1.5, 1.2.1.6, 1.2.1.7, 1.2.1.8 |
---|---|

Dependencies | base (>=3 && <4.2), bindings-levmar (<0.2) [details] |

License | BSD-3-Clause |

Copyright | (c) 2009 Roel van Dijk & Bas van Dijk |

Author | Roel van Dijk & Bas van Dijk |

Maintainer | vandijk.roel@gmail.com, v.dijk.bas@gmail.com |

Category | numerical |

Source repo | head: darcs get http://code.haskell.org/levmar |

Uploaded | by BasVanDijk at 2009-09-09T14:45:15Z |

Distributions | NixOS:1.2.1.8 |

Downloads | 11692 total (237 in the last 30 days) |

Rating | (no votes yet) [estimated by Bayesian average] |

Your Rating | |

Status | Docs not available [build log] All reported builds failed as of 2016-12-31 [all 5 reports] |

## Modules

- LevMar
- LevMar.Fitting
- LevMar.Intermediate
- LevMar.Intermediate.Fitting

- NFunction
- SizedList
- TypeLevelNat

## Downloads

- levmar-0.1.tar.gz [browse] (Cabal source package)
- Package description (as included in the package)