123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652 |
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <meta name="generator" content="Bluefish 2.2.10" />
- <meta http-equiv="Content-Type" content=
- "text/html; charset=us-ascii" />
- <link rel="stylesheet" href="../../../../boost.css" type="text/css"/>
- <link rel="stylesheet" href="ublas.css" type="text/css" />
- <script type="text/javascript" src="js/jquery-1.3.2.min.js" async="async" ></script>
- <script type="text/javascript" src="js/jquery.toc-gw.js" async="async" ></script>
- <script type="text/x-mathjax-config">
- MathJax.Hub.Config({
- jax: ["input/TeX", "output/HTML-CSS"],
- extensions: ["tex2jax.js"],
- "HTML-CSS": { preferredFont: "TeX", availableFonts: ["STIX","TeX"], scale: "80" },
- tex2jax: {
- inlineMath: [ ["$", "$"], ["\\(","\\)"] ],
- displayMath: [ ["$$","$$"], ["\\[", "\\]"] ],
- processEscapes: true,
- ignoreClass: "tex2jax_ignore|dno" },
- TeX: { noUndefined: { attributes: { mathcolor: "red", mathbackground: "#FFEEEE", mathsize: "90%" } } },
- messageStyle: "none"
- });
- </script>
- <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js"></script>
- <title>Tensor</title>
- </head>
- <body>
- <h1><img src="../../../../boost.png" align="middle" />Tensor</h1>
- <div class="toc" id="toc"></div>
- <h2><a name="tensor"></a>Tensor</h2>
- <h4>Description</h4>
- <p>The templated class <code>tensor<value_t,format_t,storage_t></code> 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$.
- </p>
- <h4>Example</h4>
- <pre>
- <b>#include</b> <boost/numeric/ublas/tensor.hpp>
- <b>int</b> main () {
- <b>using namespace</b> boost::numeric::ublas;
- tensor<<b>double</b>> t{4,2,3};
- <b>for</b> (<b>auto</b> k = 0ul; k < t.size (2); ++ k)
- <b>for</b> (<b>auto</b> j = 0ul; j < t.size (1); ++ j)
- <b>for</b> (<b>auto</b> i = 0ul; i < t.size (0); ++ i)
- t.at(i,j,k) = 3*i + 2*j + 5*k;
-
- std::cout << t << std::endl;
- }
- </pre>
- <h4>Definition</h4>
- <p>Defined in the header file <code>tensor/tensor.hpp</code>.</p>
- <h4>Model of</h4>
- <p><a href="container_concept.html#tensor">Tensor</a></p>
- <h4>Type requirements</h4>
- <p>None, except for those imposed by the requirements of <a href="container_concept.html#tensor">Tensor</a> .</p>
- <h4>Public base classes</h4>
- <p><code>tensor_container<tensor<value_t,format_t,storage_t> ></code></p>
- <h4>Template parameters</h4>
- <table border="1" summary="parameters">
- <tbody>
- <tr>
- <th>Parameter</th>
- <th>Description</th>
- <th>Default</th>
- </tr>
- <tr>
- <td><code>value_t</code></td>
- <td>The type of object stored in the tensor.</td>
- <td></td>
- </tr>
- <tr>
- <td><code>format_t</code></td>
- <td>Storage organization. <a href=
- "#tensor_1">[1]</a></td>
- <td><code>first_order</code></td>
- </tr>
- <tr>
- <td><code>storage_t</code></td>
- <td>The type of the Storage array. <a href="#tensor_2">[2]</a></td>
- <td><code>std::vector<value_t></code></td>
- </tr>
- </tbody>
- </table>
- <h4>Member types</h4>
- <table border="1" style="font-size:100%" summary="members">
- <tbody style="font-size:100%" >
- <tr>
- <th>Member type</th>
- <th>Description</th>
- </tr>
- <tr>
- <td><code>value_type</code></td>
- <td>Type <code>value_t</code> of the tensor elements.</td>
- </tr>
- <tr>
- <td><code>layout_type</code></td>
- <td>Format of the tensor which is either <code>first_order</code> or <code>last_order</code>.</td>
- </tr>
- <tr>
- <td><code>array_type</code></td>
- <td>Sequence container type that stores all tensor elements and is accessible with a single index.</td>
- </tr>
- <tr>
- <td><code>strides_type</code></td>
- <td>Type of the strides vector <code>basic_strides<std::size_t,layout_type></code> that stores all tensor elements and is accessible with a single index.</td>
- </tr>
- <tr>
- <td><code>extents_type</code></td>
- <td>Type of the dimension extents vector <code>shape</code> that stores all tensor elements and is accessible with a single index.</td>
- </tr>
- <tr>
- <td><code>size_type</code></td>
- <td>Unsigned integer which is usually <code>std::size_t</code>.</td>
- </tr>
- <tr>
- <td><code>difference_type</code></td>
- <td>Unsigned integer which is usually <code>std::ptrdiff_t</code>.</td>
- </tr>
- <tr>
- <td><code>reference</code></td>
- <td>Reference type <code>storage_type::reference</code> which is in most cases <code>value_type&</code>.</td>
- </tr>
- <tr>
- <td><code>const_reference</code></td>
- <td>Constant reference type <code>storage_type::const_reference</code> which is in most cases <code>const value_type&</code>.</td>
- </tr>
- <tr>
- <td><code>pointer</code></td>
- <td>Pointer type <code>storage_type::pointer</code> which is in most cases <code>value_type*</code>.</td>
- </tr>
- <tr>
- <td><code>const_pointer</code></td>
- <td>Constant reference type <code>storage_type::const_reference</code> which is in most cases <code>const value_type*</code>.</td>
- </tr>
- <tr>
- <td><code>iterator</code></td>
- <td>RandomAccessIterator <code>storage_type::iterator</code>.</td>
- </tr>
- <tr>
- <td><code>const_iterator</code></td>
- <td>Constant RandomAccessIterator <code>storage_type::const_iterator</code>.</td>
- </tr>
- <tr>
- <td><code>reverse_iterator</code></td>
- <td>Reverse RandomAccessIterator <code>storage_type::reverse_iterator</code>.</td>
- </tr>
- <tr>
- <td><code>const_reverse_iterator</code></td>
- <td>Reverse RandomAccessIterator <code>storage_type::const_reverse_iterator</code>.</td>
- </tr>
- <tr>
- <td><code>matrix_type</code></td>
- <td>Type of the matrix <code>matrix<value_type,layout_type,array_type></code> with which the tensor type interacts.</td>
- </tr>
- <tr>
- <td><code>vector_type</code></td>
- <td>Type of the vector <code>matrix<value_type,layout_type,array_type></code> with which the tensor type interacts.</td>
- </tr>
- </tbody>
- </table>
- <h4>Alias templates</h4>
- <table border="1" style="font-size:100%" summary="members">
- <tbody style="font-size:100%" >
- <tr>
- <th>Alias template</th>
- <th>Description</th>
- <tr>
- <td><code>template<class derived_type> <br> using tensor_expression_type = detail::tensor_expression<self_type,derived_type></code></td>
- <td>Type of <a href= "tensor/tensor_expression.html#tensor_expression">tensor_expression</a> where <code>self_type</code> is the <code>tensor</code> type.</td>
- </tr>
- <tr>
- <td><code>template<class derived_type> <br> using matrix_expression_type = matrix_expression<derived_type></code></td>
- <td>Type of <a href= "matrix_expression.html#matrix_expression">matrix_expression</a>.</td>
- </tr>
- <tr>
- <td><code>template<class derived_type> <br> using vector_expression_type = vector_expression<derived_type></code></td>
- <td>Type of <a href= "vector_expression.html#vector_expression">vector_expression</a>.</td>
- </tr>
- </tbody>
- </table>
- <h3>Member Functions</h3>
- <h4>Construction</h4>
- <table border="1" style="font-size:100%" summary="constructors">
- <tbody style="font-size:100%" >
- <tr>
- <th>Member function</th>
- <th>Description</th>
- </tr>
- <tr>
- <td><code>tensor ()</code></td>
- <td>Constructs an uninitialized <code>tensor</code> that holds zero elements.</td>
- </tr>
- <tr>
- <td><code> tensor (std::initializer_list<size_type> list) </code></td>
- <td>Constructs an uninitialized <code>tensor</code> where <code>list</code> specifies the dimension <a href="tensor/extents.html">extents</a>.</td>
- </tr>
- <tr>
- <td><code> tensor (extents_type const& s) </code></td>
- <td>Constructs an uninitialized <code>tensor</code> where
- <code>s</code> specifies the dimension <a href="tensor/extents.html">extents</a>.</td>
- </tr>
- <tr>
- <td><code> tensor (extents_type const& e, array_type const& a) </code></td>
- <td>Constructs an uninitialized <code>tensor</code> where
- <code>e</code> specifies the dimension <a href="tensor/extents.html">extents</a> and <code>a</code> the data elements of the tensor.</td>
- </tr>
- <tr>
- <td><code>tensor (tensor<value_type,other_layout&rt; const& other)</code></td>
- <td>Constructs tensor by copying elements from <code>other</code> where the layout is different from this layout type.</td>
- </tr>
- <tr>
- <td><code>tensor (tensor const& other)</code></td>
- <td>Constructs tensor by copying elements from <code>other</code>.</td>
- </tr>
- <tr>
- <td><code>tensor (tensor && other)</code></td>
- <td>Constructs tensor by moving elements from <code>other</code>.</td>
- </tr>
- <tr>
- <td><code>tensor (matrix_type const& other)</code></td>
- <td>Constructs tensor by copying elements from <code>other</code> <a href="matrix.html">matrix</a>. The tensor will have the order 2.</td>
- </tr>
- <tr>
- <td><code>tensor (matrix_type && other)</code></td>
- <td>Constructs tensor by moving elements from <code>other</code> <a href="matrix.html">matrix</a>. The tensor will have the order 2.</td>
- </tr>
- <tr>
- <td><code>tensor (vector_type const& other)</code></td>
- <td>Constructs tensor by copying elements from <code>other</code> <a href="vector.html">vector</a>. The tensor will have the order 1.</td>
- </tr>
- <tr>
- <td><code>tensor (vector_type && other)</code></td>
- <td>Constructs tensor by moving elements from <code>other</code> <a href="vector.html">vector</a>. The tensor will have the order 1.</td>
- </tr>
- <tr>
- <td><code>tensor (tensor_expression_type<derived_type> const& expr)</code></td>
- <td>Constructs tensor by evaluating the <a href="tensor/tensor_expression.html">tensor expression</a> <code>expr</code> and copying all elements of the result.</td>
- </tr>
- <tr>
- <td><code>tensor (matrix_expression_type<derived_type> const& expr)</code></td>
- <td>Constructs tensor by evaluating the <a href="matrix_expression.html">matrix expression</a> <code>expr</code> and copying all elements of the result.</td>
- </tr>
- <tr>
- <td><code>tensor (vector_expression_type<derived_type> const& expr)</code></td>
- <td>Constructs tensor by evaluating the <a href="vector_expression.html">vector expression</a> <code>expr</code> and copying all elements of the result.</td>
- </tr>
- </tbody>
- </table>
- <!-------------------------------------------->
- <h4>Assignment</h4>
- <table border="1" style="font-size:100%" summary="constructors">
- <tbody style="font-size:100%" >
- <tr>
- <th>Member function</th>
- <th>Description</th>
- </tr>
- <tr>
- <td><code>tensor& operator=(tensor_expression_type<derived_type> const& expr)</code></td>
- <td>Evaluates the <a href="tensor/tensor_expression.html">tensor expression</a> <code>expr</code> and copyies all elements of the result.</td>
- </tr>
- <tr>
- <td><code>tensor& operator=(tensor other)</code></td>
- <td>Copies or moves elements of <code>other</code>.</td>
- </tr>
- <tr>
- <td><code>tensor& operator=(const_reference v)</code></td>
- <td>Initialiates all elements of a tensor with <code>v</code>.</td>
- </tr>
- </tbody>
- </table>
- <!-------------------------------------------->
- <h4>Capacity</h4>
- <table border="1" style="font-size:100%" summary="capacity">
- <tbody style="font-size:100%" >
- <tr>
- <th>Member function</th>
- <th>Description</th>
- </tr>
- <tr>
- <td><code>bool empty() const</code></td>
- <td>Returns true if a tensor has zero elements.</td>
- </tr>
- <tr>
- <td><code>size_type size() const</code></td>
- <td>Returns the number of elements of the tensor.</td>
- </tr>
- <tr>
- <td><code>size_type rank() const</code></td>
- <td>Returns the number of dimensions of the tensor.</td>
- </tr>
- <tr>
- <td><code>size_type order() const</code></td>
- <td>Returns the number of dimensions of the tensor.</td>
- </tr>
- <tr>
- <td><code>strides_type const& strides() const</code></td>
- <td>Returns a constant reference to the <a href="tensor/strides.html">strides</a> of the tensor.</td>
- </tr>
- <tr>
- <td><code>extents_type const& extents() const</code></td>
- <td>Returns a constant reference to the <a href="tensor/extents.html">extents</a> of the tensor.</td>
- </tr>
- </tbody>
- </table>
- <!-------------------------------------------->
- <h4>Element access</h4>
- <table border="1" style="font-size:100%" summary="capacity">
- <tbody style="font-size:100%" >
- <tr>
- <th>Member function</th>
- <th>Description</th>
- </tr>
- <tr>
- <td><code>pointer data()</code></td>
- <td>Returns a <code>pointer</code> the first element of the tensor.</td>
- </tr>
- <tr>
- <td><code>const_pointer data() const</code></td>
- <td>Returns a <code>const_pointer</code> the first element of the tensor.</td>
- </tr>
- <tr>
- <td><code>reference operator[](size_type j)</code></td>
- <td>Returns a <code>reference</code> to the <code>j</code>-th element of the storage array of the tensor. Corresponds to the function call <code>tensor::data()+j</code></td>
- </tr>
- <tr>
- <td><code>const_reference operator[](size_type j) const</code></td>
- <td>Returns a <code>const_reference</code> to the <code>j</code>-th element of the storage array of the tensor. Corresponds to the function call <code>tensor::data()+j</code>.</td>
- </tr>
- <tr>
- <td><code>template<class ... size_types> <br> reference at(size_type i, size_types ... is)</code></td>
- <td>Returns a <code>reference</code> to the <code>(i,is...)</code>-th element of the tensor where <code> (i,is...)</code> denotes a multi-index with <code>tensor::order()</code> elements. If <code>sizeof...(is)==0</code>, <code>tensor::operator[i]</code> is called. </td>
- </tr>
- <tr>
- <td><code>template<class ... size_types> <br> const_reference at(size_type i, size_types ... is)</code></td>
- <td>Returns a <code>const_reference</code> to the <code>(i,is...)</code>-th element of the tensor where <code> (i,is...)</code> denotes a multi-index with <code>tensor::order()</code> elements. If <code>sizeof...(is)==0</code>, <code>tensor::operator[i]</code> is called. </td>
- </tr>
- </tbody>
- </table>
- <!-------------------------------------------->
- <h4>Proxy Generation</h4>
- <table border="1" style="font-size:100%" summary="capacity">
- <tbody style="font-size:100%" >
- <tr>
- <th>Member function</th>
- <th>Description</th>
- </tr>
- <tr>
- <td><code>template<std::size_t I, class ... index_types> <br> tensor_index operator()(indices::Index<I> p, index_types ... ps)</code></td>
- <td>Returns a <a href="tensor/tensor_index.html">tensor index</a> instance with index objects <code>(p,ps...)</code> for a tensor contraction where <code>sizeof...(ps)+1</code> must be equal to <code>tensor::order()</code>.</td>
- </tr>
- </tbody>
- </table>
- <h4>Iterators</h4>
- <table border="1" style="font-size:100%" summary="iterators">
- <tbody style="font-size:100%" >
- <tr>
- <th>Member function</th>
- <th>Description</th>
- </tr>
- <tr>
- <td><code>const_iterator begin() const</code></td>
- <td>Returns a const_iterator pointing to the first element of the tensor.</td>
- </tr>
- <tr>
- <td><code>const_iterator cbegin() const</code></td>
- <td>Returns a const_iterator pointing to the first element of the tensor.</td>
- </tr>
- <tr>
- <td><code>iterator begin()</code></td>
- <td>Returns an iterator pointing to the first element of the tensor.</td>
- </tr>
- <tr>
- <td><code>const_iterator end() const</code></td>
- <td>Returns a const_iterator pointing to the position after the last element of the tensor.</td>
- </tr>
- <tr>
- <td><code>const_iterator cend() const</code></td>
- <td>Returns a const_iterator pointing to the position after the last element of the tensor.</td>
- </tr>
- <tr>
- <td><code>iterator begin()</code></td>
- <td>Returns an iterator pointing to the position after the last element of the tensor.</td>
- </tr>
- </tbody>
- </table>
- <h4>Modifiers</h4>
- <table border="1" style="font-size:100%" summary="modifiers">
- <tbody style="font-size:100%" >
- <tr>
- <th>Member function</th>
- <th>Description</th>
- </tr>
- <tr>
- <td><code>void reshape(extents_type const& e, value_type v = value_type{})</code></td>
- <td>Reshapes the tensor according to the extents <code>e</code>. If <code>e.product()</code> is greater than <code>tensor::size()</code>, the tensor is resized with <code>v</code>. </td>
- </tr>
- </tbody>
- </table>
- <h4>Notes</h4>
- <p><a name="tensor_1">[1]</a> Supported parameters
- for the storage organization are <code>first_order</code> and
- <code>last_order</code>.</p>
- <p><a name="tensor_2">[2]</a> Common parameters
- for the storage array are <code>std::array<N,T></code> and
- <code>std::vector<T></code>.</p>
- <!-- ----------------------------------------------------
- <h2><a name="identity_tensor"></a>Identity Tensor</h2>
- <h4>Description</h4>
- <p>The templated class <code>identity_tensor<T, ALLOC></code>
- represents identity matrices. For a <em>(m x n</em>)-dimensional
- identity tensor and <em>0 <= i < m</em>, <em>0 <= j <
- n</em> holds <em>id</em><sub><em>i, j</em></sub> <em>= 0</em>, if
- <em>i <> j</em>, and <em>id</em><sub><em>i, i</em></sub><em>=
- 1</em>.</p>
- <h4>Example</h4>
- <pre>
- #include <boost/numeric/ublas/tensor.hpp>
- #include <boost/numeric/ublas/io.hpp>
- int main () {
- using namespace boost::numeric::ublas;
- identity_tensor<double> m (3);
- std::cout << m << std::endl;
- }
- </pre>
- <h4>Definition</h4>
- <p>Defined in the header tensor.hpp.</p>
- <h4>Template parameters</h4>
- <table border="1" summary="parameters">
- <tbody>
- <tr>
- <th>Parameter</th>
- <th>Description</th>
- <th>Default</th>
- </tr>
- <tr>
- <td><code>T</code></td>
- <td>The type of object stored in the tensor.</td>
- <td><code>int</code></td>
- </tr>
- <tr>
- <td><code>ALLOC</code></td>
- <td>An STL Allocator for size_type and difference_type.</td>
- <td>std::allocator</td>
- </tr>
- </tbody>
- </table>
- <h4>Model of</h4>
- <p><a href="container_concept.html#tensor">Tensor</a> .</p>
- <h4>Type requirements</h4>
- <p>None, except for those imposed by the requirements of
- <a href="container_concept.html#tensor">Tensor</a> .</p>
- <h4>Public base classes</h4>
- <p><code>tensor_container<identity_tensor<T>
- ></code></p>
- <h4>Members</h4>
- <table border="1" summary="members">
- <tbody>
- <tr>
- <th>Member</th>
- <th>Description</th>
- </tr>
- <tr>
- <td><code>identity_tensor ()</code></td>
- <td>Constructs an <code>identity_tensor</code> that holds zero rows
- of zero elements.</td>
- </tr>
- <tr>
- <td><code>identity_tensor (size_type size)</code></td>
- <td>Constructs an <code>identity_tensor</code> that holds
- <code>size</code> rows of <code>size</code> elements.</td>
- </tr>
- <tr>
- <td><code>identity_tensor (const identity_tensor
- &m)</code></td>
- <td>The copy constructor.</td>
- </tr>
- <tr>
- <td><code>void resize (size_type size, bool preserve =
- true)</code></td>
- <td>Resizes a <code>identity_tensor</code> to hold
- <code>size</code> rows of <code>size</code> elements. Therefore the
- existing elements of the <code>itendity_tensor</code> are always
- preseved.</td>
- </tr>
- <tr>
- <td><code>size_type size1 () const</code></td>
- <td>Returns the number of rows.</td>
- </tr>
- <tr>
- <td><code>size_type size2 () const</code></td>
- <td>Returns the number of columns.</td>
- </tr>
- <tr>
- <td><code>const_reference operator () (size_type i, size_type j)
- const</code></td>
- <td>Returns the value of the <code>j</code>-th element in the
- <code>i</code>-th row.</td>
- </tr>
- <tr>
- <td><code>identity_tensor &operator = (const identity_tensor
- &m)</code></td>
- <td>The assignment operator.</td>
- </tr>
- <tr>
- <td><code>identity_tensor &assign_temporary (identity_tensor
- &m)</code></td>
- <td>Assigns a temporary. May change the identity tensor
- <code>m</code> .</td>
- </tr>
- <tr>
- <td><code>void swap (identity_tensor &m)</code></td>
- <td>Swaps the contents of the identity matrices.</td>
- </tr>
- <tr>
- <td><code>const_iterator1 begin1 () const</code></td>
- <td>Returns a <code>const_iterator1</code> pointing to the
- beginning of the <code>identity_tensor</code>.</td>
- </tr>
- <tr>
- <td><code>const_iterator1 end1 () const</code></td>
- <td>Returns a <code>const_iterator1</code> pointing to the end of
- the <code>identity_tensor</code>.</td>
- </tr>
- <tr>
- <td><code>const_iterator2 begin2 () const</code></td>
- <td>Returns a <code>const_iterator2</code> pointing to the
- beginning of the <code>identity_tensor</code>.</td>
- </tr>
- <tr>
- <td><code>const_iterator2 end2 () const</code></td>
- <td>Returns a <code>const_iterator2</code> pointing to the end of
- the <code>identity_tensor</code>.</td>
- </tr>
- <tr>
- <td><code>const_reverse_iterator1 rbegin1 () const</code></td>
- <td>Returns a <code>const_reverse_iterator1</code> pointing to the
- beginning of the reversed <code>identity_tensor</code>.</td>
- </tr>
- <tr>
- <td><code>const_reverse_iterator1 rend1 () const</code></td>
- <td>Returns a <code>const_reverse_iterator1</code> pointing to the
- end of the reversed <code>identity_tensor</code>.</td>
- </tr>
- <tr>
- <td><code>const_reverse_iterator2 rbegin2 () const</code></td>
- <td>Returns a <code>const_reverse_iterator2</code> pointing to the
- beginning of the reversed <code>identity_tensor</code>.</td>
- </tr>
- <tr>
- <td><code>const_reverse_iterator2 rend2 () const</code></td>
- <td>Returns a <code>const_reverse_iterator2</code> pointing to the
- end of the reversed <code>identity_tensor</code>.</td>
- </tr>
- </tbody>
- </table>
- ----------------------------------------------------
- -->
- <hr/>
- <p>Copyright (©) 2018 Cem Bassoy<br />
- Use, modification and distribution are subject to the
- Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt
- or copy at <a href="http://www.boost.org/LICENSE_1_0.txt">
- http://www.boost.org/LICENSE_1_0.txt
- </a>).
- </p>
- <script type="text/javascript">
- (function($) {
- $('#toc').toc();
- })(jQuery);
- </script>
- </body>
- </html>
|