101{
102 int d, lev;
103 int hi1 = hi + 1;
104 int len1 = len + 1;
105
106
107 for (d = hi; d >= lo; d--)
108 {
109 for (lev = 0; lev <= len; lev++)
110 if (bettis[lev + (len + 1) * (d - lo)] > 0)
111 {
112 hi1 = d;
113 break;
114 }
115 if (hi1 <= hi) break;
116 }
117 if (hi1 > hi) hi1 = hi;
118
119
120 for (lev = len; lev >= 0; lev--)
121 {
122 for (d = lo; d <= hi1; d++)
123 if (bettis[lev + (len + 1) * (d - lo)] > 0)
124 {
125 len1 = lev;
126 break;
127 }
128 if (len1 <= len) break;
129 }
130 if (len1 > len) len1 = len;
131
132 int totallen = (hi1 - lo + 1) * (len1 + 1);
134
138
139 int next = 3;
140 for (d = lo; d <= hi1; d++)
141 for (lev = 0; lev <= len1; lev++)
142 result->array[next++] = bettis[lev + (len + 1) * (d - lo)];
143
145}
VALGRIND_MAKE_MEM_DEFINED & result(result)
M2_arrayint M2_makearrayint(int n)