/* instance.c */
#include "../DenseMtx.h"
/*--------------------------------------------------------------------*/
/*
-------------------------------
return the row id of the object
created -- 98may02, cca
-------------------------------
*/
int
DenseMtx_rowid (
DenseMtx *mtx
) {
/*
---------------
check the input
---------------
*/
if ( mtx == NULL ) {
fprintf(stderr, "\n fatal error in DenseMtx_rowid(%p)"
"\n bad input\n", mtx) ;
exit(-1) ;
}
return(mtx->rowid) ; }
/*--------------------------------------------------------------------*/
/*
----------------------------------
return the column id of the object
created -- 98may02, cca
----------------------------------
*/
int
DenseMtx_colid (
DenseMtx *mtx
) {
/*
---------------
check the input
---------------
*/
if ( mtx == NULL ) {
fprintf(stderr, "\n fatal error in DenseMtx_colid(%p)"
"\n bad input\n", mtx) ;
exit(-1) ;
}
return(mtx->colid) ; }
/*--------------------------------------------------------------------*/
/*
------------------------------------------
fill *pnrow with nrow and *pncol with ncol
created -- 98may02, cca
------------------------------------------
*/
void
DenseMtx_dimensions (
DenseMtx *mtx,
int *pnrow,
int *pncol
) {
/*
---------------
check the input
---------------
*/
if ( mtx == NULL || pnrow == NULL || pncol == NULL ) {
fprintf(stderr, "\n fatal error in DenseMtx_dimensions(%p,%p,%p)"
"\n bad input\n", mtx, pnrow, pncol) ;
exit(-1) ;
}
*pnrow = mtx->nrow ;
*pncol = mtx->ncol ;
return ; }
/*--------------------------------------------------------------------*/
/*
------------------------
return the row increment
created -- 98may02, cca
------------------------
*/
int
DenseMtx_rowIncrement (
DenseMtx *mtx
) {
/*
---------------
check the input
---------------
*/
if ( mtx == NULL ) {
fprintf(stderr, "\n fatal error in DenseMtx_rowIncrement(%p)"
"\n bad input\n", mtx) ;
exit(-1) ;
}
return(mtx->inc1) ; }
/*--------------------------------------------------------------------*/
/*
---------------------------
return the column increment
created -- 98may02, cca
---------------------------
*/
int
DenseMtx_columnIncrement (
DenseMtx *mtx
) {
/*
---------------
check the input
---------------
*/
if ( mtx == NULL ) {
fprintf(stderr, "\n fatal error in DenseMtx_columnIncrement(%p)"
"\n bad input\n", mtx) ;
exit(-1) ;
}
return(mtx->inc2) ; }
/*--------------------------------------------------------------------*/
/*
-------------------------------------------
fill *pnrow with nrow, *prowind with rowind
created -- 98may02, cca
-------------------------------------------
*/
void
DenseMtx_rowIndices (
DenseMtx *mtx,
int *pnrow,
int **prowind
) {
/*
---------------
check the input
---------------
*/
if ( mtx == NULL || pnrow == NULL || prowind == NULL ) {
fprintf(stderr, "\n fatal error in DenseMtx_rowIndices(%p,%p,%p)"
"\n bad input\n", mtx, pnrow, prowind) ;
exit(-1) ;
}
*pnrow = mtx->nrow ;
*prowind = mtx->rowind ;
return ; }
/*--------------------------------------------------------------------*/
/*
-------------------------------------------
fill *pncol with ncol, *pcolind with colind
created -- 98may02, cca
-------------------------------------------
*/
void
DenseMtx_columnIndices (
DenseMtx *mtx,
int *pncol,
int **pcolind
) {
/*
---------------
check the input
---------------
*/
if ( mtx == NULL || pncol == NULL || pcolind == NULL ) {
fprintf(stderr, "\n fatal error in DenseMtx_columnIndices(%p,%p,%p)"
"\n bad input\n", mtx, pncol, pcolind) ;
exit(-1) ;
}
*pncol = mtx->ncol ;
*pcolind = mtx->colind ;
return ; }
/*--------------------------------------------------------------------*/
/*
-------------------------------
return a pointer to the entries
created -- 98may02, cca
-------------------------------
*/
double *
DenseMtx_entries(
DenseMtx *mtx
) {
/*
---------------
check the input
---------------
*/
if ( mtx == NULL ) {
fprintf(stderr, "\n fatal error in DenseMtx_entries(%p)"
"\n bad input\n", mtx) ;
exit(-1) ;
}
return(mtx->entries) ; }
/*--------------------------------------------------------------------*/
/*
---------------------------------
return a pointer to the workspace
created -- 98may02, cca
---------------------------------
*/
void *
DenseMtx_workspace(
DenseMtx *mtx
) {
/*
---------------
check the input
---------------
*/
if ( mtx == NULL ) {
fprintf(stderr, "\n fatal error in DenseMtx_workspace(%p)"
"\n bad input\n", mtx) ;
exit(-1) ;
}
return(DV_entries(&mtx->wrkDV)) ; }
/*--------------------------------------------------------------------*/
/*
------------------------------------------
fill *pValue with the entry in (irow,jcol)
created -- 98jun05, cca
------------------------------------------
*/
void
DenseMtx_realEntry (
DenseMtx *mtx,
int irow,
int jcol,
double *pValue
) {
/*
---------------
check the input
---------------
*/
if ( mtx == NULL || pValue == NULL ) {
fprintf(stderr, "\n fatal error in DenseMtx_realEntry()"
"\n mtx or pValue is NULL\n") ;
exit(-1) ;
}
if ( mtx->type != SPOOLES_REAL ) {
fprintf(stderr, "\n fatal error in DenseMtx_realEntry()"
"\n mtx type must be SPOOLES_REAL\n") ;
exit(-1) ;
}
if ( irow < 0 || irow >= mtx->nrow ) {
fprintf(stderr, "\n fatal error in DenseMtx_realEntry()"
"\n irow = %d, mtx->nrow = %d input\n", irow, mtx->nrow) ;
exit(-1) ;
}
if ( jcol < 0 || jcol >= mtx->ncol ) {
fprintf(stderr, "\n fatal error in DenseMtx_realEntry()"
"\n jcol = %d, mtx->ncol = %d input\n", jcol, mtx->ncol) ;
exit(-1) ;
}
if ( mtx->entries == NULL ) {
fprintf(stderr, "\n fatal error in DenseMtx_realEntry()"
"\n mtx->entries is NULL \n") ;
exit(-1) ;
}
*pValue = mtx->entries[irow*mtx->inc1 + jcol*mtx->inc2] ;
return ; }
/*--------------------------------------------------------------------*/
/*
----------------------------------------------------
fill *pReal and *pImag with the entry in (irow,jcol)
created -- 98jun05, cca
----------------------------------------------------
*/
void
DenseMtx_complexEntry (
DenseMtx *mtx,
int irow,
int jcol,
double *pReal,
double *pImag
) {
int loc ;
/*
---------------
check the input
---------------
*/
if ( mtx == NULL || pReal == NULL || pImag == NULL ) {
fprintf(stderr, "\n fatal error in DenseMtx_complexEntry()"
"\n mtxm pReal or pImag is NULL\n") ;
exit(-1) ;
}
if ( mtx->type != SPOOLES_COMPLEX ) {
fprintf(stderr, "\n fatal error in DenseMtx_complexEntry()"
"\n mtx type must be SPOOLES_COMPLEX\n") ;
exit(-1) ;
}
if ( irow < 0 || irow >= mtx->nrow ) {
fprintf(stderr, "\n fatal error in DenseMtx_complexEntry()"
"\n irow = %d, mtx->nrow = %d input\n", irow, mtx->nrow) ;
exit(-1) ;
}
if ( jcol < 0 || jcol >= mtx->ncol ) {
fprintf(stderr, "\n fatal error in DenseMtx_complexEntry()"
"\n jcol = %d, mtx->ncol = %d input\n", jcol, mtx->ncol) ;
exit(-1) ;
}
if ( mtx->entries == NULL ) {
fprintf(stderr, "\n fatal error in DenseMtx_complexEntry()"
"\n mtx->entries is NULL \n") ;
exit(-1) ;
}
loc = 2*(irow*mtx->inc1 + jcol*mtx->inc2) ;
*pReal = mtx->entries[loc] ;
*pImag = mtx->entries[loc+1] ;
return ; }
/*--------------------------------------------------------------------*/
/*
------------------------------
set entry (irow,jcol) to value
created -- 98jun05, cca
------------------------------
*/
void
DenseMtx_setRealEntry (
DenseMtx *mtx,
int irow,
int jcol,
double value
) {
/*
---------------
check the input
---------------
*/
if ( mtx == NULL ) {
fprintf(stderr, "\n fatal error in DenseMtx_setRealEntry()"
"\n mtx is NULL\n") ;
exit(-1) ;
}
if ( mtx->type != SPOOLES_REAL ) {
fprintf(stderr, "\n fatal error in DenseMtx_setRealEntry()"
"\n mtx type must be SPOOLES_REAL\n") ;
exit(-1) ;
}
if ( irow < 0 || irow >= mtx->nrow ) {
fprintf(stderr, "\n fatal error in DenseMtx_setRealEntry()"
"\n irow = %d, mtx->nrow = %d input\n", irow, mtx->nrow) ;
exit(-1) ;
}
if ( jcol < 0 || jcol >= mtx->ncol ) {
fprintf(stderr, "\n fatal error in DenseMtx_setRealEntry()"
"\n jcol = %d, mtx->ncol = %d input\n", jcol, mtx->ncol) ;
exit(-1) ;
}
if ( mtx->entries == NULL ) {
fprintf(stderr, "\n fatal error in DenseMtx_setRealEntry()"
"\n mtx->entries is NULL \n") ;
exit(-1) ;
}
mtx->entries[irow*mtx->inc1 + jcol*mtx->inc2] = value ;
return ; }
/*--------------------------------------------------------------------*/
/*
------------------------------------
set entry (irow,jcol) to (real,imag)
created -- 98jun05, cca
------------------------------------
*/
void
DenseMtx_setComplexEntry (
DenseMtx *mtx,
int irow,
int jcol,
double real,
double imag
) {
int loc ;
/*
---------------
check the input
---------------
*/
if ( mtx == NULL ) {
fprintf(stderr, "\n fatal error in DenseMtx_setComplexEntry()"
"\n mtx is NULL\n") ;
exit(-1) ;
}
if ( mtx->type != SPOOLES_COMPLEX ) {
fprintf(stderr, "\n fatal error in DenseMtx_setComplexEntry()"
"\n mtx type must be SPOOLES_COMPLEX\n") ;
exit(-1) ;
}
if ( irow < 0 || irow >= mtx->nrow ) {
fprintf(stderr, "\n fatal error in DenseMtx_setComplexEntry()"
"\n irow = %d, mtx->nrow = %d input\n", irow, mtx->nrow) ;
exit(-1) ;
}
if ( jcol < 0 || jcol >= mtx->ncol ) {
fprintf(stderr, "\n fatal error in DenseMtx_setComplexEntry()"
"\n jcol = %d, mtx->ncol = %d input\n", jcol, mtx->ncol) ;
exit(-1) ;
}
if ( mtx->entries == NULL ) {
fprintf(stderr, "\n fatal error in DenseMtx_setComplexEntry()"
"\n mtx->entries is NULL \n") ;
exit(-1) ;
}
loc = 2*(irow*mtx->inc1 + jcol*mtx->inc2) ;
mtx->entries[loc] = real ;
mtx->entries[loc+1] = imag ;
return ; }
/*--------------------------------------------------------------------*/
/*
----------------------------------------------------------
purpose -- fill *prowent with the base address of row irow
return values --
1 -- normal return
-1 -- mtx is NULL
-2 -- invalid type for mtx
-3 -- irow is invalid
-4 -- prowent is NULL
created -- 98nov11, cca
----------------------------------------------------------
*/
int
DenseMtx_row (
DenseMtx *mtx,
int irow,
double **prowent
) {
/*
---------------
check the input
---------------
*/
if ( mtx == NULL ) {
fprintf(stderr, "\n error in DenseMtx_row()"
"\n mtx is NULL\n") ;
return(-1) ;
}
if ( mtx->type != SPOOLES_REAL && mtx->type != SPOOLES_COMPLEX ) {
fprintf(stderr, "\n error in DenseMtx_row()"
"\n invalid type %d\n", mtx->type) ;
return(-2) ;
}
if ( irow < 0 || irow >= mtx->nrow ) {
fprintf(stderr, "\n error in DenseMtx_row()"
"\n %d rows, irow = %d\n", mtx->nrow, irow) ;
return(-3) ;
}
if ( prowent == NULL ) {
fprintf(stderr, "\n error in DenseMtx_row()"
"\n prowent is NULL\n") ;
return(-4) ;
}
if ( mtx->type == SPOOLES_REAL ) {
*prowent = mtx->entries + irow*mtx->inc1 ;
} else {
*prowent = mtx->entries + 2*irow*mtx->inc1 ;
}
return(1) ; }
/*--------------------------------------------------------------------*/
/*
-------------------------------------------------------------
purpose -- fill *pcolent with the base address of column jcol
return values --
1 -- normal return
-1 -- mtx is NULL
-2 -- invalid type for mtx
-3 -- jcol is invalid
-4 -- pcolent is NULL
created -- 98nov11, cca
-------------------------------------------------------------
*/
int
DenseMtx_column (
DenseMtx *mtx,
int jcol,
double **pcolent
) {
/*
---------------
check the input
---------------
*/
if ( mtx == NULL ) {
fprintf(stderr, "\n error in DenseMtx_column()"
"\n mtx is NULL\n") ;
return(-1) ;
}
if ( mtx->type != SPOOLES_REAL && mtx->type != SPOOLES_COMPLEX ) {
fprintf(stderr, "\n error in DenseMtx_column()"
"\n invalid type %d\n", mtx->type) ;
return(-2) ;
}
if ( jcol < 0 || jcol >= mtx->ncol ) {
fprintf(stderr, "\n error in DenseMtx_column()"
"\n %d columns, jcol = %d\n", mtx->ncol, jcol) ;
return(-3) ;
}
if ( pcolent == NULL ) {
fprintf(stderr, "\n error in DenseMtx_column()"
"\n pcolent is NULL\n") ;
return(-4) ;
}
if ( mtx->type == SPOOLES_REAL ) {
*pcolent = mtx->entries + jcol*mtx->inc2 ;
} else {
*pcolent = mtx->entries + 2*jcol*mtx->inc2 ;
}
return(1) ; }
/*--------------------------------------------------------------------*/
syntax highlighted by Code2HTML, v. 0.9.1