[Jprogramming] When a <. _ is less than a
Raul Miller
rauldmiller at gmail.com
Wed Feb 3 19:39:27 UTC 2016
I think, in this case, that we are working against the language
definition. That tends to introduce quirks and other problems into the
language.
Specifically, I think we would be working against
http://www.jsoftware.com/help/dictionary/dictg.htm and the table
introduced by the phrase "Dyadic verbs (e.g. + - * % , = <) that
require argument type conversions".
So, rather than introducing a special case which requires inspection
of arguments, maybe the right thing to do is to define an adverb which
implements a different type conversion table on behalf of whatever
verb it's working with?
That said, I set out to write such a thing, and got stalled when
trying to figure out how reliably and efficiently coerce a floating
point array to integer type.
Specifically:
MAXINT=: +/1,(#~1-2&|)".":x:+:^:(4>:3!:0)^:a:1
MININT=: _1-MAXINT
3!:0 MAXINT,MININT
4
3!:0 <.MININT>.( MAXINT+0.01)<.MAXINT-1
8
Basically, I'm not sure how to deal with this existing quirk:
x:MAXINT
9223372036854775807
x:( MAXINT-0.01)<.MAXINT-511
9223372036854775808
9!:14''
j804/j64/darwin/release/commercial/www.jsoftware.com/2015-12-21 18:06:25
Any suggestions?
Thanks,
--
Raul
On Wed, Feb 3, 2016 at 2:02 PM, Dan Bron <j at bron.us> wrote:
> I know we have yet to organize a formal process for building and disseminating a community-driven implementation of J, but in anticipation of that day’s arrival, perhaps we can start collecting community-driven proposals for enhancements?
>
> One such enhancement could be special code that detects whether the argument to an arithmetic dyad is the scalar _ (or __ or _.) and if so, avoids demoting the other argument to double if it’s already extended or rational.
>
> I have other ideas too. But maybe we should collect them on the Wiki?
>
> -Dan
>
>
>> On Feb 2, 2016, at 9:12 PM, Henry Rich <HenryHRich at gmail.com> wrote:
>>
>> No, extendeds promote to float on mixed operations.
>>
>> Henry Rich
>>
>> On 2/2/2016 9:09 PM, 'Pascal Jasmin' via Programming wrote:
>>> 9223372036854736345 <. _
>>> 9.22337e18
>>>
>>> result is a double. <. double is the closest integer it can find.
>>>
>>> this seems like a problem though:
>>>
>>>
>>> 9223372036854736345x <. _
>>> 9.22337e18
>>>
>>>
>>>
>>> ----- Original Message -----
>>> From: Henry Rich <henryhrich at gmail.com>
>>> To: Programming forum <programming at jsoftware.com>
>>> Sent: Tuesday, February 2, 2016 9:05 PM
>>> Subject: [Jprogramming] When a <. _ is less than a
>>>
>>> I'm stepping up to the world of 64-bit integers, and stepping into cowflops.
>>>
>>> This took me quite a while:
>>>
>>> <. 9223372036854736345 <. _
>>>
>>> 9223372036854735872
>>>
>>>
>>> See that? Take the minimum of (number) and (infinity), and the result
>>> is less than (number)!
>>>
>>> Yes, I understand why it happens. Now I do. Be warned.
>>>
>>> Henry Rich
>>> ----------------------------------------------------------------------
>>> For information about J forums see http://www.jsoftware.com/forums.htm
>>> ----------------------------------------------------------------------
>>> For information about J forums see http://www.jsoftware.com/forums.htm
>>
>> ----------------------------------------------------------------------
>> For information about J forums see http://www.jsoftware.com/forums.htm
>
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm
More information about the Programming
mailing list