cMHN 1.1
C++ library for learning MHNs with pRC
Loading...
Searching...
No Matches
adjoint.hpp
Go to the documentation of this file.
1// SPDX-License-Identifier: BSD-2-Clause
2
3#ifndef pRC_TENSOR_TRAIN_OPERATOR_FUNCTIONS_ADJOINT_H
4#define pRC_TENSOR_TRAIN_OPERATOR_FUNCTIONS_ADJOINT_H
5
11
12namespace pRC
13{
14 template<class X, If<TensorTrain::IsOperatorish<RemoveReference<X>>> = 0,
15 If<IsInvocable<View, X>> = 0, If<IsInvocable<Transpose, X>> = 0,
16 If<IsInvocable<Conj, ResultOf<Transpose, X>>> = 0>
17 static inline constexpr auto adjoint(X &&a)
18 {
19 return conj(transpose(forward<X>(a)));
20 }
21
22 template<class X, If<TensorTrain::IsOperatorish<RemoveReference<X>>> = 0,
23 If<Not<IsInvocable<View, X>>> = 0, If<IsInvocable<Adjoint, X &>> = 0>
24 static inline constexpr auto adjoint(X &&a)
25 {
26 return eval(adjoint(a));
27 }
28}
29#endif // pRC_TENSOR_TRAIN_OPERATOR_FUNCTIONS_ADJOINT_H
Definition cholesky.hpp:18
static constexpr X eval(X &&a)
Definition eval.hpp:11
static constexpr auto makeConstantSequence()
Definition sequence.hpp:402
static constexpr auto transpose(JacobiRotation< T > const &a)
Definition jacobi_rotation.hpp:319
static constexpr auto adjoint(JacobiRotation< T > const &a)
Definition jacobi_rotation.hpp:325
static constexpr auto conj(Complex< T > const &a)
Definition conj.hpp:11