Result is Number1 mod Number2
which should be preferred for portability.
The modulus operation computes the remainder corresponding to the flooring division div. The following relation always holds:
X =:= (X mod Y) + (X div Y) * Y.
The result Result is either zero, or has the same sign as Number2.
In coroutining mode, if Number1 or Number2 are uninstantiated, the call to mod/3 is delayed until these variables are instantiated.
CAUTION: The behaviour of mod was changed for standard compliance! In ECLiPSe versions up to 5.8, mod computed the remainder corresponding to the truncating division //, and thus gave different results for arguments with opposite signs. Moreover, the operator precedence was changed from op(300,xfx,mod) to op(400,yfx,mod), which means that a*b mod c is now parsed as (a*b)mod c rather than a*(b mod c).
Success:
X is 10 mod 3. % gives X = 1
X is -10 mod 3. % gives X = 2
X is 10 mod -3. % gives X = -2
X is -10 mod -3. % gives X = -1
Error:
X is 2 mod 0. % arithmetic exception