|
TBCI Numerical high perf. C++ Library
2.8.0
|
#include <bvector.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. More... | |
| 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! More... | |
| 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. More... | |
| TVector< T > | operator- (const Vector< T > &) const HOT |
| TV = V - V. More... | |
| TVector< T > | operator+ (TVector< T > tv) const HOT |
| TV = V + TV transformed into TV += V. More... | |
| TVector< T > | operator- (TVector< T > tv) const HOT |
| TV = V - TV transformed into -TV -= V. More... | |
| TVector< T > | operator+ (const TSVector< T > &) const HOT |
| TV = V + TSV. More... | |
| TVector< T > | operator- (const TSVector< T > &) const HOT |
| TV = V - TSV. More... | |
| TVector< T > | operator+ (const T &) const |
| TV = V + T. More... | |
| TVector< T > | operator- (const T &) const |
| TV = V - T. More... | |
| 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 More... | |
| 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. More... | |
| TVector< T > & | operator-= (const T &) |
| TV -= a. More... | |
| TVector< T > & | operator*= (const T &) |
| TV *= a. More... | |
| TVector< T > & | operator/= (const T &) |
| TV /= a. More... | |
| TVector< T > & | operator+= (const Vector< T > &) HOT |
| TV += V. More... | |
| TVector< T > & | operator-= (const Vector< T > &) HOT |
| TV -= V. More... | |
| TVector< T > & | operator+= (const TVector< T > &tv) |
| TVector< T > & | operator-= (const TVector< T > &tv) |
| TVector< T > & | operator+= (const TSVector< T > &tsv) HOT |
| TV += TSV. More... | |
| TVector< T > & | operator-= (const TSVector< T > &tsv) HOT |
| TV -= TSV. More... | |
| 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. More... | |
| TVector< T > & | operator- (const TSVector< T > &ts) HOT |
| TV = TV - TSV Transformed to TV -= TSV. More... | |
| const TVector< T > & | operator+ (const TVector< T > &a) HOT |
| TV = TV + TV Transformed to TV += TV. More... | |
| const TVector< T > & | operator- (const TVector< T > &a) HOT |
| TV = TV - TV Transformed to TV -= TV. More... | |
| 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 More... | |
| 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) More... | |
| 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 More... | |
| BVector< T > & | push_back (const T &value) |
| performs poorly More... | |
| 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. More... | |
| BVector< T > & | alias (const BVector< T > &bv) |
| BVector< T > & | copy (const BVector< T > &bv) |
| copy does a resize, if necessary More... | |
| 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) More... | |
| 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 2340 of file matrix.h.
References TMatrix< T >::dim, if(), LIKELY, NEW, T, TBCICOPY, and TMatrix< T >::vec.
Definition at line 1687 of file vector.h.
References TSVector< T >::dim, i, NEW, T, UNLIKELY, and TSVector< T >::vec.
Definition at line 1646 of file vector.h.
Referenced by TVector< T >::abs().
Definition at line 1645 of file vector.h.
Referenced by TVector< T >::fabs().
Definition at line 2399 of file vector.h.
References TSVector< T >::dim, do_exactsum(), LIKELY, PREFETCH_R, res, SMP_VECSLICE2, STD__, thread_start(), thread_wait_result(), threads_avail, TSVector< T >::vec, and y.
Referenced by Vector< unsigned >::abs(), BiCGSTAB(), Vector< unsigned >::fabs(), TVector< T >::fabssqr(), fabssqr(), and Vector< T >::operator/().
Definition at line 1577 of file vector.h.
Referenced by CTensor< T >::calc_indx(), and Vector< unsigned >::clear().
|
inline |
Definition at line 2348 of file vector.h.
References BCHK, i, and BVector< T >::vec.
Definition at line 2058 of file vector.h.
References ALIGN, TSVector< T >::dim, LIKELY, max(), MIN_ALIGN, REGISTER, T, UNLIKELY, and TSVector< T >::vec.
Referenced by TVector< T >::max(), and TSVector< T >::max().
Definition at line 2032 of file vector.h.
References ALIGN, TSVector< T >::dim, LIKELY, min, MIN_ALIGN, REGISTER, T, UNLIKELY, and TSVector< T >::vec.
Referenced by TVector< T >::min(), and TSVector< T >::min().
|
inline |
Definition at line 1563 of file vector.h.
Referenced by Vector< unsigned >::operator[]().
Definition at line 2263 of file vector.h.
References a.
Referenced by Vector< unsigned >::operator*().
Definition at line 1902 of file vector.h.
References BCHK, TSVector< T >::dim, do_exactsum(), LIKELY, PREFETCH_R, res, TVector< T >::size(), TSVector< T >::size(), SMP_VECSLICE2, STD__, T, THREAD_MAX_RES_LN, thread_start(), thread_wait(), threads, threads_avail, BVector< T >::vec, and TSVector< T >::vec.
TV = V + V.
Definition at line 2169 of file vector.h.
References BCHK, BVector< T >::dim, TSVector< T >::size(), STD_SMP_TEMPLATE3VV, and BVector< T >::vec.
TV = V + TV transformed into TV += V.
Definition at line 2191 of file vector.h.
References BCHK, BVector< T >::dim, TSVector< T >::size(), STD_SMP_TEMPLATE2V, and BVector< T >::vec.
TV = V + TSV.
Definition at line 2213 of file vector.h.
References BCHK, BVector< T >::dim, TSVector< T >::dim, TSVector< T >::fac(), LIKELY, TSVector< T >::mut, BVector< T >::resize(), STD_SMP_TEMPLATE4V, BVector< T >::vec, and TSVector< T >::vec.
TV = V + T.
Definition at line 2244 of file vector.h.
References STD_SMP_TEMPLATE3VC, and BVector< T >::vec.
TV = V - V.
Definition at line 2179 of file vector.h.
References BCHK, BVector< T >::dim, TSVector< T >::size(), STD_SMP_TEMPLATE3VV, and BVector< T >::vec.
TV = V - TV transformed into -TV -= V.
Definition at line 2201 of file vector.h.
References BCHK, BVector< T >::dim, TSVector< T >::size(), STD_SMP_TEMPLATE2V, and BVector< T >::vec.
TV = V - TSV.
Definition at line 2228 of file vector.h.
References BCHK, BVector< T >::dim, TSVector< T >::dim, TSVector< T >::fac(), LIKELY, TSVector< T >::mut, BVector< T >::resize(), STD_SMP_TEMPLATE4V, BVector< T >::vec, and TSVector< T >::vec.
TV = V - T.
Definition at line 2253 of file vector.h.
References STD_SMP_TEMPLATE3VC, and BVector< T >::vec.
Definition at line 2326 of file vector.h.
References TSVector< T >::dim, BVector< T >::vec, and TSVector< T >::vec.
Definition at line 1718 of file vector.h.
References TSVector< T >::destroy(), TSVector< T >::dim, TSVector< T >::fac(), i, LIKELY, REGISTER, T, TBCICOMP, UNLIKELY, and TSVector< T >::vec.
|
inline |
Definition at line 2335 of file vector.h.
References BCHK, BVector< T >::dim, T, TBCICOPY, 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 TSVector< T >::dim, do_exactsum(), LIKELY, PREFETCH_R, res, SMP_VECSLICE2, T, thread_start(), thread_wait(), threads_avail, and TSVector< T >::vec.
Referenced by TVector< T >::sum().
1.8.5