TBCI Numerical high perf. C++ Library  2.8.0
Classes | Macros | Functions
vector.h File Reference
#include "tbci/bvector.h"
#include "tbci/vec_kern_unr_pref.h"
#include "tbci/vec_kern_special.h"
Include dependency graph for vector.h:

Go to the source code of this file.

Classes

class  Vector< T >
 
class  TVector< T >
 Temporary Base Class Idiom: Class TVector is used for temporary variables. More...
 
class  TSVector< T >
 
class  Matrix< T >
 
class  TMatrix< T >
 
class  TSMatrix< T >
 
class  F_Matrix< T >
 
class  F_TMatrix< T >
 Temporary Base Class (non referable!) (acc. More...
 
class  F_TSMatrix< T >
 Temporary object for scaled matrices. More...
 
class  Mat_Brack< T >
 
class  CRMatrix< T >
 C++ class for sparse matrices using compressed row storage. More...
 
class  CSCMatrix< T >
 exception class: Use MatErr from matrix.h More...
 
class  BdMatrix< T >
 The class BdMatrix is an implementation to store and do operations on sparse Matrices with a band structure. More...
 
class  Symm_BdMatrix< T >
 Matrix class with optimized Matrix-Vector multiplication for symmetrical Matrices. More...
 
class  TVector< T >
 Temporary Base Class Idiom: Class TVector is used for temporary variables. More...
 
class  TSVector< T >
 
class  Vector< T >
 

Macros

#define _SMP_TMPL2V(oper, st, en, a1, a2, a3, a4, a5)   do_##oper <T> (en-st, a1+st, a2+st)
 
#define _JOB_TMPL2V(oper, st, en, a1, a2, a3, a4, a5)   job_##oper <T>, en-st, a1+st, a2+st
 
#define _SMP_TMPL2C(oper, st, en, a1, a2, a3, a4, a5)   do_##oper <T> (en-st, a1+st, a2)
 
#define _JOB_TMPL2C(oper, st, en, a1, a2, a3, a4, a5)   job_##oper <T>, en-st, a1+st, &a2
 
#define _SMP_TMPL3VV(oper, st, en, a1, a2, a3, a4, a5)   do_##oper <T> (en-st, a1+st, a2+st, a3+st)
 
#define _JOB_TMPL3VV(oper, st, en, a1, a2, a3, a4, a5)   job_##oper <T>, en-st, a1+st, a2+st, a3+st
 
#define _SMP_TMPL3VC(oper, st, en, a1, a2, a3, a4, a5)   do_##oper <T> (en-st, a1+st, a2+st, a3)
 
#define _JOB_TMPL3VC(oper, st, en, a1, a2, a3, a4, a5)   job_##oper <T>, en-st, a1+st, a2+st, &a3
 
#define _SMP_TMPL3CC(oper, st, en, a1, a2, a3, a4, a5)   do_##oper <T> (en-st, a1+st, a2, a3)
 
#define _JOB_TMPL3CC(oper, st, en, a1, a2, a3, a4, a5)   job_##oper <T>, en-st, a1+st, &a2, &a3
 
#define _SMP_TMPL4V(oper, st, en, a1, a2, a3, a4, a5)   do_##oper <T> (en-st, a1+st, a2+st, a3+st, a4)
 
#define _JOB_TMPL4V(oper, st, en, a1, a2, a3, a4, a5)   job_##oper <T>, en-st, a1+st, a2+st, a3+st, &a4
 
#define _SMP_TMPL4C(oper, st, en, a1, a2, a3, a4, a5)   do_##oper <T> (en-st, a1+st, a2+st, a3, a4)
 
#define _JOB_TMPL4C(oper, st, en, a1, a2, a3, a4, a5)   job_##oper <T>, en-st, a1+st, a2+st, &a3, &a4
 
#define _SMP_TMPL5(oper, st, en, a1, a2, a3, a4, a5)   do_##oper <T> (en-st, a1+st, a2+st, a3+st, a4, a5)
 
#define _JOB_TMPL5(oper, st, en, a1, a2, a3, a4, a5)   job_##oper <T>, en-st, a1+st, a2+st, a3+st, &a4, &a5
 
#define STD_SMP_TEMPLATE(oper, dm, a1, a2, a3, a4, a5, SMP_TMPL, JOB_TMPL, p2, p3)
 Template for parallelized stuff (unary) We need the last argument(s) to uniquely handle cases, where it's a pointer into an array or just a number. More...
 
#define STD_SMP_TEMPLATE2V(oper, dm, a1, a2)   STD_SMP_TEMPLATE(oper, dm, a1, a2, NULL, NULL, NULL, _SMP_TMPL2V, _JOB_TMPL2V, PREFETCH_R_MANY(a2,2);,)
 
#define STD_SMP_TEMPLATE2C(oper, dm, a1, a2)   STD_SMP_TEMPLATE(oper, dm, a1, a2, NULL, NULL, NULL, _SMP_TMPL2C, _JOB_TMPL2C,,)
 
#define STD_SMP_TEMPLATE3VV(oper, dm, a1, a2, a3)   STD_SMP_TEMPLATE(oper, dm, a1, a2, a3, NULL, NULL, _SMP_TMPL3VV, _JOB_TMPL3VV, PREFETCH_R_MANY(a2,2);, PREFETCH_R_MANY(a3,2);)
 
#define STD_SMP_TEMPLATE3VC(oper, dm, a1, a2, a3)   STD_SMP_TEMPLATE(oper, dm, a1, a2, a3, NULL, NULL, _SMP_TMPL3VC, _JOB_TMPL3VC, PREFETCH_R_MANY(a2,2);,)
 
#define STD_SMP_TEMPLATE3CC(oper, dm, a1, a2, a3)   STD_SMP_TEMPLATE(oper, dm, a1, a2, a3, NULL, NULL, _SMP_TMPL3CC, _JOB_TMPL3CC,,)
 
#define STD_SMP_TEMPLATE4V(oper, dm, a1, a2, a3, a4)   STD_SMP_TEMPLATE(oper, dm, a1, a2, a3, a4, NULL, _SMP_TMPL4V, _JOB_TMPL4V, PREFETCH_R_MANY(a2,2);,)
 
#define STD_SMP_TEMPLATE4C(oper, dm, a1, a2, a3, a4)   STD_SMP_TEMPLATE(oper, dm, a1, a2, a3, a4, NULL, _SMP_TMPL4C, _JOB_TMPL4C, PREFETCH_R_MANY(a2,2);,)
 
#define STD_SMP_TEMPLATE5(oper, dm, a1, a2, a3, a4, a5)   STD_SMP_TEMPLATE(oper, dm, a1, a2, a3, a4, a5, _SMP_TMPL5, _JOB_TMPL5, PREFETCH_R_MANY(a2,2);, PREFETCH_R_MANY(a3,2);)
 
#define COST_VECFABSSQR(d)   (d*(COST_UNIT_LOAD+COST_MULT+COST_ADD+COST_LOOP))
 
#define COST_VECSCALAR(d)   (d*(2*COST_UNIT_LOAD+COST_MULT+COST_ADD+COST_LOOP))
 

Functions

template<typename T >
STD__ ostream & operator<< (STD__ ostream &os, const TVector< T > &tv)
 
template<typename T >
void job_vec_vec_add (struct thr_ctrl *tc)
 vec = vec + vec; More...
 
template<typename T >
void job_vec_vec_sub (struct thr_ctrl *tc)
 vec = vec - vec; More...
 
template<typename T >
void job_vec_add_vec (struct thr_ctrl *tc)
 vec += vec; More...
 
template<typename T >
void job_vec_sub_vec (struct thr_ctrl *tc)
 vec -= vec; More...
 
template<typename T >
void job_vec_sub_vec_inv (struct thr_ctrl *tc)
 vec -= vec; vec = -vec; More...
 
template<typename T >
void job_vec_val_add (struct thr_ctrl *tc)
 vec = vec + val; More...
 
template<typename T >
void job_vec_val_sub (struct thr_ctrl *tc)
 vec = vec - val; More...
 
template<typename T >
void job_vec_val_mul (struct thr_ctrl *tc)
 vec = vec * val; More...
 
template<typename T >
void job_val_vec_mul (struct thr_ctrl *tc)
 vec = val * vec; More...
 
template<typename T >
void job_val_vec_add (struct thr_ctrl *tc)
 vec = val + vec; More...
 
template<typename T >
void job_val_vec_sub (struct thr_ctrl *tc)
 vec = val - vec; More...
 
template<typename T >
void job_val_vec_div (struct thr_ctrl *tc)
 vec = val / vec; More...
 
template<typename T >
void job_vec_add_val (struct thr_ctrl *tc)
 vec += val; More...
 
template<typename T >
void job_val_add_vec (struct thr_ctrl *tc)
 vec += val; More...
 
template<typename T >
void job_vec_sub_val (struct thr_ctrl *tc)
 vec -= val; More...
 
template<typename T >
void job_val_sub_vec (struct thr_ctrl *tc)
 vec -= val; vec = -vec; More...
 
template<typename T >
void job_vec_mul_val (struct thr_ctrl *tc)
 vec *= val; More...
 
template<typename T >
void job_vec_div_val (struct thr_ctrl *tc)
 vec /= val; More...
 
template<typename T >
void job_val_div_vec (struct thr_ctrl *tc)
 vec = val/self; More...
 
template<typename T >
void job_vec_svc_add (struct thr_ctrl *tc)
 vec = vec + s*vec; More...
 
template<typename T >
void job_svc_vec_add (struct thr_ctrl *tc)
 vec = s*vec + vec; More...
 
template<typename T >
void job_svc_svc_add (struct thr_ctrl *tc)
 vec = s*vec + s*vec; More...
 
template<typename T >
void job_vec_svc_sub (struct thr_ctrl *tc)
 vec = vec - s*vec; More...
 
template<typename T >
void job_svc_vec_sub (struct thr_ctrl *tc)
 vec = s*vec - vec; More...
 
template<typename T >
void job_svc_svc_sub (struct thr_ctrl *tc)
 vec = s*vec - s*vec; More...
 
template<typename T >
void job_vec_add_svc (struct thr_ctrl *tc)
 vec += s*vec; More...
 
template<typename T >
void job_vec_sub_svc (struct thr_ctrl *tc)
 vec -= s*vec; More...
 
template<typename T >
void job_vec_sub_svc_inv (struct thr_ctrl *tc)
 vec -= s*vec; More...
 
template<typename T >
void job_svc_val_add (struct thr_ctrl *tc)
 vec = s*vec + val; More...
 
template<typename T >
void job_svc_val_sub (struct thr_ctrl *tc)
 vec = s*vec - val; More...
 
template<typename T >
void job_val_svc_add (struct thr_ctrl *tc)
 vec = val + s*vec; More...
 
template<typename T >
void job_val_svc_sub (struct thr_ctrl *tc)
 vec = val + s*vec; More...
 
template<typename T >
void job_val_svc_div (struct thr_ctrl *tc)
 vec = val / s*vec; More...
 
template<typename T >
const TVector< T > & operator+ (const T &a, const TVector< T > &b)
 TV = T + TV Transformed to TV += T. More...
 
template<typename T >
const TVector< T > & operator- (const T &a, const TVector< T > &b)
 TV = T - TV Transformed to -TV -= T. More...
 
template<typename T >
TSVector< Toperator* (const T &a, const TVector< T > &b)
 
template<typename T >
TSVector< Toperator/ (const T &a, TVector< T > b)
 
template<typename T >
TVector< T > & conj (TVector< T > &tv)
 
template<typename T >
TVector< T > & real (TVector< T > &tv)
 
template<typename T >
TVector< T > & imag (TVector< T > &tv)
 
template<typename T >
TVector< Tconj (const Vector< T > &v)
 
template<typename T >
TVector< Treal (const Vector< T > &v)
 
template<typename T >
TVector< Timag (const Vector< T > &v)
 
template<typename T >
double fabssqr (const Vector< T > &v)
 
template<typename T >
NAMESPACE_END NAMESPACE_CSTD double fabs (const TBCI__ Vector< T > &v)
 
template<typename T >
T abs (const TBCI__ Vector< T > &v)
 
template<typename T >
double fabs (TBCI__ TVector< T > tv)
 
template<typename T >
T abs (TBCI__ TVector< T > tv)
 
template<typename T >
const TSVector< T > & operator* (const T &f, const TSVector< T > &ts)
 
template<typename T >
TVector< Toperator+ (const T &v, const TSVector< T > &tsv)
 
template<typename T >
TVector< Toperator- (const T &v, const TSVector< T > &tsv)
 
template<typename T >
STD__ ostream & operator<< (STD__ ostream &os, const TSVector< T > &ts)
 
template<typename T >
double fabssqr (const TSVector< T > &ts)
 
template<typename T >
NAMESPACE_END NAMESPACE_CSTD double fabs (const TBCI__ TSVector< T > &ts)
 
template<typename T >
T abs (const TBCI__ TSVector< T > &ts)
 
template<typename T >
STD__ ostream & operator<< (STD__ ostream &os, const Vector< T > &v)
 
template<typename T >
void job_vec_dot (struct thr_ctrl *tc)
 
template<typename T >
T dot (const Vector< T > &a, const Vector< T > &b)
 
template<typename T >
void job_vec_mult (struct thr_ctrl *tc)
 
 HOTDECL (template< typename T > bool par_comp(const Vector< T > &v1, const Vector< T > &v2))
 
 HOTDECL (template< typename T > void par_copy(Vector< T > &v1, const Vector< T > &v2))
 
template<typename T >
bool par_comp (const Vector< T > &v1, TVector< T > v2)
 
template<typename T >
bool par_comp (TVector< T > v1, const Vector< T > &v2)
 
template<typename T >
bool par_comp (TVector< T > v1, TVector< T > v2)
 
template<typename T >
void par_fill (Vector< T > &vec, vec_fill_fn< T > fn, void *par)
 
template<typename T >
void job_vec_sum (struct thr_ctrl *tc)
 
template<typename T >
TVector< Toperator+ (const T &a, const Vector< T > &v)
 TV = T + V. More...
 
template<typename T >
TVector< Toperator- (const T &a, const Vector< T > &v)
 TV = T - V. More...
 
template<typename T >
TSVector< Toperator* (const T &a, const Vector< T > &b)
 
template<typename T >
TSVector< Toperator/ (const T &a, const Vector< T > &b)
 
template<typename T >
void job_vec_fabssqr (struct thr_ctrl *tc)
 
template<typename T >
double fabssqr (TVector< T > tv)
 

Detailed Description

header file templated classes TBCI::Vector, TBCI::TVector, TBCI::TSVector


Author
A M Bilgic
Kurt Garloff
Date
1/97

Definition in file vector.h.

Macro Definition Documentation

#define _JOB_TMPL2C (   oper,
  st,
  en,
  a1,
  a2,
  a3,
  a4,
  a5 
)    job_##oper <T>, en-st, a1+st, &a2

