MADNESS 0.10.1
Public Member Functions | Private Member Functions | List of all members
madness::SliceTensor< T > Class Template Reference

Indexing a non-constant tensor with slices returns a SliceTensor. More...

#include <tensor.h>

Inheritance diagram for madness::SliceTensor< T >:
Inheritance graph
[legend]
Collaboration diagram for madness::SliceTensor< T >:
Collaboration graph
[legend]

Public Member Functions

 SliceTensor (const Tensor< T > &t, const Slice s[])
 
 SliceTensor (const Tensor< T > &t, const std::array< Slice, TENSOR_MAXDIM > s)
 
virtual ~SliceTensor ()
 
template<class Q >
SliceTensor< T > & operator= (const SliceTensor< Q > &t)
 
SliceTensor< T > & operator= (const SliceTensor< T > &t)
 
SliceTensor< T > & operator= (const T &t)
 
template<class Q >
SliceTensor< T > & operator= (const Tensor< Q > &t)
 
SliceTensor< T > & operator= (const Tensor< T > &t)
 
- Public Member Functions inherited from madness::Tensor< T >
 Tensor ()
 Default constructor does not allocate any data and sets ndim=-1, size=0, _p=0, and id.
 
 Tensor (const std::vector< long > &d, bool dozero=true)
 Create and optionally zero new n-d tensor. This is the most general constructor.
 
 Tensor (const Tensor< T > &t)
 Copy constructor is shallow (same as assignment)
 
 Tensor (long d0)
 Create and zero new 1-d tensor.
 
 Tensor (long d0, long d1)
 Create and zero new 2-d tensor.
 
 Tensor (long d0, long d1, long d2)
 Create and zero new 3-d tensor.
 
 Tensor (long d0, long d1, long d2, long d3)
 Create and zero new 4-d tensor.
 
 Tensor (long d0, long d1, long d2, long d3, long d4)
 Create and zero new 5-d tensor.
 
 Tensor (long d0, long d1, long d2, long d3, long d4, long d5)
 Create and zero new 6-d tensor.
 
 Tensor (long nd, const long d[], bool dozero=true)
 Politically incorrect general constructor.
 
virtual ~Tensor ()
 
scalar_type absmax (long *ind=0) const
 Return the absolute maximum value (and if ind is non-null, its index) in the Tensor.
 
scalar_type absmin (long *ind=0) const
 Return the absolute minimum value (and if ind is non-null, its index) in the Tensor.
 
BaseTensorbase ()
 Returns a pointer to the base class.
 
const BaseTensorbase () const
 Returns a pointer to the base class.
 
template<class Q >
TensorIterator< T, Qbinary_iterator (const Tensor< Q > &q, long iterlevel=0, bool optimize=true, bool fusedim=true, long jdim=default_jdim) const
 Return iterator over two tensors.
 
void clear ()
 Frees all memory and resests to state of default constructor.
 
template<class Q >
bool conforms (const Tensor< Q > &t) const
 Test if *this and t conform.
 
Tensor< T > & conj ()
 Inplace complex conjugate.
 
Tensor< Tcycledim (long nshift, long start, long end)
 Returns new view/tensor cycling the sub-dimensions (start,...,end) with shift steps.
 
const Tensor< Tcycledim (long nshift, long start, long end) const
 Returns new view/tensor cycling the sub-dimensions (start,...,end) with shift steps.
 
Tensor< T > & emul (const Tensor< T > &t)
 Inplace multiply by corresponding elements of argument Tensor.
 
const TensorIterator< T > & end () const
 End point for forward iteration.
 
Tensor< T > & fill (T x)
 Inplace fill with a scalar (legacy name)
 
Tensor< T > & fillindex ()
 Inplace fill with the index of each element.
 
Tensor< T > & fillrandom ()
 Inplace fill with random values ( [0,1] for floats, [0,MAXSIZE] for integers)
 
Tensor< Tflat ()
 Returns new view/tensor rehshaping to flat (1-d) tensor.
 
const Tensor< Tflat () const
 Returns new view/tensor rehshaping to flat (1-d) tensor.
 
