mirror of
https://github.com/fastfloat/fast_float.git
synced 2025-12-06 16:56:57 +08:00
float.rounds_to_nearest
This commit is contained in:
parent
b3acae22ea
commit
c62b853648
@ -127,32 +127,32 @@ TEST_CASE("system_info") {
|
|||||||
std::cout << std::endl;
|
std::cout << std::endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_CASE("rounds_to_nearest") {
|
TEST_CASE("float.rounds_to_nearest") {
|
||||||
//
|
//
|
||||||
// If this function fails, we may be left in a non-standard rounding state.
|
// If this function fails, we may be left in a non-standard rounding state.
|
||||||
//
|
//
|
||||||
static float volatile fmin = std::numeric_limits<float>::min();
|
static float volatile fmin = std::numeric_limits<float>::min();
|
||||||
fesetround(FE_UPWARD);
|
fesetround(FE_UPWARD);
|
||||||
std::cout << "FE_UPWARD: fmin + 1.0f = " << iHexAndDec(fmin + 1.0f)
|
std::cout << "FE_UPWARD: fmin + 1.0f = " << fHexAndDec(fmin + 1.0f)
|
||||||
<< " 1.0f - fmin = " << iHexAndDec(1.0f - fmin) << std::endl;
|
<< " 1.0f - fmin = " << fHexAndDec(1.0f - fmin) << std::endl;
|
||||||
CHECK(fegetround() == FE_UPWARD);
|
CHECK(fegetround() == FE_UPWARD);
|
||||||
CHECK(fast_float::detail::rounds_to_nearest() == false);
|
CHECK(fast_float::detail::rounds_to_nearest() == false);
|
||||||
|
|
||||||
fesetround(FE_DOWNWARD);
|
fesetround(FE_DOWNWARD);
|
||||||
std::cout << "FE_DOWNWARD: fmin + 1.0f = " << iHexAndDec(fmin + 1.0f)
|
std::cout << "FE_DOWNWARD: fmin + 1.0f = " << fHexAndDec(fmin + 1.0f)
|
||||||
<< " 1.0f - fmin = " << iHexAndDec(1.0f - fmin) << std::endl;
|
<< " 1.0f - fmin = " << fHexAndDec(1.0f - fmin) << std::endl;
|
||||||
CHECK(fegetround() == FE_DOWNWARD);
|
CHECK(fegetround() == FE_DOWNWARD);
|
||||||
CHECK(fast_float::detail::rounds_to_nearest() == false);
|
CHECK(fast_float::detail::rounds_to_nearest() == false);
|
||||||
|
|
||||||
fesetround(FE_TOWARDZERO);
|
fesetround(FE_TOWARDZERO);
|
||||||
std::cout << "FE_TOWARDZERO: fmin + 1.0f = " << iHexAndDec(fmin + 1.0f)
|
std::cout << "FE_TOWARDZERO: fmin + 1.0f = " << fHexAndDec(fmin + 1.0f)
|
||||||
<< " 1.0f - fmin = " << iHexAndDec(1.0f - fmin) << std::endl;
|
<< " 1.0f - fmin = " << fHexAndDec(1.0f - fmin) << std::endl;
|
||||||
CHECK(fegetround() == FE_TOWARDZERO);
|
CHECK(fegetround() == FE_TOWARDZERO);
|
||||||
CHECK(fast_float::detail::rounds_to_nearest() == false);
|
CHECK(fast_float::detail::rounds_to_nearest() == false);
|
||||||
|
|
||||||
fesetround(FE_TONEAREST);
|
fesetround(FE_TONEAREST);
|
||||||
std::cout << "FE_TONEAREST: fmin + 1.0f = " << iHexAndDec(fmin + 1.0f)
|
std::cout << "FE_TONEAREST: fmin + 1.0f = " << fHexAndDec(fmin + 1.0f)
|
||||||
<< " 1.0f - fmin = " << iHexAndDec(1.0f - fmin) << std::endl;
|
<< " 1.0f - fmin = " << fHexAndDec(1.0f - fmin) << std::endl;
|
||||||
CHECK(fegetround() == FE_TONEAREST);
|
CHECK(fegetround() == FE_TONEAREST);
|
||||||
#if (FLT_EVAL_METHOD == 1) || (FLT_EVAL_METHOD == 0)
|
#if (FLT_EVAL_METHOD == 1) || (FLT_EVAL_METHOD == 0)
|
||||||
CHECK(fast_float::detail::rounds_to_nearest() == true);
|
CHECK(fast_float::detail::rounds_to_nearest() == true);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user