www.pudn.com > ica_C.rar > matrix.h


#include 
#include 
#include 

#define EPS 1E-6
#define EPS_HYOUJI 1e-10
#define MAX_ITER 100

#define SCALAR double
typedef SCALAR *vector, **matrix;

extern void error(char *message);
extern vector new_vector(int n);
extern matrix new_matrix(int nrow, int ncol);
extern void free_vector(vector v);
extern void free_matrix(matrix a);
extern void zeros(int n, int m, matrix a);
extern void eye(int n, matrix a);
extern void copy_mat(int n, int m, matrix a, matrix c);
extern void printmat(int nrow, int mcol, matrix a);
extern void printvec(vector v, int n);
extern SCALAR innerproduct(int n, vector u, vector v);
extern void sum_mat(int n, int m, matrix a, matrix b, matrix c);
extern void sub_mat(int n, int m, matrix a, matrix b, matrix c);
extern void multiply(int n, int l, int m, matrix a, matrix b, matrix c);
extern void mult_cmp(int n, int l, int m, 
		     matrix a_r, matrix a_i, 
		     matrix b_r, matrix b_i,
		     matrix c_r, matrix c_i,
		     matrix tmp_r, matrix tmp_i);
extern void mult2(int n, matrix a, matrix b);
extern SCALAR powvec(int dim, vector data);
extern void trans_mat(int n, int m, matrix a, matrix c);
extern SCALAR matinv(int n, matrix a, matrix a_inv);
extern SCALAR matinv2(int n, matrix a, matrix a_inv);
extern SCALAR eig2(SCALAR a, SCALAR b, SCALAR c, SCALAR *x, SCALAR *y);
extern SCALAR eig3(matrix A, SCALAR *x, SCALAR *y, SCALAR *z);
extern void eigen(int n, matrix a, vector d, vector e);

extern SCALAR matinv_complex(int dim, 
			     matrix in_r, matrix in_i, 
			     matrix out_r,matrix out_i);