#ifndef TNVECTOR_H #define TNVECTOR_H #include <iostream> #include <sstream> #include <assert.h> template <class Type> class tnvector; // forward declaration #include "matrix.h" template <class Type> class tnvector; template <class Type> tnvector<Type> operator+(const tnvector<Type>&, const tnvector<Type>&); template <class Type> tnvector<Type> operator-(const tnvector<Type>&, const tnvector<Type>&); template <class Type> tnvector<Type> operator*(const matrix<Type>&, const tnvector<Type>&); template <class Type> Type operator*(const tnvector<Type>&, const tnvector<Type>&); template <class Type> tnvector<Type> operator*(Type, const tnvector<Type>&); template <class Type> Type norm1(tnvector<Type>); template <class Type> Type norm2(tnvector<Type>); template <class Type> istream& operator>>(istream&, tnvector<Type>&); template <class Type> ostream& operator<<(ostream&, const tnvector<Type>&); template <class Type> class tnvector { friend tnvector<Type> operator+<>(const tnvector<Type>&, const tnvector<Type>&); friend tnvector<Type> operator-<>(const tnvector<Type>&, const tnvector<Type>&); friend tnvector<Type> operator*<>(const matrix<Type>&, const tnvector<Type>&); friend Type operator*<>(const tnvector<Type>&, const tnvector<Type>&); friend tnvector<Type> operator*<>(Type, const tnvector<Type>&); friend Type norm1<>(tnvector<Type>); friend Type norm2<>(tnvector<Type>); friend istream& operator>><>(istream&, tnvector<Type>&); friend ostream& operator<<<>(ostream&, const tnvector<Type>&); protected: int n; Type *data; public: tnvector(); tnvector(int); tnvector(const tnvector<Type>&); tnvector(int, Type*); tnvector(int, char*); ~tnvector(); void resize(int); int dim(); void set(int, Type); const tnvector<Type>& operator=(const tnvector<Type>&); const tnvector<Type>& operator=(const char *dat); const tnvector<Type>& operator+=(const tnvector<Type>&); const tnvector<Type>& operator-=(const tnvector<Type>&); Type operator[](int i); int operator==(const tnvector<Type>&); int operator!=(const tnvector<Type>&); int approx_equal(const tnvector<Type>&); }; template <class Type> tnvector<Type> operator+(const tnvector<Type>&, const tnvector<Type>&); template <class Type> tnvector<Type> operator-(const tnvector<Type>&, const tnvector<Type>&); template <class Type> tnvector<Type> operator*(const matrix<Type>&, const tnvector<Type>&); template <class Type> Type operator*(const tnvector<Type>&, const tnvector<Type>&); template <class Type> tnvector<Type> operator*(Type, const tnvector<Type>&); template <class Type> Type norm1(tnvector<Type>); template <class Type> Type norm2(tnvector<Type>); template <class Type> istream& operator>>(istream&, tnvector<Type>&); template <class Type> ostream& operator<<(ostream&, const tnvector<Type>&); #include "tnvector.cc" #endif