JCublasJava/src/main/java/jcuda/jcublas/JCublas.java
public static void cublasZgemm(char transa, char transb, int m, int n, int k, cuDoubleComplex alpha, Pointer A, int lda, Pointer B, int ldb, cuDoubleComplex beta, Pointer C, int ldc)
    {
        cublasZgemmNative(transa, transb, m, n, k, alpha, A, lda, B, ldb, beta, C, ldc);
        checkResultBLAS();
    }
public static void cublasZgemm(char transa, char transb, int m, int n, int k, cuDoubleComplex alpha, Pointer A, int lda, Pointer B, int ldb, cuDoubleComplex beta, Pointer C, int ldc)
    {
        cublasZgemmNative(transa, transb, m, n, k, alpha, A, lda, B, ldb, beta, C, ldc);
        checkResultBLAS();
    }
<pre>
void cublasZgemm (char transa, char transb, int m, int n, int k,
cuDoubleComplex alpha, const cuDoubleComplex *A, int lda,
const cuDoubleComplex *B, int ldb, cuDoubleComplex beta,
cuDoubleComplex *C, int ldc)

zgemm performs one of the matrix-matrix operations

C = alpha * op(A) * op(B) + beta*C,

where op(X) is one of

op(X) = X   or   op(X) = transpose  or  op(X) = conjg(transpose(X))

alpha and beta are double-complex scalars, and A, B and C are matrices
consisting of double-complex elements, with op(A) an m x k matrix, op(B)
a k x n matrix and C an m x n matrix.

Input
-----
transa specifies op(A). If transa == 'N' or 'n', op(A) = A. If transa ==
'T' or 't', op(A) = transpose(A). If transa == 'C' or 'c', op(A) =
conjg(transpose(A)).
transb specifies op(B). If transa == 'N' or 'n', op(B) = B. If transb ==
'T' or 't', op(B) = transpose(B). If transb == 'C' or 'c', op(B) =
conjg(transpose(B)).
m      number of rows of matrix op(A) and rows of matrix C. It must be at
least zero.
n      number of columns of matrix op(B) and number of columns of C. It
must be at least zero.
k      number of columns of matrix op(A) and number of rows of op(B). It
must be at least zero.
alpha  double-complex scalar multiplier applied to op(A)op(B)
A      double-complex array of dimensions (lda, k) if transa ==  'N' or
'n'), and of dimensions (lda, m) otherwise.
lda    leading dimension of A. When transa == 'N' or 'n', it must be at
least max(1, m) and at least max(1, k) otherwise.
B      double-complex array of dimensions (ldb, n) if transb == 'N' or 'n',
and of dimensions (ldb, k) otherwise
ldb    leading dimension of B. When transb == 'N' or 'n', it must be at
least max(1, k) and at least max(1, n) otherwise.
beta   double-complex scalar multiplier applied to C. If beta is zero, C
does not have to be a valid input.
C      double precision array of dimensions (ldc, n)
ldc    leading dimension of C. Must be at least max(1, m).

Output
------
C      updated according to C = alpha*op(A)*op(B) + beta*C

Reference: http://www.netlib.org/blas/zgemm.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 any of m, n, or k are < 0
CUBLAS_STATUS_ARCH_MISMATCH    if invoked on device without DP support
CUBLAS_STATUS_EXECUTION_FAILED if function failed to launch on GPU
</pre>