Xmipp  v3.23.11-Nereus
Classes | Public Types | Public Member Functions | Static Public Member Functions | Static Public Attributes | List of all members
testing::internal::FloatingPoint< RawType > Class Template Reference

#include <gtest-internal.h>

Public Types

typedef TypeWithSize< sizeof(RawType)>::UInt Bits
 

Public Member Functions

 FloatingPoint (const RawType &x)
 
const Bitsbits () const
 
Bits exponent_bits () const
 
Bits fraction_bits () const
 
Bits sign_bit () const
 
bool is_nan () const
 
bool AlmostEquals (const FloatingPoint &rhs) const
 
template<>
float Max ()
 
template<>
double Max ()
 

Static Public Member Functions

static RawType ReinterpretBits (const Bits bits)
 
static RawType Infinity ()
 
static RawType Max ()
 

Static Public Attributes

static const size_t kBitCount = 8 * sizeof(RawType)
 
static const size_t kFractionBitCount
 
static const size_t kExponentBitCount = kBitCount - 1 - kFractionBitCount
 
static const Bits kSignBitMask = static_cast<Bits>(1) << (kBitCount - 1)
 
static const Bits kFractionBitMask
 
static const Bits kExponentBitMask = ~(kSignBitMask | kFractionBitMask)
 
static const uint32_t kMaxUlps = 4
 

Detailed Description

template<typename RawType>
class testing::internal::FloatingPoint< RawType >

Definition at line 246 of file gtest-internal.h.

Member Typedef Documentation

◆ Bits

template<typename RawType>
typedef TypeWithSize<sizeof(RawType)>::UInt testing::internal::FloatingPoint< RawType >::Bits

Definition at line 250 of file gtest-internal.h.

Constructor & Destructor Documentation

◆ FloatingPoint()

template<typename RawType>
testing::internal::FloatingPoint< RawType >::FloatingPoint ( const RawType &  x)
inlineexplicit

Definition at line 294 of file gtest-internal.h.

294 { u_.value_ = x; }
doublereal * x

Member Function Documentation

◆ AlmostEquals()

template<typename RawType>
bool testing::internal::FloatingPoint< RawType >::AlmostEquals ( const FloatingPoint< RawType > &  rhs) const
inline

Definition at line 340 of file gtest-internal.h.

340  {
341  // The IEEE standard says that any comparison operation involving
342  // a NAN must return false.
343  if (is_nan() || rhs.is_nan()) return false;
344 
345  return DistanceBetweenSignAndMagnitudeNumbers(u_.bits_, rhs.u_.bits_) <=
346  kMaxUlps;
347  }
static const uint32_t kMaxUlps

◆ bits()

template<typename RawType>
const Bits& testing::internal::FloatingPoint< RawType >::bits ( ) const
inline

Definition at line 316 of file gtest-internal.h.

316 { return u_.bits_; }

◆ exponent_bits()

template<typename RawType>
Bits testing::internal::FloatingPoint< RawType >::exponent_bits ( ) const
inline

Definition at line 319 of file gtest-internal.h.

319 { return kExponentBitMask & u_.bits_; }

◆ fraction_bits()

template<typename RawType>
Bits testing::internal::FloatingPoint< RawType >::fraction_bits ( ) const
inline

Definition at line 322 of file gtest-internal.h.

322 { return kFractionBitMask & u_.bits_; }

◆ Infinity()

template<typename RawType>
static RawType testing::internal::FloatingPoint< RawType >::Infinity ( )
inlinestatic

Definition at line 308 of file gtest-internal.h.

static RawType ReinterpretBits(const Bits bits)

◆ is_nan()

template<typename RawType>
bool testing::internal::FloatingPoint< RawType >::is_nan ( ) const
inline

Definition at line 328 of file gtest-internal.h.

328  {
329  // It's a NAN if the exponent bits are all ones and the fraction
330  // bits are not entirely zeros.
331  return (exponent_bits() == kExponentBitMask) && (fraction_bits() != 0);
332  }

◆ Max() [1/3]

template<typename RawType>
static RawType testing::internal::FloatingPoint< RawType >::Max ( )
static

◆ Max() [2/3]

template<>
float testing::internal::FloatingPoint< float >::Max ( )
inline

Definition at line 396 of file gtest-internal.h.

396  {
397  return FLT_MAX;
398 }

◆ Max() [3/3]

template<>
double testing::internal::FloatingPoint< double >::Max ( )
inline

Definition at line 400 of file gtest-internal.h.

400  {
401  return DBL_MAX;
402 }
#define DBL_MAX

◆ ReinterpretBits()

template<typename RawType>
static RawType testing::internal::FloatingPoint< RawType >::ReinterpretBits ( const Bits  bits)
inlinestatic

Definition at line 301 of file gtest-internal.h.

301  {
302  FloatingPoint fp(0);
303  fp.u_.bits_ = bits;
304  return fp.u_.value_;
305  }

◆ sign_bit()

template<typename RawType>
Bits testing::internal::FloatingPoint< RawType >::sign_bit ( ) const
inline

Definition at line 325 of file gtest-internal.h.

325 { return kSignBitMask & u_.bits_; }

Member Data Documentation

◆ kBitCount

template<typename RawType>
const size_t testing::internal::FloatingPoint< RawType >::kBitCount = 8 * sizeof(RawType)
static

Definition at line 255 of file gtest-internal.h.

◆ kExponentBitCount

template<typename RawType>
const size_t testing::internal::FloatingPoint< RawType >::kExponentBitCount = kBitCount - 1 - kFractionBitCount
static

Definition at line 262 of file gtest-internal.h.

◆ kExponentBitMask

template<typename RawType>
const Bits testing::internal::FloatingPoint< RawType >::kExponentBitMask = ~(kSignBitMask | kFractionBitMask)
static

Definition at line 272 of file gtest-internal.h.

◆ kFractionBitCount

template<typename RawType>
const size_t testing::internal::FloatingPoint< RawType >::kFractionBitCount
static
Initial value:
=
std::numeric_limits<RawType>::digits - 1

Definition at line 258 of file gtest-internal.h.

◆ kFractionBitMask

template<typename RawType>
const Bits testing::internal::FloatingPoint< RawType >::kFractionBitMask
static
Initial value:
= ~static_cast<Bits>(0) >>

Definition at line 268 of file gtest-internal.h.

◆ kMaxUlps

template<typename RawType>
const uint32_t testing::internal::FloatingPoint< RawType >::kMaxUlps = 4
static

Definition at line 286 of file gtest-internal.h.

◆ kSignBitMask

template<typename RawType>
const Bits testing::internal::FloatingPoint< RawType >::kSignBitMask = static_cast<Bits>(1) << (kBitCount - 1)
static

Definition at line 265 of file gtest-internal.h.


The documentation for this class was generated from the following file: