25#include "tnt_subscript.h"
54 typedef Subscript size_type;
63 Subscript lbound()
const {
return 1;}
73 void initialize(Subscript
N)
90#ifdef TNT_UNROLL_LOOPS
102 for (i=
N4; i<
N; i++)
111 void set(
const T&
val)
116#ifdef TNT_UNROLL_LOOPS
120 for (i=0; i<
N4; i+=4)
128 for (i=
N4; i<
N; i++)
159 const iterator begin()
const {
return v_;}
160 const iterator end()
const {
return v_ + n_; }
162 operator const T*
const() {
return v_; }
163 operator T*() {
return v_; }
174 Vector() : v_(0), vm1_(0), n_(0) {};
182 Vector(Subscript
N,
const T& value =
T()) : v_(0), vm1_(0), n_(0)
188 Vector(Subscript
N,
const T*
v) : v_(0), vm1_(0), n_(0)
194 Vector(Subscript
N,
char *s) : v_(0), vm1_(0), n_(0)
197 std::istringstream
ins(s);
210 if (n_ ==
N)
return *
this;
245 inline Subscript dim()
const
250 inline Subscript size()
const
258#ifdef TNT_BOUNDS_CHECK
267#ifdef TNT_BOUNDS_CHECK
276#ifdef TNT_BOUNDS_CHECK
285#ifdef TNT_BOUNDS_CHECK
312 for (Subscript i=0; i<
N; i++)
313 s <<
A[i] <<
" " <<
"\n";
320std::istream & operator>>(std::istream &s, Vector<T> &A)
327 if ( !(N == A.size() ))
333 for (Subscript i=0; i<N; i++)
344Vector<T> operator+(
const Vector<T> &A,
347 Subscript N = A.dim();
355 tmp[i] = A[i] + B[i];
361Vector<T> operator+=(Vector<T> &A,
364 Subscript N = A.dim();
377Vector<T> operator-(
const Vector<T> &A,
380 Subscript N = A.dim();
388 tmp[i] = A[i] - B[i];
394Vector<T> operator-=(Vector<T> &A,
397 Subscript N = A.dim();
413Vector<T> elementwise_mult(
const Vector<T> &A,
const Vector<T> &B)
415 Subscript N = A.dim();
423 tmp[i] = A[i] * B[i];
430double norm(
const Vector<T> &A)
432 Subscript N = A.dim();
435 for (
int i=0; i<N; i++)
436 sum += abs(A[i])*abs(A[i]);
443T dot_prod(
const Vector<T> &A,
const Vector<T> &B)
445 Subscript N = A.dim();
446 assert(N == B.dim());
458inline T dot_product(
const Vector<T> &A,
const Vector<T> &B)
460 return dot_prod(A, B);
465inline T operator*(
const Vector<T> &A,
468 return dot_prod(A,B);
473Vector<T> operator*(
const T &a,
const Vector<T> &A)
475 Subscript N = A.dim();
478 for (
int i=0; i<N; i++)
485inline Vector<T> operator*(
const Vector<T> &A,
const T& a)
Definition tnt_array1d.h:40
Definition tnt_vector.h:49
Definition tnt_array1d.h:36
double norm(const Matrix< T > &A)
Definition tnt_matrix.h:996