Expression Templates Library (ETL)
Public Types | Public Member Functions | Public Attributes | Static Public Attributes | Friends | List of all members
etl::fast_matrix_impl< T, ST, SO, Dims > Struct Template Referencefinal

Matrix with compile-time fixed dimensions. More...

#include <fast.hpp>

Inheritance diagram for etl::fast_matrix_impl< T, ST, SO, Dims >:
Inheritance graph
[legend]
Collaboration diagram for etl::fast_matrix_impl< T, ST, SO, Dims >:
Collaboration graph
[legend]

Public Types

using this_type = fast_matrix_impl< T, ST, SO, Dims... >
 this type
 
using base_type = fast_matrix_base< this_type, T, ST, SO, Dims... >
 The base type.
 
using iterable_base_type = iterable< this_type, SO==order::RowMajor >
 The iterable base type.
 
using value_type = T
 The value type.
 
using storage_impl = ST
 The storage implementation.
 
using memory_type = value_type *
 The memory type.
 
using const_memory_type = const value_type *
 The const memory type.
 
template<typename V = default_vec>
using vec_type = typename V::template vec_type< T >
 The vectorization type for V.
 
- Public Types inherited from etl::fast_matrix_base< fast_matrix_impl< T, ST, SO, Dims... >, T, ST, SO, Dims... >
using value_type = T
 The type of value.
 
using derived_t = fast_matrix_impl< T, ST, SO, Dims... >
 The derived type.
 
using storage_impl = ST
 The storage implementation.
 
using memory_type = value_type *
 The memory type.
 
using const_memory_type = const value_type *
 The const memory type.
 
using iterator = std::conditional_t< SO==order::RowMajor, value_type *, etl::iterator< derived_t > >
 The iterator type.
 
using const_iterator = std::conditional_t< SO==order::RowMajor, const value_type *, etl::iterator< const derived_t > >
 The iterator type.
 
- Public Types inherited from etl::inplace_assignable< fast_matrix_impl< T, ST, SO, Dims... > >
using derived_t = fast_matrix_impl< T, ST, SO, Dims... >
 The derived type.
 
- Public Types inherited from etl::expression_able< fast_matrix_impl< T, ST, SO, Dims... > >
using derived_t = fast_matrix_impl< T, ST, SO, Dims... >
 The derived type.
 
- Public Types inherited from etl::value_testable< fast_matrix_impl< T, ST, SO, Dims... > >
using derived_t = fast_matrix_impl< T, ST, SO, Dims... >
 The derived type.
 
- Public Types inherited from etl::iterable< fast_matrix_impl< T, ST, SO, Dims... >, SO==order::RowMajor >
using derived_t = fast_matrix_impl< T, ST, SO, Dims... >
 The derived type.
 
- Public Types inherited from etl::dim_testable< fast_matrix_impl< T, ST, SO, Dims... > >
using derived_t = fast_matrix_impl< T, ST, SO, Dims... >
 The derived type.
 

Public Member Functions

 fast_matrix_impl () noexcept
 Construction. More...
 
