Changes in libcfa/src/stdlib.hfa [aa8e24c3:6c5d92f]
- File:
-
- 1 edited
-
libcfa/src/stdlib.hfa (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
libcfa/src/stdlib.hfa
raa8e24c3 r6c5d92f 10 10 // Created On : Thu Jan 28 17:12:35 2016 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Wed Dec 29 15:30:58202113 // Update Count : 5 9112 // Last Modified On : Tue Apr 20 21:20:03 2021 13 // Update Count : 575 14 14 // 15 15 … … 169 169 return ret; 170 170 } 171 S_fill(T) ?`fill ( zero_t ) = void; // FIX ME: remove this once ticket 214 is resolved172 S_fill(T) ?`fill ( T * a ) { return (S_fill(T)){ 'T', '0', 0, a }; } // FIX ME: remove this once ticket 214 is resolved173 171 S_fill(T) ?`fill ( char c ) { return (S_fill(T)){ 'c', c }; } 172 S_fill(T) ?`fill ( T * a ) { return (S_fill(T)){ 'T', '0', 0, a }; } 174 173 S_fill(T) ?`fill ( T a[], size_t nmemb ) { return (S_fill(T)){ 'a', '0', nmemb * sizeof(T), a }; } 175 174 … … 363 362 364 363 static inline { 365 long int random( long int l, long int u ) { if ( u < l ) [u, l] = [l, u]; return lrand48() % (u - l + 1) + l; } // [l,u]366 long int random( long int u ) { return random( 0, u - 1); } // [0,u)364 long int random( long int l, long int u ) { if ( u < l ) [u, l] = [l, u]; return lrand48() % (u - l) + l; } // [l,u) 365 long int random( long int u ) { if ( u < 0 ) return random( u, 0 ); else return random( 0, u ); } // [0,u) 367 366 unsigned long int random( void ) { return lrand48(); } 368 367 unsigned long int random( unsigned long int u ) { return lrand48() % u; } // [0,u) 369 unsigned long int random( unsigned long int l, unsigned long int u ) { if ( u < l ) [u, l] = [l, u]; return lrand48() % (u - l + 1) + l; } // [l,u]368 unsigned long int random( unsigned long int l, unsigned long int u ) { if ( u < l ) [u, l] = [l, u]; return lrand48() % (u - l) + l; } // [l,u) 370 369 371 370 char random( void ) { return (unsigned long int)random(); } … … 388 387 //--------------------------------------- 389 388 390 struct PRNG {391 uint32_t callcnt; // call count392 uint32_t seed; // current seed393 uint32_t state; // random state394 }; // PRNG395 396 extern uint32_t prng( PRNG & prng ) __attribute__(( warn_unused_result )); // [0,UINT_MAX]397 static inline {398 void set_seed( PRNG & prng, uint32_t seed_ ) with( prng ) { state = seed = seed_; } // set seed399 void ?{}( PRNG & prng ) { set_seed( prng, rdtscl() ); } // random seed400 void ?{}( PRNG & prng, uint32_t seed ) { set_seed( prng, seed ); } // fixed seed401 uint32_t get_seed( PRNG & prng ) __attribute__(( warn_unused_result )) with( prng ) { return seed; } // get seed402 uint32_t prng( PRNG & prng, uint32_t u ) __attribute__(( warn_unused_result )) { return prng( prng ) % u; } // [0,u)403 uint32_t prng( PRNG & prng, uint32_t l, uint32_t u ) __attribute__(( warn_unused_result )) { return prng( prng, u - l + 1 ) + l; } // [l,u]404 uint32_t calls( PRNG & prng ) __attribute__(( warn_unused_result )) with( prng ) { return callcnt; }405 } // distribution406 407 extern void set_seed( uint32_t seed ); // set per thread seed408 extern uint32_t get_seed(); // get seed409 extern uint32_t prng( void ) __attribute__(( warn_unused_result )); // [0,UINT_MAX]410 static inline {411 uint32_t prng( uint32_t u ) __attribute__(( warn_unused_result ));412 uint32_t prng( uint32_t u ) { return prng() % u; } // [0,u)413 uint32_t prng( uint32_t l, uint32_t u ) __attribute__(( warn_unused_result ));414 uint32_t prng( uint32_t l, uint32_t u ) { return prng( u - l + 1 ) + l; } // [l,u]415 } // distribution416 417 //---------------------------------------418 419 389 extern bool threading_enabled( void ) OPTIONAL_THREAD; 420 390
Note:
See TracChangeset
for help on using the changeset viewer.