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