PIPS
|
#include <stdio.h>
#include <stdlib.h>
#include "linear_assert.h"
#include "boolean.h"
#include "arithmetique.h"
#include "matrice.h"
Go to the source code of this file.
Macros | |
#define | MALLOC(s, t, f) malloc((unsigned)(s)) |
package matrice More... | |
#define | FREE(s, t, f) free((char *)(s)) |
Functions | |
void | matrice_smith (matrice MAT, int n, int m, matrice P, matrice D, matrice Q) |
void matrice_smith(matrice MAT, int n, int m, matrice P, matrice D, matrice Q): Calcul de la forme reduite de Smith D d'une matrice entiere MAT et des deux matrices de changement de base unimodulaires associees, P et Q. More... | |
void matrice_smith(matrice MAT, int n, int m, matrice P, matrice D, matrice Q): Calcul de la forme reduite de Smith D d'une matrice entiere MAT et des deux matrices de changement de base unimodulaires associees, P et Q.
smith.c
D est la forme reduite de Smith, P et Q sont des matrices unimodulaires; telles que D == P x MAT x Q
(c.f. Programmation Lineaire. M.MINOUX. (83))
int MAT[n,m] : matrice int n : nombre de lignes de la matrice MAT int m : nombre de colonnes de la matrice MAT int P[n,n] : matrice int D[n,m] : matrice (quasi-diagonale) reduite de Smith int Q[m,m] : matrice
Les 3 matrices P(nxn), Q(mxm) et D(nxm) doivent etre allouees avant le calcul.
Note: les determinants des matrices MAT, P, Q et D ne sont pas utilises.
le plus petit element sur la diagonale
le rest de la division par ALL
precondition sur les parametres
le transformation n'est pas fini.
MAT | AT |
Definition at line 68 of file smith.c.
References ACC_ELEM, ACCESS, ALL, assert, D, DENOMINATOR, level, mat_col_el(), mat_lig_el(), mat_min(), matrice_assign(), matrice_identite(), matrice_print(), matrice_soustraction_colonne(), matrice_soustraction_ligne(), matrice_swap_columns(), matrice_swap_rows(), printf(), Q, value_division, value_one_p, and x.
Referenced by transformer_equality_fix_point().