orpie is a console-based RPN calculator with an interactive visual stack.
orpie
CAUTION: while this manpage should be suitable as a quick reference, it may be subject to miscellaneous shortcomings in typesetting. The definitive documentation is the user manual provided with Orpie in PDF format.
This section describes how to use Orpie in its default configuration. After familiarizing yourself with the basic operations as outlined in this section, you may wish to consult the (5) manpage to see how Orpie can be configured to better fit your needs.
In general, you perform calculations by first entering data on to the stack, then executing functions that operate on the stack data. As an example, you can hit 1<enter>2<enter>+ in order to add 1 and 2.
|
| |
| Keypresses | Resulting Entry |
|
| |
| 1.23<enter> | 1.23 |
| 1.23<space>23n<enter> | 1.23e-23 |
| 1.23n<space>23<enter> | -1.23e23 |
|
| |
A complex number is entered by first pressing '(', then entering the real part, then pressing ',' followed by the imaginary part. Alternatively, you can press '(' followed by the magnitude, then '<' followed by the phase angle. The angle will be interpreted in degrees or radians, depending on the current setting of the angle mode (see PERFORMING BASIC COMMAND OPERATIONS). Examples:
|
| |
| Keypresses | Resulting Entry |
|
| |
| (1.23, 4.56<enter> | (1.23, 4.56) |
| (0.7072<45<enter> | (0.500065915655126, 0.50006591... |
| (1.23n,4.56<space>10<enter> | (-1.23, 45600000000) |
|
| |
| 1 | 2 |
| 3 | 4 |
would appear on the stack as [[1, 2][3, 4]].
Examples of matrix entry:
|
| |
| Keypresses | Resulting Entry |
|
| |
| [1,2[3,4<enter> | [[1, 2][3, 4]] |
| [1.2<space>10,0[3n,5n<enter> | [[ 12000000000, 0 ][ -3, -5 ]] |
| [(1,2,3,4[5,6,7,8<enter> | [[ (1, 2), (3, 4) ][ (5, 6), (... |
|
| |
Examples of entering dimensioned data:
|
| |
| Keypresses | Resulting Entry |
|
| |
| 1.234_N*mm^2/s<enter> | 1.234_N*mm^2*s^-1 |
| (2.3,5_s^-4<enter> | (2.3, 5)_s^-4 |
| [1,2[3,4_lbf*in<enter> | [[ 1, 2 ][ 3, 4 ]]_lbf*in |
| _nm<enter> | 1_nm |
|
| |
|
| |
| Keypresses | Resulting Entry |
|
| |
| #123456<enter> | # 123456`d |
| #ffff<space>h<enter> | # 65535`d |
| #10101n<space>b<enter> | # -21`d |
|
| |
Note that integer constants may have unlimited length, and the basic arithmetic operations (addition, subtraction, multiplication, division) will be performed using exact arithmetic when both arguments are integers.
|
| |
| Keypresses | Resulting Entry |
|
| |
| @myvar | @ myvar |
|
| |
Orpie also supports autocompletion of variable names. The help panel displays a list of pre-existing variables that partially match the name currently being entered. You can press '<tab>' to iterate through the list of matching variables.
As a shortcut, keys <f1>-<f12> will enter the variables (``registers'') @ r01 through @ r12.
|
| |
| Data Type | Sample Input String |
|
| |
| integer constant | #12345678`d, where the trailing |
| letter is one of the base characters {b, o, d, h} | |
| real number | -123.45e67 |
| complex number | (1e10, 2) or (1 <90) |
| real matrix | [[1, 2][3.1, 4.5e10]] |
| complex matrix | [[(1, 0), 5][1e10, (2 <90)]] |
| variable | @myvar |
|
| |
Real and complex numbers and matrices may have units appended; just add a units string such as ``_N*m/s'' immediately following the numeric portion of the expression.
Notice that the complex matrix input parser is quite flexible; real and complex matrix elements may be mixed, and cartesian and polar complex formats may be mixed as well.
Multiple stack entries may be specified in the same file, if they are separated by whitespace. For example, entering (1, 2) 1.5 into the editor will cause the complex value (1, 2) to be placed on the stack, followed by the real value 1.5.
The input parser will discard whitespace where possible, so feel free to add any form of whitespace between matrix rows, matrix elements, real and complex components, etc.
|
| |
| Keys | Operations |
|
| |
| + | add last two stack elements |
| - | subtract element 1 from element 2 |
| * | multiply last two stack elements |
| / | divide element 2 by element 1 |
| ^ | raise element 2 to the power of element 1 |
| n | negate last element |
| i | invert last element |
| s | square root function |
| a | absolute value function |
| e | exponential function |
| l | natural logarithm function |
| c | complex conjugate function |
| ! | factorial function |
| % | element 2 mod element 1 |
| S | store element 2 in (variable) element 1 |
| ; | evaluate variable to obtain contents |
|
| |
As a shortcut, function operators will automatically enter any data that you were in the process of entering. So instead of the sequence 2<enter>2<enter>+, you could type simply 2<enter>2+ and the second number would be entered before the addition operation is applied.
As an additional shortcut, any variable names used as function arguments will be evaluated before application of the function. In other words, it is not necessary to evaluate variables before performing arithmetic operations on them.
To activate an abbreviation, press ''' (quote key), followed by the first few letters/digits of the abbreviation, then hit enter. Orpie offers an autocompletion feature for abbreviations, so you only need to type enough of the operation to identify it uniquely. The matching abbreviations will appear in the left panel of the display, to assist you in finding the appropriate operation.
To avoid interface conflicts, abbreviations may be entered only when the entry buffer (the bottom line of the screen) is empty.
The following functions are available as abbreviations:
|
| |
| Abbreviations | Functions |
|
| |
| inv | inverse function |
| pow | raise element 2 to the power of element 1 |
| sq | square last element |
| sqrt | square root function |
| abs | absolute value function |
| exp | exponential function |
| ln | natural logarithm function |
| 10^ | base 10 exponential function |
| log10 | base 10 logarithm function |
| conj | complex conjugate function |
| sin | sine function |
| cos | cosine function |
| tan | tangent function |
| sinh | hyperbolic sine function |
| cosh | hyperbolic cosine function |
| tanh | hyperbolic tangent function |
| asin | arcsine function |
| acos | arccosine function |
| atan | arctangent function |
| asinh | inverse hyperbolic sine function |
| acosh | inverse hyperbolic cosine function |
| atanh | inverse hyperbolic tangent function |
| re | real part of complex number |
| im | imaginary part of complex number |
| gamma | Euler gamma function |
| lngamma | natural log of Euler gamma function |
| erf | error function |
| erfc | complementary error function |
| fact | factorial function |
| gcd | greatest common divisor function |
| lcm | least common multiple function |
| binom | binomial coefficient function |
| perm | permutation function |
| trans | matrix transpose |
| trace | trace of a matrix |
| solvelin | solve a linear system of the form Ax = b |
| mod | element 2 mod element 1 |
| floor | floor function |
| ceil | ceiling function |
| toint | convert a real number to an integer type |
| toreal | convert an integer type to a real number |
| add | add last two elements |
| sub | subtract element 1 from element 2 |
| mult | multiply last two elements |
| div | divide element 2 by element 1 |
| neg | negate last element |
| store | store element 2 in (variable) element 1 |
| eval | evaluate variable to obtain contents |
| purge | delete a variable |
| total | sum the columns of a real matrix |
| mean | compute the sample means of the columns of a real matrix |
| sumsq | sum the squares of the columns of a real matrix |
| var | compute the unbiased sample variances of the columns of a real matrix |
| varbias | compute the biased (population) sample variances of the columns of a real matrix |
| stdev | compute the unbiased sample standard deviations of the columns of a real matrix |
| stdevbias | compute the biased (pop.) sample standard deviations of the columns of a matrix |
| min | find the minima of the columns of a real matrix |
| max | find the maxima of the columns of a real matrix |
| utpn | compute the upper tail probability of a normal distribution |
| uconvert | convert element 2 to an equivalent expression with units matching element 1 |
| ustand | convert to equivalent expression using SI standard base units |
| uvalue | drop the units of the last element |
|
| |
Entering abbreviations can become tedious when performing repetitive calculations. To save some keystrokes, Orpie will automatically bind recently-used operations with no prexisting binding to keys <f5>-<f12>. The current autobindings can be viewed by pressing 'h' to cycle between the various pages of the help panel.
|
| |
| Keys | Operations |
|
| |
| \ drop last element | |
| | | clear all stack elements |
| <pagedown> | swap last two elements |
| <enter> | duplicate last element (when entry buffer is empty) |
| u | undo last operation |
| r | toggle angle mode between degrees and radians |
| p | toggle complex display mode between rectangular and polar |
| b | cycle base display mode between binary, octal, decimal, hex |
| h | cycle through multiple help windows |
| v | view last stack element in a fullscreen editor |
| E | create a new stack element using an external editor |
| P | enter 3.14159265 on the stack |
| C-L | refresh the display |
| <up> | begin stack browsing mode |
| Q | quit Orpie |
|
| |
|
| |
| Abbreviations | Calculator Operation |
|
| |
| drop | drop last element |
| clear | clear all stack elements |
| swap | swap last two elements |
| dup | duplicate last element |
| undo | undo last operation |
| rad | set angle mode to radians |
| deg | set angle mode to degrees |
| rect | set complex display mode to rectangular |
| polar | set complex display mode to polar |
| bin | set base display mode to binary |
| oct | set base display mode to octal |
| dec | set base display mode to decimal |
| hex | set base display mode to hexidecimal |
| view | view last stack element in a fullscreen editor |
| edit | create a new stack element using an external editor |
| pi | enter 3.14159265 on the stack |
| rand | generate a random number between 0 and 1 (uniformly distributed) |
| refresh | refresh the display |
| about | display a nifty ``About Orpie'' screen |
| quit | quit Orpie |
|
| |
|
| |
| Keys | Operations |
|
| |
| q | quit stack browsing mode |
| <left> | scroll selected entry to the left |
| <right> | scroll selected entry to the right |
| r | cyclically ``roll'' stack elements downward, below the selected element (inclusive) |
| R | cyclically ``roll'' stack elements upward, below the selected element (inclusive) |
| v | view the currently selected element in a fullscreen editor |
| E | edit the currently selected element with an external editor |
| <enter> | duplicate the currently selected element |
|
| |
The left and right scrolling option may prove useful for viewing very lengthy stack entries, such as large matrices. The edit option provides a convenient way to correct data after it has been entered on the stack.
Orpie supports the standard SI prefix set, {y, z, a, f, p, n, u, m, c, d, da, h, k, M, G, T, P, E, Z, Y} (note the use of 'u' for micro-). These prefixes may be applied to any of the following exhaustive sets of units:
|
| |
| String | Length Unit |
|
| |
| m | meter |
| ft | foot |
| in | inch |
| yd | yard |
| mi | mile |
| pc | parsec |
| AU | astronomical unit |
| Ang | angstrom |
| furlong | furlong |
| pt | PostScript point |
| pica | PostScript pica |
| nmi | nautical mile |
| lyr | lightyear |
|
| |
|
| |
| String | Mass Unit |
|
| |
| g | gram |
| lb | pound mass |
| oz | ounce |
| slug | slug |
| lbt | Troy pound |
| ton | (USA) short ton |
| tonl | (UK) long ton |
| tonm | metric ton |
| ct | carat |
| gr | grain |
|
| |
|
| |
| String | Time Unit |
|
| |
| s | second |
| min | minute |
| hr | hour |
| day | day |
| yr | year |
| Hz | Hertz |
|
| |
|
| |
| String | Temperature Unit |
|
| |
| K | Kelvin |
| R | Rankine |
|
| |
Note: No, Celsius and Fahrenheit will not be supported. Because these temperature units do not share a common zero point, their behavior is ill-defined under many operations.
|
| |
| String | Force Unit |
|
| |
| N | Newton |
| lbf | pound force |
| dyn | dyne |
| kip | kip |
|
| |
|
| |
| String | Energy Unit |
|
| |
| J | Joule |
| erg | erg |
| cal | calorie |
| BTU | british thermal unit |
| eV | electron volt |
|
| |
|
| |
| String | Electrical Unit |
|
| |
| A | Ampere |
| C | Coulomb |
| V | volt |
| Ohm | Ohm |
| F | Farad |
| H | Henry |
| T | Tesla |
| G | Gauss |
| Wb | Weber |
| Mx | Maxwell |
|
| |
|
| |
| String | Power Unit |
|
| |
| W | Watt |
| hp | horsepower |
|
| |
|
| |
| String | Pressure Unit |
|
| |
| Pa | Pascal |
| atm | atmosphere |
| bar | bar |
| Ohm | Ohm |
| mmHg | millimeters of mercury |
| inHg | inches of mercury |
|
| |
Orpie is Free Software; it has been made available under version 2 of the GNU General Public License (GPL). You should have received a copy of the GPL along with this program, in the file ``COPYING''.
Orpie includes portions of the ocamlgsl [1] bindings supplied by Olivier Andrieu, as well as the curses bindings from the OCaml Text Mode Kit [2] written by Nicolas George. I would like to thank these authors for helping to make Orpie possible.
Orpie author: Paul Pelzl <pelzlpj@eecs.umich.edu> Orpie website:
Feel free to contact me if you have bugs, feature requests, patches, etc. I would also welcome volunteers interested in packaging Orpie for various platforms.
Orpie is developed with the aid of the excellent GNU Arch RCS [3]. Interested developers are advised to track Orpie development via my public archive: pelzlpj@eecs.umich.edu--2004 http://www-personal.engin.umich.edu/~pelzlpj/tla/2004 Orpie uses tla's ``configs'' support. After getting a copy of the source, run "tla build-config dist.arch" in the project tree root to grab the extra packages that Orpie depends on.
At the moment, I would really appreciate help writing additional test cases for the calculator object. It's not terribly difficult, just time-consuming. If you're interested in lending a hand, have a look at the source in calc_test.ml and use "make test.opt" to build the testing executable.
Do you feel compelled to compensate me for writing Orpie? As a poor, starving graduate student, I will gratefully accept donations. Please see for more information.
| [1] | |
| [2] | |
| [3] | . |
(5), orpie-curses-keys(1)