mirror of
https://github.com/XRPLF/rippled.git
synced 2025-11-26 14:05:51 +00:00
Add clip
* Return 0 if abs(x) < limit, else returns x
This commit is contained in:
committed by
Elliot Lee
parent
476ee8a479
commit
24fe5f9fd0
@@ -325,6 +325,16 @@ root(Number f, unsigned d);
|
|||||||
Number
|
Number
|
||||||
power(Number f, unsigned n, unsigned d);
|
power(Number f, unsigned n, unsigned d);
|
||||||
|
|
||||||
|
// Return 0 if abs(x) < limit, else returns x
|
||||||
|
|
||||||
|
inline constexpr Number
|
||||||
|
clip(Number const& x, Number const& limit) noexcept
|
||||||
|
{
|
||||||
|
if (abs(x) < limit)
|
||||||
|
return Number{};
|
||||||
|
return x;
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace ripple
|
} // namespace ripple
|
||||||
|
|
||||||
#endif // RIPPLE_BASICS_NUMBER_H_INCLUDED
|
#endif // RIPPLE_BASICS_NUMBER_H_INCLUDED
|
||||||
|
|||||||
@@ -129,6 +129,7 @@ public:
|
|||||||
void
|
void
|
||||||
test_to_integer()
|
test_to_integer()
|
||||||
{
|
{
|
||||||
|
testcase("test_to_integer");
|
||||||
Number x[]{
|
Number x[]{
|
||||||
Number{0},
|
Number{0},
|
||||||
Number{1},
|
Number{1},
|
||||||
@@ -195,6 +196,19 @@ public:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
test_clip()
|
||||||
|
{
|
||||||
|
testcase("test_clip");
|
||||||
|
Number limit{1, -6};
|
||||||
|
BEAST_EXPECT((clip(Number{2, -6}, limit) == Number{2, -6}));
|
||||||
|
BEAST_EXPECT((clip(Number{1, -6}, limit) == Number{1, -6}));
|
||||||
|
BEAST_EXPECT((clip(Number{9, -7}, limit) == Number{0}));
|
||||||
|
BEAST_EXPECT((clip(Number{-2, -6}, limit) == Number{-2, -6}));
|
||||||
|
BEAST_EXPECT((clip(Number{-1, -6}, limit) == Number{-1, -6}));
|
||||||
|
BEAST_EXPECT((clip(Number{-9, -7}, limit) == Number{0}));
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
run() override
|
run() override
|
||||||
{
|
{
|
||||||
@@ -205,6 +219,7 @@ public:
|
|||||||
test_root();
|
test_root();
|
||||||
testConversions();
|
testConversions();
|
||||||
test_to_integer();
|
test_to_integer();
|
||||||
|
test_clip();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user