From: Toon Knapen (toon.knapen_at_[hidden])
Date: 2002-01-17 09:35:37


jhrwalter wrote:

> --- In boost_at_y..., Toon Knapen <toon.knapen_at_s...> wrote:
>
>>I noticed that in ublas 'a = 2 * b' works but 'a = b * 2' does
>>
> not ?!
>
> Meanwhile we've found two reasons for this restriction. First, as far
> as I know multiplication with a scalar is mathematically always
> defined as left multiplication for vectors and matrices.

theoretically scalar-matrix multiplication is commutative and thus a * M
== M * a.

> Next,
> multiplication is left associative in C++ (as Mathias told me ;-), so
> if we compare a = 2 * 2 * b to a = 2 * b * 2, the former is always
> guaranteed to need fewer operations.

I can understand your implementation issues and it's good to know now
that Matrix * scalar can not be done but one needs to do scalar * matrix
instead. I just took me fifteen minutes to find out and maybe it's a
good idea to put it in the docs.
e.g. in the mean time again I had the same trouble with division, I
tried M /a but to make it compile I redefined it as (1/a) * M : one just
needs to know.

Although I think in the long term, all mathematical correct expressions
should be supported but it is not highest priority.