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) mod( 10, 3, 1). mod(-10, 3, 2). mod( 10, -3, -2). mod(-10, -3, -1). mod( 11, 3, 2). Fail: mod(1, 2, 3). mod(6, 2.0, 3.0). mod(5, 2, r). Error: mod(A, 2, 6). (Error 4). mod(2, 0, Result). (Error 20). mod(4 + 2, 2, 12). (Error 24).