17 template <
typename SrcScalar,
typename TgtScalar,
typename EnableIf =
void>
19 static SrcScalar
value() {
return internal::random<SrcScalar>(); }
23 template <
typename SrcScalar,
typename TgtScalar>
26 std::enable_if_t<NumTraits<SrcScalar>::IsInteger && NumTraits<SrcScalar>::IsSigned &&
27 NumTraits<TgtScalar>::IsInteger && !NumTraits<TgtScalar>::IsSigned &&
28 (std::numeric_limits<SrcScalar>::digits < std::numeric_limits<TgtScalar>::digits ||
29 (std::numeric_limits<SrcScalar>::digits == std::numeric_limits<TgtScalar>::digits &&
30 NumTraits<SrcScalar>::IsSigned))>> {
32 SrcScalar
a = internal::random<SrcScalar>();
33 return a < SrcScalar(0) ? -(
a + 1) :
a;
38 template <
typename SrcScalar,
typename TgtScalar>
41 std::enable_if_t<NumTraits<SrcScalar>::IsInteger && !NumTraits<SrcScalar>::IsSigned &&
42 NumTraits<TgtScalar>::IsInteger && !NumTraits<TgtScalar>::IsSigned &&
43 (std::numeric_limits<SrcScalar>::digits < std::numeric_limits<TgtScalar>::digits ||
44 (std::numeric_limits<SrcScalar>::digits == std::numeric_limits<TgtScalar>::digits &&
45 NumTraits<SrcScalar>::IsSigned))>> {
47 SrcScalar
a = internal::random<SrcScalar>();
53 template <
typename SrcScalar,
typename TgtScalar>
56 std::enable_if_t<NumTraits<SrcScalar>::IsInteger && NumTraits<TgtScalar>::IsInteger &&
57 NumTraits<TgtScalar>::IsSigned && !NumTraits<SrcScalar>::IsSigned &&
58 (std::numeric_limits<SrcScalar>::digits > std::numeric_limits<TgtScalar>::digits)>> {
60 TgtScalar
b = internal::random<TgtScalar>();
61 return static_cast<SrcScalar
>(
b < TgtScalar(0) ? -(
b + 1) :
b);
66 template <
typename SrcScalar,
typename TgtScalar>
69 std::enable_if_t<NumTraits<SrcScalar>::IsInteger && NumTraits<TgtScalar>::IsInteger &&
70 !NumTraits<TgtScalar>::IsSigned && !NumTraits<SrcScalar>::IsSigned &&
71 (std::numeric_limits<SrcScalar>::digits > std::numeric_limits<TgtScalar>::digits)>> {
73 TgtScalar
b = internal::random<TgtScalar>();
74 return static_cast<SrcScalar
>(
b);
79 template <
typename SrcScalar,
typename TgtScalar>
82 std::enable_if_t<NumTraits<SrcScalar>::IsInteger && NumTraits<TgtScalar>::IsInteger &&
83 NumTraits<SrcScalar>::IsSigned &&
84 (std::numeric_limits<SrcScalar>::digits > std::numeric_limits<TgtScalar>::digits)>> {
85 static SrcScalar
value() {
return static_cast<SrcScalar
>(internal::random<TgtScalar>()); }
89 template <
typename SrcScalar,
typename TgtScalar>
92 std::enable_if_t<NumTraits<SrcScalar>::IsInteger && NumTraits<TgtScalar>::IsInteger &&
93 !NumTraits<SrcScalar>::IsSigned && NumTraits<TgtScalar>::IsSigned &&
94 (std::numeric_limits<SrcScalar>::digits == std::numeric_limits<TgtScalar>::digits)>> {
95 static SrcScalar
value() {
return internal::random<SrcScalar>() / 2; }
99 template <
typename SrcScalar,
typename TgtScalar>
101 SrcScalar, TgtScalar,
102 std::enable_if_t<!NumTraits<SrcScalar>::IsInteger && !NumTraits<SrcScalar>::IsComplex &&
103 NumTraits<TgtScalar>::IsInteger &&
104 (std::numeric_limits<TgtScalar>::digits <= std::numeric_limits<SrcScalar>::digits)>> {
105 static SrcScalar
value() {
return static_cast<SrcScalar
>(internal::random<TgtScalar>()); }
109 template <
typename SrcScalar,
typename TgtScalar>
111 SrcScalar, TgtScalar,
112 std::enable_if_t<!NumTraits<SrcScalar>::IsInteger && !NumTraits<SrcScalar>::IsComplex &&
113 NumTraits<TgtScalar>::IsInteger && NumTraits<TgtScalar>::IsSigned &&
114 (std::numeric_limits<TgtScalar>::digits > std::numeric_limits<SrcScalar>::digits)>> {
119 static const TgtScalar KeepMask = (
static_cast<TgtScalar
>(1) << std::numeric_limits<SrcScalar>::digits) - 1;
120 const TgtScalar
a = internal::random<TgtScalar>();
121 return static_cast<SrcScalar
>(
a > TgtScalar(0) ? (
a & KeepMask) : -(
a & KeepMask));
125 template <
typename SrcScalar,
typename TgtScalar>
127 SrcScalar, TgtScalar,
128 std::enable_if_t<!NumTraits<SrcScalar>::IsInteger && !NumTraits<SrcScalar>::IsComplex &&
129 NumTraits<TgtScalar>::IsInteger && !NumTraits<TgtScalar>::IsSigned &&
130 (std::numeric_limits<TgtScalar>::digits > std::numeric_limits<SrcScalar>::digits)>> {
135 static const TgtScalar KeepMask = (
static_cast<TgtScalar
>(1) << std::numeric_limits<SrcScalar>::digits) - 1;
136 const TgtScalar
a = internal::random<TgtScalar>();
137 return static_cast<SrcScalar
>(
a & KeepMask);
142 template <
typename SrcScalar,
typename TgtScalar>
144 SrcScalar, TgtScalar,
145 std::enable_if_t<NumTraits<SrcScalar>::IsInteger && !NumTraits<TgtScalar>::IsInteger &&
146 !NumTraits<TgtScalar>::IsComplex>> {
153 template <
typename SrcScalar,
typename TgtScalar>
155 SrcScalar, TgtScalar,
156 std::enable_if_t<!NumTraits<SrcScalar>::IsInteger && !NumTraits<SrcScalar>::IsComplex &&
157 !NumTraits<TgtScalar>::IsInteger && !NumTraits<TgtScalar>::IsComplex &&
158 (std::numeric_limits<SrcScalar>::digits > std::numeric_limits<TgtScalar>::digits)>> {
159 static SrcScalar
value() {
return static_cast<SrcScalar
>(internal::random<TgtScalar>()); }
163 template <
typename SrcScalar,
typename TgtScalar>
165 SrcScalar, TgtScalar, std::enable_if_t<NumTraits<SrcScalar>::IsComplex && !NumTraits<TgtScalar>::IsComplex>> {
171 template <
typename SrcScalar,
typename TgtScalar>
173 SrcScalar, TgtScalar, std::enable_if_t<!NumTraits<SrcScalar>::IsComplex && NumTraits<TgtScalar>::IsComplex>> {
179 template <
typename SrcScalar,
typename TgtScalar>
181 SrcScalar, TgtScalar, std::enable_if_t<NumTraits<SrcScalar>::IsComplex && NumTraits<TgtScalar>::IsComplex>> {
Scalar * b
Definition: benchVecAdd.cpp:17
const Scalar * a
Definition: level2_cplx_impl.h:32
Namespace containing all symbols from the Eigen library.
Definition: bench_norm.cpp:70
Definition: Eigen_Colamd.h:49
T Real
Definition: NumTraits.h:183
static SrcScalar value()
Definition: random_without_cast_overflow.h:46
NumTraits< TgtScalar >::Real TgtReal
Definition: random_without_cast_overflow.h:174
static SrcScalar value()
Definition: random_without_cast_overflow.h:175
static SrcScalar value()
Definition: random_without_cast_overflow.h:159
static SrcScalar value()
Definition: random_without_cast_overflow.h:167
NumTraits< SrcScalar >::Real SrcReal
Definition: random_without_cast_overflow.h:166
static SrcScalar value()
Definition: random_without_cast_overflow.h:85
static SrcScalar value()
Definition: random_without_cast_overflow.h:147
static SrcScalar value()
Definition: random_without_cast_overflow.h:59
NumTraits< TgtScalar >::Real TgtReal
Definition: random_without_cast_overflow.h:183
NumTraits< SrcScalar >::Real SrcReal
Definition: random_without_cast_overflow.h:182
static SrcScalar value()
Definition: random_without_cast_overflow.h:184
static SrcScalar value()
Definition: random_without_cast_overflow.h:115
static SrcScalar value()
Definition: random_without_cast_overflow.h:105
static SrcScalar value()
Definition: random_without_cast_overflow.h:95
static SrcScalar value()
Definition: random_without_cast_overflow.h:31
static SrcScalar value()
Definition: random_without_cast_overflow.h:131
static SrcScalar value()
Definition: random_without_cast_overflow.h:72
Definition: random_without_cast_overflow.h:18
static SrcScalar value()
Definition: random_without_cast_overflow.h:19