 Tensor
Tensor
Tensor
Description
The templated class tensor<value_t,format_t,storage_t> is the base container adaptor for dense tensors. 
Every element $t_{i_1,i_2,\dots,i_p}$ of a $p$-order $(n_1 \times n_2 \times \cdots \times n_p)$-dimensional tensor $T$ is mapped to $j$-th element of a one-dimensional container where $j = \sum_{r=1}^p i_r \cdot w_r$ with $1 \leq i_r \leq n_r $ for $1 \leq r \leq p$.
For the first-order orientation $w_1 = 1$ and $w_k = n_{k-1} \cdot w_{k-1}$ for $k > 1$. For last-order orientation $w_p = 1$ and $ w_k = n_{k+1} \cdot w_{k+1}$ for $k < p$. 
Example
#include <boost/numeric/ublas/tensor.hpp>
int main () {
  using namespace boost::numeric::ublas;
  tensor<double> t{4,2,3};
  for (auto k = 0ul; k < t.size (2); ++ k)
    for (auto j = 0ul; j < t.size (1); ++ j)
      for (auto i = 0ul; i < t.size (0); ++ i)
        t.at(i,j,k) = 3*i + 2*j + 5*k;
        
  std::cout << t << std::endl;
}
Definition
Defined in the header file tensor/tensor.hpp.
Model of
Tensor
Type requirements
None, except for those imposed by the requirements of Tensor .
Public base classes
tensor_container<tensor<value_t,format_t,storage_t> >
Template parameters
| Parameter | Description | Default | 
| value_t | The type of object stored in the tensor. |  | 
| format_t | Storage organization. [1] | first_order | 
| storage_t | The type of the Storage array. [2] | std::vector<value_t> | 
Member types
| Member type | Description | 
| value_type | Type value_tof the tensor elements. | 
| layout_type | Format of the tensor which is either first_orderorlast_order. | 
| array_type | Sequence container type that stores all tensor elements and is accessible with a single index. | 
| strides_type | Type of the strides vector basic_strides<std::size_t,layout_type>that stores all tensor elements and is accessible with a single index. | 
| extents_type | Type of the dimension extents vector shapethat stores all tensor elements and is accessible with a single index. | 
| size_type | Unsigned integer which is usually std::size_t. | 
| difference_type | Unsigned integer which is usually std::ptrdiff_t. | 
| reference | Reference type storage_type::referencewhich is in most casesvalue_type&. | 
| const_reference | Constant reference type storage_type::const_referencewhich is in most casesconst value_type&. | 
| pointer | Pointer type storage_type::pointerwhich is in most casesvalue_type*. | 
| const_pointer | Constant reference type storage_type::const_referencewhich is in most casesconst value_type*. | 
| iterator | RandomAccessIterator storage_type::iterator. | 
| const_iterator | Constant RandomAccessIterator storage_type::const_iterator. | 
| reverse_iterator | Reverse RandomAccessIterator storage_type::reverse_iterator. | 
| const_reverse_iterator | Reverse RandomAccessIterator storage_type::const_reverse_iterator. | 
| matrix_type | Type of the matrix matrix<value_type,layout_type,array_type>with which the tensor type interacts. | 
| vector_type | Type of the vector matrix<value_type,layout_type,array_type>with which the tensor type interacts. | 
Alias templates
| Alias template | Description | 
| template<class derived_type> using tensor_expression_type = detail::tensor_expression<self_type,derived_type>
 | Type of tensor_expression where self_typeis thetensortype. | 
| template<class derived_type> using matrix_expression_type = matrix_expression<derived_type>
 | Type of matrix_expression. | 
| template<class derived_type> using vector_expression_type = vector_expression<derived_type>
 | Type of vector_expression. | 
