1 #include "tommath_private.h"
3 /* LibTomMath, multiple-precision integer library -- Tom St Denis */
4 /* SPDX-License-Identifier: Unlicense */
6 /* shift right by a certain bit count with sign extension */
7 mp_err
mp_signed_rsh(const mp_int
*a
, int b
, mp_int
*c
)
11 return mp_div_2d(a
, b
, c
, NULL
);
14 if ((err
= mp_add_d(a
, 1uL, c
)) != MP_OKAY
) {
18 err
= mp_div_2d(c
, b
, c
, NULL
);
19 return (err
== MP_OKAY
) ? mp_sub_d(c
, 1uL, c
) : err
;