33 return mpz_get_si(*
b);
39 mpz_set_str(*
b,
str, 16);
42 mpz_set_str(*
b,
str, 16);
43 mpz_mul_si(*
b, *
b, -1);
48 char *
tmp = mpz_get_str(
NULL, 16, *
b);
76 mpz_tdiv_q(*
c, *
a, *
b);
84 mpz_tdiv_qr(*
c, *
d, *
a, *
b);
100 mpz_mul_2exp(*
c, *
a, nbits);
104 mpz_tdiv_q_2exp(*
c, *
a, nbits);
108 int res = mpz_cmp(*
a, *
b);
111 }
else if (res < 0) {
119 return mpz_cmp_ui(*
a, 0) == 0;
124 mpz_init_set_si(
tmp, 1);
125 mpz_add(*
a, *
a,
tmp);
130 mpz_init_set_si(
tmp, 1);
131 mpz_sub(*
a, *
a,
tmp);
135 mpz_powm(*
c, *
a, *
b, *
m);
RZ_API char * rz_big_to_hexstr(RzNumBig *b)
RZ_API void rz_big_dec(RzNumBig *a)
RZ_API int rz_big_cmp(RzNumBig *a, RzNumBig *b)
RZ_API void rz_big_assign(RzNumBig *dst, RzNumBig *src)
RZ_API void rz_big_and(RzNumBig *c, RzNumBig *a, RzNumBig *b)
RZ_API void rz_big_xor(RzNumBig *c, RzNumBig *a, RzNumBig *b)
RZ_API void rz_big_fini(RzNumBig *b)
RZ_API void rz_big_add(RzNumBig *c, RzNumBig *a, RzNumBig *b)
RZ_API void rz_big_isqrt(RzNumBig *c, RzNumBig *a)
RZ_API void rz_big_from_hexstr(RzNumBig *b, const char *str)
RZ_API void rz_big_divmod(RzNumBig *c, RzNumBig *d, RzNumBig *a, RzNumBig *b)
RZ_API void rz_big_free(RzNumBig *b)
RZ_API void rz_big_rshift(RzNumBig *c, RzNumBig *a, size_t nbits)
RZ_API void rz_big_lshift(RzNumBig *c, RzNumBig *a, size_t nbits)
RZ_API void rz_big_or(RzNumBig *c, RzNumBig *a, RzNumBig *b)
RZ_API st64 rz_big_to_int(RzNumBig *b)
RZ_API RzNumBig * rz_big_new(void)
RZ_API void rz_big_powm(RzNumBig *c, RzNumBig *a, RzNumBig *b, RzNumBig *m)
RZ_API void rz_big_div(RzNumBig *c, RzNumBig *a, RzNumBig *b)
RZ_API void rz_big_init(RzNumBig *b)
RZ_API void rz_big_sub(RzNumBig *c, RzNumBig *a, RzNumBig *b)
RZ_API void rz_big_mod(RzNumBig *c, RzNumBig *a, RzNumBig *b)
RZ_API void rz_big_inc(RzNumBig *a)
RZ_API void rz_big_from_int(RzNumBig *b, st64 v)
RZ_API void rz_big_mul(RzNumBig *c, RzNumBig *a, RzNumBig *b)
RZ_API int rz_big_is_zero(RzNumBig *a)
RZ_API void Ht_() free(HtName_(Ht) *ht)
RZ_API char * rz_str_newf(const char *fmt,...) RZ_PRINTF_CHECK(1
RZ_API bool rz_str_startswith(RZ_NONNULL const char *str, RZ_NONNULL const char *needle)
Checks if a string starts with a specifc sequence of characters (case sensitive)