int main () { // Define symmetric matrix PLMD::Matrix<double> mat1(3,3); PLMD::OFile out; out.open("output"); mat1(0,0)=1.0; mat1(0,1)=0.2; mat1(0,2)=0.3; mat1(1,0)=0.2; mat1(1,1)=0.2; mat1(1,2)=0.6; mat1(2,0)=0.3; mat1(2,1)=0.6; mat1(2,2)=0.4; // Test diagonalize std::vector<double> eigval(3); PLMD::Matrix<double> eigvec(3,3); diagMat( mat1, eigval, eigvec ); out<<"Eigenvalues "<<eigval[0]<<" "<<eigval[1]<<" "<<eigval[2]<<"\n"; out<<"Eigenvectors : \n"; for(unsigned i=0;i<3;++i){ out<<eigvec(i,0)<<" "<<eigvec(i,1)<<" "<<eigvec(i,2)<<"\n"; } // Test inverse out<<"Inverse : \n"; PLMD::Matrix<double> inverse(3,3); Invert( mat1, inverse ); for(unsigned i=0;i<3;++i){ for(unsigned j=0;j<3;++j) out<<inverse(i,j)<<" "; out<<"\n"; } // Test pseudoinverse out<<"Pseudoinverse : \n"; PLMD::Matrix<double> mat(3,2); mat(0,0)=0.1; mat(0,1)=0.2; mat(1,0)=0.3; mat(1,1)=0.5; mat(2,0)=0.4; mat(2,1)=0.6; PLMD::Matrix<double> pseu(2,3); pseudoInvert( mat, pseu ); for(unsigned i=0;i<pseu.nrows();++i){ for(unsigned j=0;j<pseu.ncols();++j) out<<" "<<pseu(i,j); out<<"\n"; } out.close(); return 0; }
void FileBase::test(){ PLMD::OFile pof; pof.open("ciao"); pof.printf("%s\n","test1"); pof.setLinePrefix("plumed: "); pof.printf("%s\n","test2"); pof.setLinePrefix(""); pof.addConstantField("x2").printField("x2",67.0); pof.printField("x1",10.0).printField("x3",20.12345678901234567890).printField(); pof.printField("x1",10.0).printField("x3",-1e70*20.12345678901234567890).printField(); pof.printField("x3",10.0).printField("x2",777.0).printField("x1",-1e70*20.12345678901234567890).printField(); pof.printField("x3",67.0).printField("x1",18.0).printField(); pof.close(); PLMD::IFile pif; std::string s; pif.open("ciao"); pif.getline(s); std::printf("%s\n",s.c_str()); pif.getline(s); std::printf("%s\n",s.c_str()); int x1,x2,x3; while(pif.scanField("x1",x1).scanField("x3",x2).scanField("x2",x3).scanField()){ std::cout<<"CHECK "<<x1<<" "<<x2<<" "<<x3<<"\n"; } pif.close(); }