<T>LAPACK 0.1.1
C++ Template Linear Algebra PACKage
Loading...
Searching...
No Matches
mdspan.hpp File Reference
#include <cassert>
#include <experimental/mdspan>
#include "tlapack/base/arrayTraits.hpp"
#include "tlapack/plugins/stdvector.hpp"
Include dependency graph for mdspan.hpp:

Go to the source code of this file.

Classes

struct  tlapack::traits::complex_type_traits< std::experimental::mdspan< ET, Exts, LP, AP >, int >
 
struct  tlapack::traits::layout_trait< std::experimental::mdspan< ET, Exts, LP, AP >, std::enable_if_t<(Exts::rank()==1) &&LP::template mapping< Exts >::is_always_strided(), int > >
 
struct  tlapack::traits::matrix_type_traits< matrixA_t, matrixB_t, typename std::enable_if< is_mdspan_type< matrixA_t > &&is_mdspan_type< matrixB_t > &&(layout< matrixA_t >==layout< matrixB_t >), int >::type >
 
struct  tlapack::traits::matrix_type_traits< matrixA_t, matrixB_t, typename std::enable_if<(is_mdspan_type< matrixA_t > &&is_mdspan_type< matrixB_t > &&!(layout< matrixA_t >==layout< matrixB_t >))||((is_mdspan_type< matrixA_t >||is_mdspan_type< matrixB_t >)&&(!is_mdspan_type< matrixA_t >||!is_mdspan_type< matrixB_t >)&&cast_to_mdspan_type< matrixA_t > &&cast_to_mdspan_type< matrixB_t >), int >::type >
 
struct  tlapack::traits::matrix_type_traits< vecA_t, vecB_t, std::enable_if_t< traits::is_stdvector_type< vecA_t > &&traits::is_stdvector_type< vecB_t >, int > >
 
struct  tlapack::traits::real_type_traits< std::experimental::mdspan< ET, Exts, LP, AP >, int >
 
struct  tlapack::traits::vector_type_traits< matrixA_t, matrixB_t, typename std::enable_if< is_mdspan_type< matrixA_t > &&is_mdspan_type< matrixB_t > &&(layout< matrixA_t >==layout< matrixB_t >), int >::type >
 
struct  tlapack::traits::vector_type_traits< matrixA_t, matrixB_t, typename std::enable_if<(is_mdspan_type< matrixA_t > &&is_mdspan_type< matrixB_t > &&!(layout< matrixA_t >==layout< matrixB_t >))||((is_mdspan_type< matrixA_t >||is_mdspan_type< matrixB_t >)&&(!is_mdspan_type< matrixA_t >||!is_mdspan_type< matrixB_t >)&&cast_to_mdspan_type< matrixA_t > &&cast_to_mdspan_type< matrixB_t >), int >::type >
 
struct  tlapack::traits::vector_type_traits< vecA_t, vecB_t, std::enable_if_t< traits::is_stdvector_type< vecA_t > &&traits::is_stdvector_type< vecB_t >, int > >
 

Functions

template<class ET , class Exts , class LP , class AP >
constexpr auto tlapack::col (const std::experimental::mdspan< ET, Exts, LP, AP > &A, std::size_t colIdx) noexcept
 
template<class ET , class Exts , class LP , class AP , class SliceSpec , std::enable_if_t< isSlice(SliceSpec), int > = 0>
constexpr auto tlapack::cols (const std::experimental::mdspan< ET, Exts, LP, AP > &A, SliceSpec &&cols) noexcept
 
template<class ET , class Exts , class LP , class AP , std::enable_if_t< LP::template mapping< Exts >::is_always_strided(), bool > = true>
constexpr auto tlapack::diag (const std::experimental::mdspan< ET, Exts, LP, AP > &A, int diagIdx=0)
 
template<class ET , class Exts , class LP , class AP >
std::true_type tlapack::traits::internal::is_mdspan_type_f (const std::experimental::mdspan< ET, Exts, LP, AP > *)
 
std::false_type tlapack::traits::internal::is_mdspan_type_f (const void *)
 
template<class ET , class Exts , class LP , class AP , std::enable_if_t< Exts::rank()==2 &&LP::template mapping< Exts >::is_always_strided(), int > = 0>
constexpr auto tlapack::legacy_matrix (const std::experimental::mdspan< ET, Exts, LP, AP > &A) noexcept
 