Member Functions
Construction
| Member function | Description | 
| tensor () | Constructs an uninitialized tensorthat holds zero elements. | 
|  tensor (std::initializer_list<size_type> list)  | Constructs an uninitialized tensorwherelistspecifies the dimension extents. | 
|  tensor (extents_type const& s)  | Constructs an uninitialized tensorwheresspecifies the dimension extents. | 
|  tensor (extents_type const& e, array_type const& a)  | Constructs an uninitialized tensorwhereespecifies the dimension extents andathe data elements of the tensor. | 
| tensor (tensor<value_type,other_layout&rt; const& other) | Constructs tensor by copying elements from otherwhere the layout is different from this layout type. | 
| tensor (tensor const& other) | Constructs tensor by copying elements from other. | 
| tensor (tensor && other) | Constructs tensor by moving elements from other. | 
| tensor (matrix_type const& other) | Constructs tensor by copying elements from othermatrix. The tensor will have the order 2. | 
| tensor (matrix_type && other) | Constructs tensor by moving elements from othermatrix. The tensor will have the order 2. | 
| tensor (vector_type const& other) | Constructs tensor by copying elements from othervector. The tensor will have the order 1. | 
| tensor (vector_type && other) | Constructs tensor by moving elements from othervector. The tensor will have the order 1. | 
| tensor (tensor_expression_type<derived_type> const& expr) | Constructs tensor by evaluating the tensor expression exprand copying all elements of the result. | 
| tensor (matrix_expression_type<derived_type> const& expr) | Constructs tensor by evaluating the matrix expression exprand copying all elements of the result. | 
| tensor (vector_expression_type<derived_type> const& expr) | Constructs tensor by evaluating the vector expression exprand copying all elements of the result. | 
Assignment
| Member function | Description | 
| tensor& operator=(tensor_expression_type<derived_type> const& expr) | Evaluates the tensor expression exprand copyies all elements of the result. | 
| tensor& operator=(tensor other) | Copies or moves elements of other. | 
| tensor& operator=(const_reference v) | Initialiates all elements of a tensor with v. | 
Capacity
| Member function | Description | 
| bool empty() const | Returns true if a tensor has zero elements. | 
| size_type size() const | Returns the number of elements of the tensor. | 
| size_type rank() const | Returns the number of dimensions of the tensor. | 
| size_type order() const | Returns the number of dimensions of the tensor. | 
| strides_type const& strides() const | Returns a constant reference to the strides of the tensor. | 
| extents_type const& extents() const | Returns a constant reference to the extents of the tensor. | 
Element access
| Member function | Description | 
| pointer data() | Returns a pointerthe first element of the tensor. | 
| const_pointer data() const | Returns a const_pointerthe first element of the tensor. | 
| reference operator[](size_type j) | Returns a referenceto thej-th element of the storage array of the tensor. Corresponds to the function calltensor::data()+j | 
| const_reference operator[](size_type j) const | Returns a const_referenceto thej-th element of the storage array of the tensor. Corresponds to the function calltensor::data()+j. | 
| template<class ... size_types> reference at(size_type i, size_types ... is)
 | Returns a referenceto the(i,is...)-th element of the tensor where (i,is...)denotes a multi-index withtensor::order()elements. Ifsizeof...(is)==0,tensor::operator[i]is called. | 
| template<class ... size_types> const_reference at(size_type i, size_types ... is)
 | Returns a const_referenceto the(i,is...)-th element of the tensor where (i,is...)denotes a multi-index withtensor::order()elements. Ifsizeof...(is)==0,tensor::operator[i]is called. | 
Proxy Generation
| Member function | Description | 
| template<std::size_t I, class ... index_types> tensor_index operator()(indices::Index<I> p, index_types ... ps)
 | Returns a tensor index instance with index objects (p,ps...)for a tensor contraction wheresizeof...(ps)+1must be equal totensor::order(). | 
Iterators
| Member function | Description | 
| const_iterator begin() const | Returns a const_iterator pointing to the first element of the tensor. | 
| const_iterator cbegin() const | Returns a const_iterator pointing to the first element of the tensor. | 
| iterator begin() | Returns an iterator pointing to the first element of the tensor. | 
| const_iterator end() const | Returns a const_iterator pointing to the position after the last element of the tensor. | 
| const_iterator cend() const | Returns a const_iterator pointing to the position after the last element of the tensor. | 
| iterator begin() | Returns an iterator pointing to the position after the last element of the tensor. | 
Modifiers
| Member function | Description | 
| void reshape(extents_type const& e, value_type v = value_type{}) | Reshapes the tensor according to the extents e. Ife.product()is greater thantensor::size(), the tensor is resized withv. | 
Notes
[1] Supported parameters
for the storage organization are first_order and
last_order.
[2] Common parameters
for the storage array are std::array<N,T> and
std::vector<T>.
Copyright (©) 2018 Cem Bassoy
   Use, modification and distribution are subject to the
   Boost Software License, Version 1.0.
   (See accompanying file LICENSE_1_0.txt
   or copy at 
      http://www.boost.org/LICENSE_1_0.txt
   ).