#ifndef EIGEN_RANDOM_IMPL_H
#define EIGEN_RANDOM_IMPL_H
#include "./InternalHeaderCheck.h"
namespace Eigen {
namespace internal {
template <typename Scalar, bool IsComplex, bool IsInteger>
struct random_default_impl { … };
template <typename Scalar>
struct random_impl : random_default_impl<Scalar, NumTraits<Scalar>::IsComplex, NumTraits<Scalar>::IsInteger> { … };
template <typename Scalar>
struct random_retval { … };
template <typename Scalar>
inline EIGEN_MATHFUNC_RETVAL(random, Scalar) random(const Scalar& x, const Scalar& y) { … }
template <typename Scalar>
inline EIGEN_MATHFUNC_RETVAL(random, Scalar) random() { … }
struct eigen_random_device { … };
template <typename Scalar>
struct random_bits_impl { … };
template <typename BitsType>
EIGEN_DEVICE_FUNC inline BitsType getRandomBits(int numRandomBits) { … }
template <typename Scalar, bool BuiltIn = std::is_floating_point<Scalar>::value>
struct random_float_impl { … };
random_float_impl<Scalar, false>;
template <bool Specialize = (sizeof(long double) == 2 * sizeof(uint64_t)) &&
((std::numeric_limits<long double>::digits != (2 * std::numeric_limits<double>::digits)))>
struct random_longdouble_impl { … };
template <>
struct random_longdouble_impl<false> { … };
template <>
struct random_float_impl<long double> : random_longdouble_impl<> { … };
random_default_impl<Scalar, false, false>;
template <typename Scalar, bool IsSigned = NumTraits<Scalar>::IsSigned, bool BuiltIn = std::is_integral<Scalar>::value>
struct random_int_impl;
random_int_impl<Scalar, false, true>;
random_int_impl<Scalar, true, true>;
random_int_impl<Scalar, IsSigned, false>;
random_default_impl<Scalar, false, true>;
template <>
struct random_impl<bool> { … };
random_default_impl<Scalar, true, false>;
}
}
#endif