@Override
    public void hpr2(char order, char Uplo, IComplexNumber alpha, IComplexNDArray X, IComplexNDArray Y,
                    IComplexNDArray Ap) {

        // FIXME: int cast

        if (X.data().dataType() == DataBuffer.Type.DOUBLE)
            zhpr2(order, Uplo, (int) Ap.rows(), alpha.asDouble(), X, X.majorStride() / 2, Y, Y.majorStride() / 2, Ap);
        else
            chpr2(order, Uplo, (int) Ap.rows(), alpha.asFloat(), X, X.majorStride() / 2, Y, Y.majorStride() / 2, Ap);

    }
@Override
    public void hpr2(char order, char Uplo, IComplexNumber alpha, IComplexNDArray X, IComplexNDArray Y,
                    IComplexNDArray Ap) {

        

        if (X.data().dataType() == DataBuffer.Type.DOUBLE)
            zhpr2(order, Uplo, (int) Ap.rows(), alpha.asDouble(), X, X.majorStride() / 2, Y, Y.majorStride() / 2, Ap);
        else
            chpr2(order, Uplo, (int) Ap.rows(), alpha.asFloat(), X, X.majorStride() / 2, Y, Y.majorStride() / 2, Ap);

    }
@ Override public void hpr2 ( char order , char Uplo , IComplexNumber alpha , IComplexNDArray X , IComplexNDArray Y , IComplexNDArray Ap ) { // FIXME: int cast if ( X . data ( ) . dataType ( ) == DataBuffer . Type . DOUBLE ) zhpr2 ( order , Uplo , ( int ) Ap . rows ( ) , alpha . asDouble ( ) , X , X . majorStride ( ) / 2 , Y , Y . majorStride ( ) / 2 , Ap ) ; else chpr2 ( order , Uplo , ( int ) Ap . rows ( ) , alpha . asFloat ( ) , X , X . majorStride ( ) / 2 , Y , Y . majorStride ( ) / 2 , Ap ) ; }
hpr2 performs a rank-2 update of an n-by-n packed Hermitian matrix a:
a := alpha*x*conjg(y') + conjg(alpha)*y*conjg(x') + a.

@param order
@param Uplo
@param alpha
@param X
@param Y
@param Ap
hpr2 performs a rank - 2 update of an n - by - n packed Hermitian matrix a : a : = alpha * x * conjg ( y ) + conjg ( alpha ) * y * conjg ( x ) + a .