Re: Why no mod function?
"Alasdair McAndrew" <[email protected]>
| Newsgroups | gmane.comp.mathematics.axiom.user |
|---|---|
| Message-ID | <[email protected]> |
Actually x mod y == integer MOD(x,y)$Lisp is the function. -Alasdair On 7/11/07, Alasdair McAndrew <[email protected]> wrote: > > Well, positiveRemainder should be renamed "mod". Also, addmod, submod, > mulmod assume that their first two parameters are positive, which is an > unreasonable restriction. For example: > > (1) -> addmod(-13,0,10) > > (1) - 13 > > (2) -> mulmod(-13,1,10) > > (2) - 3 > > (3) -> submod(-13,0,10) > > (3) - 3 > > (4) -> submod(0,13,10) > > (4) -3 > > In fact, there should be two mod commands: x mod n, which produces a > result between 0 and n-1, and x bmod n (for "balanced mod") which produces a > result between -(n-1)/2 and (n-1)/2 if n is odd, and between -(n-2)/2 and > n/2 if n is even. > > Looking through si.spad, it could easily be extended by > > x mod y == MOD(x,y)$Lisp::INT > > or some such. > > cheers, > Alasdair > > On 7/11/07, Bill Page <[email protected]> wrote: > > > > On 7/10/07, Alasdair McAndrew wrote: > > > Yes, that's pretty much what I did. But surely such an important > > function > > > as mod should be available without having to write it yourself? > > > ... > > > > Digging a little deeper I found in the domain 'Integer': > > > > (1) -> positiveRemainder(-13,10) > > > > (1) 7 > > Type: PositiveInteger > > > > I presume this is what you were looking for? > > > > Also take a look at > > > > (2) -> addmod(13,1,10) > > > > (2) 4 > > Type: PositiveInteger > > (3) -> submod(13,1,10) > > > > (3) 12 > > Type: PositiveInteger > > (4) -> mulmod(13,2,10) > > > > (4) 6 > > Type: PositiveInteger > > > > Regards, > > Bill Page. > > > > _______________________________________________ Axiom-mail mailing list [email protected] http://lists.nongnu.org/mailman/listinfo/axiom-mail