Tensor< Tfusedim (long i)
 Returns new view/tensor fusing contiguous dimensions i and i+1.
 
const Tensor< Tfusedim (long i) const
 Returns new view/tensor fusing contiguous dimensions i and i+1.
 
Tensor< T > & gaxpy (T alpha, const Tensor< T > &t, T beta)
 Inplace generalized saxpy ... this = this*alpha + other*beta.
 
bool has_data () const
 
Tensor< Tmapdim (const std::vector< long > &map)
 Returns new view/tensor permuting the dimensions.
 
const Tensor< Tmapdim (const std::vector< long > &map) const
 Returns new view/tensor permuting the dimensions.
 
float_complex max (long *ind) const
 
double_complex max (long *ind) const
 
float_complex max (long *ind) const
 
double_complex max (long *ind) const
 
T max (long *ind=0) const
 Return the maximum value (and if ind is non-null, its index) in the Tensor.
 
float_complex min (long *ind) const
 
double_complex min (long *ind) const
 
float_complex min (long *ind) const
 
double_complex min (long *ind) const
 
T min (long *ind=0) const
 Return the minimum value (and if ind is non-null, its index) in the Tensor.
 
float_scalar_type normf () const
 Returns the Frobenius norm of the tensor.
 
template<class Q >
 operator Tensor< Q > () const
 Type conversion makes a deep copy.
 
Toperator() (const long ind[])
 Politically incorrect general indexing operation without bounds checking.
 
const Toperator() (const long ind[]) const
 Politically incorrect general indexing operation without bounds checking.
 
SliceTensor< Toperator() (const Slice &s0)
 Return a 1d SliceTensor that views the specified range of the 1d Tensor.
 
const Tensor< Toperator() (const Slice &s0) const
 Return a 1d SliceTensor that views the specified range of the 1d Tensor.
 
SliceTensor< Toperator() (const Slice &s0, const Slice &s1)
 Return a 2d SliceTensor that views the specified range of the 2d Tensor.
 
const Tensor< Toperator() (const Slice &s0, const Slice &s1) const
 Return a 2d constant Tensor that views the specified range of the 2d Tensor.
 
SliceTensor< Toperator() (const Slice &s0, const Slice &s1, const Slice &s2)
 Return a 3d SliceTensor that views the specified range of the 3d Tensor.
 
const Tensor< Toperator() (const Slice &s0, const Slice &s1, const Slice &s2) const
 Return a 3d constant Tensor that views the specified range of the 3d Tensor.
 
SliceTensor< Toperator() (const Slice &s0, const Slice &s1, const Slice &s2, const Slice &s3)
 Return a 1-4d SliceTensor that views the specified range of the 4d Tensor.
 
const Tensor< Toperator() (const Slice &s0, const Slice &s1, const Slice &s2, const Slice &s3) const
 Return a 1-4d constant Tensor that views the specified range of the 4d Tensor.
 
SliceTensor< Toperator() (const Slice &s0, const Slice &s1, const Slice &s2, const Slice &s3, const Slice &s4)
 Return a 1-5d SliceTensor that views the specified range of the 5d Tensor.
 
const Tensor< Toperator() (const Slice &s0, const Slice &s1, const Slice &s2, const Slice &s3, const Slice &s4) const
 Return a 1-5d constant Tensor that views the specified range of the 5d Tensor.
 
SliceTensor< Toperator() (const Slice &s0, const Slice &s1, const Slice &s2, const Slice &s3, const Slice &s4, const Slice &s5)
 Return a 1-6d SliceTensor that views the specified range of the 6d Tensor.
 
const Tensor< Toperator() (const Slice &s0, const Slice &s1, const Slice &s2, const Slice &s3, const Slice &s4, const Slice &s5) const
 Return a 1-6d constant Tensor that views the specified range of the 6d Tensor.
 
SliceTensor< Toperator() (const Slice &s0, const Slice &s1, long k)
 Return a 2d SliceTensor that views the specified range of the 3d Tensor.
 
const Tensor< Toperator() (const Slice &s0, const Slice &s1, long k) const
 Return a 2d constant Tensor that views the specified range of the 3d Tensor.
 
