CPPLapack
 All Classes Files Functions Variables Friends
dcovector_small.hpp
Go to the documentation of this file.
00001 //=============================================================================
00002 //! Samll Real Double-precision Column Vector Class
00003 template<long l> class dcovector_small
00004 {
00005 public:
00006   ///////////////////////////////////////////////
00007   /////////////////// objects ///////////////////
00008   ///////////////////////////////////////////////
00009   double array[l];
00010   
00011   ///////////////////////////////////////////////
00012   ///////////////// constructors ////////////////
00013   ///////////////////////////////////////////////
00014   inline dcovector_small();
00015   inline explicit dcovector_small(const dcovector&);
00016   inline dcovector_small(const double&);
00017   inline dcovector_small(const double&, const double&);
00018   inline dcovector_small(const double&, const double&, const double&);
00019   inline dcovector_small(const double&, const double&, const double&, const double&);
00020   inline ~dcovector_small();
00021   
00022   ///////////////////////////////////////////////
00023   ////////////////// functions //////////////////
00024   ///////////////////////////////////////////////
00025   //////// cast ////////
00026   inline _dcovector to_dcovector() const;
00027   
00028   //////// io ////////
00029   inline double& operator()(const long&);
00030   inline double  operator()(const long&) const;
00031   inline dcovector_small<l>& set(const long&, const double&);
00032   template<long _l> inline friend std::ostream& operator<<(std::ostream&, const dcovector_small<_l>&);
00033   inline void read(const char* filename);
00034   inline void write(const char* filename) const;
00035   
00036   //////// calc ////////
00037   template<long _l> inline friend drovector_small<_l> t(const dcovector_small<_l>&);
00038   template<long _l> inline friend double nrm2(const dcovector_small<_l>&);
00039   template<long _l> inline friend long idamax(const dcovector_small<_l>&);
00040   template<long _l> inline friend double damax(const dcovector_small<_l>&);
00041   
00042   //////// misc ////////
00043   inline dcovector_small<l>& zero();
00044   
00045   ///////////////////////////////////////////////
00046   ///////////// numerical operators /////////////
00047   ///////////////////////////////////////////////
00048   //////// = ////////
00049   template<long L> inline dcovector_small<L>& operator= (const  dcovector_small<L>&);
00050   //////// += ////////
00051   template<long L> inline friend dcovector_small<L>& operator+=(dcovector_small<L>&, const dcovector_small<L>&);
00052   //////// -= ////////
00053   template<long L> inline friend dcovector_small<L>& operator-=(dcovector_small<L>&, const dcovector_small<L>&);
00054   //////// *= ////////
00055   template<long L> inline friend dcovector_small<L>& operator*=(dcovector_small<L>&, const             double&);
00056   //////// /= ////////
00057   template<long L> inline friend dcovector_small<L>& operator/=(dcovector_small<L>&, const             double&);
00058   //////// unary ////////
00059   template<long L> inline friend const dcovector_small<L>& operator+(const dcovector_small<L>&);
00060   template<long L> inline friend dcovector_small<L> operator-(const dcovector_small<L>&);
00061   //////// + ////////
00062   template<long L> inline friend dcovector_small<L> operator+(const dcovector_small<L>&, const dcovector_small<L>&);
00063   //////// - ////////
00064   template<long L> inline friend dcovector_small<L> operator-(const dcovector_small<L>&, const dcovector_small<L>&);
00065   //////// * ////////
00066   template<long M, long N> inline friend dgematrix_small<M,N> operator*(const dcovector_small<M>&, const drovector_small<N>&);
00067   template<long L> inline friend dcovector_small<L> operator*(const dcovector_small<L>&, const             double&);
00068   //////// / ////////
00069   template<long L> inline friend dcovector_small<L> operator/(const dcovector_small<L>&, const             double&);
00070   //////// double ////////
00071   template<long L> inline friend dcovector_small<L> operator*(const             double&, const dcovector_small<L>&);
00072 };
00073 
00074 ///////////////////////////////////////////////////////////////////////////////
00075 ///////////////////////////////////////////////////////////////////////////////
00076 ///////////////////////////////////////////////////////////////////////////////
00077 
00078 //=============================================================================
00079 //////// dcovec2 ////////
00080 inline double  operator/(const dcovec2&, const dcovec2&);
00081 //inline dquater vr2q(const dcovec2&, const double&);
00082 //inline dquater vt2q(const dcovec2&, const double&);
00083 inline dcovec2 rotate(const dcovec2&, const double&);
00084 
00085 //////// dcovec3 ////////
00086 inline dcovec3 operator/(const dcovec3&, const dcovec3&);
00087 inline dcovec3 operator/=(dcovec3&, const dcovec3&);
00088 inline dquater vr2q(const dcovec3&, const double&);
00089 inline dquater vt2q(const dcovec3&, const double&);
00090 inline dcovec3 rotate(const dcovec3&, const dquater&);
00091 
00092 //////// dquater ////////
00093 inline dquater conj(const dquater&);
00094 inline dcovec3 imag(const dquater&);
00095 inline dquater inv(const dquater&);
00096 inline dquater operator*(const dquater&, const dquater&);
00097 inline dquater operator/(const dquater&, const dquater&);
00098 inline dquater operator*=(dquater&, const dquater&);
00099 inline dquater operator/=(dquater&, const dquater&);
00100 inline dcovec3 q2vt(const dquater&);
00101 inline dgemat3 q2m(const dquater&);
 All Classes Files Functions Variables Friends