|
Tensorium
|
A multi-dimensional aligned tensor for numerical derivatives. More...
#include <Derivate.hpp>
Public Types | |
| using | reg = typename Simd::reg |
| using | reg = typename Simd::reg |
Public Member Functions | |
| DerivateND (const std::array< size_t, Rank > &dims) | |
| Construct a tensor with a given shape. | |
| size_t | flatten_index (const std::array< size_t, Rank > &indices) const |
| K & | operator() (const std::array< size_t, Rank > &indices) |
| Mutable access to a tensor element. | |
| const K & | operator() (const std::array< size_t, Rank > &indices) const |
| Const access to a tensor element. | |
| size_t | size () const |
| Total number of elements in the tensor. | |
| __attribute__ ((always_inline, hot, flatten)) inline void centered_derivative(const DerivateND< K | |
| Compute second-order centered derivative along an axis. | |
| for (int i=Rank - 2;i >=0;--i) strides[i] | |
| for (size_t flat=0;flat< total;flat+=simd_width) | |
| __attribute__ ((always_inline, hot, flatten)) inline void centered_derivative_order4_rank(const DerivateND< K | |
| Compute fourth-order centered derivative along an axis. | |
| for (int i=Rank - 2;i >=0;--i) strides[i] | |
| for (size_t flat=0;flat< total;flat+=W) | |
Public Attributes | |
| std::array< size_t, Rank > | shape = input.shape |
| aligned_vector< K > | data |
| size_t | block_size |
| Rank & | input |
| Rank DerivateND< K, Rank > & | output |
| Rank DerivateND< K, Rank > size_t | axis |
| Rank DerivateND< K, Rank > size_t K dx | const |
| const size_t | simd_width = Simd::width |
| const auto & | shape = input.shape |
| const size_t | total = input.size() |
| const K | inv_2dx = K(1) / (K(2) * dx) |
| const reg | inv2dx = Simd::set1(inv_2dx) |
| std::array< size_t, Rank > | strides |
| strides [Rank - 1] = 1 | |
| const size_t | stride_axis = strides[axis] |
| const size_t | dim_axis = shape[axis] |
| constexpr size_t | W = Simd::width |
| const K | inv_12dx = K(1) / (K(12) * dx) |
| const reg | inv = Simd::set1(inv_12dx) |
A multi-dimensional aligned tensor for numerical derivatives.
| K | Scalar type. |
| Rank | Tensor rank (dimensionality). |
|
inline |
Construct a tensor with a given shape.
| dims | Tensor dimensions. |
References tensorium::DerivateND< K, Rank >::block_size.
| tensorium::DerivateND< K, Rank >::__attribute__ | ( | (always_inline, hot, flatten) | ) | const |
Compute second-order centered derivative along an axis.
| input | Input tensor. |
| output | Output tensor. |
| axis | Axis to differentiate. |
| dx | Grid spacing. |
| tensorium::DerivateND< K, Rank >::__attribute__ | ( | (always_inline, hot, flatten) | ) | const |
Compute fourth-order centered derivative along an axis.
| input | Input tensor. |
| output | Output tensor. |
| axis | Axis to differentiate. |
| dx | Grid spacing. |
|
inline |
References tensorium::DerivateND< K, Rank >::shape.
Referenced by tensorium::DerivateND< K, Rank >::operator()(), and tensorium::DerivateND< K, Rank >::operator()().
| tensorium::DerivateND< K, Rank >::for | ( | int | i = Rank - 2;i >=0;--i | ) |
| tensorium::DerivateND< K, Rank >::for | ( | int | i = Rank - 2;i >=0;--i | ) |
|
inline |
References tensorium::DerivateND< K, Rank >::dim_axis, tensorium::DerivateND< K, Rank >::input, tensorium::DerivateND< K, Rank >::inv2dx, tensorium::DerivateND< K, Rank >::inv_2dx, tensorium::DerivateND< K, Rank >::output, tensorium::DerivateND< K, Rank >::simd_width, tensorium::DerivateND< K, Rank >::stride_axis, and tensorium::DerivateND< K, Rank >::total.
|
inline |
References tensorium::DerivateND< K, Rank >::dim_axis, tensorium::DerivateND< K, Rank >::input, tensorium::DerivateND< K, Rank >::inv, tensorium::DerivateND< K, Rank >::inv_12dx, tensorium::DerivateND< K, Rank >::output, tensorium::DerivateND< K, Rank >::stride_axis, tensorium::DerivateND< K, Rank >::total, and tensorium::DerivateND< K, Rank >::W.
|
inline |
Mutable access to a tensor element.
| indices | Multi-index. |
References tensorium::DerivateND< K, Rank >::data, and tensorium::DerivateND< K, Rank >::flatten_index().
|
inline |
Const access to a tensor element.
| indices | Multi-index. |
References tensorium::DerivateND< K, Rank >::data, and tensorium::DerivateND< K, Rank >::flatten_index().
Total number of elements in the tensor.
References tensorium::DerivateND< K, Rank >::data.
| Rank DerivateND< K, Rank > size_t tensorium::DerivateND< K, Rank >::axis |
Referenced by tensorium::DerivateND< K, Rank >::DerivateND().
| Rank DerivateND< K, Rank > size_t K dx tensorium::DerivateND< K, Rank >::const |
| aligned_vector<K> tensorium::DerivateND< K, Rank >::data |
Referenced by tensorium::DerivateND< K, Rank >::for(), and tensorium::DerivateND< K, Rank >::for().
| Rank & tensorium::DerivateND< K, Rank >::input |
Referenced by tensorium::DerivateND< K, Rank >::for(), and tensorium::DerivateND< K, Rank >::for().
| const reg tensorium::DerivateND< K, Rank >::inv = Simd::set1(inv_12dx) |
Referenced by tensorium::DerivateND< K, Rank >::for().
| const reg tensorium::DerivateND< K, Rank >::inv2dx = Simd::set1(inv_2dx) |
Referenced by tensorium::DerivateND< K, Rank >::for().
Referenced by tensorium::DerivateND< K, Rank >::for().
Referenced by tensorium::DerivateND< K, Rank >::for().
| Rank DerivateND< K, Rank > & tensorium::DerivateND< K, Rank >::output |
Referenced by tensorium::DerivateND< K, Rank >::for(), and tensorium::DerivateND< K, Rank >::for().
| const auto & tensorium::DerivateND< K, Rank >::shape = input.shape |
Referenced by tensorium::DerivateND< K, Rank >::flatten_index().
| const auto& tensorium::DerivateND< K, Rank >::shape = input.shape |
| const size_t tensorium::DerivateND< K, Rank >::simd_width = Simd::width |
Referenced by tensorium::DerivateND< K, Rank >::for().
Referenced by tensorium::DerivateND< K, Rank >::for(), and tensorium::DerivateND< K, Rank >::for().
| std::array< size_t, Rank > tensorium::DerivateND< K, Rank >::strides |
| tensorium::DerivateND< K, Rank >::strides[Rank - 1] = 1 |
| const size_t tensorium::DerivateND< K, Rank >::total = input.size() |
Referenced by tensorium::DerivateND< K, Rank >::for(), and tensorium::DerivateND< K, Rank >::for().
|
constexpr |
Referenced by tensorium::DerivateND< K, Rank >::for().