I don't see the improvement suggested by the link
below in my tests which follow, unless there is also special
code for the original GTE.

   char1 =: a. {~ num1 =: [EMAIL PROTECTED]
   char2 =: a. {~ num2 =: [EMAIL PROTECTED]
   GTE   =: a. {~ >. & (a. i. ])
   7!:2 'char2 GTE char1'
1574016
   7!:2 'num2 >. num1'
525120

   GT =: >.&.(a.&i.)
   7!:2 'char2 GT char1'   NB. there is no improvement here
1574400
   char2 (GTE-:GT) char1
1

On Sun, 6 Apr 2008, Roger Hui wrote:

> For characters x>.y (or any dyad) has only *:256 possibilities.
> Therefore, one solution is to construct a table of size 65536:

Perhaps special code for   well_behaved_dyad&.(a.&i.)
The interpreter is already part way down that road:
http://www.jsoftware.com/help/release/underai.htm



----- Original Message -----
From: Roger Hui <[EMAIL PROTECTED]>
Date: Sunday, April 6, 2008 8:13
Subject: Re: [Jprogramming] relational operators and character data
To: Programming forum <[email protected]>

> For characters x>.y (or any dyad) has only *:256
> possibilities.
> Therefore, one solution is to construct a table of size 65536:
>
>    MAXC=: , a.{~>./~i.256
>    MAXA=: ,/ ,"0/~ a.
>    maxc=: MAXC {~ MAXA i. ,.
>
>    GTE   =: a. {~ >. & (a. i. ])
>    char1 =: a. {~ [EMAIL PROTECTED]
>    char2 =: a. {~ [EMAIL PROTECTED]
>
>    char1 (GTE -: maxc) char2
> 1
>
>    ts=: 6!:2 , 7!:[EMAIL PROTECTED]
>    ts 'char1 GTE char2'
> 0.0488294 1.25841e7
>    ts 'char1 maxc char2'
> 0.0753319 6.8169e6
>
>
>
> ----- Original Message -----
> From: david alis <[EMAIL PROTECTED]>
> Date: Sunday, April 6, 2008 1:41
> Subject: [Jprogramming] relational operators and character data
> To: Programming forum <[email protected]>
>
> > Given X and Y with values taken from the set 'A', 'B', 'C', 'D'.
> > I need to compute  the larger of the two values (larger
> > with respect
> > to their position in ascii or ebcdic).
> > In other words  X >. Y
> > However >. doesnt work with characters.
> >  Thus I use an expression similar to:
> >  a.{~>. & (a.i.])
> >
> > In 64 bit J this expression needs around 25M for a character
> > vector of
> > length 1e6:
> >
> >    GTE   =: a. {~ >. & (a. i. ])
> >    char1 =: a. {~ num1 =: [EMAIL PROTECTED]
> >    char2 =: a. {~ num2 =: [EMAIL PROTECTED]
> >
> >    7!:5<'num1'
> > 8388608
> >    7!:5<'char1'
> > 1048576
> >
> >    7!:2 'char2 GTE char1'
> > 25167872
> >    7!:2 'num2 >. num1'
> > 8390272
> >
> > Is there an alternative, or is there a form of the expression that
> > would use special code?
> > Perhaps there is an argument to !. such that when applied to
> >. would
> > extend its domain? (Something like   >.!.<a.)
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm


(B=) <----------my "sig"

Brian Schott
Atlanta, GA, USA
schott DOT bee are eye eh en AT gee em ae eye el DOT com
http://schott.selfip.net/~brian/
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to