I had always assumed that the !. applied to the /. comparisons for grouping
the items to pass to f . That does not seem to be so unless I made some
error in my test case. It would seem that being able to set the comparison
for grouping to zero should give significant speed-up of /. just as it does
for the comparison verbs.

Then seeing that the !. was applied to the primitive inside the named verb
was a surprise as that has always generated an error when used directly. The
!. didn't seem to be applied to the verb f itself, but to the primitive
within f . Is this acting like localizing []CT in APL or what?

On Mon, Sep 6, 2010 at 9:12 PM, Roger Hui <[email protected]> wrote:

> f/.!.t _should_ change the tolerance for f . Perhaps you
> want to say instead f!.t0/.!.t1 ?  (And if the interpreter
> does not accept that then it should.)
>
>
>
> ----- Original Message -----
> From: Henry Rich <[email protected]>
> Date: Monday, September 6, 2010 11:04
> Subject: Re: [Jprogramming] Mask from list of indices with multiplicity
> To: Programming forum <[email protected]>
>
> > I don't see that tolerant comparisons are always used.  But
> > I agree that
> > f/.!.t seems to change the comparison tolerance for f, which in
> > my
> > opinion is an error.
> >
> >     z =. 3 + 1e_15 * i. 8
> >     </.~ z
> > +---------------+
> > |3 3 3 3 3 3 3 3|
> > +---------------+
> >     </.!.0~ z
> > +-+-+-+-+-+-+-+-+
> > |3|3|3|3|3|3|3|3|
> > +-+-+-+-+-+-+-+-+
> >     <@:>./.!.0 z
> > +-+-+-+-+-+-+-+-+
> > |3|4|4|4|4|4|4|4|
> > +-+-+-+-+-+-+-+-+
> >     <@:(>.!.5e_14)/.!.0 z
> > +-+-+-+-+-+-+-+-+
> > |3|3|3|3|3|3|3|3|
> > +-+-+-+-+-+-+-+-+
> >
> > Henry Rich
> >
> > On 9/6/2010 1:40 PM, Don Guinn wrote:
> > > Played with f/. and tolerance some more. Surprising! /. always
> > does tolerant
> > > comparisons when grouping. Including when 9!:18 is zero. And
> > when tolerance
> > > is applied to /. it will apply the tolerance to a named verb.
> > >
> > >     z
> > > 1 3 2 2 3 1 1 2 2 3
> > >     z-<.z
> > > 2.90878e_14 2.88658e_14 2.88658e_14 2.88658e_14 2.88658e_14
> > 2.90878e_14> 2.90878e_14 2.88658e_14 2.88658e_14 2.88658e_14
> > >     f=.[:<[=[:<.]
> > >     f
> > > +--+-+---------------+
> > > |[:|<|+-+-+---------+|
> > > |  | ||[|=|+--+--+-+||
> > > |  | || | ||[:|<.|]|||
> > > |  | || | |+--+--+-+||
> > > |  | |+-+-+---------+|
> > > +--+-+---------------+
> > >     f/.~z
> > > +-----+-----+-------+
> > > |1 1 1|1 1 1|1 1 1 1|
> > > +-----+-----+-------+
> > >     f/.!.0~z
> > > +-----+-----+-------+
> > > |0 0 0|0 0 0|0 0 0 0|
> > > +-----+-----+-------+
> > >     f z
> > > +-------------------+
> > > |1 1 1 1 1 1 1 1 1 1|
> > > +-------------------+
> > >     f!.0 z
> > > |domain error
> > > |       f!.0~z
> > >     9!:19]0
> > >
> > >     f/.~z
> > > +-----+-----+-------+
> > > |0 0 0|0 0 0|0 0 0 0|
> > > +-----+-----+-------+
> > >     9!:19]ct
> > >     ct
> > > 5.68434e_14
> > >     f/.~z
> > > +-----+-----+-------+
> > > |1 1 1|1 1 1|1 1 1 1|
> > > +-----+-----+-------+
> > >
> > > I am not really sure what /. uses for the comparison tolerance
> > for grouping.
> > >
> > >     z2=.1 3 2 2 3 1 1 2 2 3+3*ct*?10#0
> > >     z2
> > > 1 3 2 2 3 1 1 2 2 3
> > >     z2=<.z2
> > > 1 1 0 0 1 1 1 1 0 1
> > >     f z2
> > > +-------------------+
> > > |1 1 0 0 1 1 1 1 0 1|
> > > +-------------------+
> > >      f/.~z2
> > > +-----+-----+-------+
> > > |1 1 1|1 1 1|0 0 1 0|
> > > +-----+-----+-------+
> > >
> > > Above the numbers close are grouped together as if equal, yet
> > when they are
> > > compared in f they are found to be not tolerably equal.
> ----------------------------------------------------------------------
> 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