PIPS
|
#include <stdio.h>
#include <stdlib.h>
#include "linear_assert.h"
#include "boolean.h"
#include "arithmetique.h"
#include "matrix.h"
Go to the source code of this file.
Functions | |
void | matrix_unimodular_triangular_inversion (Pmatrix u, Pmatrix inv_u, bool infer) |
package matrix More... | |
void | matrix_diagonal_inversion (Pmatrix s, Pmatrix inv_s) |
void matrix_diagonal_inversion(Pmatrix s,Pmatrix inv_s) calcul de l'inversion du matrice en forme reduite smith. More... | |
void | matrix_triangular_inversion (Pmatrix h, Pmatrix inv_h, bool infer) |
void matrix_triangular_inversion(Pmatrix h, Pmatrix inv_h,bool infer) calcul de l'inversion du matrice en forme triangulaire. More... | |
void | matrix_general_inversion (Pmatrix a, Pmatrix inv_a) |
void matrix_general_inversion(Pmatrix a; Pmatrix inv_a) calcul de l'inversion du matrice general. More... | |
void | matrix_unimodular_inversion (Pmatrix u, Pmatrix inv_u) |
void matrix_unimodular_inversion(Pmatrix u, Pmatrix inv_u) calcul de l'inversion de la matrice unimodulaire. More... | |
void matrix_diagonal_inversion(Pmatrix s,Pmatrix inv_s) calcul de l'inversion du matrice en forme reduite smith.
s est un matrice de la forme reduite smith, inv_s est l'inversion de s ; telles que s * inv_s = I.
les parametres de la fonction : matrice s : matrice en forme reduite smith – input int n : dimension de la matrice caree – input matrice inv_s : l'inversion de s – output
tests des preconditions
calcul de la ppcm(s[1,1],s[2,2],...s[n,n])
inv_s | nv_s |
Definition at line 93 of file inversion.c.
References assert, MATRIX_DENOMINATOR, matrix_diagonal_p(), MATRIX_ELEM, matrix_hermite_rank(), MATRIX_NB_LINES, matrix_nulle(), pgcd, ppcm(), value_div, value_mult, and value_pos_p.
void matrix_general_inversion(Pmatrix a; Pmatrix inv_a) calcul de l'inversion du matrice general.
Algorithme : calcul P, Q, H telque : PAQ = H ; -1 -1 si rank(H) = n ; A = Q H P .
les parametres de la fonction : matrice a : matrice general -— input matrice inv_a : l'inversion de a -— output int n : dimensions de la matrice caree -— input
ne utilise pas
test
inv_a | nv_a |
Definition at line 216 of file inversion.c.
References assert, exit, fprintf(), MATRIX_DENOMINATOR, matrix_hermite(), matrix_hermite_rank(), matrix_multiply(), MATRIX_NB_LINES, matrix_new(), matrix_triangular_inversion(), VALUE_ONE, and value_pos_p.
Referenced by build_contraction_matrices(), and prepare_reindexing().
void matrix_triangular_inversion(Pmatrix h, Pmatrix inv_h,bool infer) calcul de l'inversion du matrice en forme triangulaire.
soit h matrice de la reduite triangulaire; inv_h est l'inversion de h ; telle que : h * inv_h = I. selon les proprietes de la matrice triangulaire: Aii = a11* ...aii-1*aii+1...*ann; Aij = 0 i>j pour la matrice triangulaire inferieure (infer==true) i<j pour la matrice triangulaire superieure (infer==false)
les parametres de la fonction : matrice h : matrice en forme triangulaire – input matrice inv_h : l'inversion de h – output int n : dimension de la matrice caree – input bool infer : le type de triangulaire – input
denominateur
determinant
tests des preconditions
calcul du determinant de h
calcul du denominateur de inv_h
calcul des sub_determinants des Aii
calcul des sub_determinants des Aij (i<j)
inv_h | nv_h |
infer | nfer |
Definition at line 137 of file inversion.c.
References assert, MATRIX_DENOMINATOR, MATRIX_ELEM, matrix_hermite_rank(), MATRIX_NB_LINES, matrix_nulle(), matrix_sub_determinant(), matrix_triangular_p(), pgcd, value_division, value_mult, value_neg_p, value_notone_p, VALUE_ONE, value_one_p, value_oppose, value_pos_p, and value_product.
Referenced by matrix_general_inversion().
void matrix_unimodular_inversion(Pmatrix u, Pmatrix inv_u) calcul de l'inversion de la matrice unimodulaire.
algorithme :
les parametres de la fonction : matrice u : matrice unimodulaire -— input matrice inv_u : l'inversion de u -— output int n : dimension de la matrice -— input
ne utilise pas
test
inv_u | nv_u |
Definition at line 261 of file inversion.c.
References assert, MATRIX_DENOMINATOR, matrix_hermite(), matrix_multiply(), MATRIX_NB_LINES, matrix_new(), matrix_triangular_unimodular_p(), matrix_unimodular_triangular_inversion(), and value_one_p.
package matrix
inversion.c
void matrix_unimodular_triangular_inversion(Pmatrix u ,Pmatrix inv_u,
Pmatrix u : matrice unimodulaire triangulaire – inpout int n : dimension de la matrice caree – inpout bool infer : type de triangulaire – input matrice inv_u : l'inversion de matrice u – output
test de l'unimodularite et de la trangularite de u
inv_u | nv_u |
infer | nfer |
Definition at line 53 of file inversion.c.
References assert, MATRIX_ELEM, matrix_identity(), MATRIX_NB_LINES, matrix_subtraction_column(), matrix_triangular_unimodular_p(), value_notzero_p, and x.
Referenced by extract_lattice(), and matrix_unimodular_inversion().