mirror of
https://github.com/fastfloat/fast_float.git
synced 2025-12-06 16:56:57 +08:00
lint
This commit is contained in:
parent
07ab87ca2b
commit
3dd3712782
@ -34,7 +34,7 @@ Value findmax_fastfloat(std::vector<std::basic_string<CharT>> &s,
|
||||
#ifdef USING_COUNTERS
|
||||
std::vector<event_count> &aggregate
|
||||
#else
|
||||
std::chrono::nanoseconds& time
|
||||
std::chrono::nanoseconds &time
|
||||
#endif
|
||||
) {
|
||||
Value answer = 0;
|
||||
@ -55,7 +55,7 @@ Value findmax_fastfloat(std::vector<std::basic_string<CharT>> &s,
|
||||
t2 = std::chrono::high_resolution_clock::now();
|
||||
time += t2 - t1;
|
||||
#endif
|
||||
|
||||
|
||||
if (ec != std::errc{}) {
|
||||
throw std::runtime_error("bug in findmax_fastfloat");
|
||||
}
|
||||
@ -71,7 +71,7 @@ time_it_ns(std::vector<std::basic_string<CharT>> &lines, T const &function,
|
||||
size_t repeat) {
|
||||
std::vector<event_count> aggregate;
|
||||
bool printed_bug = false;
|
||||
for (size_t i = 0; i < repeat; i++) {
|
||||
for (size_t i = 0; i < repeat; i++) {
|
||||
double ts = function(lines, aggregate);
|
||||
if (ts == 0 && !printed_bug) {
|
||||
printf("bug\n");
|
||||
@ -155,7 +155,8 @@ time_it_ns(std::vector<std::basic_string<CharT>> &lines, T const &function,
|
||||
printf("bug\n");
|
||||
printed_bug = true;
|
||||
}
|
||||
double dif = std::chrono::duration_cast<std::chrono::nanoseconds>(time).count();
|
||||
double dif =
|
||||
std::chrono::duration_cast<std::chrono::nanoseconds>(time).count();
|
||||
average += dif;
|
||||
min_value = min_value < dif ? min_value : dif;
|
||||
}
|
||||
@ -206,8 +207,9 @@ void process(std::vector<std::string> &lines, size_t volume) {
|
||||
volume = 2 * volume;
|
||||
volumeMB = volume / (1024. * 1024.);
|
||||
std::cout << "UTF-16 volume = " << volumeMB << " MB " << std::endl;
|
||||
pretty_print(volume, lines.size(), "fastfloat (64)",
|
||||
time_it_ns(lines16, findmax_fastfloat<char16_t, double>, repeat));
|
||||
pretty_print(
|
||||
volume, lines.size(), "fastfloat (64)",
|
||||
time_it_ns(lines16, findmax_fastfloat<char16_t, double>, repeat));
|
||||
pretty_print(volume, lines.size(), "fastfloat (32)",
|
||||
time_it_ns(lines16, findmax_fastfloat<char16_t, float>, repeat));
|
||||
}
|
||||
@ -229,29 +231,23 @@ void fileload(std::string filename) {
|
||||
#ifdef FASTFLOAT_ONLY_POSITIVE_C_NUMBER_WO_INF_NAN
|
||||
/* This code is a simple parser emulator */
|
||||
for (size_t n = 0; n < line.size(); ++n) {
|
||||
if ((line[n] >= '0' && line[n] <= '9'))
|
||||
{
|
||||
if ((line[n] >= '0' && line[n] <= '9')) {
|
||||
/* in the real parser we don't check anything else
|
||||
and call the from_chars function immediately */
|
||||
const auto s = n;
|
||||
for (++n; n < line.size() &&
|
||||
((line[n] >= '0' && line[n] <= '9') ||
|
||||
line[n] == 'e' || line[n] == 'E' ||
|
||||
line[n] == '.' ||
|
||||
line[n] == '-' || line[n] == '+'
|
||||
/* last line for exponent sign*/
|
||||
);
|
||||
++n)
|
||||
{
|
||||
|
||||
((line[n] >= '0' && line[n] <= '9') || line[n] == 'e' ||
|
||||
line[n] == 'E' || line[n] == '.' || line[n] == '-' ||
|
||||
line[n] == '+'
|
||||
/* last line for exponent sign*/
|
||||
);
|
||||
++n) {
|
||||
}
|
||||
/*~ in the real parser we don't check anything else
|
||||
and call the from_chars function immediately */
|
||||
|
||||
volume += lines.emplace_back(line.substr(s, n)).size();
|
||||
}
|
||||
else
|
||||
{
|
||||
} else {
|
||||
/* for the test we simplify skipped all other symbols,
|
||||
in real application this should be a full parser,
|
||||
that parse also any mathematical operations like + and -
|
||||
@ -261,7 +257,7 @@ void fileload(std::string filename) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
// in the real parser this part of code should return end token
|
||||
// in the real parser this part of code should return end token
|
||||
#else
|
||||
volume += lines.emplace_back(line).size();
|
||||
#endif
|
||||
|
||||
@ -62,7 +62,11 @@
|
||||
#if defined(__clang__) // needs testing
|
||||
#define FASTFLOAT_ASSUME(expr) __builtin_assume(expr)
|
||||
#elif defined(__GNUC__) && !defined(__ICC) // needs testing
|
||||
#define FASTFLOAT_ASSUME(expr) if (expr) {} else { __builtin_unreachable(); }
|
||||
#define FASTFLOAT_ASSUME(expr) \
|
||||
if (expr) { \
|
||||
} else { \
|
||||
__builtin_unreachable(); \
|
||||
}
|
||||
#elif defined(__ICC) // needs testing
|
||||
#define FASTFLOAT_ASSUME(expr) __assume(expr)
|
||||
#elif defined(_MSC_VER)
|
||||
|
||||
@ -67,8 +67,9 @@ template <typename UC> struct from_chars_result_t {
|
||||
using from_chars_result = from_chars_result_t<char>;
|
||||
|
||||
template <typename UC> struct parse_options_t {
|
||||
FASTFLOAT_CONSTEXPR20 explicit parse_options_t(chars_format fmt = chars_format::general,
|
||||
UC dot = UC('.'), const int b = 10) noexcept
|
||||
FASTFLOAT_CONSTEXPR20 explicit parse_options_t(
|
||||
chars_format fmt = chars_format::general, UC dot = UC('.'),
|
||||
const int b = 10) noexcept
|
||||
: format(fmt), decimal_point(dot), base(static_cast<uint8_t>(b)) {}
|
||||
|
||||
/** Which number formats are accepted */
|
||||
@ -216,7 +217,8 @@ using parse_options = parse_options_t<char>;
|
||||
|
||||
namespace fast_float {
|
||||
|
||||
fastfloat_really_inline FASTFLOAT_CONSTEVAL20 bool cpp20_and_in_constexpr() noexcept {
|
||||
fastfloat_really_inline FASTFLOAT_CONSTEVAL20 bool
|
||||
cpp20_and_in_constexpr() noexcept {
|
||||
#if FASTFLOAT_HAS_IS_CONSTANT_EVALUATED
|
||||
return std::is_constant_evaluated();
|
||||
#else
|
||||
@ -304,7 +306,8 @@ struct value128 {
|
||||
uint64_t low;
|
||||
uint64_t high;
|
||||
|
||||
constexpr value128(uint64_t _low, uint64_t _high) noexcept : low(_low), high(_high) {}
|
||||
constexpr value128(uint64_t _low, uint64_t _high) noexcept
|
||||
: low(_low), high(_high) {}
|
||||
|
||||
constexpr value128() noexcept : low(0), high(0) {}
|
||||
};
|
||||
@ -362,7 +365,8 @@ leading_zeroes(uint64_t input_num) noexcept {
|
||||
}
|
||||
|
||||
// slow emulation routine for 32-bit
|
||||
fastfloat_really_inline constexpr uint64_t emulu(uint32_t x, uint32_t y) noexcept {
|
||||
fastfloat_really_inline constexpr uint64_t emulu(uint32_t x,
|
||||
uint32_t y) noexcept {
|
||||
return x * (uint64_t)y;
|
||||
}
|
||||
|
||||
@ -995,12 +999,11 @@ binary_format<double>::hidden_bit_mask() {
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
fastfloat_really_inline FASTFLOAT_CONSTEXPR20 void
|
||||
to_float(
|
||||
fastfloat_really_inline FASTFLOAT_CONSTEXPR20 void to_float(
|
||||
#ifndef FASTFLOAT_ONLY_POSITIVE_C_NUMBER_WO_INF_NAN
|
||||
bool const negative,
|
||||
bool const negative,
|
||||
#endif
|
||||
adjusted_mantissa const &am, T &value) noexcept {
|
||||
adjusted_mantissa const &am, T &value) noexcept {
|
||||
using equiv_uint = equiv_uint_t<T>;
|
||||
equiv_uint word = equiv_uint(am.mantissa);
|
||||
word = equiv_uint(word | equiv_uint(am.power2)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user