template<typename VT >
 fast_matrix_impl (const VT &value) noexcept requires(std
 Construct a fast matrix filled with the same value. More...
 
 fast_matrix_impl (std::initializer_list< value_type > l)
 Construct a fast matrix filled with the given values. More...
 
 fast_matrix_impl (const storage_impl &data)
 Construct a fast matrix directly from storage. More...
 
 fast_matrix_impl (const fast_matrix_impl &rhs) noexcept
 Copy construct a fast matrix. More...
 
 fast_matrix_impl (fast_matrix_impl &&rhs) noexcept
 Move construct a fast matrix. More...
 
template<std_container Container>
 fast_matrix_impl (const Container &container) requires(!is_complex_t< Container > &&std
 Construct a fast matrix from the given STL container. More...
 
fast_matrix_imploperator= (const fast_matrix_impl &rhs) noexcept(assert_nothrow)
 Copy assign a fast matrix. More...
 
fast_matrix_imploperator= (fast_matrix_impl &&rhs) noexcept
 Copy assign a fast matrix. More...
 
template<size_t... SDims>
fast_matrix_imploperator= (const fast_matrix_impl< T, ST, SO, SDims... > &rhs) noexcept
 Copy assign a fast matrix from a matrix fast matrix type. More...
 
template<std_container Container>
fast_matrix_imploperator= (const Container &container) noexcept requires(std
 Assign the values of the STL container to the fast matrix. More...
 
template<etl_expr E>
fast_matrix_imploperator= (E &&e) requires(std
 Assign the values of the ETL expression to the fast matrix. More...
 
template<typename VT >
fast_matrix_imploperator= (const VT &value) noexcept requires requires(T &lhs
 Assign the value to each element. More...
 
template<typename Y >
auto & gpu_compute_hint ([[maybe_unused]] Y &y)
 Return a GPU computed version of this expression. More...
 
template<typename Y >
const auto & gpu_compute_hint ([[maybe_unused]] Y &y) const
 Return a GPU computed version of this expression. More...
 
void swap (fast_matrix_impl &other)
 Swap the contents of the matrix with another matrix. More...
 
template<typename V = default_vec>
void store (vec_type< V > in, size_t i) noexcept
 Store several elements in the matrix at once. More...
 
template<typename V = default_vec>
void storeu (vec_type< V > in, size_t i) noexcept
 Store several elements in the matrix at once. More...
 
template<typename V = default_vec>
void stream (vec_type< V > in, size_t i) noexcept
 Store several elements in the matrix at once, using non-temporal store. More...
 
template<typename V = default_vec>
vec_type< V > load (size_t i) const noexcept
 Load several elements of the matrix at once. More...
 
template<typename V = default_vec>
vec_type< V > loadu (size_t i) const noexcept
 Load several elements of the matrix at once. More...
 
template<typename L >
void assign_to (L &&lhs) const
 Assign to the given left-hand-side expression. More...
 
template<typename L >
void assign_add_to (L &&lhs) const
 Add to the given left-hand-side expression. More...
 
template<typename L >
void assign_sub_to (L &&lhs) const
 Subtract from the given left-hand-side expression. More...
 
template<typename L >
void assign_mul_to (L &&lhs) const
 Multiply the given left-hand-side expression. More...
 
template<typename L >
void assign_div_to (L &&lhs) const
 Divide to the given left-hand-side expression. More...
 
template<typename L >
void assign_mod_to (L &&lhs) const
 Modulo the given left-hand-side expression. More...
 
void visit ([[maybe_unused]] const detail::evaluator_visitor &visitor) const
 Apply the given visitor to this expression and its descendants. More...
 
- Public Member Functions inherited from etl::fast_matrix_base< fast_matrix_impl< T, ST, SO, Dims... >, T, ST, SO, Dims... >
 fast_matrix_base ()
 Construct a default fast_matrix_base.
 
 fast_matrix_base (storage_impl data)
 Construct a default fast_matrix_base from storage. More...
 
 fast_matrix_base (const fast_matrix_base &rhs)
 Copy Construct a fast_matrix_base. More...
 
 fast_matrix_base (fast_matrix_base &&rhs) noexcept
 Move Construct a fast_matrix_base. More...
 
fast_matrix_baseoperator= (const fast_matrix_base &rhs)=delete
 
fast_matrix_baseoperator= (fast_matrix_base &&rhs)=delete
 
memory_type memory_start () noexcept
 Returns a pointer to the first element in memory. More...
 
const_memory_type memory_start () const noexcept
 Returns a pointer to the first element in memory. More...
 
memory_type memory_end () noexcept
 Returns a pointer to the past-the-end element in memory. More...
 
const_memory_type memory_end () const noexcept
 Returns a pointer to the past-the-end element in memory. More...
 
size_t dim (size_t d) const noexcept
 Returns the dth dimension of the matrix. More...
 
auto operator() (size_t i) noexcept requires(n_dimensions > 1)
 Creates a sub view of the matrix, effectively removing the first dimension and fixing it to the given index. More...
 
auto operator() (size_t i) const noexcept requires(n_dimensions > 1)
 Creates a sub view of the matrix, effectively removing the first dimension and fixing it to the given index. More...
 
auto slice (size_t first, size_t last) noexcept
 Creates a slice view of the matrix, effectively reducing the first dimension. More...
 
auto slice (size_t first, size_t last) const noexcept
 Creates a slice view of the matrix, effectively reducing the first dimension. More...
 
- Public Member Functions inherited from etl::inplace_assignable< fast_matrix_impl< T, ST, SO, Dims... > >
derived_tas_derived () noexcept
 Returns a reference to the derived object, i.e. the object using the CRTP injector. More...
 
derived_tscale_inplace (E &&e)
 Scale the matrix by the factor e, in place. More...
 
derived_tfflip_inplace () requires(mat_or_vec< derived_t >)
 Flip the matrix horizontally and vertically, in place.
 
derived_tdeep_fflip_inplace ()
 Fully flip each sub 2D matrix in place.
 
derived_tdeep_transpose_inplace ()
 Transpose each sub 2D matrix in place.
 
derived_tdirect_deep_transpose_inplace ()
 Transpose each sub 2D matrix in place.
 
derived_ttranspose_inplace () requires(etl_2d< derived_t >)
 Transpose the matrix in place. More...
 
derived_tdirect_transpose_inplace () requires(etl_2d< derived_t >)
 Transpose the matrix in place. More...
 
derived_tfft_inplace () requires(etl_1d< derived_t > &&etl_complex_expr< derived_t >)
 Perform inplace 1D FFT of the vector.
 
derived_tfft_many_inplace () requires(matrix< derived_t > &&etl_complex_expr< derived_t >)
 Perform many inplace 1D FFT of the matrix. More...
 
derived_tifft_inplace () requires(etl_1d< derived_t > &&etl_complex_expr< derived_t >)
 Perform inplace 1D Inverse FFT of the vector.
 
derived_tifft_many_inplace () requires(matrix< derived_t > &&etl_complex_expr< derived_t >)
 Perform many inplace 1D Inverse FFT of the vector.
 
derived_tfft2_inplace () requires(etl_2d< derived_t > &&etl_complex_expr< derived_t >)
 Perform inplace 2D FFT of the matrix.
 
derived_tfft2_many_inplace () requires(deep_mat< derived_t > &&etl_complex_expr< derived_t >)
 Perform many inplace 2D FFT of the matrix. More...
 
derived_tifft2_inplace () requires(etl_2d< derived_t > &&etl_complex_expr< derived_t >)
 Perform inplace 2D Inverse FFT of the matrix.
 
derived_tifft2_many_inplace () requires(deep_mat< derived_t > &&etl_complex_expr< derived_t >)
 Perform many inplace 2D Inverse FFT of the matrix.
 
- Public Member Functions inherited from etl::expression_able< fast_matrix_impl< T, ST, SO, Dims... > >
derived_tas_derived () noexcept
 Returns a reference to the derived object, i.e. the object using the CRTP injector. More...
 
auto scale (E &&e)
 Scale the expression by a scalar factor or another expression. More...
 
auto fflip ()
 Flip the matrix horizontally and vertically. More...
 
auto hflip ()
 Flip the matrix horizontally. More...
 
auto vflip ()
 Flip the matrix vertically. More...
 
auto transpose ()
 Transpose the matrix. More...
 
auto real ()
 Extract the real part of a complex expression. More...
 
auto imag ()
 Extract the imag part of a complex expression. More...
 
auto conj ()
 Returns a new expression containg the conjugate of each value of the expression. More...
 
- Public Member Functions inherited from etl::value_testable< fast_matrix_impl< T, ST, SO, Dims... > >
derived_tas_derived () noexcept
 Returns a reference to the derived object, i.e. the object using the CRTP injector. More...
 
const derived_tas_derived () const noexcept
 Returns a reference to the derived object, i.e. the object using the CRTP injector. More...
 
bool is_finite () const noexcept
 Indicates if the expression contains only finite values. More...
 
bool is_zero () const noexcept
 Indicates if the expression contains only zero values. More...
 
bool is_diagonal () const noexcept
 Indicates if the expression is diagonal. More...
 
bool is_uniform () const noexcept
 Indicates if the expression is uniform, i.e. all elements are of the same value. More...
 
- Public Member Functions inherited from etl::iterable< fast_matrix_impl< T, ST, SO, Dims... >, SO==order::RowMajor >
derived_tas_derived () noexcept
 Returns a reference to the derived object, i.e. the object using the CRTP injector. More...
 
const derived_tas_derived () const noexcept
 Returns a reference to the derived object, i.e. the object using the CRTP injector. More...
 
auto begin () noexcept
 Return an iterator to the first element of the matrix. More...
 
auto begin () const noexcept
 Return an iterator to the first element of the matrix. More...
 
auto end () noexcept
 Return an iterator to the past-the-end element of the matrix. More...
 
auto end () const noexcept
 Return an iterator to the past-the-end element of the matrix. More...
 
auto cbegin () const noexcept
 Return an iterator to the first element of the matrix. More...
 
auto cend () const noexcept
 Return an iterator to the past-the-end element of the matrix. More...
 
- Public Member Functions inherited from etl::dim_testable< fast_matrix_impl< T, ST, SO, Dims... > >
derived_tas_derived () noexcept
 Returns a reference to the derived object, i.e. the object using the CRTP injector. More...
 
const derived_tas_derived () const noexcept
 Returns a reference to the derived object, i.e. the object using the CRTP injector. More...
 
bool is_square () const noexcept
 Indicates if the expressions is of square dimensions (only for 2d expression) More...
 
bool is_rectangular () const noexcept
 Indicates if the expressions is of rectangular dimensions (only for 2d expression) More...
 
bool is_sub_square () const noexcept
 Indicates if the expressions is of square dimensions, ignoring the first dimension (only for 3d expression) More...
 
bool is_sub_rectangular () const noexcept
 Indicates if the expressions is of rectangular dimensions, ignoring the first dimension (only for 3d expression) More...
 
bool is_symmetric () const noexcept
 Indicates if the given expression is a symmetric matrix or not. More...
 
bool is_lower_triangular () const noexcept
 Indicates if the given expression is a lower triangular matrix or not. More...
 
bool is_uni_lower_triangular () const noexcept
 Indicates if the given expression is a uni lower triangular matrix or not. More...
 
bool is_strictly_lower_triangular () const noexcept
 Indicates if the given expression is a strictly lower triangular matrix or not. More...
 
bool is_upper_triangular () const noexcept
 Indicates if the given expression is a upper triangular matrix or not. More...
 
bool is_uni_upper_triangular () const noexcept
 Indicates if the given expression is a uni upper triangular matrix or not. More...
 
bool is_strictly_upper_triangular () const noexcept
 Indicates if the given expression is a strictly upper triangular matrix or not. More...
 
bool is_triangular () const noexcept
 Indicates if the given expression is a triangular matrix or not. More...
 

Public Attributes

fast_matrix_impl VT rhs {lhs = rhs
 
return * this
 

Static Public Attributes

static constexpr size_t n_dimensions = sizeof...(Dims)
 The number of dimensions.
 
static constexpr size_t etl_size = (Dims * ...)
 The size of the matrix.
 
static constexpr order storage_order = SO
 The storage order.
 
static constexpr bool array_impl = !matrix_detail::is_vector<ST>
 true if the storage is an std::arraw, false otherwise
 
static constexpr size_t alignment = default_intrinsic_traits<T>::alignment
 The memory alignment.
 
- Static Public Attributes inherited from etl::fast_matrix_base< fast_matrix_impl< T, ST, SO, Dims... >, T, ST, SO, Dims... >
static constexpr size_t n_dimensions
 The number of dimensions.
 
static constexpr size_t etl_size
 The size of the matrix.
 

Friends

std::ostream & operator<< (std::ostream &os, [[maybe_unused]] const fast_matrix_impl &matrix)
 Prints a fast matrix type (not the contents) to the given stream. More...
 

Additional Inherited Members

- Static Public Member Functions inherited from etl::fast_matrix_base< fast_matrix_impl< T, ST, SO, Dims... >, T, ST, SO, Dims... >
static constexpr size_t size () noexcept
 Returns the size of the matrix, in O(1) More...
 
static constexpr size_t rows () noexcept
 Returns the number of rows of the matrix (the first dimension), in O(1) More...
 
static constexpr size_t columns () noexcept requires(n_dimensions > 1)
 Returns the number of columns of the matrix (the second dimension), in O(1) More...
 
static constexpr size_t dimensions () noexcept
 Returns the number of dimensions of the matrix. More...
 
static constexpr size_t dim () noexcept
 Returns the Dth dimension of the matrix. More...
 
- Protected Member Functions inherited from etl::fast_matrix_base< fast_matrix_impl< T, ST, SO, Dims... >, T, ST, SO, Dims... >
void init ()
 Init the container if necessary.
 
value_typeaccess (S... args)
 Return the value at the given indices. More...
 
const value_typeaccess (S... args) const
 Return the value at the given indices. More...
 
- Static Protected Member Functions inherited from etl::fast_matrix_base< fast_matrix_impl< T, ST, SO, Dims... >, T, ST, SO, Dims... >
static constexpr size_t index (S... args)
 Compute the 1D index from the given indices. More...
 
- Protected Attributes inherited from etl::fast_matrix_base< fast_matrix_impl< T, ST, SO, Dims... >, T, ST, SO, Dims... >
storage_impl _data
 The storage container.
 
gpu_memory_handler< T > _gpu
 The GPU memory handler.
 

Detailed Description

template<typename T, typename ST, order SO, size_t... Dims>
struct etl::fast_matrix_impl< T, ST, SO, Dims >

Matrix with compile-time fixed dimensions.

The matrix support an arbitrary number of dimensions.

Constructor & Destructor Documentation

◆ fast_matrix_impl() [1/7]

template<typename T, typename ST, order SO, size_t... Dims>
etl::fast_matrix_impl< T, ST, SO, Dims >::fast_matrix_impl ( )
inlinenoexcept

Construction.

Construct an empty fast matrix

◆ fast_matrix_impl() [2/7]

template<typename T, typename ST, order SO, size_t... Dims>
template<typename VT >
etl::fast_matrix_impl< T, ST, SO, Dims >::fast_matrix_impl ( const VT &  value)
inlineexplicitnoexcept

Construct a fast matrix filled with the same value.

Parameters
valuethe value to fill the matrix with

◆ fast_matrix_impl() [3/7]

template<typename T, typename ST, order SO, size_t... Dims>
etl::fast_matrix_impl< T, ST, SO, Dims >::fast_matrix_impl ( std::initializer_list< value_type l)
inline

Construct a fast matrix filled with the given values.

Parameters
lthe list of values to fill the matrix with

◆ fast_matrix_impl() [4/7]

template<typename T, typename ST, order SO, size_t... Dims>
etl::fast_matrix_impl< T, ST, SO, Dims >::fast_matrix_impl ( const storage_impl data)
inline

Construct a fast matrix directly from storage.

Parameters
dataThe storage container to copy

◆ fast_matrix_impl() [5/7]

template<typename T, typename ST, order SO, size_t... Dims>
etl::fast_matrix_impl< T, ST, SO, Dims >::fast_matrix_impl ( const fast_matrix_impl< T, ST, SO, Dims > &  rhs)
inlinenoexcept

Copy construct a fast matrix.

Parameters
rhsThe fast matrix to copy from

◆ fast_matrix_impl() [6/7]

template<typename T, typename ST, order SO, size_t... Dims>
etl::fast_matrix_impl< T, ST, SO, Dims >::fast_matrix_impl ( fast_matrix_impl< T, ST, SO, Dims > &&  rhs)
inlinenoexcept

Move construct a fast matrix.

Parameters
rhsThe fast matrix to move from

◆ fast_matrix_impl() [7/7]

template<typename T, typename ST, order SO, size_t... Dims>
template<std_container Container>
etl::fast_matrix_impl< T, ST, SO, Dims >::fast_matrix_impl ( const Container &  container) &&
inlineexplicit

Construct a fast matrix from the given STL container.

Parameters
containerThe container to get values from

Member Function Documentation

◆ assign_add_to()

template<typename T, typename ST, order SO, size_t... Dims>
template<typename L >
void etl::fast_matrix_impl< T, ST, SO, Dims >::assign_add_to ( L &&  lhs) const
inline

Add to the given left-hand-side expression.

Parameters
lhsThe expression to which assign

◆ assign_div_to()

template<typename T, typename ST, order SO, size_t... Dims>
template<typename L >
void etl::fast_matrix_impl< T, ST, SO, Dims >::assign_div_to ( L &&  lhs) const
inline

Divide to the given left-hand-side expression.

Parameters
lhsThe expression to which assign

◆ assign_mod_to()

template<typename T, typename ST, order SO, size_t... Dims>
template<typename L >
void etl::fast_matrix_impl< T, ST, SO, Dims >::assign_mod_to ( L &&  lhs) const
inline

Modulo the given left-hand-side expression.

Parameters
lhsThe expression to which assign

◆ assign_mul_to()

template<typename T, typename ST, order SO, size_t... Dims>
template<typename L >
void etl::fast_matrix_impl< T, ST, SO, Dims >::assign_mul_to ( L &&  lhs) const
inline

Multiply the given left-hand-side expression.

Parameters
lhsThe expression to which assign

◆ assign_sub_to()

template<typename T, typename ST, order SO, size_t... Dims>
template<typename L >
void etl::fast_matrix_impl< T, ST, SO, Dims >::assign_sub_to ( L &&  lhs) const
inline

Subtract from the given left-hand-side expression.

Parameters
lhsThe expression to which assign

◆ assign_to()

template<typename T, typename ST, order SO, size_t... Dims>
template<typename L >
void etl::fast_matrix_impl< T, ST, SO, Dims >::assign_to ( L &&  lhs) const
inline

Assign to the given left-hand-side expression.

Parameters
lhsThe expression to which assign

◆ gpu_compute_hint() [1/2]

template<typename T, typename ST, order SO, size_t... Dims>
template<typename Y >
auto& etl::fast_matrix_impl< T, ST, SO, Dims >::gpu_compute_hint ( [[maybe_unused] ] Y &  y)
inline

Return a GPU computed version of this expression.

Returns
a GPU-computed ETL expression for this expression

◆ gpu_compute_hint() [2/2]

template<typename T, typename ST, order SO, size_t... Dims>
template<typename Y >
const auto& etl::fast_matrix_impl< T, ST, SO, Dims >::gpu_compute_hint ( [[maybe_unused] ] Y &  y) const
inline

Return a GPU computed version of this expression.

Returns
a GPU-computed ETL expression for this expression

◆ load()

template<typename T, typename ST, order SO, size_t... Dims>
template<typename V = default_vec>
vec_type<V> etl::fast_matrix_impl< T, ST, SO, Dims >::load ( size_t  i) const
inlinenoexcept

Load several elements of the matrix at once.

Parameters
iThe position at which to start. This will be aligned from the beginning (multiple of the vector size).
Template Parameters
VThe vectorization mode to use
Returns
a vector containing several elements of the matrix

◆ loadu()

template<typename T, typename ST, order SO, size_t... Dims>
template<typename V = default_vec>
vec_type<V> etl::fast_matrix_impl< T, ST, SO, Dims >::loadu ( size_t  i) const
inlinenoexcept

Load several elements of the matrix at once.

Parameters
iThe position at which to start. This will be aligned from the beginning (multiple of the vector size).
Template Parameters
VThe vectorization mode to use
Returns
a vector containing several elements of the matrix

◆ operator=() [1/6]

template<typename T, typename ST, order SO, size_t... Dims>
fast_matrix_impl& etl::fast_matrix_impl< T, ST, SO, Dims >::operator= ( const fast_matrix_impl< T, ST, SO, Dims > &  rhs)
inlinenoexcept

Copy assign a fast matrix.

Parameters
rhsThe fast matrix to copy from
Returns
a reference to the fast matrix

◆ operator=() [2/6]

template<typename T, typename ST, order SO, size_t... Dims>
fast_matrix_impl& etl::fast_matrix_impl< T, ST, SO, Dims >::operator= ( fast_matrix_impl< T, ST, SO, Dims > &&  rhs)
inlinenoexcept

Copy assign a fast matrix.

Parameters
rhsThe fast matrix to copy from
Returns
a reference to the fast matrix

◆ operator=() [3/6]

template<typename T, typename ST, order SO, size_t... Dims>
template<size_t... SDims>
fast_matrix_impl& etl::fast_matrix_impl< T, ST, SO, Dims >::operator= ( const fast_matrix_impl< T, ST, SO, SDims... > &  rhs)
inlinenoexcept

Copy assign a fast matrix from a matrix fast matrix type.

Parameters
rhsThe fast matrix to copy from
Returns
a reference to the fast matrix

◆ operator=() [4/6]

template<typename T, typename ST, order SO, size_t... Dims>
template<std_container Container>
fast_matrix_impl& etl::fast_matrix_impl< T, ST, SO, Dims >::operator= ( const Container &  container)
inlinenoexcept

Assign the values of the STL container to the fast matrix.

Parameters
containerThe STL container to get the values from
Returns
a reference to the fast matrix

◆ operator=() [5/6]

template<typename T, typename ST, order SO, size_t... Dims>
template<etl_expr E>
fast_matrix_impl& etl::fast_matrix_impl< T, ST, SO, Dims >::operator= ( E &&  e)
inline

Assign the values of the ETL expression to the fast matrix.

Parameters
eThe ETL expression to get the values from
Returns
a reference to the fast matrix

◆ operator=() [6/6]

template<typename T, typename ST, order SO, size_t... Dims>
template<typename VT >
fast_matrix_impl& etl::fast_matrix_impl< T, ST, SO, Dims >::operator= ( const VT &  value) &
noexcept

Assign the value to each element.

Parameters
valueThe value to assign to each element
Returns
a reference to the fast matrix

◆ store()

template<typename T, typename ST, order SO, size_t... Dims>
template<typename V = default_vec>
void etl::fast_matrix_impl< T, ST, SO, Dims >::store ( vec_type< V >  in,
size_t  i 
)
inlinenoexcept

Store several elements in the matrix at once.

Parameters
inThe several elements to store
iThe position at which to start. This will be aligned from the beginning (multiple of the vector size).
Template Parameters
VThe vectorization mode to use

◆ storeu()

template<typename T, typename ST, order SO, size_t... Dims>
template<typename V = default_vec>
void etl::fast_matrix_impl< T, ST, SO, Dims >::storeu ( vec_type< V >  in,
size_t  i 
)
inlinenoexcept

Store several elements in the matrix at once.

Parameters
inThe several elements to store
iThe position at which to start. This will be aligned from the beginning (multiple of the vector size).
Template Parameters
VThe vectorization mode to use

◆ stream()

template<typename T, typename ST, order SO, size_t... Dims>
template<typename V = default_vec>
void etl::fast_matrix_impl< T, ST, SO, Dims >::stream ( vec_type< V >  in,
size_t  i 
)
inlinenoexcept

Store several elements in the matrix at once, using non-temporal store.

Parameters
inThe several elements to store
iThe position at which to start. This will be aligned from the beginning (multiple of the vector size).
Template Parameters
VThe vectorization mode to use

◆ swap()

template<typename T, typename ST, order SO, size_t... Dims>
void etl::fast_matrix_impl< T, ST, SO, Dims >::swap ( fast_matrix_impl< T, ST, SO, Dims > &  other)
inline

Swap the contents of the matrix with another matrix.

Parameters
otherThe other matrix

◆ visit()

template<typename T, typename ST, order SO, size_t... Dims>
void etl::fast_matrix_impl< T, ST, SO, Dims >::visit ( [[maybe_unused] ] const detail::evaluator_visitor visitor) const
inline

Apply the given visitor to this expression and its descendants.

Parameters
visitorThe visitor to apply

Friends And Related Function Documentation

◆ operator<<

template<typename T, typename ST, order SO, size_t... Dims>
std::ostream& operator<< ( std::ostream &  os,
[[maybe_unused] ] const fast_matrix_impl< T, ST, SO, Dims > &  matrix 
)
friend

Prints a fast matrix type (not the contents) to the given stream.

Parameters
osThe output stream
matrixThe fast matrix to print
Returns
the output stream

Member Data Documentation

◆ this

template<typename T, typename ST, order SO, size_t... Dims>
return* etl::fast_matrix_impl< T, ST, SO, Dims >::this
Initial value:
{
direct_fill(*this, value)

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