Table Of ContentN◦ d’ordre : 303
N◦ attribu´e par la biblioth`eque : 04ENSL303
´ ´
ECOLE NORMALE SUPERIEURE DE LYON
Laboratoire de l’Informatique du Parall´elisme
`
THESE
pour obtenir le grade de
Docteur de l’E´cole Normale Sup´erieure de Lyon
sp´ecialit´e : Informatique
au titre de l’´ecole doctorale MathIf
pr´esent´ee et soutenue publiquement le 20 d´ecembre 2004
par Pascal Giorgi
´ `
ARITHMETIQUE ET ALGORITHMIQUE EN ALGEBRE
´ `
LINEAIRE EXACTE POUR LA BIBLIOTHEQUE LINBOX
Apr`es avis de : M. Bernard Mourrain
M. Jean-Louis Roch
Devant la commission d’examen form´ee de :
M. Bernard Mourrain Membre/Rapporteur
M. Yves Robert Membre
M. Jean-Louis Roch Membre/Rapporteur
M. Bruno Salvy Membre/Pr´esident du jury
M. Gilles Villard Membre/Directeur de th`ese
N◦ d’ordre : 303
N◦ attribu´e par la biblioth`eque : 04ENSL303
´ ´
ECOLE NORMALE SUPERIEURE DE LYON
Laboratoire de l’Informatique du Parall´elisme
`
THESE
pour obtenir le grade de
Docteur de l’E´cole Normale Sup´erieure de Lyon
sp´ecialit´e : Informatique
au titre de l’´ecole doctorale MathIf
pr´esent´ee et soutenue publiquement le 20 d´ecembre 2004
par Pascal Giorgi
´ `
ARITHMETIQUE ET ALGORITHMIQUE EN ALGEBRE
´ `
LINEAIRE EXACTE POUR LA BIBLIOTHEQUE LINBOX
Apr`es avis de : M. Bernard Mourrain
M. Jean-Louis Roch
Devant la commission d’examen form´ee de :
M. Bernard Mourrain Membre/Rapporteur
M. Yves Robert Membre
M. Jean-Louis Roch Membre/Rapporteur
M. Bruno Salvy Membre/Pr´esident du jury
M. Gilles Villard Membre/Directeur de th`ese
Remerciements
En premier lieu, je tiens `a remercier mon directeur de th`ese Gilles Villard sans qui cette
th`ese n’aurait jamais pu voir le jour. Je le remercie pour son encadrement, sa disponibilit´e, ses
conseils, sa clairvoyance et pour sa g´en´erosit´e aussi bien dans le travail que dans la vie de tous
les jours.
JeremercieJean-MichelMulleretJean-ClaudeBajardquisont`al’originedemacandidature
pour une th`ese `a l’ENS Lyon et qui m’ont permis de m’int´eresser `a la recherche scientifique.
Je remercie´egalement Jean-Louis Roch et Bernard Mourrain qui ont accept´e la lourde tˆache
de rapporter sur ce manuscrit et qui m’ont fortement encourag´e pour son accomplissement ainsi
que pour la poursuite de mes travaux de recherche. Un grand merci `a tout les membres du jury
pour l’attention port´ee `a mon travail et pour avoir accepter une date de soutenance aussi proche
de no¨el.
Je remercie fortement Claude-Pierre Jeannerod, Arnaud Tisserand et Nathalie Revol pour
leur soutien au quotidien, leur encouragement et pour toutes les discussions s´erieuses et moins
s´erieuses que nous avons pu partager autour d’un bon caf´e.
Merci aux autres personnes de l’´equipe Ar´enaire de m’avoir aussi bien acceuilli et sup-
port´e pendant ces trois ann´ees : David, Nicolas W, Marc, Florent, Jean-Luc, Catherine, J´eremy,
Guillaume, Saurhab, Romain, Sylvie et Nicolas.
Je tiens ´egalement `a remercier l’ensemble des membres du projet LinBox sans qui je n’aurai
pu d´evelopper l’ensemble des codes disponibles `a l’heure actuelle dans la biblioth`eque. Plus
particuli`erement, merci `a Jean-Guillaume et Cl´ement pour notre collaboration autour du projet
fflas-ffpack ainsi que pour l’enthousiasme et la bonne humeur que vous m’avez apport´e.
Merci aussi `a Erich Kaltofen, Dave Saunders et Mark Giesbrecht pour l’ensemble des visites en
Am´erique du nord et un grand merci a Zhendong pour l’ensemble des corrections de bugs.
Je remercie ma famille pour leur comprehension et leur soutien sans faille tout au long de
ces trois ann´es. Je remercie ´egalement tous mes amis Alex, Mehdi, Chass, Cissou, Bruno, S´ev
pour les moment de d´etente que nous avons pass´e ensemble. Enfin, je remercie S´everine pour la
patience et la gentillesse dont elle a fait preuve pendant tout ce temps pass´e loin d’elle.
i
ii
Table des mati`eres
Introduction 1
1 Organisation et motivation du projet LinBox 7
1.1 Choix du langage C++ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.1.1 Classes : abstraction, acc`es et hi´erarchisation . . . . . . . . . . . . . . 10
1.1.2 Polymorphisme et g´en´ericit´e . . . . . . . . . . . . . . . . . . . . . . . 13
1.1.3 Sp´ecialisations et caract´erisations . . . . . . . . . . . . . . . . . . . . 16
1.2 Utilisation de biblioth`eques sp´ecialis´ees . . . . . . . . . . . . . . . . . . . . . 18
1.2.1 GMP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
1.2.2 Givaro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
1.2.3 NTL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
1.2.4 LiDIA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
1.2.5 blas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
1.3 Interfaces utilisateurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
1.3.1 Maple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
1.3.2 GAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
1.3.3 Serveurs web . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
1.4 Organisation des codes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
iii
2 Arithm´etique des corps finis 27
2.1 Arch´etype de donn´ees . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
2.1.1 Mod`ele de base des corps finis . . . . . . . . . . . . . . . . . . . . . . 29
2.1.2 Interface compilable . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
2.1.3 Implantation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
2.1.4 Performances vs g´en´ericit´es . . . . . . . . . . . . . . . . . . . . . . . . 38
2.2 Corps finis premiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
2.2.1 Modular . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
2.2.2 GivaroZpz standard . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
2.2.3 GivaroZpz : base logarithmique (Zech’s log) . . . . . . . . . . . . . . . 48
2.2.4 GivaroZpz : base de Montgomery . . . . . . . . . . . . . . . . . . . . 50
2.2.5 NTL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
2.2.6 Performances et surcouˆt des wrappers . . . . . . . . . . . . . . . . . . 53
2.3 Extension alg´ebrique GF(pk) . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
2.3.1 Givaro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
2.3.2 NTL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
2.3.3 LiDIA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
2.3.4 Performances et surcouˆt des wrappers . . . . . . . . . . . . . . . . . . 63
2.4 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
3 Alg`ebre lin´eaire dense sur un corps fini 67
3.1 Syst`emes lin´eaires triangulaires . . . . . . . . . . . . . . . . . . . . . . . . . . 69
3.1.1 Algorithme r´ecursif par blocs . . . . . . . . . . . . . . . . . . . . . . . 70
3.1.2 Utilisation de la routine ”dtrsm”des blas . . . . . . . . . . . . . . . 71
3.1.3 Utilisation de r´eductions modulaires retard´ees . . . . . . . . . . . . . 74
3.1.4 Comparaison des implantations . . . . . . . . . . . . . . . . . . . . . 75
3.2 Triangularisations de matrices . . . . . . . . . . . . . . . . . . . . . . . . . . 78
3.2.1 Factorisation LSP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
3.2.2 LUdivine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
3.2.3 LQUP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
3.2.4 Performances et comparaisons . . . . . . . . . . . . . . . . . . . . . . 81
3.3 Applications des triangularisations . . . . . . . . . . . . . . . . . . . . . . . . 83
3.3.1 Rang et d´eterminant . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
3.3.2 Inverse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
3.3.3 Base du noyau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
3.3.4 Alternative `a la factorisation LQUP : Gauss-Jordan . . . . . . . . . . 85
3.4 Interfaces pour le calcul ”exact/num´erique” . . . . . . . . . . . . . . . . . . . 89
iv
v
3.4.1 Interface avec les blas . . . . . . . . . . . . . . . . . . . . . . . . . . 90
3.4.2 Connections avec Maple . . . . . . . . . . . . . . . . . . . . . . . . 95
3.4.3 Int´egration et utilisation dans LinBox . . . . . . . . . . . . . . . . . 100
4 Syst`emes lin´eaires entiers 119
4.1 Solutions rationnelles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
4.1.1 D´eveloppement p-adique de la solution rationnelle . . . . . . . . . . . 122
4.1.2 Reconstruction de la solution rationnelle . . . . . . . . . . . . . . . . 123
4.1.3 Algorithme complet . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
4.2 Interface pour la r´esolution des syst`emes lin´eaires entiers . . . . . . . . . . . 125
4.2.1 RationalSolver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
4.2.2 LiftingContainer et LiftingIterator . . . . . . . . . . . . . . . . . . . . 128
4.2.3 RationalReconstruction . . . . . . . . . . . . . . . . . . . . . . . . . . 130
4.3 Algorithme de Dixon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
4.3.1 Cas non singulier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
4.3.2 Cas singulier et certificat d’inconsistance . . . . . . . . . . . . . . . . 139
4.3.3 Solutions al´eatoires . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
4.3.4 Optimisations et performances . . . . . . . . . . . . . . . . . . . . . . 145
4.4 Solutions diophantiennes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
4.4.1 Approche propos´ee par Giesbrecht . . . . . . . . . . . . . . . . . . . . 151
4.4.2 Certificat de minimalit´e . . . . . . . . . . . . . . . . . . . . . . . . . . 153
4.4.3 Implantations et performances . . . . . . . . . . . . . . . . . . . . . . 156
Conclusion et perspectives 161
Annexes 173
A Code LinBox 173
A.1 D´eveloppements p-adiques de syst`emes lin´eaires entiers . . . . . . . . . . . . 173
A.2 Reconstruction de la solution rationnelle . . . . . . . . . . . . . . . . . . . . 175
A.3 R´esolution de syst`emes lin´eaires entiers singuliers avec l’algorithme de Dixon 178
A.4 Produits matrice-vecteur et matrice-matrice en repr´esentation q-adique . . . 183
Table des figures 189
Liste des tableaux 191
vi Table des mati`eres
Description:Abstract: For a few decades, numerical linear algebra has seen intensive developments in both mathematical and computer science theory which have led to genuine standard software like BLAS or lapack. In computer algebra the situation has not advanced as much, in particular because of the diversity o