Eigen::internal::random_float_impl< Scalar, BuiltIn > Struct Template Reference

#include <RandomImpl.h>

Public Types

using BitsType = typename numext::get_integer_by_size< sizeof(Scalar)>::unsigned_type
 

Static Public Member Functions

static constexpr EIGEN_DEVICE_FUNC int mantissaBits ()
 
static EIGEN_DEVICE_FUNC Scalar run (int numRandomBits)
 

Member Typedef Documentation

◆ BitsType

template<typename Scalar , bool BuiltIn = std::is_floating_point<Scalar>::value>
using Eigen::internal::random_float_impl< Scalar, BuiltIn >::BitsType = typename numext::get_integer_by_size<sizeof(Scalar)>::unsigned_type

Member Function Documentation

◆ mantissaBits()

template<typename Scalar , bool BuiltIn = std::is_floating_point<Scalar>::value>
static constexpr EIGEN_DEVICE_FUNC int Eigen::internal::random_float_impl< Scalar, BuiltIn >::mantissaBits ( )
inlinestaticconstexpr
85  {
86  const int digits = NumTraits<Scalar>::digits();
87  return digits - 1;
88  }

Referenced by Eigen::internal::random_float_impl< Scalar, BuiltIn >::run(), and Eigen::internal::random_float_impl< Scalar, false >::run().

◆ run()

template<typename Scalar , bool BuiltIn = std::is_floating_point<Scalar>::value>
static EIGEN_DEVICE_FUNC Scalar Eigen::internal::random_float_impl< Scalar, BuiltIn >::run ( int  numRandomBits)
inlinestatic
89  {
90  eigen_assert(numRandomBits >= 0 && numRandomBits <= mantissaBits());
91  BitsType randomBits = getRandomBits<BitsType>(numRandomBits);
92  // if fewer than MantissaBits is requested, shift them to the left
93  randomBits <<= (mantissaBits() - numRandomBits);
94  // randomBits is in the half-open interval [2,4)
95  randomBits |= numext::bit_cast<BitsType>(Scalar(2));
96  // result is in the half-open interval [-1,1)
97  Scalar result = numext::bit_cast<Scalar>(randomBits) - Scalar(3);
98  return result;
99  }
#define eigen_assert(x)
Definition: Macros.h:910
SCALAR Scalar
Definition: bench_gemm.cpp:45
typename numext::get_integer_by_size< sizeof(Scalar)>::unsigned_type BitsType
Definition: RandomImpl.h:84
static constexpr EIGEN_DEVICE_FUNC int mantissaBits()
Definition: RandomImpl.h:85

References eigen_assert, and Eigen::internal::random_float_impl< Scalar, BuiltIn >::mantissaBits().

Referenced by Eigen::internal::random_float_impl< Scalar, false >::run(), and Eigen::internal::random_longdouble_impl< false >::run().


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