SliceTensor< Toperator() (const Slice &s0, long j)
 Return a 1d SliceTensor that views the specified range of the 2d Tensor.
 
const Tensor< Toperator() (const Slice &s0, long j) const
 Return a 1d constant Tensor that views the specified range of the 2d Tensor.
 
SliceTensor< Toperator() (const Slice &s0, long j, const Slice &s2)
 Return a 2d SliceTensor that views the specified range of the 3d Tensor.
 
const Tensor< Toperator() (const Slice &s0, long j, const Slice &s2) const
 Return a 2d constant Tensor that views the specified range of the 3d Tensor.
 
SliceTensor< Toperator() (const Slice &s0, long j, long k)
 Return a 1d SliceTensor that views the specified range of the 3d Tensor.
 
const Tensor< Toperator() (const Slice &s0, long j, long k) const
 Return a 1d constant Tensor that views the specified range of the 3d Tensor.
 
SliceTensor< Toperator() (const std::array< Slice, TENSOR_MAXDIM > &s)
 General slicing operation.
 
const Tensor< Toperator() (const std::array< Slice, TENSOR_MAXDIM > &s) const
 General slicing operation (const)
 
Toperator() (const std::vector< long > ind)
 General indexing operation with bounds checking.
 
const Toperator() (const std::vector< long > ind) const
 General indexing operation with bounds checking.
 
SliceTensor< Toperator() (const std::vector< Slice > &s)
 General slicing operation.
 
const Tensor< Toperator() (const std::vector< Slice > &s) const
 General slicing operation (const)
 
Toperator() (long i)
 1-d indexing operation without bounds checking.
 
const Toperator() (long i) const
 1-d indexing operation without bounds checking.
 
SliceTensor< Toperator() (long i, const Slice &s1)
 Return a 1d SliceTensor that views the specified range of the 2d Tensor.
 
const Tensor< Toperator() (long i, const Slice &s1) const
 Return a 1d SliceTensor that views the specified range of the 2d Tensor.
 
SliceTensor< Toperator() (long i, const Slice &s1, const Slice &s2)
 Return a 2d SliceTensor that views the specified range of the 3d Tensor.
 
const Tensor< Toperator() (long i, const Slice &s1, const Slice &s2) const
 Return a 2d constant Tensor that views the specified range of the 3d Tensor.
 
SliceTensor< Toperator() (long i, const Slice &s1, long k)
 Return a 1d SliceTensor that views the specified range of the 3d Tensor.
 
const Tensor< Toperator() (long i, const Slice &s1, long k) const
 Return a 1d constant Tensor that views the specified range of the 3d Tensor.
 
Toperator() (long i, long j)
 2-d indexing operation without bounds checking.
 
const Toperator() (long i, long j) const
 2-d indexing operation without bounds checking.
 
SliceTensor< Toperator() (long i, long j, const Slice &s2)
 Return a 1d SliceTensor that views the specified range of the 3d Tensor.
 
const Tensor< Toperator() (long i, long j, const Slice &s2) const
 Return a 1d constant Tensor that views the specified range of the 3d Tensor.
 
Toperator() (long i, long j, long k)
 3-d indexing operation without bounds checking.
 
const Toperator() (long i, long j, long k) const
 3-d indexing operation without bounds checking.
 
Toperator() (long i, long j, long k, long l)
 4-d indexing operation without bounds checking.
 
const Toperator() (long i, long j, long k, long l) const
 4-d indexing operation without bounds checking.
 
Toperator() (long i, long j, long k, long l, long m)
 5-d indexing operation without bounds checking.
 
const Toperator() (long i, long j, long k, long l, long m) const
 5-d indexing operation without bounds checking.
 
Toperator() (long i, long j, long k, long l, long m, long n)
 6-d indexing operation without bounds checking.
 
const Toperator() (long i, long j, long k, long l, long m, long n) const
 6-d indexing operation without bounds checking.
 
template<typename Q >
IsSupported< TensorTypeData< Q >, Tensor< TENSOR_RESULT_TYPE(T, Q)> >::type operator* (const Q &x) const
 Multiplication of tensor by a scalar of a supported type to produce a new tensor.
 
