JCublasJava/src/main/java/jcuda/jcublas/JCublas.java
public static void cublasZher2(char uplo, int n, cuDoubleComplex alpha, Pointer x, int incx, Pointer y, int incy, Pointer A, int lda)
    {
        cublasZher2Native(uplo, n, alpha, x, incx, y, incy, A, lda);
        checkResultBLAS();
    }
public static void cublasZher2(char uplo, int n, cuDoubleComplex alpha, Pointer x, int incx, Pointer y, int incy, Pointer A, int lda)
    {
        cublasZher2Native(uplo, n, alpha, x, incx, y, incy, A, lda);
        checkResultBLAS();
    }
<pre>
void cublasZher2 (char uplo, int n, cuDoubleComplex alpha, const cuDoubleComplex *x, int incx,
const cuDoubleComplex *y, int incy, cuDoubleComplex *A, int lda)

performs the hermitian rank 2 operation

A = alpha*x*conjugate(transpose(y)) + conjugate(alpha)*y*conjugate(transpose(x)) + A,

where alpha is a double precision complex scalar, x and y are n element double
precision complex vector and A is an n by n hermitian matrix consisting of double
precision complex elements.

Input
-----
uplo   specifies whether the matrix data is stored in the upper or the lower
triangular part of array A. If uplo == 'U' or 'u', then only the
upper triangular part of A may be referenced and the lower triangular
part of A is inferred. If uplo == 'L' or 'l', then only the lower
triangular part of A may be referenced and the upper triangular part
of A is inferred.
n      specifies the number of rows and columns of the matrix A. It must be
at least zero.
alpha  double precision complex scalar multiplier applied to x * conjugate(transpose(y)) +
y * conjugate(transpose(x)).
x      double precision array of length at least (1 + (n - 1) * abs (incx)).
incx   storage spacing between elements of x. incx must not be zero.
y      double precision array of length at least (1 + (n - 1) * abs (incy)).
incy   storage spacing between elements of y. incy must not be zero.
A      double precision complex array of dimensions (lda, n). If uplo == 'U' or 'u',
then A must contains the upper triangular part of a hermitian matrix,
and the strictly lower triangular parts is not referenced. If uplo ==
'L' or 'l', then A contains the lower triangular part of a hermitian
matrix, and the strictly upper triangular part is not referenced.
The imaginary parts of the diagonal elements need not be set,
they are assumed to be zero, and on exit they are set to zero.

lda    leading dimension of A. It must be at least max(1, n).

Output
------
A      updated according to A = alpha*x*conjugate(transpose(y))
+ conjugate(alpha)*y*conjugate(transpose(x))+A

Reference: http://www.netlib.org/blas/zher2.f

Error status for this function can be retrieved via cublasGetError().

Error Status
------------
CUBLAS_STATUS_NOT_INITIALIZED  if CUBLAS library has not been initialized
CUBLAS_STATUS_INVALID_VALUE    if n < 0, incx == 0, incy == 0
CUBLAS_STATUS_ARCH_MISMATCH    if invoked on device without DP support
CUBLAS_STATUS_EXECUTION_FAILED if function failed to launch on GPU
</pre>