MCPcopy Create free account
hub / github.com/apache/arrow / CleanFloat16Statistic

Function CleanFloat16Statistic

cpp/src/parquet/statistics.cc:378–401  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

376}
377
378optional<std::pair<FLBA, FLBA>> CleanFloat16Statistic(std::pair<FLBA, FLBA> min_max) {
379 FLBA min_flba = min_max.first;
380 FLBA max_flba = min_max.second;
381 Float16 min = Float16::FromLittleEndian(min_flba.ptr);
382 Float16 max = Float16::FromLittleEndian(max_flba.ptr);
383
384 if (min.is_nan() || max.is_nan()) {
385 return ::std::nullopt;
386 }
387
388 if (min == std::numeric_limits<Float16>::max() &&
389 max == std::numeric_limits<Float16>::lowest()) {
390 return ::std::nullopt;
391 }
392
393 if (min.is_zero() && !min.signbit()) {
394 min_flba = FLBA{Float16Constants::negative_zero()};
395 }
396 if (max.is_zero() && max.signbit()) {
397 max_flba = FLBA{Float16Constants::positive_zero()};
398 }
399
400 return {{min_flba, max_flba}};
401}
402
403optional<std::pair<FLBA, FLBA>> CleanStatistic(std::pair<FLBA, FLBA> min_max,
404 LogicalType::Type::type logical_type) {

Callers 1

CleanStatisticFunction · 0.85

Calls 2

signbitMethod · 0.80
FromLittleEndianFunction · 0.50

Tested by

no test coverage detected