 Boost :

From: Deane Yang (deane_yang_at_[hidden])
Date: 2004-06-05 08:44:48

Perhaps it's my own bias, but I think an underutilized
concept is that of a dual vector space and the corresponding
contraction of a vector and a dual vector.

If you assume the vector space is R^n, then of course you
can identify the dual vector space with the original
vector space and the contraction as just being the inner product.
And since every vector space in a computer program is implemented
as R^n (or F^n, F a field), I think people always assume that
there is no point in designing an interface that expresses duality.

However, in many situations you gain additional protection against
mathematical and computation errors, if you treat vectors and dual
vectors as being in different vector spaces and constrain the operations
between them appropriately. I use this routinely in my hand calculations
when doing my research.

A simple example is the duality between position vectors and momentum
vectors in physics.

Any chance you would want to implement this, too?

David Abrahams wrote:
>
> MTL is aimed at linear algebra, whereas IIUC ublas is not.
>
> There's a lot more to what's in the current plan than I can lay out
> here, but the focus will be on support for different kinds of matrices
> with combinations of these aspects
>
> o Shape
> o Orientation
> o Symmetry
> o Sparsity
> o Blocking
> o Upper / Lower storage
> o Unit diagonal
> o Etc.
>
> and operations like:
>
> o scalar-vector (vector-scalar) multiplication
> o vector addition (and subtraction)
> o apply linear operator (left)
> o norm
> o inner product
> o triangular solve
> ...
>
> with expression templates, and of course, zero abstraction penalty ;-)
>