00001
00002
00016 #ifndef NUMLINALG_H__
00017 #define NUMLINALG_H__
00018
00019 #include <iosfwd>
00020 #include <vector>
00021
00022 namespace hippodraw {
00023
00026 namespace Numeric {
00027
00030 std::vector< double >
00031 operator + ( const std::vector< double >& x, const std::vector< double >& y );
00032
00035 std::vector< double >
00036 operator - ( const std::vector< double >& x, const std::vector< double >& y );
00037
00040 std::vector< double >
00041 operator - ( const std::vector< double >& y );
00042
00045 std::vector< std::vector< double > >
00046 operator + ( const std::vector< std::vector< double > >&A,
00047 const std::vector< std::vector< double > >&B );
00048
00051 std::vector< std::vector< double > >
00052 operator - ( const std::vector< std::vector< double > >&A,
00053 const std::vector< std::vector< double > >&B );
00054
00057 std::vector< double >
00058 operator * ( double a, const std::vector< double >& x );
00059
00062 std::vector< double >
00063 operator / ( const std::vector< double >& x, double a );
00064
00066 std::vector< std::vector< double > >
00067 operator * ( double a, const std::vector< std::vector< double > > & A ) ;
00068
00070 std::vector< std::vector< double> >
00071 operator / ( const std::vector< std::vector< double> > & A, double a );
00072
00074 std::vector< double >
00075 operator * ( const std::vector< std::vector< double > > & A,
00076 const std::vector< double > & x );
00077
00079 std::vector< double >
00080 operator * ( const std::vector< double > & x,
00081 const std::vector< std::vector< double > > & A );
00082
00084 std::vector< std::vector< double > >
00085 operator * ( const std::vector< std::vector< double > >&A,
00086 const std::vector< std::vector< double > >&B );
00087
00089 double innerProduct( const std::vector< double > & a,
00090 const std::vector< double > & b );
00091
00093 std::vector< std::vector< double > >
00094 outerProduct ( const std::vector< double > & a,
00095 const std::vector< double > & b );
00096
00098 double quadraticProduct( const std::vector< std::vector< double > > & A,
00099 const std::vector< double > x );
00100
00102 double norm( const std::vector< double > & a );
00103
00107 int cholFactor( std::vector< std::vector< double > > & A );
00108
00110 int cholBackSolve( const std::vector< std::vector< double > > & L,
00111 std::vector< double > & x,
00112 const std::vector< double > & b );
00113
00116 int invertMatrix( const std::vector< std::vector< double > > & A,
00117 std::vector< std::vector< double > > & Ainv );
00118
00120 int eye( std::vector< std::vector< double > > & M, int n );
00121
00123 int write( const std::vector< double > & x );
00124
00126 int write( const std::vector< std::vector< double > > & A );
00127
00129 int allocateMatrix( std::vector< std::vector< double > >& A, int m, int n );
00130
00132 int allocateVector( std::vector< double >& x, int n );
00133
00134 }
00135 }
00136
00137 #endif