22 float * A,
int * IA,
int * JA,
int * DESCA,
24 float * C,
int * IC,
int * JC,
int * DESCC )
26 void pcsyrk_( UPLO, TRANS, N, K, ALPHA, A, IA, JA, DESCA, BETA,
32 int * IA, * IC, * JA, * JC, * K, * N;
33 float * ALPHA, * BETA;
239 char DirA, OpC, OpR, TopC, TopR, TranOp, UploC, ctop, ctopsave,
241 int Ai, Aj, ChooseAC, Ci, Cj, ForceTop, ctxt, info, mycol,
242 myrow, nb, notran, npcol, nprow, upper;
243 double Aest, ACest, tmp1, tmp2, tmp3, tmp4;
262 if( !( info = ( ( nprow == -1 ) ? -( 901 +
CTXT_ ) : 0 ) ) )
264 if( ( !upper ) && ( UploC !=
CLOWER ) )
266 PB_Cwarn( ctxt, __LINE__,
"PCSYRK",
"Illegal UPLO = %c\n", UploC );
269 else if( ( !notran ) && ( TranOp !=
CTRAN ) )
271 PB_Cwarn( ctxt, __LINE__,
"PCSYRK",
"Illegal TRANS = %c\n", TranOp );
275 PB_Cchkmat( ctxt,
"PCSYRK",
"A", *N, 3, *K, 4, Ai, Aj, Ad, 9,
278 PB_Cchkmat( ctxt,
"PCSYRK",
"A", *K, 4, *N, 3, Ai, Aj, Ad, 9,
280 PB_Cchkmat( ctxt,
"PCSYRK",
"C", *N, 3, *N, 3, Ci, Cj, Cd, 14,
283 if( info ) {
PB_Cabort( ctxt,
"PCSYRK", info );
return; }
306 ((
char *) C), Ci, Cj, Cd );
311 ((
char *) C), Ci, Cj, Cd );
331 ACest = (double)(*N) *
332 ( ( ( ( Ad[
RSRC_] == -1 ) || ( nprow == 1 ) ) ?
ZERO : tmp3 ) +
333 ( ( ( Ad[
CSRC_] == -1 ) || ( npcol == 1 ) ) ?
ZERO :
337 Aest = (double)(*K) *
338 ( ( ( ( Ad[
CSRC_] == -1 ) || ( npcol == 1 ) ) ?
ZERO : tmp1 ) +
339 ( nprow == 1 ?
ZERO : tmp2 ) +
MAX( tmp2, tmp4 ) );
344 ACest = (double)(*N) *
345 ( ( ( ( Ad[
CSRC_] == -1 ) || ( npcol == 1 ) ) ?
ZERO : tmp4 ) +
346 ( ( ( Ad[
RSRC_] == -1 ) || ( nprow == 1 ) ) ?
ZERO :
350 Aest = (double)(*K) *
351 ( ( ( ( Ad[
RSRC_] == -1 ) || ( nprow == 1 ) ) ?
ZERO : tmp2 ) +
352 ( npcol == 1 ?
ZERO : tmp1 ) +
MAX( tmp1, tmp3 ) );
357 ChooseAC = ( ( 1.3 * ACest ) <= Aest );
364 ForceTop = ( ( *N > nb ) && ( *K > nb ) );
423 *K, ((
char *)ALPHA), ((
char *)A), Ai, Aj, Ad, ((
char *)BETA),
424 ((
char *)C), Ci, Cj, Cd );
482 *K, ((
char *)ALPHA), ((
char *)A), Ai, Aj, Ad, ((
char *)BETA),
483 ((
char *)C), Ci, Cj, Cd );
490 rtopsave = *
PB_Ctop( &ctxt, &OpR,
ROW, &rtopsave );