#include #include #include #include #include #include #include #include #include #include #include #include "expm.hpp" using namespace boost::numeric::ublas; using namespace std; int main(void) { matrix > mat(3,3); matrix > gen(3,3),temp(3,3); // Generator of rotaion around z aix in group theory complex img = std::complex(0,1); gen(0,0) = 0 ; gen(0,1) = -img; gen(0,2) = 0; gen(1,0) = img; gen(1,1) = 0 ; gen(1,2) = 0; gen(2,0) = 0 ; gen(2,1) = 0 ; gen(2,2) = 0; double theta = 1.5; mat = img * theta * gen; cout<< "Rotation Matrix default : "<< expm_pad(mat) <<"\n\n"; cout<< "Rotation Matrix p = 1 : "<< expm_pad(mat,1,1) <<"\n\n"; cout<< "Rotation Matrix p = 2 : "<< expm_pad(mat,1,6) <<"\n\n"; cout<< "Rotation Matrix p = 7: "<< expm_pad(mat,1,6) <<"\n\n"; cout<< "Rotation Matrix p = 10: "<< expm_pad(mat,1,10) <<"\n\n"; cout<< "Rotation Matrix t = 2: "<< expm_pad(mat,2.0) <<"\n\n"; temp = 2.0*mat; cout<< "Rotation Matrix H=2H : "<< expm_pad(temp) <<"\n\n"; cout<< "Rotation Matrix t = 3.1415: "<< expm_pad(mat,3.1415) <<"\n\n"; temp = 3.1415*mat; cout<< "Rotation Matrix H=3.1415H : "<< expm_pad(temp) <<"\n\n"; return 0; }