I didn't see an implementation of the H adverb in that "hypercomplex" pdf. I did, however, see a link to Sam Sirlin's (and Tim Budd's) apl compiler work (and it might be an interesting project to refit that as a J compiler).
Thanks, -- Raul On Sun, Nov 4, 2018 at 7:08 PM 'Mike Day' via Beta <[email protected]> wrote: > > I've only just noticed - should have looked earlier - that Dyalog APL > includes a > proto-implementation of quaternions in the "dfns" workspace, a set of > examples > of John Scholes' "Dynamic Functions" . It's described as a work in > progress, and > partly attributed to Bob Smith, referring to his paper on "Hypercomplex > numbers > in APL", > http://www.sudleyplace.com/APL/Hypercomplex Numbers in APL.pdf > > The whole thing is bound into a single APL operator, "H" (for > Hamilton), or adverb > in J-speak. > It picks up a number of primitives such as + - × or * and ÷ or & and > applies them as > monads or dyads as required. > > Externally, I think it represents quaternions as arrays of quadruples, > although it is > said to use Cayley-Dickson internally. Items with fewer than 4 elements > are extended > with zeros. > > So, for example, copying and pasting from the workspace's description of H, > 1 2 3 4 × H 5 6 7 8 ⍝ Model multiply > ¯60 12 30 24 > > cf my attempt at quaternion multiply, where I assume Cayley-Dickson > construction > externally (as reported in my email to Jchat in the Quaternions thread > on 2 November) > > 1j2 3j4 qmult 5j6 7j8 > _60j12 30j24 > > This seems to me to present a useful intermediate way of overloading > primitives > with a quaternion-type without burdening the J implementation; whether one > really needs × H rather than qmult or some such named verb - I don't > know! I suppose you only need to remember the one adverb H rather than a > whole bundle of verb names. > > I'll have a look at adding an H adverb to my small suite of quaternion > verbs. > > Cheers, > > Mike > > > > > On 04/11/2018 00:49, bill lam wrote: > > J has limited resources, I think it is better to prioritize implementation > > of bit boolean over quaternions. Just my 2 cents. > > > > On Sun, Nov 4, 2018, 8:41 AM Don Guinn <[email protected] wrote: > > > >> Thank you for your comments. What I did was strictly replace verbs with a > >> named verb with the same rank as the primitive and also defined an inverse > >> making them functionally equivalent. So modifiers treat them just like the > >> primitive, except for fit (!.) and any optimization. All rules for tacit > >> and modifiers still apply. I tested those statements you mentioned and they > >> seem to work properly. Since they are named verbs, including (*), J cannot > >> know that it is supposed to be multiplication or whatever. So optimization > >> you mentioned in J is not done. And it is not necessary to worry about > >> tacit and other modifier considerations. > >> > >> Yes, if optimization is done before the type of noun is encountered, > >> particularly multiplication, then it would be a real problem. > >> > >> I guess that for now at least, the best approach for me is to name the > >> verbs and use them instead of the primitives. It is not hard to enter a > >> statement, replace the primitive verbs with the appropriate named verbs, > >> then execute the modified statement. And in some other possible things to > >> look into may have even more restrictions than quaternions, where even > >> addition may not communicate. > >> > >> But it is nice to be able to enter regular J statements and have them > >> support quaternions. > >> ---------------------------------------------------------------------- > >> For information about J forums see http://www.jsoftware.com/forums.htm > > ---------------------------------------------------------------------- > > For information about J forums see http://www.jsoftware.com/forums.htm > > > --- > This email has been checked for viruses by Avast antivirus software. > https://www.avast.com/antivirus > > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
