#ifndef _SMLACM_H_ #define _SMLACM_H_ /* smlacm2.h: Small Matrix Library access by macros */ /* This version is for a->m declared as REAL** */ /***********************************************************/ #define MatRows(a) ((a)->rows) #define MatCols(a) ((a)->cols) /* 0-based indexing, append "0" to macro or function name */ #ifdef SML_BY_ROW #define MatEl0(a,i,j) ((a)->m[i][j]) #endif #ifdef SML_BY_COL #define MatEl0(a,i,j) ((a)->m[j][i]) #endif #define MatEl(a,i,j) MatEl0((a),(i)-1,(j)-1) #define MatGet(a,i,j) MatEl(a,i,j) #define MatSet(a,i,j,x) MatEl(a,i,j)=(x) #define MatSetPE(a,i,j,x) MatEl(a,i,j)+=(x) #define MatSetME(a,i,j,x) MatEl(a,i,j)-=(x) #define MatSetTE(a,i,j,x) MatEl(a,i,j)*=(x) #define MatSetDE(a,i,j,x) MatEl(a,i,j)/=(x) #define MatGet0(a,i,j) MatEl0(a,i,j) #define MatSet0(a,i,j,x) MatEl0(a,i,j)=(x) #define MatSetPE0(a,i,j,x) MatEl0(a,i,j)+=(x) #define MatSetME0(a,i,j,x) MatEl0(a,i,j)-=(x) #define MatSetTE0(a,i,j,x) MatEl0(a,i,j)*=(x) #define MatSetDE0(a,i,j,x) MatEl0(a,i,j)/=(x) #endif