template<typename Q >
IsSupported< TensorTypeData< Q >, Tensor< T > & >::type operator*= (const Q &x)
 Inplace multiplication by scalar of supported type.
 
template<typename Q >
IsSupported< TensorTypeData< Q >, Tensor< TENSOR_RESULT_TYPE(T, Q)> >::type operator+ (const Q &x) const
 Add a scalar of the same type to all elements of a tensor producing a new tensor.
 
template<typename Q >
Tensor< TENSOR_RESULT_TYPE(T, Q) > operator+ (const Tensor< Q > &t) const
 Addition of two tensors to produce a new tensor.
 
template<typename Q >
IsSupported< TensorTypeData< Q >, Tensor< T > & >::type operator+= (const Q &x)
 Inplace increment by scalar of supported type.
 
template<typename Q >
Tensor< T > & operator+= (const Tensor< Q > &t)
 Inplace addition of two tensors.
 
Tensor< Toperator- () const
 Unary negation producing a new tensor.
 
template<typename Q >
IsSupported< TensorTypeData< Q >, Tensor< TENSOR_RESULT_TYPE(T, Q)> >::type operator- (const Q &x) const
 Subtract a scalar of the same type from all elements producing a new tensor.
 
template<typename Q >
Tensor< TENSOR_RESULT_TYPE(T, Q) > operator- (const Tensor< Q > &t) const
 Subtraction of two tensors to produce a new tensor.
 
template<typename Q >
IsSupported< TensorTypeData< Q >, Tensor< T > & >::type operator-= (const Q &x)
 Inplace decrement by scalar of supported type.
 
template<typename Q >
Tensor< T > & operator-= (const Tensor< Q > &t)
 Inplace subtraction of two tensors.
 
template<typename Q >
IsSupported< TensorTypeData< Q >, Tensor< TENSOR_RESULT_TYPE(T, Q)> >::type operator/ (const Q &x) const
 Divide tensor by a scalar of a supported type to produce a new tensor.
 
Tensor< T > & operator= (const Tensor< T > &t)
 Assignment is shallow (same as copy constructor)
 
Tensor< T > & operator= (T x)
 Inplace fill tensor with scalar.
 
Toperator[] (long i)
 1-d indexing operation using [] without bounds checking.
 
const Toperator[] (long i) const
 1-d indexing operation using [] without bounds checking.
 
T product () const
 Return the product of all elements of the tensor.
 
Tptr ()
 Returns a pointer to the internal data.
 
const Tptr () const
 Returns a pointer to the internal data.
 
Tensor< Treshape (const std::vector< long > &d)
 Returns new view/tensor reshaping size/number of dimensions to conforming tensor.
 
const Tensor< Treshape (const std::vector< long > &d) const
 Returns new view/tensor reshaping size/number of dimensions to conforming tensor.
 
Tensor< Treshape (int ndimnew, const long *d)
 Returns new view/tensor reshaping size/number of dimensions to conforming tensor.
 
const Tensor< Treshape (int ndimnew, const long *d) const
 Returns new view/tensor reshaping size/number of dimensions to conforming tensor.
 
Tensor< Treshape (long dim0)
 Returns new view/tensor rehapings to conforming 1-d tensor with given dimension.
 
const Tensor< Treshape (long dim0) const
 Returns new view/tensor rehapings to conforming 1-d tensor with given dimension.
 
Tensor< Treshape (long dim0, long dim1)
 Returns new view/tensor rehaping to conforming 2-d tensor with given dimensions.
 
const Tensor< Treshape (long dim0, long dim1) const
 Returns new view/tensor rehaping to conforming 2-d tensor with given dimensions.
 
Tensor< Treshape (long dim0, long dim1, long dim2)
 Returns new view/tensor rehaping to conforming 3-d tensor with given dimensions.
 
const Tensor< Treshape (long dim0, long dim1, long dim2) const
 Returns new view/tensor rehaping to conforming 3-d tensor with given dimensions.
 
Tensor< Treshape (long dim0, long dim1, long dim2, long dim3)
 Returns new view/tensor rehaping to conforming 4-d tensor with given dimensions.
 
