@insideone
Модератор
3645 / 924 / 52
Регистрация: 10.01.2010
Сообщений: 2,494
|
17.01.2010, 23:12
|
|
Попытался выделить то что по ссылочке... не знаю... что то не то выходит. Мудрено как то чтобы понять. Но код запускается
C++ | 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
| double d_mod(double *x,double *y)
{
return(*x - (*y) * ( (long int) (*x / *y)) );
}
int gsn3r_c(int *iseed, int *n, double *r__)
{
/* Initialized data */
static double d2p31m = 2147483647.;
static double d2pn31 = 4.656612873077393e-10;
static double d2p32m = 16807.f;
/* System generated locals */
int i__1;
double d__1;
/* Local variables */
static int i__, m;
static double u, v;
static double z__;
static int nn;
static double sln, sum;
/* Parameter adjustments */
--r__;
/* Function Body */
nn = *n;
m = *n - (*n / 2 << 1);
if (m != 0) {
--nn;
}
z__ = (double) (*iseed);
i__1 = nn;
for (i__ = 1; i__ <= i__1; i__ += 2) {
d__1 = d2p32m * z__;
z__ = d_mod(&d__1, &d2p31m);
u = z__ * d2pn31;
d__1 = d2p32m * z__;
z__ = d_mod(&d__1, &d2p31m);
v = z__ * d2pn31;
u = u + u - 1.f;
v = v + v - 1.f;
sum = u * u + v * v;
if (sum >= 1.f) {
continue;
}
sln = (double)log(sum);
sln = (double)sqrt((double)((-sln - sln) / sum));
r__[i__] = u * sln;
r__[i__ + 1] = v * sln;
/* L2: */
}
*iseed = (int) z__;
return 0;
}
int main(){
double a[100] = {0};
int i = 100, s = 0;
gsn3r_c(&s, &i, &a[0]);
return 0;
} |
|
0
|