1 #ifndef VIENNACL_TOOLS_RANDOM_HPP
2 #define VIENNACL_TOOLS_RANDOM_HPP
43 template<
typename NumericT>
56 template<
typename NumericT>
65 while (std::fabs(u) <= 0 || u >=
NumericT(1))
66 u =
static_cast<NumericT>(double(rand()) / double(RAND_MAX));
69 while (std::fabs(v) <= 0 || v >=
NumericT(1))
70 v = static_cast<NumericT>(
double(rand()) / double(RAND_MAX));
72 return mean_ + sigma_ * std::sqrt(
NumericT(-2) * std::log(u)) * std::cos(
NumericT(6.28318530717958647692) * v);