86 mpfr_set(
dst->number.mf,
src->number.mf, MPFR_DEFAULT_RND);
87 dst->operation =
src->operation;
102 mpfr_clear(
stack->node.number.mf);
118 mpfr_init_set(
z->node.number.mf,
op->number.mf, MPFR_DEFAULT_RND);
119 z->node.operation =
op->operation;
134typedef void (*exec_call_t)
143 mpfr_get_z(ai,
a->mf, MPFR_DEFAULT_RND);
144 mpfr_get_z(bi,
b->mf, MPFR_DEFAULT_RND);
146 mpfr_set_z(
r->mf, ai, MPFR_DEFAULT_RND);
155 mpfr_add(
r->mf,
a->mf,
b->mf, MPFR_DEFAULT_RND);
160 mpfr_sub(
r->mf,
a->mf,
b->mf, MPFR_DEFAULT_RND);
165 mpfr_mul(
r->mf,
a->mf,
b->mf, MPFR_DEFAULT_RND);
170 if (mpfr_sgn(
b->mf) == 0)
173 mpfr_div(
r->mf,
a->mf,
b->mf, MPFR_DEFAULT_RND);
195 mpfr_trunc(
r->mf,
b->mf);
196 if (mpfr_fits_ulong_p(
r->mf, MPFR_DEFAULT_RND) == 0)
199 e = mpfr_get_ui(
r->mf, MPFR_DEFAULT_RND);
200 mpfr_mul_2exp(
r->mf,
a->mf,
e, MPFR_DEFAULT_RND);
208 mpfr_trunc(
r->mf,
b->mf);
209 if (mpfr_fits_ulong_p(
r->mf, MPFR_DEFAULT_RND) == 0)
212 e = mpfr_get_ui(
r->mf, MPFR_DEFAULT_RND);
213 mpfr_div_2exp(
r->mf,
a->mf,
e, MPFR_DEFAULT_RND);
219 mpfr_pow(
r->mf,
a->mf,
b->mf, MPFR_DEFAULT_RND);
224 if (mpfr_sgn(
b->mf) == 0)
230 mpfr_set(tmp,
b->mf, MPFR_DEFAULT_RND);
231 mpfr_ui_div(tmp, 1, tmp, MPFR_DEFAULT_RND);
232 mpfr_pow(
r->mf,
a->mf, tmp, MPFR_DEFAULT_RND);
255 if (mpfr_sgn(
b->mf) == 0)
263 if (mpfr_sgn(
b->mf) == 0)
275 mpfr_set(tmp,
b->mf, MPFR_DEFAULT_RND);
276 mpfr_div_ui(tmp, tmp, 100, MPFR_DEFAULT_RND);
277 mpfr_add_ui(tmp, tmp, 1, MPFR_DEFAULT_RND);
278 mpfr_mul(
r->mf,
a->mf, tmp, MPFR_DEFAULT_RND);
287 mpfr_set(tmp,
b->mf, MPFR_DEFAULT_RND);
288 mpfr_div_ui(tmp, tmp, 100, MPFR_DEFAULT_RND);
289 mpfr_sub_ui(tmp, tmp, 1, MPFR_DEFAULT_RND);
290 mpfr_mul(
r->mf,
a->mf, tmp, MPFR_DEFAULT_RND);
296 mpfr_mul(
r->mf,
a->mf,
b->mf, MPFR_DEFAULT_RND);
297 mpfr_div_ui(
r->mf,
r->mf, 100, MPFR_DEFAULT_RND);
302 if (mpfr_sgn(
b->mf) == 0)
305 mpfr_mul_ui(
r->mf,
a->mf, 100, MPFR_DEFAULT_RND);
306 mpfr_div(
r->mf,
r->mf,
b->mf, MPFR_DEFAULT_RND);
333 mpfr_init(
ip.number.mf);
347 mpfr_clear(
ip.number.mf);
362 mpfr_clear(
ip.number.mf);
385 mpfr_clear(tmp.
number.mf);
457 mpf_set_default_prec(512);
458 mpfr_set_default_prec(512);
void rpn_free(calc_number_t *c)
void apply_int_mask(calc_number_t *a)
void rpn_alloc(calc_number_t *c)
void rpn_zero(calc_number_t *c)
void rpn_copy(calc_number_t *dst, calc_number_t *src)
GLdouble GLdouble GLdouble r
GLboolean GLboolean GLboolean b
GLboolean GLboolean GLboolean GLboolean a
static unsigned int number
static HMODULE MODULEINFO DWORD cb
static unsigned __int64 next
void run_operator(calc_node_t *result, calc_node_t *a, calc_node_t *b, unsigned int operation)
void start_rpn_engine(void)
static void rpn_mod_i(calc_number_t *r, calc_number_t *a, calc_number_t *b)
static void rpn_div_p(calc_number_t *r, calc_number_t *a, calc_number_t *b)
static void rpn_sub_p(calc_number_t *r, calc_number_t *a, calc_number_t *b)
static void rpn_sub_f(calc_number_t *r, calc_number_t *a, calc_number_t *b)
static void rpn_pow_f(calc_number_t *r, calc_number_t *a, calc_number_t *b)
static void node_copy(calc_node_t *dst, calc_node_t *src)
static calc_node_t * pop(void)
static void rpn_sqr_f(calc_number_t *r, calc_number_t *a, calc_number_t *b)
void exec_call_t __GMP_PROTO((mpz_ptr, mpz_srcptr, mpz_srcptr))
static const calc_operator_t operator_list[]
static void rpn_sub_i(calc_number_t *r, calc_number_t *a, calc_number_t *b)
void exec_change_infix(void)
static void rpn_mul_f(calc_number_t *r, calc_number_t *a, calc_number_t *b)
static void rpn_mul_p(calc_number_t *r, calc_number_t *a, calc_number_t *b)
void(* operator_call)(calc_number_t *, calc_number_t *, calc_number_t *)
static void rpn_or_f(calc_number_t *r, calc_number_t *a, calc_number_t *b)
static void rpn_mul_i(calc_number_t *r, calc_number_t *a, calc_number_t *b)
static void rpn_shr_f(calc_number_t *r, calc_number_t *a, calc_number_t *b)
static void rpn_and_f(calc_number_t *r, calc_number_t *a, calc_number_t *b)
static void rpn_div_i(calc_number_t *r, calc_number_t *a, calc_number_t *b)
static void rpn_add_i(calc_number_t *r, calc_number_t *a, calc_number_t *b)
static void rpn_shl_f(calc_number_t *r, calc_number_t *a, calc_number_t *b)
int eval_parent_count(void)
static void rpn_add_f(calc_number_t *r, calc_number_t *a, calc_number_t *b)
static void rpn_xor_f(calc_number_t *r, calc_number_t *a, calc_number_t *b)
int exec_infix2postfix(calc_number_t *number, unsigned int func)
static void rpn_exec_int(calc_number_t *r, calc_number_t *a, calc_number_t *b, exec_call_t cb)
static void rpn_div_f(calc_number_t *r, calc_number_t *a, calc_number_t *b)
void exec_closeparent(calc_number_t *number)
static int is_stack_empty(void)
static void rpn_add_p(calc_number_t *r, calc_number_t *a, calc_number_t *b)
static void evalStack(calc_number_t *number)
static stack_node_t * stack
void stop_rpn_engine(void)
static void push(calc_node_t *op)
unsigned int prev_operator
unsigned int last_operator