modulo(a,p)
computes the a
modulo p
.
Fortran 95 and later
result = modulo(a, p)
a
- Shall be a scalar of type integer
or real
.p
- Shall be a scalar of the same type and kind as a
. It shall not be zero.The type and kind of the result are those of the arguments.
a
and p
are of type integer
: modulo(a,p)
has the value of a - floor (real(a) / real(p)) * p
.a
and p
are of type real
: modulo(a,p)
has the value of a - floor (a / p) * p
.The returned value has the same sign as p
and a magnitude less than the magnitude of p
.
program test_modulo
print *, modulo(17,3) ! yields 2
print *, modulo(17.5,5.5) ! yields 1.0
print *, modulo(-17,3) ! yields 1
print *, modulo(-17.5,5.5) ! yields 4.5
print *, modulo(17,-3) ! yields -1
print *, modulo(17.5,-5.5) ! yields -4.5
end program