/[gsl]/gsl/rng/test.c
ViewVC logotype

Diff of /gsl/rng/test.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.1.1.3 by bjg, Sun Sep 8 09:55:44 2002 UTC revision 1.1.1.3.16.1 by bjg, Fri May 30 15:49:49 2003 UTC
# Line 31  void rng_float_test (const gsl_rng_type Line 31  void rng_float_test (const gsl_rng_type
31  void generic_rng_test (const gsl_rng_type * T);  void generic_rng_test (const gsl_rng_type * T);
32  void rng_state_test (const gsl_rng_type * T);  void rng_state_test (const gsl_rng_type * T);
33  void rng_parallel_state_test (const gsl_rng_type * T);  void rng_parallel_state_test (const gsl_rng_type * T);
34    void rng_read_write_test (const gsl_rng_type * T);
35  int rng_max_test (gsl_rng * r, unsigned long int *kmax, unsigned long int ran_max) ;  int rng_max_test (gsl_rng * r, unsigned long int *kmax, unsigned long int ran_max) ;
36  int rng_min_test (gsl_rng * r, unsigned long int *kmin, unsigned long int ran_min, unsigned long int ran_max) ;  int rng_min_test (gsl_rng * r, unsigned long int *kmin, unsigned long int ran_min, unsigned long int ran_max) ;
37  int rng_sum_test (gsl_rng * r, double *sigma);  int rng_sum_test (gsl_rng * r, double *sigma);
# Line 163  main (void) Line 164  main (void)
164    for (r = rngs ; *r != 0; r++)    for (r = rngs ; *r != 0; r++)
165      rng_parallel_state_test (*r);      rng_parallel_state_test (*r);
166    
167      for (r = rngs ; *r != 0; r++)
168        rng_read_write_test (*r);
169    
170    /* generic statistical tests (these are just to make sure that we    /* generic statistical tests (these are just to make sure that we
171       don't get any crazy results back from the generator, i.e. they       don't get any crazy results back from the generator, i.e. they
172       aren't a test of the algorithm, just the implementation) */       aren't a test of the algorithm, just the implementation) */
# Line 330  rng_parallel_state_test (const gsl_rng_t Line 334  rng_parallel_state_test (const gsl_rng_t
334  }  }
335    
336  void  void
337    rng_read_write_test (const gsl_rng_type * T)
338    {
339      unsigned long int test_a[N], test_b[N], test_c[N];
340    
341      int i;
342    
343      gsl_rng *r = gsl_rng_alloc (T);
344    
345      for (i = 0; i < N; ++i)
346        {
347          gsl_rng_get (r);  /* throw away N iterations */
348        }
349    
350      { /* save the state to a binary file */
351        FILE *f = fopen("test.dat", "wb");
352        gsl_rng_fwrite(f, r);
353        fclose(f);
354      }
355    
356      { /* save the state to a text file */
357        FILE *f = fopen("test.txt", "w");
358        gsl_rng_fprintf(f, r, "\n");
359        fclose(f);
360      }
361    
362      for (i = 0; i < N; ++i)
363        {
364          test_a[i] = gsl_rng_get (r);
365        }
366    
367      { /* read the state from a binary file */
368        FILE *f = fopen("test.dat", "rb");
369        gsl_rng_fread(f, r);
370        fclose(f);
371      }
372    
373      for (i = 0; i < N; ++i)
374        {
375          test_b[i] = gsl_rng_get (r);
376        }
377    
378      { /* read the state from a text file */
379        FILE *f = fopen("test.txt", "r");
380        gsl_rng_fscanf(f, r);
381        fclose(f);
382      }
383    
384      for (i = 0; i < N; ++i)
385        {
386          test_c[i] = gsl_rng_get (r);
387        }
388    
389      {
390        int status = 0;
391        for (i = 0; i < N; ++i)
392          {
393            status |= (test_b[i] != test_a[i]);
394            status |= (test_c[i] != test_a[i]);
395          }
396        gsl_test (status, "%s, random number generator read and write",
397                  gsl_rng_name (r));
398      }
399    
400      gsl_rng_free (r);
401    }
402    
403    void
404  generic_rng_test (const gsl_rng_type * T)  generic_rng_test (const gsl_rng_type * T)
405  {  {
406    gsl_rng *r = gsl_rng_alloc (T);    gsl_rng *r = gsl_rng_alloc (T);

Legend:
Removed from v.1.1.1.3  
changed lines
  Added in v.1.1.1.3.16.1

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26