Division and modulus for computer scientists taken from https://www.microsoft.com/en-us/research/wp-content/uploads/2016/02/divmodnote-letter.pdf
For two numbers x (dividend) and y (divisor) on an ordered ring with y != 0, there exists a pair of numbers q (quotient) and r (remainder) such that these laws are satisfied:
(1) q is an integer
(2) x = y * q + r (division rule)
(3) |r| < |y|
(4t) r = 0 or sign(r) = sign(x)
(4f) r = 0 or sign(r) = sign(y).
where sign is the sign function, and the absolute value function |x| is defined as |x| = x if x >=0, and |x| = -x otherwise.
We define functions tmod and tquot such that:
q = tquot(x, y) and r = tmod(x, y) obey rule (4t),
(whichtruncates effectively towards zero) and functions fmod and fquot such that:
q = fquot(x, y) and r = fmod(x, y) obey rule (4f)
(which floors the quotient and effectively rounds towards negative infinity).
Law (4t) corresponds to ISO C99 and Haskell's quot/rem.
Law (4f) is described by Knuth and used by Haskell, and fmod corresponds to the REM function of the IEEE floating-point standard.
- Companion
- object
Value members
Abstract methods
Inherited methods
An idempotent function that ensures an object has a non-negative sign.
An idempotent function that ensures an object has a non-negative sign.
- Inherited from
- Signed
Result of comparing x
with y
. Returns an Int whose sign is:
Result of comparing x
with y
. Returns an Int whose sign is:
- negative iff
x < y
- zero iff
x = y
- positive iff
x > y
- Inherited from
- Order
Like compare
, but returns a cats.kernel.Comparison instead of an Int.
Has the benefit of being able to pattern match on, but not as performant.
Like compare
, but returns a cats.kernel.Comparison instead of an Int.
Has the benefit of being able to pattern match on, but not as performant.
- Inherited from
- Order
Returns true if x
= y
, false otherwise.
Returns true if x
= y
, false otherwise.
- Definition Classes
- Order -> PartialOrder -> Eq
- Inherited from
- Order
Returns true if x
> y
, false otherwise.
Returns true if x
> y
, false otherwise.
- Definition Classes
- Order -> PartialOrder
- Inherited from
- Order
Returns true if x
>= y
, false otherwise.
Returns true if x
>= y
, false otherwise.
- Definition Classes
- Order -> PartialOrder
- Inherited from
- Order
Returns true if x
< y
, false otherwise.
Returns true if x
< y
, false otherwise.
- Definition Classes
- Order -> PartialOrder
- Inherited from
- Order
Returns true if x
<= y
, false otherwise.
Returns true if x
<= y
, false otherwise.
- Definition Classes
- Order -> PartialOrder
- Inherited from
- Order
Returns true if x
!= y
, false otherwise.
Returns true if x
!= y
, false otherwise.
Note: this default implementation provided by Order is the same as the one defined in Eq, but for purposes of binary compatibility, the override in Order has not yet been removed. See this discussion.
- Definition Classes
- Order -> Eq
- Inherited from
- Order
Like partialCompare
, but returns a cats.kernel.Comparison instead of an Double.
Has the benefit of being able to pattern match on, but not as performant.
Like partialCompare
, but returns a cats.kernel.Comparison instead of an Double.
Has the benefit of being able to pattern match on, but not as performant.
- Inherited from
- PartialOrder
Returns Some(x) if x >= y, Some(y) if x < y, otherwise None.
Returns Some(x) if x >= y, Some(y) if x < y, otherwise None.
- Inherited from
- PartialOrder
Returns Some(x) if x <= y, Some(y) if x > y, otherwise None.
Returns Some(x) if x <= y, Some(y) if x > y, otherwise None.
- Inherited from
- PartialOrder
Returns Zero if a
is 0, Positive if a
is positive, and Negative is a
is negative.
Returns Zero if a
is 0, Positive if a
is positive, and Negative is a
is negative.
- Inherited from
- Signed
Returns 0 if a
is 0, 1 if a
is positive, and -1 is a
is negative.
Returns 0 if a
is 0, 1 if a
is positive, and -1 is a
is negative.
- Inherited from
- Signed
Convert a Order[A]
to a scala.math.Ordering[A]
instance.
Convert a Order[A]
to a scala.math.Ordering[A]
instance.
- Inherited from
- Order
Result of comparing x
with y
. Returns None if operands are
not comparable. If operands are comparable, returns Some[Int]
where the Int sign is:
Result of comparing x
with y
. Returns None if operands are
not comparable. If operands are comparable, returns Some[Int]
where the Int sign is:
- negative iff
x < y
- zero iff
x = y
- positive iff
x > y
- Inherited from
- PartialOrder