> A note might be appropriate, and it might be a good place to explain some of > the multiple base capabilities of J. However I think it would be better to > make some reference to a suitable more expanded comment on the JWiki - > perhaps as an Essay though I think Roger has edited all those. > > What would you recommend?
I'm pursuing a conservative line in Edn2 of APWJ: just get the code to work -- and update the narrative if necessary. However, this doesn't stop additional references, endnotes & footnotes being incorporated. And I'm quite happy to reference the J Wiki, as a perfectly respectable learned source, if you can't get it published in a "solider" form by the publication date of APWJ Edn 2 (this June). The problem with a Wiki is that it might be unrecognisable in 10 years, say, which makes me happier with something less easily changed in retrospect. NB. Edn 1 is announced / published now (see www.vector.org.uk) so you can make reference to it in your own article / note. Might I suggest you publish your reflections on Gene's approach, presumably incorporating the code below, and then add an endnote to the nimber article (chapter 31) with a reference to where it may be found, which might be a J Wiki page. I shall decide how best to incorporate this reference in Edn 2 (strictly it's not a reference in Gene's text). Ian Clark On Sun, Apr 12, 2009 at 9:40 AM, Fraser Jackson <[email protected]> wrote: > Like Eugene, I read 'The Book of Numbers' because of Ken's lab, so enjoyed > revisiting it in editing this piece by Eugene. > > Trying to understand what he did, and just what 'nimber' multiplication is I > found that we can write some simple functions to generate the multiplication > table which are quite different in approach from those Ken used and which > Mike Day used for his code converting the Maple code. > > A note might be appropriate, and it might be a good place to explain some of > the multiple base capabilities of J. However I think it would be better to > make some reference to a suitable more expanded comment on the JWiki - > perhaps as an Essay though I think Roger has edited all those. > > What would you recommend? > > Those interested about the detail might like to read on. > > Nimber products for the powers of 2 can be found using the rules specified > by Guy and Conway, but differ depending on how the power of 2 is formed. One > approach is to consider all the powers of two and their nimber products. I > found it very difficult to get these right working by hand but it is much > simpler than direct construction of the general table. It took a lot of > trial and error before I got them all right mainly because you have to be > very careful distinguishing between ordinary and nimber multiplication. > > Then express all elements of a product in terms of the binary components, > and form their nimber sum using the function in Eugene's code. This works > because in binary all coefficients are zero or one, and for nimber products > 1 is the identity. > > The table pt and the function p provide the nimber products for binary terms > required for elements from i.16. > > Tables of nimber products exist for all Fermat powers, so tables, of shape 2 > 2 ;4 4 ;16 16; 256 256 etc can be formed. For each table the previous table > is required in its construction. > > The multiple base numbers available in J provide an alternative simple way > of constructing the powers. Representing each number by a mixed base with > elements 2,2,4,16,256,...provides an alternative method of finding the > nimber product of any pair of numbers. The very much slower function pf > provides these products for nimbers from the set i.256. > > There are several ways of simplifying these functions, but a general form is > likely only to be used for one further step as the next table is of shape > 65536 65536. This led to the decision to have two simple functions for the > cases with base 16 and 256, and combine them in a manner which reduces the > number of computations. > > The following is a script: > > NB. Nim sums and multiplication for values up to 255 > s =: [: #. [: ~:/ (#: @ ,) > > NB. A slow function using Fermat powers > pf =: 4 : 0 > xf =. |. "1 ]16 4 2 2 #: x NB. convert to Fermat powers > yf =. |. "1 ]16 4 2 2 #: y > xy =. xf p/ "1 1/ yf NB. form products of Fermat powers > xyp =. xy (pp"0) "2 _ pmf 4 > (s@,)"2 xyp > ) > > pmf =: 3 : 0 > v =. i.y > a =. 1,}: 2^2^v > m =. a */ a > (1,3r2*}.a) (<"1 v,.v)}m > ) > > NB. the rules require the products of various binary > NB. numbers and nimber products for lower order terms > NB. I began with calculating pt, then moving to pt8 > > pt8 =: noun define > 1 2 4 8 16 32 64 128 > 2 3 8 12 32 48 128 192 > 4 8 6 11 64 128 96 176 > 8 12 11 13 128 192 176 208 > 16 32 64 128 24 44 75 141 > 32 48 128 192 44 52 141 198 > 64 128 96 176 75 141 103 185 > 128 192 176 208 141 198 185 222 > ) > > pt8 =: ". > < ;._2 pt8 > pt =: 4 4 {. pt8 > > p =: 4 : 0"0 0 NB. Nimber products for i.16 > s , pt *(4{. |. #: x) * / 4 {. |. #:y > ) > > pp =: 4 : 0 "0 0 NB. Nimber products for i.256 > s , pt8 *(8{. |. #: x) * / 8 {. |. #:y > ) > > NB. A function to calculate the terms in pt and pt8 would > NB. welcome. Parts of pt8 are not used in pf for i.256 so > NB. this assisted in checking the higher power terms. > > Fraser > > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm > ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
