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.
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).
La bibliothèque GNU MPFR 3.0.0 (boudin aux pommes) est sortie. Les changements par rapport aux versions 2.4.*:
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 grands opérandes 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 grands opérandes 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.
GNU MPFR 3.0.0 Release Candidate 2 is available.
pow(-0.0,0.5) vs sqrt(-0.0) et GCCD'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.
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.
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.
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.
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.
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.
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.
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).
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.
The second release candidate of GNU MPFR 2.4.2 is available.
Moreover I've just fixed a bug in mpfr_sin_cos and updated the bugs section of the GNU MPFR 2.4.1 page.