template<class ET , class Exts , class LP , class AP , std::enable_if_t< Exts::rank()==1 &&LP::template mapping< Exts >::is_always_strided(), int > = 0>
constexpr auto tlapack::legacy_vector (const std::experimental::mdspan< ET, Exts, LP, AP > &A) noexcept
 
template<class ET , class Exts , class LP , class AP >
constexpr auto tlapack::ncols (const std::experimental::mdspan< ET, Exts, LP, AP > &x)
 
template<class ET , class Exts , class LP , class AP >
constexpr auto tlapack::nrows (const std::experimental::mdspan< ET, Exts, LP, AP > &x)
 
template<class ET , class Exts , class LP , class AP , std::enable_if_t<(std::is_same_v< LP, std::experimental::layout_right >||std::is_same_v< LP, std::experimental::layout_left >), int > = 0>
auto tlapack::reshape (std::experimental::mdspan< ET, Exts, LP, AP > &A, std::size_t m, std::size_t n)
 
template<class ET , class Exts , class LP , class AP , std::enable_if_t<(std::is_same_v< LP, std::experimental::layout_right >||std::is_same_v< LP, std::experimental::layout_left >), int > = 0>
auto tlapack::reshape (std::experimental::mdspan< ET, Exts, LP, AP > &A, std::size_t n)
 
template<class ET , class Exts , class AP , std::enable_if_t< Exts::rank()==2, int > = 0>
auto tlapack::reshape (std::experimental::mdspan< ET, Exts, std::experimental::layout_stride, AP > &A, std::size_t m, std::size_t n)
 
template<class ET , class Exts , class AP , std::enable_if_t< Exts::rank()==2, int > = 0>
auto tlapack::reshape (std::experimental::mdspan< ET, Exts, std::experimental::layout_stride, AP > &A, std::size_t n)
 
template<class ET , class Exts , class LP , class AP >
constexpr auto tlapack::row (const std::experimental::mdspan< ET, Exts, LP, AP > &A, std::size_t rowIdx) noexcept
 
template<class ET , class Exts , class LP , class AP , class SliceSpec , std::enable_if_t< isSlice(SliceSpec), int > = 0>
constexpr auto tlapack::rows (const std::experimental::mdspan< ET, Exts, LP, AP > &A, SliceSpec &&rows) noexcept
 
template<class ET , class Exts , class LP , class AP >
constexpr auto tlapack::size (const std::experimental::mdspan< ET, Exts, LP, AP > &x)
 
template<class ET , class Exts , class LP , class AP , class SliceSpecRow , class SliceSpecCol , std::enable_if_t< isSlice(SliceSpecRow)||isSlice(SliceSpecCol), int > = 0>
constexpr auto tlapack::slice (const std::experimental::mdspan< ET, Exts, LP, AP > &A, SliceSpecRow &&rows, SliceSpecCol &&cols) noexcept
 
template<class ET , class Exts , class LP , class AP , class SliceSpec , std::enable_if_t< isSlice(SliceSpec) &&(Exts::rank()==1), int > = 0>
constexpr auto tlapack::slice (const std::experimental::mdspan< ET, Exts, LP, AP > &v, SliceSpec &&rows) noexcept
 
template<class ET , class Exts , class AP >
constexpr auto tlapack::transpose_view (const std::experimental::mdspan< ET, Exts, std::experimental::layout_left, AP > &A) noexcept
 
template<class ET , class Exts , class AP >
constexpr auto tlapack::transpose_view (const std::experimental::mdspan< ET, Exts, std::experimental::layout_right, AP > &A) noexcept
 
template<class ET , class Exts , class AP >
constexpr auto tlapack::transpose_view (const std::experimental::mdspan< ET, Exts, std::experimental::layout_stride, AP > &A) noexcept
 

Variables

template<typename T >
constexpr bool tlapack::traits::cast_to_mdspan_type
 
template<class T >
constexpr bool tlapack::traits::is_mdspan_type
 True if T is a mdspan array.
 

Detailed Description

Author
Weslley S Pereira, University of Colorado Denver, USA

Variable Documentation

◆ cast_to_mdspan_type

template<typename T >
constexpr bool tlapack::traits::cast_to_mdspan_type
constexpr
Initial value:
=
is_mdspan_type<T> || is_stdvector_type<T>

◆ is_mdspan_type

template<class T >
constexpr bool tlapack::traits::is_mdspan_type
constexpr
Initial value:
=
decltype(internal::is_mdspan_type_f(std::declval<T*>()))::value

True if T is a mdspan array.

See also
https://stackoverflow.com/a/25223400/5253097