diff options
Diffstat (limited to 'cmds.c')
-rw-r--r-- | cmds.c | 19 |
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} }; |