nd4j-backends/nd4j-api-parent/nd4j-api/src/main/java/org/nd4j/linalg/api/blas/impl/BaseLevel3.java
@Override
    public void hemm(char Order, char Side, char Uplo, IComplexNumber alpha, IComplexNDArray A, IComplexNDArray B,
                    IComplexNumber beta, IComplexNDArray C) {

        // FIXME: int cast

        if (A.data().dataType() == DataBuffer.Type.DOUBLE)
            zhemm(Order, Side, Uplo, (int) B.rows(), (int) B.columns(), alpha.asDouble(), A, (int) A.size(0), B, (int) B.size(0), beta.asDouble(), C, (int) C.size(0));
        else
            chemm(Order, Side, Uplo, (int) B.rows(), (int) B.columns(), alpha.asFloat(), A, (int) A.size(0), B, (int) B.size(0), beta.asFloat(), C, (int) C.size(0));
    }
@Override
    public void hemm(char Order, char Side, char Uplo, IComplexNumber alpha, IComplexNDArray A, IComplexNDArray B,
                    IComplexNumber beta, IComplexNDArray C) {

        // FIXME: int cast

        if (A.data().dataType() == DataBuffer.Type.DOUBLE)
            zhemm(Order, Side, Uplo, (int) B.rows(), (int) B.columns(), alpha.asDouble(), A, (int) A.size(0), B, (int) B.size(0), beta.asDouble(), C, (int) C.size(0));
        else
            chemm(Order, Side, Uplo, (int) B.rows(), (int) B.columns(), alpha.asFloat(), A, (int) A.size(0), B, (int) B.size(0), beta.asFloat(), C, (int) C.size(0));
    }
hemm performs one of the following matrix-matrix operations:
c := alpha*a*b + beta*c  for side = 'L'or'l'
c := alpha*b*a + beta*c  for side = 'R'or'r',
where a is a Hermitian matrix,
b and c are m-by-n matrices.
@param Order
@param Side
@param Uplo
@param alpha
@param A
@param B
@param beta
@param C