680 |
|
int |
681 |
|
rmx_transfer_data(RMATRIX *rdst, RMATRIX *rsrc, int dometa) |
682 |
|
{ |
683 |
< |
if (!rdst | !rsrc || (rdst->nrows != rsrc->nrows) | |
684 |
< |
(rdst->ncols != rsrc->ncols) | |
685 |
< |
(rdst->ncomp != rsrc->ncomp)) |
683 |
> |
if (!rdst | !rsrc) |
684 |
|
return(0); |
687 |
– |
|
685 |
|
if (dometa) { /* transfer everything? */ |
686 |
|
rmx_reset(rdst); |
687 |
|
*rdst = *rsrc; |
688 |
|
rsrc->info = NULL; rsrc->mapped = NULL; rsrc->mtx = NULL; |
689 |
|
return(1); |
690 |
|
} |
691 |
< |
#ifdef MAP_FILE /* just matrix data -- leave metadata */ |
691 |
> |
/* just matrix data -- leave metadata */ |
692 |
> |
if ((rdst->nrows != rsrc->nrows) | |
693 |
> |
(rdst->ncols != rsrc->ncols) | |
694 |
> |
(rdst->ncomp != rsrc->ncomp)) |
695 |
> |
return(0); |
696 |
> |
#ifdef MAP_FILE |
697 |
|
if (rdst->mapped) |
698 |
|
munmap(rdst->mapped, rmx_mapped_size(rdst)); |
699 |
|
else |
753 |
|
for (i = dnew.nrows; i--; ) |
754 |
|
memcpy(rmx_lval(&dnew,i,j), rmx_val(rm,j,i), |
755 |
|
sizeof(rmx_dtype)*dnew.ncomp); |
756 |
< |
rmx_reset(rm); /* frees memory */ |
757 |
< |
*rm = dnew; /* replace w/ transpose */ |
756 |
< |
return(1); |
756 |
> |
/* and reassign result */ |
757 |
> |
return(rmx_transfer_data(rm, &dnew, 1)); |
758 |
|
} |
759 |
|
|
760 |
|
/* Multiply (concatenate) two matrices and allocate the result */ |