195{
196
200 assert(start < end);
201 assert(j >= 0 && j < n);
202 nbline =
203 insidemat(uplo, diag, start, j, m, n, &offset);
204 if (nbline <= 0)
205 return;
206 start += offset;
207 if (start >= end)
208 return;
209 intervalsize =
min(end - start, nbline);
210 (*ptrsizebuff) += intervalsize;
211 switch (action) {
213 ptrstart = ptrblock +
localindice(start + ia, j + ja,
214 templateheight0, templatewidth0, ma);
215 memcpy((char *) (*pptrbuff), (char *) ptrstart,
216 intervalsize *
sizeof(
complex));
217
218
219 (*pptrbuff) += intervalsize;
220 break;
222 ptrstart = ptrblock +
localindice(start + ib, j + jb,
223 templateheight1, templatewidth1, mb);
224 memcpy((char *) ptrstart, (char *) (*pptrbuff),
225 intervalsize *
sizeof(
complex));
226
227
228 (*pptrbuff) += intervalsize;
229 break;
231 break;
232 default:
233 printf("action is %d outside the scope of the case [0..2] !! \n ", action);
234 exit(0);
235 break;
236 };
237}
static2 Int insidemat(char *uplo, char *diag, Int i, Int j, Int m, Int n, Int *offset)