English version

CariBlog – Blog sur les pages recherche de Vincent Lefèvre et l'arithmétique des ordinateurs

[XML]

[2024-09-04 23:53:00 UTC]
GNU MPFR: mise à jour de la GNU Free Documentation License à la version 1.3

(CariBlog – MPFR – Logiciels)

Nous avons mis à jour la GNU Free Documentation License utilisée par le manuel de GNU MPFR de la version 1.2 à la version 1.3, qui a été publiée en 2008 (pour la branche master et la branche 4.2). En pratique, cela ne change rien pour les utilisateurs de MPFR. Détails supplémentaires.

[2024-05-06 21:29:49 UTC]
Mon papier sur un bug de défilement (scrolling) dans Emacs-Cairo à cause d'inexactitude en virgule flottante

(CariBlog – Logiciels)

Mon papier court An Emacs-Cairo scrolling bug due to floating-point inaccuracy sur un bug de défilement (scrolling) dans Emacs-Cairo à cause d'inexactitude en virgule flottante, que je vais présenter à la conférence ARITH-2024 (31st IEEE Symposium on Computer Arithmetic) à Málaga, est disponible sur mon site web et sur HAL. Résumé en anglais:

We study a bug that we found in the GNU Emacs text editor when built against the Cairo graphics library. We analyze both the Emacs code and the Cairo code, and we suggest what can be done to avoid unexpected results. This involves a particular case with a computation that can be reduced to the equivalent floating-point expression ((1/sbs, where s and b are small positive integers such that b < s and the basic operations are rounded to nearest. The analysis takes into account the values of s and b that can occur in practice, and the suggestions for workarounds must avoid handling this particular case in a separate branch or breaking the structure of the Cairo library (so that just returning b is not possible).

J'ai aussi mis une petite vidéo sur mon site web, montrant l'effet de ce bug. Ce que j'ai fait pour cette vidéo, c'est d'aller à la fin du fichier, puis uniquement du scrolling arrière avec la molette de la souris. Il est difficile de voir ce qui se passe, mais c'est justement à cause de ce bug.

[2023-08-23 00:15:08 UTC]
GNU MPFR 4.2.1 est sortie

(CariBlog – MPFR – Logiciels)

La bibliothèque GNU MPFR 4.2.1 (fondue savoyarde, patch level 1) est sortie (annonce).

[2023-07-24 00:36:17 UTC]
Patches 10 à 12 pour GNU MPFR 4.2.0

(CariBlog – MPFR – Logiciels)

Les patches 10 à 12 de GNU MPFR 4.2.0 sont disponibles dans la section bugs de la page de MPFR 4.2.0 depuis le 17 juillet. Le plus important est le patch 11, qui corrige un bug dans la fonction mpfr_inp_str.

[2023-05-17 21:53:08 UTC]
Patches 5 à 9 pour GNU MPFR 4.2.0

(CariBlog – MPFR – Logiciels)

Les patches 5 à 9 de GNU MPFR 4.2.0 sont disponibles dans la section bugs de la page de MPFR 4.2.0. J'ai mis 3 patches (5 à 7) en fin de semaine dernière et je viens de mettre 2 nouveaux patches (8 et 9). Ces 2 derniers patches corrigent les bugs suivants:

  • 8. La fonction mpfr_compound_si peut prendre une énorme quantité de mémoire et beaucoup de temps dans certains cas (quand l'argument x est un grand entier pair et xn se représente exactement dans la précision cible) et ne détecte pas correctement les overflows et les underflows.

  • 9. MPFR peut planter quand une fonction de sortie formatée est appelée avec %.2147483648Rg dans la chaîne de format. Par exemple: mpfr_snprintf (NULL, 0, "%.2147483648Rg\n", x);

[2023-04-17 23:57:46 UTC]
Patches 1 à 4 pour GNU MPFR 4.2.0

(CariBlog – MPFR – Logiciels)

Les patches 1 à 4 de GNU MPFR 4.2.0 sont disponibles dans la section bugs de la page de MPFR 4.2.0. Les premier et troisième patches corrigent des tests de MPFR et ne concernent pas la bibliothèque elle-même. Le deuxième patch (commit associé) corrige une boucle infinie dans la fonction mpfr_ui_pow_ui en cas d'overflow; la fonction mpfr_log10, qui utilise mpfr_ui_pow_ui, est affectée par ce bug. Le quatrième patch (commit associé) corrige la fonction mpfr_rec_sqrt dans certains cas très difficiles à arrondir (en pratique, la précision de l'entrée est nécessairement beaucoup plus grande que celle de la destination): de tels cas peuvent provoquer un débordement de pile à cause de nombreuses petites allocations dans la pile; une conséquence de cette correction est que cette fonction devrait maintenant être beaucoup plus rapide dans ces cas particuliers.

[2023-01-06 17:01:51 UTC]
GNU MPFR 4.2.0 est sortie

(CariBlog – MPFR – Logiciels)

La bibliothèque GNU MPFR 4.2.0 (fondue savoyarde) est sortie (annonce).

Nouvelles fonctions:

  • mpfr_cosu, mpfr_sinu, mpfr_tanu, mpfr_acosu, mpfr_asinu, mpfr_atanu, mpfr_atan2u;

  • mpfr_cospi, mpfr_sinpi, mpfr_tanpi, mpfr_acospi, mpfr_asinpi, mpfr_atanpi, mpfr_atan2pi;

  • mpfr_log2p1, mpfr_log10p1, mpfr_exp2m1, mpfr_exp10m1, mpfr_compound_si, mpfr_fmod_ui, mpfr_powr, mpfr_pown, mpfr_pow_uj, mpfr_pow_sj, mpfr_rootn_si (mpfr_pown est en fait une macro définie comme un alias de mpfr_pow_sj).

[2022-11-17 22:46:02 UTC]
GNU MPFR 4.1.1 est sortie

(CariBlog – MPFR – Logiciels)

La bibliothèque GNU MPFR 4.1.1 (épinards à la crème, patch level 1) est sortie: des bugs corrigés et des améliorations dans le formatage du manuel.

[2022-10-07 16:23:35 UTC]
GNU MPFR 4.1.1 Release Candidate

(CariBlog – MPFR – Logiciels)

The GNU MPFR 4.1.1 release candidate is available. The main changes are bug fixes (in particular for macros implementing functions) and improved manual formatting, by using a recent texinfo.tex file (2022-09-14.01).

[2022-04-05 23:32:32 UTC]
Nouvelle fonction mpfr_rootn_si dans la version de développement de GNU MPFR

(CariBlog – MPFR – Logiciels)

Je viens d'implémenter la fonction mpfr_rootn_si dans la version de développement de GNU MPFR. Elle fournit la fonction rootn de la norme IEEE 754 (qui est apparue dans la révision de 2008). Elle complète la fonction mpfr_rootn_ui, qui fournissait rootn seulement pour les valeurs positives de n.

[2021-11-19 22:59:17 UTC]
GNU MPFR et migration vers Inria GitLab

(CariBlog – MPFR – Logiciels)

Comme annoncé le mois dernier dans sa liste de diffusion, les sources de GNU MPFR sont hébergées à https://gitlab.inria.fr/mpfr (Inria GitLab) depuis le 2021-10-15, suite à la fermeture d'InriaForge. Il y a maintenant deux dépôts Git séparés:

Tout le travail lié à cette migration n'a pas encore été terminé.

Sur InriaForge, nous utilisions Subversion comme système de gestion de versions, si bien que le dépôt unique, composé des sources (trunk/branches/tags) et d'un répertoire spécial misc a dû être converti en deux dépôts Git. J'avais d'abord fait un essai avec git svn, mais une analyse du dépôt Git obtenu pour les sources a révélé des problèmes importants, causés principalement par les particularités suivantes du dépôt Subversion.

  • Certains fichiers et répertoires (pour les répertoires, c'étaient des branches) étaient (volontairement) remplacés, i.e. supprimés, puis rajoutés avec un historique différent (éventuellement nouveau), dans le même commit ou dans un commit ultérieur. L'outil git svn considérait que c'étaient les mêmes fichiers ou branches, et générait donc un historique complètement incorrect (par conséquent, le diff dérivé du commit généré était aussi complètement incorrect, même si le contenu obtenu était correct).

  • Avant Subversion, CVS était utilisé comme système de gestion de versions, et le dépôt CVS a été converti à Subversion avec cvs2svn le 2005-10-24. Malheureusement, cvs2svn avait des bugs (ou était-ce CVS lui-même?), et a généré un historique incorrect pour les tags (nous ne nous étions pas aperçu de ce problème à ce moment, mais il n'est de toute façon pas clair que nous aurions pu faire quelque chose pour l'éviter), en particulier avec certains fichiers provenant de la branche associée et d'autres provenant du tronc.

J'ai donc décidé d'utiliser l'excellent outil reposurgeon d'Eric S. Raymond pour tout corriger, mais aussi ajouter des méta-données, comme les révisions Subversion à chaque message de commit (puisque de telles révisions sont parfois référencées), ainsi que la branche affectée (car Git ne permet pas de récupérer cette information). Pour cette conversion de dépôt avec reposurgeon, j'ai trouvé divers problèmes (certains également dûs aux particularités du dépôt Subversion de MPFR, et tous corrigés assez rapidement) et fait quelques merge requests. Certains fichiers et scripts se trouvent dans l'archive mpfr-conversion.tar.xz. Noter qu'il n'y avait qu'une seule opération entre ce qui est maintenant deux dépôts: la révision 12528 de Subversion, où un fichier était déplacé de /misc vers /trunk/tools; j'ai vérifié qu'elle a correctement été traitée par reposurgeon (mais évidemment, dans les dépôts Git, cela apparaît juste comme une addition d'un côté et comme une suppression de l'autre, sans lien entre ces deux opérations ainsi générées).

[2021-04-23 17:06:28 UTC]
Patch 12 pour GNU MPFR 4.1.0

(CariBlog – MPFR – Logiciels)

Le patch 12 de GNU MPFR 4.1.0 est disponible dans la section bugs de la page de MPFR 4.1.0. Il corrige quelques problèmes avec la fonction mpfr_get_str_ndigits.

[2021-03-09 18:59:08 UTC]
Patches 10 et 11 pour GNU MPFR 4.1.0

(CariBlog – MPFR – Logiciels)

Les patches 10 et 11 de GNU MPFR 4.1.0 sont disponibles dans la section bugs de la page de MPFR 4.1.0. Le bug principal, corrigé par le patch 10 (parmi de possibles échecs de compilation dans des cas inhabituels): la macro mpfr_set (qui, par défaut, est utilisée à la place de la fonction) évalue son deuxième argument deux fois.

[2021-02-19 12:55:57 UTC]
Arrêt planifié du serveur hébergeant mpfr.org

(CariBlog – MPFR)

À cause d'une coupure de l'alimentation électrique, le serveur hébergeant mpfr.org sera éteint du mardi 23 février 2021 à 17:00 CET (16:00 UTC) au mercredi 24 février 2021 à 18:00 CET (17:00 UTC), sauf imprévu. Seul le site web mpfr.org sera affecté. La liste de diffusion de MPFR et InriaForge continueront de fonctionner.

[2021-02-17 21:28:21 UTC]
Patches 8 et 9 pour GNU MPFR 4.1.0

(CariBlog – MPFR – Logiciels)

Les patches 8 et 9 de GNU MPFR 4.1.0 sont disponibles dans la section bugs de la page de MPFR 4.1.0.

[2021-02-11 22:34:12 UTC]
7 patches pour GNU MPFR 4.1.0

(CariBlog – MPFR – Logiciels)

Les patches 1 à 7 de GNU MPFR 4.1.0 sont disponibles dans la section bugs de la page de MPFR 4.1.0.

[2021-01-15 17:54:07 UTC]
Arrêt planifié du serveur hébergeant mpfr.org

(CariBlog – MPFR)

Bonne année à tous!

À cause d'une coupure de l'alimentation électrique, le serveur hébergeant mpfr.org sera éteint du vendredi 22 janvier 2021 à 16:00 CET (15:00 UTC) au lundi 25 janvier 2021 à 10:00 CET (09:00 UTC), sauf imprévu. Seul le site web mpfr.org sera affecté. La liste de diffusion de MPFR et InriaForge continueront de fonctionner.

[2020-06-13 15:26:21 UTC]
GNU MPFR 4.1.0 Release Candidate

(CariBlog – MPFR – Logiciels)

The GNU MPFR 4.1.0 release candidate is available.

Note that the default CFLAGS value for GCC uses an option that has been introduced in GCC 4.1 (released in 2006). So, if you want to build MPFR with a GCC version less than 4.1, you need to provide an explicit CFLAGS. This issue will be fixed in the final release.

[2020-03-31 20:56:38 UTC]
Nouveaux patches pour GNU MPFR 4.0.2

(CariBlog – MPFR – Logiciels)

Les patches 2 à 6 de GNU MPFR 4.0.2 sont disponibles dans la section bugs de la page de MPFR 4.0.2. Les principaux corrigent des problèmes d'underflow/overflow pouvant être visibles avec les fonctions suivantes: mpfr_set_ui_2exp, mpfr_set_si_2exp, mpfr_set_uj_2exp, mpfr_set_sj_2exp, mpfr_fmma, mpfr_fmms, mpfr_fma, mpfr_fms.

[2020-02-12 16:39:01 UTC]
Serveur mpfr.org hors-service

(CariBlog – MPFR – Logiciels)

Le serveur mpfr.org est actuellement hors-service (tout comme d'autres serveurs virtualisés, hébergés au même endroit). Ceci est dû à des problèmes imprévus suite à une maintenance concernant le NAS faite hier (2020-02-11 à 17:00 UTC). Nous ne savons toujours pas quand le serveur sera de nouveau en ligne.

Vous pouvez toujours obtenir le code source de GNU MPFR via le site FTP GNU et via InriaForge.

[Mise à jour] Le serveur est de nouveau en ligne.

[2019-11-04 00:30:17 UTC]
Nouvelle page web sur le jeu Neopolis

(vinc17 – Lyon – CariBlog)

J'ai écrit une nouvelle page web sur Neopolis, jeu créé par Ben Kaltenbaek, Roland Lamidieu et Lucas Odion, et lancé à Lyon en mars 2019 sous le nom Metropolis, avant d'être renommé en Neopolis en juillet.

J'y donne des informations en tant que joueur aux 5 parties qui ont eu lieu à Lyon, dont celle en cours depuis le début du mois.

J'y ai aussi ajouté une section sur un bug d'affichage, pour lequel j'ai trouvé une explication probable, liée à une mauvaise méthode de calcul en virgule flottante (les valeurs particulières affectées par ce bug correspondent à mon explication).

[2019-04-04 15:58:16 UTC]
Nouveau papier Accurate Complex Multiplication in Floating-Point Arithmetic

(CariBlog – MPFR)

J'ai un nouveau papier, écrit avec Jean-Michel Muller: Accurate Complex Multiplication in Floating-Point Arithmetic. Il a été accepté au 26e IEEE Symposium on Computer Arithmetic (ARITH 26), qui se tiendra du 10 au 12 juin 2019 à Kyoto au Japon. Résumé (en anglais):

We deal with accurate complex multiplication in binary floating-point arithmetic, with an emphasis on the case where one of the operands in a double-word number. We provide an algorithm that returns a complex product with normwise relative error bound close to the best possible one, i.e., the rounding unit u.

Pour les tests, des comparaisons ont été faites avec l'algorithme naïf dans les formats binary64 (double précision) et binary128 (quadruple précision), et avec des implémentations basées sur GNU MPFR, sur des machines avec processeurs x86_64 et POWER9 (ce dernier est actuellement le seul processeur avec un support binary128 en matériel).

[2019-02-02 22:20:20 UTC]
GNU MPFR 4.0.2 est sortie

(CariBlog – MPFR – Logiciels)

La bibliothèque GNU MPFR 4.0.2 (dinde aux marrons, patch level 2) est sortie. En plus de la correction de bugs, cette version corrige la description de mpfr_get_str dans le manuel pour suivre le comportement historique et celui de la fonction mpf_get_str de GMP.

[2019-01-09 17:52:18 UTC]
GNU MPFR 4.0.2 Release Candidate

(CariBlog – MPFR – Logiciels)

[2018-12-31 17:35:32 UTC]
Patch 14 pour GNU MPFR 4.0.1

(CariBlog – MPFR – Logiciels)

Le patch 14 de GNU MPFR 4.0.1 est disponible dans la section bugs de la page de MPFR 4.0.1. Il corrige un bug affectant les fonctions mpfr_fmma et mpfr_fmms dans des cas particuliers: dans le mode d'arrondi au plus près (MPFR_RNDN), ces fonctions peuvent arrondir dans la mauvaise direction à cause d'un double arrondi dans le calcul.

[2018-07-31 15:57:12 UTC]
Patches 12 et 13 pour GNU MPFR 4.0.1

(CariBlog – MPFR – Logiciels)

Les patches 12 et 13 de GNU MPFR 4.0.1 sont disponibles dans la section bugs de la page de MPFR 4.0.1. Ils corrigent des bugs dans les fonctions de sortie formatée (mpfr_*printf):

  • Patch 12: Possible comportement indéfini en cas d'erreur: écriture via un pointeur nul, libération d'un mauvais pointeur, et comportement indéfini lié à <stdarg.h>.

  • Patch 13: Les drapeaux pour le modificateur de longueur P (argument de type mpfr_prec_t) sont ignorés; ceci inclut le signe de la taille (field width) quand la valeur est fournie en argument (en utilisant l'astérisque * dans la chaîne de format).

[2018-07-25 01:17:55 UTC]
Patches 10 et 11 pour GNU MPFR 4.0.1

(CariBlog – MPFR – Logiciels)

Les patches 10 et 11 de GNU MPFR 4.0.1 sont disponibles dans la section bugs de la page de MPFR 4.0.1.

Le problème principal est que les fonctions mpfr_erf et mpfr_erfc peuvent provoquer un échec d'assertion, car la borne d'erreur est calculée avec le type double et la valeur peut être trop grande pour être représentable (overflow). C'est corrigé par le patch 11.

[2018-07-10 19:04:10 UTC]
Patches 7 à 9 pour GNU MPFR 4.0.1

(CariBlog – MPFR – Logiciels)

Les patches 7 à 9 de GNU MPFR 4.0.1 sont disponibles dans la section bugs de la page de MPFR 4.0.1.

Le problème principal se produit avec les fonctions de sortie formatée (mpfr_*printf) quand le drapeau ' est utilisé dans une locale où le séparateur des milliers n'est pas vide. Dans certains cas spécifiques (c'est-à-dire, quand la partie entière est arrondie vers le haut à 10 ou 100), la chaîne générée peut être incorrecte et puisqu'elle est plus petite que la chaîne attendue, une taille de tampon incorrecte peut être fournie à la fonction de libération de mémoire de l'allocateur courant de GMP. Par défaut, cette taille est ignorée, mais elle peut avoir une importance si les allocateurs ont été changés avec la fonction mp_set_memory_functions de GMP, auquel cas une conséquence possible est une corruption de la mémoire.

[2018-05-05 21:59:20 UTC]
Patches 1 à 6 pour GNU MPFR 4.0.1

(CariBlog – MPFR – Logiciels)

Les patches 1 à 6 de GNU MPFR 4.0.1 sont disponibles dans la section bugs de la page de MPFR 4.0.1. Le premier corrige un bug majeur introduit dans MPFR 4.0.0 (dans un cas particulier de l'addition/soustraction), quoique la plupart des applications ne sont probablement pas affectées. Les autres corrigent des bugs mineurs, probablement sans conséquences en pratique.

Pour les utilisateurs du module Perl Math::MPFR, noter que le patch 6 fait apparaître un bug dans la version 4.03 de ce module (version actuelle au moment d'écrire ces lignes – [Mise à jour du 2018-05-08] Une nouvelle version du module est maintenant disponible).

[2018-02-08 17:35:33 UTC]
GNU MPFR 4.0.1 est sortie

(CariBlog – MPFR – Logiciels)

La bibliothèque GNU MPFR 4.0.1 (dinde aux marrons, patch level 1) est sortie. Elle corrige quelques problèmes de la version 4.0.0, pour laquelle je n'avais pas fait d'annonce ici: en particulier, un bug dans la fonction mpfr_div_ui, qui était présent depuis l'introduction de mpfr_div_ui au tout début du développement de MPFR en 1999. Mais à partir de la version 4.0.0, ce bug affectait aussi la fonction mpfr_div.

Ces versions 4.0.* contiennent de très nombreux changements par rapport aux versions 3.1.* (GNU MPFR 3.1.0 était sortie en octobre 2011).

[2017-12-11 22:45:58 UTC]
GNU MPFR 4.0.0 Release Candidate

(CariBlog – MPFR – Logiciels)

The GNU MPFR 4.0.0 release candidate is available.

By the way, I did my first MPFR commit 17 years ago.

[2017-10-30 11:55:45 UTC]
Patch 1 pour GNU MPFR 3.1.6

(CariBlog – MPFR – Logiciels)

Le patch 1 de GNU MPFR 3.1.6 est disponible dans la section bugs de la page de MPFR 3.1.6. Il corrige les fonctions de conversion mpfr_get_ld, mpfr_get_si, mpfr_get_ui, mpfr_get_sj, mpfr_get_uj et mpfr_get_z lorsqu'elles sont appelées avec une plage d'exposants très réduite.

[2017-09-08 20:18:11 UTC]
GNU MPFR 3.1.6 est sortie

(CariBlog – MPFR – Logiciels)

La bibliothèque GNU MPFR 3.1.6 (canard à l'orange, patch level 6) est sortie. Les changements par rapport à la version 3.1.5:

  • Amélioration du manuel de MPFR.

  • Corrections de bugs (liste détaillée sur la page de MPFR 3.1.5 et dans le fichier ChangeLog).

  • Autotools: Sous Linux, on s'assure que les anciens dtags (lorsqu'ils sont supportés) sont utilisés si la variable d'environnement LD_LIBRARY_PATH est définie; sinon make check vérifierait une bibliothèque MPFR compatible installée, trouvée dans LD_LIBRARY_PATH, au lieu de celle qui a été compilée avec make.

[2017-09-04 17:12:59 UTC]
GNU MPFR 3.1.6 Release Candidate

(CariBlog – MPFR – Logiciels)

The GNU MPFR 3.1.6 release candidate has been available for a few days.

[2017-08-01 20:13:40 UTC]
Patch 10 pour GNU MPFR 3.1.5

(CariBlog – MPFR – Logiciels)

Le patch 10 de GNU MPFR 3.1.5 est disponible dans la section bugs de la page de MPFR 3.1.5. Il corrige une inclusion incorrecte d'en-tête introduite par le patch 8, afin d'obtenir la définition correcte des symboles et éviter une erreur à l'édition de liens sous Microsoft Windows avec DLL.

[2017-07-22 07:34:55 UTC]
Patch 9 pour GNU MPFR 3.1.5

(CariBlog – MPFR – Logiciels)

Le patch 9 de GNU MPFR 3.1.5 est disponible dans la section bugs de la page de MPFR 3.1.5. Il corrige un bug très important pour les utilisateurs de plateformes avec un unsigned long sur 32 bits (ABI 32 bits ou Microsoft Windows) pour les très grandes précisions: les calculs dans sin_cos.c sont affectés par des dépassements de capacité dans ces précisions (plus de 1 000 000 bits environ) à cause de la taille limite du type unsigned long. En pratique, ceci introduit une erreur pouvant aller jusqu'à approximativement 2−1019574, si bien que les fonctions trigonométriques (mpfr_sin, mpfr_cos, mpfr_tan) et les fonctions qui les appellent peuvent être très peu précises (limitant la précision globale à environ un million de bits pour ces fonctions sur de telles plateformes).

[2017-06-07 21:51:03 UTC]
Patches 3 à 8 pour GNU MPFR 3.1.5

(CariBlog – MPFR – Logiciels)

Les patches 3 à 8 de GNU MPFR 3.1.5 sont disponibles dans la section bugs de la page de MPFR 3.1.5. Les cinq premiers corrigent des problèmes mineurs et le patch 8 corrige certaines macros de mpf2mpfr.h (seuls les utilisateurs de ce fichier d'en-tête, utilisé pour compiler des programmes GMP/mpf avec MPFR au lieu de mpf, peuvent être affectés).

[2017-04-10 11:44:15 UTC]
Mes dernières publications

(CariBlog – MPFR)

J'ai deux nouveaux papiers qui viennent d'être acceptés, tous les deux liés à GNU MPFR.

[2017-02-17 16:19:10 UTC]
Status of the GNU MPFR Trunk

(CariBlog – MPFR – Logiciels)

For those who test the GNU MPFR trunk via Subversion on InriaForge:

  • The tzeta test should no longer fail on most platforms (IEEE 754 machines with default IEEE exception handling).

  • The tsprintf test still fails (fix in progress). The cause is a major efficiency issue in particular cases (huge precision requested).

Note: Both problems are also present in the released versions, but they have no tests that trigger them.

[2016-12-26 00:07:32 UTC]
Patch 2 pour GNU MPFR 3.1.5

(CariBlog – MPFR – Logiciels)

Le patch 2 de GNU MPFR 3.1.5 est disponible dans la section bugs de la page de MPFR 3.1.5. Il corrige le bug suivant. La fonction mpfr_strtofr peut retourner une valeur ternaire incorrecte dans le mode d'arrondi au plus près (MPFR_RNDN).

[2016-12-15 17:57:00 UTC]
Patch 1 pour GNU MPFR 3.1.5

(CariBlog – MPFR – Logiciels)

Le patch 1 de GNU MPFR 3.1.5 est disponible dans la section bugs de la page de MPFR 3.1.5. Il corrige le bug suivant. Les fonctions de sortie formatée (mpfr_*printf) provoquent un comportement indéfini ou une assertion non vérifiée quand une précision inférieure à −1 est donnée comme argument pour le spécifieur de conversion f ou F (la précision donnée aurait dû être ignorée).

[2016-09-27 17:44:06 UTC]
GNU MPFR 3.1.5 est sortie

(CariBlog – MPFR – Logiciels)

La bibliothèque GNU MPFR 3.1.5 (canard à l'orange, patch level 5) est sortie. Les changements par rapport à la version 3.1.4:

[2016-09-12 21:29:25 UTC]
Patches 5 et 6 pour GNU MPFR 3.1.4

(CariBlog – MPFR – Logiciels)

Les patches 5 et 6 de GNU MPFR 3.1.4 sont disponibles dans la section bugs de la page de MPFR 3.1.4. Le patch 5 corrige des bugs dans la fonction interne de test d'arrondi mpfr_can_round_raw, utilisée par la fonction publique mpfr_can_round (en particulier, les quelques fonctions mathématiques de MPFR qui utilisent ce test d'arrondi pourraient être arrondies non correctement). Le patch 6 corrige la fonction mpfr_get_ld, qui n'arrondissait pas correctement dans la plage des dénormalisés sur les plateformes x86.

[2016-08-05 19:58:20 UTC]
Patch 4 pour GNU MPFR 3.1.4

(CariBlog – MPFR – Logiciels)

Le patch 4 de GNU MPFR 3.1.4 est disponible dans la section bugs de la page de MPFR 3.1.4. Il corrige une incompatibilité de certains programmes de test avec la norme C++11 (utilisée par défaut avec g++ de GCC 6) et est utile seulement à ceux qui compilent MPFR avec un tel compilateur C++ (au lieu d'un compilateur C).

[2016-07-17 15:11:29 UTC]
My ARITH-23 Article and Slides: Correctly Rounded Arbitrary-Precision Floating-Point Summation

(CariBlog – MPFR)

A few days ago, I presented my paper Correctly Rounded Arbitrary-Precision Floating-Point Summation at the 23rd IEEE Symposium on Computer Arithmetic (ARITH 23), which took place from July 10 to July 13, 2016, in Santa Clara, California, USA. The goal of this work was a complete rewrite of the mpfr_sum function for the next GNU MPFR release (version 4.0.0). Here are links to my article and my slides.

Note that I did some improvements since I wrote the article. The slides are more up-to-date, covering the current mpfr_sum function (r10503) at this time. The current sum.txt file (r10523) contains more details, but it is still not up-to-date (like the article).

[2016-06-13 17:34:22 UTC]
Patch 3 pour GNU MPFR 3.1.4

(CariBlog – MPFR – Logiciels)

Le patch 3 de GNU MPFR 3.1.4 est disponible dans la section bugs de la page de MPFR 3.1.4. Il corrige un bug dans le code de la soustraction (addition de deux nombres de signes différents ou soustraction de deux nombres de même signe), qui peut donner un overflow sur un cas très particulier alors qu'il ne devrait pas (voir le lien pour les détails). Il est très improbable qu'une application soit affectée par ce bug.

J'ai découvert ce bug alors que je relisais une partie du code pour implémenter le support unbounded-float (flottants avec une plage d'exposants non bornée) afin d'éviter des overflows intermédiaires pour les fonctions du style mpfr_fmma (qui calcule a·b + c·d) ou éventuellement dans le futur, l'évaluation polynomiale avec arrondi correct.

[2016-05-26 21:50:50 UTC]
Patches 1 et 2 pour GNU MPFR 3.1.4

(CariBlog – MPFR – Logiciels)

Les patches 1 et 2 de GNU MPFR 3.1.4 sont disponibles dans la section bugs de la page de MPFR 3.1.4. Le premier concerne les utilisateurs de Cygwin 32 bits (sous Microsoft Windows). Le second corrige le positionnement des drapeaux (flags) dans les fonctions mpfr_add_ui et mpfr_sub_ui; en pratique, le seul problème est que le drapeau NaN n'est pas positionné avec une entrée NaN.

J'en profite pour signaler qu'il a été décidé lors de la réunion des développeurs de MPFR des 23-24 mai que la prochaine version de MPFR sera la 4.0.

[2016-03-06 23:57:16 UTC]
GNU MPFR 3.1.4 est sortie

(CariBlog – MPFR – Logiciels)

La bibliothèque GNU MPFR 3.1.4 (canard à l'orange, patch level 4) est sortie. Les changements par rapport à la version 3.1.3: améliorations du manuel, corrections de bugs (liste détaillée sur la page de MPFR 3.1.3 et dans le fichier ChangeLog), et support DLL (bibliothèque partagée) thread-safe avec MinGW (pour Microsoft Windows).

[2016-02-29 23:43:44 UTC]
Patches 13 à 17 pour GNU MPFR 3.1.3 et seconde version candidate de GNU MPFR 3.1.4

(CariBlog – MPFR – Logiciels)

Les patches 13 à 17 de GNU MPFR 3.1.3 sont disponibles dans la section bugs de la page de MPFR 3.1.3.

La seconde version candidate de GNU MPFR 3.1.4 est également disponible.

[2016-02-15 19:44:25 UTC]
Patches 6 à 12 pour GNU MPFR 3.1.3

(CariBlog – MPFR – Logiciels)

Les patches 6 à 12 de GNU MPFR 3.1.3 sont disponibles dans la section bugs de la page de MPFR 3.1.3. Les conséquences des bugs peuvent être des plantages ou des résultats incorrects dans des cas particuliers. Par exemple, avec GNOME Calculator, le calcul de 2^(1/123456789) provoque un plantage avec une bibliothèque MPFR non patchée.

[2015-12-25 09:36:31 UTC]
Pires cas pour l'arrondi correct de fonctions mathématiques maintenant publics

(CariBlog – Tests exhaustifs des fonctions élémentaires)

Joyeux Noël! Pour cette occasion spéciale (en fait, pas vraiment car j'avais prévu de le faire avant), j'ai finalement rendu public les principaux pires cas pour l'arrondi correct de fonctions mathématiques en double précision (binary64). J'ai aussi distribué de petits programmes de test pour les fonctions C natives et la bibliothèque GNU MPFR, qui prennent de telles données en entrée. Tout est accessible depuis ma page web Test de fonctions mathématiques de la bibliothèque standard C (voir Distribution).

[2015-12-02 00:48:10 UTC]
Petit programme pour tester certaines optimisations en virgule flottante par un compilateur C

(CariBlog – vinc17)

Sur ma page web Programmes de test de l'arithmétique flottante, j'ai ajouté un nouveau programme pour tester certaines optimisations en virgule flottante par un compilateur C. Plus précisément, il teste diverses expressions simples pouvant mener à des transformations par le compilateur dans le but d'optimiser. De telles transformations sont valides sur les nombres réels, mais peuvent ici être invalides à cause des valeurs spéciales IEEE 754 (NaN, infinis, zéros signés).

Les résultats peuvent être affectés par les options de compilation liées aux optimisations d'expressions en virgule flottante. Voir un exemple d'utilisation avec GCC (détails au sujet de la virgule flottante avec GCC). Dans les erreurs, y0 est la valeur obtenue et y1 est la valeur attendue (correcte). Note: on suppose que le qualificateur volatile a pour effet de désactiver les optimisations, sinon rien n'est testé (voir le source).

[2015-10-30 17:58:29 UTC]
Patch 5 pour GNU MPFR 3.1.3

(CariBlog – MPFR – Logiciels)

Le patch 5 de GNU MPFR 3.1.3 est disponible dans la section bugs de la page de MPFR 3.1.3. Il corrige un bug pouvant amener la fonction mpfr_div à retourner un résultat incorrect dans des circonstances particulières. Cependant MPFR 3.1.3 est distribuée avec des paramètres de tuning qui ne peuvent pas faire apparaître ce bug.

[2015-07-17 13:57:11 UTC]
Patches 1 à 4 pour GNU MPFR 3.1.3

(CariBlog – MPFR – Logiciels)

Les patches 1 à 4 de GNU MPFR 3.1.3 sont disponibles dans la section bugs de la page de MPFR 3.1.3. Ils corrigent divers problèmes en cas d'exception (underflow, overflow, division par zéro) dans quelques fonctions (mpfr_lngamma, mpfr_mul_2si, mpfr_div_2ui, mpfr_div_2si, mpfr_frexp).

[2015-06-20 11:29:29 UTC]
GNU MPFR 3.1.3 est sortie

(CariBlog – MPFR – Logiciels)

La bibliothèque GNU MPFR 3.1.3 (canard à l'orange, patch level 3) est sortie. Les changements par rapport à la version 3.1.2: meilleur support d'Automake 1.13+ (maintenant utilisé pour générer l'archive, si bien que les tests de make check sont maintenant exécutés en parallèle), améliorations du manuel et corrections de bugs (liste détaillée sur la page de MPFR 3.1.2 et dans le fichier ChangeLog).

[2015-06-13 07:41:08 UTC]
GNU MPFR 3.1.3 Release Candidate

(CariBlog – MPFR – Logiciels)

[2015-04-21 15:22:20 UTC]
Conférence ARITH 22 (22-24 juin 2015) à Lyon, France

(CariBlog)

ARITH 22 – 22e conférence IEEE sur l'arithmétique des ordinateurs, 22-24 juin 2015, Lyon, France. Date limite d'inscription à tarif réduit: 30 avril 2015.

[2015-02-11 17:01:13 UTC]
Notre nouvel article On the maximum relative error when computing integer powers by iterated multiplications in floating-point arithmetic

(CariBlog)

Mon nouvel article On the maximum relative error when computing integer powers by iterated multiplications in floating-point arithmetic co-écrit avec Stef Graillat et Jean-Michel Muller, qui sera publié dans Numerical Algorithms, est disponible sur:

  • le site web de l'éditeur (c'est la version officielle et finale, mais elle n'est pas disponible gratuitement si votre bibliothèque n'a pas l'abonnement adéquat);

  • HAL (quasiment identique à la version finale, et disponible gratuitement).

Note: la version sur arXiv est actuellement plus ancienne.

Résumé:

We improve the usual relative error bound for the computation of xn through iterated multiplications by x in binary floating-point arithmetic. The obtained error bound is only slightly better than the usual one, but it is simpler. We also discuss the more general problem of computing the product of n terms.

[2014-12-12 21:50:10 UTC]
Patch 11 pour GNU MPFR 3.1.2

(CariBlog – MPFR – Logiciels)

Le patch 11 de GNU MPFR 3.1.2 est disponible dans la section bugs de la page de MPFR 3.1.2. Il corrige un dépassement de tampon dans mpfr_strtofr dû à une erreur dans la documentation de GMP pour mpn_set_str à propos de la taille d'une mémoire tampon (buffer): annonce et discussionpremière correction dans la documentation de GMP. Ce bug est présent dans les versions 2.1.0 (ajoutant mpfr_strtofr) à 3.1.2 de MPFR.

Divers liens:

[2014-10-01 22:53:27 UTC]
ARITH-22 Call For Papers

(CariBlog)

Call for papers: 22nd IEEE Symposium on Computer Arithmetic (ARITH-22). Deadline for the abstract: October 26, 2014. Deadline for the full paper: November 2, 2014. Conference: June 22-24, 2015, in Lyon, France.

[2014-07-07 21:43:11 UTC]
Patches 9 et 10 pour GNU MPFR 3.1.2

(CariBlog – MPFR – Logiciels)

Les patches 9 et 10 de GNU MPFR 3.1.2 sont disponibles dans la section bugs de la page de MPFR 3.1.2. Ils corrigent les bugs suivants.

  • Lorsqu'un très grand nombre (proche du nombre fini maximum, en valeur absolue) est divisé par un très petit nombre (proche du minimum, en valeur absolue), un dépassement de capacité (overflow) sur les entiers se produit dans le calcul de l'exposant du résultat, provoquant un comportement indéfini, comme un résultat nul au lieu d'un infini.

  • Le fichier source vasprintf.c contient des assertions incorrectes, qui peuvent échouer alors que le calcul est valide; ceci peut se produire quand on affiche des nombres minuscules (très petits exposants).

[2014-04-16 10:28:45 UTC]
Patches 4 à 8 pour GNU MPFR 3.1.2

(CariBlog – MPFR – Logiciels)

Les patches 4 à 8 de GNU MPFR 3.1.2 sont disponibles dans la section bugs de la page de MPFR 3.1.2 (les patches 4 et 5 datent de quelques mois, mais les patches 6 à 8 ont été ajoutés la nuit dernière). Le bug principal est un possible arrondi incorrect avec mpfr_exp, seulement quand la précision est d'au moins quelques milliers de bits (sinon le code incorrect n'est pas exécuté). Le dernier patch corrige un problème de compatibilité interne avec GMP 6 (sortie il y a deux semaines) lorsque MPFR est compilée avec une option particulière (généralement pas utilisée).

[2014-03-17 17:59:50 UTC]
Pages recherche: formules incorrectes dans mes transparents sur GNU MPFR

(CariBlog – MPFR)

Je viens de trouver une erreur dans les deux formules sur mon transparent Simple Output sur GNU MPFR (il y a aussi une typo concernant l'anglais). Trois présentations sont affectées. Je n'ai pas modifié mes transparents, mais j'ai ajouté des errata dans la section sur mes transparents.

Note: La bibliothèque GNU MPFR (code et documentation) était correcte.

[2013-11-13 00:48:51 UTC]
Prix La Recherche 2013

(CariBlog)

Avec des collègues, j'ai reçu le Prix La Recherche 2013 dans la catégorie Sciences de l'information, pour notre article: Peter Kornerup, Vincent Lefèvre [Inria], Nicolas Louvet [Université Lyon 1] et Jean-Michel Muller [CNRS]. On the computation of correctly-rounded sums. IEEE Transactions on Computers, 61(3):289–298, mars 2012.

La cérémonie de remise des prix a eu lieu le mardi 22 octobre 2013 au musée du quai Branly à Paris. Les vidéos sont maintenant disponibles sur le site officiel.

Liens:

[2013-10-10 10:15:51 UTC]
Patches 1 à 3 pour GNU MPFR 3.1.2

(CariBlog – MPFR – Logiciels)

Les patches 1 à 3 de GNU MPFR 3.1.2 sont disponibles dans la section bugs de la page de MPFR 3.1.2. Le principal bug qui a été corrigé concerne la classe des fonctions mpfr_fits_u*_p non signées: ces fonctions retournaient 0 (doesn't fit) au lieu de 1 (fits) sur les arguments négatifs pour lesquels l'arrondi à un entier dans le mode d'arrondi donné est 0 (donc une valeur arrondie représentable).

[2013-09-22 23:48:55 UTC]
Mini-bibliothèque Sipe

(CariBlog – Logiciels)

J'ai mis à jour ma mini-bibliothèque Sipe: j'ai complété l'implémentation basée sur l'arithmétique à virgule flottante et ajouté le support de l'arrondi vers zéro dans l'implémentation basée sur l'arithmétique entière.

[2013-05-05 00:45:28 UTC]
Mini-bibliothèque Sipe et conférence ARITH-21

(CariBlog – Logiciels)

À l'occasion de la conférence ARITH-21 à Austin, Texas, USA, où j'ai présenté ma mini-bibliothèque Sipe (anciennement SIPE) le mois dernier, j'ai créé une nouvelle page web dédiée à Sipe, que je viens de mettre à jour. Je fournis maintenant des exemples et des liens sur mes publications et ma présentation à ARITH-21.

[2013-03-13 23:57:31 UTC]
GNU MPFR 3.1.2 est sortie

(CariBlog – MPFR – Logiciels – Sécurité)

La bibliothèque GNU MPFR 3.1.2 (canard à l'orange, patch level 2) est sortie. Les changements par rapport à la version 3.1.1: corrections de bugs (liste détaillée sur la page de MPFR 3.1.1) et mise à jour des exemples à l'API de MPFR 3.x.

Note: Les archives officielles jusqu'à MPFR 3.1.1 sont affectées par un bug de GNU Automake introduisant une vulnérabilité dans make distcheck. Une des raisons de cette nouvelle version est de fournir des archives sans cette vulnérabilité.

[2013-03-09 00:29:51 UTC]
GNU MPFR 3.1.2 Release Candidate

(CariBlog – MPFR – Logiciels)

GNU MPFR 3.1.2 Release Candidate is available (bug fixes).

[2013-02-08 01:26:17 UTC]
Arrêt planifié du serveur mpfr.org et annonce de sécurité

(CariBlog – MPFR – Sécurité – Unix/Linux)

Nous avons reçu une annonce disant que pour cause de maintenance technique, l'ensemble des systèmes informatiques du Loria sera arrêté du vendredi 8 février 2013 à 17:30 CET [16:30 UTC] au samedi 9 février 2013 à 18:00 CET [17:00 UTC] (sauf imprévu). Seul le serveur web mpfr.org sera affecté par cet arrêt (ainsi que le courrier envoyé à l'ancienne adresse @loria.fr de la liste de diffusion de MPFR). Merci pour votre compréhension.

De plus, toutes les archives MPFR sont affectées par un bug de GNU Automake introduisant une vulnérabilité dans make distcheck; les utilisateurs de cette commande devraient lire les détails ici.

[2013-01-30 23:15:48 UTC]
École Précision et Reproductibilité en Calcul Numérique

(CariBlog – MPFR)

Une école thématique à laquelle je vais intervenir (session sur l'arithmétique flottante en précision arbitraire, et plus particulièrement sur GNU MPFR): école Précision et Reproductibilité en Calcul Numérique, Fréjus (centre CAES du CNRS), 25-29 mars 2013.

Date limite d'inscription: 15 février 2013.

[Mise à jour du 2021-06-04: nouvelle URL.]

[2012-12-14 01:35:23 UTC]
vinc17.net maintenant disponible via https

(Annonces – Blog – vinc17)

Depuis deux jours, il est maintenant possible de se connecter à vinc17.net et www.vinc17.net via https, e.g. https://vinc17.net/ ou, de manière équivalente, https://www.vinc17.net/. Noter que le certificat est valide seulement pour ces deux noms, si bien que la connexion est complètement sécurisée seulement pour ces deux préfixes d'URL, pas pour les URL avec vinc17.org (je ne veux juste pas payer pour un service qui serait identique).

[2012-12-10 18:03:00 UTC]
Interruption planifiée d'InriaForge

(CariBlog – MPFR – Logiciels)

En tant qu'utilisateur d'InriaForge, j'ai reçu une annonce disant qu'InriaForge sera indisponible le 2012-12-11 de 14:00 à 16:00 CET (13:00 à 15:00 UTC). Ceci affectera les pages de projet MPFR, le dépôt MPFR et l'outil de suivi, mais ni le site web de MPFR, ni les listes de diffusion.

[2012-11-17 01:24:28 UTC]
Status of Floating-Point Related Bugs in GCC and the GNU C Library (glibc)

(CariBlog)

For C programmers of numerical codes, here's a status of floating-point related bugs in GCC and the GNU C Library (glibc), at least those I've been interested in (and some of which I reported). I have grouped them into 4 classes.

[2012-09-03 11:09:17 UTC]
Patches 1 et 2 pour GNU MPFR 3.1.1

(CariBlog – MPFR – Logiciels)

Les patches 1 et 2 de GNU MPFR 3.1.1 sont disponibles dans la section bugs de la page de MPFR 3.1.1. Le patch 1 corrige plusieurs bugs dans la fonction mpfr_get_decimal64 (disponible uniquement lorsque MPFR a explicitement été configurée avec l'option --enable-decimal-float). Le patch 2 corrige un bug dans la fonction mpfr_strtofr: sa valeur ternaire peut être incorrecte dans des conditions particulières.

[2012-07-04 17:00:22 UTC]
GNU MPFR 3.1.1 est sortie

(CariBlog – MPFR – Logiciels)

La bibliothèque GNU MPFR 3.1.1 (canard à l'orange, patch level 1) est sortie. Les changements par rapport à la version 3.1.0: améliorations du manuel et corrections de bugs (liste détaillée sur la page de MPFR 3.1.0).

[2012-06-01 13:25:25 UTC]
Arrêt planifié du serveur mpfr.org

(CariBlog – MPFR)

Nous avons reçu une annonce disant que pour cause de maintenance technique, l'ensemble des systèmes informatiques du Loria sera arrêté du vendredi 1er juin 2012 à 17:30 CEST [15:30 UTC] au samedi 2 juin 2012 à 19:00 CEST [17:00 UTC] (sauf imprévu). Seul le serveur web mpfr.org sera affecté par cet arrêt (ainsi que le courrier envoyé à l'ancienne adresse @loria.fr de la liste de diffusion de MPFR).

Merci pour votre compréhension.

[2012-05-24 22:51:33 UTC]
Réunion de développeurs MPFR-MPC, 25-27 juin 2012

(CariBlog – MPFR)

Une réunion de développeurs MPFR-MPC aura lieu du 25 au 27 juin 2012 à Bordeaux, France. Plus d'information.

[2012-05-08 00:56:16 UTC]
Patches 9 et 10 pour GNU MPFR 3.1.0

(CariBlog – MPFR – Logiciels)

Les patches 9 et 10 de GNU MPFR 3.1.0 sont disponibles dans la section bugs de la page de MPFR 3.1.0. Ils corrigent des bugs liés à l'overflow/underflow dans la fonction mpfr_gamma.

[2012-05-01 23:17:09 UTC]
Arrêt planifié des listes de diffusion de MPFR

(CariBlog – MPFR)

Les listes de diffusion de MPFR (la principale et celle d'annonces) seront migrées sur un nouveau serveur le jeudi 3 mai 2012 de 9:30 CEST (7:30 UTC) à 11:30 CEST (9:30 UTC) environ. Pendant cette migration, les messages postés seront mis en file d'attente jusqu'à ce que le nouveau serveur soit opérationnel, et l'interface web du serveur de listes sera indisponible. Une fois la migration terminée, l'interface web sera disponible à une nouvelle adresse (éventuellement en plus de l'ancienne?).

Peu après la migration, le serveur web de MPFR sera mis à jour pour refléter ces changements.

[2012-03-12 18:03:04 UTC]
Patches 7 et 8 pour GNU MPFR 3.1.0

(CariBlog – MPFR – Logiciels)

Les patches 7 et 8 de GNU MPFR 3.1.0 sont disponibles dans la section bugs de la page de MPFR 3.1.0. Le premier corrige un problème avec de très grandes précisions, proches de la limite théorique provenant du type utilisé pour la précision. Le second permet d'utiliser MPFR avec la version de développement de GMP (et les futures versions à partir de la 5.1.0).

[2012-02-24 17:02:23 UTC]
Patches 5 et 6 pour GNU MPFR 3.1.0

(CariBlog – MPFR – Logiciels)

Les patches 5 et 6 de GNU MPFR 3.1.0 sont disponibles dans la section bugs de la page de MPFR 3.1.0. Tous deux corrigent des bugs qui ne peuvent se produire que si le logging est utilisé. Explications détaillées, en anglais:

  • When logging is used (note that logging support must have explicitly been enabled in the MPFR build), e.g. with MPFR_LOG_ALL=1, the program may randomly freeze (observed with dynamic linking), take a lot of memory or have other random behavior. The problem actually occurs in the following functions: mpfr_add_d, mpfr_add_ui and mpfr_mul_d; but mpfr_add_ui is used by other functions (directly or indirectly). This is due to a typo in an argument for the internal logging macro MPFR_LOG_FUNC: instead of the variable mpfr_log_prec (whose value is 6 by default), the function pointer mpfr_get_prec is used, and it has an arbitrary value. This bug (#13933) is fixed by the logging-freeze patch (patch05).

  • In the logging system, an incorrect format is used for MPFR_LOG_VAR. If the logged variable has a huge value, the output has many digits; this can potentially take much memory and disk space. This bug is fixed by the logging-varfmt patch (patch06).

[2011-12-12 21:37:00 UTC]
Nouvelle version de SIPE et rapport de recherche sur SIPE

(CariBlog – Logiciels)

Une nouvelle version de SIPE (48201 2011-12-12 01:47:58Z) est disponible. Elle corrige quelques bugs par rapport à la version du 2009-11-17. Cet outil est décrit et partiellement prouvé dans mon nouveau rapport de recherche: SIPE: Small Integer Plus Exponent [HAL / dans ma liste de publications].

Résumé: SIPE est une mini-bibliothèque sous forme de fichier d'en-tête C permettant d'effectuer des calculs à très basses précisions avec arrondi correct au plus près. Le but d'un tel outil est de faire des preuves d'algorithmes/propriétés ou des calculs de bornes d'erreur dans ces précisions, afin de les généraliser à des précisions supérieures. Les opérations supportées sont l'addition, la soustraction, la multiplication, le FMA, et diverses comparaisons et conversions.

[2011-11-05 02:57:46 UTC]
Patch 3 pour GNU MPFR 3.1.0

(CariBlog – MPFR – Logiciels)

Le patch 3 de GNU MPFR 3.1.0 est disponible dans la section bugs de la page de MPFR 3.1.0. Il corrige le bug suivant.

Les fonctions de sortie formatée (mpfr_*printf) peuvent écrire/renvoyer une chaîne incorrecte quand la valeur est arrondie vers la prochaine puissance de 10 (par exemple, 999.99999... imprimé avec "%.20RNg" peut donner "100" au lieu de "1000"). Ce bug a toujours été présent (depuis que ces fonctions ont été introduites dans MPFR 2.4.0).

[2011-10-06 22:34:36 UTC]
Patch 1 pour GNU MPFR 3.1.0

(CariBlog – MPFR – Logiciels)

Le patch 1 de GNU MPFR 3.1.0 est disponible dans la section bugs de la page de MPFR 3.1.0. Il corrige la version GCC de la définition de la macro interne MPFR_UNLIKELY. Le code compilé peut être affecté quand un limb est plus grand qu'un long (par exemple avec certaines ABI, comme mode32 sur PowerPC). La définition de MPFR_UNLIKELY pour GCC était incorrecte depuis que cette macro a été introduite dans MPFR 2.1.0, mais des problèmes ont commencé à être visibles seulement dans MPFR 3.1.0 avec toutes les assertions vérifiées (le code de MPFR est normalement écrit de manière à fonctionner avec la définition incorrecte).

[2011-10-03 23:57:25 UTC]
GNU MPFR 3.1.0 est sortie

(CariBlog – MPFR – Logiciels)

La bibliothèque GNU MPFR 3.1.0 (canard à l'orange) est sortie. Les changements par rapport aux versions 3.0.*:

  • Le source de MPFR a été réorganisé.

  • Support ansi2knr abandonné.

  • Le support TLS est maintenant détecté automatiquement. Si le TLS est supporté, MPFR est compilée avec TLS par défaut. Pour désactiver le TLS explicitement, configurer MPFR avec --disable-thread-safe.

  • Nouvelle option de configure --enable-gmp-internals pour utiliser des fonctions non documentées de GMP (ne faisant pas partie de l'API publique). Notez que que le library versioning n'a aucune garantie de fonctionner si cette option est utilisée.

  • Les fonctions mpfr_urandom et mpfr_urandomb retournent maintenant des valeurs identiques sur des processeurs avec des tailles de mots différentes (en supposant que la graine du générateur de nombres pseudo-aléatoires est la même, et que le générateur de GMP ne dépende pas lui-même de la taille de mot, cf https://gmplib.org/list-archives/gmp-devel/2010-September/001642.html).

  • Les macros mpfr_add_one_ulp et mpfr_sub_one_ulp (obsolètes et plus documentées) seront supprimées dans une future version.

  • Amélioration de la rapidité des fonctions mpfr_sqr et mpfr_div en utilisant l'algorithme de Mulders. En conséquence, d'autres fonctions utilisant ces routines seront aussi plus rapides.

  • Sortie formatée (mpfr_printf, etc.) avec %Rg et similaire beaucoup plus rapide.

  • L'option de configure --with-gmp-build peut maintenant être utilisée quand le répertoire source de GMP et le répertoire de compilation sont différents (sans avoir à copier les fichiers d'en-tête manuellement comme avant).

  • Nouvelles fonctions mpfr_buildopt_gmpinternals_p, mpfr_buildopt_tune_case, mpfr_frexp, mpfr_grandom et mpfr_z_sub

  • Nouvelle exception divide-by-zero (drapeau) et fonctions associées.

  • L'en-tête mpfr.h peut maintenant être inclue plusieurs fois, tout en continuant de supporter les fonctions optionnelles (voir la section Headers and Libraries dans le manuel).

  • Mise à jour des paramètres de tuning.

  • Amélioration du manuel de MPFR.

  • Tests de MPFR: libtool ne génère plus des scripts wrapper avec make check (si bien que lancer les tests sous valgrind ou gdb est plus facile).

  • Correction de bugs.

[2011-09-23 10:12:10 UTC]
GNU MPFR 3.1.0 Release Candidate 2

(CariBlog – MPFR – Logiciels)

[2011-09-18 01:03:17 UTC]
GNU MPFR 3.1.0 Release Candidate

(CariBlog – MPFR – Logiciels)

[2011-07-17 13:00:35 UTC]
Norme ISO/IEC/IEEE 60559:2011 sur l'arithmétique à virgule flottante (= IEEE 754-2008) publiée

(CariBlog)

La norme ISO/IEC/IEEE 60559:2011 sur l'arithmétique à virgule flottante, correspondant à la norme IEEE 754-2008, a été publiée (stage 60-60, 2011-07-07).

[2011-07-06 17:58:39 UTC]
Fonction mpfr_min_prec de GNU MPFR

(CariBlog – MPFR – Logiciels)

Note à propos de la fonction mpfr_min_prec de GNU MPFR: elle est apparue dans la version 3.0.0, mais n'était pas listée dans les nouveautés. J'ai corrigé la page web de GNU MPFR 3.0.0, ainsi que le fichier NEWS et le manuel de MPFR pour les versions futures de MPFR.

[2011-06-01 15:05:12 UTC]
Recrutement d'un ingénieur jeune diplômé pour du développement lié à GNU MPFR (Lyon)

(CariBlog – MPFR)

L'INRIA recrute un ingénieur jeune diplômé pour du développement lié à la bibliothèque GNU MPFR (contrat de 12 mois, renouvelable une fois). Fiche de poste / fiche sur le site de l'INRIA. Pour être éligible, un IJD doit avoir obtenu son diplôme au cours de l'année précédant son recrutement (donc 2010 ou 2011).

Date limite de candidature: 30 septembre 2011.

[2011-05-09 15:24:20 UTC]
Patch 4 pour GNU MPFR 3.0.1

(CariBlog – MPFR – Logiciels)

Le patch 4 de GNU MPFR 3.0.1 est disponible dans la section bugs de la page de MPFR 3.0.1. Il corrige le bug suivant dans les tests (ce n'est pas un bug dans la bibliothèque elle-même).

Le test texp ne filtre pas la valeur 0 (qui peut apparaître avec certaines graines, fixées par GMP_CHECK_RANDOMIZE) lors de la comparaison des fonctions internes mpfr_exp_2 et mpfr_exp_3. La conséquence est un échec de ce test si cela se produit.

[2011-05-06 11:53:02 UTC]
Patches 2 et 3 pour GNU MPFR 3.0.1

(CariBlog – MPFR – Logiciels)

Les patch 2 et patch 3 de GNU MPFR 3.0.1 sont disponibles dans la section bugs de la page de MPFR 3.0.1. Ils corrigent les problèmes suivants:

  • La fonction mpfr_rec_sqrt peut avoir un comportement indéfini à cause de l'appel à mpn_add_1 ou mpn_sub_1 (de GMP) avec une taille nulle, ce qui n'est pas autorisé. Le quatrième argument de mpn_add_1 ou mpn_sub_1 (i.e. la valeur qui aurait dû être ajoutée ou soustraite) est ici aussi 0, si bien que les conséquences sont limitées. En pratique, avec la version actuelle de GMP, ceci produit un petit dépassement de tampon (1 limb, i.e. 32 bits ou 64 bits), comme indiqué par valgrind, avec les conséquences possibles: un plantage, ou corruption de mémoire (très peu probable) si un autre processus ou thread modifie le limb au même moment (puisque dans ce contexte, la valeur est d'abord lue puis réécrite par GMP). Ce bug a toujours été présent depuis l'introduction de la fonction mpfr_rec_sqrt dans MPFR 2.4.0.

  • La fonction mpfr_atan appelle mpfr_check_range sur le résultat non arrondi (qui n'est plus alloué) au lieu du résultat arrondi. Conséquence de ce bug: résultat pouvant être incorrect ou invalide et/ou drapeaux incorrects si le résultat non arrondi ou arrondi ne se trouve pas dans la plage d'exposants courante. Ou éventuellement pire si la mémoire utilisée par le résultat non arrondi est modifiée avant le retour de la fonction. Ce bug est présent depuis MPFR 2.1.0 (les exceptions n'étaient pas supportées auparavant).

[2011-04-26 11:31:46 UTC]
Patch 1 pour GNU MPFR 3.0.1

(CariBlog – MPFR – Logiciels)

Le patch 1 de GNU MPFR 3.0.1 est disponible dans la section bugs de la page de MPFR 3.0.1 depuis deux semaines. Il corrige le bug suivant, qui ne devrait probablement jamais se produire dans des codes utilisateurs: si la plage d'exposants a été réduite de façon à ce que emax = 1 ou 2, mpfr_asin peut donner un résultat incorrect sur +1 et -1.

[2011-04-04 21:30:57 UTC]
GNU MPFR 3.0.1 est sortie

(CariBlog – MPFR – Logiciels)

La bibliothèque GNU MPFR 3.0.1 (boudin aux pommes, patch level 1) est sortie. Les changements par rapport à la version 3.0.0: corrections de bugs (liste détaillée sur la page de MPFR 3.0.0).

[2011-03-31 11:21:02 UTC]
Arrêt planifié des serveurs mpfr.org et de la liste de diffusion de MPFR

(CariBlog – MPFR)

Nous avons reçu une annonce disant que l'ensemble des systèmes informatiques du Loria sera arrêté du vendredi 1er avril 2011 à 18:00 CEST (16:00 UTC) au lundi 4 avril 2011 à 09:00 CEST (07:00 UTC). Le serveur web mpfr.org et la liste de diffusion de MPFR seront affectés par cet arrêt.

Par conséquent, la sortie de GNU MPFR 3.0.1 est reportée au 4 avril.

Merci pour votre compréhension.

[2011-03-19 09:08:36 UTC]
GNU MPFR 3.0.1 Release Candidate

(CariBlog – MPFR – Logiciels)

GNU MPFR 3.0.1 Release Candidate is available (bug fixes).

[2011-02-11 18:07:54 UTC]
Annonce automatique de mes nouveaux billets de blog sur identi.ca ou Twitter

(Annonces – Blog)

Les annonces de mes nouveaux billets dans mon blog sont maintenant postées sur mon compte identi.ca (avec le renvoi usuel sur mon compte Twitter) lorsque le billet est disponible en anglais, et uniquement sur mon compte Twitter lorsque le billet est uniquement en français.

[2011-01-18 01:43:55 UTC]
Réunion de développeurs MPFR-MPC, 13-14 janvier 2011

(CariBlog – MPFR)

Compte-rendu de la réunion de développeurs MPFR-MPC, qui s'est tenue à Paris les jeudi 13 et vendredi 14 janvier 2011. GNU MPFR 3.0.1 devrait sortir dans quelques semaines.

[2011-01-02 00:16:09 UTC]
Annonce automatique de mes nouveaux billets de blog sur Twitter

(Annonces – Blog)

À chaque fois que je poste un nouveau billet dans mon blog, une annonce est maintenant automatiquement envoyée sur mon compte Twitter. Cela devrait être le cas pour celui-ci...

[2010-11-10 01:29:10 UTC]
Patch 8 pour GNU MPFR 3.0.0

(CariBlog – MPFR – Logiciels)

Le patch 8 de GNU MPFR 3.0.0 est disponible dans la section bugs de la page de MPFR 3.0.0. Le patch 4 a introduit deux problèmes mineurs: D'abord, si l'utilisateur définit une macro avec le même nom que certains mots-clés (ce qui est implicitement découragé), le comportement peut être incorrect (échec de compilation de code utilisateur, résultats faux...); ce problème était déjà présent pour d'autres macros. Ensuite, la vérification de type habituelle n'était plus toujours faite; par exemple, passer un pointeur au lieu d'un entier n'était plus considéré comme une erreur à la compilation. Ce patch corrige ces problèmes. Notez cependant que la définition d'une macro avec le nom do, while ou sizeof est toujours interdite, et d'autres restrictions peuvent être ajoutées dans le futur (à moins que MPFR_USE_NO_MACRO n'ait été définie).

[2010-10-23 21:46:37 UTC]
Patches 5 à 7 pour GNU MPFR 3.0.0

(CariBlog – MPFR – Logiciels)

Les patches 5 à 7 de GNU MPFR 3.0.0 sont disponibles dans la section bugs de la page de MPFR 3.0.0.

  • Le patch 5 corrige un bug dans le test tcan_round (qui peut échouer, mais les utilisateurs normaux ne devraient pas remarquer d'échec).

  • Le patch 6 corrige un bug dans le code de la soustraction sur certains cas particuliers. Ce bug était présent dans toutes les versions de MPFR. La conséquence peut être un arrondi incorrect ou même un comportement indéfini. Ce bug ne peut pas se produire si les précisions des arguments (valeurs d'entrée et de sortie) sont les mêmes, mais il peut aussi être produit par des fonctions appelant mpfr_add ou mpfr_sub avec des précisions différentes, e.g. par mpfr_fma et mpfr_fms. L'application de ce patch est vivement recommandée.

  • Le patch 7 corrige un bug dans mpfr_set_ld, qui peut se produire sur de très petites valeurs. En pratique, seules des plateformes avec quadruple précision devraient être affectées; mais de telles plateformes sont peu courantes.

[2010-09-21 17:38:54 UTC]
Programme préliminaire de SCAN 2010

(CariBlog)

SCAN 2010 (GAMM-IMACS International Symposium on Scientific Computing, Computer Arithmetic and Validated Numerics) se tiendra à l'ENS-Lyon du 27 au 30 septembre 2010.

Programme préliminaire.

[2010-09-07 13:57:16 UTC]
Patch 4 pour GNU MPFR 3.0.0

(CariBlog – MPFR – Logiciels)

Le patch 4 de GNU MPFR 3.0.0 est disponible dans la section bugs de la page de MPFR 3.0.0. Il corrige les problèmes suivants dans les macros mpfr_cmp_ui, mpfr_cmp_si, mpfr_set_ui et mpfr_set_si pour les compilateurs basés sur GCC:

  • Dans la macro mpfr_cmp_ui pour les compilateurs basés sur GCC, quand le second argument est une expression constante de value nulle, le premier argument est évalué deux fois, rendant le comportement incorrect quand l'évaluation du premier argument a des effets secondaires. La macro mpfr_cmp_si utilise mpfr_cmp_ui, et est donc affectée par ce bug. Notez que bien que mpfr_cmp_ui et mpfr_cmp_si soient décrites comme des fonctions, elles sont aussi implémentées en tant que macros dans mpfr.h (sauf en cas de bug comme ici, une implémentation par une macro ne devrait pas introduire de différence dans le comportement).

  • Un problème beaucoup moins important est que les macros mpfr_cmp_si et mpfr_set_si pour les compilateurs basés sur GCC (dans mpfr.h) peuvent produire des avertissements (warnings) quand du code utilisateur est compilé avec l'option -Wconversion.

  • Ces macros mpfr_cmp_ui, mpfr_cmp_si, mpfr_set_ui et mpfr_set_si pour les compilateurs basés sur GCC peuvent avoir un comportement incorrect si du code utilisateur avec comportement indéfini demande un comportement spécifié par une certaine extension non standard de C (comme avec l'utilisation de l'option -fwrapv de GCC) et que l'appel est fait avec un argument qui demande une conversion implicite vers unsigned long ou long.

[2010-07-10 01:05:04 UTC]
Patch 3 pour GNU MPFR 3.0.0

(CariBlog – MPFR – Logiciels)

Le patch 3 de GNU MPFR 3.0.0 est disponible dans la section bugs de la page de MPFR 3.0.0. Il corrige la détection de l'underflow dans la fonction mpfr_gamma.

[2010-07-03 07:45:54 UTC]
Patches 1 et 2 pour GNU MPFR 3.0.0

(CariBlog – MPFR – Logiciels)

Les patch 1 et patch 2 de GNU MPFR 3.0.0 sont disponibles dans la section bugs de la page de MPFR 3.0.0.

  • Le patch 1 corrige les cas spéciaux suivants de la fonction mpfr_out_str: La valeur entière retournée par mpfr_out_str est incorrecte sur NaN et les infinis. De plus, les erreurs de sortie ne sont pas prises en compte, et si une telle erreur se produit, la valeur retournée est incorrecte (elle aurait dû être 0).

  • Le patch 2 corrige un problème de compilation sur certains environnements comme Solaris avec le compilateur de Sun; il peut être vu avec make check, où une erreur typique est que le symbole alloca est indéfini. Ce problème a été introduit dans MPFR 3.0.0 (il n'était pas présent dans les versions précédentes).

[2010-06-11 21:52:20 UTC]
GNU MPFR 3.0.0 est sortie

(CariBlog – MPFR – Logiciels)

La bibliothèque GNU MPFR 3.0.0 (boudin aux pommes) est sortie. Les changements par rapport aux versions 2.4.* (liste corrigée le 2010-12-07):

  • MPFR 3.0.0 est incompatible avec les versions précédentes au niveau du binaire, mais (presque) compatible au niveau de l'API. Plus précisément, les fonctions obsolètes mpfr_random et mpfr_random2 ont été retirées, la signification du type de retour de la fonction mpfr_get_f a changé, et le type de retour de la fonction mpfr_get_z est maintenant int au lieu de void. En pratique, cela ne devrait pas casser de code existant.

  • MPFR est maintenant distribuée sous la GNU Lesser General Public License version 3 ou ultérieure (LGPL v3+).

  • Les modes d'arrondi GMP_RNDx sont maintenant MPFR_RNDx (GMP_RNDx gardés pour la compatibilité).

  • Un nouveau mode d'arrondi (MPFR_RNDA) est disponible pour arrondir à l'opposé de zéro (away from zero).

  • Le type des modes d'arrondi est maintenant mpfr_rnd_t (comme dans les versions précédentes, mpfr_rnd_t et mp_rnd_t sont acceptés, mais mp_rnd_t pourrait être retiré dans le futur).

  • Le type pour la précision est maintenant mpfr_prec_t (comme dans les versions précédentes, mpfr_prec_t et mp_prec_t sont acceptés, mais mp_prec_t pourrait être retiré dans le futur) et il est maintenant signé (il était non signé dans MPFR 2.*, mais cela n'était pas documenté). En pratique, ce changement ne devrait pas affecter les codes existants qui ne supposaient rien sur le type pour la précision.

  • MPFR a maintenant son type pour l'exposant mpfr_exp_t, qui est actuellement le même que le mp_exp_t de GMP.

  • Les fonctions mpfr_random et mpfr_random2 ont été retirées.

  • mpfr_get_f et mpfr_get_z retournent maintenant une valeur ternaire.

  • mpfr_strtofr accepte maintenant les bases de 37 à 62.

  • mpfr_custom_get_mantissa a été renommée en mpfr_custom_get_significand (mpfr_custom_get_mantissa est toujours disponible via un #define).

  • Les fonctions mpfr_get_si, mpfr_get_ui, mpfr_get_sj, mpfr_get_uj, mpfr_get_z et mpfr_get_z_2exp n'ont plus de cas avec comportement indéfini; dans ces cas, le comportement est maintenant spécifié, et en particulier, le drapeau erange est positionné.

  • Nouvelles fonctions mpfr_buildopt_tls_p et mpfr_buildopt_decimal_p donnant des informations sur les options utilisées à la compilation de MPFR.

  • Nouvelle fonction mpfr_regular_p.

  • Nouvelle fonction mpfr_set_zero.

  • Nouvelle fonction mpfr_digamma.

  • Nouvelle fonction mpfr_ai (incomplète, expérimentale).

  • Nouvelles fonctions mpfr_set_flt et mpfr_get_flt pour convertir depuis/vers le type float.

  • Nouvelle fonction mpfr_urandom.

  • Nouvelle fonction mpfr_set_z_2exp (compagnon de mpfr_get_z_2exp, renommée à partir de la fonction mpfr_get_z_exp des versions précédentes).

  • Amélioration de la vitesse pour des grandes précisions des fonctions trigonométriques (mpfr_sin, mpfr_cos, mpfr_tan, mpfr_sin_cos): gain d'un facteur environ 2,5 pour 105 chiffres, d'à peu près 5 pour 106 chiffres.

  • Amélioration de la vitesse pour des grandes précisions des fonctions trigonométriques inverses (arcsin, arccos, arctan): facteur d'environ 2 pour 103 chiffres, jusqu'à 2,7 pour 106 chiffres.

  • Quelques fichiers de documentation sont installés dans $docdir.

  • La détection d'un répertoire de compilation de GMP (plus précisément, les fichiers d'en-têtes internes de GMP) était précédemment effectuée séparément de l'utilisation de l'option de configure --with-gmp-build. Ceci n'était pas cohérent avec la documentation et avec d'autres parties du script configure. Ainsi, à partir de MPFR 3.0.0, les fichiers d'en-têtes internes de GMP sont maintenant utilisés si et seulement si l'option de configure --with-gmp-build est donnée.

  • Le script configure reconnaît certains formats long double supplémentaires (double big endian, double little endian, double-double big endian).

  • Manuel de MPFR: une section API Compatibility a été ajoutée.

  • Correction de bugs.

[2010-06-06 23:44:07 UTC]
GNU MPFR 3.0.0 Release Candidate 2

(CariBlog – MPFR – Logiciels)

[2010-04-10 21:52:48 UTC]
SCAN 2010

(CariBlog)

SCAN 2010 (GAMM-IMACS International Symposium on Scientific Computing, Computer Arithmetic and Validated Numerics) se tiendra à l'ENS-Lyon du 27 au 30 septembre 2010.

Soumission de résumé jusqu'au vendredi 16 avril 2010.

[2010-03-18 21:04:02 UTC]
pow(-0.0,0.5) vs sqrt(-0.0) et GCC

(CariBlog)

D'après l'annexe F de la norme ISO C99 (et la norme IEEE 754-2008, mais pas encore référencée par la norme C), pow(-0.0,0.5) doit retourner +0, alors que sqrt(-0.0) doit retourner -0. La seconde forme était en fait définie par l'ancienne norme IEEE 754-1985 et en pratique, elle est implémentée en matériel (par les processeurs). En suivant une discussion dans la liste de développement de GCC, j'ai remarqué que GCC transforme pow(x,0.5) en sqrt(x) même pour la valeur -0, ce qui n'est pas correct. GCC 4.3.* et 4.4.3 (mais pas GCC 4.2.*) sont affectés par ce bug, que j'ai rapporté. Il a été corrigé quelques heures plus tard.

[2010-03-02 09:25:48 UTC]
Migration et interruption planifiée d'INRIAGforge

(CariBlog – MPFR – Logiciels)

INRIAGforge, qui héberge le dépôt Subversion de MPFR, va être mis à jour le 8 mars. À cause de cette migration, les pages web sur INRIAGforge seront indisponibles le 8 mars de 13:30 à 16:30 CET (12:30 à 15:30 UTC), et l'accès au dépôt Subversion sera indisponible de 16:30 à 17:30 CET (15:30 à 16:30 UTC).

Le site web de MPFR et la liste de diffusion ne sont pas hébergés sur INRIAGforge, et ne seront donc pas affectés.

[2010-02-17 12:46:43 UTC]
Notre livre Handbook of Floating-Point Arithmetic

(CariBlog – Informatique)

Le livre Handbook of Floating-Point Arithmetic, écrit par plusieurs membres d'Arénaire (dont moi-même), est disponible depuis quelques semaines.

Floating-point arithmetic is by far the most widely used way of implementing real-number arithmetic on modern computers. Although the basic principles of floating-point arithmetic can be explained in a short amount of time, making such an arithmetic reliable and portable, yet fast, is a very difficult task. From the 1960s to the early 1980s, many different arithmetics were developed, but their implementation varied widely from one machine to another, making it difficult for nonexperts to design, learn, and use the required algorithms. As a result, floating-point arithmetic is far from being exploited to its full potential.

This handbook aims to provide a complete overview of modern floating-point arithmetic, including a detailed treatment of the newly revised (IEEE 754-2008) standard for floating-point arithmetic. Presented throughout are algorithms for implementing floating-point arithmetic as well as algorithms that use floating-point arithmetic. So that the techniques presented can be put directly into practice in actual coding or design, they are illustrated, whenever possible, by a corresponding program.

Key topics and features include:

  • Presentation of the history and basic concepts of floating-point arithmetic and various aspects of the past and current standards

  • Development of smart and nontrivial algorithms, and algorithmic possibilities induced by the availability of a fused multiply-add (FMA) instruction, e.g., correctly rounded software division and square roots

  • Implementation of floating-point arithmetic, either in software—on an integer processor—or hardware, and a discussion of issues related to compilers and languages

  • Coverage of several recent advances related to elementary functions: correct rounding of these functions and computation of very accurate approximations under constraints

  • Extensions of floating-point arithmetic such as certification, verification, and big precision

Handbook of Floating-Point Arithmetic is designed for programmers of numerical applications, compiler designers, programmers of floating-point algorithms, designers of arithmetic operators, and more generally, students and researchers in numerical analysis who wish to better understand a tool used in their daily work and research.

Une autre page sur le livre, avec des liens et errata.

[2010-01-29 00:00:01 UTC]
Arrêt planifié des serveurs mpfr.org et de la liste de diffusion de MPFR

(CariBlog – MPFR)

Nous avons reçu une annonce disant que l'ensemble des systèmes informatiques du Loria sera arrêté du vendredi 5 février à 17:00 (16:00 UTC) au dimanche 7 février à 19:00 (18:00 UTC). Le serveur web mpfr.org et la liste de diffusion de MPFR seront affectés par cet arrêt. Merci pour votre compréhension.

[2010-01-12 00:11:12 UTC]
Patch 3 pour GNU MPFR 2.4.2

(CariBlog – MPFR – Logiciels)

Le patch 3 de MPFR 2.4.2 est disponible dans la section bugs de la page de MPFR 2.4.2. Il permet de compiler MPFR avec les fichiers internes de GMP 5 (c'est nécessaire à cause d'un changement interne à GMP), i.e. en utilisant l'option --with-gmp-build. Note: la plupart des utilisateurs n'a pas besoin de ce patch.

[2010-01-07 23:51:53 UTC]
Interruption planifiée d'InriaGforge

(CariBlog – MPFR – Logiciels)

Interruption planifiée d'InriaGforge: le 2010-01-14, de 17:00 à 19:00 heure française (16:00 à 18:00 UTC), le site InriaGforge et tous les services associés seront indisponibles pour cause d'opérations de maintenance sur les serveurs.

Le site web et la liste de diffusion de MPFR ne seront pas affectés.

[2009-12-18 17:59:44 UTC]
Patches 1 et 2 pour GNU MPFR 2.4.2

(CariBlog – MPFR – Logiciels)

Les patch 1 et patch 2 de MPFR 2.4.2 sont disponibles dans la section bugs de la page de MPFR 2.4.2.

  • Le patch 1 corrige un bug mineur: le drapeau underflow n'est pas positionné quand la fonction mpfr_sin_cos est appelée sur le plus petit nombre strictement positif ou son opposé en arrondi vers zéro ou équivalent.

  • Le patch 2 permet de compiler MPFR sur les processeurs MIPS avec GCC 4.4 ou version ultérieure.

[2009-11-30 17:23:19 UTC]
GNU MPFR 2.4.2 est sortie

(CariBlog – MPFR – Logiciels)

La bibliothèque GNU MPFR 2.4.2 (andouillette sauce moutarde, patch level 2) est sortie. Les changements par rapport à la version 2.4.1:

  • Correctif de sécurité dans les fonctions de sortie formatée (débordement de tampon).

  • Fonctions de sortie formatée: 6 est maintenant la valeur par défaut pour un champ de précision vide avec %Rf.

  • Meilleure portabilité du script configure.

  • Détection des types intmax_t et uintmax_t.

  • Amélioration de la documentation: mpfr_get_z_exp, mpfr_strtofr, mpfr_get_str et fonctions de sortie formatée.

  • Message plus précis en cas d'échec d'assertion.

  • Mise à jour du test tcmp_ld pour tester réellement les long double.

  • Quelques fichiers de documentation sont installés dans $docdir.

  • Suppression de mpfr_init_cache (fonction non utilisée et non documentée).

  • Correction de la façon dont $CC / $CFLAGS sont obtenus grâce à gmp.h (__GMP_CC / __GMP_CFLAGS).

  • Correction de bugs.

  • Notez aussi que GCC 4.4.0 (seulement cette version obsolète) ne compile pas MPFR 2.4.2 correctement; ce problème est détecté par make check (échec de tget_z et tpow_all).

[2009-11-26 00:17:02 UTC]
GNU MPFR 2.4.2 Release Candidate 3

(CariBlog – MPFR – Logiciels)

The third release candidate of GNU MPFR 2.4.2 is available.

The main problem found in the second release candidate (also present in previous MPFR versions): When gcc is installed, gmp.h contains __GMP_CC / __GMP_CFLAGS information, and GMP has been compiled with a compiler somewhat incompatible with gcc (this can be the default on some machines), then the build of MPFR can fail. The reason is that the configure script detected the presence of gcc before the compiler from __GMP_CC was chosen (replaced gcc), so that the script did some settings related to gcc (due to some autoconf macro), such as selecting gcc-specific options for dependency tracking.

[2009-11-23 00:04:13 UTC]
GNU MPFR 2.4.2 Release Candidate 2

(CariBlog – MPFR – Logiciels)

[2009-09-28 12:18:28 UTC]
Annonce RAIM'09: 3es rencontres Arithmétique de l'Informatique Mathématique

(CariBlog)

Les 3es rencontres Arithmétique de l'Informatique Mathématique (RAIM'09) auront lieu à Lyon, au Laboratoire de l'Informatique du Parallélisme (ENS Lyon), du lundi 26 au mercredi 28 octobre 2009. Ces rencontres sont organisées dans le cadre du Groupe de Travail Arithmétique du GDR Informatique Mathématique, pôle Calcul Formel, Arithmétique et Géométrie.

La date limite d'inscription est fixée au lundi 12 octobre 2009.

L'inscription est sans frais, mais nécessaire à des fins d'organisation. Le formulaire est accessible sur le site web des rencontres.

Cette édition est organisée autour de cinq thèmes:

Ces rencontres comportent également deux cours d'une heure sur des domaines proches:

Le programme détaillé est disponible depuis le site web des rencontres.

[2009-09-17 22:25:30 UTC]
Arrêt planifié des serveurs mpfr.org et de la liste de diffusion de MPFR

(CariBlog – MPFR)

J'ai reçu l'annonce suivante. En résumé, l'ensemble des systèmes informatiques du Loria sera arrêté du vendredi 18 septembre à 18:00 (16:00 UTC) au samedi 19 septembre à 20:00 (18:00 UTC). Le serveur web mpfr.org et la liste de diffusion de MPFR seront affectés par cet arrêt. Merci pour votre compréhension.

[2009-06-21 00:28:51 UTC]
Serveur web de MPFR injoignable

(CariBlog – MPFR)

Pour une raison inconnue, le serveur web de MPFR (mpfr.org) est injoignable depuis l'après-midi du samedi 20 juin (au moins); d'autres serveurs hébergés au Loria sont aussi affectés. Ceci peut durer jusqu'à lundi. Désolé pour le dérangement.

[Mise à jour] C'est reparti depuis 2009-10-22 07:00 UTC. C'était dû à une coupure de courant.

[2009-06-15 17:32:37 UTC]
Articles d'Arith-19 disponibles

(CariBlog)

Quelques informations après la conférence Arith-19... Les articles peuvent être récupérés depuis la page du programme du site web d'Arith-19. La date limite pour le numéro spécial est le 2009-08-03.

[2009-03-23 22:05:16 UTC]
École d'été CNC'2 sur MPFR et MPC

(CariBlog – MPFR)

Nous (Andreas Enge, Vincent Lefèvre, Philippe Théveny et Paul Zimmermann) organisons une école d'été sur MPFR et MPC les 25 et 26 juin, après la précédente édition d'octobre 2007, qui a connu un franc succès. Cette école est destinée aux chercheurs ou ingénieurs du public ou privé qui désirent appréhender ces bibliothèques. Cette école consistera en moitié d'exposés et moitié de travaux pratiques sur machine, où les participants apprendront comment utiliser au mieux MPFR et MPC sur de petits exercices. Les participants sont aussi invités à venir avec leurs propres problèmes.

A priori l'école sera en français, cependant si des participants non francophones s'inscrivent, il est possible qu'elle soit en anglais.

[Mise à jour 2009-03-30] Il est maintenant possible de s'inscrire (date limite d'inscription le 19 juin, ou le 29 mai avec hébergement).

[2009-03-10 03:29:27 UTC]
Patches 3 et 4 pour MPFR 2.4.1

(CariBlog – MPFR – Logiciels)

Les patch 3 et patch 4 de MPFR 2.4.1 sont disponibles dans la section bugs de la page de MPFR 2.4.1.

  • Le patch 3 ajoute des casts dans les tests. Avec la plupart des implémentations C (voire toutes), les tests ne devraient pas être affectés par ces casts manquants.

  • Le patch 4 corrige le bug suivant. Un type est incorrect dans le fichier vasprintf.c. En pratique, cela peut faire planter MPFR lorsque le spécifieur M (pour les fonctions de sortie formatée) est utilisé et qu'un limb n'a pas la même taille qu'un pointeur (e.g. quand GMP a été compilé avec ABI=mode32 sur PowerPC G5).

[2009-03-05 13:12:34 UTC]
Actualités concernant MPFR

(CariBlog – MPFR – Logiciels)

[2009-02-28 01:48:53 UTC]
Patch 1 pour MPFR 2.4.1

(CariBlog – MPFR – Logiciels)

Le patch 1 de MPFR 2.4.1 est disponible dans la section bugs de la page de MPFR 2.4.1. Il corrige un bug dans les fonctions de reste (mpfr_fmod, mpfr_remainder et mpfr_remquo): ces fonctions arrondissent le résultat avant de changer son signe quand l'entrée x est négative. La conséquence est que dans les modes d'arrondi non symétriques (GMP_RNDD et GMP_RNDU), le résultat est arrondi dans la mauvaise direction.

[2009-02-26 23:40:19 UTC]
GNU MPFR 2.4.1 est sortie

(CariBlog – MPFR – Logiciels – Sécurité)

Suite à un débordement de tampon (buffer overflow) que j'ai découvert un peu par hasard lors de la relecture du source des fonctions de sortie formatée de MPFR (car je pensais avoir trouvé un bug dans mpfr_printf, alors qu'il s'agissait en fait d'un joli effet secondaire quelque part dans mon code), pouvant avoir des conséquences d'un point de vue de la sécurité, nous avons décidé de sortir immédiatement cette nouvelle version: GNU MPFR 2.4.1. Les changements par rapport à la version 2.4.0:

  • Correctif de sécurité dans mpfr_snprintf et mpfr_vsnprintf (débordement de tampon).

  • Configure: nouvelles vérifications des modificateurs de longueur hh et ll (nouveaux dans C99) car hh est absent sur alpha-OSF1-V5.

  • Diverses corrections dans le manuel de MPFR. En particulier, mpfr_inits, mpfr_inits2, mpfr_clears et MPFR_DECL_INIT sont dans l'API publique depuis MPFR 2.4.0.

[2009-02-03 11:52:05 UTC]
Arrêt des serveurs mpfr.org et liste de diffusion de MPFR

(CariBlog – MPFR)

À cause d'une coupure de courant, les serveurs hébergeant mpfr.org et la liste de diffusion de MPFR seront arrêtés à partir de 17:00 UTC aujourd'hui le 3 février jusqu'à 08:00 UTC demain le 4 février.

Notez que les serveurs InriaGforge (Subversion...) ne seront pas affectés.

[2009-01-27 02:32:43 UTC]
GNU MPFR 2.4.0 est sortie

(CariBlog – MPFR – Logiciels)

La bibliothèque GNU MPFR 2.4.0 (andouillette sauce moutarde) est sortie. Les changements par rapport aux versions 2.3.*:

  • MPFR est maintenant un paquet GNU.

  • Changements dans le comportement de mpfr_strtofr et dans sa documentation concernant des cas particuliers où le code et la documentation étaient contradictoires; ce changement est aussi présent dans MPFR 2.3.1.

  • Le comportement de mpfr_check_range a changé: si la valeur est un infini inexact, le drapeau overflow est positionné (au cas où il aurait été perdu); ce changement est aussi présent dans MPFR 2.3.2.

  • La fonction mpfr_init_gmp_rand (définie seulement lorsque MPFR est construite avec l'option de configure --with-gmp-build) n'est plus définie du tout. Cette fonction était privée et non documentée, et était utilisée seulement dans la suite de tests de MPFR. Un code utilisateur qui l'appellerait est considéré comme incorrect et peut échouer en conséquence. L'exécution de l'ancienne suite de tests sur MPFR 2.4.0 peut aussi échouer.

  • Nouvelles fonctions:

    • entre un nombre MPFR et un double: mpfr_add_d, mpfr_sub_d, mpfr_d_sub, mpfr_mul_d, mpfr_div_d, mpfr_d_div;

    • entrées/sorties formatées: mpfr_printf, mpfr_fprintf, mpfr_vprintf, mpfr_vfprintf, mpfr_sprintf, mpfr_snprintf, mpfr_vsprintf, mpfr_vsnprintf, mpfr_asprintf, mpfr_vasprintf;

    • mpfr_sinh_cosh, mpfr_li2, mpfr_modf, mpfr_fmod, mpfr_rec_sqrt.

  • Test de configuration pour le support TLS.

  • Récupération des valeurs par défaut de $CC et $CFLAGS dans le gmp.h (__GMP_CC / __GMP_CFLAGS, disponibles à partir de GMP 4.2.3).

  • Documentation du fait que mpfr_random et mpfr_random2 seront supprimées dans la prochaine version, et que la spécification de mpfr_eq pourra changer dans la prochaine version (pour compatibilité avec la couche mpf de GMP).

  • Correction de bugs.

[2009-01-21 14:34:10 UTC]
MPFR 2.4.0 Release Candidate 3

(CariBlog – MPFR – Logiciels)

The third release candidate of MPFR 2.4.0 is available. Note that if MPFR is built using GMP's build directory, the compilation of the tests will fail with an error like: error: invalid lvalue in unary `&'. This problem has been fixed in the trunk (and the release will have the fix, after some more tests).

Also, the MPFR web site will not be reachable on January 23 between 06:00 and 06:30 UTC.

[2008-12-21 16:12:59 UTC]
Mes dernières publications

(CariBlog)

[2008-12-12 17:43:11 UTC]
MPFR 2.4.0 Release Candidate

(CariBlog – MPFR – Logiciels)

[2008-12-01 23:59:28 UTC]
Migration du service InriaGforge

(CariBlog – MPFR)

Le service InriaGforge va migrer le 4 décembre. Ceci affectera le dépôt Subversion de MPFR (mais pas le site web mpfr.org, ni la liste de diffusion de MPFR, qui sont hébergés ailleurs).

[2008-10-28 17:24:05 UTC]
Les effets de la contraction d'expressions flottantes en C

(CariBlog)

J'ai ajouté un petit programme C de test de l'effet de la contraction en FMA sur mes pages d'arithmétique des ordinateurs. Il montre que sous certaines conditions, on peut avoir des expressions du style 1.1 × 1.1 - 1.1 × 1.1 dont l'évaluation ne donne pas 0, ce qui peut donner des bugs subtiles, notamment si le résultat est un nombre négatif et qu'on en prend la racine carrée...

Sur un sujet similaire (mais seulement sur des expressions constantes et sans exemple d'échec en pratique), voir le Defect Report #300.

[2008-09-13 08:20:31 UTC]
MPFR 2.3.2 est sortie

(CariBlog – MPFR – Logiciels)

La bibliothèque MPFR 2.3.2 est sortie. Les changements par rapport à la version 2.3.1:

  • Corrections de bugs; voir la page de MPFR 2.3.1.

  • Amélioration du manuel de MPFR.

  • Le comportement de mpfr_check_range a changé: si la valeur est un infini inexact, le drapeau overflow est positionné (au cas où il aurait été perdu).

  • La fonction mpfr_init_gmp_rand (définie seulement lorsque MPFR est compilée sans l'option de configure --with-gmp-build) n'est plus du tout définie. Cette fonction était privée et non documentée, et n'était utilisée que dans la suite de tests de MPFR. Du code utilisateur qui l'appellerait est considéré comme incorrect et peut échouer en conséquence. Faire tourner l'ancienne suite de tests sur MPFR 2.3.2 peut aussi échouer.

[2008-07-01 23:51:02 UTC]
Nouvelles: révision de la norme IEEE 754, CFP Arith'19

(CariBlog)
  • Le comité de révision des normes IEEE (RevCom) a approuvé P754 (révision de la norme IEEE 754) à l'unanimité, qui a ensuite été approuvée par le IEEE-SA Standards Board le 12 juin 2008.

  • Appel à communications pour Arith'19 (19th IEEE Symposium on Computer Arithmetic). Date limite: 2008-10-15. Conférence: 8-10 juin 2009, Portland, Oregon, USA.

[2008-05-11 00:55:16 UTC]
Patch 1 pour MPFR 2.3.1

(CariBlog – MPFR – Logiciels)

Le patch 1 de MPFR 2.3.1 est disponible dans la section bugs de la page de MPFR 2.3.1. Il corrige un bug dans le test de configure concernant les threads (activé lorsque l'option --enable-thread-safe est donnée): ce test échoue systématiquement quand le répertoire objet (build) est différent du répertoire source. Notez que si vous avez déjà pu compiler MPFR 2.3.1, alors vous n'avez pas besoin de ce patch.

[2008-01-29 17:55:34 UTC]
MPFR 2.3.1 est sortie

(CariBlog – MPFR – Logiciels)

La bibliothèque MPFR 2.3.1 est sortie. Les changements par rapport à la version 2.3.0:

  • Changements dans le comportement de mpfr_strtofr et dans sa documentation concernant des cas particuliers où le code et la documentation ne correspondaient pas.

  • Corrections de bugs; voir la page de MPFR 2.3.0.

  • Test de configuration pour le support TLS.

  • Amélioration du manuel de MPFR.

[2008-01-23 23:23:24 UTC]
MPFR 2.3.1 Release Candidate 2

(CariBlog – MPFR – Logiciels)

[2007-12-29 18:38:54 UTC]
MPFR 2.3.1 Release Candidate

(CariBlog – MPFR – Logiciels)

[2007-12-09 22:17:16 UTC]
Status of Floating-Point Related Bugs I Reported

(CariBlog – Logiciels – Unix/Linux)

[2007-12-03 22:44:06 UTC]
Prochains événements liés à l'arithmétique des ordinateurs

(CariBlog)

Une courte note sur les prochains événements liés à l'arithmétique des ordinateurs.

[2007-10-23 10:45:14 UTC]
Patches 1 à 4 pour MPFR 2.3.0

(CariBlog – MPFR – Logiciels)

Les patches 1 à 4 sont disponibles dans la section bugs de la page de MPFR 2.3.0.

Le premier patch est nécessaire quand le répertoire de compilation est différent du répertoire source. Le deuxième patch corrige un échec d'assertion dans mpfr_acosh sur des arguments légèrement plus grands que 1 (ce bug ne peut se produire que si la précision de la destination est strictement inférieure à la précision de l'argument d'entrée), mais je ne suis pas sûr de l'analyse d'erreur; un meilleur patch sera publié plus tard. Le troisième patch corrige un bug important dans mpfr_atan2, qui se produit lorsque le drapeau underflow est positionné avant l'appel de la fonction. Le quatrième patch corrige divers bugs dans mpfr_subnormalize.

[2007-10-01 23:16:02 UTC]
Nouveau bug dans Microsoft Excel

(CariBlog)

Un bug dans Microsoft Excel 2007 a récemment été découvert, qui a pour effet de donner 100 000 au lieu de 65 535 et 100 001 au lieu de 65 536 après certains calculs. Il s'agit en fait uniquement d'un bug d'affichage, dû à une conversion incorrecte de la base 2 vers la base 10 (la valeur stockée en interne est correcte). Détails au sujet de ce bug sur le blog consacré à Microsoft Excel.

Rappelons que Microsoft Excel avait déjà eu dans le passé un bug similaire, mais lors de l'entrée d'un nombre (conversion incorrecte de la base 10 vers la base 2) au lieu de l'affichage: taper 1,40737488355328 dans Excel 3.0 à 7.0 donnait 0,64 (cf aussi support de Microsoft et via Google).

Des puissances de deux interviennent dans les deux cas: 65536 = 216 et 1,40737488355328 = 247 / 1014.

Après la découverte de ce nouveau bug, certains se sont empressés de dire qu'il faut passer à OpenOffice. Mais OpenOffice a lui aussi ses problèmes, comme le fait d'essayer de corriger les erreurs d'arrondi, qui peut donner des résultats surprenants et cacher des bugs côté utilisateur (cf discussion [CALC] Calculs imprécis sur la liste users-fr). Ceci dit, je ne sais pas si Excel fait le même genre de choses. Il y a des raisons de passer à OpenOffice, mais elles sont tout autres.

[2007-08-29 17:20:54 UTC]
MPFR 2.3.0 est sortie

(CariBlog – MPFR – Logiciels)

La bibliothèque MPFR 2.3.0 est sortie. Les principaux changements par rapport aux versions 2.2.*:

  • Le fichier mpfr.info est maintenant installé dans le sous-répertoire share (comme requis par le Filesystem Hierarchy Standard); voir la sortie de ./configure --help.

  • La bibliothèque partagée est maintenant activée par défaut. Si la construction de MPFR échoue sur votre plateforme, essayez l'option --disable-shared de configure pour désactiver la bibliothèque partagée.

  • Support thread-safe pour le compilateur Visual de Microsoft.

  • Nouvelles fonctions mpfr_j0, mpfr_j1, mpfr_jn, mpfr_y0, mpfr_y1, mpfr_yn, mpfr_lgamma, mpfr_remainder, mpfr_remquo, mpfr_fms, mpfr_signbit, mpfr_setsign, mpfr_copysign, mpfr_get_patches.

  • Amélioration des fonctions mpfr_sin, mpfr_cos et mpfr_sin_cos (réduction d'argument).

  • Manuel de MPFR plus détaillé.

  • Amélioration des tests (make check).

  • Correction de bugs.

[2007-08-13 18:04:30 UTC]
MPFR 2.3.0 Release Candidate 2

(CariBlog – MPFR – Logiciels)

[2007-07-11 09:09:33 UTC]
École CEA-EDF-INRIA Calcul numérique certifié

(CariBlog – MPFR)

Une école CEA-EDF-INRIA sur le thème du calcul numérique certifié aura lieu au Loria (Nancy) les 25 et 26 octobre 2007.

Le but de cette école est de sensibiliser aux problèmes posés par les calculs numériques via l'utilisation d'arithmétique flottante (erreur d'arrondi, précision limitée, débordement de capacité, etc.) et de proposer quelques outils innovants sur ce thème, avec en particulier une formation à la bibliothèque MPFR de calcul flottant en précision arbitraire.

Public visé: ingénieurs ou chercheurs, du domaine public ou privé. Attention! Le nombre de participants est limité.

[2007-05-30 23:27:17 UTC]
Publications récentes

(CariBlog)

Mes papiers les plus récents:

  • Worst cases of a periodic function for large arguments, écrit avec Guillaume Hanrot, Damien Stehlé et Paul Zimmermann. À paraître dans les actes d'Arith-18 en juin 2007.

    Résumé: Cet article étudie le problème de trouver les cas difficiles de l'arrondi d'une fonction périodique sur de grands opérandes flottants. Plus précisément, on s'intéresse à des opérandes de taille telle que l'approximation polynomiale locale n'a plus d'intérêt. Il s'agit d'un des derniers obstacles à l'objectif de garantir le calcul efficace de fonctions transcendantes avec arrondi correct, sur l'ensemble du domaine couvert par la norme IEEE-754. Nous présentons le premier algorithme non naïf pour ce problème, de complexité heuristique O(20.676 p) pour une précision de p bits. Nous montrons l'efficacité de l'algorithme sur la plus grande binade en double précision IEEE-754 pour la fonction sinus, et donnons certains mauvais cas correspondants. Nous espérons que la totalité des pires cas des fonctions trigonométriques sur l'ensemble de leur domaine pourront être trouvés dans les prochaines années, tâche qui semblait hors de portée jusqu'à présent.

    Lien sur HAL.

  • Some notes on the possible under/overflow of the most common elementary functions, écrit avec Jean-Michel Muller. Mai 2007.

    Résumé: The purpose of this short note is not to describe when underflow or overflow must be signalled (it is quite clear that the rules are the same as for the basic arithmetic operations). We just want to show that for some of the most common functions and floating-point formats, in many cases, we can know in advance that the results will always lie in the range of the numbers that are representable by normal floating-point numbers, so that in these cases there is no need to worry about underflow or overflow. Note that when it is not the case, an implementation is still possible using a run-time test.

    Lien sur HAL.

  • Computing integer powers in floating-point arithmetic, écrit avec Peter Kornerup et Jean-Michel Muller. Mai 2007.

    Résumé: We introduce two algorithms for accurately evaluating powers to a positive integer in floating-point arithmetic, assuming a fused multiply-add (fma) instruction is available. We show that our log-time algorithm always produce faithfully-rounded results, discuss the possibility of getting correctly rounded results, and show that results correctly rounded in double precision can be obtained if extended-precision is available with the possibility to round into double precision (with a single rounding).

    Lien sur HAL.

[2007-05-16 21:02:37 UTC]
Conférence ARITH18 (25-27 juin 2007) à Montpellier, France

(CariBlog)

ARITH18 - 18e conférence IEEE sur l'arithmétique des ordinateurs, 25-27 juin 2007, Montpellier, France. Date limite d'inscription à prix réduit: 25 mai 2007.

Bien sûr, j'y serai!

[2007-04-17 11:38:34 UTC]
Nouvelle catégorie: Lyon

(Blog – Lyon)

J'ai ajouté une nouvelle catégorie: Lyon, au sujet de la ville de Lyon (événements...). Quatre anciens billets ont été classés dans cette catégorie.

Note: il n'est pas encore possible d'effectuer du filtrage par catégorie au niveau du serveur, mais ça viendra peut-être un jour...

[2007-02-17 12:08:37 UTC]
Patches 2 à 5 pour MPFR 2.2.1

(CariBlog – MPFR – Logiciels)

Les patches 2 à 5 sont disponibles dans la section bugs de la page de MPFR 2.2.1. Les trois premiers corrigent divers problèmes liés aux exceptions, et le patch 5 met à jour le manuel de MPFR: le répertoire d'installation par défaut du fichier info a changé et ce patch le met à jour dans le manuel, et il ajoute une nouvelle section Exceptions et la description manquante de la fonction mpfr_dim (qui a été ajoutée dans MPFR 2.0.1).

[2007-02-12 12:54:20 UTC]
Changement oublié dans MPFR 2.2.1

(CariBlog – MPFR – Logiciels)

Les changements de MPFR 2.2.0 à 2.2.1 ne mentionnaient pas le changement suivant:

Le fichier mpfr.info est maintenant installé dans le sous-répertoire share (comme requis par le Filesystem Hierarchy Standard); voir la sortie de ./configure --help.

J'ai mis à jour la page web de MPFR, les fichiers NEWS et corrigé les fichiers mpfr.texi (à la fois dans le tronc et dans la branche 2.2). Les utilisateurs devraient s'assurer que leur variable d'environnement INFOPATH a une valeur correcte, e.g. /usr/local/share/info:/usr/local/info (dans cet ordre, au cas où de vieux fichiers resteraient dans /usr/local/info).

C'était un changement dans autoconf 2.59c (plus d'information dans le fichier NEWS d'autoconf).

[2007-02-03 23:43:30 UTC]
Identification des patches pour MPFR 2.2.1

(CariBlog – MPFR – Logiciels)

Comme cela a été demandé, les patches fournis pour MPFR modifient maintenant la chaîne de version en y ajoutant un suffixe (-p1, -p2, et ainsi de suite), de manière à ce qu'on puisse savoir quels patches ont été appliqués. Pour des raisons pratiques, tous les fichiers où la version apparaît ne sont pas patchés, mais la chaîne de version mise à jour est disponible avec la macro MPFR_VERSION_STRING (fichier d'en-tête mpfr.h) et la fonction mpfr_get_version (bibliothèque).

[2007-02-03 12:54:56 UTC]
Patch 1 pour MPFR 2.2.1

(CariBlog – MPFR – Logiciels)

Le patch 1 est disponible dans la section bugs de la page de MPFR 2.2.1. Il ajoute la macro mpfr_init_set_ld, qui est documentée dans le manuel de MPFR.

[2007-01-31 11:41:35 UTC]
École Jeunes Chercheurs Informatique Mathématique

(CariBlog)

L'École Jeunes Chercheurs Informatique Mathématique (ex École Jeunes Chercheurs en Algorithmique et Calcul Formel) se tiendra cette année à Nancy, au LORIA, du 19 au 23 mars 2007. Date limite d'inscription et de soumission d'un exposé: 2 mars 2007.

[2007-01-31 11:34:56 UTC]
Présentations des Rencontres Arithmétique de l'Informatique Mathématique

(CariBlog)

Les présentations des Rencontres Arithmétique de l'Informatique Mathématique (qui ont eu lieu à Montpellier les 22-25 janvier) sont maintenant disponibles.

[2007-01-17 05:47:17 UTC]
Comportement de INT_MIN % -1

(CariBlog)

C'est un bug de GCC apparemment connu depuis longtemps, mais il vient seulement d'être rapporté sur le BTS de GCC (bug 30484), suite à une discussion sur ce sujet dans la liste de diffusion de développement de GCC. Selon la norme C ISO, INT_MIN % -1 a la valeur 0, mais j'obtiens les résultats suivants sur mes diverses machines:

  • Exception virgule flottante sous Linux/x86, avec gcc 4.1.2 (prerelease).

  • 2147483647 sous Linux/PowerPC (G4), avec gcc 4.1.2 (prerelease).

  • -2147483648 sous Mac OS X PowerPC G5, avec gcc 4.0.1 d'Apple (Xcode 2.4.1).

Mais sur mon Zaurus (Linux/ARM), j'obtiens la valeur correcte 0. J'ai utilisé le programme suivant:

#include <limits.h>
#include <stdio.h>

int main (void)
{
  volatile int i = INT_MIN, j = -1;
  printf ("%d\n", i % j);
  return 0;
}

Quand on obtient un comportement incorrect en C, c'est pareil avec Perl, en utilisant le script suivant:

#!/usr/bin/env perl

use integer;

$x = -2147483648;
$y = -1;
print "$x % $y = ", $x % $y, "\n";

Si quelqu'un a un véritable code qui peut échouer à cause de ce bug, qu'il le signale! Pour MPFR, on avait été confronté à des bugs sur d'autres cas particuliers (e.g. sur 0 + LONG_MIN, LONG_MIN / 1 et LONG_MIN / (-2)).

[2006-12-04 22:08:48 UTC]
Analyse du bug Debian 153548 dans la glibc

(CariBlog)

Nouvelle page: mon analyse du bug Debian 153548 dans la glibc. J'y explique pourquoi seules quelques valeurs sont (complètement) fausses.

[2006-11-29 12:27:53 UTC]
MPFR 2.2.1 est sortie

(CariBlog – MPFR – Logiciels)

La bibliothèque MPFR 2.2.1 est sortie. Les principaux changements par rapport à la version 2.2.0:

  • Nombreuses corrections de bugs (voir la page de MPFR 2.2.0 pour la liste).

  • Mise à jour du mpfr-longlong.h à partir du fichier longlong.h de GMP 4.2.

  • Déplacement de certaines déclarations internes de mpfr.h à mpfr-impl.h.

  • Utilisation de -search_paths_first sur Darwin (Mac OS X) pour corriger le comportement à l'édition de liens.

  • Amélioration du make check: tests génériques beaucoup plus complets.

  • Amélioration du fichier INSTALL et du manuel de MPFR.

[2006-09-13 21:27:57 UTC]
Livre Arithmétique des ordinateurs (1989) de Jean-Michel Muller en libre accès

(CariBlog)

Après 17 ans, le livre Arithmétique des ordinateurs de Jean-Michel Muller est maintenant en libre accès, sous forme de pages scannées (Jean-Michel ayant utilisé à l'époque un logiciel de traitement de texte propriétaire au lieu de TeX).

[2006-08-28 21:29:06 UTC]
Patch 16 pour MPFR 2.2.0

(CariBlog – MPFR – Logiciels)

Le patch 16 est disponible sur la page de MPFR 2.2.0. Il corrige l'échec du test texp2.

[2006-08-23 22:52:21 UTC]
Patch 15 pour MPFR 2.2.0

(CariBlog – MPFR – Logiciels)

Le patch 15 est disponible sur la page de MPFR 2.2.0. Il corrige plusieurs bugs, principalement liés à des cas particuliers, exceptions et flags globaux.

[2006-07-25 23:57:45 UTC]
Patches 13 et 14 pour MPFR 2.2.0

(CariBlog – MPFR – Logiciels)

Les patches 13 et 14 sont disponibles sur la page de MPFR 2.2.0. Ils corrigent des problèmes concernant les chemins vers les fichiers d'en-têtes et de bibliothèques (include paths / library paths).

[2006-05-26 23:28:26 UTC]
Patches 11 et 12 pour MPFR 2.2.0

(CariBlog – MPFR – Logiciels)

Les patches 11 et 12 sont disponibles sur la page de MPFR 2.2.0. Ils corrigent divers problèmes avec la division et avec la fonction mpfr_get_f.

De plus, des répertoires peuvent être ajoutés dans un ordre incohérent à CPPFLAGS et LDFLAGS, ce qui peut produire une bibliothèque incorrecte dans certains cas. Ce problème est corrigé dans le dépôt Subversion. Mais vous pouvez toujours obtenir un avertissement (warning) disant que gmp.h et libgmp semblent avoir des versions différentes ou que vous ne pouvez pas exécuter un programme lié avec GMP. Le test n'est pas assez fiable en pratique et l'avertissement peut être confus; par conséquent, the code lié à ce test doit être changé ou retiré. Cependant la bibliothèque MPFR devrait toujours être construite correctement.

[2006-05-12 17:54:45 UTC]
Interface Perl à Maple

(CariBlog – Informatique – Logiciels – Unix/Linux)

J'ai écrit un petit module Perl qui fournit une interface Perl à Maple et masque la plupart des problèmes avec Maple que j'ai pu rencontrer. Il est disponible depuis ma page Maple, qui donne quelques explications.

[2006-05-02 19:09:26 UTC]
Annonce: compétition amicale More Digits

(CariBlog)

Une compétition amicale de logiciels à arithmétique réelle exacte aura lieu à Nancy pendant la conférence RNC7. Le but est de mesurer les performances de divers paquets de calcul numérique sur un ensemble de défis, avec l'accent mis surtout sur la précision des résultats. Tous les paquets capables de faire de la précision arbitraire sont les bienvenus pour la compétition...

[2006-04-20 10:04:34 UTC]
Site web de MPFR indisponible pendant quelques heures

(CariBlog – MPFR)

Le site web de MPFR sera indisponible à partir de 2006-04-20 16:00 UTC pendant quelques heures, à cause d'une mise à jour du réseau où le site web est hébergé (Loria). Le site web du projet sur InriaGforge et le dépôt Subversion ne sont pas concernés par cette coupure réseau.

[2006-04-17 22:51:02 UTC]
Nouvelle page sur Maple (et utilisation avec Perl)

(CariBlog – Informatique – Logiciels – Unix/Linux)

J'ai ajouté une nouvelle page sur Maple. Pour le moment, elle ne contient qu'une section sur comment utiliser Maple avec le langage Perl sous Unix (Linux ou Solaris), en utilisant soit des pipes, soit un pseudo-terminal (pty).

[2006-03-01 12:22:38 UTC]
Patch 9 pour MPFR 2.2.0

(CariBlog – MPFR – Logiciels)

Cela date d'une semaine, mais j'ai oublié de l'annoncer ici... Le patch 9 est disponible sur la page de MPFR 2.2.0. Il corrige un petit bug dans la fonction mpfr_random2. En pratique, ce bug n'a probablement aucun effet.

[2006-01-16 00:28:34 UTC]
Patch 8 pour MPFR 2.2.0

(CariBlog – MPFR – Logiciels)

Le patch 8 est disponible sur la page de MPFR 2.2.0. Il corrige des bugs dans les fonctions mpfr_get_f et mpfr_set_f de conversion avec la couche mpf de GMP: mpfr_get_f donne une mauvaise valeur quand le résultat a un exposant négatif et mpfr_set_f ne supporte pas les overflows. Si vous n'utilisez pas mpf, ce patch vous sera probablement inutile.

[2006-01-12 17:40:00 UTC]
Recrutements sur des postes scientifiques au Loria

(CariBlog)

[2005-12-24 16:35:19 UTC]
Patch 7 pour MPFR 2.2.0

(CariBlog – MPFR – Logiciels)

Le patch 7 est disponible sur la page de MPFR 2.2.0. Il corrige un bug d'arrondi dans la fonction mpfr_sin pour certains pires cas (comme ceux utilisés pour tester la bibliothèque standard C).

[2005-11-26 17:25:43 UTC]
Conférences RNC7 et Arith'18

(CariBlog)

Deux annonces de conférences:

  • 10–12 juillet 2006: RNC7 au Loria, Nancy, France.

  • 25–27 juin 2007: Arith'18 (18th IEEE Symposium on Computer Arithmetic) à Montpellier, France.

[2005-11-25 01:57:45 UTC]
Patch 6 pour MPFR 2.2.0

(CariBlog – MPFR – Logiciels)

Le patch 6 est disponible sur la page de MPFR 2.2.0. Il corrige un important problème d'efficacité dans mpfr_div lorsque le diviseur a une précision bien plus petite que celle du dividende; ce problème a été introduit lors de la réécriture du code de la division pour MPFR 2.2.0, si bien que les versions précédentes de MPFR ne sont pas affectées.

[2005-11-24 01:15:09 UTC]
Nouvelles liées à MPFR

(CariBlog – MPFR – Logiciels)
  • J'ai reçu la médaille du Loria, avec les autres membres de l'équipe MPFR, pour avoir gagné la compétition amicale Many Digits.

  • Nous venons de publier un rapport de recherche sur MPFR (lien sur HAL).

  • Le patch 5 pour MPFR 2.2.0 est disponible. Ce patch corrige divers problèmes (voir la page web pour les détails).

  • Une nouvelle version de MPFI (1.3.4-RC1) est disponible. C'est la première version à supporter MPFR 2.2.0. Merci Fabrice pour cette mise à jour!

[2005-10-26 00:04:01 UTC]
Bibliothèque MPFR déplacée sur InriaGforge

(CariBlog – MPFR – Logiciels)

L'ancien dépôt CVS de MPFR est fermé. La bibliothèque MPFR est maintenant hébergée sur InriaGforge. Dans le même temps, le dépôt a été converti à Subversion.

Voir les informations concernant InriaGforge, MPFR et Subversion sur le site web de MPFR.

[2005-10-11 16:40:50 UTC]
Bibliothèque DPE disponible sur InriaGforge

(CariBlog)

Page du projet DPE ([Mise à jour du 2022-10-08] Nouvelle URL sur GitLab Inria, puisque InriaForge a été fermée).

La bibliothèque DPE fournit des nombres à virgule flottante avec de grands exposants. Un nombre DPE est représenté par une paire (d, e), où d est un flottant dans [1/2, 1[, et e est l'exposant correspondant (type int), représentant d × 2e.

DPE est développée par Patrick Pélissier et Paul Zimmermann dans le projet SPACES (Loria / INRIA Lorraine).

[2005-10-05 23:11:53 UTC]
L'équipe MPFR a gagné la compétition amicale Many Digits

(CariBlog – MPFR – Logiciels)

L'équipe MPFR, dont je fais partie, a gagné la compétition amicale Many Digits, qui s'est déroulée les 3 et 4 octobre 2005 à l'Université Radboud de Nimègue (Pays-Bas).

Pour le problème 20, la formule donnant cos(π/17), que je connaissais car étant dans ma liste de 17, a été très utile. J'étais aussi intéressé par le problème 17, pour lequel j'ai pu passer de N = 4 à N = 5 en hackant la fonction zeta_ui écrite par Paul, pour calculer ζ(3) et ζ(5) en même temps et éviter ainsi de faire certains calculs identiques en double.

[2005-10-05 22:36:02 UTC]
Patch 3 pour MPFR 2.2.0

(CariBlog – MPFR – Logiciels)

Pour les utilisateurs de Darwin (Mac OS X) souhaitant construire une bibliothèque dynamique, un nouveau patch est disponible sur la page de MPFR 2.2.0. Au moment de la sortie de MPFR 2.2.0, il y avait un bug dans la libtool utilisée pour générer le script configure de MPFR, empêchant la création de bibliothèques partagées sur Darwin. Ce script peut être corrigé par ce patch (merci à Dave Morrison); alternativement, les utilisateurs peuvent exécuter autoreconf s'ils ont les outils nécessaires.

Les utilisateurs de l'arbre CVS ne sont pas affectés par ce problème puisqu'ils doivent exécuter ces outils sur leur propre machine.

[2005-09-29 17:49:16 UTC]
Patches 1 et 2 pour MPFR 2.2.0

(CariBlog – MPFR – Logiciels)

Deux patches sont disponibles sur la page de MPFR 2.2.0.

Le paquet Debian libmpfr-dev 2.2.0.dfsg.1-1 a été téléchargé; il contient ces deux patches, mais ne contient plus la documentation à cause de la politique de Debian concernant la licence de la documentation.

[2005-09-28 22:51:48 UTC]
La double précision de Kaffe sous Linux/x86 corrigée

(CariBlog – Java – Logiciels)

Sous Linux/x86, comme d'autres JVM, la Kaffe Virtual Machine calculait de manière interne en précision étendue, alors que ce n'est pas admis par les spécifications de Java. Ce problème a été corrigé dans le paquet Debian 1.1.6-2 (je ne sais rien concernant les autres distributions Linux).

Pour plus d'information sur ce bug et les problèmes liés à la précision étendue sous Linux/x86, veuillez voir ma page Linux et la précision étendue sur les processeurs x86. Je viens aussi d'y ajouter une référence sur mon papier The Euclidean division implemented with a floating-point division and a floor, qui donne un exemple particulièrement utile pour des programmes écrits en ECMAScript (souvent mentionné en tant que Javascript) ou utilisant XPath.

[2005-09-20 19:51:35 UTC]
MPFR 2.2.0 est sortie

(CariBlog – MPFR – Logiciels)

La bibliothèque MPFR 2.2.0 est sortie. Les principaux changements par rapport aux versions 2.1.*:

  • Correction de bugs.

  • Nouvelles fonctions: mpfr_set_overflow, mpfr_set_underflow, mpfr_set_inexflag, mpfr_set_erangeflag, mpfr_set_nanflag, mpfr_erfc, mpfr_atan2, mpfr_pow_z, mpfr_subnormalize, mpfr_const_catalan, mpfr_sec, mpfr_csc, mpfr_cot, mpfr_root, mpfr_eint, mpfr_get_f, mpfr_sech, mpfr_csch, mpfr_coth, mpfr_lngamma.

  • Nouvelle macro: MPFR_VERSION_STRING.

  • Les variables exportées de MPFR ont été retirées de mpfr.h (elles n'étaient pas documentées, donc les programmes respectant l'API fonctionnent toujours).

  • Les fonctions mathématiques sont plus rapides (en moyenne et au pire).

  • Meilleur support pour le type long double.

  • Support bibliothèque partagée.

  • Fonctionne avec les threads (si la bibliothèque a été construite avec l'option --enable-thread-safe de configure).

  • Possibilité de tracer MPFR (journaux).

  • Changement de la sémantique de mpfr_out_str et mpfr_get_str quand le paramètre indiquant le nombre de chiffres vaut 0.

  • Meilleur support des locales.

La compatibilité binaire avec les versions précédentes est préservée si vous n'utilisez pas de fonctionnalités non documentées.

[2005-09-11 12:50:45 UTC]
Présentations à Arith'17 disponibles

(CariBlog)

Les présentations à Arith'17 sont disponibles sur le site web de la conférence et sur ce miroir.

[2005-08-03 17:55:10 UTC]
MPFR 2.1.2 est sortie

(CariBlog – MPFR – Logiciels)

La bibliothèque MPFR 2.1.2 est sortie. Il s'agit d'une version de corrections de bugs, incluant les 12 patches de la version 2.1.1.

Vous pouvez la télécharger dans l'un des trois formats d'archive suivants:

Cette nouvelle version apparaîtra bientôt comme paquet Debian.

[2005-08-03 17:50:03 UTC]
Compétition amicale Many Digits

(CariBlog)

Une compétition amicale/session de benchmark pour examiner l'état de l'art dans les diverses implémentations d'arithmétique réelle exacte se tiendra à l'Université de Radboud, Nijmegen, Pays-Bas, le 4 octobre 2005.

Tous les logiciels interactifs capables de manipuler les fonctions élémentaires en précision arbitraire sont invités à participer. De plus, toutes les bibliothèques de calcul en précision arbitraire dans n'importe quel langage de programmation sont les bienvenus pourvu que le participant écrive un programme/interface approprié.

Une participation à distance est possible. Voir l'appel à participation (date limite d'enregistrement: 26 août).

[2005-07-17 23:53:32 UTC]
Pages d'index du blog réduites

(Blog)

Les pages d'index du blog sont maintenant réduites à 15 billets. L'ensemble des billets est maintenant disponible sur une nouvelle page. De nouvelles améliorations viendront plus tard...

[2005-07-11 22:07:51 UTC]
Patch 11 pour MPFR 2.1.1

(CariBlog – MPFR – Logiciels)

Un nouveau patch est disponible sur la page de MPFR 2.1.1. Il corrige un bug pouvant se produire avec certaines locales, e.g. avec la locale turque tr_TR.ISO8859-9, où les caractères ASCII I et i ne correspondent pas (la version minuscule de I est le i sans point).

J'ai découvert ce bug après avoir lu un fichier de développement de Mutt, où des problèmes similaires peuvent se produire si les développeurs ne font pas attention. Comme souvent, en faisant les tests, j'ai découvert un autre bug, dans zsh.

[2005-07-07 13:52:57 UTC]
Patches 8 à 10 pour MPFR 2.1.1

(CariBlog – MPFR – Logiciels)

Trois nouveaux patches (depuis le 2005-05-12) sont disponibles sur la page de MPFR 2.1.1.

[2005-07-07 07:56:03 UTC]
Nouveau sur mes pages web sur l'arithmétique des ordinateurs

(CariBlog)

Depuis ces derniers mois:

[2005-06-03 17:51:55 UTC]
Annonces diverses

(CariBlog)

Annonces diverses que j'ai reçues dans ma boîte-aux-lettres...

[2005-05-27 07:49:12 UTC]
Algorithme SLZ — résultats (pires cas pour 2x en précision étendue)

(CariBlog – Tests exhaustifs des fonctions élémentaires)

J'ai écrit une page sur les résultats de la recherche de pires cas (pour le dilemme du fabricant de tables) de la fonction 2x en précision étendue x86 (64 bits de mantisse), entre 1/2 et 1.

[2005-05-05 21:28:20 UTC]
Patch 7 pour MPFR 2.1.1

(CariBlog – MPFR – Logiciels)

Un nouveau patch est disponible sur la page de MPFR 2.1.1. Il corrige un bug dans la fonction mpfr_div_ui.

[2005-04-22 15:15:17 UTC]
Patches 3 à 6 pour MPFR 2.1.1

(CariBlog – MPFR – Logiciels)

Quatre nouveaux patches (depuis le 2005-03-09) sont disponibles sur la page de MPFR 2.1.1.

[2005-04-15 17:17:39 UTC]
Site web de MPFR indisponible pendant 4–5 jours

(CariBlog – MPFR – Logiciels)

À cause d'une coupure de courant au niveau du Loria, le site web de MPFR est indisponible jusqu'au 20 avril, à environ 07:30 UTC (09:30 heure française). Les courriers électroniques à destination du Loria ne seront pas perdus ni rejetés, mais ne pourront pas être lus avant la remise en route des serveurs.

[2005-03-17 15:45:22 UTC]
La division euclidienne implémentée avec une division flottante et une partie entière

(CariBlog)

Les transparents de ma présentation aux journées Arinews des 7-8 mars 2005 sont disponibles sur ma page recherche.

Un rapport de recherche donnant plus de détails est en cours d'écriture. Le résumé:

Nous étudions des conditions sous lesquelles la division euclidienne peut être implémentée à l'aide d'une division flottante suivie d'une fonction floor. Nous montrons qu'avec des hypothèses raisonnables, le mode d'arrondi vers le bas peut toujours être utilisé, et que le mode d'arrondi au plus près peut être utilisé dans la plupart des cas usuels. Ces résultats peuvent être utiles pour n'importe quel langage, mais surtout pour les langages, comme ECMAScript, qui n'ont pas de division entière et qui arrondissent toujours au plus près.

[2005-03-09 17:32:44 UTC]
Patches 1 et 2 pour MPFR 2.1.1

(CariBlog – MPFR – Logiciels)

Deux patches sont disponibles sur la page de MPFR 2.1.1. Ils ont été appliqués dans le paquet Debian libmpfr-dev 2.1.1-2.

[2005-03-03 14:28:39 UTC]
La double précision de JamVM sous Linux/x86 corrigée

(CariBlog – Java – Logiciels)

Sous Linux/x86, comme d'autres JVM, JamVM calculait de manière interne en précision étendue, alors que ce n'est pas admis par les spécifications de Java. Je viens d'apprendre que ce problème a été corrigé dans la version 1.2.1 (2004-12-02). À ma connaissance, il s'agit de la deuxième JVM libre à être corrigée et à calculer maintenant correctement.

Pour plus d'information sur ce bug et les problèmes liés à la précision étendue sous Linux/x86, veuillez voir ma page Linux et la précision étendue sur les processeurs x86.

[2005-02-23 17:01:47 UTC]
MPFR 2.1.1 est sortie

(CariBlog – MPFR – Logiciels)

La bibliothèque MPFR 2.1.1 est sortie. Il s'agit d'une version de corrections de bugs, incluant les 17 patches de la version 2.1.0.

Vous pouvez la télécharger dans l'un des trois formats d'archive suivants:

Cette nouvelle version apparaîtra bientôt comme paquet Debian.

[2005-02-21 17:56:27 UTC]
Patch 17 pour MPFR 2.1.0

(CariBlog – MPFR – Logiciels)

J'ai trouvé un nouveau bug dans MPFR 2.1.0: la fonction mpfr_ui_sub appliquée à l'entier 0 et au nombre flottant +0 donne +0 au lieu de −0; ce bug a été introduit dans MPFR 2.1.0, il n'est donc pas présent dans les versions précécentes. Le patch est disponible sur la page de MPFR 2.1.0.

[2005-02-17 18:08:09 UTC]
Patches 14 à 16 pour MPFR 2.1.0

(CariBlog – MPFR – Logiciels)

Trois nouveaux patches sont disponibles sur la page de MPFR 2.1.0.

[2005-02-07 17:50:55 UTC]
Annonces diverses

(CariBlog)

Annonces diverses que j'ai reçues dans ma boîte-aux-lettres...

[2005-02-02 17:49:24 UTC]
Patch 13 pour MPFR 2.1.0

(CariBlog – MPFR – Logiciels)

Un 13e patch est disponible sur la page de MPFR 2.1.0.

J'ai détecté le bug grâce aux pires cas de la fonction sinus en double précision, dont certains faisaient échouer le nouveau code se trouvant sur le tronc CVS (future version 2.2.0).

[2005-02-02 00:24:00 UTC]
Patches pour MPFR 2.1.0

(CariBlog – MPFR – Logiciels)

12 patches sont disponibles sur la page de MPFR 2.1.0.

[2005-02-01 23:47:05 UTC]
Test de fonctions mathématiques de la bibliothèque standard C

(CariBlog – vinc17)

Plusieurs plateformes ajoutées sur la page des tests de fonctions mathématiques de la bibliothèque standard C. J'ai aussi ajouté les temps de test pour chaque plateforme (sauf quelques anciennes, qui ne sont plus disponibles).

Je me suis aperçu que l'option -ffloat-store était nécessaire pour gcc 3.4 sous Linux/x86. En effet, les résultats de certaines fonctions de la bibliothèque mathématique sont et restent en précision étendue après affectation. Ce n'est pas conforme à la norme ISO/IEC 9899:1999 (langage C); il s'agit d'un bug de gcc (toutes versions). Cette option est maintenant systématiquement utilisée avec gcc.

[2005-01-15 12:01:54 UTC]
Formats de fichiers de mes publications et transparents

(CariBlog – vinc17)

J'ai ajouté une nouvelle page sur les formats des versions électroniques de mes publications et transparents. Elle parle de négociation de contenu par HTTP et de problèmes avec le visualiseur postscript/PDF gv, en particulier.

[2005-01-06 23:11:35 UTC]
Le bug de rint dans la glibc sur PowerPC corrigé

(CariBlog)

Le bug 602 de la glibc powerpc rint() function is buggy in the rounding toward -inf and +inf modes (fonction rint() sur PowerPC buggée dans les modes d'arrondi vers -inf et +inf) vient d'être complètement corrigé dans le CVS. Merci!

[2004-12-13 09:02:54 UTC]
Programmes de test de l'arithmétique flottante

(CariBlog – vinc17)

Ajout de la page Programmes de test de l'arithmétique flottante. J'ai aussi mis à jour tst-ieee754.c car le test des affectations en précision étendue ne montrait plus de bug dans gcc 3.4, probablement à cause d'une nouvelle optimisation liée aux fonctions statiques; le test a été amélioré et le bug est toujours là dans gcc.

[2004-12-05 12:45:33 UTC]
Test de fonctions mathématiques de la bibliothèque standard C

(CariBlog – vinc17)

Page des tests de fonctions mathématiques de la bibliothèque standard C: j'ai ajouté la machine dixsept.loria.fr (Pentium 4 modèle 3, i.e. Prescott), qui donne les mêmes résultats que les autres processeurs Pentium 4, comme attendu.

[2004-11-06 03:29:33 UTC]
MPFR 2.1.0 est sortie

(CariBlog – MPFR – Logiciels)

La bibliothèque MPFR 2.1.0 est sortie.

Téléchargez-la (MD5: 9174f5e0cd43f2253b5779743368c8f2). MPFR 2.1.0 est aussi disponible en paquet Debian officiel (distribution unstable seulement).

[2004-10-17 21:41:15 UTC]
Test de fonctions mathématiques de la bibliothèque standard C

(CariBlog – vinc17)

J'ai ajouté les résultats de 5 machines supplémentaires à testdrive.hp.com sur la page des tests de fonctions mathématiques de la bibliothèque standard C:

  • spe191 (PA-RISC 8800 sous HP-UX).

  • spe145 (Alpha EV56 sous OSF1 4.0).

  • spe206 (Alpha EV67 sous OSF1 5.1).

  • spe176 (Intel Itanium 2 sous HP-UX).

  • spe189 (AMD Opteron 248 sous GNU/Linux). D'après les résultats, cette machine utilise les fonctions mathématiques (en partie avec arrondi exact) de la bibliothèque glibc.

[2004-09-17 17:36:33 UTC]
Ouverture de mon blog!

(Blog)

Voici mon nouveau blog général. Il n'y a pas de sujet particulier, mais pour ceux qui ne sont intéressés que par certains sujets, j'ajouterai des mécanismes de filtrages côté serveur suivant certaines catégories. Vous pouvez déjà faire du filtrage côté client (à l'aide de votre lecteur de flux RSS, ou à l'aide des CSS pour la version web, par exemple).

Mon blog déjà existant sur l'arithmétique des ordinateurs et mes pages recherche est intégré à ce blog général, mais les anciennes URL restent valides et constituent actuellement le seul filtrage au niveau serveur.

Certaines entrées ne seront qu'en français et se retrouveront donc non traduites dans la version anglaise de mon blog; un filtrage sur la langue au niveau serveur est aussi prévu.

[2004-09-13 12:16:57 UTC]
MPFR sous Microsoft Windows

(CariBlog – MPFR – Logiciels)

Le fichier INSTALL de l'arbre CVS de MPFR contient de nouvelles notes d'installation pour utiliser MPFR sous Microsoft Windows. En particulier, nous recommandons d'utiliser MinGW au lieu de Cygwin.

[2004-09-13 10:25:22 UTC]
RNC6: premier appel à participation

(CariBlog)

Le premier appel à participation à la 6e conférence Real Numbers and Computers (RNC6), du 15 au 17 novembre 2004, Schloß Dagstuhl, Allemagne, se trouve sur le site web de la conférence.

[2004-09-08 17:04:34 UTC]
Nouvelle page: Multiplication par des constantes entières

(CariBlog – vinc17)

Contenu: introduction, publications, liens vers quelques implémentations des divers algorithmes. La page web...

[2004-09-04 10:18:48 UTC]
Page publications: mise à jour des liens...

(CariBlog – vinc17)

Plusieurs modifications sur ma page publications:

  • Mise en place de liens alternatifs.

  • Négociation HTTP sur le format (postscript ou PDF) à utiliser pour les liens principaux.

  • Traductions dans la page en français.

[2004-08-24 13:00:10 UTC]
Les tests exhaustifs des fonctions élémentaires et le bug du pipe d'OpenMosix

(CariBlog – Tests exhaustifs des fonctions élémentaires)

À cause d'un bug concernant les pipes sous OpenMosix, mes programmes de recherche de pires cas pour l'arrondi exact (cf introduction au dilemme du fabricant de tables) donnaient parfois des résultats incorrects, non détectables a priori, sur le cluster ble.ens-lyon.fr; j'avais mentionné ce problème dans les transparents de ma présentation lors des journées au vert SPACES 2004. C'était probablement dû à une perte de données lors des communications par pipe entre mes programmes et Maple. Le plus souvent, les pipes (pas seulement dans mes programmes) se bloquaient simplement, sans provoquer de résultats incorrects. Après installation d'une nouvelle version du noyau par les administrateurs système, de nouveaux tests effectués hier ont confirmé que ces problèmes ont complètement disparu.

Déjà il y a plusieurs années, une mémoire défectueuse d'un serveur de fichiers avait provoqué des erreurs dans mes programmes, heureusement détectées. Ce genre d'erreurs se produisant aléatoirement, il faudra vraiment faire tous les tests au moins deux fois, sur des machines différentes.

[2004-08-23 08:31:38 UTC]
La double précision de SableVM sous Linux/x86 corrigée

(CariBlog – Java – Logiciels)

Sous Linux/x86, comme d'autres JVM, SableVM calculait de manière interne en précision étendue, alors que ce n'est pas admis par les spécifications de Java. Grzegorz B. Prokopski a corrigé ce problème dans le paquet Debian 1.1.6-4 en plaçant le FPU en arrondi double précision (au bon endroit dans le code C). Merci à lui.

À ma connaissance, SableVM est la première implémentation JVM libre à être corrigée et à calculer maintenant correctement.

Pour plus d'information sur ce bug et les problèmes liés à la précision étendue sous Linux/x86, veuillez voir ma page Linux et la précision étendue sur les processeurs x86.

[2004-08-19 00:09:55 UTC]
Les derniers changements sur mes pages recherche

(CariBlog – vinc17)

[2004-08-17 21:49:04 UTC]
Blog sur l'arithmétique des ordinateurs et les pages recherche de mon site web

(CariBlog – Blog)

Voici mon blog sur l'arithmétique des ordinateurs ainsi que l'évolution de mes pages recherche de mon site web. Je ne sais pas encore comment il va évoluer... D'un point de vu technique, il est pour le moment maintenu à l'aide de scripts et de feuilles de styles XSLT. Concernant le contenu, il est possible que je fasse dans le futur un blog plus général, dans lequel il sera intégré (avec filtrage par mots clés). Il devrait être à la fois en français et en anglais.



webmaster@vinc17.org