Definition at line 598 of file vector.h.

#define _JOB_TMPL2V (   oper,
  st,
  en,
  a1,
  a2,
  a3,
  a4,
  a5 
)    job_##oper <T>, en-st, a1+st, a2+st

Definition at line 596 of file vector.h.

#define _JOB_TMPL3CC (   oper,
  st,
  en,
  a1,
  a2,
  a3,
  a4,
  a5 
)    job_##oper <T>, en-st, a1+st, &a2, &a3

Definition at line 604 of file vector.h.

#define _JOB_TMPL3VC (   oper,
  st,
  en,
  a1,
  a2,
  a3,
  a4,
  a5 
)    job_##oper <T>, en-st, a1+st, a2+st, &a3

Definition at line 602 of file vector.h.

#define _JOB_TMPL3VV (   oper,
  st,
  en,
  a1,
  a2,
  a3,
  a4,
  a5 
)    job_##oper <T>, en-st, a1+st, a2+st, a3+st

Definition at line 600 of file vector.h.

#define _JOB_TMPL4C (   oper,
  st,
  en,
  a1,
  a2,
  a3,
  a4,
  a5 
)    job_##oper <T>, en-st, a1+st, a2+st, &a3, &a4

Definition at line 608 of file vector.h.

#define _JOB_TMPL4V (   oper,
  st,
  en,
  a1,
  a2,
  a3,
  a4,
  a5 
)    job_##oper <T>, en-st, a1+st, a2+st, a3+st, &a4

