111
|
1 struct A
|
|
2 {
|
|
3 long a1;
|
|
4 double *a2;
|
|
5 };
|
|
6
|
|
7 struct B
|
|
8 {
|
|
9 void *b1;
|
|
10 double b2, b3;
|
|
11 struct
|
|
12 {
|
|
13 int d1;
|
|
14 double d2;
|
|
15 } b4;
|
|
16 };
|
|
17
|
|
18 struct C
|
|
19 {
|
|
20 struct A *c1;
|
|
21 void *c2;
|
|
22 };
|
|
23
|
|
24 long fn1 (struct A *, double);
|
|
25 void fn2 (void *, const char *);
|
|
26 double fn3 (double);
|
|
27 double fn4 (double);
|
|
28 int fn5 (void *, double, double);
|
|
29
|
|
30 int
|
|
31 foo (struct B *x)
|
|
32 {
|
|
33 struct C *e = x->b1;
|
|
34 struct A *f = e->c1;
|
|
35 long g, h, i;
|
|
36 double *j, k;
|
|
37 g = fn1 (f, 0.5 * (x->b2 + x->b3)), h = g + 1, i = f->a1;
|
|
38 j = f->a2, k = x->b4.d2;
|
|
39 fn2 (x, "something");
|
|
40 if (g <= 0)
|
|
41 {
|
|
42 double l = j[2] - j[1];
|
|
43 if (l > 0.0 && l <= 0.02)
|
|
44 k = (x->b4.d1 == 1
|
|
45 ? ((1.0 / l) < 25 ? 25 : (1.0 / l))
|
|
46 : fn3 ((1.0 / l) < 25 ? 25 : (1.0 / l)));
|
|
47 }
|
|
48 else
|
|
49 {
|
|
50 double m = j[h] - j[g], n = 0.0, l = 0.0;
|
|
51 if (g > 1)
|
|
52 n = j[g] - j[g - 1];
|
|
53 if (h < i)
|
|
54 l = j[h + 1] - j[h];
|
|
55 if (n > 0.02)
|
|
56 n = 0;
|
|
57 if (m > 0.02)
|
|
58 m = 0;
|
|
59 if (l > 0.02)
|
|
60 l = 0;
|
|
61 if (m < n)
|
|
62 {
|
|
63 double o = m;
|
|
64 m = n;
|
|
65 n = o;
|
|
66 }
|
|
67 if (l < n)
|
|
68 {
|
|
69 double o = l;
|
|
70 l = n;
|
|
71 n = o;
|
|
72 }
|
|
73 if (l < m)
|
|
74 {
|
|
75 double o = l;
|
|
76 l = m;
|
|
77 m = o;
|
|
78 }
|
|
79 if (n != 0.0)
|
|
80 k = (x->b4.d1 == 1
|
|
81 ? ((1 / m) < 25 ? 25 : (1 / m))
|
|
82 : fn3 ((1 / m) < 25 ? 25 : (1 / m)));
|
|
83 else if (m != 0.0)
|
|
84 k = (x->b4.d1 == 1
|
|
85 ? ((2 / (m + l)) < 25 ? 25 : (2 / (m + l)))
|
|
86 : fn3 ((2 / (m + l)) < 25 ? 25 : (2 / (m + l))));
|
|
87 else if (l != 0.0)
|
|
88 k = (x->b4.d1 == 1
|
|
89 ? ((1 / l) < 25 ? 25 : (1 / l))
|
|
90 : fn3 ((1 / l) < 25 ? 25 : (1 / l)));
|
|
91 }
|
|
92 fn5 (e->c2, 0.5 * (x->b2 + x->b3), (x->b4.d1 == 1 ? k : fn4 (k)));
|
|
93 return 1;
|
|
94 }
|