cMHN 1.1
C++ library for learning MHNs with pRC
Loading...
Searching...
No Matches
less.hpp
Go to the documentation of this file.
1// SPDX-License-Identifier: BSD-2-Clause
2
3#ifndef pRC_CORE_VALUE_FUNCTIONS_LESS_H
4#define pRC_CORE_VALUE_FUNCTIONS_LESS_H
5
8
9namespace pRC
10{
11 template<class TA, class TB, If<IsValue<TA>> = 0, If<IsValue<TB>> = 0,
12 If<Any<IsFloat<TA>, IsFloat<TB>>> = 0>
13 static inline constexpr auto operator<(TA const &a, TB const &b)
14 {
15 return a() < b();
16 }
17
18 template<class TA, class TB, If<IsInteger<TA>> = 0, If<IsInteger<TB>> = 0>
19 static inline constexpr auto operator<(TA const &a, TB const &b)
20 {
21 if constexpr(typename TA::Signed() == typename TB::Signed())
22 {
23 return a() < b();
24 }
25 else
26 {
27 if constexpr(typename TA::Signed() == true)
28 {
29 using UA = typename TA::template ChangeSigned<false>;
30 return a < zero() ? true : UA(a) < b;
31 }
32 else
33 {
34 using UB = typename TB::template ChangeSigned<false>;
35 return b < zero() ? false : a < UB(b);
36 }
37 }
38 }
39}
40#endif // pRC_CORE_VALUE_FUNCTIONS_LESS_H
Definition cholesky.hpp:18
static constexpr auto operator<(X &&a, Zero<> const)
Definition less.hpp:12
static constexpr auto makeConstantSequence()
Definition sequence.hpp:402
static constexpr auto zero()
Definition zero.hpp:12