Boost logo

Glas :

Re: [glas] dotc and dotu in glas

From: Karl Meerbergen (Karl.Meerbergen_at_[hidden])
Date: 2006-05-02 03:02:14

As far as I understand, Toon was talking about core syntax, not
is there a problem with dot(conj(x),y) for the euclidean inner product?


Matthias Troyer wrote:

>I want to strongly support Andrew's statement. If one wants only one
>dot product then the proper inner product for a complex Hilbert space
>needs to be chosen.
>On May 1, 2006, at 10:59 AM, Andrew Lumsdaine wrote:
>>Both are needed.
>>In the Iterative Template Library, both are required in order for the
>>solvers to work properly with complex vectors.
>>Mathematically, dotc() is a proper inner product for a complex Hilbert
>>space, dotu() is not. If a single dot() function is going to be used
>>for inner product, mathematically it must be equivalent to dotc().
>>Use cases are very important when creating interfaces for a generic
>>library. I would suggest taking a look at ITL and IETL to see how
>>generic linear concepts at this level of abstraction are used.
>>Toon Knapen wrote:
>>>I was wondering if we need an equivalent for both the dotc and
>>>dotu of
>>>BLAS in glas? I suggest to only have _one_ dot function (which is
>>>equivalent to the dot in blas for vectors of reals and which
>>>to dotu for vectors of complex values). To perform the equivalent of
>>>dotc one could then write dot(conj(x),y). This is IMHO clearer and
>>>expression-template mechanism will avoid that this compound
>>>will induce a performance penalty.
>>>I just added an equivalent to dotc but I plan to add the solution as
>>>described above, benchmark both and than remove the dotc equivalent
>>>afterwards (supposing the benchmark will not show any performance
>>>differences of both approaches).
>>>glas mailing list
>>glas mailing list
>glas mailing list

Karl Meerbergen
Free Field Technologies
Axis Park Louvain-la-Neuve
rue Emile Francqui, 1
B-1435 Mont-Saint Guibert - BELGIUM
Company Phone:  +32 10 45 12 26
Company Fax:    +32 10 45 46 26
Mobile Phone:   +32 474 26 66 59
Home Phone:     +32 2 306 38 10