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 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: