Hello,
i am really disappointed of me. I'm working about 8 days now and spent over 50 hours of debug time but i cannot find the error. My program computes some matrix. I post my whole class here and would be very very very thankful if anybode could tell me where my problem is...
the very strange thing is that the lapack routine dormqr_ changes the value of my vector p_col (see below) without any reason... p_col has nothing to do with dormqr_ !
If you compile you will see the different values before and after the call of dormqr...
I really tried everything! I even implemented my whole class without references but only with local copies and each time i created new vectors but every time some other vector changes his value...
I don't know what to do any further...this is the first time in my life i don't know how to go on....debugging doesn't helped me...nothing.
Thanks a lot for ANY help.
[code]
Spai::Spai() : epsilon(0.0000000001)
{
// std::vector< double > A;
// A.push_back(1.0);
// A.push_back(0.0);
// A.push_back(-2.0);
// A.push_back(0.0);
// A.push_back(0.0);
//
// A.push_back(0.0);
// A.push_back(3.0);
// A.push_back(0.0);
// A.push_back(0.0);
// A.push_back(-1.0);
//
// A.push_back(0.0);
// A.push_back(0.0);
// A.push_back(1.0);
// A.push_back(3.0);
// A.push_back(0.0);
//
// A.push_back(2.0);
// A.push_back(0.0);
// A.push_back(0.0);
// A.push_back(1.0);
// A.push_back(0.0);
//
// A.push_back(1.0);
// A.push_back(0.0);
// A.push_back(1.0);
// A.push_back(0.0);
// A.push_back(5.0);
//
//
// std::vector< double > P;
// P.push_back(1.0);
// P.push_back(0.0);
// P.push_back(1.0);
// P.push_back(0.0);
// P.push_back(0.0);
//
// P.push_back(0.0);
// P.push_back(1.0);
// P.push_back(0.0);
// P.push_back(0.0);
// P.push_back(1.0);
//
// P.push_back(0.0);
// P.push_back(0.0);
// P.push_back(1.0);
// P.push_back(1.0);
// P.push_back(0.0);
//
// P.push_back(1.0);
// P.push_back(0.0);
// P.push_back(0.0);
// P.push_back(1.0);
// P.push_back(0.0);
//
// P.push_back(1.0);
// P.push_back(0.0);
// P.push_back(1.0);
// P.push_back(0.0);
// P.push_back(1.0);
//
// std::vector< double > A;
// A.push_back(2.0);
// A.push_back(0.0);
// A.push_back(0.0);
// A.push_back(6.0);
//
// A.push_back(1.0);
// A.push_back(3.0);
// A.push_back(0.0);
// A.push_back(0.0);
//
// A.push_back(0.0);
// A.push_back(0.0);
// A.push_back(4.0);
// A.push_back(0.0);
//
// A.push_back(0.0);
// A.push_back(3.0);
// A.push_back(0.0);
// A.push_back(1.0);
//
//
// std::vector< double > P;
// P.push_back(1.0);
// P.push_back(0.0);
// P.push_back(0.0);
// P.push_back(1.0);
//
// P.push_back(1.0);
// P.push_back(1.0);
// P.push_back(0.0);
// P.push_back(0.0);
//
// P.push_back(0.0);
// P.push_back(0.0);
// P.push_back(1.0);
// P.push_back(0.0);
//
// P.push_back(0.0);
// P.push_back(1.0);
// P.push_back(0.0);
// P.push_back(1.0);
/*
std::vector< double > A;
A.push_back(3.0);
A.push_back(0.0);
A.push_back(0.0);
A.push_back(0.0);
A.push_back(0.0);
A.push_back(-2.0);
A.push_back(0.0);
A.push_back(4.0);
A.push_back(-6.5);
std::vector< double > P;
P.push_back(1.0);
P.push_back(0.0);
P.push_back(0.0);
P.push_back(0.0);
P.push_back(0.0);
P.push_back(1.0);
P.push_back(0.0);
P.push_back(1.0);
P.push_back(1.0);
*/
std::vector< double > A;
A.push_back(0.0);
A.push_back(0.0);
A.push_back(1.0);
A.push_back(0.0);
A.push_back(0.0);
A.push_back(3.0);
A.push_back(-4.0);
A.push_back(0.0);
A.push_back(2.0);
A.push_back(-7.5);
A.push_back(0.0);
A.push_back(0.0);
A.push_back(0.0);
A.push_back(3.0);
A.push_back(6.0);
A.push_back(0.0);
A.push_back(0.0);
A.push_back(0.0);
A.push_back(2.0);
A.push_back(-2.0);
A.push_back(0.0);
A.push_back(0.0);
A.push_back(2.5);
A.push_back(0.0);
A.push_back(1.0);
A.push_back(0.0);
A.push_back(0.0);
A.push_back(0.0);
A.push_back(1.0);
A.push_back(0.0);
A.push_back(0.0);
A.push_back(0.0);
A.push_back(0.0);
A.push_back(0.0);
A.push_back(0.0);
A.push_back(6.0);
std::vector< double > P;
P.push_back(0.0);
P.push_back(0.0);
P.push_back(1.0);
P.push_back(0.0);
P.push_back(0.0);
P.push_back(1.0);
P.push_back(1.0);
P.push_back(0.0);
P.push_back(1.0);
P.push_back(1.0);
P.push_back(0.0);
P.push_back(0.0);
P.push_back(0.0);
P.push_back(1.0);
P.push_back(1.0);
P.push_back(0.0);
P.push_back(0.0);
P.push_back(0.0);
P.push_back(1.0);
P.push_back(1.0);
P.push_back(0.0);
P.push_back(0.0);
P.push_back(1.0);
P.push_back(0.0);
P.push_back(1.0);
P.push_back(0.0);
P.push_back(0.0);
P.push_back(0.0);
P.push_back(1.0);
P.push_back(0.0);
P.push_back(0.0);
P.push_back(0.0);
P.push_back(0.0);
P.push_back(0.0);
P.push_back(0.0);
P.push_back(1.0);
int n = 6;
std::vector<double> M = Spai_Algorithm(A, P, n);
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~Output of the preconditioner M ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
std::cout << "END: Preconditioner: " << std::endl;
std::vector<double>::iterator iter;
std::cout.setf(std::ios::floatfield); // scientific-Notation
std::cout.setf(std::ios::adjustfield, std::ios::right); // rechtsb

