Lines Matching +full:2 +full:k
16 int k; member
50 ctx->k = mpi_get_nlimbs(m); in mpi_barrett_init()
51 tmp = mpi_alloc(ctx->k + 1); in mpi_barrett_init()
53 /* Barrett precalculation: y = floor(b^(2k) / m). */ in mpi_barrett_init()
55 mpi_lshift_limbs(tmp, 2 * ctx->k); in mpi_barrett_init()
59 ctx->r1 = mpi_alloc(2 * ctx->k + 1); in mpi_barrett_init()
60 ctx->r2 = mpi_alloc(2 * ctx->k + 1); in mpi_barrett_init()
96 int k = ctx->k; in mpi_mod_barrett() local
103 if (mpi_get_nlimbs(x) > 2*k) { in mpi_mod_barrett()
111 /* 1. q1 = floor( x / b^k-1) in mpi_mod_barrett()
113 * q3 = floor( q2 / b^k+1 ) in mpi_mod_barrett()
117 mpi_rshift_limbs(r2, k-1); in mpi_mod_barrett()
119 mpi_rshift_limbs(r2, k+1); in mpi_mod_barrett()
121 /* 2. r1 = x mod b^k+1 in mpi_mod_barrett()
122 * r2 = q3 * m mod b^k+1 in mpi_mod_barrett()
124 * 3. if r < 0 then r = r + b^k+1 in mpi_mod_barrett()
127 if (r1->nlimbs > k+1) /* Quick modulo operation. */ in mpi_mod_barrett()
128 r1->nlimbs = k+1; in mpi_mod_barrett()
130 if (r2->nlimbs > k+1) /* Quick modulo operation. */ in mpi_mod_barrett()
131 r2->nlimbs = k+1; in mpi_mod_barrett()
136 ctx->r3 = mpi_alloc(k + 2); in mpi_mod_barrett()
138 mpi_lshift_limbs(ctx->r3, k + 1); in mpi_mod_barrett()