// $Id: tvector.cc,v 1.2 2000-04-03 17:35:59 ansari Exp $ // C.Magneville 04/99 #include "machdefs.h" #include #include "pexceptions.h" #include "tvector.h" //////////////////////////////////////////////////////////////// //**** Createur, Destructeur template TVector::TVector() : TMatrix() { } template TVector::TVector(uint_4 n, short lcv, short mm) // Constructeur : TMatrix((lcv == ColumnVector) ? n : 1,(lcv == ColumnVector) ? 1 : 0, mm) { if (lcv == ColumnVector) veceli_ = marowi_; else veceli_ = macoli_; } template TVector::TVector(const TVector& a) // Constructeur par copie (partage si "a" temporaire). : TMatrix(a) { } template TVector::TVector(const TVector& a, bool share) // Constructeur par copie avec possibilite de forcer le partage ou non. : TMatrix(a, share) { } template TVector::TVector(const TArray& a) : TMatrix(a) { } template TVector::TVector(const TArray& a, bool share, short lcv, short mm ) : TMatrix(a, share, mm) { if (lcv == SameTypeVector) veceli_ = a.VectKA(); else { if (lcv == ColumnVector) veceli_ = marowi_; else veceli_ = macoli_; } } template TVector::~TVector() // Destructeur { } template void TVector::ReSize(uint_4 n, short lcv) { if( n == 0 ) throw(SzMismatchError("TVector::ReSize() n = 0 ")); uint_4 r,c; if (lcv == SameTypeVector) lcv = GetVectorType(); if (lcv == ColumnVector) { r = n; c = 1; } else { c = n; r = 1; } TMatrix::ReSize(r,c); } template void TVector::Realloc(uint_4 n, short lcv, bool force) { if( n == 0 ) throw(SzMismatchError("TVector::Realloc() n = 0 ")); uint_4 r,c; if (lcv == SameTypeVector) lcv = GetVectorType(); if (lcv == ColumnVector) { r = n; c = 1; } else { c = n; r = 1; } TMatrix::Realloc(r,c,SameMemoryMapping,force); } // $CHECK$ Reza 03/2000 Doit-on declarer cette methode const ? template TVector TVector::operator () (Range relt) const { Range rr, cr; if (GetVectorType() == ColumnVector ) rr = relt; else cr = relt; TMatrix const & mtx = (*this); TVector sv( mtx(rr, cr) , true, GetVectorType(), GetMemoryMapping() ); sv.SetTemp(true); return(sv); } template T TVector::Norm2() const { T ret = 0; for(uint_8 k=0; k #pragma define_template TVector #pragma define_template TVector #pragma define_template TVector #pragma define_template TVector #pragma define_template TVector< complex > #pragma define_template TVector< complex > #endif #if defined(ANSI_TEMPLATES) || defined(GNU_TEMPLATES) template class TVector; template class TVector; template class TVector; template class TVector; template class TVector; template class TVector< complex >; template class TVector< complex >; #endif