You could generalize it to take a left argument of things to exclude: samp=. 1 2.5 _ 3 4.5 6 __ (_ __ _.) ([: (] #~ (= <.)) [ -.~ ]) samp,_. 1 3 6 But you still run into a precision issue: (_ __ _.) ([: (] #~ (= <.)) [ -.~ ]) samp,1r2 + x: 633825300114114700748351602688 1267650600228229401496703205376 1 3 6 6.33825e29 1.26765e30
On Mon, Aug 3, 2020 at 3:20 AM Hauke Rehr <[email protected]> wrote: > … and maybe N/A or NaN or whatever you call _. . > > Am 03.08.20 um 09:04 schrieb Devon McCormick: > > You probably don't want negative infinity either: > > ([: (] #~ (= <.)) _ __ -.~ ]) 1 2.5 _ 3 4.5 6 __ > > 1 3 6 > > > > > > On Mon, Aug 3, 2020 at 3:01 AM Devon McCormick <[email protected]> > wrote: > > > >> You could just remove the infinity: > >> ((_ -.~ ]) #~ [: (= <.) _ -.~ ]) 1 2.5 _ 3 4.5 6 > >> 1 3 6 > >> > >> On Sun, Aug 2, 2020 at 5:52 PM Raul Miller <[email protected]> > wrote: > >> > >>> I think you mean "finds elements of a list which would be > >>> representable exactly as either integers or booleans". Typically, your > >>> list will be all floating point numbers. But, also, I do not think you > >>> want to exclude 1 nor 0. > >>> > >>> This boils down to a test for fractionality with a range test. > >>> > >>> In many languages, this sort of testing is made more convenient with > >>> constants representing the largest and smallest possible integers. J > >>> currently does not have that. But we can define our own: > >>> > >>> MAXINT=: #.1#~31+32*IF64 > >>> MININT=: <:-MAXINT > >>> > >>> Now all we have to do is enhance your fractionality test with a range > >>> test. > >>> > >>> isinteger=: (=<.) * <:&MAXINT * >:&MININT > >>> > >>> Which gives us: > >>> > >>> isinteger 1 2.5 __ 3 4.5 6 > >>> 1 0 0 1 0 1 > >>> > >>> That said, I would want to talk about complex numbers and rational and > >>> extended precision numbers before I tried to implement an > >>> 'isfloating'. This fractionality test throws a domain error for > >>> complex values, and technically all extended precision values are > >>> integers, even after a floor operation (though you can defeat this by > >>> appending an infinity to the list). > >>> > >>> Thanks, > >>> > >>> -- > >>> Raul > >>> > >>> On Sun, Aug 2, 2020 at 8:24 AM Skip Cave <[email protected]> > wrote: > >>>> > >>>> What I'm really looking for, is a verb that finds integers in a list: > >>>> > >>>> datatype 2.5 > >>>> > >>>> floating > >>>> > >>>> datatype 3 > >>>> > >>>> integer > >>>> > >>>> datatype __ > >>>> > >>>> floating > >>>> > >>>> > >>>> So J considers __ as "floating" > >>>> > >>>> > >>>> So I want a verb "isinteger" that marks the integers in a vector, > >>> where __ > >>>> is in the list, and is considered floating: > >>>> > >>>> isinteger 1 2.5 __ 3 4.5 6 > >>>> 1 0 0 1 0 1 > >>>> > >>>> And maybe the inverse also: > >>>> > >>>> isfloating 1 2.5 __ 3 4.5 6 > >>>> > >>>> 0 1 1 0 1 0 > >>>> > >>>> > >>>> My (=<,) doesn't do it: > >>>> > >>>> (=<.)1 2.5 __ 3 4.5 6 > >>>> > >>>> 1 0 1 1 0 1 > >>>> > >>>> > >>>> So what would "isinteger" look like? > >>>> > >>>> > >>>> Skip > >>>> > >>>> > >>>> Skip Cave > >>>> Cave Consulting LLC > >>>> > >>>> > >>>> On Sun, Aug 2, 2020 at 1:44 AM Skip Cave <[email protected]> > >>> wrote: > >>>> > >>>>> I use the (=<.) verb to find integers in a list: > >>>>> > >>>>> > >>>>> * (=<.)1 2.5 2.7 3 4.5 6* > >>>>> > >>>>> *1 0 0 1 0 1* > >>>>> > >>>>> * (#~(=<.))1 2.5 2.7 3 4.5 6* > >>>>> > >>>>> *1 3 6* > >>>>> > >>>>> I ran across an interesting result when infinity is in the list: > >>>>> > >>>>> * (=<.)1 2.5 __ 3 4.5 6* > >>>>> > >>>>> *1 0 1 1 0 1* > >>>>> > >>>>> * (#~(=<.))1 2.5 __ 3 4.5 6* > >>>>> > >>>>> *1 __ 3 6* > >>>>> > >>>>> > >>>>> So J is saying that the floor of infinity is infinity (and the > >>> ceiling of > >>>>> infinity is also infinity). Since infinity is not a number, it would > >>> seem > >>>>> that an error should be generated when taking the floor of infinity, > >>> or > >>>>> perhaps NAN, or a zero? In any case, this messes up my nice > >>> integer-finding > >>>>> verb. Is the\re a mathematical justification for defining the floor > of > >>>>> infinity to be infinity? > >>>>> > >>> > https://math.stackexchange.com/questions/981708/limit-of-floor-function-when-x-goes-infinity > >>>>> > >>>>> > >>>>> Skip > >>>>> > >>>>> > >>>>> Skip Cave > >>>>> Cave Consulting LLC > >>>>> > >>>> ---------------------------------------------------------------------- > >>>> For information about J forums see > http://www.jsoftware.com/forums.htm > >>> ---------------------------------------------------------------------- > >>> For information about J forums see http://www.jsoftware.com/forums.htm > >>> > >> > >> > >> -- > >> > >> Devon McCormick, CFA > >> > >> Quantitative Consultant > >> > >> > > > > -- > ---------------------- > mail written using NEO > neo-layout.org > > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm > -- Devon McCormick, CFA Quantitative Consultant ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
