103#if( OPT_TIMERS <= 4 )
104 #if( ( OPT_TIMERS == 1 ) || ( OPT_TIMERS == 3 ) )
105 #include <sys/times.h>
107 #include <sys/timeb.h>
109#elif( ( OPT_TIMERS == 5 ) || ( OPT_TIMERS == 7 ) )
111#elif( OPT_TIMERS == 6 )
112 #include <sys/time.h>
154 #if( ( OPT_TIMERS == 1 ) || ( OPT_TIMERS == 2 ) )
156 t_u = buff.tms_utime;
157 t_s = buff.tms_stime;
158 #elif( ( OPT_TIMERS == 3 ) || ( OPT_TIMERS == 4 ) )
159 t_u = times( &buff );
160 #elif( OPT_TIMERS == 5 )
162 #elif( OPT_TIMERS == 6 )
164 gettimeofday( &t , NULL );
165 t_u = double( t.tv_sec + t.tv_usec * 1e-6 );
166 #elif( OPT_TIMERS == 7 )
176 if( ticking ) {
Read( u , s ); ticking =
false; }
192 void Read(
double &tu ,
double &ts ) {
194 #if( ( OPT_TIMERS == 1 ) || ( OPT_TIMERS == 2 ) )
196 tu += ( double( buff.tms_utime - t_u ) ) /
double( CLOCKS_PER_SEC );
197 ts += ( double( buff.tms_stime - t_s ) ) /
double( CLOCKS_PER_SEC );
198 #elif( ( OPT_TIMERS == 3 ) || ( OPT_TIMERS == 4 ) )
199 tu += ( double( times( &buff ) - t_u ) ) /
double( CLOCKS_PER_SEC );
200 #elif( OPT_TIMERS == 5 )
201 tu += double( clock() - t_u ) / double( CLOCKS_PER_SEC );
202 #elif( OPT_TIMERS == 6 )
204 gettimeofday( &t , NULL );
205 tu += double( t.tv_sec + t.tv_usec * 1e-6 ) - t_u;
206 #elif( OPT_TIMERS == 7 )
207 tu += difftime( time( NULL ) , t_u );
210 else { tu += u; ts += s; }
214 void ReSet(
void ) { u = s = 0; ticking =
false; }
222 #if( ( OPT_TIMERS > 0 ) && ( OPT_TIMERS <= 5 ) )
225 #if( OPT_TIMERS <= 4 )
228 #if( ( OPT_TIMERS == 1 ) || ( OPT_TIMERS == 3 ) )
232 #elif( OPT_TIMERS == 6 )
234 #elif( OPT_TIMERS == 7 )
255 #if( OPT_RANDOM == 0 )
257 srand(
long( 123456789 ) );
271 #if( OPT_RANDOM == 0 )
272 long nmbr = *(gb_fptr--);
274 nmbr = gb_flip_cycle();
275 return(
double( nmbr ) /
double( (
unsigned long)0x80000000 ) );
276 #elif( OPT_RANDOM == 1 )
279 return(
double( myseed ) /
double( RAND_MAX ) );
280 #elif( OPT_RANDOM == 2 )
281 return( erand48( myseed ) );
290 #if( OPT_RANDOM == 0 )
291 long prev = seed , next = 1;
292 seed = prev = mod_diff( prev , 0 );
295 for(
long i = 21 ; i ; i = ( i + 21 ) % 55 ) {
297 next = mod_diff( prev , next );
299 seed = 0x40000000 + ( seed >> 1 );
303 next = mod_diff( next , seed );
312 #elif( OPT_RANDOM == 1 )
313 myseed = int( seed );
314 #elif( OPT_RANDOM == 2 )
315 long *sp = (
long*)( &myseed );
317 myseed[ 2 ] = 0x330E;
323 #if( OPT_RANDOM == 0 )
327 long mod_diff(
long x ,
long y ) {
328 return( ( ( x ) - ( y ) ) & 0x7fffffff );
331 long gb_flip_cycle(
void ) {
333 for( ii = &A[ 1 ] , jj = &A[ 32 ] ; jj <= &A[ 55 ] ; ii++ , jj++ )
334 *ii = mod_diff( *ii , *jj );
336 for( jj = &A[ 1 ] ; ii <= &A[ 55 ] ; ii++ , jj++ )
337 *ii = mod_diff( *ii , *jj );
343 #elif( OPT_RANDOM == 1 )
345 #elif( OPT_RANDOM == 2 )
346 unsigned short int myseed[ 3 ];
356 template<
typename T >
357 static constexpr T
Inf(
void )
noexcept {
358 return( std::numeric_limits< T >::has_infinity ?
359 std::numeric_limits< T >::infinity() :
360 std::numeric_limits< T >::max() );
366 template<
typename T >
367 static constexpr T
Eps(
void )
noexcept {
368 return( std::numeric_limits< T >::epsilon() );
392inline void DfltdSfInpt( istream *iStrm , T &Param ,
const T Dflt ,
393 const char cmntc =
'#' )
397 if( iStrm && ( ! ( ! (*iStrm) ) ) )
400 for(
char c ;; (*iStrm).getline( buf , 1023 ) ) {
401 if( ! ( (*iStrm) >> ws ) )
404 if( ! ( (*iStrm).get( c ) ) )
408 (*iStrm).seekg( -1 , ios::cur );
409 if( ( (*iStrm) >> Param ) )
410 (*iStrm).getline( buf , 1023 );
Definition OPTUtils.h:248
OPTrand(void)
constructor of the class
Definition OPTUtils.h:253
void srand(long seed)
Seeds the random generator for this instance of OPTrand.
Definition OPTUtils.h:288
double rand(void)
Definition OPTUtils.h:269
Definition OPTUtils.h:144
OPTtimers(void)
constructor of the class
Definition OPTUtils.h:149
void Stop(void)
stop the timer
Definition OPTUtils.h:175
void ReSet(void)
reset the timer
Definition OPTUtils.h:214
void Start(void)
start the timer
Definition OPTUtils.h:152
void Read(double &tu, double &ts)
As Read( void ) but adds user and system time to tu and ts.
Definition OPTUtils.h:192
double Read(void)
Definition OPTUtils.h:184
static constexpr T Inf(void) noexcept
Inf< T >() = infinity value for T.
Definition OPTUtils.h:357
static constexpr T Eps(void) noexcept
Eps< T >() = "machine epsilon" for T.
Definition OPTUtils.h:367
void DfltdSfInpt(istream *iStrm, T &Param, const T Dflt, const char cmntc='#')
Definition OPTUtils.h:392