# Glas :

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

From: Matthias Troyer (troyer_at_[hidden])
Date: 2006-01-17 08:56:03

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]

>
> _______________________________________________
> glas mailing list
> glas_at_[hidden]