JCublasJava/src/main/java/jcuda/jcublas/JCublas.java
public static void cublasChpr2(char uplo, int n, cuComplex alpha, Pointer x, int incx, Pointer y, int incy, Pointer AP)
    {
        cublasChpr2Native(uplo, n, alpha, x, incx, y, incy, AP);
        checkResultBLAS();
    }
public static void cublasChpr2(char uplo, int n, cuComplex alpha, Pointer x, int incx, Pointer y, int incy, Pointer AP)
    {
        cublasChpr2Native(uplo, n, alpha, x, incx, y, incy, AP);
        checkResultBLAS();
    }
public static void cublasChpr2 ( char uplo , int n , cuComplex alpha , Pointer x , int incx , Pointer y , int incy , Pointer AP ) { cublasChpr2Native ( uplo , n , alpha , x , incx , y , incy , AP ) ; checkResultBLAS ( ) ; }
<pre>
void
cublasChpr2 (char uplo, int n, cuComplex alpha, const cuComplex *x, int incx,
const cuComplex *y, int incy, cuComplex *AP)

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, and x and y are n element single
precision complex vectors. A is a hermitian n x n matrix consisting of single
precision complex elements that is supplied in packed form.

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 complex 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 complex array of length at least (1 + (n - 1) * abs (incy)).
incy   storage spacing between elements of y. incy must not be zero.
AP     single precision complex array with at least ((n * (n + 1)) / 2) elements. If
uplo == 'U' or 'u', the array AP contains the upper triangular part
of the hermitian matrix A, packed sequentially, column by column;
that is, if i <= j, then A[i,j] is stored is AP[i+(j*(j+1)/2)]. If
uplo == 'L' or 'L', the array AP contains the lower triangular part
of the hermitian matrix A, packed sequentially, column by column;
that is, if i >= j, then A[i,j] is stored in AP[i+((2*n-j+1)*j)/2].
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.

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

Reference: http://www.netlib.org/blas/chpr2.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>
<pre > void cublasChpr2 ( char uplo int n cuComplex alpha const cuComplex * x int incx const cuComplex * y int incy cuComplex * AP )