Updated: 2025/Nov/16

Please read Privacy Policy. It's for your privacy.


REMAINDER(3)               Library Functions Manual               REMAINDER(3)

NAME
     remainder, remainderf, remainderl, remquo, remquof, remquol - remainder
     functions

LIBRARY
     Math Library (libm, -lm)

SYNOPSIS
     #include <math.h>

     double
     remainder(double x, double y);

     float
     remainderf(float x, float y);

     long double
     remainderl(long double x, long double y);

     double
     remquo(double x, double y, int *quo);

     float
     remquof(float x, float y, int *quo);

     long double
     remquol(long double x, long double y, int *quo);

DESCRIPTION
     Provided that y != 0 , the remainder() remainderf() and remainderl()
     functions calculate the floating-point remainder r of

           r = x - ny,

     where n is the integral value nearest to the exact value of x / y.  If

           | n - x / y | = 1/2 ,

     the value n is chosen to be even.  Consequently, the remainder is
     computed exactly and | r | <= | y | / 2 .

     Also the remquo() remquof() and remquol() functions calculate the
     remainder as described above.  But these additionally use quo to store a
     value whose sign is the sign of x / y and whose magnitude is congruent
     modulo 2^k to the magnitude of the integral quotient of x / y, where k is
     an implementation-defined integer greater than or equal to 3.

     The rationale of the remquo() family of functions relates to situations
     where only few bits of the quotient are required.  The exact
     representation of the quotient may not be meaningful when x is large in
     magnitude compared to y.

RETURN VALUES
     The functions return the remainder independent of the rounding mode.  If
     y is zero , NaN is returned and a domain error occurs.  A domain error
     occurs and a NaN is returned also when x is infinite but y is not a NaN.
     If either x or y is NaN, a NaN is always returned.

SEE ALSO
     div(3), fast_remainder32(3), fmod(3), math(3)

STANDARDS
     The described functions conform to ISO/IEC 9899:1999 ("ISO C99").

NetBSD 11.99                   January 24, 2024                   NetBSD 11.99