Tensorium
Loading...
Searching...
No Matches
tensorium::Derivate< K > Class Template Reference

A 2D aligned matrix for numerical derivatives. More...

#include <Derivate.hpp>

Collaboration diagram for tensorium::Derivate< K >:

Public Types

using reg = typename Simd::reg
 
using reg = typename Simd::reg
 

Public Member Functions

 Derivate (size_t r, size_t c)
 Constructor with explicit dimensions.
 
 Derivate (const Matrix< K > &m)
 Construct from an existing matrix.
 
Koperator() (size_t i, size_t j)
 Mutable access to an element.
 
const Koperator() (size_t i, size_t j) const
 Const access to an element.
 
size_t size () const
 Total number of elements in the matrix.
 
 __attribute__ ((always_inline, hot, flatten)) inline void centered_derivative(const Derivate< K > &input
 Compute second-order centered derivative.
 
 if (axis==1)
 
else if (axis==0)
 
 __attribute__ ((always_inline, hot, flatten)) inline void centered_derivative_order4(const Derivate< K > &input
 Compute fourth-order centered derivative.
 
 if (axis==1)
 
else if (axis==0)
 

Public Attributes

size_t rows
 
size_t cols
 
aligned_vector< Kdata
 
size_t block_size
 
Derivate< K > & output
 
Derivate< K > size_t axis
 
Derivate< K > size_t K dx const
 
const size_t simd_width = Simd::width
 
const K inv_2dx = K(1) / (K(2) * dx)
 
 else
 
Derivate< K > size_t K dx
 
constexpr size_t W = Simd::width
 
const K inv_12dx = K(1) / (K(12) * dx)
 
const reg inv = Simd::set1(inv_12dx)
 
const reg eight = Simd::set1(8.0f)
 

Detailed Description

template<typename K>
class tensorium::Derivate< K >

A 2D aligned matrix for numerical derivatives.

Template Parameters
KScalar type (e.g., float, double).

Member Typedef Documentation

◆ reg [1/2]

template<typename K >
using tensorium::Derivate< K >::reg = typename Simd::reg

◆ reg [2/2]

template<typename K >
using tensorium::Derivate< K >::reg = typename Simd::reg

Constructor & Destructor Documentation

◆ Derivate() [1/2]

template<typename K >
tensorium::Derivate< K >::Derivate ( size_t r,
size_t c )
inline

Constructor with explicit dimensions.

Parameters
rNumber of rows.
cNumber of columns.

References tensorium::Derivate< K >::block_size.

◆ Derivate() [2/2]

template<typename K >
tensorium::Derivate< K >::Derivate ( const Matrix< K > & m)
inline

Construct from an existing matrix.

Parameters
mInput matrix.

Member Function Documentation

◆ __attribute__() [1/2]

template<typename K >
tensorium::Derivate< K >::__attribute__ ( (always_inline, hot, flatten) ) const &

Compute second-order centered derivative.

Parameters
inputInput matrix.
outputOutput matrix.
axisDifferentiation axis (0 = rows, 1 = cols).
dxGrid spacing.

◆ __attribute__() [2/2]

template<typename K >
tensorium::Derivate< K >::__attribute__ ( (always_inline, hot, flatten) ) const &

Compute fourth-order centered derivative.

Parameters
inputInput matrix.
outputOutput matrix.
axisDifferentiation axis.
dxGrid spacing.

◆ if() [1/4]

◆ if() [2/4]

◆ if() [3/4]

◆ if() [4/4]

◆ operator()() [1/2]

template<typename K >
K & tensorium::Derivate< K >::operator() ( size_t i,
size_t j )
inline

Mutable access to an element.

Parameters
iRow index.
jColumn index.
Returns
Reference to element (i,j).

References tensorium::Derivate< K >::cols, tensorium::Derivate< K >::data, and tensorium::Derivate< K >::rows.

◆ operator()() [2/2]

template<typename K >
const K & tensorium::Derivate< K >::operator() ( size_t i,
size_t j ) const
inline

Const access to an element.

Parameters
iRow index.
jColumn index.
Returns
Const reference to element (i,j).

References tensorium::Derivate< K >::cols, tensorium::Derivate< K >::data, and tensorium::Derivate< K >::rows.

◆ size()

template<typename K >
size_t tensorium::Derivate< K >::size ( ) const
inline

Total number of elements in the matrix.

Returns
Total size.

References tensorium::Derivate< K >::cols, and tensorium::Derivate< K >::rows.

Member Data Documentation

◆ axis

template<typename K >
Derivate< K > size_t tensorium::Derivate< K >::axis

◆ block_size

template<typename K >
size_t tensorium::Derivate< K >::block_size

◆ cols

◆ const

template<typename K >
Derivate<K> size_t K dx tensorium::Derivate< K >::const
Initial value:
{
Definition SIMD.hpp:177

◆ data

◆ dx

Initial value:

◆ eight

template<typename K >
const reg tensorium::Derivate< K >::eight = Simd::set1(8.0f)

◆ else

template<typename K >
tensorium::Derivate< K >::else
Initial value:
{
std::cerr << "[centered_derivative] Invalid axis: must be 0 or 1\n"

◆ inv

◆ inv_12dx

template<typename K >
const K tensorium::Derivate< K >::inv_12dx = K(1) / (K(12) * dx)

◆ inv_2dx

template<typename K >
const K tensorium::Derivate< K >::inv_2dx = K(1) / (K(2) * dx)

◆ output

◆ rows

◆ simd_width

template<typename K >
const size_t tensorium::Derivate< K >::simd_width = Simd::width

◆ W

template<typename K >
constexpr size_t tensorium::Derivate< K >::W = Simd::width
constexpr

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