I think we need use-cases for #: with negative arguments.  

I've probably hit some, over the years, but I can't recall any at the moment.  
Anyone else?

-Dan

-----Original Message-----
From: programming-boun...@jsoftware.com 
[mailto:programming-boun...@jsoftware.com] On Behalf Of Raul Miller
Sent: Monday, December 12, 2011 9:34 AM
To: Programming forum
Subject: Re: [Jprogramming] How #: should have been designed

Then again, the current behavior is not all that useful:

   2 #. #: i: 6
2 3 4 5 6 7 0 1 2 3 4 5 6
   2 #. #: i: 7
1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
   2 #. #: i: 8
8 9 10 11 12 13 14 15 0 1 2 3 4 5 6 7 8


-- 
Raul

On Mon, Dec 12, 2011 at 9:31 AM, Raul Miller <rauldmil...@gmail.com> wrote:
> Ok...
>
> This, combined with a few other issues, is making me think that #: is
> not the right word to be used here.  Perhaps #:: but probably just a
> library word.
>
> But the problem is that 2 #. #: i: 9 would no longer be equivalent to i: 9.
>
> That, and my original suggestion breaks if #: gets updated...
>
> --
> Raul
>
> On Sun, Dec 11, 2011 at 11:43 PM, Kip Murray <k...@math.uh.edu> wrote:
>> Below I present tcpl "two's-complement plus".  It works with the
>> transpose of the arrangement below for adding two's-complement numbers:
>>
>>  1 1 0 0  (value _4)
>>  1 1 0 1  (value _3)
>>  -------
>>  1 1 0 0  (carries shifted to the right)
>>  1 0 0 1  (answer, value _7)
>>
>> Working above from right to left, you say 0 plus 1 is 0 1 and write 0 1
>> vertically below the line. Next you say 0 plus 0 plus 0 is 0 0 (the
>> first 0 is the carry from the preceding step) and write 0 0 vertically
>> below the line.  Continuing, you say 0 plus 1 plus 1 is 1 0 and 1 plus 1
>> plus 1 is 1 1 .  The answer 1 0 0 1 is in the bottom line.
>>
>>     hc =: {.@#:@(,:  2 * |)  NB. Raul's improved #: (hash colon)
>>
>>     hcinv =: ([: -/ [: #. (,: [: +: 1 {. ]))"1  NB. Henry Rich
>>
>>     Table =: 2 2 2 2 $ 0 0,0 1,0 1,1 0,0 1,1 0,1 0,1 1
>>
>>     (< 1 1 1) { Table  NB. sum of three bits
>>  1 1
>>
>>     stack =: ,.&.|:  NB. stacks x over y
>>
>>     hv =: (0 {:: <"1) :: ]  NB. returns head vector
>>
>>     op =: ] stack~ (2 {. [) , Table {~ [: < (2 {. [) , 2 { [: hv ]
>>
>>     ba =: 0 ,~ 0 ,.~ 0 ,.~ ,.  NB. build argument
>>
>>     1 1 0 0 ba 1 1 0 1  NB. starting table
>>  1 1 0 0
>>  1 1 0 0
>>  0 0 0 0
>>  0 1 0 0
>>  0 0 0 0
>>
>>     op/ 1 1 0 0 ba 1 1 0 1
>>  1 1 1 1
>>  1 1 1 0
>>  0 0 0 0
>>  0 1 0 1
>>  0 0 0 0
>>
>>     NB. above see transpose of arrangement at top, with an added
>>     NB. row of 0's
>>
>>     tcpl =: [: }: [: {:"1 [: op/ ba  NB. two's-complement plus
>>
>>     1 1 0 0 tcpl 1 1 0 1  NB. _4 plus _3 is _7
>>  1 0 0 1
>>
>>     hc _4 _3 _7
>>  1 1 0 0
>>  1 1 0 1
>>  1 0 0 1
>>
>> On 12/10/2011 6:48 PM, Kip Murray wrote:
>>> Cool. I think it is an improvement because it neatly avoids a case
>>> statement. Now I wonder if we could implement two's-complement addition
>>> and multiplication with overflow, basing these on bitwise operations
>>>
>>> 0 + 0 is 0, 0 + 1 is 1 + 0 is 1, and 1 + 1 is 1 0
>>>
>>> 0 * 0 is 0 * 1 is 1 * 0 is 0, and 1*1 is 1
>>>
>>> That is, I do not want hc and hcinv to be used except to produce data
>>> and check answers, and I want n-bit two's-complement answers for n-bit
>>> two's-complement data so some of them will be wrong because of overflow.
>>
>> ADDED LATER -- ACCEPT 2n-bit multiplication answers from n-bit data
>>
>>>
>>> Here for Linda is Henry's hcinv expressed without conjunctions other
>>> than " .
>>>
>>> hcinv =: ([: -/ [: #. (,: [: +: 1 {. ]))"1
>>>
>>> On 12/10/2011 10:00 AM, Henry Rich wrote:
>>>> Same idea, better implementation
>>>>
>>>> hcinv =. -/@:#.@:(,: +:@(1&{.))"1
>>>>
>>>> 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

Reply via email to