NPDC
Genopole de Lille
CNRS
INRIA
USTL
Lille2

RAIM'08

2ème Rencontres
Arithmétique de l'Informatique Mathématique
Lille du 3 au 5 juin 2008


Résumé de la session de Nicolas Brisebarre
Arithmétique des ordinateurs : calcul sur les flottants et entiers


Résolution compensée de systèmes triangulaires
par Nicolas Louvet presentation

Les algorithmes compensés améliorent la précision des résultats calculés en arithmétique flottante, tout en n'utilisant qu'une seule précision de travail, typiquement la double precision IEEE-754. Des résultats récents concernent la sommation, le produit scalaire et l'évaluation compensée de polynômes. Pour ces algorithmes, il a été prouvé que la solution compensée est aussi précise que si elle avait été calculée par l'algorithme classique en précision de travail doublée. Ces algorithmes se montrent en outre deux fois plus rapides que leurs équivalents basés sur l'arithmétique double-double, tout en fournissant la même précision de sortie.
Dans cet exposé, on considérera la résolution compensée de systèmes linéaires triangulaires Tx=b, où les coefficients de la matrice triangulaire T et ceux du vecteur b sont exactement représentés par des nombres flottants. Nous présenterons nos premiers résultats, ainsi que nos travaux en cours sur ce sujet.


Présentation du logiciel Sollya, boîte à outil du numéricien
par Sylvain Chevillard presentation

Lorsqu'on manipule une expression numérique telle que sin(x+0.1) ou 2*pi/7 dans un logiciel informatique, il faut être extrêmement prudent. En effet, ces expressions font intervenir des nombres qui ne sont pas exactement représentables dans la mémoire de l'ordinateur. Le logiciel va alors stocker puis travailler avec une expression inexacte. Il s'agit d'une source de confusion et même de possibles erreurs pour l'utilisateur.
De même, certains calculs très mal conditionnés peuvent conduire à des résultats complètement faux si la précision n'est pas soigneusement choisie. L'utilisateur non averti risque de prendre pour argent comptant les résultats donnés par son logiciel ce qui le conduira à prendre pour vrais des résultat potentiellement très inexacts.
Sollya est un logiciel conçu pour permettre la manipulation d'expressions numériques de façon sure et efficace. Sollya se présente sous forme d'un shell interactif dans lequel on peut manipuler des expressions numériques et utiliser des algorithmes numériques. On peut ainsi définir des fonctions numériques, en trouver les zéros, en calculer la norme infinie, etc. Sollya utilise l'arithmétique par intervalle et choisit automatiquement la précision nécessaire pour chaque calcul afin de garantir la qualité du résultat renvoyé.
Cet exposé sera constitué d'une présentation des principales fonctionnalités de Sollya sous forme d'une démonstration du logiciel.


Quand les boucles deviennent des polynômes ou l'implantation automatique de fonctions mathématiques
par Christoph Lauter presentation

L'implantation de fonctions mathématiques, comme exp(x), sin(x), erf(x) ou log2(1 + 2^x), dans une arithmétique flottante a longtemps été un travail manuel et fastidieux. Comme l'expérience avec l'implantation de la bibliothèque CRLibm a montré, un spécialiste avait besoin d'à peu près un mois par fonction.
Étant donnés une fonction, un domaine et une borne d'erreur maximale ciblée, la tâche consiste à trouver une réduction d'argument appropriée, à calculer un polynôme d'approximation et à implanter ce polynôme dans une arithmétique flottante. La preuve de cette implantation nécessite du travail supplémentaire.
Dans cet exposé, un outil sera présenté qui en permet l'automatisation. Ce prototype est capable de gérer l'approximation polynomiale, l'implantation du polynôme et la preuve pour des fonctions définies sur un petit domaine et des erreurs cibles allant jusqu'à 140 bits. Avec cet outil, le temps d'implantation d'une fonction dans CRLibm est réduit à 2 jours.
L'implantation automatique de fonctions mathématiques est un nouveau domaine d'algorithmique numérique. Ce n'est plus l'algorithme d'évaluation d'une fonction qui est au centre de l'intérêt mais l'algorithme qui le génère.
Cette automatisation ouvre également la voie vers des transformations numériques de codes flottants. La fonction donnée en entrée à l'algorithme d'implantation peut elle-même être définie par un code numérique, éventuellement itératif et peut-être inefficace. L'algorithme génère alors un code optimisé approchant ce code de base donné. Le résultat est une transformation de code de haut niveau, remplaçant des boucles par des polynômes.
Le temps le permettant, une démonstration de l'outil sera faite pendant l'exposé.


Produit précis de nombres flottants
par Stef Graillat presentation

Dans cet exposé, nous présenterons un algorithme compensé pour le calcul du produit de nombres flottants. Nous montrerons que cet algorithme renvoie un arrondi fidèle du résultat exact.


Résoudre et certifier la solution d'un système linéaire
par Hong Diep Nguyen et Nathalie Revol presentation

Nous proposons une approche pour résoudre un système linéaire et certifier la solution calculée en même temps. L'idée est d'utiliser l'arithmétique flottante pour calculer la solution, et d'utiliser l'arithmétique par intervalle pour résoudre le système vérifié par le résidu, ce qui nous permet d'obtenir une borne garantie de l'erreur.
À cet effet, on a utilisé les méthodes de raffinement itératif. À partir d'un raffinement pour l'approximation flottante de la solution, nous utilisons un raffinement par intervalle pour l'erreur de cette approximation. Ces deux raffinements produisent une solution plus précise que la solution flottante seule et de surcroît dotée d'une borne d'erreur.
De façon plus détaillée, une approximation flottante initiale de la solution est calculée en utilisant simplement la décomposition LU de la matrice du système. Ensuite, on passe à l'arithmétique par intervalle. Le résidu du système est calculé en utilisant l'arithmétique par intervalle et le système est ensuite préconditionné par l'inverse approché de la matrice du système (en utilisant la décomposition LU calculée en arithmétique flottante). Cela nous donne un système par intervalle dont la solution est la borne d'erreur du système original. Sous l'hypothèse que l'on a une bonne approximation de la matrice inverse, à savoir que la matrice préconditionnée est une H-matrice, une proposition de Neumaier [2] permet d'assurer qu'il est possible d'obtenir une solution initiale du système par intervalle. Cette solution initiale est raffinée par un nombre constant et faible d'itérations de Gauss-Seidel. L'approximation flottante du système original est corrigée en lui ajoutant le point milieu de la borne d'erreur. La borne d'erreur est mise à jour en même temps par un recentrage (en lui soustrayant son point milieu).
Les résultats expérimentaux illustrent que notre approche donne des solutions très fines.

[1] N.J. Higham; Accuracy and Stability of Numerical Algorithms, 2nd edition, SIAM Press, 2002.
Chapter 12: Iterative Refinement.

[2] A. Neumaier; Interval methods for systems of equations, Cambridge University Press, 1990.
Chapter 4: The solution of square linear systems of equations.



Webmaster : Julien Soula