Bertfried, In addition to the limitations of the current Clifford algebra implementation, that you explained, there also seem (to my untrained eye) to be performance issues. Also I wanted to get a feel for the general Axiom design methodology by picking a specific issue.
The current implementation seems to calculate the product of terms every time it is required when a multiplication is called. From a performance point of view it would seem much more efficient to calculate a multiplication table in the constructor which would make individual multiplications much faster. The original author also had this thought as the following comment is in the code: -- The ei*ej products could instead be precomputed in -- a (2**n)**2 multiplication table. The entries in such a table (in the general Grassman case) would be quite complicated. Not just a single type but perhaps a sum of types with algebraic number multipliers. I think, if I were designing such a system using a conventional object oriented program then, I would create a class for the multiplication table and also a class for individual table entries. I don't know if that's how things are done in Axiom? I don't know enough about the mathematics but is seems to me that classes (domains) such as mutiplicationTable and multipicationTableEntry might have wider application for implementing other algebras? Here I am really going to show up the gaps in my mathematical education but, could these things link back to more fundamental structures, for example could there be an inheritance hierarchy like: ring field field which is a compound type compound type which can be defined by a multiplication table. clifford (Grassman) algebra Is there someone who defines the overall structure of Axiom at this level? What do you think would be the best approach to this? Martin _______________________________________________ Axiom-developer mailing list [email protected] http://lists.nongnu.org/mailman/listinfo/axiom-developer