const Tensor< Treshape (long dim0, long dim1, long dim2, long dim3) const
 Returns new view/tensor rehaping to conforming 4-d tensor with given dimensions.
 
Tensor< Treshape (long dim0, long dim1, long dim2, long dim3, long dim4)
 Returns new view/tensor rehaping to conforming 5-d tensor with given dimensions.
 
const Tensor< Treshape (long dim0, long dim1, long dim2, long dim3, long dim4) const
 Returns new view/tensor rehaping to conforming 5-d tensor with given dimensions.
 
Tensor< Treshape (long dim0, long dim1, long dim2, long dim3, long dim4, long dim5)
 Returns new view/tensor rehaping to conforming 6-d tensor with given dimensions.
 
const Tensor< Treshape (long dim0, long dim1, long dim2, long dim3, long dim4, long dim5) const
 Returns new view/tensor rehaping to conforming 6-d tensor with given dimensions.
 
template<typename Q >
IsSupported< TensorTypeData< Q >, Tensor< T > & >::type scale (Q x)
 Inplace multiplication by scalar of supported type (legacy name)
 
Tensor< T > & screen (double x)
 Inplace set elements of *this less than x in absolute magnitude to zero.
 
Tensor< Tsplitdim (long i, long dimi0, long dimi1)
 Returns new view/tensor splitting dimension i as dimi0*dimi1 to produce conforming d+1 dimension tensor.
 
const Tensor< Tsplitdim (long i, long dimi0, long dimi1) const
 Returns new view/tensor splitting dimension i as dimi0*dimi1 to produce conforming d+1 dimension tensor.
 
T sum () const
 Returns the sum of all elements of the tensor.
 
T sumsq () const
 Returns the sum of the squares of the elements.
 
Tensor< Tswapdim (long idim, long jdim)
 Returns new view/tensor swaping dimensions i and j.
 
const Tensor< Tswapdim (long idim, long jdim) const
 Returns new view/tensor swaping dimensions i and j.
 
template<class Q >
 TENSOR_RESULT_TYPE (T, Q) trace_conj(const Tensor< Q > &t) const
 Return the trace of two tensors with complex conjugate of the leftmost (i.e., this)
 
template<class Q , class R >
TensorIterator< T, Q, Rternary_iterator (const Tensor< Q > &q, const Tensor< R > &r, long iterlevel=0, bool optimize=true, bool fusedim=true, long jdim=default_jdim) const
 Return iterator over three tensors.
 
T trace (const Tensor< T > &t) const
 Return the trace of two tensors (no complex conjugate invoked)
 
TensorIterator< Tunary_iterator (long iterlevel=0, bool optimize=true, bool fusedim=true, long jdim=default_jdim) const
 Return iterator over single tensor.
 
template<typename opT >
Tensor< T > & unaryop (opT &op)
 Inplace apply a unary function to each element of the tensor.
 
- Public Member Functions inherited from madness::BaseTensor
 BaseTensor ()
 
virtual ~BaseTensor ()
 
bool conforms (const BaseTensor *t) const
 Returns true if this and *t are the same shape and size.
 
long dim (int i) const
 Returns the size of dimension i.
 
const long * dims () const
 Returns the array of tensor dimensions.
 
long id () const
 Returns the typeid of the tensor (c.f., TensorTypeData<T> )
 
bool iscontiguous () const
 Returns true if the tensor refers to contiguous memory locations.
 
long ndim () const
 Returns the number of dimensions in the tensor.
 
long size () const
 Returns the number of elements in the tensor.
 
long stride (int i) const
 Returns the stride associated with dimension i.
 
const long * strides () const
 Returns the array of tensor strides.
 

Private Member Functions

 SliceTensor ()
 

Additional Inherited Members

- Public Types inherited from madness::Tensor< T >
typedef TensorTypeData< T >::float_scalar_type float_scalar_type
 C++ typename of the floating point type associated with scalar real type.
 
typedef TensorTypeData< T >::scalar_type scalar_type
 C++ typename of the real type associated with a complex type.
 
typedef T type
 C++ typename of this tensor.
 
