I certainly agree that Dan's requested feature shouldn't be J's default behavior. The result of an arithmetic operation should follow from the behavior of the relevant datatype (here, IEEE float) and the type conversion rules.
I sent an email about the problem of coercion to integer a month ago; my recommendation was fl: MAX =: ->: MIN =: _2 <.@^ 63 fl =: ((MAX*-.@]) + [: <. MIN>.*) <:&MAX (at http://jsoftware.com/pipermail/programming/2016-January/043990.html) Marshall On Wed, Feb 03, 2016 at 02:39:27PM -0500, Raul Miller wrote: > 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 <[email protected]> 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 <[email protected]> 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 <[email protected]> > >>> To: Programming forum <[email protected]> > >>> 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 > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
