32constexpr T
ApplyDeadband(T value, T deadband, T maxMagnitude = T{1.0}) {
34 if constexpr (std::is_arithmetic_v<T>) {
40 if (magnitude > deadband) {
41 if (maxMagnitude / deadband > 1.0E12) {
63 return maxMagnitude * (
value - deadband) / (maxMagnitude - deadband);
80 return maxMagnitude * (
value + deadband) / (maxMagnitude - deadband);
96 T modulus = maximumInput - minimumInput;
99 int numMax = (input - minimumInput) / modulus;
100 input -= numMax * modulus;
103 int numMin = (input - maximumInput) / modulus;
104 input -= numMin * modulus;
121constexpr bool IsNear(T expected, T actual, T tolerance) {
122 if constexpr (std::is_arithmetic_v<T>) {
123 return std::abs(expected - actual) < tolerance;
150constexpr bool IsNear(T expected, T actual, T tolerance, T min, T max) {
151 T errorBound = (max - min) / 2.0;
154 if constexpr (std::is_arithmetic_v<T>) {
155 return std::abs(error) < tolerance;
169 units::radian_t{-std::numbers::pi},
170 units::radian_t{std::numbers::pi});
184constexpr std::signed_integral
auto FloorDiv(std::signed_integral
auto x,
185 std::signed_integral
auto y) {
189 if ((x < 0) != (y < 0) && rem != 0) {
206constexpr std::signed_integral
auto FloorMod(std::signed_integral
auto x,
207 std::signed_integral
auto y) {
#define WPILIB_DLLEXPORT
Definition SymbolExports.h:36
constexpr UnitType abs(const UnitType x) noexcept
Compute absolute value.
Definition math.h:726
@ value
the parser finished reading a JSON value
constexpr T ApplyDeadband(T value, T deadband, T maxMagnitude=T{1.0})
Returns 0.0 if the given value is within the specified range around zero.
Definition MathUtil.h:32
constexpr std::signed_integral auto FloorMod(std::signed_integral auto x, std::signed_integral auto y)
Returns the floor modulus of the int arguments.
Definition MathUtil.h:206
WPILIB_DLLEXPORT constexpr units::radian_t AngleModulus(units::radian_t angle)
Wraps an angle to the range -π to π radians (-180 to 180 degrees).
Definition MathUtil.h:167
constexpr bool IsNear(T expected, T actual, T tolerance)
Checks if the given value matches an expected value within a certain tolerance.
Definition MathUtil.h:121
constexpr std::signed_integral auto FloorDiv(std::signed_integral auto x, std::signed_integral auto y)
Returns the largest (closest to positive infinity) int value that is less than or equal to the algebr...
Definition MathUtil.h:184
constexpr T InputModulus(T input, T minimumInput, T maximumInput)
Returns modulus of input.
Definition MathUtil.h:95
constexpr T abs(const T x) noexcept
Compile-time absolute value function.
Definition abs.hpp:40
constexpr bool is_unit_t_v
Definition base.h:1870