sgn.cpp 316 B

12345678910111213141516171819202122232425262728293031
  1. #include "defs.h"
  2. void
  3. eval_sgn(void)
  4. {
  5. push(cadr(p1));
  6. eval();
  7. sgn();
  8. }
  9. void
  10. sgn(void)
  11. {
  12. save();
  13. p1 = pop();
  14. if (!isnum(p1)) {
  15. push_symbol(SGN);
  16. push(p1);
  17. list(2);
  18. } else if (iszero(p1))
  19. push_integer(0);
  20. else if (isnegativenumber(p1))
  21. push_integer(-1);
  22. else
  23. push_integer(1);
  24. restore();
  25. }