WPILibC++
2024.3.2
min.hpp
Go to the documentation of this file.
1
/*################################################################################
2
##
3
## Copyright (C) 2016-2023 Keith O'Hara
4
##
5
## This file is part of the GCE-Math C++ library.
6
##
7
## Licensed under the Apache License, Version 2.0 (the "License");
8
## you may not use this file except in compliance with the License.
9
## You may obtain a copy of the License at
10
##
11
## http://www.apache.org/licenses/LICENSE-2.0
12
##
13
## Unless required by applicable law or agreed to in writing, software
14
## distributed under the License is distributed on an "AS IS" BASIS,
15
## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
## See the License for the specific language governing permissions and
17
## limitations under the License.
18
##
19
################################################################################*/
20
21
#ifndef _gcem_min_HPP
22
#define _gcem_min_HPP
23
24
#include <cmath>
25
#include <type_traits>
26
27
namespace
gcem
28
{
29
30
/**
31
* Compile-time pairwise minimum function
32
*
33
* @param x a real-valued input.
34
* @param y a real-valued input.
35
* @return Computes the minimum between \c x and \c y, where \c x and \c y have the same type (e.g., \c int, \c double, etc.)
36
*/
37
38
template
<
typename
T1,
typename
T2>
39
constexpr
40
common_t<T1,T2>
41
min
(
const
T1 x,
const
T2 y)
42
noexcept
43
{
44
if
(
std::is_constant_evaluated
()) {
45
return
( y > x ? x : y );
46
}
else
{
47
return
std::min
(x, y);
48
}
49
}
50
51
}
52
53
#endif
detail::is_constant_evaluated
constexpr FMT_INLINE auto is_constant_evaluated(bool default_value=false) noexcept -> bool
Definition:
core.h:304
gcem
Definition:
is_even.hpp:29
gcem::min
constexpr common_t< T1, T2 > min(const T1 x, const T2 y) noexcept
Compile-time pairwise minimum function.
Definition:
min.hpp:41
thirdparty
gcem
include
gcem_incl
min.hpp
Generated on Wed Mar 13 2024 05:20:41 for WPILibC++ by
1.9.4