# minpack calling conventions - avram - a virtual machine code interpreter
avram - a virtual machine code interpreter

#### D.13.1 `minpack` calling conventions

The `minpack` library solves a similar problem to that of the `kinsol` library (kinsol), and the two libraries have identical calling conventions at the level of the virtual code interface.

The `hybrd` and `lmdif` functions take input arguments of the form `(`f`,(`i`,`o`))`, whereas `hybrj`, `lmder`, and `lmstr` take arguments of the form `((`f`,`j`),(`i`,`o`))`. The interpretations of these parameters are explained in kinsol input parameters.

For the `lmstr` function, the Jacobian function j takes an argument `(`m`,`v`)` and returns only the m-th row of the Jacobian matrix. For `lmder` and `hybrj`, the Jacobian function takes only an input vector v and returns the whole matrix. These specifications are also explained further in relation to the `kinsol` library.

The output from any minpack function is a vector v satisfying f`(`v`) =` o to the best possible tolerance if a solution is found. A range of tolerances over ten orders of magnitude is sampled starting from `1e-15`. If no solution is found, an empty list is returned.