From a92877403ac522d17602ae24782b44a99a268539 Mon Sep 17 00:00:00 2001 From: Eric Andersen Date: Wed, 22 Oct 2003 11:24:39 +0000 Subject: Goetz Bock writes: Dear list, during my quest do pack busybox into an RPM, I've fixed a small bug (missing \n) in dc's usage. And added two additional operations: mod and exp/power. Feel free to drop them. --- miscutils/dc.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'miscutils/dc.c') diff --git a/miscutils/dc.c b/miscutils/dc.c index 451423c62..f574ae4a0 100644 --- a/miscutils/dc.c +++ b/miscutils/dc.c @@ -44,6 +44,13 @@ static void mul(void) push(pop() * pop()); } +static void power(void) +{ + double topower = pop(); + + push(pow(pop(), topower)); +} + static void divide(void) { double divisor = pop(); @@ -51,6 +58,13 @@ static void divide(void) push(pop() / divisor); } +static void mod(void) +{ + unsigned int d = pop(); + + push((unsigned int) pop() % d); +} + static void and(void) { push((unsigned int) pop() & (unsigned int) pop()); @@ -119,10 +133,16 @@ static const struct op operators[] = { {"mul", mul}, {"/", divide}, {"div", divide}, + {"**", power}, + {"exp", power}, + {"pow", power}, + {"%", mod}, + {"mod", mod}, {"and", and}, {"or", or}, {"not", not}, {"eor", eor}, + {"xor", eor}, {"p", print_no_pop}, {"f", print_stack_no_pop}, {"o", set_output_base}, -- cgit v1.2.3