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.
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).
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).
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 http://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.
The second GNU MPFR 3.1.0 release candidate is available.
GNU MPFR 3.1.0 Release Candidate is available.
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).
mpfr_min_prec de GNU MPFRNote à 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.
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.
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.
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).
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.
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).
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.
GNU MPFR 3.0.1 Release Candidate is available (bug fixes).