Go to the documentation of this file.00001
00002
00003 template<long l> class dcovector_small
00004 {
00005 public:
00006
00007
00008
00009 double array[l];
00010
00011
00012
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
00024
00025
00026 inline _dcovector to_dcovector() const;
00027
00028
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
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
00043 inline dcovector_small<l>& zero();
00044
00045
00046
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
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
00071 template<long L> inline friend dcovector_small<L> operator*(const double&, const dcovector_small<L>&);
00072 };
00073
00074
00075
00076
00077
00078
00079
00080 inline double operator/(const dcovec2&, const dcovec2&);
00081
00082
00083 inline dcovec2 rotate(const dcovec2&, const double&);
00084
00085
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
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&);