… 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

Reply via email to