Tatooine
Classes | Namespaces | Functions
diag_tensor.h File Reference

Go to the source code of this file.

Classes

struct  tatooine::diag_static_tensor< Tensor, M, N >
 
struct  tatooine::diag_dynamic_tensor< Tensor >
 

Namespaces

namespace  tatooine
 

Functions

template<static_vec Tensor>
 tatooine::diag_static_tensor (Tensor const &t) -> diag_static_tensor< Tensor const &, Tensor::dimension(0), Tensor::dimension(0)>
 
template<static_vec Tensor>
 tatooine::diag_static_tensor (Tensor &t) -> diag_static_tensor< Tensor &, Tensor::dimension(0), Tensor::dimension(0)>
 
template<static_vec Tensor>
 tatooine::diag_static_tensor (Tensor &&t) -> diag_static_tensor< std::decay_t< Tensor >, Tensor::dimension(0), Tensor::dimension(0)>
 
constexpr auto tatooine::diag (static_vec auto &&t)
 
template<std::size_t M, std::size_t N>
constexpr auto tatooine::diag_rect (static_vec auto &&t)
 
template<typename Tensor , std::size_t N>
constexpr auto tatooine::inv (diag_static_tensor< Tensor, N, N > const &A) -> std::optional< diag_static_tensor< vec< tatooine::value_type< Tensor >, N >, N, N > >
 
template<typename TensorA , static_vec TensorB, std::size_t N>
requires (tensor_dimensions<TensorB>[0] == N)
constexpr auto tatooine::solve (diag_static_tensor< TensorA, N, N > const &A, TensorB &&b) -> std::optional< vec< common_type< tatooine::value_type< TensorA >, tatooine::value_type< TensorB > >, N > >
 
template<typename TensorA , static_vec TensorB, std::size_t N>
requires (tensor_dimensions<TensorB>[0] == N)
constexpr auto tatooine::solve (diag_static_tensor< TensorA, N, N > &&A, TensorB &&b) -> std::optional< vec< common_type< tatooine::value_type< TensorA >, tatooine::value_type< TensorB > >, N > >
 
template<typename TensorA , std::size_t M, std::size_t N>
constexpr auto tatooine::operator* (diag_static_tensor< TensorA, M, N > const &A, static_vec auto const &b) -> vec< common_type< tatooine::value_type< TensorA >, tatooine::value_type< decltype(b)> >, M > requires(N==decltype(b)::dimension(0))
 
template<typename TensorA , std::size_t M, std::size_t N>
requires (N == std::decay_t<decltype(B)>::dimension( 0))
constexpr auto tatooine::operator* (diag_static_tensor< TensorA, M, N > const &A, static_mat auto const &B)
 
template<typename TensorA , std::size_t M, std::size_t N>
requires (std::decay_t<decltype(B)>::dimension(1) == M)
constexpr auto tatooine::operator* (static_tensor auto const &B, diag_static_tensor< TensorA, M, N > const &A)
 
template<dynamic_tensor Tensor>
 tatooine::diag_dynamic_tensor (Tensor const &t) -> diag_dynamic_tensor< Tensor const & >
 
template<dynamic_tensor Tensor>
 tatooine::diag_dynamic_tensor (Tensor &t) -> diag_dynamic_tensor< Tensor & >
 
template<dynamic_tensor Tensor>
 tatooine::diag_dynamic_tensor (Tensor &&t) -> diag_dynamic_tensor< std::decay_t< Tensor > >
 
auto tatooine::diag (dynamic_tensor auto &&A)
 
template<dynamic_tensor Lhs, dynamic_tensor Rhs>
requires diag_tensor<Lhs>
auto tatooine::operator* (Lhs const &lhs, Rhs const &rhs) -> tensor< common_type< tatooine::value_type< Lhs >, tatooine::value_type< Rhs > > >