Comprises our own extensions to Blitz++. More...
Namespaces | |
| basi | |
| The name of the namespace stands for BlitzArraySliceIterator. | |
| basi_fast | |
| Contains a “fast” version of BlitzArraySliceIterator. | |
| vfmsi | |
| The name of the namespace stands for VectorFromMatrixSliceIterator. | |
Classes | |
| class | BinaryArrayOrderingErrorException |
| Exception class thrown by binaryArray. More... | |
| struct | HalfCutTinyException |
| Exception class thrown by halfCutTiny. More... | |
| class | NonContiguousStorageException |
| Exception class thrown by unaryArray & binaryArray. More... | |
| class | SlicesData |
| Contains data for pre-calculated slices for basi_fast::Iterator. More... | |
| struct | TinyVectorLengthTraits |
An indirection for accessing lengths of blitz::TinyVector at compile time. More... | |
Functions | |
| bool | isfinite (double d) |
| BZ_DECLARE_FUNCTION_RET (isfinite, bool) | |
| double | selectNegative (double d) |
| BZ_DECLARE_FUNCTION_RET (selectNegative, double) | |
| template<typename T , int RANK> | |
| const blitz::Array< T, 1 > | unaryArray (const blitz::Array< T, RANK > &) |
Returns a unary view of array More... | |
| template<typename T , int TWO_TIMES_RANK> | |
| const blitz::Array< T, 2 > | binaryArray (const blitz::Array< T, TWO_TIMES_RANK > &array) |
Returns a binary view of array. TWO_TIMES_RANK must be an even number. More... | |
| template<typename T1 , typename T2 , int RANK1, int RANK2> | |
| blitz::TinyVector< T1, RANK1+RANK2 > | concatenateTinies (const blitz::TinyVector< T1, RANK1 > &tiny1, const blitz::TinyVector< T2, RANK2 > &tiny2) |
Concatenates tiny1 and tiny2 More... | |
| template<typename T , int TWO_TIMES_RANK> | |
| blitz::TinyVector< T, TWO_TIMES_RANK/2 > | halfCutTiny (const blitz::TinyVector< T, TWO_TIMES_RANK > &) |
| Returns the first half of a tiny vector containing two equal halves. More... | |
| double | sqrAbs (const dcomp &c) |
| BZ_DECLARE_FUNCTION_RET (sqrAbs, double) | |
| template<int TWO_TIMES_RANK> | |
| void | hermitianConjugateSelf (CArray< TWO_TIMES_RANK > &) |
| template<int TWO_TIMES_RANK> | |
| const CArray< TWO_TIMES_RANK > | hermitianConjugate (const CArray< TWO_TIMES_RANK > &) |
| template<bool IS_MULTIPLICATION, int RANK1, int RANK2> | |
| const CArray< RANK1+RANK2 > | doDirect (const CArray< RANK1 > &, const CArray< RANK2 > &) |
| Direct product/sum. More... | |
Comprises our own extensions to Blitz++.
| const blitz::Array<T,2> blitzplusplus::binaryArray | ( | const blitz::Array< T, TWO_TIMES_RANK > & | array | ) |
Returns a binary view of array. TWO_TIMES_RANK must be an even number.
Violation is detected @ compile time by tmptools::AssertEvenAndDivideBy2.
The same requirement of contiguity an the same warning applies as for unaryArray, and in addition, further assumptions on the storage order must be made: The storage of the two multi-indices must not be intertwined and must be layed out in the same way, so that e.g. for RANK=4, the member function array.ordering() should return an octary tiny vector like:
<1 3 2 0 | 5 7 6 4>
Violation is detected at runtime, and an exception of type BinaryArrayOrderingErrorException is thrown.
| T | the type the array is based on |
| TWO_TIMES_RANK | 2*RANK, RANK being the arity of the vector space |
| blitz::TinyVector<T1,RANK1+RANK2> blitzplusplus::concatenateTinies | ( | const blitz::TinyVector< T1, RANK1 > & | tiny1, |
| const blitz::TinyVector< T2, RANK2 > & | tiny2 | ||
| ) |
Concatenates tiny1 and tiny2
Implemented with the help of the compile-time–runtime facility for_each from Boost.MPL.
| T1 | basic type of one of the operand tiny vectors and the result |
| T2 | basic type of the other operand tiny vector. Must be convertible to T1. |
| const CArray<RANK1+RANK2> blitzplusplus::doDirect | ( | const CArray< RANK1 > & | , |
| const CArray< RANK2 > & | |||
| ) |
Direct product/sum.
Returns the direct product (if IS_MULTIPLICATION)
, or direct sum (otherwise)
of array1 and array2, with
running through all the multi-indices. The implementation is in terms of blitzplusplus::unaryArray views of the arguments.
| IS_MULTIPLICATION | governs whether direct product or sum is to be calculated |
| blitz::TinyVector<T,TWO_TIMES_RANK/2> blitzplusplus::halfCutTiny | ( | const blitz::TinyVector< T, TWO_TIMES_RANK > & | ) |
Returns the first half of a tiny vector containing two equal halves.
In debug mode, the equality of the two halves is checked, and a HalfCutTinyException is thrown @ violation.
| T | basic type of the operand tiny vector |
| TWO_TIMES_RANK | length of the ” |
| const blitz::Array<T,1> blitzplusplus::unaryArray | ( | const blitz::Array< T, RANK > & | ) |
Returns a unary view of array
This is meant to be used only if the underlying storage is contiguous, because while a multi-rank array may be able to represent a view of memory of some more or less intricate structure pattern (e.g. slices), a unary array is not capable of this. In debug mode, violation is detected at runtime via the array.isStorageContiguous() member function and an exception of type NonContiguousStorageException is thrown.
| T | the type the array is based on |
| RANK | the arity of the vector space |