NAME

zher2k - perform one of the Hermitian rank 2k operations C := alpha*A*conjg( B' ) + conjg( alpha )*B*conjg( A' ) + beta*C or C := alpha*conjg( A' )*B + conjg( alpha )*conjg( B' )*A + beta*C


SYNOPSIS

  SUBROUTINE ZHER2K( UPLO, TRANSA, N, K, ALPHA, A, LDA, B, LDB, BETA, 
 *      C, LDC)
  CHARACTER * 1 UPLO, TRANSA
  DOUBLE COMPLEX ALPHA
  DOUBLE COMPLEX A(LDA,*), B(LDB,*), C(LDC,*)
  INTEGER N, K, LDA, LDB, LDC
  DOUBLE PRECISION BETA
  SUBROUTINE ZHER2K_64( UPLO, TRANSA, N, K, ALPHA, A, LDA, B, LDB, 
 *      BETA, C, LDC)
  CHARACTER * 1 UPLO, TRANSA
  DOUBLE COMPLEX ALPHA
  DOUBLE COMPLEX A(LDA,*), B(LDB,*), C(LDC,*)
  INTEGER*8 N, K, LDA, LDB, LDC
  DOUBLE PRECISION BETA

F95 INTERFACE

  SUBROUTINE HER2K( UPLO, [TRANSA], [N], [K], ALPHA, A, [LDA], B, [LDB], 
 *       BETA, C, [LDC])
  CHARACTER(LEN=1) :: UPLO, TRANSA
  COMPLEX(8) :: ALPHA
  COMPLEX(8), DIMENSION(:,:) :: A, B, C
  INTEGER :: N, K, LDA, LDB, LDC
  REAL(8) :: BETA
  SUBROUTINE HER2K_64( UPLO, [TRANSA], [N], [K], ALPHA, A, [LDA], B, 
 *       [LDB], BETA, C, [LDC])
  CHARACTER(LEN=1) :: UPLO, TRANSA
  COMPLEX(8) :: ALPHA
  COMPLEX(8), DIMENSION(:,:) :: A, B, C
  INTEGER(8) :: N, K, LDA, LDB, LDC
  REAL(8) :: BETA

C INTERFACE

#include <sunperf.h>

void zher2k(char uplo, char transa, int n, int k, doublecomplex alpha, doublecomplex *a, int lda, doublecomplex *b, int ldb, double beta, doublecomplex *c, int ldc);

void zher2k_64(char uplo, char transa, long n, long k, doublecomplex alpha, doublecomplex *a, long lda, doublecomplex *b, long ldb, double beta, doublecomplex *c, long ldc);


PURPOSE

zher2k K performs one of the Hermitian rank 2k operations C := alpha*A*conjg( B' ) + conjg( alpha )*B*conjg( A' ) + beta*C or C := alpha*conjg( A' )*B + conjg( alpha )*conjg( B' )*A + beta*C where alpha and beta are scalars with beta real, C is an n by n Hermitian matrix and A and B are n by k matrices in the first case and k by n matrices in the second case.


ARGUMENTS