Printing multivectors
Printing a multivector is super easy. One way to do it is as follows.
local multivec = 2 - 7*e1^e3 + 2*e2^e1 + e2 - e1^e2^e3 print( "multivec = " .. tostring( multivec ) )
Printing the multivectors of GALua is simply a matter of converting them to a string, and then printing the string. In general, there are two routines supported by the GALua module that provide conversion between string values and multivector values.
local multivec = galua_api.from_string( "2 - 7*e1^e3 + 2*e2^e1 + e2 - e1^e2^e3" ) local multivec_str = galua_api.to_string( multivec ) print( "multivec = " .. multivec_str )
These functions are designed to be inverses of one another. That is, strings created by
galua_api.to_string(...)
should be consumable by galua_api.from_string(...)
.
As of this writing, there are some known bugs, but it works for the most part. (I know that's not
very reassuring. The bugs will get fixed.)
You must
be aware that the galua_api.from_string(...)
function does not take a string
interpreted as Lua code! Just what language is being interpreted by the galua_api.from_string(...)
function is covered in an up-coming tutorial. For now, it is safest to only convert
strings that are the basis vectors you have defined for your geometric algebra.
You should also be aware that the functionality provided by galua_api.to_string(...)
and galua_api.from_string(...)
is the same functionality being tapped
by GALua's overload of the built-in tostring(...)
function, as well as our function
call syntax overload of the GALua API table, as well as coercion of strings encountered in
mathematical expressions. The coercion process can be tapped directly by a use of calling
the GALua API table. That is, if a variable blah
holds the value of any Lua data-type, you may attempt
to convert it to a multivector as follows.
local multivec = galua_api( blah )
An exception will be thrown, and the program will halt at this location, if a failure to perform the coercion occurs.
Though currently experimental, you may want to be aware of a latex option for printing.
By calling galua_api.to_latex_string(...)
, you can generate a string for the
given multivector value that may be compiled by latex for type-setting purposes.
This feature is mainly useful in conjunction with the limited support for symbolic manipulation
in the underlying GA computation engine of GALua. The coverage of such support is beyond
the scope of these tutorials. However, if you would like to type-set any numerical multivector
value, (as apposed to an abstract variable multivector value), you may use galua_api.to_latex_string(...)
to do so.