GNU dc is a reverse-polish desk calculator which supports unlimited precision arithmetic. It also allows you to define and call macros.
A reverse-polish calculator stores numbers on a stack. Entering a number pushes it on the stack. Arithmetic operations pop arguments off the stack and push the results.