Scilab Website | Contribute with GitLab | Mailing list archives | ATOMS toolboxes
Scilab Online Help
2023.0.0 - English


remainder modulo m with the sign of the left operand, or of a polynomial division


positive euclidian remainder modulo m


i = modulo(n,m)

i = pmodulo(n,m)


m, n

Scalar, vector, matrix or hypermatrix of encoded integers, reals, or polynomials with real coefficients. m and n must have the same type. If they are of integer type, they may be of distinct encoding length (for instance int8 and int16). If none of them is scalar, they must have the same sizes.


Scalar, vector, matrix or hypermatrix of n's type (and inttype). i takes the sizes of the bigger m or n.

For polynomials, when all remainders in the array i are constant (degree==0), i is of type 1 (numbers) instead of 2 (constant polynomials).


modulo() computes i = n (modulo m) i.e. remainder of n divided by m.

For polynomials, pdiv() is called.

For numbers,

  • modulo() computes i = n - m .* int (n ./ m). The result is negative (or null) when n is negative, and is positive otherwise.

  • pmodulo() computes i = n - |m| .* floor (n ./ |m|). The result is always positive or null.

If m contains at least one 0 value, modulo(x,m) and pmodulo(x,m) will perform a division by zero. If m is of real type, this exception will be processed according to the ieee() mode. For encoded integers, it will always yield an error.


n = [1,2,10,15];
m = [2,2,3,5];

modulo(-3, 9)
modulo(10, -4)

pmodulo(-3, 9)
pmodulo(10, -6)
pmodulo(-10, -6)

// Encoded integers
modulo( int8(-13), int16(-7))
pmodulo(int8(-13), int16(-7))
modulo( int8(-13), int16([-7 5]))
pmodulo(int8(-13), int16([-7 5]))
modulo( int8([-13 8]), int16(-7))
pmodulo(int8([-13 8]), int16(-7))
modulo( int8([-13 8]), int16([-7 5]))
pmodulo(int8([-13 8]), int16([-7 5]))

// Hypermatrices
m = grand(2,2,2,"uin",-100,100)
n = grand(2,2,2,"uin",-10 ,10);
n(n==0) = 1
modulo(m, 5)
modulo(51, n)
modulo(m, n)

// Polynomials
modulo( %z^2+1, %z)
pmodulo(%z^2+1, %z)

See also

  • unwrap — unwrap a Y(x) profile or a Z(x,y) surface. Unfold a Y(x) profile
  • ieee — sets or gets the floating point exception mode


5.5.0 Extension to encoded integers and to hypermatrices of encoded integers or reals.
6.0.2 Extension to hypermatrices of polynomials.
Report an issue
<< isequal Elementary Functions ndims >>

Copyright (c) 2022-2023 (Dassault Systèmes)
Copyright (c) 2017-2022 (ESI Group)
Copyright (c) 2011-2017 (Scilab Enterprises)
Copyright (c) 1989-2012 (INRIA)
Copyright (c) 1989-2007 (ENPC)
with contributors
Last updated:
Mon Mar 27 11:52:43 GMT 2023