3#ifndef pRC_TENSOR_TRAIN_COMMON_FUNCTIONS_SCALE_H
4#define pRC_TENSOR_TRAIN_COMMON_FUNCTIONS_SCALE_H
15 template<
class XA,
class XB,
class RA = RemoveReference<XA>,
16 class RB = RemoveReference<XB>>
17 requires(TensorTrain::IsTensorish<RA> ||
18 TensorTrain::IsOperatorish<RA>) &&
19 (IsValue<RB> || IsComplex<RB>) &&
20 IsInvocable<Mul, typename RA::Type, RB const &>
21 static inline constexpr auto operator*(XA &&a, XB &&b)
29 return forward<decltype(a)>(a) * sgn * lambda;
33 return forward<decltype(a)>(a) * lambda;
39 template<
class XA,
class XB,
class RA = RemoveReference<XA>,
40 class RB = RemoveReference<XB>>
41 requires(IsValue<RA> || IsComplex<RA>) &&
42 (TensorTrain::IsTensorish<RB> || TensorTrain::IsOperatorish<RB>) &&
43 IsInvocable<Mul, RA const &, typename RB::Type>
44 static inline constexpr auto operator*(XA &&a, XB &&b)
46 return forward<XB>(b) * forward<XA>(a);
49 template<
class XA,
class XB,
class RA = RemoveReference<XA>,
50 class RB = RemoveReference<XB>>
51 requires(TensorTrain::IsTensorish<RA> ||
52 TensorTrain::IsOperatorish<RA>) &&
53 (IsValue<RB> || IsComplex<RB>) &&
54 IsInvocable<Div, typename RA::Type, RB const &>
55 static inline constexpr auto operator/(XA &&a, XB &&b)
62 template<
class XA,
class XB,
class RA = RemoveReference<XA>,
63 class RB = RemoveReference<XB>>
64 requires(TensorTrain::IsTensorish<RA> ||
65 TensorTrain::IsOperatorish<RA>) &&
66 IsTensorish<RB> && IsInvocable<Mul, XA, typename RB::Type>
67 static inline constexpr auto operator*(XA &&a, XB &&b)
69 return forward<XA>(a) * forward<XB>(b)();
72 template<
class XA,
class XB,
class RA = RemoveReference<XA>,
73 class RB = RemoveReference<XB>>
74 requires IsTensorish<RA> &&
75 (TensorTrain::IsTensorish<RB> || TensorTrain::IsOperatorish<RB>) &&
76 IsInvocable<Mul, typename RA::Type, XB>
77 static inline constexpr auto operator*(XA &&a, XB &&b)
79 return forward<XA>(a)() * forward<XB>(b);
82 template<
class XA,
class XB,
class RA = RemoveReference<XA>,
83 class RB = RemoveReference<XB>>
84 requires(TensorTrain::IsTensorish<RA> ||
85 TensorTrain::IsOperatorish<RA>) &&
86 IsTensorish<RB> && IsInvocable<Div, XA, typename RB::Type>
87 static inline constexpr auto operator/(XA &&a, XB &&b)
89 return forward<XA>(a) / forward<XB>(b)();
Definition cholesky.hpp:10
static constexpr auto unit()
Definition unit.hpp:13
static constexpr auto cast(T const &a)
Definition cast.hpp:11
static constexpr auto rcp(T const &b)
Definition rcp.hpp:12
Size Index
Definition basics.hpp:32
std::invoke_result_t< F, Args... > ResultOf
Definition basics.hpp:59
static constexpr auto sign(T const &a)
Definition sign.hpp:11
static constexpr auto operator*(JacobiRotation< TA > const &a, JacobiRotation< TB > const &b)
Definition jacobi_rotation.hpp:298
static constexpr auto abs(T const &a)
Definition abs.hpp:11
static constexpr auto pow(X const &x, Y const &y)
Definition pow.hpp:11
typename ValueType< T >::Type Value
Definition value.hpp:72
static constexpr auto enumerate(F &&f, Xs &&...args)
Definition enumerate.hpp:21
static constexpr auto operator/(Sequence< T, As... > const, Sequence< T, Bs... > const)
Definition sequence.hpp:179