161{
162 int d, lev;
163 int hi1 = hi + 1;
164 int len1 = len + 1;
165
166
167 for (d = hi; d >= lo; d--)
168 {
169 for (lev = 0; lev <= len; lev++)
170 if (bettis[lev + (len + 1) * (d - lo)] > 0)
171 {
172 hi1 = d;
173 break;
174 }
175 if (hi1 <= hi) break;
176 }
177 if (hi1 > hi) hi1 = hi;
178
179
180 for (lev = len; lev >= 0; lev--)
181 {
182 for (d = lo; d <= hi1; d++)
183 if (bettis[lev + (len + 1) * (d - lo)] > 0)
184 {
185 len1 = lev;
186 break;
187 }
188 if (len1 <= len) break;
189 }
190 if (len1 > len) len1 = len;
191
192 int totallen = (hi1 - lo + 1) * (len1 + 1);
194
198
199 int next = 3;
200 for (d = lo; d <= hi1; d++)
201 for (lev = 0; lev <= len1; lev++)
202 result->array[next++] = bettis[lev + (len + 1) * (d - lo)];
203
205}
VALGRIND_MAKE_MEM_DEFINED & result(result)
M2_arrayint M2_makearrayint(int n)