about summary refs log tree commit diff stats
path: root/cmds.c
diff options
context:
space:
mode:
Diffstat (limited to 'cmds.c')
-rw-r--r--cmds.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/cmds.c b/cmds.c
index 2a88041..7960834 100644
--- a/cmds.c
+++ b/cmds.c
@@ -16,9 +16,28 @@ stack ffloor(stack stack) {
   return stack;
 }
 
+stack flogB(stack stack) {
+  stack.val[stack.count-2] = log2(stack.val[stack.count-2])/log2(stack.val[stack.count-1]);
+  stack.val[--stack.count] = 0;
+  return stack;
+}
+
+stack fnegate(stack stack) {
+  stack.val[stack.count-1] *= -1;
+  return stack;
+}
+
+stack fpop(stack stack) {
+  stack.val[--stack.count] = 0;
+  return stack;
+}
+
 command CMD_LIST[] = {
+  {"p", &fpop, "pop last element"},
   {"ceil", &fceil, "truncate to the next integer"},
   {"floor", &ffloor, "truncate to the previous integer"},
+  {"log", &flogB, "calculate logarithm in base LAST_NUM of LAST_NUM-1"},
+  {"neg", &fnegate, "change last element's sign"},
   {0, 0, 0}
 };