## Glas :## Re: [glas] norms and inner products for vectors of matrices |

**From:** Matthias Troyer (*troyer_at_[hidden]*)

**Date:** 2006-01-17 08:56:03

**Next message:**Russell Smiley: "Re: [glas] norms and inner products for vectors of matrices"**Previous message:**Andrew Lumsdaine: "Re: [glas] norms and inner products for vectors of matrices"**In reply to:**Andrew Lumsdaine: "Re: [glas] norms and inner products for vectors of matrices"**Next in thread:**Russell Smiley: "Re: [glas] norms and inner products for vectors of matrices"

I fully agree with Andrew and would like to propose that an operator*

for vector< vector< double > > should not be defined by default. The

users can always define the appropriate operator* for these types if

they need them. The library should define an operator* only where it

makes clear mathematical sense.

Matthias

On Jan 17, 2006, at 2:51 PM, Andrew Lumsdaine wrote:

> I think the answer is: "it depends."

>

> In a generic library, the operator * is defined between two concepts

> for which multiplication makes sense, i.e., a scalar times a scalar,

> a scalar times a member of a vector space, a linear operator times a

> member of a vector space.

>

> So, if you have some particular types, the meaning of the operator *

> between those types depends on the manner in which those types model

> the concepts for which * is defined.

>

> For instance, a vector<vector<double>> could be a row matrix, a

> column matrix, a diagonal matrix, a banded matrix, etc. Each of

> these different interpretations of that type (different ways the type

> can model the concept) will have different interpretations of the

> multiply operator.

>

> I think it is very important to keep the mathematical concepts and

> the concrete implementations distinct from each other.

>

> On Jan 17, 2006, at 4:15 AM, Karl Meerbergen wrote:

>

>> Hi,

>>

>> Here is a question about nested vectors.

>>

>> Suppose I have

>> vector< vector< double > > v ;

>> vector< double > w ;

>> double d ;

>>

>> d*v : scalar times vector;

>> trans(w)*w: dot product of vector of vector with vector of vector:

>> sum_i

>> trans(w[i])*w[i]

>> trans(v)*v: dot product of vector with vector: sum_i v[i]*v[i]

>>

>> How should trans(v)*w be interpreted?

>> * result is a vector<double> which is the sum: sum_i v[i]*w[i] ?

>> * result is a vector<double> with element i being: trans(v)*w[i] ?

>>

>> Best,

>>

>> Karl

>>

>> _______________________________________________

>> glas mailing list

>> glas_at_[hidden]

>> http://lists.boost.org/mailman/listinfo.cgi/glas

>

> _______________________________________________

> glas mailing list

> glas_at_[hidden]

> http://lists.boost.org/mailman/listinfo.cgi/glas

**Next message:**Russell Smiley: "Re: [glas] norms and inner products for vectors of matrices"**Previous message:**Andrew Lumsdaine: "Re: [glas] norms and inner products for vectors of matrices"**In reply to:**Andrew Lumsdaine: "Re: [glas] norms and inner products for vectors of matrices"**Next in thread:**Russell Smiley: "Re: [glas] norms and inner products for vectors of matrices"