Definition at line 606 of file vector.h.

#define _JOB_TMPL5 (   oper,
  st,
  en,
  a1,
  a2,
  a3,
  a4,
  a5 
)    job_##oper <T>, en-st, a1+st, a2+st, a3+st, &a4, &a5

Definition at line 610 of file vector.h.

#define _SMP_TMPL2C (   oper,
  st,
  en,
  a1,
  a2,
  a3,
  a4,
  a5 
)    do_##oper <T> (en-st, a1+st, a2)

Definition at line 597 of file vector.h.

#define _SMP_TMPL2V (   oper,
  st,
  en,
  a1,
  a2,
  a3,
  a4,
  a5 
)    do_##oper <T> (en-st, a1+st, a2+st)

Definition at line 595 of file vector.h.

#define _SMP_TMPL3CC (   oper,
  st,
  en,
  a1,
  a2,
  a3,
  a4,
  a5 
)    do_##oper <T> (en-st, a1+st, a2, a3)

Definition at line 603 of file vector.h.

#define _SMP_TMPL3VC (   oper,
  st,
  en,
  a1,
  a2,
  a3,
  a4,
  a5 
)    do_##oper <T> (en-st, a1+st, a2+st, a3)

Definition at line 601 of file vector.h.

#define _SMP_TMPL3VV (   oper,
  st,
  en,
  a1,
  a2,
  a3,
  a4,
  a5 
)    do_##oper <T> (en-st, a1+st, a2+st, a3+st)

