 Front page | perl.perl6.language | Postings from May 2005

## Re: mod/div

From:
=?ISO-8859-1?Q?=22TSa_=28Thomas_Sandla=DF=29=22?=
Date:
May 30, 2005 02:15
Subject:
Re: mod/div
Message ID:
```Mark Reed wrote:
> I would really like to see (\$x div \$y) be (floor(\$x/\$y))

That is: floor( 8 / (-3) ) == floor( -2.6666.... ) == -3
Or do you want -2?

> and (\$x mod \$y) be (\$x - \$x div \$y).

Hmm, since 8 - (-3) == 11 this definition hardly works.
But even with \$q = floor( \$x / \$y ) and \$r = \$x - \$q * \$y
we get 8 - (-3) * (-3) == -1 where I guess you expect -2.
Looks like you want some case distinction there on the
sign of \$x.

> If the divisor is positive the modulus should be
> positive, no matter what the sign of the dividend.

The problem is that with two numbers \$x and \$y you get
four combinations of signs which must be considered when
calculating \$q and \$r such that \$x == \$q * \$y + \$r holds.

> Avoids lots of special case code across 0 boundaries.

If there is a definition that needs no special casing
then it is the euclidean definition that 0 <= \$r < abs \$y.
--
TSa (Thomas Sandlaß)

```