29 #ifndef __VECTORIMPL_HPP 30 #define __VECTORIMPL_HPP 53 memcpy( m_pV, V.
m_pV, m_N*
sizeof(T) );
66 if(m_N){
delete[] m_pV;}
69 if(N){m_pV =
new T[N];}
71 memset( m_pV, 0, N*
sizeof(T) );
77 memcpy( m_pV, pV, N*
sizeof(T) );
85 memcpy( m_pV, V.
m_pV, m_N*
sizeof(T) );
117 for (
size_t i=0; i<m_N; i++)
124 for (
size_t i=0; i<m_N; i++)
132 for (
size_t i=0; i<m_N; i++)
139 for (
size_t i=0; i<m_N; i++)
147 for (
size_t i=0; i<m_N; i++)
155 for (
size_t i=0; i<m_N; i++)
156 m_pV[i] += V.
m_pV[i]*scale;
163 for (
size_t i=0; i<m_N; i++)
164 m_pV[i] -= V.
m_pV[i]*scale;
170 for (
size_t i=0; i<V1.
m_N; i++)
175 for (
size_t i=0; i<V1.
m_N; i++)
181 for (
size_t i=0; i<m_N; i++)
182 m_pV[i] += V.
m_pV[i];
190 for (
size_t i=0; i<m_N; i++)
200 for (
size_t i=0; i<m_N; i++)
201 V.
m_pV[i] = -m_pV[i];
208 for (
size_t i=0; i<m_N; i++)
209 m_pV[i] -= V.
m_pV[i];
217 for (
size_t i = 0; i<m_N; i++)
218 N += pow(m_pV[i], (T)Ln);
219 return pow(N, (T)1.0/Ln);
225 for (
size_t i = 0; i<m_N; i++)
232 for (
size_t i = 0; i<m_N; i++)
233 N += m_pV[i]*m_pV[i];
240 for (
size_t i=0; i<m_N; i++)
241 V0 += m_pV[i]*V.
m_pV[i];
249 FILE* fp = fopen( fileName ,
"rb" );
250 if( !fp )
return false;
251 bool ret =
read( fp );
258 FILE* fp = fopen( fileName ,
"wb" );
259 if( !fp )
return false;
260 bool ret =
write( fp );
268 if( fread( &d ,
sizeof(
int) , 1 , fp )!=1 )
return false;
270 if( fread( &(*
this)[0] ,
sizeof( T ) , d , fp )!=d )
return false;
276 if( fwrite( &m_N ,
sizeof(
int ) , 1 , fp )!=1 )
return false;
277 if( fwrite( &(*
this)[0] ,
sizeof( T ) , m_N , fp )!=m_N )
return false;
285 template<
class T,
int Dim>
291 template<
class T,
int Dim>
297 memcpy( m_pV, V.
m_pV, m_N*
sizeof(T)*Dim );
299 template<
class T,
int Dim>
306 template<
class T,
int Dim>
310 if(m_N){
delete[] m_pV;}
313 if(N){m_pV =
new T[Dim*N];}
315 memset( m_pV, 0, N*
sizeof(T)*Dim );
317 template<
class T,
int Dim>
321 memcpy( m_pV, pV, N*
sizeof(T)*Dim );
323 template<
class T,
int Dim>
325 template<
class T,
int Dim>
329 memcpy( m_pV, V.
m_pV, m_N*
sizeof(T)*Dim );
332 template<
class T,
int Dim>
334 template<
class T,
int Dim>
336 template<
class T,
int Dim>
342 template<
class T,
int Dim>
347 template<
class T,
int Dim>
352 template<
class T,
int Dim>
357 template<
class T,
int Dim>
361 for (
size_t i=0; i<m_N*Dim; i++)
365 template<
class T,
int Dim>
368 for (
size_t i=0; i<m_N*Dim; i++)
372 template<
class T,
int Dim>
376 for (
size_t i=0; i<m_N*Dim; i++)
380 template<
class T,
int Dim>
383 for (
size_t i=0; i<m_N*Dim; i++)
387 template<
class T,
int Dim>
391 for (
size_t i=0; i<m_N*Dim; i++)
396 template<
class T,
int Dim>
399 for (
size_t i=0; i<m_N*Dim; i++)
400 m_pV[i] += V.
m_pV[i]*scale;
404 template<
class T,
int Dim>
407 for (
size_t i=0; i<m_N*Dim; i++)
408 m_pV[i] -= V.
m_pV[i]*scale;
412 template<
class T,
int Dim>
414 for (
size_t i=0; i<V1.
m_N*Dim; i++)
417 template<
class T,
int Dim>
419 for (
size_t i=0; i<V1.
m_N*Dim; i++)
422 template<
class T,
int Dim>
425 for (
size_t i=0; i<m_N*Dim; i++)
426 m_pV[i] += V.
m_pV[i];
430 template<
class T,
int Dim>
434 for (
size_t i=0; i<m_N*Dim; i++)
439 template<
class T,
int Dim>
444 for (
size_t i=0; i<m_N*Dim; i++)
445 V.
m_pV[i] = -m_pV[i];
449 template<
class T,
int Dim>
452 for (
size_t i=0; i<m_N*Dim; i++)
453 m_pV[i] -= V.
m_pV[i];
457 template<
class T,
int Dim>
461 for (
size_t i = 0; i<m_N*Dim; i++)
462 N += pow(m_pV[i], (T)Ln);
463 return pow(N, (T)1.0/Ln);
465 template<
class T,
int Dim>
469 for (
size_t i = 0; i<m_N*3; i++)
472 template<
class T,
int Dim>
476 for (
size_t i = 0; i<m_N*Dim; i++)
477 N += m_pV[i]*m_pV[i];
480 template<
class T,
int Dim>
484 for (
size_t i=0; i<m_N*Dim; i++)
485 V0 += m_pV[i]*V.
m_pV[i];
NVector operator-() const
const T * operator[](size_t i) const
Vector & SubtractScaled(const Vector &V, const T &scale)
size_t Dimensions() const
NVector operator/(const T &A) const
static void Add(const NVector &V1, const T &scale1, const NVector &V2, const T &scale2, NVector &Out)
Vector operator*(const T &A) const
NVector & operator*=(const T &A)
NVector & operator-=(const NVector &V)
void read(std::istream &stream, Type &value)
Function for reading data from a stream.
Vector & operator+=(const Vector &V)
NVector operator*(const T &A) const
NVector & AddScaled(const NVector &V, const T &scale)
NVector & SubtractScaled(const NVector &V, const T &scale)
const T & operator[](size_t i) const
const T * operator()(size_t i) const
size_t Dimensions() const
Vector & operator-=(const Vector &V)
Vector operator/(const T &A) const
T Dot(const Vector &V) const
Vector operator+(const Vector &V) const
bool write(FILE *fp) const
NVector & operator+=(const NVector &V)
static void Add(const Vector &V1, const T &scale1, const Vector &V2, const T &scale2, Vector &Out)
Vector & operator=(const Vector &V)
Vector & operator/=(const T &A)
T Dot(const NVector &V) const
void write(std::ostream &stream, Type value)
Function for writing data to a stream.
Vector & operator*=(const T &A)
NVector operator+(const NVector &V) const
NVector & operator/=(const T &A)
Vector & AddScaled(const Vector &V, const T &scale)
const T & operator()(size_t i) const
NVector & operator=(const NVector &V)