Definition at line 599 of file vector.h.

#define _SMP_TMPL4C (   oper,
  st,
  en,
  a1,
  a2,
  a3,
  a4,
  a5 
)    do_##oper <T> (en-st, a1+st, a2+st, a3, a4)

Definition at line 607 of file vector.h.

#define _SMP_TMPL4V (   oper,
  st,
  en,
  a1,
  a2,
  a3,
  a4,
  a5 
)    do_##oper <T> (en-st, a1+st, a2+st, a3+st, a4)

Definition at line 605 of file vector.h.

#define _SMP_TMPL5 (   oper,
  st,
  en,
  a1,
  a2,
  a3,
  a4,
  a5 
)    do_##oper <T> (en-st, a1+st, a2+st, a3+st, a4, a5)

Definition at line 609 of file vector.h.

#define COST_VECFABSSQR (   d)    (d*(COST_UNIT_LOAD+COST_MULT+COST_ADD+COST_LOOP))

Definition at line 2358 of file vector.h.

#define COST_VECSCALAR (   d)    (d*(2*COST_UNIT_LOAD+COST_MULT+COST_ADD+COST_LOOP))

Definition at line 2359 of file vector.h.

#define STD_SMP_TEMPLATE (   oper,
  dm,
  a1,
  a2,
  a3,
  a4,
  a5,
  SMP_TMPL,
  JOB_TMPL,
  p2,
  p3 
)
Value:
/* use some heuristic to decide for the num of threads */ \
const unsigned n_thr = threads_avail (dm / SMP_VECSLICE2); \
update_n_thr(n_thr); \
if (LIKELY(n_thr < 2)) { \
SMP_TMPL(oper, 0, dm, a1, a2, a3, a4, a5); \
} else { \
p2 \
p3 \
const unsigned long first = slice_offset(2, n_thr, dm, a1); \
unsigned long st, en = first; \
unsigned _t; \
/* smp_barrier(); */ \
/* Start threads */ \
for (_t = 0; _t < n_thr-1; ++_t) { \
st = en; en = slice_offset(_t+2, n_thr, dm, a1); \
thread_start (_t, JOB_TMPL(oper, st, en, a1, a2, a3, a4, a5), (void*)0); \
} \
/* The first slice is handled by the main thread */ \
SMP_TMPL(oper, 0UL, first, a1, a2, a3, a4, a5); \
/* sched_yield (); */ \
/* Wait for the end */ \
for (_t = 0; _t < n_thr-1; ++_t) \
thread_wait (_t); \
}
void thread_start(const int thr_no, thr_job_t job, const unsigned long sz,...)
Definition: smp.cc:988
for(REGISTER T *p1=c.vec,*p2=b.vec;p1< c.endvec;p1++, p2++)*p1
if(value==0) return 1
#define PREFETCH_W_MANY(addr, loc)
Definition: basics.h:765
#define threads_avail(x)
Definition: smp.h:322
void thread_wait(const int thr_no, struct job_output *out)
Definition: smp.cc:997
#define SMP_VECSLICE2
Definition: bvector.h:626
#define LIKELY(expr)
branch prediction note that we sometimes on purpose mark the unlikely possibility likely and vice ver...
Definition: basics.h:100

