The theory of moduli is based on the quotient group of the integers by a
subgroup. For instance, the integers (mod 2) are produced by taking all the
integers and identifying all the ones that are even, as well as all the
ones that are odd. Then we get a two-element group which we can preform
addition on: even+even=even, even+odd=odd, etc.

To reduce a number in a particular modulus, we need to find a canonical
representation for that number. For positive numbers n the choice is fairly
simple: n|l gives the l' such that 0<=l'<n. In the complex plane, a number
generates a grid by taking its product with the Gaussian integers; try
'dot; pensize 2' plot , 1j2 * j./~i:10
to see what I mean. Then what we want is a canonical form for what happens
when we identify all those points together. We're allowed to "shift" by any
Gaussian integer times the modulus.

Based on this, I think a good way to calculate the modulus is to get the
number into the square that lies counterclockwise of the modulus number.
Practically, this means we decompose a complex number y into (a j.b)*x, and
then return (1|a)j.(1|b) .

I'll see if I can get around to editing this. I have a working copy of the
source, but I haven't made sense of it entirely.

Marshall

On Sun, Jan 22, 2012 at 10:45 AM, Raul Miller <rauldmil...@gmail.com> wrote:

> Yes, this is a bug.
>
> Someone should fix it.
>
> J is open source.  (Though distributed sources do not compile for me,
> and I keep getting sidetracked when I investigate forks that might
> compile.)
>
> --
> Raul
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm
>
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to