33 BN_ULONG mask, BN_ULONG *
tmp,
38 a[
num - 1] |= carry << (BN_BITS2-1);
43 BN_ULONG *
tmp,
size_t num) {
51 size_t width =
x->width >
y->width ?
x->width :
y->width;
64 if (
u == NULL ||
v == NULL ||
tmp == NULL ||
75 unsigned x_bits =
x->width * BN_BITS2, y_bits =
y->width * BN_BITS2;
76 unsigned num_iters = x_bits + y_bits;
77 if (num_iters < x_bits) {
83 for (
unsigned i = 0;
i < num_iters;
i++) {
87 BN_ULONG u_less_than_v =
96 assert(!(u_is_odd & v_is_odd));
99 shift += 1 & (~u_is_odd & ~v_is_odd);
110 for (
size_t i = 0;
i <
width;
i++) {
140 if (
gcd->width == 0) {
141 *out_relatively_prime = 0;
143 BN_ULONG mask = shift | (
gcd->d[0] ^ 1);
144 for (
int i = 1;
i <
gcd->width;
i++) {
147 *out_relatively_prime = mask == 0;
205 size_t n_width =
n->width, a_width =
a->width;
206 if (a_width > n_width) {
220 if (
u == NULL ||
v == NULL ||
A == NULL || B == NULL ||
C == NULL ||
221 D == NULL ||
tmp == NULL || tmp2 == NULL ||
243 unsigned a_bits = a_width * BN_BITS2, n_bits = n_width * BN_BITS2;
244 unsigned num_iters = a_bits + n_bits;
245 if (num_iters < a_bits) {
263 for (
unsigned i = 0;
i < num_iters;
i++) {
267 BN_ULONG v_less_than_u =
290 assert(u_is_even != v_is_even);
294 BN_ULONG A_or_B_is_odd =
304 BN_ULONG C_or_D_is_odd =