3rdParty/boost/1.78.0/libs/numeric/ublas/doc/tensor.html
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$.
**#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;
}
Defined in the header file tensor/tensor.hpp.
None, except for those imposed by the requirements of Tensor .
tensor_container<tensor<value_t,format_t,storage_t> >
| 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 type | Description |
|---|---|
value_type | Type value_t of the tensor elements. |
layout_type | Format of the tensor which is either first_order or last_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 shape that 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::reference which is in most cases value_type&. |
const_reference | Constant reference type storage_type::const_reference which is in most cases const value_type&. |
pointer | Pointer type storage_type::pointer which is in most cases value_type*. |
const_pointer | Constant reference type storage_type::const_reference which is in most cases const 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 template | Description |
|---|---|
template<class derived_type> using tensor_expression_type = detail::tensor_expression<self_type,derived_type> | Type of tensor_expression where self_type is the tensor type. |
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 function | Description |
|---|---|
tensor () | Constructs an uninitialized tensor that holds zero elements. |
tensor (std::initializer_list<size_type> list) | Constructs an uninitialized tensor where list specifies the dimension extents. |
tensor (extents_type const& s) | Constructs an uninitialized tensor where s specifies the dimension extents. |
tensor (extents_type const& e, array_type const& a) | Constructs an uninitialized tensor where e specifies the dimension extents and a the data elements of the tensor. |
tensor (tensor<value_type,other_layout&rt; const& other) | Constructs tensor by copying elements from other where 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 other matrix. The tensor will have the order 2. |
tensor (matrix_type && other) | Constructs tensor by moving elements from other matrix. The tensor will have the order 2. |
tensor (vector_type const& other) | Constructs tensor by copying elements from other vector. The tensor will have the order 1. |
tensor (vector_type && other) | Constructs tensor by moving elements from other vector. The tensor will have the order 1. |
tensor (tensor_expression_type<derived_type> const& expr) | Constructs tensor by evaluating the tensor expression expr and copying all elements of the result. |
tensor (matrix_expression_type<derived_type> const& expr) | Constructs tensor by evaluating the matrix expression expr and copying all elements of the result. |
tensor (vector_expression_type<derived_type> const& expr) | Constructs tensor by evaluating the vector expression expr and copying all elements of the result. |
| Member function | Description |
|---|---|
tensor& operator=(tensor_expression_type<derived_type> const& expr) | Evaluates the tensor expression expr and 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. |
| 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. |
| Member function | Description |
|---|---|
pointer data() | Returns a pointer the first element of the tensor. |
const_pointer data() const | Returns a const_pointer the first element of the tensor. |
reference operator[](size_type j) | Returns a reference to the j-th element of the storage array of the tensor. Corresponds to the function call tensor::data()+j |
const_reference operator[](size_type j) const | Returns a const_reference to the j-th element of the storage array of the tensor. Corresponds to the function call tensor::data()+j. |
template<class ... size_types> reference at(size_type i, size_types ... is) | Returns a reference to the (i,is...)-th element of the tensor where (i,is...) denotes a multi-index with tensor::order() elements. If sizeof...(is)==0, tensor::operator[i] is called. |
template<class ... size_types> const_reference at(size_type i, size_types ... is) | Returns a const_reference to the (i,is...)-th element of the tensor where (i,is...) denotes a multi-index with tensor::order() elements. If sizeof...(is)==0, tensor::operator[i] is called. |
| 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 where sizeof...(ps)+1 must be equal to tensor::order(). |
| 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. |
| Member function | Description |
|---|---|
void reshape(extents_type const& e, value_type v = value_type{}) | Reshapes the tensor according to the extents e. If e.product() is greater than tensor::size(), the tensor is resized with v. |
[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).