hompack is a package for finding zeros or fixed points of nonlinear systems using globally convergent probability-one homotopy algorithms.
The first version of the library, named HOMPACK, was originally released in 1987 1, and the last "official" update, named HOMPACK90, dates from 1997 2.
hompack is a modernization of the HOMPACK90 code 3, intended to make the library easier to use and maintain. The main changes include:
- Conversion from fixed-form (
.f) to free-form (.f90). - Conversion from upper case to lower case.
- Modularization.
- Removal of
DATAstatements, labeled do loops, and (most)gotos. - Addition of
intent(in/out)to all procedures. - Addition of explicit interfaces to BLAS routines.
- Implementation of a C API.
- Automatic code documentation with FORD.
- Python bindings, available in the companion repo hompack-python.
| Version | Year | Standard |
|---|---|---|
| hompack | 202x | Fortran 2018 |
| HOMPACK90 | 1997 | FORTRAN 90 |
| HOMPACK | 1987 | FORTRAN 77 |
hompack depends on a number of functions from BLAS and LAPACK.
The build configuration files provided with the code (see further below) assume a suitable BLAS/LAPACK library is locally installed. Alternatively, the subset of required functions is available in ./external.
The easiest way to build/test the code and run the examples is by means of fpm.
To build the library, do:
fpm build --profile releaseTo run the tests, do:
fpm test --profile releaseTo run the provided examples, do:
fpm run --example "example_name" --profile releaseFirst, setup the build:
meson setup builddir -Dbuild_tests=trueTo build the libraries, do:
meson compile -C builddirTo run the tests, do:
meson test -C builddir- The original
hompackcode is public domain. - Modifications introduced in this project are covered under the MIT license.
Footnotes
-
Layne T. Watson, Stephen C. Billups, and Alexander P. Morgan. 1987. Algorithm 652: HOMPACK: a suite of codes for globally convergent homotopy algorithms. ACM Trans. Math. Softw. 13, 3 (Sept. 1987), 281–310. https://doi.org/10.1145/29380.214343 ↩
-
Layne T. Watson, Maria Sosonkina, Robert C. Melville, Alexander P. Morgan, and Homer F. Walker. 1997. Algorithm 777: HOMPACK90: a suite of Fortran 90 codes for globally convergent homotopy algorithms. ACM Trans. Math. Softw. 23, 4 (Dec. 1997), 514–549. https://doi.org/10.1145/279232.279235 ↩