22 double * A,
int * IA,
int * JA,
int * DESCA,
23 double * B,
int * IB,
int * JB,
int * DESCB,
25 double * C,
int * IC,
int * JC,
int * DESCC )
27 void pdsymm_( SIDE, UPLO, M, N, ALPHA, A, IA, JA, DESCA,
28 B, IB, JB, DESCB, BETA, C, IC, JC, DESCC )
33 int * IA, * IB, * IC, * JA, * JB, * JC, * M, * N;
34 double * ALPHA, * BETA;
38 int * DESCA, * DESCB, * DESCC;
262 char DirAB, SideOp, UploA, cbtop, cbtopsave, cctop, cctopsave,
263 rbtop, rbtopsave, rctop, rctopsave;
264 int Ai, Aj, Bi, Bj, ChooseABC, Ci, Cj, ForceTop, ctxt, info,
265 lside, mycol, myrow, nb, npcol, nprow, upper;
266 double ABCest, BCest, tmp1, tmp2, tmp3, tmp4;
286 if( !( info = ( ( nprow == -1 ) ? -( 901 +
CTXT_ ) : 0 ) ) )
288 if( ( !lside ) && ( SideOp !=
CRIGHT ) )
290 PB_Cwarn( ctxt, __LINE__,
"PDSYMM",
"Illegal SIDE = %c\n", SideOp );
293 else if( ( !upper ) && ( UploA !=
CLOWER ) )
295 PB_Cwarn( ctxt, __LINE__,
"PDSYMM",
"Illegal UPLO = %c\n", UploA );
300 PB_Cchkmat( ctxt,
"PDSYMM",
"A", *M, 3, *M, 3, Ai, Aj, Ad, 9,
302 PB_Cchkmat( ctxt,
"PDSYMM",
"B", *M, 3, *N, 4, Bi, Bj, Bd, 13,
307 PB_Cchkmat( ctxt,
"PDSYMM",
"A", *N, 4, *N, 4, Ai, Aj, Ad, 9,
309 PB_Cchkmat( ctxt,
"PDSYMM",
"B", *M, 3, *N, 4, Bi, Bj, Bd, 13,
312 PB_Cchkmat( ctxt,
"PDSYMM",
"C", *M, 3, *N, 4, Ci, Cj, Cd, 18,
315 if( info ) {
PB_Cabort( ctxt,
"PDSYMM", info );
return; }
320 if( ( *M == 0 ) || ( *N == 0 ) ||
335 ((
char * ) C), Ci, Cj, Cd );
360 ABCest = (double)(*M) *
361 ( ( ( ( Ad[
CSRC_] == -1 ) || ( npcol == 1 ) ) ?
ZERO : tmp1 /
TWO ) +
362 ( ( ( Bd[
RSRC_] == -1 ) || ( nprow == 1 ) ) ?
ZERO :
366 BCest = (double)(*N) *
368 ( nprow == 1 ?
ZERO : tmp2 ) +
MAX( tmp2, tmp3 ) +
369 ( ( ( Bd[
CSRC_] == -1 ) || ( npcol == 1 ) ) ?
ZERO : tmp1 ) +
375 ABCest = (double)(*N) *
376 ( ( ( ( Ad[
RSRC_] == -1 ) || ( nprow == 1 ) ) ?
ZERO : tmp1 /
TWO ) +
377 ( ( ( Bd[
CSRC_] == -1 ) || ( npcol == 1 ) ) ?
ZERO :
381 BCest = (double)(*M) *
382 ( ( npcol == 1 ?
ZERO : tmp1 ) +
MAX( tmp1, tmp3 ) +
384 ( ( ( Bd[
RSRC_] == -1 ) || ( nprow == 1 ) ) ?
ZERO : tmp2 ) +
390 ChooseABC = ( ( 1.5 * ABCest ) <= BCest );
397 ForceTop = ( ( *M > nb ) && ( *N > nb ) );
408 rbtopsave = rbtop; rctopsave = rctop;
409 cbtopsave = cbtop; cctopsave = cctop;
421 ( cbtop !=
CTOP_SRING ) ) || ( cbtop != cctop ) )
443 ( rbtop !=
CTOP_SRING ) ) || ( rbtop != rctop ) )
462 ((
char *)ALPHA), ((
char *)A), Ai, Aj, Ad, ((
char *)B), Bi,
463 Bj, Bd, ((
char *)BETA), ((
char *)C), Ci, Cj, Cd );
469 rbtopsave = rbtop; rctopsave = rctop;
470 cbtopsave = cbtop; cctopsave = cctop;
479 ( rbtop !=
CTOP_SRING ) ) || ( rbtop != rctop ) )
500 ( cbtop !=
CTOP_SRING ) ) || ( cbtop != cctop ) )
523 ((
char *)ALPHA), ((
char *)A), Ai, Aj, Ad, ((
char *)B), Bi,
524 Bj, Bd, ((
char *)BETA), ((
char *)C), Ci, Cj, Cd );