184{
185
189 assert(start < end);
190 assert(j >= 0 && j < n);
191 nbline =
192 insidemat(uplo, diag, start, j, m, n, &offset);
193 if (nbline <= 0)
194 return;
195 start += offset;
196 if (start >= end)
197 return;
198 intervalsize =
min(end - start, nbline);
199 (*ptrsizebuff) += intervalsize;
200 switch (action) {
202 ptrstart = ptrblock +
localindice(start + ia, j + ja,
203 templateheight0, templatewidth0, ma);
204 memcpy((char *) (*pptrbuff), (char *) ptrstart,
205 intervalsize *
sizeof(
Int));
206
207
208 (*pptrbuff) += intervalsize;
209 break;
211 ptrstart = ptrblock +
localindice(start + ib, j + jb,
212 templateheight1, templatewidth1, mb);
213 memcpy((char *) ptrstart, (char *) (*pptrbuff),
214 intervalsize *
sizeof(
Int));
215
216
217 (*pptrbuff) += intervalsize;
218 break;
220 break;
221 default:
222 printf("action is %d outside the scope of the case [0..2] !! \n ", action);
223 exit(0);
224 break;
225 };
226}
static2 Int insidemat(char *uplo, char *diag, Int i, Int j, Int m, Int n, Int *offset)