Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Python > (Numeric) should -7 % 5 = -2 ?

Reply
Thread Tools

(Numeric) should -7 % 5 = -2 ?

 
 
Stan Heckman
Guest
Posts: n/a
 
      06-28-2003
Is the following behavior expected, or have I broken my Numeric
installation somehow?

$python
Python 2.2.2 (#1, Mar 21 2003, 23:01:54)
[GCC 3.2.3 20030316 (Debian prerelease)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import Numeric
>>> Numeric.__version__

'23.0'
>>> -7 % 5

3
>>> Numeric.array(-7) % 5

-2
>>> Numeric.remainder(-7, 5)

-2

--
Stan
 
Reply With Quote
 
 
 
 
Fredrik Lundh
Guest
Posts: n/a
 
      06-28-2003
Stan Heckman wrote:

> Is the following behavior expected, or have I broken my Numeric
> installation somehow?
>
> $ python
> >>> import Numeric
> >>> Numeric.__version__

> '23.0'
> >>> -7 % 5

> 3
> >>> Numeric.array(-7) % 5

> -2
> >>> Numeric.remainder(-7, 5)

> -2


looks like Numeric implements C semantics, which is different
from how Python does it.

</F>




 
Reply With Quote
 
 
 
 
Tim Roberts
Guest
Posts: n/a
 
      07-01-2003
"Louis M. Pecora" <(E-Mail Removed)> wrote:

>Fredrik Lundh <(E-Mail Removed)> wrote:
>
>> > >>> -7 % 5
>> > 3
>> > >>> Numeric.array(-7) % 5
>> > -2
>> > >>> Numeric.remainder(-7, 5)
>> > -2

>>
>> looks like Numeric implements C semantics, which is different
>> from how Python does it.

>
>Hmmm... "remainder" makes sense. But "%" is mod, right. IIRC from my
>abstract algebra days (only 30 yrs ago ) The "X mod n" function
>maps onto the postive integers from 0 to n-1. So sounds like numeric
>contradicts the math texts. Not good since it's a math module.


That's a bit harsh. The problem is that there is no universal agreement in
the world of computer science as to what the semantics of the modulo
operator should be when presented with a negative operand. Contradicting
Fredrik, something I do with great reluctance, the C standard specifies
that the behavior is implementation-defined, so in fact BOTH answers
"implement C semantics".

Fortran, on the other hand, defines A mod P as A-INT(A/P)*P, which is
exactly what Numeric produces. Since folks interested in numerical
programming often have a strong Fortran background, it is not terribly
surprising that Numeric should follow Fortran's lead.
--
- Tim Roberts, http://www.velocityreviews.com/forums/(E-Mail Removed)
Providenza & Boekelheide, Inc.
 
Reply With Quote
 
Richard Brodie
Guest
Posts: n/a
 
      07-01-2003

"Tim Roberts" <(E-Mail Removed)> wrote in message news:(E-Mail Removed)...

> Contradicting Fredrik, something I do with great reluctance, the C standard
> specifies that the behavior is implementation-defined, so in fact BOTH answers
> "implement C semantics".


Only if you're looking at an old version of the standard; it's not implementation
dependent in C99.


 
Reply With Quote
 
Louis M. Pecora
Guest
Posts: n/a
 
      07-01-2003
In article <(E-Mail Removed)>, Tim Roberts
<(E-Mail Removed)> wrote:

> >Hmmm... "remainder" makes sense. But "%" is mod, right. IIRC from my
> >abstract algebra days (only 30 yrs ago ) The "X mod n" function
> >maps onto the postive integers from 0 to n-1. So sounds like numeric
> >contradicts the math texts. Not good since it's a math module.

>
> That's a bit harsh.


You may be right. I got to work and checked my old Abstract Algebra
book. The defintion is,

We write a=b mod m if m divides (a-b) (i.e. no remeinder).

The defintion does not say how to compute the mod, rather it is an
expression of a relationship between a and b. Hence, writing -2=-7 mod
5 appears to be OK.

The "uniqueness" comes in when we recogize that mod m defines an
equivalence relation on the integers and so for a given m every integer
falls into a unique class (or subset of integers). The set of m
subsets is equivalent to the positive integers 0 to m-1.

So it appears that the translation between math and computer science is
not as clear as I thought. In math (well, number theory) mod is a
relation, not an operation. In computer science it is an operation.

Waddayathink?

--
Lou Pecora
- My views are my own.
 
Reply With Quote
 
Bob Gailer
Guest
Posts: n/a
 
      07-01-2003
At 11:19 AM 7/1/2003 -0400, Louis M. Pecora wrote:

>In article <(E-Mail Removed)>, Tim Roberts
><(E-Mail Removed)> wrote:
>
> > >Hmmm... "remainder" makes sense. But "%" is mod, right. IIRC from my
> > >abstract algebra days (only 30 yrs ago ) The "X mod n" function
> > >maps onto the postive integers from 0 to n-1. So sounds like numeric
> > >contradicts the math texts. Not good since it's a math module.

> >
> > That's a bit harsh.

>
>You may be right. I got to work and checked my old Abstract Algebra
>book. The defintion is,
>
>We write a=b mod m if m divides (a-b) (i.e. no remeinder).
>
>The defintion does not say how to compute the mod, rather it is an
>expression of a relationship between a and b. Hence, writing -2=-7 mod
>5 appears to be OK.
>[snip]


To quote from "Number Theory and its History" by Oystein Ore, page 213f:
"When an integer a is divided by another m, one has
a = km + r
where the remainder is some positive integer less than m. Thus for any
number a there exists a congruence
a (is congruent to) r (mod m)
where r is a unique one among the numbers 0, 2, 1, .... m-1"

Bob Gailer
(E-Mail Removed)
303 442 2625


---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.492 / Virus Database: 291 - Release Date: 6/24/2003

 
Reply With Quote
 
Erik Max Francis
Guest
Posts: n/a
 
      07-02-2003
"Louis M. Pecora" wrote:

> We write a=b mod m if m divides (a-b) (i.e. no remeinder).
>
> The defintion does not say how to compute the mod, rather it is an
> expression of a relationship between a and b. Hence, writing -2=-7
> mod
> 5 appears to be OK.


Right. Equivalences modulo m are really alternate numerical spaces in
which arithmetic is done; in mathematics, the modulo is not strictly an
operator. In those cases, you don't really have to pick a unique
residue when doing arithmetic (mod m), since it's all equivalence
relation anyway.

In computer science, where modulo is an operator that must return a
unique value, it's not really specified whether (-n % m) (m, n positive)
should be negative or not. Some languages/systems chose negative, some
don't. The choice is never "wrong" unless it's done inconsistently
within a particular language/system.

--
Erik Max Francis && (E-Mail Removed) && http://www.alcyone.com/max/
__ San Jose, CA, USA && 37 20 N 121 53 W && &tSftDotIotE
/ \ People are taught to be racists.
\__/ Jose Abad
 
Reply With Quote
 
Julian Tibble
Guest
Posts: n/a
 
      07-02-2003
In article <020720031459050258%(E-Mail Removed)>,
Louis M. Pecora wrote:
> In article <(E-Mail Removed)>, Bob
> Gailer <(E-Mail Removed)> wrote:
>
>> "When an integer a is divided by another m, one has
>> a = km + r
>> where the remainder is some positive integer less than m.

>
> Maybe I'm misunderstanding this, but what about -7 divided by 5? We
> get k=-1 and r=-2.


-7 = (-2) * 5 + 3

So actually, k = -2 and r = 3


> m can be negative. Maybe your quote was for the positive integers only.


True, that definition does not make sense when m is negative. When I came
across the subject in introductory group theory they said "positive divisor".

Julian
 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
gems should *not be case sensitive.. or should they? botp Ruby 6 10-04-2010 11:42 PM
What the FAQs should and should not contain Josef 'Jupp' SCHUGT Ruby 0 08-19-2005 01:46 PM
Should I Bridge? =?Utf-8?B?Zmx1ZmZ5IHRoZSB3b25kZXIga2l0dGVu?= Wireless Networking 1 07-21-2005 01:25 AM
taking 70-290 should i be scared? What should i expect??? Raymond Munyan MCSE 31 12-01-2004 02:34 PM
How should control images should be handled? ~~~ .NET Ed ~~~ ASP .Net Building Controls 1 11-03-2004 12:30 PM



Advertisments