Ignore:
Timestamp:
01/12/17 13:16:48 (8 years ago)
Author:
epyon
Message:
  • getting rid of size_t
  • datatypes now restricted to uint32 size
  • 64-bit compatibility
  • copyright updates where modified
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/core/random.cc

    r509 r533  
    1616static const uint32 mt_matrix_a   = 0x9908B0DFUL;
    1717
    18 #define NV_MT_MIXBITS(u, v) ( ( (u) & mt_upper_mask) | ( (v) & mt_lower_mask) )
    19 #define NV_MT_TWIST(u, v)  ( (NV_MT_MIXBITS(u, v) >> 1) ^ ( (v) & 1UL ? mt_matrix_a : 0UL) )
     18#define NV_MT_MIXBITS(u, v) ( uint32( (u) & mt_upper_mask) | uint32( (v) & mt_lower_mask) )
     19#define NV_MT_TWIST(u, v)  ( uint32(NV_MT_MIXBITS(u, v) >> uint32(1)) ^ uint32( (v) & uint32(1) ? mt_matrix_a : uint32(0)) )
    2020
    2121nv::random& random::get()
     
    4343{
    4444        uint32 *p = m_state;
    45 
    46         for ( int count = ( mersenne_n - mersenne_m + 1 ); --count; p++ )
     45        constexpr int m = mersenne_m;
     46        constexpr int n = mersenne_n;
     47
     48        for ( int count = ( n - m + 1 ); --count; p++ )
    4749                *p = p[mersenne_m] ^ NV_MT_TWIST( p[0], p[1] );
    4850
    4951        for ( int count = mersenne_m; --count; p++ )
    50                 *p = p[mersenne_m - mersenne_n] ^ NV_MT_TWIST( p[0], p[1] );
    51 
    52         *p = p[mersenne_m - mersenne_n] ^ NV_MT_TWIST( p[0], m_state[0] );
     52        {
     53                *p = p[m - n] ^ NV_MT_TWIST( p[0], p[1] );
     54        }
     55
     56        *p = p[m - n] ^ NV_MT_TWIST( p[0], m_state[0] );
    5357
    5458        m_remaining = mersenne_n;
Note: See TracChangeset for help on using the changeset viewer.