Template for parallelized stuff (unary) We need the last argument(s) to uniquely handle cases, where it's a pointer into an array or just a number.

Definition at line 617 of file vector.h.

#define STD_SMP_TEMPLATE2C (   oper,
  dm,
  a1,
  a2 
)    STD_SMP_TEMPLATE(oper, dm, a1, a2, NULL, NULL, NULL, _SMP_TMPL2C, _JOB_TMPL2C,,)
#define STD_SMP_TEMPLATE2V (   oper,
  dm,
  a1,
  a2 
)    STD_SMP_TEMPLATE(oper, dm, a1, a2, NULL, NULL, NULL, _SMP_TMPL2V, _JOB_TMPL2V, PREFETCH_R_MANY(a2,2);,)
#define STD_SMP_TEMPLATE3CC (   oper,
  dm,
  a1,
  a2,
  a3 
)    STD_SMP_TEMPLATE(oper, dm, a1, a2, a3, NULL, NULL, _SMP_TMPL3CC, _JOB_TMPL3CC,,)

Definition at line 652 of file vector.h.

#define STD_SMP_TEMPLATE3VC (   oper,
  dm,
  a1,
  a2,
  a3 
)    STD_SMP_TEMPLATE(oper, dm, a1, a2, a3, NULL, NULL, _SMP_TMPL3VC, _JOB_TMPL3VC, PREFETCH_R_MANY(a2,2);,)
#define STD_SMP_TEMPLATE3VV (   oper,
  dm,
  a1,
  a2,
  a3 
)    STD_SMP_TEMPLATE(oper, dm, a1, a2, a3, NULL, NULL, _SMP_TMPL3VV, _JOB_TMPL3VV, PREFETCH_R_MANY(a2,2);, PREFETCH_R_MANY(a3,2);)
#define STD_SMP_TEMPLATE4C (   oper,
  dm,
  a1,
  a2,
  a3,
  a4 
)    STD_SMP_TEMPLATE(oper, dm, a1, a2, a3, a4, NULL, _SMP_TMPL4C, _JOB_TMPL4C, PREFETCH_R_MANY(a2,2);,)
#define STD_SMP_TEMPLATE4V (   oper,
  dm,
  a1,
  a2,
  a3,
  a4 
)    STD_SMP_TEMPLATE(oper, dm, a1, a2, a3, a4, NULL, _SMP_TMPL4V, _JOB_TMPL4V, PREFETCH_R_MANY(a2,2);,)
#define STD_SMP_TEMPLATE5 (   oper,
  dm,
  a1,
  a2,
  a3,
  a4,
  a5 
)    STD_SMP_TEMPLATE(oper, dm, a1, a2, a3, a4, a5, _SMP_TMPL5, _JOB_TMPL5, PREFETCH_R_MANY(a2,2);, PREFETCH_R_MANY(a3,2);)

Function Documentation

template<typename T >
T abs ( const TBCI__ Vector< T > &  v)
inline

Definition at line 997 of file vector.h.

template<typename T >
T abs ( TBCI__ TVector< T tv)
inline

Definition at line 1011 of file vector.h.

References abs, TBCI__, and v.

