3#ifndef pRC_TENSOR_TRAIN_COMMON_FUNCTIONS_SCALE_H
4#define pRC_TENSOR_TRAIN_COMMON_FUNCTIONS_SCALE_H
18 template<
class XA,
class XB,
class RA = RemoveReference<XA>,
19 class RB = RemoveReference<XB>,
20 If<Any<TensorTrain::IsTensorish<RA>, TensorTrain::IsOperatorish<RA>>> =
22 If<IsInvocable<View, XA>> = 0, If<Any<IsValue<RB>, IsComplex<RB>>> = 0,
23 If<IsInvocable<Mul,
typename RA::Type, RB const &>> = 0>
42 template<
class XA,
class XB,
class RA = RemoveReference<XA>,
43 class RB = RemoveReference<XB>, If<Any<IsValue<RA>, IsComplex<RA>>> = 0,
44 If<Any<TensorTrain::IsTensorish<RB>, TensorTrain::IsOperatorish<RB>>> =
46 If<IsInvocable<View, XB>> = 0,
47 If<IsInvocable<Mul, RA const &,
typename RB::Type>> = 0>
53 template<
class XA,
class XB,
class RA = RemoveReference<XA>,
54 class RB = RemoveReference<XB>,
55 If<Any<TensorTrain::IsTensorish<RA>, TensorTrain::IsOperatorish<RA>>> =
57 If<IsInvocable<View, XA>> = 0, If<Any<IsValue<RB>, IsComplex<RB>>> = 0,
58 If<IsInvocable<Div,
typename RA::Type, RB const &>> = 0>
66 template<
class XA,
class XB,
class RA = RemoveReference<XA>,
67 class RB = RemoveReference<XB>,
68 If<Any<TensorTrain::IsTensorish<RA>, TensorTrain::IsOperatorish<RA>>> =
70 If<Not<IsInvocable<View, XA>>> = 0,
71 If<Any<IsValue<RB>, IsComplex<RB>>> = 0,
72 If<IsInvocable<Mul, XA &, RB const &>> = 0>
75 return eval(a * forward<XB>(b));
78 template<
class XA,
class XB,
class RA = RemoveReference<XA>,
79 class RB = RemoveReference<XB>, If<Any<IsValue<RA>, IsComplex<RA>>> = 0,
80 If<Any<TensorTrain::IsTensorish<RB>, TensorTrain::IsOperatorish<RB>>> =
82 If<Not<IsInvocable<View, XB>>> = 0,
83 If<IsInvocable<Mul, RA const &, XB &>> = 0>
86 return eval(forward<XA>(a) * b);
89 template<
class XA,
class XB,
class RA = RemoveReference<XA>,
90 class RB = RemoveReference<XB>,
91 If<Any<TensorTrain::IsTensorish<RA>, TensorTrain::IsOperatorish<RA>>> =
93 If<Not<IsInvocable<View, XA>>> = 0,
94 If<Any<IsValue<RB>, IsComplex<RB>>> = 0,
95 If<IsInvocable<Div, XA &, RB const &>> = 0>
98 return eval(a / forward<XB>(b));
101 template<
class XA,
class XB,
class RA = RemoveReference<XA>,
102 class RB = RemoveReference<XB>,
103 If<Any<TensorTrain::IsTensorish<RA>, TensorTrain::IsOperatorish<RA>>> =
105 If<IsTensorish<RB>> = 0,
106 If<IsInvocable<Mul, XA,
typename RB::Type>> = 0>
112 template<
class XA,
class XB,
class RA = RemoveReference<XA>,
113 class RB = RemoveReference<XB>, If<IsTensorish<RA>> = 0,
114 If<Any<TensorTrain::IsTensorish<RB>, TensorTrain::IsOperatorish<RB>>> =
116 If<IsInvocable<Mul,
typename RA::Type, XB>> = 0>
122 template<
class XA,
class XB,
class RA = RemoveReference<XA>,
123 class RB = RemoveReference<XB>,
124 If<Any<TensorTrain::IsTensorish<RA>, TensorTrain::IsOperatorish<RA>>> =
126 If<IsTensorish<RB>> = 0,
127 If<IsInvocable<Div, XA,
typename RB::Type>> = 0>
Definition cholesky.hpp:18
static constexpr X eval(X &&a)
Definition eval.hpp:11
static constexpr auto makeConstantSequence()
Definition sequence.hpp:402
Size Index
Definition type_traits.hpp:21
static constexpr auto rcp(Complex< T > const &b)
Definition rcp.hpp:13
std::invoke_result_t< F, Args... > ResultOf
Definition type_traits.hpp:140
static constexpr auto pow(Complex< X > const &x, Complex< Y > const &y)
Definition pow.hpp:13
static constexpr auto operator*(JacobiRotation< TA > const &a, JacobiRotation< TB > const &b)
Definition jacobi_rotation.hpp:311
static constexpr auto sign(Complex< T > const &a)
Definition sign.hpp:13
static constexpr auto operator/(Sequence< T, As... > const, Sequence< T, Bs... > const)
Definition sequence.hpp:169
static constexpr auto abs(Complex< T > const &a)
Definition abs.hpp:12
static constexpr auto enumerate(F &&f, Xs &&...args)
Definition enumerate.hpp:20