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