$include_dir="/home/hyper-archives/ublas/include"; include("$include_dir/msg-header.inc") ?>
Subject: Re: [ublas] Questions about prod(prod(A,B),C)
From: Peter Schmitteckert (peter_at_[hidden])
Date: 2008-12-04 05:02:08
Dear Chris,
ublas_at_[hidden] schrieb:
> Thank you to Peter and Gunter for their replies.
> 
> I have a couple of follow up questions if I may...
> 
> Q1:
> 
>> // Is there a better way to pretty-print a matrix for debugging?
>> You may wrtie your own manipulator, e.g. to get octave  like syntax.
> 
> Yes, Matlab/octave-like output is what I am aiming for. Do you mean
> something like this the prettyprint(...) function that I have now
> written (see attached .cpp file)?
In principle yes, however, I'd write it using manipulators and standard ostreams,
or a simple function innhte spirit of
std::ostream& pretty_print( std::ostream &  Out, const matrix_type& A) { ....; return Out; }
Mixing C stdio and C++ streams in a programme might be a bad idea, there could be a problem
of synchronization of non-flushed data, I'm not sure.
> Q2:
> 
>> // Why does this next line fail?
>> //std::cout<<  "vecs4 * A4 = "<<  prod<matrix<std::complex<double>,
>> column_major>>(vecs4,A4)<<  std::endl;
>> std::cout<<  "vecs4 * A4 = "<<  prod<matrix<std::complex<double>,
>> column_major>>(herm(vecs4),A4)<<  std::endl;
> 
>> what is the compiler output?
> 
> I'm confused by this. I don't want to calculate vecs4^\dagger A4, but
> just the straight matrix product. Is that not possible??
Well, the sizes of the inner summation have to fit. Since a vector is a matrix
of type size() \times 1 you need to transpose it. Note, there is no memory moving involved
in this, it only tells the evaluation routine what it is supposed to do.
> Here is the compiler output:
Please excuse, I am refusing to look at Visual studio compiler output.
I've wasted too much time of my life doing this.
Best regards,
Peter