remove unneeded branch
This commit is contained in:
parent
7cc60ccc0a
commit
dec60cb66a
51
src/json.hpp
51
src/json.hpp
@ -8900,41 +8900,38 @@ skip_loop:
|
||||
}
|
||||
|
||||
// adjust number by powers of ten specified by format and exponent.
|
||||
if (result != 0.0L)
|
||||
constexpr std::array<long double, 9> powerof10 = {
|
||||
{1.e1L, 1.e2L, 1.e4L, 1.e8L, 1.e16L, 1.e32L, 1.e64L, 1.e128L, 1.e256L}
|
||||
};
|
||||
|
||||
if (exp > std::numeric_limits<long double>::max_exponent10)
|
||||
{
|
||||
constexpr std::array<long double, 9> powerof10 = {
|
||||
{1.e1L, 1.e2L, 1.e4L, 1.e8L, 1.e16L, 1.e32L, 1.e64L, 1.e128L, 1.e256L}
|
||||
};
|
||||
constexpr long double inf = std::numeric_limits<long double>::infinity();
|
||||
result = (result < 0) ? -inf : inf;
|
||||
}
|
||||
else if (exp < std::numeric_limits<long double>::min_exponent10)
|
||||
{
|
||||
result = 0.0L;
|
||||
}
|
||||
else if (exp < 0)
|
||||
{
|
||||
exp = -exp;
|
||||
|
||||
if (exp > std::numeric_limits<long double>::max_exponent10)
|
||||
for (std::size_t count = 0; exp; ++count, exp >>= 1)
|
||||
{
|
||||
constexpr long double inf = std::numeric_limits<long double>::infinity();
|
||||
result = (result < 0) ? -inf : inf;
|
||||
}
|
||||
else if (exp < std::numeric_limits<long double>::min_exponent10)
|
||||
{
|
||||
result = 0.0L;
|
||||
}
|
||||
else if (exp < 0)
|
||||
{
|
||||
exp = -exp;
|
||||
|
||||
for (std::size_t count = 0; exp; ++count, exp >>= 1)
|
||||
if (exp & 1)
|
||||
{
|
||||
if (exp & 1)
|
||||
{
|
||||
result /= powerof10[count];
|
||||
}
|
||||
result /= powerof10[count];
|
||||
}
|
||||
}
|
||||
else
|
||||
}
|
||||
else
|
||||
{
|
||||
for (std::size_t count = 0; exp; ++count, exp >>= 1)
|
||||
{
|
||||
for (std::size_t count = 0; exp; ++count, exp >>= 1)
|
||||
if (exp & 1)
|
||||
{
|
||||
if (exp & 1)
|
||||
{
|
||||
result *= powerof10[count];
|
||||
}
|
||||
result *= powerof10[count];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -8197,41 +8197,38 @@ skip_loop:
|
||||
}
|
||||
|
||||
// adjust number by powers of ten specified by format and exponent.
|
||||
if (result != 0.0L)
|
||||
constexpr std::array<long double, 9> powerof10 = {
|
||||
{1.e1L, 1.e2L, 1.e4L, 1.e8L, 1.e16L, 1.e32L, 1.e64L, 1.e128L, 1.e256L}
|
||||
};
|
||||
|
||||
if (exp > std::numeric_limits<long double>::max_exponent10)
|
||||
{
|
||||
constexpr std::array<long double, 9> powerof10 = {
|
||||
{1.e1L, 1.e2L, 1.e4L, 1.e8L, 1.e16L, 1.e32L, 1.e64L, 1.e128L, 1.e256L}
|
||||
};
|
||||
constexpr long double inf = std::numeric_limits<long double>::infinity();
|
||||
result = (result < 0) ? -inf : inf;
|
||||
}
|
||||
else if (exp < std::numeric_limits<long double>::min_exponent10)
|
||||
{
|
||||
result = 0.0L;
|
||||
}
|
||||
else if (exp < 0)
|
||||
{
|
||||
exp = -exp;
|
||||
|
||||
if (exp > std::numeric_limits<long double>::max_exponent10)
|
||||
for (std::size_t count = 0; exp; ++count, exp >>= 1)
|
||||
{
|
||||
constexpr long double inf = std::numeric_limits<long double>::infinity();
|
||||
result = (result < 0) ? -inf : inf;
|
||||
}
|
||||
else if (exp < std::numeric_limits<long double>::min_exponent10)
|
||||
{
|
||||
result = 0.0L;
|
||||
}
|
||||
else if (exp < 0)
|
||||
{
|
||||
exp = -exp;
|
||||
|
||||
for (std::size_t count = 0; exp; ++count, exp >>= 1)
|
||||
if (exp & 1)
|
||||
{
|
||||
if (exp & 1)
|
||||
{
|
||||
result /= powerof10[count];
|
||||
}
|
||||
result /= powerof10[count];
|
||||
}
|
||||
}
|
||||
else
|
||||
}
|
||||
else
|
||||
{
|
||||
for (std::size_t count = 0; exp; ++count, exp >>= 1)
|
||||
{
|
||||
for (std::size_t count = 0; exp; ++count, exp >>= 1)
|
||||
if (exp & 1)
|
||||
{
|
||||
if (exp & 1)
|
||||
{
|
||||
result *= powerof10[count];
|
||||
}
|
||||
result *= powerof10[count];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user