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

Function CleanFloat16Statistic

cpp/src/parquet/statistics.cc:411–433  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

409}
410
411optional<std::pair<FLBA, FLBA>> CleanFloat16Statistic(std::pair<FLBA, FLBA> min_max) {
412 FLBA min_flba = min_max.first;
413 FLBA max_flba = min_max.second;
414 Float16 min = Float16::FromLittleEndian(min_flba.ptr);
415 Float16 max = Float16::FromLittleEndian(max_flba.ptr);
416
417 if (min.is_nan() || max.is_nan()) {
418 return ::std::nullopt;
419 }
420
421 if (IsInvalidMinMax(min, max)) {
422 return ::std::nullopt;
423 }
424
425 if (min.is_zero() && !min.signbit()) {
426 min_flba = FLBA{Float16Constants::negative_zero()};
427 }
428 if (max.is_zero() && max.signbit()) {
429 max_flba = FLBA{Float16Constants::positive_zero()};
430 }
431
432 return {{min_flba, max_flba}};
433}
434
435optional<std::pair<FLBA, FLBA>> CleanStatistic(std::pair<FLBA, FLBA> min_max,
436 LogicalType::Type::type logical_type) {

Callers 1

CleanStatisticFunction · 0.85

Calls 3

IsInvalidMinMaxFunction · 0.85
signbitMethod · 0.80
FromLittleEndianFunction · 0.50

Tested by

no test coverage detected