-- e2de21d54c02b6419c57c0f4e2a16b608deca260 by Evan Brown <ezb@google.com>: Remove the InsertEnd benchmark. This benchmark has significantly different possible behaviors that can result in misleading metrics. Specifically, we can have a case where we are deallocating the last node in the b-tree in the erase and then allocating a new node in the insert call repeatedly, whereas normally, we end up just inserting/erasing a value from the last node. Also, the name of the benchmark is misleading because it involves an erase and an insert, but the name only mentions the insert. PiperOrigin-RevId: 360930639 -- 51f6bb97b9cbdb809c31b77e93ce080ca3cba9ea by Benjamin Barenblat <bbaren@google.com>: Stop testing with double-double random variables On POWER, long double is often represented as a pair of doubles added together (double-double arithmetic). We’ve already special-cased double-double arithmetic in a number of tests, but compiler bugs [1, 2, 3] have now triggered both false positives and false negatives, which suggests testing with double doubles is unlikely to yield useful signal. Remove the special casing and detect if we’re on a double-double system; if so, just don’t test long doubles. [1] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99048 [2] https://bugs.llvm.org/show_bug.cgi?id=49131 [3] https://bugs.llvm.org/show_bug.cgi?id=49132 PiperOrigin-RevId: 360793161 -- 07fb4d7932c2f5d711c480f759dacb0be60f975e by Abseil Team <absl-team@google.com>: internal change PiperOrigin-RevId: 360712825 GitOrigin-RevId: e2de21d54c02b6419c57c0f4e2a16b608deca260 Change-Id: I98389b5a8789dcc8f35abc00c767e909181665f0pull/915/head
parent
b0735979d7
commit
ab21820d47
14 changed files with 138 additions and 113 deletions
@ -0,0 +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 "absl/base/config.h" |
||||||
|
|
||||||
|
namespace 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 absl
|
||||||
|
|
||||||
|
#endif // ABSL_NUMERIC_INTERNAL_REPRESENTATION_H_
|
Loading…
Reference in new issue