mirror of
https://github.com/louisrubet/rpn
synced 2024-11-17 07:47:50 +01:00
Removed rpn-algebra.h to get closer from RPL category names
This commit is contained in:
parent
777c37e1b6
commit
4b4336520b
1 changed files with 0 additions and 192 deletions
|
@ -1,192 +0,0 @@
|
||||||
void plus()
|
|
||||||
{
|
|
||||||
MIN_ARGUMENTS(2);
|
|
||||||
|
|
||||||
// float
|
|
||||||
if (IS_ARG_TYPE(0, cmd_number))
|
|
||||||
{
|
|
||||||
ARG_MUST_BE_OF_TYPE(1, cmd_number);
|
|
||||||
//TODO really too slow
|
|
||||||
putf(getf() + getf());
|
|
||||||
}
|
|
||||||
// binary
|
|
||||||
else if (IS_ARG_TYPE(0, cmd_binary))
|
|
||||||
{
|
|
||||||
ARG_MUST_BE_OF_TYPE(1, cmd_binary);
|
|
||||||
//TODO really too slow
|
|
||||||
putb(getb() + getb());
|
|
||||||
}
|
|
||||||
//TODO
|
|
||||||
#if 0
|
|
||||||
// string
|
|
||||||
else if (IS_ARG_TYPE(0, cmd_string))
|
|
||||||
{
|
|
||||||
ARG_MUST_BE_OF_TYPE(1, cmd_string);
|
|
||||||
string& second = *((ostring*)_stack->back())->_value;
|
|
||||||
_stack->pop_back();
|
|
||||||
*((ostring*)_stack->back())->_value += second;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
else
|
|
||||||
ERR_CONTEXT(ret_bad_operand_type);
|
|
||||||
}
|
|
||||||
|
|
||||||
void minus()
|
|
||||||
{
|
|
||||||
MIN_ARGUMENTS(2);
|
|
||||||
|
|
||||||
// float
|
|
||||||
if (IS_ARG_TYPE(0, cmd_number))
|
|
||||||
{
|
|
||||||
ARG_MUST_BE_OF_TYPE(1, cmd_number);
|
|
||||||
//TODO really too slow
|
|
||||||
floating_t first = getf();
|
|
||||||
putf(getf() - first);
|
|
||||||
}
|
|
||||||
// binary
|
|
||||||
else if (IS_ARG_TYPE(0, cmd_binary))
|
|
||||||
{
|
|
||||||
ARG_MUST_BE_OF_TYPE(1, cmd_binary);
|
|
||||||
//TODO really too slow
|
|
||||||
integer_t first = getb();
|
|
||||||
putb(getb() - first);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
ERR_CONTEXT(ret_bad_operand_type);
|
|
||||||
}
|
|
||||||
|
|
||||||
void mul()
|
|
||||||
{
|
|
||||||
// float
|
|
||||||
if (IS_ARG_TYPE(0, cmd_number))
|
|
||||||
{
|
|
||||||
ARG_MUST_BE_OF_TYPE(1, cmd_number);
|
|
||||||
//TODO really too slow
|
|
||||||
putf(getf() * getf());
|
|
||||||
}
|
|
||||||
// binary
|
|
||||||
else if (IS_ARG_TYPE(0, cmd_binary))
|
|
||||||
{
|
|
||||||
ARG_MUST_BE_OF_TYPE(1, cmd_binary);
|
|
||||||
//TODO really too slow
|
|
||||||
putb(getb() * getb());
|
|
||||||
}
|
|
||||||
else
|
|
||||||
ERR_CONTEXT(ret_bad_operand_type);
|
|
||||||
}
|
|
||||||
|
|
||||||
void div()
|
|
||||||
{
|
|
||||||
MIN_ARGUMENTS(2);
|
|
||||||
|
|
||||||
// float
|
|
||||||
if (IS_ARG_TYPE(0, cmd_number))
|
|
||||||
{
|
|
||||||
ARG_MUST_BE_OF_TYPE(1, cmd_number);
|
|
||||||
//TODO really too slow
|
|
||||||
|
|
||||||
floating_t first = getf();
|
|
||||||
// arithmetic faults are managed by c++
|
|
||||||
putf(getf() / first);
|
|
||||||
}
|
|
||||||
// binary
|
|
||||||
else if (IS_ARG_TYPE(0, cmd_binary))
|
|
||||||
{
|
|
||||||
ARG_MUST_BE_OF_TYPE(1, cmd_binary);
|
|
||||||
if (((binary*)_stack->get_obj(0))->_value == 0)
|
|
||||||
{
|
|
||||||
ERR_CONTEXT(ret_div_by_zero);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
//TODO really too slow
|
|
||||||
integer_t first = getb();
|
|
||||||
putb(getb() / first);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
ERR_CONTEXT(ret_bad_operand_type);
|
|
||||||
}
|
|
||||||
|
|
||||||
void neg()
|
|
||||||
{
|
|
||||||
MIN_ARGUMENTS(1);
|
|
||||||
|
|
||||||
// float
|
|
||||||
if (IS_ARG_TYPE(0, cmd_number))
|
|
||||||
putf(-getf());
|
|
||||||
// binary
|
|
||||||
else if (IS_ARG_TYPE(0, cmd_binary))
|
|
||||||
putb(-getb());
|
|
||||||
else
|
|
||||||
ERR_CONTEXT(ret_bad_operand_type);
|
|
||||||
}
|
|
||||||
|
|
||||||
void inv()
|
|
||||||
{
|
|
||||||
MIN_ARGUMENTS(1);
|
|
||||||
ARG_MUST_BE_OF_TYPE(0, cmd_number);
|
|
||||||
|
|
||||||
// arithmetic faults are managed by c++
|
|
||||||
putf(1 / getf());
|
|
||||||
}
|
|
||||||
|
|
||||||
void purcent()
|
|
||||||
{
|
|
||||||
MIN_ARGUMENTS(2);
|
|
||||||
ARG_MUST_BE_OF_TYPE(0, cmd_number);
|
|
||||||
ARG_MUST_BE_OF_TYPE(1, cmd_number);
|
|
||||||
|
|
||||||
putf((getf() * getf()) / 100);
|
|
||||||
}
|
|
||||||
|
|
||||||
void purcentCH()
|
|
||||||
{
|
|
||||||
MIN_ARGUMENTS(2);
|
|
||||||
ARG_MUST_BE_OF_TYPE(0, cmd_number);
|
|
||||||
ARG_MUST_BE_OF_TYPE(1, cmd_number);
|
|
||||||
|
|
||||||
// arithmetic faults are managed by c++
|
|
||||||
floating_t first = getf();
|
|
||||||
putf((100 * first) / getf());
|
|
||||||
}
|
|
||||||
|
|
||||||
void power()
|
|
||||||
{
|
|
||||||
MIN_ARGUMENTS(2);
|
|
||||||
ARG_MUST_BE_OF_TYPE(0, cmd_number);
|
|
||||||
ARG_MUST_BE_OF_TYPE(1, cmd_number);
|
|
||||||
|
|
||||||
// arithmetic faults are managed by c++
|
|
||||||
floating_t first = getf();
|
|
||||||
putf(powl(getf(), first));
|
|
||||||
}
|
|
||||||
|
|
||||||
void squareroot()
|
|
||||||
{
|
|
||||||
MIN_ARGUMENTS(1);
|
|
||||||
ARG_MUST_BE_OF_TYPE(0, cmd_number);
|
|
||||||
|
|
||||||
// arithmetic faults are managed by c++
|
|
||||||
putf(sqrtl(getf()));
|
|
||||||
}
|
|
||||||
|
|
||||||
void square()
|
|
||||||
{
|
|
||||||
MIN_ARGUMENTS(1);
|
|
||||||
ARG_MUST_BE_OF_TYPE(0, cmd_number);
|
|
||||||
|
|
||||||
floating_t first = getf();
|
|
||||||
putf(first * first);
|
|
||||||
}
|
|
||||||
|
|
||||||
void modulo()
|
|
||||||
{
|
|
||||||
MIN_ARGUMENTS(2);
|
|
||||||
ARG_MUST_BE_OF_TYPE(0, cmd_number);
|
|
||||||
ARG_MUST_BE_OF_TYPE(1, cmd_number);
|
|
||||||
|
|
||||||
// arithmetic faults are managed by c++
|
|
||||||
floating_t first = getf();
|
|
||||||
putf(fmodl(getf(), first));
|
|
||||||
}
|
|
Loading…
Reference in a new issue