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 (will be) 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/LAPACK 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 ↩