- Static Public Member Functions inherited from madness::Tensor< T >
static bool bounds_checking ()
 Return true if bounds checking was enabled at compile time.
 
- Static Public Member Functions inherited from madness::BaseTensor
static int get_instance_count ()
 Returns the count of all current instances of tensors & slice tensors of all types.
 
- Protected Member Functions inherited from madness::Tensor< T >
void allocate (long nd, const long d[], bool dozero)
 
void deallocate ()
 
- Protected Member Functions inherited from madness::BaseTensor
void cycledim_inplace (long shift, long start, long end)
 Cyclic shift of dimensions.
 
void flat_inplace ()
 Reshapes the tensor inplace into 1D.
 
void fusedim_inplace (long i)
 Fuses dimensions i and i+1.
 
void mapdim_inplace (const std::vector< long > &map)
 General permutation of dimensions.
 
void reshape_inplace (const std::vector< long > &d)
 Reshapes the tensor inplace.
 
void reshape_inplace (int ndimnew, const long *d)
 Reshapes the tensor inplace.
 
void set_dims_and_size (long nd, const long d[])
 
void splitdim_inplace (long i, long dimi0, long dimi1)
 Splits dimension i.
 
void swapdim_inplace (long i, long j)
 Swaps the dimensions.
 
- Protected Attributes inherited from madness::Tensor< T >
T *MADNESS_RESTRICT _p
 
TENSOR_SHARED_PTR< T_shptr
 
- Protected Attributes inherited from madness::BaseTensor
long _dim [TENSOR_MAXDIM]
 Size of each dimension.
 
long _id
 Id from TensorTypeData<T> in type_data.h.
 
long _ndim
 Number of dimensions (-1=invalid; 0=no supported; >0=tensor)
 
long _size
 Number of elements in the tensor.
 
long _stride [TENSOR_MAXDIM]
 Increment between elements in each dimension.
 

Detailed Description

template<class T>
class madness::SliceTensor< T >

Indexing a non-constant tensor with slices returns a SliceTensor.

A slice tensor differs from a tensor only in that assignment causes the data to be copied rather than entire new copy generated. You will usually not instantiate one except as a temporary produced by indexing a tensor with slice and then assigning it back to a tensor, or performing some other operation and discarding.

Constructor & Destructor Documentation

◆ SliceTensor() [1/3]

template<class T >
madness::SliceTensor< T >::SliceTensor ( )
private

◆ SliceTensor() [2/3]

template<class T >
madness::SliceTensor< T >::SliceTensor ( const Tensor< T > &  t,
const std::array< Slice, TENSOR_MAXDIM s 
)
inline

◆ SliceTensor() [3/3]

template<class T >
madness::SliceTensor< T >::SliceTensor ( const Tensor< T > &  t,
const Slice  s[] 
)
inline

◆ ~SliceTensor()

template<class T >
virtual madness::SliceTensor< T >::~SliceTensor ( )
inlinevirtual

Member Function Documentation

◆ operator=() [1/5]

template<class T >
template<class Q >
SliceTensor< T > & madness::SliceTensor< T >::operator= ( const SliceTensor< Q > &  t)
inline

References BINARY_OPTIMIZED_ITERATOR, Q(), and T().

◆ operator=() [2/5]

template<class T >
SliceTensor< T > & madness::SliceTensor< T >::operator= ( const SliceTensor< T > &  t)
inline

References BINARY_OPTIMIZED_ITERATOR, and T().

◆ operator=() [3/5]

template<class T >
SliceTensor< T > & madness::SliceTensor< T >::operator= ( const T t)
inline

References T(), and UNARY_OPTIMIZED_ITERATOR.

◆ operator=() [4/5]

template<class T >
template<class Q >
SliceTensor< T > & madness::SliceTensor< T >::operator= ( const Tensor< Q > &  t)
inline

References BINARY_OPTIMIZED_ITERATOR, Q(), and T().

◆ operator=() [5/5]

template<class T >
SliceTensor< T > & madness::SliceTensor< T >::operator= ( const Tensor< T > &  t)
inline

References BINARY_OPTIMIZED_ITERATOR, and T().


The documentation for this class was generated from the following files: