Added script front-end for primer-design code
[htsworkflow.git] / htswanalysis / MACS / lib / gsl / gsl-1.11 / monte / test_main.c
1 for (I = problems ; I->f != 0; I++) 
2 {
3   size_t i;
4   double sum = 0, mean, sumd2 = 0, sd, res, err; 
5   
6   gsl_rng * r;
7
8   if (I->dim > 3)
9     {
10       continue ;
11     }
12
13   r = gsl_rng_alloc (gsl_rng_default);
14
15   for (i = 0; i < TRIALS ; i++)
16     {
17       MONTE_STATE *s = MONTE_ALLOC (I->dim);
18       
19       I->f->dim = I->dim;
20       
21       MONTE_INTEGRATE (I->f, I->xl, I->xu, 
22                        I->dim, I->calls / MONTE_SPEEDUP, r, s,
23                        &res, &err);
24       
25       gsl_test_abs (res, I->expected_result, 
26                     5 * GSL_MAX(err, 1024*GSL_DBL_EPSILON), 
27                     NAME ", %s, result[%d]", I->description, i);
28
29       MONTE_ERROR_TEST (err, I->expected_error);
30
31       result[i] = res;
32       error[i] = err;
33       
34       MONTE_FREE (s);
35     }
36
37  for (i = 0; i < TRIALS; i++)
38    {
39      sum += result[i];
40    }
41
42  mean = sum / TRIALS ;
43
44  for (i = 0; i < TRIALS; i++) 
45    {
46      sumd2 += pow(result[i] - mean, 2.0);
47    }
48
49  sd = sqrt(sumd2 / (TRIALS-1.0)) ;
50  
51  if (sd < TRIALS * GSL_DBL_EPSILON * fabs (mean))
52    {
53      sd = 0;
54    }
55
56  for (i = 0; i < TRIALS; i++)
57    {
58      if (sd == 0 && fabs(error[i]) < GSL_DBL_EPSILON * fabs(result[i]))
59        {
60          error[i] = 0.0;
61        }
62
63      gsl_test_factor (error[i], sd, 5.0,
64                       NAME ", %s, abserr[%d] vs sd", I->description, i);
65    }
66
67
68   gsl_rng_free (r);
69 }
70