22 double * A,
int * IA,
int * JA,
int * DESCA,
24 double * C,
int * IC,
int * JC,
int * DESCC )
26 void pzherk_( UPLO, TRANS, N, K, ALPHA, A, IA, JA, DESCA, BETA,
32 int * IA, * IC, * JA, * JC, * K, * N;
33 double * ALPHA, * BETA;
245 char DirA, OpC, OpR, TopC, TopR, TranOp, UploC, ctop, ctopsave,
247 int Ai, Aj, ChooseAC, Ci, Cj, ForceTop, ctxt, info, mycol,
248 myrow, nb, notran, npcol, nprow, upper;
249 double Aest, ACest, tmp1, tmp2, tmp3, tmp4;
269 if( !( info = ( ( nprow == -1 ) ? -( 901 +
CTXT_ ) : 0 ) ) )
271 if( ( !upper ) && ( UploC !=
CLOWER ) )
273 PB_Cwarn( ctxt, __LINE__,
"PZHERK",
"Illegal UPLO = %c\n", UploC );
276 else if( ( !notran ) && ( TranOp !=
CCOTRAN ) )
278 PB_Cwarn( ctxt, __LINE__,
"PZHERK",
"Illegal TRANS = %c\n", TranOp );
282 PB_Cchkmat( ctxt,
"PZHERK",
"A", *N, 3, *K, 4, Ai, Aj, Ad, 9,
285 PB_Cchkmat( ctxt,
"PZHERK",
"A", *K, 4, *N, 3, Ai, Aj, Ad, 9,
287 PB_Cchkmat( ctxt,
"PZHERK",
"C", *N, 3, *N, 3, Ci, Cj, Cd, 14,
290 if( info ) {
PB_Cabort( ctxt,
"PZHERK", info );
return; }
311 ((
char *) C), Ci, Cj, Cd );
316 ((
char *) C), Ci, Cj, Cd );
338 ACest = (double)(*N) *
339 ( ( ( ( Ad[
RSRC_] == -1 ) || ( nprow == 1 ) ) ?
ZERO : tmp3 ) +
340 ( ( ( Ad[
CSRC_] == -1 ) || ( npcol == 1 ) ) ?
ZERO :
344 Aest = (double)(*K) *
345 ( ( ( ( Ad[
CSRC_] == -1 ) || ( npcol == 1 ) ) ?
ZERO : tmp1 ) +
346 ( nprow == 1 ?
ZERO : tmp2 ) +
MAX( tmp2, tmp4 ) );
351 ACest = (double)(*N) *
352 ( ( ( ( Ad[
CSRC_] == -1 ) || ( npcol == 1 ) ) ?
ZERO : tmp4 ) +
353 ( ( ( Ad[
RSRC_] == -1 ) || ( nprow == 1 ) ) ?
ZERO :
357 Aest = (double)(*K) *
358 ( ( ( ( Ad[
RSRC_] == -1 ) || ( nprow == 1 ) ) ?
ZERO : tmp2 ) +
359 ( npcol == 1 ?
ZERO : tmp1 ) +
MAX( tmp1, tmp3 ) );
364 ChooseAC = ( ( 1.3 * ACest ) <= Aest );
371 ForceTop = ( ( *N > nb ) && ( *K > nb ) );
430 *N, *K, ((
char *)Calph), ((
char *)A), Ai, Aj, Ad,
431 ((
char *)BETA), ((
char *)C), Ci, Cj, Cd );
489 *N, *K, ((
char *)Calph), ((
char *)A), Ai, Aj, Ad,
490 ((
char *)BETA), ((
char *)C), Ci, Cj, Cd );
497 rtopsave = *
PB_Ctop( &ctxt, &OpR,
ROW, &rtopsave );