[ library(gfd) | Reference Manual | Alphabetic Index ]
# <ConsistencyModule:> divmod(?X,?Y,?Q,?M)

Constrains Q to X // Y, and M to X rem Y.
*X*
- An integer or (domain) variable (array notation accepted)
*Y*
- An integer or (domain) variable (array notation accepted)
*Q*
- An integer or (domain) variable (array notation accepted)
*M*
- An integer or (domain) variable (array notation accepted)

## Description

Constrains Q to be the integer quotient of X and Y (X // Y), and M to
be the remainder (X rem Y). Q is rounded towards 0.
CAUTION: this predicate is misnamed, Gecode actually implements the
ECLiPSe arithmetic operations // and 'rem', not 'div' and 'mod'.
The difference only matters when arguments are negative.

ConsistencyModule is the optional module specification to give the
consistency level for the propagation for this constraint:
gfd_bc for bounds consistency.