blob: dc97a01a305e771d20dbedd5111ba6901e14e98a [file] [log] [blame]
 /* SCCS ID @(#)ge.h 1.1 2/4/86 */ /*************************************************************** ****************************************************************** **** Matrix data structure(s) for Gaussian Elimination **** ****************************************************************** ****************************************************************/ /* This file contains the definitions of the structures used in various algorithms for doing Gaussian Elimination. The following gives an array (of length 10) of pointers to floats. float *a[10]; Now assume that each a[i] points to space for an array of floats (gotten by a call to malloc, say). Then the following is true: a[i] can be thought of as a pointer to the i-th array of floats, *(a[i]+j) is the j-th element of the i-th array. The following shows how to reference things for the definition of the FULL structure given below. a->cd is the value of (as apposed to a pointer to) the column dimension. a->rd is the value of (as apposed to a pointer to) the row dimension. a->pd[j] is a pointer to the j-th column (an array of floats). *(a->pd[j]+i) is the i-th element of the j-th column, viz., a(i,j). Here we think, as is natural in C, of all matrices and vectors indexed from 0 insead of 1. */ #define MAXCOL 1000 /* Maximum number of Columns. */ struct FULL { /* Struct definition for the FULL matrix structure. */ int cd; /* Column dimension of the matrix. */ int rd; /* Row Dimension of the matrix. */ float *pd[MAXCOL]; /* Array of pointers to the columns of a matrix. */ }; /* The following macro will get a(r,c) from a matrix in the FULL structure. */ #define elem(a,r,c) (*(a.pd[(c)]+(r))) /* The following macro will get a(r,c) from a pointer to a matrix in the FULL structure. */ #define pelem(a,r,c) (*(a->pd[(c)]+(r))) extern int sgefa(); extern int sgesl(); extern int vexopy();