Remainder is always positive, for example,
remainder(-1, 7) == 6
not -1
And quotient should be rounded towards minus infinity, not towards zero, for example,
quotient(-1, 7) == -1
not 0.
Are there such functions somewhere in stdlib?
Remainder is always positive, for example,
remainder(-1, 7) == 6
not -1
And quotient should be rounded towards minus infinity, not towards zero, for example,
quotient(-1, 7) == -1
not 0.
Are there such functions somewhere in stdlib?
Are there any normal mathematical quotient and remainder for
intsomewhere in C++?
The % is the remainder operator, but we can use it to nearly get us there.
To achieve the Euclidean modulo
7 modulo 3 --> 1
7 modulo -3 --> 1
-7 modulo 3 --> 2
-7 modulo -3 --> 2
Use
int modulo_Euclidean(int a, int b) {
int m = a % b;
if (m < 0) {
// m += (b < 0) ? -b : b; // avoid this form: it is UB when b == INT_MIN
m = (b < 0) ? m - b : m + b;
}
return m;
}
See also Fastest way to get a positive modulo in C/C++ which covers various pitfalls.
you can do (num1 % num2 + num2) % num2 to get the remainder when you divide num1 by num2 and floor(1.0 * num1 / num2) to get a rounded down quotient. (floor is found in the cmath library)