Merge pull request #578 from PX4/fix_mp_prime_strong_lucas_lefridge_compilation
[libtommath.git] / mp_reduce_2k_setup_l.c
blobb647c9d887d11c66b972244f3ee5437df52e790c
1 #include "tommath_private.h"
2 #ifdef MP_REDUCE_2K_SETUP_L_C
3 /* LibTomMath, multiple-precision integer library -- Tom St Denis */
4 /* SPDX-License-Identifier: Unlicense */
6 /* determines the setup value */
7 mp_err mp_reduce_2k_setup_l(const mp_int *a, mp_int *d)
9 mp_err err;
10 mp_int tmp;
12 if ((err = mp_init(&tmp)) != MP_OKAY) {
13 return err;
16 if ((err = mp_2expt(&tmp, mp_count_bits(a))) != MP_OKAY) {
17 goto LBL_ERR;
20 if ((err = s_mp_sub(&tmp, a, d)) != MP_OKAY) {
21 goto LBL_ERR;
24 LBL_ERR:
25 mp_clear(&tmp);
26 return err;
28 #endif