Yes indeed, I do want to say f!.t0/.!.t1 . The only reason I use f/.!.t is in the form f/.!.0 when x has rank > 1, because the algorithm for that case is very slow when tolerant comparison is used (necessarily so, I think). I don't want to change the tolerance used for f - just for the /. .
If !.t changes the comparison tolerance, I don't see how I would get the behavior I want. When f is executed, how could it find out what the tolerance was before /., so that it could set it back to that value? On the other hand, if /.!.t were designed to apply only to /., then it would be easy to use f!.t0/.!.t1 if that's what I wanted. Henry Rich On 9/6/2010 10:12 PM, Roger Hui 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
