16 #ifndef OPENKALMAN_CONJUGATE_HPP 17 #define OPENKALMAN_CONJUGATE_HPP 39 template<indexible Arg>
41 template<
typename Arg, std::enable_if_t<indexible<Arg>,
int> = 0>
43 constexpr decltype(
auto)
48 return std::forward<Arg>(arg);
50 else if constexpr (interface::conjugate_defined_for<Arg&&>)
54 else if constexpr (std::is_lvalue_reference_v<Arg>)
58 else if constexpr (constant_object<Arg>)
62 else if constexpr (constant_diagonal_object<Arg>)
66 else if constexpr (diagonal_matrix<Arg>)
72 static_assert(interface::conjugate_defined_for<Arg&&>,
"Interface not defined");
constexpr auto get_mdspan(T &t)
Get the coordinates::pattern_collection associated with indexible object T.
Definition: get_mdspan.hpp:35
Definition for constant_object.
Header file for code relating to values (e.g., scalars and indices)
decltype(auto) constexpr conjugate(Arg &&arg)
Take the complex conjugate of an indexible object.
Definition: conjugate.hpp:44
Definition for constant_diagonal_object.
constexpr bool complex
T is a value that reduces to std::complex or a custom complex type.
Definition: complex.hpp:47
decltype(auto) constexpr get_pattern_collection(T &&t)
Get the coordinates::pattern_collection associated with indexible object T.
Definition: get_pattern_collection.hpp:59
constexpr bool not_complex
T is a value in which either its type is not complex or its imaginary component is 0...
Definition: not_complex.hpp:48
decltype(auto) constexpr to_diagonal(Arg &&arg)
Convert an indexible object into a diagonal matrix.
Definition: to_diagonal.hpp:33
Definition for diagonal_matrix.
Definition for element_type_of.
The root namespace for OpenKalman.
Definition: basics.hpp:34
An interface to various routines from the linear algebra library associated with indexible object T...
Definition: library_interface.hpp:42
constexpr auto conj(const Arg &arg)
A constexpr function for the complex conjugate of a (complex) number.
Definition: conj.hpp:39
Definition of get_mdspan function.
constexpr auto constant_value(T &&t)
The constant value associated with a constant_object or constant_diagonal_object. ...
Definition: constant_value.hpp:37
Definition for indexible.
constexpr auto make_constant(C c, stdex::extents< IndexType, Extents... > extents)
Make an indexible object in which every element is a constant value.
Definition: make_constant.hpp:39
The static constant value of an indexible object, if it exists.
Definition: constant_value_of.hpp:31
Definition for constant_value_of.
Definition for identity_matrix.
typename element_type_of< T >::type element_type_of_t
helper template for element_type_of.
Definition: element_type_of.hpp:54
Definitions for make_constant.