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.
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
>
> On 12/10/2011 10:48 AM, Henry Rich wrote:
>> Maybe not an improvement, but this is how I would have done back in my
>> hardware-design days:
>>
>> hcinv =. -~/@:#.@:(~:/\)@:((,1)&,:)"1
>>
>> Quite a bit more elegant in wires than in J!
>>
>> Henry Rich
>>
>> On 12/10/2011 1:01 AM, Kip Murray wrote:
>>> Now we need an inverse for Raul's improved #: ("hash colon")
>>>
>>> hc NB. Raul's improved #:
>>> {.@#:@(,: (2 * |))
>>>
>>> hc i: 2
>>> 1 1 0
>>> 1 1 1
>>> 0 0 0
>>> 0 0 1
>>> 0 1 0
>>>
>>> hcinv NB. improvement sought
>>> 2&#.`(2&#.@}. - 2 ^<:@#)@.{."1
>>>
>>> hcinv hc i: 2
>>> _2 _1 0 1 2
>>>
>>> On 12/8/2011 2:41 PM, Raul Miller wrote:
>>> ...
>>> But this would work just as well, as a model:
>>>
>>> {.@#:@(,: 2 * |)i:2
>>> 1 1 0
>>> 1 1 1
>>> 0 0 0
>>> 0 0 1
>>> 0 1 0
>>> ----------------------------------------------------------------------
>>> 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