in sntrup4591761.c [925:957]
static void rq_encoderounded(unsigned char *c,const modq *f)
{
crypto_int32 f0, f1, f2;
int i;
for (i = 0;i < p/3;++i) {
f0 = *f++ + qshift;
f1 = *f++ + qshift;
f2 = *f++ + qshift;
f0 = (21846 * f0) >> 16;
f1 = (21846 * f1) >> 16;
f2 = (21846 * f2) >> 16;
/* now want f0 + f1*1536 + f2*1536^2 as a 32-bit integer */
f2 *= 3;
f1 += f2 << 9;
f1 *= 3;
f0 += f1 << 9;
*c++ = f0; f0 >>= 8;
*c++ = f0; f0 >>= 8;
*c++ = f0; f0 >>= 8;
*c++ = f0;
}
/* XXX: using p mod 3 = 2 */
f0 = *f++ + qshift;
f1 = *f++ + qshift;
f0 = (21846 * f0) >> 16;
f1 = (21846 * f1) >> 16;
f1 *= 3;
f0 += f1 << 9;
*c++ = f0; f0 >>= 8;
*c++ = f0; f0 >>= 8;
*c++ = f0;
}