#include "itbase.h"
using std::cout;
using std::endl;
using namespace itpp;
#ifdef NO_LAPACK
#define __THIS_PROGRAM_WILL_NOT_RUN__
#endif
#ifdef NO_CBLAS
#define __THIS_PROGRAM_WILL_NOT_RUN__
#endif
#ifdef __THIS_PROGRAM_WILL_NOT_RUN__
int main() { cout << "LAPACK and CBLAS is needed for this test program" << endl; }
#else
int main(void)
{
cout << "=================================" << endl;
cout << "Test of LU factorization routines" << endl;
cout << "=================================" << endl;
{
cout << "Real matrix" << endl;
mat X = randn(5,5);
mat L, U;
ivec p;
lu(X, L, U, p);
mat P=to_mat(permutation_matrix(p));
cout << "X = " << X << endl;
cout << "L = " << L << endl;
cout << "U = " << U << endl;
cout << "p = " << p << endl;
cout << "P = " << P << endl;
cout << "X = P^T * L * U = " << transpose(P)*L*U << endl;
}
{
cout << "Complex matrix" << endl;
cmat X = randn_c(5,5);
cmat L, U;
ivec p;
lu(X, L, U, p);
mat P=to_mat(permutation_matrix(p));
cout << "X = " << X << endl;
cout << "L = " << L << endl;
cout << "U = " << U << endl;
cout << "p = " << p << endl;
cout << "P = " << P << endl;
cout << "X = P^T * L * U = " << transpose(P)*L*U << endl;
}
return 0;
}
#endif
syntax highlighted by Code2HTML, v. 0.9.1