Result is Number1 mod Number2which 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