PIPS
|
Go to the source code of this file.
Macros | |
#define | MATRICE_UNDEFINED ((matrice) NULL) |
#define | MATRICE_NULLE ((matrice) NULL) |
#define | matrice_new(n, m) ((matrice) malloc(sizeof(Value)*((n*m)+1))) |
Allocation et desallocation d'une matrice. More... | |
#define | matrice_free(m) (free((char *) (m))) |
#define | ACCESS(matrix, column, i, j) ((matrix)[(((j)-1)*(column))+(i)]) |
Macros d'acces aux elements d'une matrice. More... | |
#define | DENOMINATOR(matrix) ((matrix)[0]) |
int DENOMINATEUR(matrix): acces au denominateur global d'une matrice matrix La combinaison *(&()) est necessaire pour avoir des parentheses autour de matrix[0] et pour pouvoir simultanement utiliser cette macro comme lhs. More... | |
#define | matrice_triangulaire_inferieure_p(a, n, m) matrice_triangulaire_p(a,n,m,true) |
bool matrice_triangulaire_inferieure_p(matrice a, int n, int m): test de triangularite de la matrice a More... | |
#define | matrice_triangulaire_superieure_p(a, n, m) matrice_triangulaire_p(a,n,m,false) |
bool matrice_triangulaire_superieure_p(matrice a, int n, int m): test de triangularite de la matrice a More... | |
#define | ACC_ELEM(matrix, column, i, j, level) (matrix[((j)-1+(level))*(column) + (i) + (level)]) |
FI: Corinne, peux-tu expliquer la raison d'etre de cette macro? More... | |
#define | VALIDATION 0 |
FI: Corinne, pourrais-tu nous eclairer sur la signification de ces constantes? More... | |
#define | MATRIX 0 |
FI #define NULL 0. More... | |
Typedefs | |
typedef Value * | matrice |
package matrice More... | |
FI: Corinne, peux-tu expliquer la raison d'etre de cette macro?
d'apres ce que je comprends de la suite, ca permet de definir des sous-matrices dont le coin superieur droit (i.e. le premier element) se trouve sur la diagonal?
Definition at line 112 of file matrice-local.h.
Macros d'acces aux elements d'une matrice.
int ACCESS(int * matrix, int column, int i, int j): acces a l'element (i,j) de la matrice matrix, dont la taille des colonnes, i.e. le nombre de lignes, est column.
Definition at line 86 of file matrice-local.h.
int DENOMINATEUR(matrix): acces au denominateur global d'une matrice matrix La combinaison *(&()) est necessaire pour avoir des parentheses autour de matrix[0] et pour pouvoir simultanement utiliser cette macro comme lhs.
#define DENOMINATOR(matrix) *(&((matrix)[0]))
Definition at line 93 of file matrice-local.h.
#define matrice_free | ( | m | ) | (free((char *) (m))) |
Definition at line 78 of file matrice-local.h.
Allocation et desallocation d'une matrice.
Definition at line 77 of file matrice-local.h.
#define MATRICE_NULLE ((matrice) NULL) |
Definition at line 74 of file matrice-local.h.
#define matrice_triangulaire_inferieure_p | ( | a, | |
n, | |||
m | |||
) | matrice_triangulaire_p(a,n,m,true) |
bool matrice_triangulaire_inferieure_p(matrice a, int n, int m): test de triangularite de la matrice a
Definition at line 98 of file matrice-local.h.
#define matrice_triangulaire_superieure_p | ( | a, | |
n, | |||
m | |||
) | matrice_triangulaire_p(a,n,m,false) |
bool matrice_triangulaire_superieure_p(matrice a, int n, int m): test de triangularite de la matrice a
Definition at line 104 of file matrice-local.h.
#define MATRICE_UNDEFINED ((matrice) NULL) |
Definition at line 73 of file matrice-local.h.
#define MATRIX 0 |
FI #define NULL 0.
Definition at line 120 of file matrice-local.h.
#define VALIDATION 0 |
FI: Corinne, pourrais-tu nous eclairer sur la signification de ces constantes?
Definition at line 118 of file matrice-local.h.
package matrice
Neil Butler, Corinne Ancourt, Francois Irigoin, Yi-qing Yang Les matrices sont des matrices pleines, a coefficients rationnels.
Les matrices sont representes par des tableaux d'entiers mono-dimensionnels dont l'element 0 represente le denominateur global. Elles sont stockees par colonne ("column-major"), comme en Fortran. Les indices commencent a 1, toujours comme en Fortran et non comme en C. Les deux dimensions sont implicites et doivent etre passees en parametre avec la matrice dans les appels de procedures.
Le denominateur doit etre strictement positif, i.e. plus grand ou egal a un. Un denominateur nul n'aurait pas de sens. Un denominateur negatif doublerait le nombre de representations possibles d'une matrice.
Les matrices renvoyees par certaines routines, comme matrice_multiply(), ne sont pas normalisees par le pgcd des coefficients et du denominateur pour des raisons d'efficacite. Mais les routines de test, comme matrice_identite_p(), supposent leurs arguments normalises.
Il faudrait sans doute introduire deux niveaux de procedure, un niveau externe sur garantissant la normalisation, et un niveau interne efficace sans normalisation automatique.
La bibliotheque utilise une notion de sous-matrice, definie systematiquement par un parametre appele "level". Seuls les elements dont les indices de lignes et de colonnes sont superieurs a level+1 (ou level? FI->CA) sont pris en consideration. Il s'agit donc de sous-matrice dont le premier element se trouve sur la diagonale de la matrice complete et dont le dernier element et le dernier element de la matrice complete.
Note: en cas detection d'incoherence, Neil Butler renvoyait un code d'erreur particulier; Francois Irigoin a supprime ces codes de retour et a traite les exceptions par des appels a assert(), et indirectement a abort()
Definition at line 71 of file matrice-local.h.