6 #ifndef matrix_header_included
7 #define matrix_header_included
74 int number_of_columns;
78 #define MATRIX_UNDEFINED ((Pmatrix) NULL)
81 #define matrix_free(m) (free(m), (m)=(Pmatrix) NULL)
88 #define MATRIX_ELEM(matrix, i, j) \
89 ((matrix)->coefficients[(((j)-1)*((matrix)->number_of_lines))+((i)-1)])
94 #define MATRIX_DENOMINATOR(matrix) ((matrix)->denominator)
95 #define MATRIX_NB_LINES(matrix) ((matrix)->number_of_lines)
96 #define MATRIX_NB_COLUMNS(matrix) ((matrix)->number_of_columns)
101 #define matrix_triangular_inferieure_p(a) \
102 matrix_triangular_p(a, true)
107 #define matrix_triangular_superieure_p(a) \
108 matrix_triangular_p(a, false)
114 #define SUB_MATRIX_ELEM(matrix, i, j, level) \
115 (matrix->coefficients[((j)-1+(level))* \
116 ((matrix)->number_of_lines) + (i) - 1 + (level)])
void matrix_transpose(const Pmatrix, Pmatrix)
void matrix_transpose(Pmatrix a, Pmatrix a_t): transpose an (nxm) rational matrix a into a (mxn) rati...
void ordinary_sub_matrix(Pmatrix, Pmatrix, int, int, int, int)
void ordinary_sub_matrix(Pmatrix A, A_sub, int i1, i2, j1, j2) input : a initialized matrix A,...
void matrix_triangular_inversion(Pmatrix, Pmatrix, bool)
void matrix_triangular_inversion(Pmatrix h, Pmatrix inv_h,bool infer) calcul de l'inversion du matric...
void matrix_swap_rows(Pmatrix, int, int)
void matrix_swap_rows(Pmatrix a, int r1, int r2): exchange rows r1 and r2 of an (nxm) rational matrix...
void matrix_unimodular_inversion(Pmatrix, Pmatrix)
void matrix_unimodular_inversion(Pmatrix u, Pmatrix inv_u) calcul de l'inversion de la matrice unimod...
void matrix_hermite(Pmatrix, Pmatrix, Pmatrix, Pmatrix, Value *, Value *)
hermite.c
Value * matrix_elem_ref(Pmatrix, int, int)
matrix.c
int matrix_dim_hermite(Pmatrix)
Calcul de la dimension de la matrice de Hermite H.
int matrix_hermite_rank(Pmatrix)
int matrix_hermite_rank(Pmatrix a): rang d'une matrice en forme de hermite
void matrix_coeff_nnul(Pmatrix, int *, int *, int)
void matrix_coeff_nnul(Pmatrix MAT, int * lg_nnul, int * cl_nnul, int level) renvoie les coordonnees ...
bool matrix_triangular_unimodular_p(Pmatrix, bool)
bool matrix_triangular_unimodular_p(Pmatrix Z, bool inferieure) test de la triangulaire et unimodulai...
void matrix_sub_determinant(Pmatrix, int, int, Value[])
void matrix_perm_col(Pmatrix, int, int)
void matrix_perm_col(Pmatrix MAT, int k, int level): Calcul de la matrice de permutation permettant ...
void matrix_subtraction_column(Pmatrix, int, int, Value)
void matrix_subtraction_column(Pmatrix MAT,int c1,int c2,int x): Soustrait x fois la colonne c2 de la...
void matrix_multiply(const Pmatrix, const Pmatrix, Pmatrix)
void matrix_multiply(Pmatrix a, Pmatrix b, Pmatrix c): multiply rational matrix a by rational matrix ...
void matrix_print(Pmatrix)
void matrix_print(matrice a): print an (nxm) rational matrix
void matrix_normalize(Pmatrix)
void matrix_normalize(Pmatrix a)
void matrix_unimodular_triangular_inversion(Pmatrix, Pmatrix, bool)
inversion.c
void matrix_maj_col(Pmatrix, Pmatrix, int)
void matrix_maj_col(Pmatrix A, matrice P, int level): Calcul de la matrice permettant de remplacer ch...
void matrix_general_inversion(Pmatrix, Pmatrix)
void matrix_general_inversion(Pmatrix a; Pmatrix inv_a) calcul de l'inversion du matrice general.
int matrix_line_el(Pmatrix, int)
int matrix_line_el(Pmatrix MAT, int level) renvoie le numero de colonne absolu du premier element non...
bool matrix_nulle_p(Pmatrix)
bool matrix_nulle_p(Pmatrix Z): test de nullite de la matrice Z
void matrix_identity(Pmatrix, int)
void matrix_identity(Pmatrix ID, int level) Construction d'une sous-matrice identity dans ID(level+1....
Pmatrix matrix_new(int, int)
cproto-generated files
void matrix_subtraction_line(Pmatrix, int, int, Value)
void matrix_subtraction_line(Pmatrix MAT,int r1,int r2,int x): Soustrait x fois la ligne r2 de la lig...
void matrix_perm_line(Pmatrix, int, int)
void matrix_perm_line(Pmatrix MAT, int k, int level): Calcul de la matrice de permutation permettant...
void matrix_pr_quot(FILE *, Value, Value)
Value matrix_elem(Pmatrix, int, int)
void matrix_swap_columns(Pmatrix, int, int)
void matrix_swap_columns(Pmatrix a, int c1, int c2): exchange columns c1,c2 of an (nxm) rational matr...
void matrix_fprint(FILE *, Pmatrix)
matrix_io.c
bool matrix_identity_p(Pmatrix, int)
bool matrix_identity_p(Pmatrix ID, int level) test d'une sous-matrice dans ID(level+1....
void matrix_substract(Pmatrix, Pmatrix, Pmatrix)
void matrix_substract(Pmatrix a, Pmatrix b, Pmatrix c): substract rational matrix c from rational mat...
void matrix_add(Pmatrix, Pmatrix, Pmatrix)
a = b + c
void matrix_determinant(Pmatrix, Value[])
determinant.c
void matrix_smith(Pmatrix, Pmatrix, Pmatrix, Pmatrix)
smith.c
void matrix_uminus(Pmatrix, Pmatrix)
void matrix_uminus(A, mA)
void matrix_fscan(FILE *, Pmatrix *, int *, int *)
void matrix_fscan(FILE * f, matrice * a, int * n, int * m): read an (nxm) rational matrix in an ASCII...
int matrix_line_nnul(Pmatrix, int)
sub-matrix.c
int matrix_col_el(Pmatrix, int)
int matrix_col_el(Pmatrix MAT, int level) renvoie le numero de ligne absolu du premier element non nu...
void matrix_diagonal_inversion(Pmatrix, Pmatrix)
void matrix_diagonal_inversion(Pmatrix s,Pmatrix inv_s) calcul de l'inversion du matrice en forme red...
void matrix_nulle(Pmatrix)
void matrix_nulle(Pmatrix Z): Initialisation de la matrice Z a la valeur matrice nulle
bool matrix_diagonal_p(Pmatrix)
bool matrix_diagonal_p(Pmatrix Z): test de nullite de la matrice Z
void matrix_min(Pmatrix, int *, int *, int)
void matrix_min(Pmatrix MAT, int * i_min, int * j_min, int level): Recherche des coordonnees (*i_min,...
void matrix_maj_line(Pmatrix, Pmatrix, int)
void matrix_maj_line(Pmatrix A, matrice Q, int level): Calcul de la matrice permettant de remplacer c...
void insert_sub_matrix(Pmatrix, Pmatrix, int, int, int, int)
void insert_sub_matrix(A, A_sub, i1, i2, j1, j2) input: matrix A and smaller A_sub output: nothing mo...
bool matrix_triangular_p(Pmatrix, bool)
bool matrix_triangular_p(Pmatrix Z, bool inferieure): test de triangularite de la matrice Z
int matrices_to_1D_lattice(Pmatrix, Pmatrix, int, int, int, Value *, Value *)
Under the assumption A x = B, A[n,m] and B[n], compute the 1-D lattice for x_i of x[m] as.
bool matrix_equality(Pmatrix, Pmatrix)
bool matrix_equality(Pmatrix A, Pmatrix B) test de l'egalite de deux matrices A et B; elles doivent a...
void matrix_normalizec(Pmatrix)
void matrix_normalizec(Pmatrix MAT): Normalisation des coefficients de la matrice MAT,...
void matrix_assign(Pmatrix, Pmatrix)
void matrix_assign(Pmatrix A, Pmatrix B) Copie de la matrice A dans la matrice B