22 float * A,
int * IA,
int * JA,
int * DESCA,
23 float * B,
int * IB,
int * JB,
int * DESCB,
25 float * C,
int * IC,
int * JC,
int * DESCC )
27 void pcsymm_( 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 float * 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__,
"PCSYMM",
"Illegal SIDE = %c\n", SideOp );
293 else if( ( !upper ) && ( UploA !=
CLOWER ) )
295 PB_Cwarn( ctxt, __LINE__,
"PCSYMM",
"Illegal UPLO = %c\n", UploA );
300 PB_Cchkmat( ctxt,
"PCSYMM",
"A", *M, 3, *M, 3, Ai, Aj, Ad, 9,
302 PB_Cchkmat( ctxt,
"PCSYMM",
"B", *M, 3, *N, 4, Bi, Bj, Bd, 13,
307 PB_Cchkmat( ctxt,
"PCSYMM",
"A", *N, 4, *N, 4, Ai, Aj, Ad, 9,
309 PB_Cchkmat( ctxt,
"PCSYMM",
"B", *M, 3, *N, 4, Bi, Bj, Bd, 13,
312 PB_Cchkmat( ctxt,
"PCSYMM",
"C", *M, 3, *N, 4, Ci, Cj, Cd, 18,
315 if( info ) {
PB_Cabort( ctxt,
"PCSYMM", info );
return; }
320 if( ( *M == 0 ) || ( *N == 0 ) ||
336 ((
char *) C), Ci, Cj, Cd );
361 ABCest = (double)(*M) *
362 ( ( ( ( Ad[
CSRC_] == -1 ) || ( npcol == 1 ) ) ?
ZERO : tmp1 /
TWO ) +
363 ( ( ( Bd[
RSRC_] == -1 ) || ( nprow == 1 ) ) ?
ZERO :
367 BCest = (double)(*N) *
369 ( nprow == 1 ?
ZERO : tmp2 ) +
MAX( tmp2, tmp3 ) +
370 ( ( ( Bd[
CSRC_] == -1 ) || ( npcol == 1 ) ) ?
ZERO : tmp1 ) +
376 ABCest = (double)(*N) *
377 ( ( ( ( Ad[
RSRC_] == -1 ) || ( nprow == 1 ) ) ?
ZERO : tmp1 /
TWO ) +
378 ( ( ( Bd[
CSRC_] == -1 ) || ( npcol == 1 ) ) ?
ZERO :
382 BCest = (double)(*M) *
383 ( ( npcol == 1 ?
ZERO : tmp1 ) +
MAX( tmp1, tmp3 ) +
385 ( ( ( Bd[
RSRC_] == -1 ) || ( nprow == 1 ) ) ?
ZERO : tmp2 ) +
391 ChooseABC = ( ( 1.5 * ABCest ) <= BCest );
398 ForceTop = ( ( *M > nb ) && ( *N > nb ) );
409 rbtopsave = rbtop; rctopsave = rctop;
410 cbtopsave = cbtop; cctopsave = cctop;
422 ( cbtop !=
CTOP_SRING ) ) || ( cbtop != cctop ) )
444 ( rbtop !=
CTOP_SRING ) ) || ( rbtop != rctop ) )
463 ((
char *)ALPHA), ((
char *)A), Ai, Aj, Ad, ((
char *)B), Bi,
464 Bj, Bd, ((
char *)BETA), ((
char *)C), Ci, Cj, Cd );
470 rbtopsave = rbtop; rctopsave = rctop;
471 cbtopsave = cbtop; cctopsave = cctop;
480 ( rbtop !=
CTOP_SRING ) ) || ( rbtop != rctop ) )
501 ( cbtop !=
CTOP_SRING ) ) || ( cbtop != cctop ) )
524 ((
char *)ALPHA), ((
char *)A), Ai, Aj, Ad, ((
char *)B), Bi,
525 Bj, Bd, ((
char *)BETA), ((
char *)C), Ci, Cj, Cd );