00001 #include <cstdlib> 00002 #include <cmath> 00003 #include <iostream> 00004 #include <fstream> 00005 #include <TooN/TooN.h> 00006 #include <TooN/helpers.h> 00007 #include <TooN/gaussian_elimination.h> 00008 #include <tr1/random> 00009 00010 using namespace TooN; 00011 using namespace std; 00012 using namespace tr1; 00013 00014 00015 int main() 00016 { 00017 00018 unsigned int s; 00019 ifstream("/dev/urandom").read((char*)&s, 4); 00020 00021 std::tr1::mt19937 eng; 00022 std::tr1::uniform_real<double> rnd; 00023 eng.seed(s); 00024 Matrix<5,5> m(5,5); 00025 00026 for(int i=0; i< m.num_rows(); i++) 00027 for(int j=0; j< m.num_rows(); j++) 00028 m[i][j] = rnd(eng); 00029 00030 cout << m << endl; 00031 00032 Matrix<5,5> i; 00033 Identity(i); 00034 00035 Matrix<5,5> inv = gaussian_elimination(m, i); 00036 00037 Matrix<5,5> a = m*inv; 00038 00039 for(int i=0; i< m.num_rows(); i++) 00040 for(int j=0; j< m.num_rows(); j++) 00041 { 00042 if(round(a[i][j]) < 1e-10) 00043 a[i][j] = 0; 00044 } 00045 00046 cout << a; 00047 00048 00049 00050 }