$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
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.