#include <map>
#include <vector>
#include <float.h>
#include <math.h>
Go to the source code of this file.
Compounds | |
class | smatrix::coefRef |
class | smatrix::const_svector_ref |
class | smatrix |
class | smatrix::vector_map |
class | smatrix::svector |
class | smatrix::svector_ref |
class | smIdentity |
Typedefs | |
typedef pair< size_t, size_t > | rng |
Functions | |
template<class t> void | addEq (t &a, const t &b, bool bNeg) |
template<class t> void | CalcEpsilon (t &maxCoef, t &epsilon, const t &d) |
template<class t> t | abs (const t &x) |
template<class t> t | max (const t &a, const t &b) |
template<class t> t | min (const t &a, const t &b) |
template<class ta, class tb> ta & | svAssign (ta &a, const tb &b) |
template<class ta, class tb> ta & | svAddEq (ta &a, const tb &b, bool bNegate) |
template<class t> smatrix< t > | operator * (const t &d, const smatrix< t > &m) |
template<class t> t | det (const smatrix< t > &m, bool bWithPartialPivot=true) |
template<class t> ostream & | operator<< (ostream &os, const smatrix< t >::svector &v) |
template<class t> ostream & | operator<< (ostream &os, const smatrix< t >::const_svector_ref &v) |
template<class t> ostream & | operator<< (ostream &os, const smatrix< t > &m) |
template<class t> t | Residual (const smatrix< t > &a, const smatrix< t > &b) |
void | CalcEpsilon (double &maxCoef, double &epsilon, const double &d) |
|
Definition at line 14 of file Smatrix.hpp. Referenced by smatrix::BackElim(), TLUDecomp::Decompose(), smatrix::FwdElim(), TLUDecomp::L(), TLUDecomp::U(), smatrix::col(), operator<<(), and smatrix::row().
|
|
Definition at line 1114 of file Smatrix.hpp. Referenced by smatrix::svector_ref::CalcEpsilon(), smatrix::svector::CalcEpsilon(), smatrix::RecalcMaxCoef(), smatrix::insert(), and smatrix::coefRef::operator=().
|
|
|
|
Definition at line 1109 of file Smatrix.hpp. 01110 { 01111 return((a - b).maxCoef); 01112 } |
|
Definition at line 10 of file Smatrix.hpp. Referenced by Vector4D::Abs(), JVector3D::Abs(), TLUDecomp::Decompose(), smatrix::FwdElim(), smatrix::GetDiag(), smatrix::Pivot(), JVector2D::ToRadians(), Vector4D::ToRadians(), JVector3D::ToRadians(), smatrix::insert(), and smatrix::coefRef::operator=().
00010 { return(x < 0 ? -x : x); } |
|
Definition at line 6 of file Smatrix.hpp. Referenced by svAddEq(), and smatrix::svMultiply().
00007 { if(bNeg) a -= b; else a += b; } |
|
Definition at line 1061 of file Smatrix.hpp. 01062 { 01063 smatrix<t> c(m); 01064 return(c.det(bWithPartialPivot)); 01065 } |
|
Definition at line 11 of file Smatrix.hpp. 00011 { return(a > b ? a : b); } |
|
Definition at line 12 of file Smatrix.hpp. 00012 { return(a < b ? a : b); } |
|
Definition at line 1046 of file Smatrix.hpp. 01047 { 01048 return(m * d); 01049 } |
|
Definition at line 1089 of file Smatrix.hpp. 01090 { 01091 if(m.NZ > 0) 01092 { 01093 if(m.iDim < 20) 01094 { 01095 for(size_t i = 1; i <= m.iDim; i++) 01096 os << m(i, rng(1, m.jDim)) << endl; 01097 } 01098 else 01099 { 01100 os << m.iDim << " x " << m.jDim << ", NZ = " << m.NZ << endl; 01101 os << "Max coef = " << m.maxCoef << ", epsilon = " << m.epsilon << endl; 01102 } 01103 } 01104 else 01105 os << "<null>"; 01106 return(os); 01107 } |
|
Definition at line 1078 of file Smatrix.hpp. 01079 { 01080 for(size_t n = v.range.first; n <= v.range.second; n++) 01081 { 01082 os.width(smatrix<t>::PrintWidth); 01083 os.precision(smatrix<t>::PrintPrecision); 01084 os << v(n); 01085 } 01086 return(os); 01087 } |
|
Definition at line 1067 of file Smatrix.hpp. 01068 { 01069 for(size_t n = v.range.first; n <= v.range.second; n++) 01070 { 01071 os.width(smatrix<t>::PrintWidth); 01072 os.precision(smatrix<t>::PrintPrecision); 01073 os << v(n); 01074 } 01075 return(os); 01076 } |
|
Definition at line 51 of file Smatrix.hpp. Referenced by smatrix::const_svector_ref::operator+(), smatrix::svector_ref::operator+=(), smatrix::const_svector_ref::operator-(), and smatrix::svector_ref::operator-=().
00052 { 00053 ta::iterator ia = a.lower_bound(min(b.range.first, a.range.second + 1)); 00054 ta::iterator iaEnd = a.lower_bound(a.range.second + 1); 00055 tb::const_iterator ib = b.lower_bound(b.range.first); 00056 tb::const_iterator ibEnd = b.lower_bound(b.range.second + 1); 00057 00058 while(ib != ibEnd) 00059 { 00060 if(ia == iaEnd) 00061 { 00062 ta::iterator iaNew = a.insert(ia, b.Index(ib), bNegate ? -b.Coef(ib) : b.Coef(ib)); 00063 if(iaNew != ia) 00064 iaEnd = ia = ++iaNew; 00065 ib++; 00066 } 00067 else if(a.Index(ia) > b.Index(ib)) 00068 { 00069 ta::iterator iaNew = a.insert(ia, b.Index(ib), bNegate ? -b.Coef(ib) : b.Coef(ib)); 00070 if(iaNew != ia) 00071 ia = ++iaNew; 00072 ib++; 00073 } 00074 else if(a.Index(ia) < b.Index(ib)) 00075 ia++; 00076 else 00077 { 00078 addEq(a.Coef(ia), b.Coef(ib++), bNegate); 00079 a.CalcEpsilon(a.Coef(ia)); 00080 ia++; 00081 } 00082 } 00083 00084 a.range.first = min(a.range.first, b.range.first); 00085 a.range.second = max(a.range.second, b.range.second); 00086 00087 return(a); 00088 } |
|
Definition at line 18 of file Smatrix.hpp. Referenced by smatrix::const_svector_ref::operator+(), smatrix::const_svector_ref::operator-(), and smatrix::svector_ref::operator=().
00019 { 00020 a.range = b.range; 00021 ta::iterator ia = a.lower_bound(0); 00022 ta::iterator iaEnd = a.lower_bound((size_t)-1); 00023 tb::const_iterator ib = b.lower_bound(b.range.first); 00024 tb::const_iterator ibEnd = b.lower_bound(b.range.second + 1); 00025 while(ia != iaEnd || ib != ibEnd) 00026 { 00027 if(ia == iaEnd) 00028 { 00029 ta::iterator iaNew = a.insert(ia, b.Index(ib), b.Coef(ib)); 00030 if(iaNew != ia) 00031 iaEnd = ia = ++iaNew; 00032 ib++; 00033 } 00034 else if(ib == ibEnd) 00035 ia = a.erase(ia); 00036 else if(a.Index(ia) < b.Index(ib)) 00037 ia = a.erase(ia); 00038 else if(a.Index(ia) > b.Index(ib)) 00039 { 00040 ta::iterator iaNew = a.insert(ia, b.Index(ib), b.Coef(ib)); 00041 if(iaNew != ia) 00042 ia = ++iaNew; 00043 ib++; 00044 } 00045 else 00046 a.Coef(ia++) = b.Coef(ib++); 00047 } 00048 return(a); 00049 } |