tesseract v5.3.3.20231005
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
 
float Max ()
 
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 250 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 254 of file gtest-internal.h.

Constructor & Destructor Documentation

◆ FloatingPoint()

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

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

298{ u_.value_ = x; }

Member Function Documentation

◆ AlmostEquals()

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

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

346 {
347 // The IEEE standard says that any comparison operation involving
348 // a NAN must return false.
349 if (is_nan() || rhs.is_nan()) return false;
350
351 return DistanceBetweenSignAndMagnitudeNumbers(u_.bits_, rhs.u_.bits_)
352 <= kMaxUlps;
353 }
static const uint32_t kMaxUlps

◆ bits()

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

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

322{ return u_.bits_; }

◆ exponent_bits()

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

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

325{ return kExponentBitMask & u_.bits_; }

◆ fraction_bits()

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

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

328{ return kFractionBitMask & u_.bits_; }

◆ Infinity()

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

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

312 {
314 }
static RawType ReinterpretBits(const Bits bits)

◆ is_nan()

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

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

334 {
335 // It's a NAN if the exponent bits are all ones and the fraction
336 // bits are not entirely zeros.
337 return (exponent_bits() == kExponentBitMask) && (fraction_bits() != 0);
338 }

◆ Max() [1/3]

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

◆ Max() [2/3]

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

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

402{ return FLT_MAX; }

◆ Max() [3/3]

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

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

404{ return DBL_MAX; }

◆ ReinterpretBits()

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

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

305 {
306 FloatingPoint fp(0);
307 fp.u_.bits_ = bits;
308 return fp.u_.value_;
309 }

◆ sign_bit()

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

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

331{ 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 259 of file gtest-internal.h.

◆ kExponentBitCount

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

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

◆ kExponentBitMask

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

Definition at line 276 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 262 of file gtest-internal.h.

◆ kFractionBitMask

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

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

◆ kMaxUlps

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

Definition at line 290 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 269 of file gtest-internal.h.


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