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];