#include "imrat.h"
#include <assert.h>
#include <ctype.h>
#include <stdlib.h>
#include <string.h>
#define MP_NUMER_SIGN(Q) …
#define MP_DENOM_SIGN(Q) …
#define TEMP(K) …
#define SETUP(E, C) …
static mp_result s_rat_reduce(mp_rat r);
static mp_result s_rat_combine(mp_rat a, mp_rat b, mp_rat c,
mp_result (*comb_f)(mp_int, mp_int, mp_int));
mp_result mp_rat_init(mp_rat r) { … }
mp_rat mp_rat_alloc(void) { … }
mp_result mp_rat_reduce(mp_rat r) { … }
mp_result mp_rat_init_size(mp_rat r, mp_size n_prec, mp_size d_prec) { … }
mp_result mp_rat_init_copy(mp_rat r, mp_rat old) { … }
mp_result mp_rat_set_value(mp_rat r, mp_small numer, mp_small denom) { … }
mp_result mp_rat_set_uvalue(mp_rat r, mp_usmall numer, mp_usmall denom) { … }
void mp_rat_clear(mp_rat r) { … }
void mp_rat_free(mp_rat r) { … }
mp_result mp_rat_numer(mp_rat r, mp_int z) { … }
mp_int mp_rat_numer_ref(mp_rat r) { … }
mp_result mp_rat_denom(mp_rat r, mp_int z) { … }
mp_int mp_rat_denom_ref(mp_rat r) { … }
mp_sign mp_rat_sign(mp_rat r) { … }
mp_result mp_rat_copy(mp_rat a, mp_rat c) { … }
void mp_rat_zero(mp_rat r) { … }
mp_result mp_rat_abs(mp_rat a, mp_rat c) { … }
mp_result mp_rat_neg(mp_rat a, mp_rat c) { … }
mp_result mp_rat_recip(mp_rat a, mp_rat c) { … }
mp_result mp_rat_add(mp_rat a, mp_rat b, mp_rat c) { … }
mp_result mp_rat_sub(mp_rat a, mp_rat b, mp_rat c) { … }
mp_result mp_rat_mul(mp_rat a, mp_rat b, mp_rat c) { … }
mp_result mp_rat_div(mp_rat a, mp_rat b, mp_rat c) { … }
mp_result mp_rat_add_int(mp_rat a, mp_int b, mp_rat c) { … }
mp_result mp_rat_sub_int(mp_rat a, mp_int b, mp_rat c) { … }
mp_result mp_rat_mul_int(mp_rat a, mp_int b, mp_rat c) { … }
mp_result mp_rat_div_int(mp_rat a, mp_int b, mp_rat c) { … }
mp_result mp_rat_expt(mp_rat a, mp_small b, mp_rat c) { … }
int mp_rat_compare(mp_rat a, mp_rat b) { … }
int mp_rat_compare_unsigned(mp_rat a, mp_rat b) { … }
int mp_rat_compare_zero(mp_rat r) { … }
int mp_rat_compare_value(mp_rat r, mp_small n, mp_small d) { … }
bool mp_rat_is_integer(mp_rat r) { … }
mp_result mp_rat_to_ints(mp_rat r, mp_small *num, mp_small *den) { … }
mp_result mp_rat_to_string(mp_rat r, mp_size radix, char *str, int limit) { … }
mp_result mp_rat_to_decimal(mp_rat r, mp_size radix, mp_size prec,
mp_round_mode round, char *str, int limit) { … }
mp_result mp_rat_string_len(mp_rat r, mp_size radix) { … }
mp_result mp_rat_decimal_len(mp_rat r, mp_size radix, mp_size prec) { … }
mp_result mp_rat_read_string(mp_rat r, mp_size radix, const char *str) { … }
mp_result mp_rat_read_cstring(mp_rat r, mp_size radix, const char *str,
char **end) { … }
mp_result mp_rat_read_ustring(mp_rat r, mp_size radix, const char *str,
char **end) { … }
mp_result mp_rat_read_decimal(mp_rat r, mp_size radix, const char *str) { … }
mp_result mp_rat_read_cdecimal(mp_rat r, mp_size radix, const char *str,
char **end) { … }
static mp_result s_rat_reduce(mp_rat r) { … }
static mp_result s_rat_combine(mp_rat a, mp_rat b, mp_rat c,
mp_result (*comb_f)(mp_int, mp_int, mp_int)) { … }