33 {
34 if (argc < 3) {
35 printf("Usage: 1.This 2.n 3.ndata\n");
36 exit(EXIT_FAILURE);
37 }
42 double max, maxData;
43 double rand, rand1, rand2;
44
47 double mean, stddev;
48 double binwidth, binratio=0.01;
50
51 char str[100];
52 char *filename = str;
53
54 FILE *Infp;
55 FILE *Outfp;
56 sprintf(str, "Dist_maximum_%lld_raw.txt", n);
57 Outfp = fopen(filename, "w");
58 if (Outfp == NULL) {
59 printf("Can't open a file %s\n", filename);
60 exit(EXIT_FAILURE);
61 }
62 fprintf(Outfp, "#(n=%lld, seed=%lld) Distribution of maximum of |x| \n\n", n, seed);
63
64 init_genrand(seed);
65 maxData = NAN;
66 mean = 0;
67 stddev = 0;
68 for(i = 0;i < ndata; ++i) {
69 max = NAN;
70 for(j = 0;j < n; ++j) {
71 rand1 = genrand_real3();
73 max = fmax(max, rand);
74
75 }
77 if(subMax > MAX) {
78 i -=1;
79 continue;
80 }
81 maxData = fmax(maxData, max);
82 mean += max;
83 stddev += max*max;
84 fprintf(Outfp, "%lld %le\n", i, max);
85 }
86 mean /= (double)ndata;
87 stddev /= (double)ndata;
88 stddev = sqrt( stddev -mean*mean );
89 binwidth *= stddev;
90
91 binwidth = 0.01;
92 subMax = (
Integer_t)(maxData/binwidth) +1;
93 if(subMax > MAX) subMax = MAX;
94 subMax=MAX;
95
96 histogram = alloc_ivector(subMax); for(i = 0;i < subMax; ++i) histogram[i] = 0;
97
98 sprintf(str, "Dist_maximum_%lld_raw.txt", n);
99 Infp = fopen(filename, "r");
100 if (Infp == NULL) {
101 printf("Can't open a file %s\n", filename);
102 exit(EXIT_FAILURE);
103 }
104 skip_header(Infp);
105
106 count=0;
107 while ( fscanf(Infp, "%lld %le", &i, &max) != EOF ) {
109 if(itemp >= subMax) continue;
110 if(itemp < 0) continue;
111 histogram[itemp] += 1;
112 count += 1;
113 }
114
115 sprintf(str, "Dist_maximum_%lld.txt", n);
116 Outfp = fopen(filename, "w");
117 if (Outfp == NULL) {
118 printf("Can't open a file %s\n", filename);
119 exit(EXIT_FAILURE);
120 }
121 fprintf(Outfp, "# mean=%le, stddev=%le\n\n", mean, stddev);
122 fprintf(Outfp, "# 1.Maximum value 2.Probability density\n\n");
123 for(i = 0;i < subMax; ++i) {
124 fprintf(Outfp, "%le %le\n", binwidth*(i+0.5), histogram[i]/(binwidth*count));
125 }
126 printf("atan=%lf, %lf\n", atan( -1/sqrt(3.0) ), -M_PI/6);
127
128 return 0;
129}
double inverse(double r)
Definition maximum.c:20
MKL_INT Integer_t
Definition mytypes.hpp:359