|
TBCI Numerical high perf. C++ Library 2.8.0
|
#include <vector.h>


Public Types | |
| typedef T | value_type |
| typedef T | element_type |
| typedef T aligned_value_type | TALIGN(MIN_ALIGN2) |
| Public Types inherited from TVector< T > | |
| typedef T | value_type |
| typedef T | element_type |
| typedef T aligned_value_type | TALIGN(MIN_ALIGN2) |
| Public Types inherited from BVector< T > | |
| typedef T * | iterator |
| STL-like iterator support. | |
| typedef const T * | const_iterator |
Public Member Functions | |
| Vector (const unsigned long d=0) | |
| Vector (const T &val, const unsigned long d) | |
| Vector (const BVector< T > &bv) | |
| Vector (const Vector< T > &v) | |
| Vector (const TSVector< T > &ts) | |
| Vector (const TVector< T > &tv) | |
| Vector (const Mat_Brack< T > &) | |
| Vector (const vararg va,...) | |
| ~Vector () | |
| tbci_traits< T >::const_refval_type | operator() (const unsigned long i) const |
| tbci_traits< T >::const_refval_type | operator[] (const unsigned long i) const |
| T & | operator() (const unsigned long i) |
| T & | operator[] (const unsigned long i) |
| Vector< T > & | fill (const T &v) |
| Vector< T > & | clear () |
| TVector< T > | slice (unsigned long, unsigned long) const |
| TVector< T > | incr (const unsigned long, const T=(T) 1) const |
| Vector< T > & | operator= (const T &a) |
| Vector< T > & | operator= (const Vector< T > &v) HOT |
| assignment operator does NOT resize the Vector! | |
| Vector< T > & | operator= (const TSVector< T > &ts) HOT |
| Vector< T > & | operator= (const TVector< T > &tv) HOT |
| bool | operator== (const Vector< T > &v) const |
| bool | operator!= (const Vector< T > &v) const |
| bool | operator== (const TSVector< T > &) const |
| bool | operator!= (const TSVector< T > &ts) const |
| bool | operator== (const TVector< T > &tv) const |
| bool | operator!= (const TVector< T > &tv) const |
| bool | operator<= (const Vector< T > &v) const |
| bool | operator>= (const Vector< T > &v) const |
| bool | operator< (const Vector< T > &v) const |
| bool | operator> (const Vector< T > &v) const |
| TVector< T > | operator+ (const Vector< T > &) const HOT |
| TV = V + V. | |
| TVector< T > | operator- (const Vector< T > &) const HOT |
| TV = V - V. | |
| TVector< T > | operator+ (TVector< T > tv) const HOT |
| TV = V + TV transformed into TV += V. | |
| TVector< T > | operator- (TVector< T > tv) const HOT |
| TV = V - TV transformed into -TV -= V. | |
| TVector< T > | operator+ (const TSVector< T > &) const HOT |
| TV = V + TSV. | |
| TVector< T > | operator- (const TSVector< T > &) const HOT |
| TV = V - TSV. | |
| TVector< T > | operator+ (const T &) const |
| TV = V + T. | |
| TVector< T > | operator- (const T &) const |
| TV = V - T. | |
| TSVector< T > | operator* (const T &) const |
| TSVector< T > | operator/ (const T &) const |
| TVector< T > | operator- () const |
| T | operator* (const Vector< T > &) const |
| T | operator* (TVector< T > &tv) const |
| T | operator/ (const Vector< T > &) const |
| T | min () const |
| T | max () const |
| T | min (unsigned long &pos) const |
| T | max (unsigned long &pos) const |
| T | sum () const |
| double | fabssqr () const HOT |
| double | fabs () const |
| T | abs () const |
| bool | contains (const T &v) const |
| template<typename U> | |
| Vector (const BVector< U > &bv) | |
| Public Member Functions inherited from TVector< T > | |
| TVector (const unsigned long d=0) | |
| TVector (const T &val, const unsigned long d) | |
| TVector (const BVector< T > &bv) | |
| TVector (const Vector< T > &v) | |
| TVector (const TVector< T > &tv) HOT | |
| TVector (const TSVector< T > &ts) | |
| TVector (const Mat_Brack< T > &) | |
| ~TVector () | |
| unsigned long | size () const |
| TVector< T > & | operator= (const T &a) |
| TVector< T > & | operator= (const Vector< T > &v) |
| TVector< T > & | operator= (const TVector< T > &tv) |
| alias | |
| TVector< T > & | operator= (const TSVector< T > &ts) |
| bool | operator== (const TVector< T > &tv) const |
| bool | operator!= (const TVector< T > &tv) const |
| bool | operator== (const Vector< T > &v) const |
| bool | operator!= (const Vector< T > &v) const |
| bool | operator== (const BVector< T > &bv) const |
| bool | operator!= (const BVector< T > &v) const |
| bool | operator== (const TSVector< T > &tsv) const |
| bool | operator!= (const TSVector< T > &tsv) const |
| TVector< T > & | operator+= (const T &) |
| TV += a. | |
| TVector< T > & | operator-= (const T &) |
| TV -= a. | |
| TVector< T > & | operator*= (const T &) |
| TV *= a. | |
| TVector< T > & | operator/= (const T &) |
| TV /= a. | |
| TVector< T > & | operator+= (const Vector< T > &) HOT |
| TV += V. | |
| TVector< T > & | operator-= (const Vector< T > &) HOT |
| TV -= V. | |
| TVector< T > & | operator+= (const TVector< T > &tv) |
| TVector< T > & | operator-= (const TVector< T > &tv) |
| TVector< T > & | operator+= (const TSVector< T > &tsv) HOT |
| TV += TSV. | |
| TVector< T > & | operator-= (const TSVector< T > &tsv) HOT |
| TV -= TSV. | |
| T | min () |
| T | max () |
| T | sum () |
| double | fabssqr () |
| double | fabs () |
| T | abs () |
| TVector< T > & | operator+ (const Vector< T > &) HOT |
| TVector< T > & | operator- (const Vector< T > &) HOT |
| TVector< T > & | operator+ (const TSVector< T > &ts) HOT |
| TV = TV + TSV Transformed to TV += TSV. | |
| TVector< T > & | operator- (const TSVector< T > &ts) HOT |
| TV = TV - TSV Transformed to TV -= TSV. | |
| const TVector< T > & | operator+ (const TVector< T > &a) HOT |
| TV = TV + TV Transformed to TV += TV. | |
| const TVector< T > & | operator- (const TVector< T > &a) HOT |
| TV = TV - TV Transformed to TV -= TV. | |
| T | operator() (const unsigned long i) |
| T | operator[] (const unsigned long i) |
| const T & | getcref (const unsigned long i) const |
| tbci_traits< T >::const_refval_type | get (const unsigned long i) const |
| T & | setval (const unsigned long i) const |
| T & | setval (const T &val, const unsigned long i) const |
| T & | set (const T &val, const unsigned long i) const |
| TVector< T > | slice (const unsigned long, const unsigned long) |
| TVector< T > & | incr (const unsigned long, const T=(T) 1) |
| TVector< T > & | operator+ (const T &) |
| TVector< T > & | operator- (const T &) |
| TSVector< T > | operator* (const T &) |
| TSVector< T > | operator/ (const T &) |
| TSVector< T > | operator- () |
| T | operator* (const Vector< T > &v) |
| T | operator* (TVector< T > &tv) |
| template<typename U> | |
| TVector (const BVector< U > &bv) | |
| Public Member Functions inherited from BVector< T > | |
| BVector (const unsigned long=0) | |
| BVector (const T &, const unsigned long) | |
| BVector (const BVector< T > &) HOT | |
| copy constructor | |
| BVector (const vararg va,...) | |
| void | destroy () |
| ~BVector () | |
| BVector< T > & | init_0 () |
| BVector< T > & | fill (const T &) HOT |
| BVector< T > & | resize (const BVector< T > &) |
| Actually it's a resize and copy (some people would expect the assignment op to do this). | |
| BVector< T > & | resize (const unsigned long) |
| BVector< T > & | resize (const T &, const unsigned long) |
| BVector< T > & | cheapdownsize (const unsigned long) |
| BVector< T > & | clear () |
| BVector< T > & | append (const T &) |
| performs poorly | |
| BVector< T > & | push_back (const T &value) |
| performs poorly | |
| BVector< T > & | append (const BVector< T > &) |
| BVector< T > & | remove (const unsigned long) |
| BVector< T > & | revert () |
| BVector< T > & | bubble_sort () |
| BVector< T > & | swap (BVector< T > &v) |
| T & | operator() (const unsigned long) HOT |
| tbci_traits< T >::const_refval_type | operator() (const unsigned long) const HOT |
| const T & | getcref (const unsigned long idx) const |
| tbci_traits< T >::const_refval_type | get (const unsigned long idx) const HOT |
| T & | set (const unsigned long idx) HOT |
| T & | set (const T &val, unsigned long idx) |
| T & | operator[] (const unsigned long i) |
| tbci_traits< T >::const_refval_type | operator[] (const unsigned long i) const |
| unsigned long | size () const HOT |
| T *const & | vecptr () const |
| iterator | begin () |
| iterator | end () |
| const_iterator | begin () const |
| const_iterator | end () const |
| BVector< T > & | setptr (T *pointer) |
| BVector< T > & | setsize (const unsigned long size) |
| T *const & | get_fortran_vector () const |
| void | set_fortran_vector (T *pointer) |
| BVector< T > & | operator= (const T &a) |
| BVector< T > & | operator= (const BVector< T > &) HOT |
| Note that the assignment op does NEVER resize the target BVector. | |
| BVector< T > & | alias (const BVector< T > &bv) |
| BVector< T > & | copy (const BVector< T > &bv) |
| copy does a resize, if necessary | |
| bool | operator== (const BVector< T > &) const HOT |
| KG, 2001-06-29: Strange: If we don't inline this, we seems to get better performance in our solver benchmark (iPIII). | |
| bool | operator!= (const BVector< T > &bv) const |
| bool | operator<= (const BVector< T > &bv) const |
| bool | operator>= (const BVector< T > &bv) const |
| bool | operator< (const BVector< T > &bv) const |
| bool | operator> (const BVector< T > &bv) const |
| bool | contains (const T &, unsigned long *=0) const |
| BVector< T > | concat (const BVector< T > &) const |
| template<typename U> | |
| BVector (const BVector< U > &bv) | |
| Public Member Functions inherited from BVector_Sig< T > | |
| BVector_Sig () | |
| BVector_Sig (const unsigned long) | |
| ~BVector_Sig () | |
| T & | operator() (const unsigned long) |
| tbci_traits< T >::const_refval_type | operator() (const unsigned long) const |
| unsigned long | size () const |
| BVector_Sig< T > & | fill (const T &) |
| BVector_Sig< T > & | clear () |
| bool | operator== (const BVector_Sig< T > &) const |
| bool | operator!= (const BVector_Sig< T > &) const |
| Public Member Functions inherited from Vector_Sig< T > | |
| Vector_Sig () | |
| Vector_Sig (const unsigned) | |
| ~Vector_Sig () | |
| Vector_Sig< T > | operator+ (const Vector_Sig< T > &) const |
| Vector_Sig< T > | operator- (const Vector_Sig< T > &) const |
| Vector_Sig< T > | operator* (const T &) const |
| Vector_Sig< T > | operator/ (const T &) const |
| Vector_Sig< T > & | operator+= (const Vector_Sig< T > &) |
| Vector_Sig< T > & | operator-= (const Vector_Sig< T > &) |
| Vector_Sig< T > & | operator*= (const T &) |
| Vector_Sig< T > & | operator/= (const T &) |
| bool | operator<= (const Vector_Sig< T > &) const |
| bool | operator>= (const Vector_Sig< T > &) const |
| bool | operator< (const Vector_Sig< T > &) const |
| bool | operator> (const Vector_Sig< T > &) const |
Static Public Member Functions | |
| static const char * | vec_info () |
| Static Public Member Functions inherited from TVector< T > | |
| static const char * | vec_info () |
| Static Public Member Functions inherited from BVector< T > | |
| static const char * | vec_info () |
| Static Public Member Functions inherited from BVector_Sig< T > | |
| static const char * | vec_info () |
Friends | |
| class | TSVector< T > |
| T dot | FGD (const Vector< T > &, const Vector< T > &) HOT |
Additional Inherited Members | |
| Protected Types inherited from BVector< T > | |
| typedef T | value_type |
| typedef T | element_type |
| typedef T aligned_value_type | TALIGN(MIN_ALIGN2) |
| Protected Attributes inherited from BVector< T > | |
| T * | vec |
| unsigned long | dim |
| bool | keep |
This is the real Vector class, to be used by users of this library. The existence of TVector and TSVector should in theory be non-visible to the user.
Read the introduction to TBCI to understand how the Temporary Base Class Idiom helps to avoid spurious copies of data; the compiler knows that temporary objects can be aliased rather than copied, thus we copy one pointer rather than a data array. This gives us C++ semantics (operators!) with the possibility of composing operator expressions and at the same time the speed of C/FORTRAN. To achieve this the temporary base class TVector is needed as cousin for Vector.
The TSVector class is a further optimization that helps to do the composed operation Scale a x Plus y (a scalar, x, y vectors) in just one loop.
A more generic way of optimizing C++ expressions are expression templates. These however put a heavy burden on the compilers and will only be implemented in a successor project.
| typedef T aligned_value_type Vector< T >::TALIGN(MIN_ALIGN2) |
Definition at line 1539 of file vector.h.
References T, and TVector< T >::TVector().
Referenced by clear(), FGD, fill(), operator!=(), operator*(), operator*(), operator+(), operator-(), operator/(), operator<(), operator<=(), operator=(), operator=(), operator=(), operator=(), operator==(), operator>(), operator>=(), and Vector().
Definition at line 1540 of file vector.h.
References T, and TVector< T >::TVector().
Definition at line 1541 of file vector.h.
References BVector< T >::BVector, T, and TVector< T >::TVector().
Definition at line 1542 of file vector.h.
References T, TVector< T >::TVector(), and Vector().
Definition at line 1546 of file vector.h.
References T, and TVector< T >::TVector().
Definition at line 1559 of file vector.h.
References BVector< T >::destroy().
|
inlineexplicit |
Definition at line 1673 of file vector.h.
References BVector< T >::BVector, T, and TVector< T >::TVector().
Definition at line 1649 of file vector.h.
References BVector< T >::contains().
Definition at line 2399 of file vector.h.
References do_exactsum(), job_vec_fabssqr(), LIKELY, PREFETCH_R, res, SMP_VECSLICE2, STD__, thread_start(), thread_wait_result(), threads_avail, and y.
Referenced by abs(), BiCGSTAB(), fabs(), fabssqr(), and TVector< T >::fabssqr().
Definition at line 1577 of file vector.h.
References BVector< T >::fill(), T, and Vector().
Referenced by CTensor< T >::calc_indx(), and clear().
|
inline |
Definition at line 2348 of file vector.h.
References BCHK, i, T, TVector< T >::TVector(), and BVector< T >::vec.
Definition at line 1609 of file vector.h.
References TVector< T >::TVector().
Definition at line 1569 of file vector.h.
References i, BVector< T >::operator()(), and T.
|
inline |
Definition at line 1563 of file vector.h.
References i, and BVector< T >::operator()().
Referenced by operator[](), and operator[]().
Definition at line 1902 of file vector.h.
References a, BCHK, do_exactsum(), job_vec_mult(), LIKELY, PREFETCH_R, res, TVector< T >::size(), SMP_VECSLICE2, STD__, T, THREAD_MAX_RES_LN, thread_start(), thread_wait(), threads, threads_avail, and Vector().
Definition at line 1635 of file vector.h.
References operator*(), T, TVector< T >::TVector(), and Vector().
TV = V + T.
Definition at line 2244 of file vector.h.
References a, STD_SMP_TEMPLATE3VC, T, TVector< T >::TVector(), and BVector< T >::vec.
TV = V + TSV.
Definition at line 2213 of file vector.h.
References BCHK, BVector< T >::dim, LIKELY, BVector< T >::resize(), STD_SMP_TEMPLATE4V, ts, TVector< T >::TVector(), and BVector< T >::vec.
TV = V + V.
Definition at line 2169 of file vector.h.
References BCHK, BVector< T >::dim, TVector< T >::size(), STD_SMP_TEMPLATE3VV, TVector< T >::TVector(), BVector< T >::vec, and Vector().
TV = V + TV transformed into TV += V.
Definition at line 2191 of file vector.h.
References BCHK, BVector< T >::dim, TVector< T >::size(), STD_SMP_TEMPLATE2V, TVector< T >::TVector(), and BVector< T >::vec.
Definition at line 2326 of file vector.h.
References TVector< T >::TVector(), and BVector< T >::vec.
TV = V - T.
Definition at line 2253 of file vector.h.
References a, STD_SMP_TEMPLATE3VC, T, TVector< T >::TVector(), and BVector< T >::vec.
TV = V - TSV.
Definition at line 2228 of file vector.h.
References BCHK, BVector< T >::dim, LIKELY, BVector< T >::resize(), STD_SMP_TEMPLATE4V, ts, TVector< T >::TVector(), and BVector< T >::vec.
TV = V - V.
Definition at line 2179 of file vector.h.
References BCHK, BVector< T >::dim, TVector< T >::size(), STD_SMP_TEMPLATE3VV, TVector< T >::TVector(), BVector< T >::vec, and Vector().
TV = V - TV transformed into -TV -= V.
Definition at line 2201 of file vector.h.
References BCHK, BVector< T >::dim, TVector< T >::size(), STD_SMP_TEMPLATE2V, TVector< T >::TVector(), and BVector< T >::vec.
Definition at line 1611 of file vector.h.
References BVector< T >::operator<=(), and Vector().
Definition at line 1594 of file vector.h.
References HOT, TVector< T >::operator=(), TVector< T >::TVector(), and Vector().
assignment operator does NOT resize the Vector!
Definition at line 1590 of file vector.h.
References HOT, TVector< T >::operator=(), and Vector().
Definition at line 1718 of file vector.h.
References TSVector< T >::destroy(), TSVector< T >::dim, i, LIKELY, REGISTER, T, TBCICOMP, UNLIKELY, and TSVector< T >::vec.
Definition at line 1608 of file vector.h.
References TVector< T >::TVector().
Definition at line 1603 of file vector.h.
References BVector< T >::BVector, BVector< T >::operator==(), and Vector().
Definition at line 1612 of file vector.h.
References BVector< T >::operator>=(), and Vector().
Definition at line 1571 of file vector.h.
References i, operator()(), and T.
|
inline |
Definition at line 1566 of file vector.h.
References i, and operator()().
|
inline |
Definition at line 2335 of file vector.h.
References BCHK, BVector< T >::dim, T, TBCICOPY, TVector< T >::TVector(), UNLIKELY, and BVector< T >::vec.
Referenced by Tensor< T >::cntrmul(), ctrmul(), dctmul(), and Tensor< T >::drctmul().
Definition at line 2096 of file vector.h.
References do_exactsum(), job_vec_sum(), LIKELY, PREFETCH_R, res, SMP_VECSLICE2, T, thread_start(), thread_wait(), and threads_avail.
Referenced by TVector< T >::sum().