## LAPACK

On FreeBSD, install the LAPACK package with:

`# pkg install math/lapack`

### Example

The example program solves the following equation using LAPACK:

The LAPACK subroutine
`sgesv()`

computes the solution to a real system of linear equations
*A* · *X* = *B*, where
*A* is an *n*-by-*n* matrix and *X* and *B*
are *n*-by-*nrhs* matrices.

`call sgesv(n, nrhs, a, lda, ipiv, b, ldb, info)` |
||
---|---|---|

Argument | Type | Description |

`n` |
integer |
The number of linear equations, i.e., the order of the matrix
A (n ≥ 0). |

`nrhs` |
integer |
The number of right hand sides, i.e., the number of columns
of the matrix B (nrhs ≥ 0). |

`a` |
real, dimension(lda, *) |
Array of type `real` of size
lda-by-n. |

`lda` |
integer |
The leading dimension of array A (lda ≥
max(1, n)). |

`ipiv` |
integer, dimension(*) |
The pivot indices that define the permutation matrix. |

`b` |
real, dimension(ldb, *) |
On entry, the n-by-nrhs matrix of right hand
side matrix b. On exit, if info = 0, the
n-by-nrhs solution matrix. |

`ldb` |
integer |
The leading dimension of array B (ldb ≥
max(1, n)). |

`info` |
integer |
= 0: successful exit; < 0: if info = −i, the i-th
argument had an illegal value;> 0: if info = i, U(i,
i) is zero. The factorisation has been completed, but
the factor U is exactly singular, so the solution could
not be computed. |

```
! example.f90
program main
! Example program that solves the matrix equation A * X = B using LAPACK.
implicit none
real :: a(2, 2) ! Matrix A.
real :: b(2) ! Matrix B.
real :: pivot(2) ! Pivot indices (list of swap operations).
integer :: rc ! Return code.
a = reshape([ 2., 3., 1., 1. ], [ 2, 2 ])
b = [ 5., 6. ]
call sgesv(2, 1, a, 2, pivot, b, 2, rc)
if (rc == 0) then
print *, 'Solution [x, y]: ', b
else
print *, 'Error: ', rc
end if
end program main
```

Compile, link, and run the example with:

```
$ gfortran9 -L/usr/local/lib/ -o example example.f90 -llapack -lblas
$ ./example
Solution [x, y]: 0.999999940 3.00000024
```

If LAPACK and BLAS are compiled as static libraries, point the library
search path `-L`

to their actual location.

### LAPACK95

LAPACK95 is a Fortran 95 interface to the FORTRAN 77 LAPACK library. It brings several improvements over the original LAPACK package, by using language features introduced in Fortran 95, like assumed-shape arrays, optional arguments, and generic interfaces. The underlying LAPACK code remains unchanged, as LAPACK95 provides only interfaces to existing routines. The userâ€™s guide and an index of all routines are available online.

#### Installation

Packages of LAPACK95 should be available for most Unix-like operating systems. On FreeBSD, install the package with:

`# pkg install math/lapack95`

If you choose to build LAPACK95 from Ports, you can either link the BLAS reference implementation or the optimised ATLAS library. But LAPACK95 can be compiled as well simply from source.

< BLAS | [Index] | ncurses > |