org.bouncycastle.pqc.crypto.crystals.dilithium.Reduce Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of bcprov-jdk15to18 Show documentation
Show all versions of bcprov-jdk15to18 Show documentation
The Bouncy Castle Crypto package is a Java implementation of cryptographic algorithms. This jar contains JCE provider and lightweight API for the Bouncy Castle Cryptography APIs for JDK 1.5 to JDK 1.8.
package org.bouncycastle.pqc.crypto.crystals.dilithium;
class Reduce
{
static int montgomeryReduce(long a)
{
int t;
t = (int)(a * DilithiumEngine.DilithiumQinv);
t = (int)((a - ((long)t) * DilithiumEngine.DilithiumQ) >>> 32);
// System.out.printf("%d, ", t);
return t;
}
static int reduce32(int a)
{
int t;
t = (a + (1 << 22)) >> 23;
t = a - t * DilithiumEngine.DilithiumQ;
return t;
}
static int conditionalAddQ(int a)
{
a += (a >> 31) & DilithiumEngine.DilithiumQ;
return a;
}
}