LAPACK — Linear Algebra PACKage

홈페이지: http://www.netlib.org/lapack/

가장 대표적이고 가잘 빠르다고 소문난 포트란 90 버전으로 작성된 선형 대수 라이브러리.
많은 선형대수 라이브러리들이 LAPACK을 참조하고 있다고함.
LAPACK은 C 바인딩도 자체적으로 지원하며, BLAS 라이브러가 내장되어있음.

LAPACK is written in Fortran 90 and provides routines for solving systems of simultaneous linear equations, least-squares solutions of linear systems of equations, eigenvalue problems, and singular value problems. The associated matrix factorizations (LU, Cholesky, QR, SVD, Schur, generalized Schur) are also provided, as are related computations such as reordering of the Schur factorizations and estimating condition numbers. Dense and banded matrices are handled, but not general sparse matrices. In all areas, similar functionality is provided for real and complex matrices, in both single and double precision.

아래의 코드는 MinGW에서 테스트한 코드이며, 컴파일 방법은 아래와 같음.

gcc sample.c -llapack -lblas -lm -lgfortran

아래는 테스트 코드.

#include<stdio.h>
#define N 3
 
double A[N*N];
double x[N];
 
int main(void)
{
  static int i;
  static long int n=N,inc=1,info,piv[N];
 
  A[0]=1.; A[1]=3.; A[2]=1.;
  A[3]=1.; A[4]=1.;A[5]=-2.;
  A[6]=1.; A[7]=-3.;A[8]=-5.;
  x[0]=3.; x[1]=1.; x[2]=-6.;
 
  printf("N = %d\n",N);
  dgesv_(&n,&inc,A,&n,piv,x,&n,&info);
  for(i=0; i<N; ++i) printf("%lf\n", x[i]);
  return(0);
}

다운로드: 3.4.0