template<typename T >
T abs ( const TBCI__ TSVector< T > &  ts)
inline

Definition at line 1493 of file vector.h.

template<typename T >
TVector<T>& conj ( TVector< T > &  tv)
inline
template<typename T >
TVector<T> conj ( const Vector< T > &  v)
inline

Definition at line 891 of file vector.h.

References std::conj(), CPLX__, i, REGISTER, TVector< T >::set(), TVector< T >::size(), and v.

template<typename T >
T dot ( const Vector< T > &  a,
const Vector< T > &  b 
)
inline
template<typename T >
NAMESPACE_END NAMESPACE_CSTD double fabs ( const TBCI__ Vector< T > &  v)
inline

Definition at line 990 of file vector.h.

References TBCI::fabssqr(), std::sqrt(), and TBCI__.

template<typename T >
double fabs ( TBCI__ TVector< T tv)
inline

Definition at line 1004 of file vector.h.

References std::fabs(), TBCI__, and v.

template<typename T >
NAMESPACE_END NAMESPACE_CSTD double fabs ( const TBCI__ TSVector< T > &  ts)
inline

Definition at line 1488 of file vector.h.

template<typename T >
double fabssqr ( const Vector< T > &  v)
inline

Definition at line 2365 of file vector.h.

References Vector< T >::fabssqr().

template<typename T >
double fabssqr ( const TSVector< T > &  ts)

Definition at line 1479 of file vector.h.

References TSVector< T >::fabssqr().

template<typename T >
double fabssqr ( TVector< T tv)
inline

Definition at line 2449 of file vector.h.

References TVector< T >::fabssqr().

HOTDECL ( template< typename T > bool   par_compconst Vector< T > &v1, const Vector< T > &v2)

Definition at line 1967 of file vector.h.

References TSVector< T >::dim, TVector< T >::getcref(), LIKELY, and TVector< T >::size().

HOTDECL ( template< typename T > void   par_copyVector< T > &v1, const Vector< T > &v2)
template<typename T >
TVector<T>& imag ( TVector< T > &  tv)
inline
template<typename T >
TVector<T> imag ( const Vector< T > &  v)
inline

Definition at line 912 of file vector.h.

References CPLX__, i, std::imag(), REGISTER, TVector< T >::set(), TVector< T >::size(), and v.

template<typename T >
void job_svc_svc_add ( struct thr_ctrl tc)

vec = s*vec + s*vec;

Definition at line 455 of file vector.h.

References T, thr_ctrl::t_par, and thr_ctrl::t_size.

template<typename T >
void job_svc_svc_sub ( struct thr_ctrl tc)

vec = s*vec - s*vec;

Definition at line 482 of file vector.h.

References T, thr_ctrl::t_par, and thr_ctrl::t_size.

template<typename T >
void job_svc_val_add ( struct thr_ctrl tc)

vec = s*vec + val;

Definition at line 519 of file vector.h.

References T, thr_ctrl::t_par, and thr_ctrl::t_size.

template<typename T >
void job_svc_val_sub ( struct thr_ctrl tc)

vec = s*vec - val;

Definition at line 528 of file vector.h.

References T, thr_ctrl::t_par, and thr_ctrl::t_size.

template<typename T >
void job_svc_vec_add ( struct thr_ctrl tc)

vec = s*vec + vec;

Definition at line 446 of file vector.h.

References T, thr_ctrl::t_par, and thr_ctrl::t_size.

template<typename T >
void job_svc_vec_sub ( struct thr_ctrl tc)

vec = s*vec - vec;

Definition at line 473 of file vector.h.

References T, thr_ctrl::t_par, and thr_ctrl::t_size.

template<typename T >
void job_val_add_vec ( struct thr_ctrl tc)

vec += val;

Definition at line 387 of file vector.h.

References T, thr_ctrl::t_par, and thr_ctrl::t_size.

template<typename T >
void job_val_div_vec ( struct thr_ctrl tc)

vec = val/self;

Definition at line 427 of file vector.h.

References T, thr_ctrl::t_par, and thr_ctrl::t_size.

template<typename T >
void job_val_sub_vec ( struct thr_ctrl tc)

vec -= val; vec = -vec;

Definition at line 403 of file vector.h.

References T, thr_ctrl::t_par, and thr_ctrl::t_size.

template<typename T >
void job_val_svc_add ( struct thr_ctrl tc)

vec = val + s*vec;

Definition at line 537 of file vector.h.

References T, thr_ctrl::t_par, and thr_ctrl::t_size.

template<typename T >
void job_val_svc_div ( struct thr_ctrl tc)

vec = val / s*vec;

Definition at line 555 of file vector.h.

References T, thr_ctrl::t_par, and thr_ctrl::t_size.

template<typename T >
void job_val_svc_sub ( struct thr_ctrl tc)

vec = val + s*vec;

Definition at line 546 of file vector.h.

