20 void pzgeru_(
int * M,
int * N,
double * ALPHA,
21 double * X,
int * IX,
int * JX,
int * DESCX,
int * INCX,
22 double * Y,
int * IY,
int * JY,
int * DESCY,
int * INCY,
23 double * A,
int * IA,
int * JA,
int * DESCA )
25 void pzgeru_( M, N, ALPHA, X, IX, JX, DESCX, INCX, Y, IY, JY, DESCY,
26 INCY, A, IA, JA, DESCA )
30 int * IA, * INCX, * INCY, * IX, * IY, * JA, * JX, * JY,
36 int * DESCA, * DESCX, * DESCY;
219 int Acol, Ai, Aii, Aimb1, Ainb1, Aj, Ajj, Ald, Amb, Amp, Anb,
220 Anq, Arow, XAfr, Xi, Xj, YAfr, Yi, Yj, ctxt, info, ione=1,
221 mycol, myrow, npcol, nprow;
228 char * XA = NULL, * YA = NULL;
241 if( !( info = ( ( nprow == -1 ) ? -( 701 +
CTXT_ ) : 0 ) ) )
243 PB_Cchkvec( ctxt,
"PZGERU",
"X", *M, 1, Xi, Xj, Xd, *INCX, 7, &info );
244 PB_Cchkvec( ctxt,
"PZGERU",
"Y", *N, 2, Yi, Yj, Yd, *INCY, 12, &info );
245 PB_Cchkmat( ctxt,
"PZGERU",
"A", *M, 1, *N, 2, Ai, Aj, Ad, 17, &info );
247 if( info ) {
PB_Cabort( ctxt,
"PZGERU", info );
return; }
252 if( ( *M == 0 ) || ( *N == 0 ) ||
268 PB_Cdescribe( *M, *N, Ai, Aj, Ad, nprow, npcol, myrow, mycol, &Aii, &Ajj,
269 &Ald, &Aimb1, &Ainb1, &Amb, &Anb, &Arow, &Acol, Ad0 );
274 PB_CInV( type,
NOCONJG,
COLUMN, *M, *N, Ad0, 1, ((
char *) X), Xi, Xj, Xd,
275 ( *INCX == Xd[
M_] ?
ROW :
COLUMN ), &XA, XAd, &XAfr );
279 PB_CInV( type,
NOCONJG,
ROW, *M, *N, Ad0, 1, ((
char *) Y), Yi, Yj, Yd,
280 ( *INCY == Yd[
M_] ?
ROW :
COLUMN ), &YA, YAd, &YAfr );
284 Amp =
PB_Cnumroc( *M, 0, Aimb1, Amb, myrow, Arow, nprow );
285 Anq =
PB_Cnumroc( *N, 0, Ainb1, Anb, mycol, Acol, npcol );
287 if( ( Amp > 0 ) && ( Anq > 0 ) )
289 zgeru_( &Amp, &Anq, ((
char *) ALPHA), XA, &ione, YA, &YAd[
LLD_],
290 Mptr( ((
char *) A), Aii, Ajj, Ald, type->
size ), &Ald );
292 if( XAfr ) free( XA );
293 if( YAfr ) free( YA );