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
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to