References T, thr_ctrl::t_par, and thr_ctrl::t_size.

template<typename T >
void job_val_vec_add ( struct thr_ctrl tc)

vec = val + vec;

Definition at line 355 of file vector.h.

References T, thr_ctrl::t_par, and thr_ctrl::t_size.

template<typename T >
void job_val_vec_div ( struct thr_ctrl tc)

vec = val / vec;

Definition at line 371 of file vector.h.

References T, thr_ctrl::t_par, and thr_ctrl::t_size.

template<typename T >
void job_val_vec_mul ( struct thr_ctrl tc)

vec = val * vec;

Definition at line 347 of file vector.h.

References T, thr_ctrl::t_par, and thr_ctrl::t_size.

template<typename T >
void job_val_vec_sub ( struct thr_ctrl tc)

vec = val - vec;

Definition at line 363 of file vector.h.

References T, thr_ctrl::t_par, and thr_ctrl::t_size.

template<typename T >
void job_vec_add_svc ( struct thr_ctrl tc)

vec += s*vec;

Definition at line 491 of file vector.h.

References T, thr_ctrl::t_par, and thr_ctrl::t_size.

template<typename T >
void job_vec_add_val ( struct thr_ctrl tc)

vec += val;

Definition at line 379 of file vector.h.

References T, thr_ctrl::t_par, and thr_ctrl::t_size.

template<typename T >
void job_vec_add_vec ( struct thr_ctrl tc)

vec += vec;

Definition at line 299 of file vector.h.

References T, thr_ctrl::t_par, and thr_ctrl::t_size.

template<typename T >
void job_vec_div_val ( struct thr_ctrl tc)

vec /= val;

Definition at line 419 of file vector.h.

References T, thr_ctrl::t_par, and thr_ctrl::t_size.

template<typename T >
void job_vec_dot ( struct thr_ctrl tc)

Definition at line 1802 of file vector.h.

References do_exactsum(), T, thr_ctrl::t_par, thr_ctrl::t_res_ptr, and thr_ctrl::t_size.

template<typename T >
void job_vec_fabssqr ( struct thr_ctrl tc)

Definition at line 2389 of file vector.h.

References do_exactsum(), T, thr_ctrl::t_par, thr_ctrl::t_res_d, and thr_ctrl::t_size.

template<typename T >
void job_vec_mul_val ( struct thr_ctrl tc)

vec *= val;

Definition at line 411 of file vector.h.

References T, thr_ctrl::t_par, and thr_ctrl::t_size.

template<typename T >
void job_vec_mult ( struct thr_ctrl tc)

Definition at line 1889 of file vector.h.

References do_exactsum(), T, thr_ctrl::t_par, and thr_ctrl::t_size.

template<typename T >
void job_vec_sub_svc ( struct thr_ctrl tc)

vec -= s*vec;

Definition at line 500 of file vector.h.

References T, thr_ctrl::t_par, and thr_ctrl::t_size.

template<typename T >
void job_vec_sub_svc_inv ( struct thr_ctrl tc)

vec -= s*vec;

Definition at line 509 of file vector.h.

References T, thr_ctrl::t_par, and thr_ctrl::t_size.

template<typename T >
void job_vec_sub_val ( struct thr_ctrl tc)

vec -= val;

Definition at line 395 of file vector.h.

References T, thr_ctrl::t_par, and thr_ctrl::t_size.

template<typename T >
void job_vec_sub_vec ( struct thr_ctrl tc)

vec -= vec;

Definition at line 307 of file vector.h.

References T, thr_ctrl::t_par, and thr_ctrl::t_size.

template<typename T >
void job_vec_sub_vec_inv ( struct thr_ctrl tc)

vec -= vec; vec = -vec;

Definition at line 315 of file vector.h.

References T, thr_ctrl::t_par, and thr_ctrl::t_size.

template<typename T >
void job_vec_sum ( struct thr_ctrl tc)

Definition at line 2086 of file vector.h.

References do_exactsum(), if(), T, thr_ctrl::t_par, and thr_ctrl::t_size.

template<typename T >
void job_vec_svc_add ( struct thr_ctrl tc)

vec = vec + s*vec;

Definition at line 437 of file vector.h.

References T, thr_ctrl::t_par, and thr_ctrl::t_size.

template<typename T >
void job_vec_svc_sub ( struct thr_ctrl tc)

vec = vec - s*vec;

Definition at line 464 of file vector.h.

References T, thr_ctrl::t_par, and thr_ctrl::t_size.

template<typename T >
void job_vec_val_add ( struct thr_ctrl tc)

vec = vec + val;

Definition at line 323 of file vector.h.

References T, thr_ctrl::t_par, and thr_ctrl::t_size.

template<typename T >
void job_vec_val_mul ( struct thr_ctrl tc)

vec = vec * val;

Definition at line 339 of file vector.h.

References T, thr_ctrl::t_par, and thr_ctrl::t_size.

