| 409 | } |
| 410 | |
| 411 | optional<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 | |
| 435 | optional<std::pair<FLBA, FLBA>> CleanStatistic(std::pair<FLBA, FLBA> min_max, |
| 436 | LogicalType::Type::type logical_type) { |
no test coverage detected