HP MLIB User's Guide Vol. 2 7th Ed.

Appendix A 1091
Examples
Figure A-1 Calling VECLIB subroutines from Fortran and C
Fortran:
PROGRAM MAIN
INTEGER*4 LDA, N, IER, JOB
PARAMETER ( LDA = 10 )
INTEGER*4 IPVT(LDA)
REAL*8 A(LDA,LDA), B(LDA)
N = 6
JOB = 0 ! TO SOLVE COLUMN-MAJOR-STORED SYSTEM
CALL DGEFA (A, LDA, N, IPVT, IER)
IF ( IER .EQ. 0 ) THEN
CALL DGESL (A, LDA, N, IPVT, B, JOB)
ELSE
WRITE (6,*) "singular matrix"
END IF
END
C:
#include <stdio.h>
#include <veclib.h>
#define LDA 10
main ()
{
int lda = LDA;
int ier;
int n = 6;
int job = 1; /* to solve transpose of
row-major-stored system */
int ipvt[LDA];
double a[LDA][LDA];
double b[LDA];
dgefa (a, &lda, &n, ipvt, &ier);
if ( ier == 0 )
dgesl (a, &lda, &n, ipvt, b, &job);
else
printf ("singular matrix\n");
}