mirror of
https://github.com/louisrubet/rpn
synced 2025-01-08 17:24:44 +01:00
97 lines
2.3 KiB
C
97 lines
2.3 KiB
C
void rpn_e(void)
|
|
{
|
|
number num;
|
|
CHECK_MPFR(mpfr_const_euler(&num._value.mpfr, s_mpfr_rnd));
|
|
_stack->push_back(&num, num.size(), cmd_number);
|
|
((number*)_stack->back())->ensure_significand();
|
|
}
|
|
|
|
void rpn_log()
|
|
{
|
|
MIN_ARGUMENTS(1);
|
|
ARG_MUST_BE_OF_TYPE(0, cmd_number);
|
|
|
|
floating_t* left = &((number*)_stack->get_obj(0))->_value;
|
|
CHECK_MPFR(mpfr_log10(&left->mpfr, &left->mpfr, s_mpfr_rnd));
|
|
}
|
|
|
|
void rpn_alog()
|
|
{
|
|
MIN_ARGUMENTS(1);
|
|
ARG_MUST_BE_OF_TYPE(0, cmd_number);
|
|
|
|
floating_t* left = &((number*)_stack->get_obj(0))->_value;
|
|
CHECK_MPFR(mpfr_exp10(&left->mpfr, &left->mpfr, s_mpfr_rnd));
|
|
}
|
|
|
|
void rpn_ln()
|
|
{
|
|
MIN_ARGUMENTS(1);
|
|
ARG_MUST_BE_OF_TYPE(0, cmd_number);
|
|
|
|
floating_t* left = &((number*)_stack->get_obj(0))->_value;
|
|
CHECK_MPFR(mpfr_log(&left->mpfr, &left->mpfr, s_mpfr_rnd));
|
|
}
|
|
|
|
void rpn_exp()
|
|
{
|
|
MIN_ARGUMENTS(1);
|
|
ARG_MUST_BE_OF_TYPE(0, cmd_number);
|
|
|
|
floating_t* left = &((number*)_stack->get_obj(0))->_value;
|
|
CHECK_MPFR(mpfr_exp(&left->mpfr, &left->mpfr, s_mpfr_rnd));
|
|
}
|
|
|
|
void rpn_sinh()
|
|
{
|
|
MIN_ARGUMENTS(1);
|
|
ARG_MUST_BE_OF_TYPE(0, cmd_number);
|
|
|
|
floating_t* left = &((number*)_stack->get_obj(0))->_value;
|
|
CHECK_MPFR(mpfr_sinh(&left->mpfr, &left->mpfr, s_mpfr_rnd));
|
|
}
|
|
|
|
void rpn_asinh()
|
|
{
|
|
MIN_ARGUMENTS(1);
|
|
ARG_MUST_BE_OF_TYPE(0, cmd_number);
|
|
|
|
floating_t* left = &((number*)_stack->get_obj(0))->_value;
|
|
CHECK_MPFR(mpfr_asinh(&left->mpfr, &left->mpfr, s_mpfr_rnd));
|
|
}
|
|
|
|
void rpn_cosh()
|
|
{
|
|
MIN_ARGUMENTS(1);
|
|
ARG_MUST_BE_OF_TYPE(0, cmd_number);
|
|
|
|
floating_t* left = &((number*)_stack->get_obj(0))->_value;
|
|
CHECK_MPFR(mpfr_cosh(&left->mpfr, &left->mpfr, s_mpfr_rnd));
|
|
}
|
|
|
|
void rpn_acosh()
|
|
{
|
|
MIN_ARGUMENTS(1);
|
|
ARG_MUST_BE_OF_TYPE(0, cmd_number);
|
|
|
|
floating_t* left = &((number*)_stack->get_obj(0))->_value;
|
|
CHECK_MPFR(mpfr_cosh(&left->mpfr, &left->mpfr, s_mpfr_rnd));
|
|
}
|
|
|
|
void rpn_tanh()
|
|
{
|
|
MIN_ARGUMENTS(1);
|
|
ARG_MUST_BE_OF_TYPE(0, cmd_number);
|
|
|
|
floating_t* left = &((number*)_stack->get_obj(0))->_value;
|
|
CHECK_MPFR(mpfr_tanh(&left->mpfr, &left->mpfr, s_mpfr_rnd));
|
|
}
|
|
|
|
void rpn_atanh()
|
|
{
|
|
MIN_ARGUMENTS(1);
|
|
ARG_MUST_BE_OF_TYPE(0, cmd_number);
|
|
|
|
floating_t* left = &((number*)_stack->get_obj(0))->_value;
|
|
CHECK_MPFR(mpfr_atanh(&left->mpfr, &left->mpfr, s_mpfr_rnd));
|
|
}
|