#include <eop_aux.hpp>
Public Member Functions | |
operator eT () const |
Definition at line 47 of file eop_aux.hpp.
eop_aux_randn< eT >::operator eT | ( | ) | const [inline] |
Definition at line 74 of file eop_aux.hpp.
References log(), rand(), and sqrt().
{ // make sure we are internally using at least floats typedef typename promote_type<eT,float>::result eTp; eTp tmp1; eTp tmp2; eTp w; do { tmp1 = eTp(2) * eTp(std::rand()) / eTp(RAND_MAX) - eTp(1); tmp2 = eTp(2) * eTp(std::rand()) / eTp(RAND_MAX) - eTp(1); w = tmp1*tmp1 + tmp2*tmp2; } while ( w >= eTp(1) ); return eT( tmp1 * std::sqrt( (eTp(-2) * std::log(w)) / w) ); }