typedef struct { double r, i; } doublecomplex; #define DVEC(A) int A##n, double*A##p #define CVEC(A) int A##n, doublecomplex*A##p #define DMAT(A) int A##r, int A##c, double*A##p #define CMAT(A) int A##r, int A##c, doublecomplex*A##p #define AT(M,r,c) (M##p[(r)*sr+(c)*sc]) /*-----------------------------------------------------*/ int c_scale_vector(double s, DVEC(x), DVEC(y)) { int k; for (k=0; k<=yn; k++) { yp[k] = s*xp[k]; } return 0; } /*-----------------------------------------------------*/ int c_diag(int ro, DMAT(m),DVEC(y),DMAT(z)) { int i,j,sr,sc; if (ro==1) { sr = mc; sc = 1;} else { sr = 1; sc = mr;} for (j=0; j