template<typename T >
void job_vec_val_sub ( struct thr_ctrl tc)

vec = vec - val;

Definition at line 331 of file vector.h.

References T, thr_ctrl::t_par, and thr_ctrl::t_size.

template<typename T >
void job_vec_vec_add ( struct thr_ctrl tc)

vec = vec + vec;

Definition at line 283 of file vector.h.

References T, thr_ctrl::t_par, and thr_ctrl::t_size.

template<typename T >
void job_vec_vec_sub ( struct thr_ctrl tc)

vec = vec - vec;

Definition at line 291 of file vector.h.

References T, thr_ctrl::t_par, and thr_ctrl::t_size.

template<typename T >
TSVector<T> operator* ( const T a,
const TVector< T > &  b 
)
inline

Definition at line 801 of file vector.h.

References a, and b.

template<typename T >
const TSVector<T>& operator* ( const T f,
const TSVector< T > &  ts 
)

Definition at line 1196 of file vector.h.

References TSVector< T >::getfac(), TSVector< T >::getfacref(), and ts.

template<typename T >
TSVector<T> operator* ( const T a,
const Vector< T > &  b 
)
inline

Definition at line 2308 of file vector.h.

References a, and b.

template<typename T >
const TVector<T>& operator+ ( const T a,
const TVector< T > &  b 
)
inline

TV = T + TV Transformed to TV += T.

Definition at line 777 of file vector.h.

References b, BdMatrix< T >::dim, TVector< T >::setval(), TVector< T >::size(), STD_SMP_TEMPLATE2C, and T.

template<typename T >
TVector<T> operator+ ( const T v,
const TSVector< T > &  tsv 
)
inline

Definition at line 1435 of file vector.h.

References TSVector< T >::add_t_tsv().

template<typename T >
TVector<T> operator+ ( const T a,
const Vector< T > &  v 
)
inline

TV = T + V.

Definition at line 2279 of file vector.h.

References TVector< T >::getcref(), TVector< T >::setval(), TVector< T >::size(), STD_SMP_TEMPLATE3VC, and T.

template<typename T >
const TVector<T>& operator- ( const T a,
const TVector< T > &  b 
)
inline

TV = T - TV Transformed to -TV -= T.

Definition at line 789 of file vector.h.

References b, BdMatrix< T >::dim, TVector< T >::setval(), TVector< T >::size(), STD_SMP_TEMPLATE2C, and T.

template<typename T >
TVector<T> operator- ( const T v,
const TSVector< T > &  tsv 
)
inline

Definition at line 1455 of file vector.h.

References TSVector< T >::sub_t_tsv().

template<typename T >
TVector<T> operator- ( const T a,
const Vector< T > &  v 
)
inline

TV = T - V.

Definition at line 2293 of file vector.h.

References TVector< T >::getcref(), TVector< T >::setval(), TVector< T >::size(), STD_SMP_TEMPLATE3VC, and T.

template<typename T >
TSVector<T> operator/ ( const T a,
TVector< T b 
)
inline

Definition at line 812 of file vector.h.

References b, BCHK, norm(), and T.

template<typename T >
TSVector<T> operator/ ( const T a,
const Vector< T > &  b 
)

Definition at line 2318 of file vector.h.

References b, BCHK, TBCI::fabssqr(), norm(), and T.

template<typename T >
STD__ ostream& operator<< ( STD__ ostream &  os,
const TVector< T > &  tv 
)
inline

Definition at line 253 of file vector.h.

References v.

template<typename T >
STD__ ostream& operator<< ( STD__ ostream &  os,
const TSVector< T > &  ts 
)
template<typename T >
STD__ ostream& operator<< ( STD__ ostream &  os,
const Vector< T > &  v 
)
inline

Definition at line 1681 of file vector.h.

template<typename T >
bool par_comp ( const Vector< T > &  v1,
TVector< T v2 
)
inline

Definition at line 1996 of file vector.h.

Referenced by par_comp().

template<typename T >
bool par_comp ( TVector< T v1,
const Vector< T > &  v2 
)
inline

Definition at line 2003 of file vector.h.

References par_comp().

template<typename T >
bool par_comp ( TVector< T v1,
TVector< T v2 
)
inline

Definition at line 2009 of file vector.h.

References par_comp().

template<typename T >
void par_fill ( Vector< T > &  vec,
vec_fill_fn< T fn,
void *  par 
)
inline

Definition at line 2015 of file vector.h.

References TVector< T >::setval(), and TVector< T >::size().

template<typename T >
TVector<T>& real ( TVector< T > &  tv)
inline

Definition at line 871 of file vector.h.

References CPLX__, TVector< T >::get(), i, REGISTER, TVector< T >::set(), and TVector< T >::size().

template<typename T >
TVector<T> real ( const Vector< T > &  v)
inline

Definition at line 901 of file vector.h.

References CPLX__, i, REGISTER, TVector< T >::set(), TVector< T >::size(), and v.