fmod(3)

NOM
fmod, fmodf, fmodl - Fonction modulo réel

BIBLIOTHÈQUE
Bibliothèque de math (libm, -lm)

SYNOPSIS
#include <math.h>

double fmod(double x, double y);
float fmodf(float x, float y);
long double fmodl(long double x, long double y);

    Exigences de macros de test de fonctionnalités pour la glibc (consulter feature_test_macros(7)) :

fmodf(), fmodl() :
    _ISOC99_SOURCE || _POSIX_C_SOURCE >= 200112L
        || /* Depuis la glibc 2.19 : */ _DEFAULT_SOURCE
        || /* glibc <= 2.19 : */ _BSD_SOURCE || _SVID_SOURCE

DESCRIPTION
Ces fonctions calculent le reste, en virgule flottante, de la division de x par y. La valeur renvoyée est x - n * y, où n est le quotient x / y, arrondi à l'entier inférieur en valeur absolue.

Pour obtenir le modulo, plus précisément, le plus petit résidué positif, vous devez ajuster le résultat de fmod() de cette manière :

z = fmod(x, y);
if (z < 0)
	z += fabs(y);

Une autre manière pour exprimer cela estfmod(fmod(x, y) + y, y), mais le second fmod() coûte habituellement beaucoup plus que la première branche.

VALEUR RENVOYÉE
On success, these functions return the value x - n*y, for some integer n, such that the returned value has the same sign as x and a magnitude less than the magnitude of y.

Si x n’est pas un nombre, un NaN est renvoyé.

Si x est une valeur infinie, une erreur de domaine est produite et un NaN est renvoyé.

Si y vaut zéro, une erreur de domaine est produite et un NaN est renvoyé.

Si x vaut +0 (resp. -0), et y n'est pas nul, +0 (resp. -0) est renvoyé.

ERREURS
Voir math_error(7) pour savoir comment déterminer si une erreur s'est produite lors de l'appel d'une de ces fonctions.

Les erreurs suivantes peuvent se produire :

Domain error: x is an infinity
    errno prend la valeur EDOM (mais consultez la section BOGUES). Une exception indiquant une virgule flottante incorrecte (FE_INVALID) est levée.

Domain error: y is zero
    errno prend la valeur EDOM. Une exception de virgule flottante non valable (FE_INVALID) est levée.

ATTRIBUTS
Pour une explication des termes utilisés dans cette section, consulter attributes(7).
Interface | Attribut | Valeur
fmod(), fmodf(), fmodl() | Sécurité des threads | MT-Safe

NORMES
C11, POSIX.1-2008.

HISTORIQUE
C99, POSIX.1-2001.

La variante renvoyant double est également conforme à SVr4, 4.3BSD, C89.

BOGUES
Avant la glibc 2.10, l'implémentation de la glibc ne définissait pas errno à EDOM lorsqu'une erreur de domaine survenait pour un x infini.

EXEMPLES
L'appel fmod(372, 360) renvoie 12.

L'appel fmod(-372, 360) renvoie -12.

L'appel fmod(-372, -360) renvoie aussi -12.

VOIR AUSSI
remainder(3)

TRADUCTION
La traduction française de cette page de manuel a été créée par Christophe Blaess <https://www.blaess.fr/christophe/>, Stéphan Rafin <stephan.rafin@laposte.net>, Thierry Vignaud <tvignaud@mandriva.com>, François Micaux, Alain Portal <aportal@univ-montp2.fr>, Jean-Philippe Guérard <fevrier@tigreraye.org>, Jean-Luc Coulon (f5ibh) <jean-luc.coulon@wanadoo.fr>, Julien Cristau <jcristau@debian.org>, Thomas Huriaux <thomas.huriaux@gmail.com>, Nicolas François <nicolas.francois@centraliens.net>, Florentin Duneau <fduneau@gmail.com>, Simon Paillard <simon.paillard@resel.enst-bretagne.fr>, Denis Barbier <barbier@debian.org>, David Prévot <david@tilapin.org>, Cédric Boutillier <cedric.boutillier@gmail.com> et Jean-Pierre Giraud <jean-pierregiraud@neuf.fr>

Cette traduction est une documentation libre ; veuillez vous reporter à la GNU General Public License version 3 (https://www.gnu.org/licenses/gpl-3.0.html) concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.

Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à debian-l10n-french@lists.debian.org.