#133: added complex im

This commit is contained in:
Louis Rubet 2017-06-16 10:55:37 +02:00
parent 7c870f42c4
commit 96da73ca3e
3 changed files with 30 additions and 1 deletions

View file

@ -59,6 +59,7 @@ program::keyword_t program::s_keywords[] =
//COMPLEX
{ cmd_keyword, "re", &program::re, "complex real part" },
{ cmd_keyword, "im", &program::im, "complex imaginary part" },
//TEST
{ cmd_undef, "", NULL, "\nTEST"},

View file

@ -7,6 +7,19 @@ void re()
_stack->pop_back();
number* re = (number*)_stack->allocate_back(number::calc_size(), cmd_number);
CHECK_MPFR(mpfr_set(re->_value.mpfr, ((number*)_branch_stack.get_obj(0))->_value.mpfr, floating_t::s_mpfr_rnd));
CHECK_MPFR(mpfr_set(re->_value.mpfr, ((complex*)_branch_stack.get_obj(0))->re()->mpfr, floating_t::s_mpfr_rnd));
_branch_stack.pop_back();
}
void im()
{
MIN_ARGUMENTS(1);
ARG_MUST_BE_OF_TYPE(0, cmd_complex);
stack::copy_and_push_back(*_stack, _stack->size()-1, _branch_stack);
_stack->pop_back();
number* im = (number*)_stack->allocate_back(number::calc_size(), cmd_number);
CHECK_MPFR(mpfr_set(im->_value.mpfr, ((complex*)_branch_stack.get_obj(0))->im()->mpfr, floating_t::s_mpfr_rnd));
_branch_stack.pop_back();
}

View file

@ -122,6 +122,21 @@ re
-> error should be 2
drop
# im (1)
(1.2,3.4) im
-> stack should be 3.4
drop
# im (2)
3 re
-> error should be 3
drop
# im (3)
re
-> error should be 2
drop
# chs
(3.14,6.28) chs
-> stack should be (-3.14,-6.28)