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 <devon...@gmail.com> 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 <rauldmil...@gmail.com> 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 <s...@caveconsulting.com> 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 <s...@caveconsulting.com> >> 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 > > -- Devon McCormick, CFA Quantitative Consultant ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm