# RPNC Rpnc is a simple RPN calculator where everything is passed from the command line. There isn't any interactive mode. It is coded in C and has no dependencies. It is distributed under the terms of the Berkeley Software Distribution License.

## Installation

You can download the latest tagged version which is 0.3 and install it with :

\$ make
\$ sudo make install

You can also pull the code directly from git :

\$ git clone git://github.com/gawen947/rpnc
\$ cd rpnc
\$ make
\$ sudo make install

Tarballs are also available at github.com/gawen947/rpnc/tarball/master
Though you can only get tagged versions from the master branch, which may be older than what you'll have through git.

## Competitors

Orpie is a great and far more powerful RPN calculator for the console and could be found at pessimization.com/software/orpie. Although it is mean to be used in an interactive way with an ncurse interface. It is written in OCaml.

## Documentation

Everything is passed from the command line. There isn't any interactive mode.

This calculator use Reverse Polish Notation en.wikipedia.org/wiki/Reverse_Polish_notation. For example, consider the following infix expression:

5 + (3 * 4) / 6 - 2

This could be evaluated with rpnc using those arguments:

\$ rpnc 5 3 4 * 6 / 2 - +

In order to avoid the shell expander another option is:

\$ rpnc 5 3 4 . 6 / 2 - +

Results are printed to standard output. Intermediate results could be shown with the = operator. The program return the number of elements (operators and values) left into the stack. If the whole expression has been evaluated it returns zero.

The operators list follows:

```    +         Addition
-         Substraction
*         Multiplication
.         Multiplication
/         Division
^         Raise to a power
**        Raise to a power
pow       Raise to a power
atan2     Inverse tangent of a quotient
hypot     Hypotenuse by the Pythagorean formula
mod       Modulo operation
inv       Multiplicative inverse
sqrt      Square root
cbrt      Cube root
sin       Sinus of a radian angle
cos       Cosine of a radian angle
tan       Tangent of a radian angle
sinh      Hyperbolic sine
cosh      Hyperbolic cosine
tanh      Hyperbolic tangent
asinh     Inverse hyperbolic sine
acosh     Inverse hyperbolic cosine
atanh     Inverse hyperbolic tangent
exp       Natural exponential
exp2      Base two exponential
expm1     Natural exponential minus one
log       Natural logarithm
log10     Base-10 logarithm
log2      Base two logarithm
logb      Obtains the exponent
log1p     Add the natural logarithm of one
abs       Absolute value
erf       Error function
erfc      Complementary error function
lgamma    Natural logarithm of the absolute value of the gamma function
tgamma    True gamma function
=         Show intermediate results
pi        Pi constant
c         Speed of light (m/s)
e         Electron charge (C)
me        Electron mass (kg)
mp        Proton mass (kg)
G         Gravitational constant (N.m^2/kg^2)
g         Standard gravity (m/s^2)
h         Planck constant (J.s)
hbar      Dirac constant (J.s)
eps0      Vacuum permittivity (F/m)
mu0       Vacuum permeability (H/m)
stdT      Standard temperature (K)
stdP      Standard pression (Pa)
INF       Infinity
+INF      Infinity
-INF      Minus infinity
version   Display version
help      Display usage
operators Display operators
```

When an operation raises a floating point exception rpnc exits with an error and displays the offending operator along with a message describing the error. Whether it returns successfully or not, the exit code of rpnc represents the number of items left on the stack when the error occurred.

## TODO

• Separate graphical and ncurses interface (grpnc, nrpnc).
• Use an optimized tree parser instead of strcmp.
• A Debian package and FreeBSD port would be more than welcome.

## Bugs

You can report bugs, send patches and pull request on the github page at github.com/gawen947/rpnc/issues.
You can also report bugs, send patches and request for new features at my email address .