diff options
author | heretic <heretic@yandex-team.ru> | 2022-02-10 16:45:43 +0300 |
---|---|---|
committer | Daniil Cherednik <dcherednik@yandex-team.ru> | 2022-02-10 16:45:43 +0300 |
commit | 397cbe258b9e064f49c4ca575279f02f39fef76e (patch) | |
tree | a0b0eb3cca6a14e4e8ea715393637672fa651284 /contrib/restricted/abseil-cpp-tstring/y_absl/numeric/internal/representation.h | |
parent | 43f5a35593ebc9f6bcea619bb170394ea7ae468e (diff) | |
download | ydb-397cbe258b9e064f49c4ca575279f02f39fef76e.tar.gz |
Restoring authorship annotation for <heretic@yandex-team.ru>. Commit 1 of 2.
Diffstat (limited to 'contrib/restricted/abseil-cpp-tstring/y_absl/numeric/internal/representation.h')
-rw-r--r-- | contrib/restricted/abseil-cpp-tstring/y_absl/numeric/internal/representation.h | 110 |
1 files changed, 55 insertions, 55 deletions
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/numeric/internal/representation.h b/contrib/restricted/abseil-cpp-tstring/y_absl/numeric/internal/representation.h index 0761cf39bc..fdc4bf9c59 100644 --- a/contrib/restricted/abseil-cpp-tstring/y_absl/numeric/internal/representation.h +++ b/contrib/restricted/abseil-cpp-tstring/y_absl/numeric/internal/representation.h @@ -1,55 +1,55 @@ -// Copyright 2021 The Abseil Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// https://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#ifndef ABSL_NUMERIC_INTERNAL_REPRESENTATION_H_ -#define ABSL_NUMERIC_INTERNAL_REPRESENTATION_H_ - -#include <limits> - -#include "y_absl/base/config.h" - -namespace y_absl { -ABSL_NAMESPACE_BEGIN -namespace numeric_internal { - -// Returns true iff long double is represented as a pair of doubles added -// together. -inline constexpr bool IsDoubleDouble() { - // A double-double value always has exactly twice the precision of a double - // value--one double carries the high digits and one double carries the low - // digits. This property is not shared with any other common floating-point - // representation, so this test won't trigger false positives. For reference, - // this table gives the number of bits of precision of each common - // floating-point representation: - // - // type precision - // IEEE single 24 b - // IEEE double 53 - // x86 long double 64 - // double-double 106 - // IEEE quadruple 113 - // - // Note in particular that a quadruple-precision float has greater precision - // than a double-double float despite taking up the same amount of memory; the - // quad has more of its bits allocated to the mantissa than the double-double - // has. - return std::numeric_limits<long double>::digits == - 2 * std::numeric_limits<double>::digits; -} - -} // namespace numeric_internal -ABSL_NAMESPACE_END -} // namespace y_absl - -#endif // ABSL_NUMERIC_INTERNAL_REPRESENTATION_H_ +// Copyright 2021 The Abseil Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#ifndef ABSL_NUMERIC_INTERNAL_REPRESENTATION_H_ +#define ABSL_NUMERIC_INTERNAL_REPRESENTATION_H_ + +#include <limits> + +#include "y_absl/base/config.h" + +namespace y_absl { +ABSL_NAMESPACE_BEGIN +namespace numeric_internal { + +// Returns true iff long double is represented as a pair of doubles added +// together. +inline constexpr bool IsDoubleDouble() { + // A double-double value always has exactly twice the precision of a double + // value--one double carries the high digits and one double carries the low + // digits. This property is not shared with any other common floating-point + // representation, so this test won't trigger false positives. For reference, + // this table gives the number of bits of precision of each common + // floating-point representation: + // + // type precision + // IEEE single 24 b + // IEEE double 53 + // x86 long double 64 + // double-double 106 + // IEEE quadruple 113 + // + // Note in particular that a quadruple-precision float has greater precision + // than a double-double float despite taking up the same amount of memory; the + // quad has more of its bits allocated to the mantissa than the double-double + // has. + return std::numeric_limits<long double>::digits == + 2 * std::numeric_limits<double>::digits; +} + +} // namespace numeric_internal +ABSL_NAMESPACE_END +} // namespace y_absl + +#endif // ABSL_NUMERIC_INTERNAL_REPRESENTATION_H_ |