WPILibC++
2025.3.1
Loading...
Searching...
No Matches
find_exponent.hpp
Go to the documentation of this file.
1
/*################################################################################
2
##
3
## Copyright (C) 2016-2024 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
/*
22
* compile-time find_exponent function
23
*/
24
25
#ifndef _gcem_find_exponent_HPP
26
#define _gcem_find_exponent_HPP
27
28
namespace
gcem
29
{
30
31
namespace
internal
32
{
33
34
template
<
typename
T>
35
constexpr
36
llint_t
37
find_exponent
(
const
T x,
const
llint_t
exponent)
38
noexcept
39
{
40
return
(
// < 1
41
x < T(1e-03) ? \
42
find_exponent
(x * T(1e+04), exponent -
llint_t
(4)) :
43
x < T(1e-01) ? \
44
find_exponent
(x * T(1e+02), exponent -
llint_t
(2)) :
45
x < T(1) ? \
46
find_exponent
(x * T(10), exponent -
llint_t
(1)) :
47
// > 10
48
x > T(10) ? \
49
find_exponent
(x / T(10), exponent +
llint_t
(1)) :
50
x > T(1e+02) ? \
51
find_exponent
(x / T(1e+02), exponent +
llint_t
(2)) :
52
x > T(1e+04) ? \
53
find_exponent
(x / T(1e+04), exponent +
llint_t
(4)) :
54
// else
55
exponent );
56
}
57
58
}
59
60
}
61
62
#endif
gcem::internal::find_exponent
constexpr llint_t find_exponent(const T x, const llint_t exponent) noexcept
Definition
find_exponent.hpp:37
gcem
Definition
is_odd.hpp:29
gcem::llint_t
long long int llint_t
Definition
gcem_options.hpp:71
thirdparty
gcem
include
gcem_incl
find_exponent.hpp
Generated on Fri Feb 14 2025 07:31:45 for WPILibC++ by
1.12.0