# remquo

## PROLOG



           This manual page is part of the POSIX Programmer's Manual.  The
           Linux implementation of this interface may differ (consult the
           corresponding Linux manual page for details of Linux behavior), or
           the interface may not be implemented on Linux.
    


## NAME



           remquo, remquof, remquol — remainder functions
    


## SYNOPSIS



           #include <math.h>
    
           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



           The functionality described on this reference page is aligned with
           the ISO C standard. Any conflict between the requirements
           described here and the ISO C standard is unintentional. This
           volume of POSIX.1‐2017 defers to the ISO C standard.
    
           The _remquo_(), _remquof_(), and _remquol_() functions shall compute the
           same remainder as the _remainder_(), _remainderf_(), and _remainderl_()
           functions, respectively. In the object pointed to by _quo_ , they
           store a value whose sign is the sign of _x_ /_y_ and whose magnitude is
           congruent modulo 2 _n_ to the magnitude of the integral quotient of
           _x_ /_y_ , where _n_ is an implementation-defined integer greater than or
           equal to 3. If _y_ is zero, the value stored in the object pointed
           to by _quo_ is unspecified.
    
           An application wishing to check for error situations should set
           _errno_ to zero and call _feclearexcept_(FE_ALL_EXCEPT) before calling
           these functions. On return, if _errno_ is non-zero or
           _fetestexcept_(FE_INVALID | FE_DIVBYZERO | FE_OVERFLOW |
           FE_UNDERFLOW) is non-zero, an error has occurred.
    


## RETURN VALUE



           These functions shall return _x_ REM _y_.
    
           On systems that do not support the IEC 60559 Floating-Point
           option, if _y_ is zero, it is implementation-defined whether a
           domain error occurs or zero is returned.
    
           If _x_ or _y_ is NaN, a NaN shall be returned.
    
           If _x_ is ±Inf or _y_ is zero and the other argument is non-NaN, a
           domain error shall occur, and a NaN shall be returned.
    


## ERRORS



           These functions shall fail if:
    
           Domain Error
                       The _x_ argument is ±Inf, or the _y_ argument is ±0 and
                       the other argument is non-NaN.
    
                       If the integer expression (_math_errhandling_ &
                       MATH_ERRNO) is non-zero, then _errno_ shall be set to
                       **[EDOM]**.  If the integer expression (_math_errhandling_ &
                       MATH_ERREXCEPT) is non-zero, then the invalid
                       floating-point exception shall be raised.
    
           These functions may fail if:
    
           Domain Error
                       The _y_ argument is zero.
    
                       If the integer expression (_math_errhandling_ &
                       MATH_ERRNO) is non-zero, then _errno_ shall be set to
                       **[EDOM]**.  If the integer expression (_math_errhandling_ &
                       MATH_ERREXCEPT) is non-zero, then the invalid
                       floating-point exception shall be raised.
    
           _The following sections are informative._
    


## EXAMPLES



           None.
    


## APPLICATION USAGE



           On error, the expressions (_math_errhandling_ & MATH_ERRNO) and
           (_math_errhandling_ & MATH_ERREXCEPT) are independent of each other,
           but at least one of them must be non-zero.
    


## RATIONALE



           These functions are intended for implementing argument reductions
           which can exploit a few low-order bits of the quotient. Note that
           _x_ may be so large in magnitude relative to _y_ that an exact
           representation of the quotient is not practical.
    


## FUTURE DIRECTIONS



           None.
    


* * *