For all of the following functions, all arguments that are specified as being specialized to <machine-word> accept an instance of <abstract-integer>, which is then coerced to a <machine-word> before performing the operation.
Function
ud%divide (dividend-low :: machine-word, dividend-high :: machine-word, divisor :: machine-word) => (quotient :: machine-word, remainder :: machine-word)
divisor, returning a quotient and remainder such that
(quotient * divisor + remainder = dividend)
divisor is zero or if the correct value for the quotient exceeds the machine word range.
Function
ud%shift-left (low :: machine-word, high :: machine-word, count :: integer) => (low :: machine-word, high :: machine-word)
count of the double word value represented by low and high. An error is signaled unless 0 <= count < $machine-word-size.
Function
ud%shift-right (low :: machine-word, high :: machine-word, count :: integer) => (low :: machine-word, high :: machine-word)
Logical right shift by count of the double word value represented by low and high. An error is signaled unless 0 <= count < $machine-word-size.