This is a major rework of the code where we...
This is a major rework of the code where we...

This is a major rework of the code where we have changed how the vector
space is created and manipulated.  Previously, we had a series of macros
that defined three essentially identical vector spaces.  The reason for
this is that although the vector spaces were similar, they actually need
to access different vector space algebra from Python.  Namely, the inner
product on the space X may be different than on the space Z.  Now, in
order to store these operations, we created (referenced counted)
pointers inside the vector space and then initialized them on entry into
the code.  Since the set of pointers was different for each vector space
and the vector space is required to be a class with all static members,
we needed three different classes.  Now, we take a different approach
where we embed the information about the vector space operations inside
the vectors themselves.  This allows the creation of a single vector
space since the vectors themselves can differentiate what operations
they require.  Technically, this is slightly more memory heavy, but it's
so small it won't matter.  In addition, it is now possible to have
unsafe operations to occur.  For example, we could technically take the
inner product between a vector in the space X and a vector in the space
Y.  For now, we'll accept this.  Basically, this whole issue is a nuance
when hooking a statically typed language to a dynamic one.


OptimoJoe/Optizelle,OptimoJoe/Optizelle,OptimoJoe/Optizelle,OptimoJoe/Optizelle