That isn't what complex | does, or what it should do, I think. However, it
is a consistent extension of "mod" to the complex numbers--we are just
using a different subgroup of the complex numbers to mod out by.
Note, however, that this approach adapts poorly to complex left arguments.
It still works, by subtracting (real) integer multiples of x from y, but
the resultant range is a weird bar in the complex plane.
As you noted, it's easy to define your version in terms of real | .

Marshall

On Sun, Jan 22, 2012 at 2:27 PM, Bo Jacoby <bojac...@yahoo.dk> wrote:

> I wanted to take 'mod' of the real part and leave the imaginary part
> untouched.
>    f=:(|9&o.)+j.&(11&o.)&]
>    7 f 73j73+i.6
> 3j73 4j73 5j73 6j73 0j73 1j73
> Perhaps this is not done by a complex '|' ?
>
>
>
>
> >________________________________
> > Fra: Marshall Lochbaum <mwlochb...@gmail.com>
> >Til: Programming forum <programming@jsoftware.com>
> >Sendt: 19:50 søndag den 22. januar 2012
> >Emne: Re: [Jprogramming] 5|0 1 2 3 4 is not equal to 5|0 1 2 3 4 j.0
> >
> >It would be possible to change complex mod without changing floor. Floor
> is
> >consistent on reals and complex numbers, while complex mod is not, so it
> >doesn't necessarily need to be fixed.
> >
> >The problem with complex mod is that for left argument b it that it
> ensures
> >that the result is in the box defined by corners -:(j./~ _0.5 0.5)*b .
> That
> >means that it subtracts the closest Gaussian integer multiple of b from
> the
> >right argument. This is inconsistent with mod for the reals, which
> >subtracts the floor under division by b.
> >
> >Marshall
> >
> >On Sun, Jan 22, 2012 at 1:28 PM, Henry Rich <henryhr...@nc.rr.com> wrote:
> >
> >> Well, I know complex floor was something Gene McDonnell was proud of,
> >> and I expect it's embedded in some applications.  You'll need to produce
> >> a compelling argument for changing it.
> >>
> >> Henry Rich
> >>
> >> On 1/22/2012 12:38 PM, Marshall Lochbaum wrote:
> >> > I'm pretty sure I understand the definition, but I still don't get the
> >> > rationale. Under my scheme the "obvious" complex floor would be (-
> 1&|),
> >> > which also has the properties of convexity, translatability, and
> >> > compatibility listed in the dictionary.
> >> >
> >> > Marshall
> >> >
> >> > On Sun, Jan 22, 2012 at 12:08 PM, Henry Rich<henryhr...@nc.rr.com>
> >>  wrote:
> >> >
> >> >> As Don said, make sure you understand complex floor before you start
> >> >> coding.
> >> >>
> >> >> Henry Rich
> >> >>
> >> >> On 1/22/2012 11:38 AM, Marshall Lochbaum wrote:
> >> >>> 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
> >> >>>
> >> >>
> ----------------------------------------------------------------------
> >> >> For information about J forums see
> http://www.jsoftware.com/forums.htm
> >> >>
> >> > ----------------------------------------------------------------------
> >> > For information about J forums see
> http://www.jsoftware.com/forums.htm
> >> >
> >> ----------------------------------------------------------------------
> >> For information about J forums see http://www.jsoftware.com/forums.htm
> >>
> >----------------------------------------------------------------------
> >For information about J forums see http://www.jsoftware.com/forums.htm
> >
> >
> >
> ----------------------------------------------------------------------
> 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