OSDN Git Service

[PATCH] Report LTO phase in lto1 process name v2
[pf3gnuchains/gcc-fork.git] / libiberty / random.c
index 4e9b7ff..c306698 100644 (file)
  * It was reworked for the GNU C Library by Roland McGrath.
  */
 
+/*
+
+@deftypefn Supplement {long int} random (void)
+@deftypefnx Supplement void srandom (unsigned int @var{seed})
+@deftypefnx Supplement void* initstate (unsigned int @var{seed}, void *@var{arg_state}, unsigned long @var{n})
+@deftypefnx Supplement void* setstate (void *@var{arg_state})
+
+Random number functions.  @code{random} returns a random number in the
+range 0 to @code{LONG_MAX}.  @code{srandom} initializes the random
+number generator to some starting point determined by @var{seed}
+(else, the values returned by @code{random} are always the same for each
+run of the program).  @code{initstate} and @code{setstate} allow fine-grained
+control over the state of the random number generator.
+
+@end deftypefn
+
+*/
+
 #include <errno.h>
 
 #if 0
@@ -62,7 +80,7 @@
 
 #endif
 
-long int random ();
+long int random (void);
 
 /* An improved random number generation package.  In addition to the standard
    rand()/srand() like interface, this package also has a special state info
@@ -198,7 +216,7 @@ static int rand_type = TYPE_3;
 static int rand_deg = DEG_3;
 static int rand_sep = SEP_3;
 
-static long int *end_ptr = &randtbl[ARRAY_SIZE (randtbl)];
+static long int *end_ptr = &randtbl[sizeof(randtbl) / sizeof(randtbl[0])];
 \f
 /* Initialize the random number generator based on the given seed.  If the
    type is the trivial no-state-information type, just remember the seed.
@@ -209,8 +227,7 @@ static long int *end_ptr = &randtbl[ARRAY_SIZE (randtbl)];
    introduced by the L.C.R.N.G.  Note that the initialization of randtbl[]
    for default usage relies on values produced by this routine.  */
 void
-srandom (x)
-  unsigned int x;
+srandom (unsigned int x)
 {
   state[0] = x;
   if (rand_type != TYPE_0)
@@ -237,10 +254,7 @@ srandom (x)
    setstate so that it doesn't matter when initstate is called.
    Returns a pointer to the old state.  */
 PTR
-initstate (seed, arg_state, n)
-  unsigned int seed;
-  PTR arg_state;
-  unsigned long n;
+initstate (unsigned int seed, PTR arg_state, unsigned long n)
 {
   PTR ostate = (PTR) &state[-1];
 
@@ -306,8 +320,7 @@ initstate (seed, arg_state, n)
    Returns a pointer to the old state information.  */
 
 PTR
-setstate (arg_state)
-  PTR arg_state;
+setstate (PTR arg_state)
 {
   register long int *new_state = (long int *) arg_state;
   register int type = new_state[0] % MAX_TYPES;
@@ -360,7 +373,7 @@ setstate (arg_state)
    pointer if the front one has wrapped.  Returns a 31-bit random number.  */
 
 long int
-random ()
+random (void)
 {
   if (rand_type == TYPE_0)
     {