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

Reply via email to