00001
00006 #define __cplusplus__
00007 #ifndef __LINALG__
00008 #define __LINALG__
00009
00010 #include<iostream>
00011 #include<istream>
00012 #include<fstream>
00013 #include<string>
00014 #include<vector>
00015 #include<sstream>
00016 #include <cmath>
00017
00018 using namespace std;
00019
00020
00021 double Trace(vector<double> const & M);
00022
00024 void Cholesky(vector<double> const & M, vector<double> & L);
00025
00027 double Determinant(vector<double> const & L);
00029 void Matrix_invert(vector<double> const & M, vector<double> & M1);
00030
00032 void Matrix_mult(vector<double> const & A, vector<double> const & B, vector<double> & C);
00033
00035 void Matrix_Vec_mult( vector<double> const & A, vector<double> const & X, vector<double> & Y);
00036
00038 void Vec_add( vector<double> const & v1, vector<double> const & v2, vector<double> & v3);
00039
00041 void Vec_sub( vector<double> const & v1, vector<double> const & v2, vector<double> & v3);
00042
00044 void Vec_copy(vector<double> const & v1, vector<double> & v2);
00045
00047 void Matrix_transpose(vector<double> const & A, vector<double> & B );
00048
00050 void Matrix_print(vector<double> const & A );
00051
00052
00054 double Matrix_dist(vector<double> const & A, vector<double> const & B );
00056 double norm(vector<double> const & A);
00058 double norm2(vector<double> const & A);
00060 uint norm2(vector<uint> const & A);
00062 void Matrix_random(uint N, vector<double> & A );
00063
00065 void Matrix_setzero(uint N, vector<double> & A );
00066
00068 void Matrix_setid(uint N, vector<double> & A );
00069
00070
00071 #endif