Namespaces
Variants
Actions

std::remainder, std::remainderf, std::remainderl

From cppreference.com
< cpp‎ | numeric‎ | math
 
 
 
 
Defined in header <cmath>
(1)
float       remainder ( float x, float y );

double      remainder ( double x, double y );

long double remainder ( long double x, long double y );
(until C++23)
constexpr /*floating-point-type*/

            remainder ( /*floating-point-type*/ x,

                        /*floating-point-type*/ y );
(since C++23)
float       remainderf( float x, float y );
(2) (since C++11)
(constexpr since C++23)
long double remainderl( long double x, long double y );
(3) (since C++11)
(constexpr since C++23)
SIMD overload (since C++26)
Defined in header <simd>
template< class V0, class V1 >

constexpr /*math-common-simd-t*/<V0, V1>

            remainder ( const V0& v_x, const V1& v_y );
(S) (since C++26)
Additional overloads (since C++11)
Defined in header <cmath>
template< class Integer >
double      remainder ( Integer x, Integer y );
(A) (constexpr since C++23)
1-3) Computes the IEEE remainder of the floating point division operation x / y. The library provides overloads of std::remainder for all cv-unqualified floating-point types as the type of the parameters.(since C++23)
S) The SIMD overload performs an element-wise std::remainder on v_xand v_y.
(See math-common-simd-t for its definition.)
(since C++26)
A) Additional overloads are provided for all integer types, which are treated as double.
(since C++11)

The IEEE floating-point remainder of the division operation x / y calculated by this function is exactly the value x - quo * y, where the value quo is the integral value nearest the exact value x / y. When |quo - x / y| = ½, the value quo is chosen to be even.

In contrast to std::fmod, the returned value is not guaranteed to have the same sign as x.

If the returned value is zero, it will have the same sign as x.

Contents

[edit] Parameters

x, y - floating-point or integer values

[edit] Return value

If successful, returns the IEEE floating-point remainder of the division x / y as defined above.

If a domain error occurs, an implementation-defined value is returned (NaN where supported).

If a range error occurs due to underflow, the correct result is returned.

If y is zero, but the domain error does not occur, zero is returned.

[edit] Error handling

Errors are reported as specified in math_errhandling.

Domain error may occur if y is zero.

If the implementation supports IEEE floating-point arithmetic (IEC 60559),

  • The current rounding mode has no effect.
  • FE_INEXACT is never raised, the result is always exact.
  • If x is ±∞ and y is not NaN, NaN is returned and FE_INVALID is raised.
  • If y is ±0 and x is not NaN, NaN is returned and FE_INVALID is raised.
  • If either argument is NaN, NaN is returned.

[