| 206 |
|
{ |
| 207 |
|
int i; |
| 208 |
|
#ifdef MAP_FILE |
| 209 |
< |
long pos; /* map memory to file if possible */ |
| 209 |
> |
long pos; /* map memory for file > 1MB if possible */ |
| 210 |
|
if (!rm->swapin && array_size(rm) >= 1L<<20 && |
| 211 |
|
(pos = ftell(fp)) >= 0 && !(pos % sizeof(double))) { |
| 212 |
|
rm->mapped = mmap(NULL, array_size(rm)+pos, PROT_READ|PROT_WRITE, |
| 214 |
|
if (rm->mapped != MAP_FAILED) { |
| 215 |
|
rm->mtx = (double *)rm->mapped + pos/sizeof(double); |
| 216 |
|
return(1); |
| 217 |
< |
} |
| 217 |
> |
} /* else fall back on reading into memory */ |
| 218 |
|
rm->mapped = NULL; |
| 219 |
|
} |
| 220 |
|
#endif |
| 563 |
|
rmx_transpose(const RMATRIX *rm) |
| 564 |
|
{ |
| 565 |
|
RMATRIX *dnew; |
| 566 |
< |
int i, j, k; |
| 566 |
> |
int i, j; |
| 567 |
|
|
| 568 |
|
if (!rm) |
| 569 |
|
return(0); |
| 583 |
|
rmx_addinfo(dnew, "Transposed rows and columns\n"); |
| 584 |
|
} |
| 585 |
|
dnew->dtype = rm->dtype; |
| 586 |
< |
for (i = dnew->nrows; i--; ) |
| 587 |
< |
for (j = dnew->ncols; j--; ) |
| 588 |
< |
memcpy(rmx_lval(dnew,i,j), rmx_lval(rm,i,j), |
| 586 |
> |
for (j = dnew->ncols; j--; ) |
| 587 |
> |
for (i = dnew->nrows; i--; ) |
| 588 |
> |
memcpy(rmx_lval(dnew,i,j), rmx_lval(rm,j,i), |
| 589 |
|
sizeof(double)*dnew->ncomp); |
| 590 |
|
return(dnew); |
| 591 |
|
} |