X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/dff9e15c44ab6340d27215957c56fa72fad246a2..a846b9415542cdaa8ba5d0f7efeadecb56ba7c2c:/src/surf/random_mgr.c diff --git a/src/surf/random_mgr.c b/src/surf/random_mgr.c index f22b26b4d5..f6783d2e65 100644 --- a/src/surf/random_mgr.c +++ b/src/surf/random_mgr.c @@ -1,12 +1,21 @@ +/* Copyright (c) 2007, 2008, 2009, 2010. The SimGrid Team. + * All rights reserved. */ + +/* This program is free software; you can redistribute it and/or modify it + * under the terms of the license (GNU LGPL) which comes with this package. */ + #include "surf/random_mgr.h" #include "xbt/sysdep.h" +#include "gras_config.h" /*_XBT_WIN32*/ -#ifdef WIN32 +#ifdef _XBT_WIN32 static unsigned int _seed = 2147483647; +#ifdef __VISUALC__ typedef unsigned __int64 uint64_t; typedef unsigned int uint32_t; +#endif struct drand48_data { unsigned short int __x[3]; /* Current state. */ @@ -79,7 +88,8 @@ _erand48_r(unsigned short int xsubi[3], struct drand48_data *buffer, return 0; } -int _drand48_iterate(unsigned short int xsubi[3], struct drand48_data *buffer) +int _drand48_iterate(unsigned short int xsubi[3], + struct drand48_data *buffer) { uint64_t X; uint64_t result; @@ -113,7 +123,8 @@ double _drand48(void) { double result; - (void) _erand48_r(__libc_drand48_data.__x, &__libc_drand48_data, &result); + (void) _erand48_r(__libc_drand48_data.__x, &__libc_drand48_data, + &result); return result; } @@ -186,6 +197,9 @@ static double custom_random(Generator generator, long int *seed) return drand48(); case RAND: return (double) rand_r((unsigned int *) seed) / RAND_MAX; + case RNGSTREAM : + printf("Seen RNGSTREAM"); + return 0.0; default: return drand48(); } @@ -204,14 +218,12 @@ double random_generate(random_data_t random) if (random->std == 0) return random->mean * (random->max - random->min) + random->min; - a = - random->mean * (random->mean * (1 - random->mean) / - (random->std * random->std) - 1); - b = - (1 - - random->mean) * (random->mean * (1 - - random->mean) / (random->std * - random->std) - 1); + a = random->mean * (random->mean * (1 - random->mean) / + (random->std * random->std) - 1); + b = (1 - + random->mean) * (random->mean * (1 - + random->mean) / (random->std * + random->std) - 1); alpha = a + b; if (a <= 1. || b <= 1.) @@ -252,9 +264,11 @@ random_data_t random_new(Generator generator, long int seed, if (max < min) THROW2(arg_error, 0, "random->max < random->min (%f < %f)", max, min); if (mean < min) - THROW2(arg_error, 0, "random->mean < random->min (%f < %f)", mean, min); + THROW2(arg_error, 0, "random->mean < random->min (%f < %f)", mean, + min); if (mean > max) - THROW2(arg_error, 0, "random->mean > random->max (%f > %f)", mean, max); + THROW2(arg_error, 0, "random->mean > random->max (%f > %f)", mean, + max); /* normalize the mean and standard deviation before storing */ random->mean = (mean - min) / (max - min);