core/src/main/java/org/bouncycastle/pqc/crypto/qtesla/Polynomial.java
/*******************************************************************
     * Description:	Montgomery Reduction
     *
     * @param        a        Number to be Reduced
     * @param        q            Modulus
     * @param        qInverse
     *
     * @return Reduced Number
     *******************************************************************/
Montgomery Reduction
@param        a        Number to be Reduced
@param        q            Modulus
@param        qInverse

@return Reduced Number
Montgomery Reduction @param a Number to be Reduced @param q Modulus @param qInverse @return Reduced Number
private static long montgomery(long a, int q, long qInverse)
    {
        long u = (a * qInverse) & 0xFFFFFFFFL;
        u *= q;
        a += u;
        return a >> 32;
    }
private static long montgomery ( long a , int q , long qInverse ) { long u = ( a * qInverse ) & 0xFFFFFFFFL ; u *= q ; a += u ; return a >> 32 ; }
Description:     Montgomery Reduction
 @param        a        Number to be Reduced
 @param        q            Modulus
 @param        qInverse
Description : Montgomery Reduction @param a Number to be Reduced @param q Modulus @param qInverse