JCublasJava/src/main/java/jcuda/jcublas/JCublas.java
public static void cublasCher2(char uplo, int n, cuComplex alpha, Pointer x, int incx, Pointer y, int incy, Pointer A, int lda)
    {
        cublasCher2Native(uplo, n, alpha, x, incx, y, incy, A, lda);
        checkResultBLAS();
    }
public static void cublasCher2(char uplo, int n, cuComplex alpha, Pointer x, int incx, Pointer y, int incy, Pointer A, int lda)
    {
        cublasCher2Native(uplo, n, alpha, x, incx, y, incy, A, lda);
        checkResultBLAS();
    }
<pre>
void cublasCher2 (char uplo, int n, cuComplex alpha, const cuComplex *x, int incx,
const cuComplex *y, int incy, cuComplex *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 single precision complex scalar, x and y are n element single
precision complex vector and A is an n by n hermitian matrix consisting of single
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  single precision complex scalar multiplier applied to x * conjugate(transpose(y)) +
y * conjugate(transpose(x)).
x      single precision array of length at least (1 + (n - 1) * abs (incx)).
incx   storage spacing between elements of x. incx must not be zero.
y      single precision array of length at least (1 + (n - 1) * abs (incy)).
incy   storage spacing between elements of y. incy must not be zero.
A      single 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/cher2.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_EXECUTION_FAILED if function failed to launch on GPU
</pre>