versor
3.0
C++11 library for Geometric algebra

Methods for creating, combining, and navigating between geometric number types
All geometric entities are instantiations of the generic Multivector type. A Multivector is templated on an algebra and a basis.
Through strict typing, we are able to let the compiler sort out argument type deduction.
There is no inheritance implemented, and no introspection, it is useful to categorize the various types by their characteristics in the documentation – e.g. a Flat or Round – and to use static functions to evaluate them. For instance:
Note, that the library user is responsible for ensuring that the arguments are of the correct category.
It is sometimes useful to be able to determine a type relative to another type. For this the ::space typedef is a way to access other types within the algebra. For instance, given a vsr::cga::Vec one can instantiate a vsr::cga::Point