NAME
orpierc is the configuration textfile for the orpie(1) console
calculator.
INTRODUCTION
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.
Orpie reads a run-configuration textfile (generally /etc/orpierc or
/usr/local/etc/orpierc) to determine key and command bindings. You can
create a personalized configuration file in $HOME/.orpierc, and select
bindings that match your usage patterns. The recommended procedure is
to ‘‘include’’ the orpierc file provided with Orpie (see INCLUDING
OTHER RCFILES), and add or remove settings as desired.
ORPIERC SYNTAX
You may notice that the orpierc syntax is similar to the syntax used in
the configuration file for the Mutt email client (muttrc).
Within the orpierc file, strings should be enclosed in double quotes
("). A double quote character inside a string may be represented by \"
. The backslash character must be represented by doubling it (\\).
INCLUDING OTHER RCFILES
Syntax: include filename_string
This syntax can be used to include one run-configuration file within
another. This command could be used to load the default orpierc file
(probably found in /etc/orpierc) within your personalized rcfile,
{/.orpierc}. The filename string should be enclosed in quotes.
SETTING CONFIGURATION VARIABLES
Syntax: set variable=value_string
Several configuration variables can be set using this syntax; check the
CONFIGURATION VARIABLES description to see a list. The variables are
unquoted, but the values should be quoted strings.
CREATING KEY BINDINGS
Syntax: bind key_identifier operation
This command will bind a keypress to execute a calculator operation.
The various operations, which should not be enclosed in quotes, may be
found in the section on CALCULATOR OPERATIONS. Key identifiers may be
specified by strings that represent a single keypress, for example "m"
(quotes included). The key may be prefixed with "\\C" or "\\M" to
represent Control or Meta (Alt) modifiers, respectively; note that the
backslash must be doubled. A number of special keys lack
single-character representations, so the following strings may be used
to represent them:
* "<esc>"
* "<tab>"
* "<enter>"
* "<return>"
* "<insert>"
* "<home>"
* "<end>"
* "<pageup>"
* "<pagedown>"
* "<space>"
* "<left>"
* "<right>"
* "<up>"
* "<down>"
* "<f1>" to "<f12>"
Due to differences between various terminal emulators, this key
identifier syntax may not be adequate to describe every keypress. As a
workaround, Orpie will also accept key identifiers in octal notation.
As an example, you could use \024 (do not enclose it in quotes) to
represent Ctrl-T.
Orpie includes a secondary executable, orpie-curses-keys, that prints
out the key identifiers associated with keypresses. You may find it
useful when customizing orpierc.
Multiple keys may be bound to the same operation, if desired.
REMOVING KEY BINDINGS
Syntax:
unbind_function key_identifier
unbind_command key_identifier
unbind_edit key_identifier
unbind_browse key_identifier
unbind_abbrev key_identifier
unbind_variable key_identifier
unbind_integer key_identifier
These commands will remove key bindings associated with the various
entry modes (functions, commands, editing operations, etc.). The key
identifiers should be defined using the syntax described in the
previous section.
CREATING KEY AUTO-BINDINGS
Syntax: autobind key_identifier
In order to make repetitive calculations more pleasant, Orpie offers an
automatic key binding feature. When a function or command is executed
using its abbreviation, one of the keys selected by the autobind syntax
will be automatically bound to that operation (unless the operation has
already been bound to a key). The current set of autobindings can be
viewed in the help panel by executing command_cycle_help (bound to ’h’
by default).
The syntax for the key identifiers is provided in the previous section.
CREATING OPERATION ABBREVIATIONS
Syntax: abbrev operation_abbreviation operation
You can use this syntax to set the abbreviations used within Orpie to
represent the various functions and commands. A list of available
operations may be found in the CALCULATOR OPERATIONS section. The
operation abbreviations should be quoted strings, for example "sin" or
"log".
Orpie performs autocompletion on these abbreviations, allowing you to
type usually just a few letters in order to select the desired command.
The order of the autocompletion matches will be the same as the order
in which the abbreviations are registered by the rcfile--so you may
wish to place the more commonly used operation abbreviations earlier in
the list.
Multiple abbreviations may be bound to the same operation, if desired.
REMOVING OPERATION ABBREVIATIONS
Syntax: unabbrev operation_abbreviation
This syntax can be used to remove an operation abbreviation. The
operation abbreviations should be quoted strings, as described in the
previous section.
CREATING MACROS
Syntax: macro key_identifier macro_string
You can use this syntax to cause a single keypress (the key_identifier)
to be interpreted as the series of keypresses listed in macro_string.
The syntax for defining a keypress is the same as that defined in the
section on CREATING KEY BINDINGS. The macro string should be a list of
whitespace-separated keypresses, e.g. "2 <return> 2 +" (including
quotes).
This macro syntax provides a way to create small programs; by way of
example, the default orpierc file includes macros for the base 2
logarithm and the binary entropy function (bound to L and H,
respectively), as well as ‘‘register’’ variable shortcuts (<f1> to
<f12>).
Macros may call other macros recursively. However, take care that a
macro does not call itself recursively; Orpie will not trap the
infinite loop.
Note that operation abbreviations may be accessed within macros. For
example, macro "A" "’ a b o u t <return>" would bind A to display the
‘‘about Orpie’’ screen.
CREATING UNITS
Syntax:
base_unit unit_symbol preferred_prefix
unit unit_symbol unit_definition
Units are defined in a two-step process:
1. Define a set of orthogonal ‘‘base units.’’ All other units must
be expressible in terms of these base units. The base units can
be given a preferred SI prefix, which will be used whenever the
units are standardized (e.g. via ustand). The unit symbols and
preferred prefixes should all be quoted strings; to prefer no
prefix, use the empty string ("").
It is expected that most users will use the fundamental SI units for
base units.
2. Define all other units in terms of either base units or
previously-defined units. Again, the unit symbol and unit
definition should be quoted strings. The definition should take
the form of a numeric value followed by a units string, e.g.
"2.5_kN*m/s". See the UNITS FORMATTING section for more details
on the unit string format.
CREATING CONSTANTS
Syntax: constant constant_symbol constant_definition
This syntax can be used to define a physical constant. Both the
constant symbol and definition must be quoted strings. The constant
definition should be a numeric constant followed by a units string e.g.
"1.60217733e-19_C". All units used in the constant definition must
already have been defined.
CONFIGURATION VARIABLES
The following configuration variables may be set as described in the
SETTING CONFIGURATION VARIABLES section.
* datadir
This variable should be set to the full path of the Orpie data
directory, which will contain the calculator state save file,
temporary buffers, etc. The default directory is "\~/.orpie/".
* editor
This variable may be set to the fullscreen editor of your
choice. The default value is "vi". It is recommended that you
choose an editor that offers horizontal scrolling in place of
word wrapping, so that the columns of large matrices can be
properly aligned. (The Vim editor could be used in this fashion
by setting editor to "vim -c ’set nowrap’".)
* hide_help
Set this variable to "true" to hide the left help/status panel,
or leave it on the default of "false" to display the help panel.
* conserve_memory
Set this variable to "true" to minimize memory usage, or leave
it on the default of "false" to improve rendering performance.
(By default, Orpie caches multiple string representations of all
stack elements. Very large integers in particular require
significant computation for string representation, so caching
these strings can make display updates much faster.)
CALCULATOR OPERATIONS
Every calculator operation can be made available to the interface using
the syntax described in the sections on CREATING KEY BINDINGS and
CREATING OPERATION ABBREVIATIONS. The following is a list of every
available operation.
FUNCTIONS
The following operations are functions--that is, they will consume at
least one argument from the stack. Orpie will generally abort the
computation and provide an informative error message if a function
cannot be successfully applied (for example, if you try to compute the
transpose of something that is not a matrix).
For the exact integer data type, basic arithmetic operations will yield
an exact integer result. Division of two exact integers will yield the
quotient of the division. The more complicated functions will generally
promote the integer to a real number, and as such the arithmetic will
no longer be exact.
* function_10_x
Raise 10 to the power of the last stack element (inverse of
function_log10).
* function_abs
Compute the absolute value of the last stack element.
* function_acos
Compute the inverse cosine of the last stack element. For real
numbers, The result will be provided either in degrees or
radians, depending on the angle mode of the calculator.
* function_acosh
Compute the inverse hyperbolic cosine of the last stack element.
* function_add
Add last two stack elements.
* function_arg
Compute the argument (phase angle of complex number) of the last
stack element. The value will be provided in either degrees or
radians, depending on the current angle mode of the calculator.
* function_asin
Compute the inverse sine of the last stack element. For real
numbers, The result will be provided either in degrees or
radians, depending on the angle mode of the calculator.
* function_asinh
Compute the inverse hyperbolic sine of the last stack element.
* function_atan
Compute the inverse tangent of the last stack element. For real
numbers, The result will be provided either in degrees or
radians, depending on the angle mode of the calculator.
* function_atanh
Compute the inverse hyperbolic tangent of the last stack
element.
* function_binomial_coeff
Compute the binomial coefficient (‘‘n choose k’’) formed by the
last two stack elements. If these arguments are real, the
coefficient is computed using a fast approximation to the log of
the gamma function, and therefore the result is subject to
rounding errors. For exact integer arguments, the coefficient is
computed using exact arithmetic; this has the potential to be a
slow operation.
* function_ceiling
Compute the ceiling of the last stack element.
* function_convert_units
Convert stack element 2 to an equivalent expression in the units
of element 1. Element 1 should be real-valued, and its magnitude
will be ignored when computing the conversion.
* function_cos
Compute the cosine of the last stack element. If the argument is
real, it will be assumed to be either degrees or radians,
depending on the angle mode of the calculator.
* function_cosh
Compute the hyperbolic cosine of the last stack element.
* function_conj
Compute the complex conjugate of the last stack element.
* function_div
Divide element 2 by element 1.
* function_erf
Compute the error function of the last stack element.
* function_erfc
Compute the complementary error function of the last stack
element.
* function_eval
Obtain the contents of the variable in the last stack position.
* function_exp
Evaluate the exponential function of the last stack element.
* function_factorial
Compute the factorial of the last stack element. For a real
argument, this is computed using a fast approximation to the
gamma function, and therefore the result may be subject to
rounding errors (or overflow). For an exact integer argument,
the factorial is computed using exact arithmetic; this has the
potential to be a slow operation.
* function_floor
Compute the floor of the last stack element.
* function_gamma
Compute the Euler gamma function of the last stack element.
* function_gcd
Compute the greatest common divisor of the last two stack
elements. This operation may be applied only to integer type
data.
* function_im
Compute the imaginary part of the last stack element.
* function_inv
Compute the multiplicative inverse of the last stack element.
* function_lcm
Compute the least common multiple of the last two stack
elements. This operation may be applied only to integer type
data.
* function_ln
Compute the natural logarithm of the last stack element.
* function_lngamma
Compute the natural logarithm of the Euler gamma function of the
last stack element.
* function_log10
Compute the base-10 logarithm of the last stack element.
* function_maximum
Find the maximum values of each of the columns of a real NxM
matrix, returning a 1xM matrix as a result.
* function_minimum
Find the minimum values of each of the columns of a real NxM
matrix, returning a 1xM matrix as a result.
* function_mean
Compute the sample means of each of the columns of a real NxM
matrix, returning a 1xM matrix as a result.
* function_mod
Compute element 2 mod element 1. This operation can be applied
only to integer type data.
* function_mult
Multiply last two stack elements.
* function_neg
Negate last stack element.
* function_permutation
Compute the permutation coefficient determined by the last two
stack elements ’n’ and ’k’: the number of ways of obtaining an
ordered subset of k elements from a set of n elements. If these
arguments are real, the coefficient is computed using a fast
approximation to the log of the gamma function, and therefore
the result is subject to rounding errors. For exact integer
arguments, the coefficient is computed using exact arithmetic;
this has the potential to be a slow operation.
* function_pow
Raise element 2 to the power of element 1.
* function_purge
Delete the variable in the last stack position.
* function_re
Compute the real part of the last stack element.
* function_sin
Compute the sine of the last stack element. If the argument is
real, it will be assumed to be either degrees or radians,
depending on the angle mode of the calculator.
* function_sinh
Compute the hyperbolic sine of the last stack element.
* function_solve_linear
Solve a linear system of the form Ax = b, where A and b are the
last two elements on the stack. A must be a square matrix and b
must be a matrix with one column. This function does not compute
inv(A), but obtains the solution by a more efficient LU
decomposition method. This function is recommended over
explicitly computing the inverse, especially when solving linear
systems with relatively large dimension or with poorly
conditioned matrices.
* function_sq
Square the last stack element.
* function_sqrt
Compute the square root of the last stack element.
* function_standardize_units
Convert the last stack element to an equivalent expression using
the SI standard base units (kg, m, s, etc.).
* function_stdev_unbiased
Compute the unbiased sample standard deviation of each of the
columns of a real NxM matrix, returning a 1xM matrix as a
result. (Compare to HP48’s sdev function.)
* function_stdev_biased
Compute the biased (population) sample standard deviation of
each of the columns of a real NxM matrix, returning a 1xM matrix
as a result. (Compare to HP48’s psdev function.)
* function_store
Store element 2 in (variable) element 1.
* function_sub
Subtract element 1 from element 2.
* function_sumsq
Sum the squares of each of the columns of a real NxM matrix,
returning a 1xM matrix as a result.
* function_tan
Compute the tangent of the last stack element. If the argument
is real, it will be assumed to be either degrees or radians,
depending on the angle mode of the calculator.
* function_tanh
Compute the hyperbolic tangent of the last stack element.
* function_to_int
Convert a real number to an integer type.
* function_to_real
Convert an integer type to a real number.
* function_total
Sum each of the columns of a real NxM matrix, returning a 1xM
matrix as a result.
* function_trace
Compute the trace of a square matrix.
* function_transpose
Compute the matrix transpose of the last stack element.
* function_unit_value
Drop the units of the last stack element.
* function_utpn
Compute the upper tail probability of a normal distribution.
UTPN(m, v, x) = Integrate[ 1/Sqrt[2 Pi v] Exp[-(m-y)^2/(2 v)],
{y, x, Infinity}]
* function_var_unbiased
Compute the unbiased sample variance of each of the columns of a
real NxM matrix, returning a 1xM matrix as a result. (Compare to
HP48’s var function.)
* function_var_biased
Compute the biased (population) sample variance of each of the
columns of a real NxM matrix, returning a 1xM matrix as a
result. (Compare to HP48’s pvar function.)
COMMANDS
The following operations are referred to as commands; they differ from
functions because they do not take an argument. Many calculator
interface settings are implemented as commands.
* command_about
Display a nifty ‘‘about Orpie’’ credits screen.
* command_begin_abbrev
Begin entry of an operation abbreviation.
* command_begin_browsing
Enter stack browsing mode.
* command_begin_constant
Begin entry of a physical constant.
* command_begin_variable
Begin entry of a variable name.
* command_bin
Set the base of exact integer representation to 2 (binary).
* command_clear
Clear all elements from the stack.
* command_cycle_base
Cycle the base of exact integer representation between 2, 8, 10,
and 16 (bin, oct, dec, and hex).
* command_cycle_help
Cycle through multiple help pages. The first page displays
commonly used bindings, and the second page displays the current
autobindings.
* command_dec
Set the base of exact integer representation to 10 (decimal).
* command_deg
Set the angle mode to degrees.
* command_drop
Drop the last element off the stack.
* command_dup
Duplicate the last stack element.
* command_enter_pi
Enter 3.1415... on the stack.
* command_hex
Set the base of exact integer representation to 16
(hexadecimal).
* command_oct
Set the base of exact integer representation to 8 (octal).
* command_polar
Set the complex display mode to polar.
* command_rad
Set the angle mode to radians.
* command_rand
Generate a random real-valued number between 0 (inclusive) and 1
(exclusive). The deviates are uniformly distributed.
* command_rect
Set the complex display mode to rectangular (cartesian).
* command_refresh
Refresh the display.
* command_swap
Swap stack elements 1 and 2.
* command_quit
Quit Orpie.
* command_toggle_angle_mode
Toggle the angle mode between degrees and radians.
* command_toggle_complex_mode
Toggle the complex display mode between rectangular and polar.
* command_undo
Undo the last calculator operation.
* command_view
View the last stack element in an external fullscreen editor.
* command_edit_input
Create a new stack element using an external editor.
EDIT OPERATIONS
The following operations are related to editing during data entry.
These commands cannot be made available as operation abbreviations,
since abbreviations are not accessible while entering data. These
operations should be made available as single keypresses using the bind
keyword.
* edit_angle
Begin entering the phase angle of a complex number. (Orpie will
assume the angle is in either degrees or radians, depending on
the current angle mode.)
* edit_backspace
Delete the last character entered.
* edit_begin_integer
Begin entering an exact integer.
* edit_begin_units
Begin appending units to a numeric expression.
* edit_complex
Begin entering a complex number.
* edit_enter
Enter the data that is currently being edited.
* edit_matrix
Begin entering a matrix, or begin entering the next row of a
matrix.
* edit_minus
Enter a minus sign in input.
* edit_scientific_notation_base
Begin entering the scientific notation exponent of a real
number, or the base of an exact integer.
* edit_separator
Begin editing the next element of a complex number or matrix.
(This will insert a comma between elements.)
BROWSING OPERATIONS
The following list of operations is available only in stack browsing
mode. As abbreviations are unavailable while browsing the stack, these
operations should be bound to single keypresses using the bind keyword.
* browse_echo
Echo the currently selected element to stack level 1.
* browse_end
Exit stack browsing mode.
* browse_drop
Drop the currently selected stack element.
* browse_dropn
Drop all stack elements below the current selection (inclusive).
* browse_keep
Drop all stack elements except the current selection. (This is
complementary to browse_drop.
* browse_keepn
Drop all stack elements above the current selection
(non-inclusive). (This is complementary to browse_dropn.
* browse_next_line
Move the selection cursor down one line.
* browse_prev_line
Move the selection cursor up one line.
* browse_rolldown
Cyclically ‘‘roll’’ stack elements downward, below the selected
element (inclusive).
* browse_rollup
Cyclically ‘‘roll’’ stack elements upward, below the selected
element (inclusive) .
* browse_scroll_left
Scroll the selected element to the left (for viewing very large
entries such as matrices).
* browse_scroll_right
Scroll the selected element to the right.
* browse_view
View the currently selected stack element in a fullscreen
editor.
* browse_edit
Edit the currently selected stack element using an external
editor.
ABBREVIATION ENTRY OPERATIONS
The following list of operations is available only while entering a
function or command abbreviation, or while entering a physical
constant. These operations must be bound to single keypresses using the
bind keyword.
* abbrev_backspace
Delete a character from the abbreviation string.
* abbrev_enter
Execute the operation associated with the selected abbreviation.
* abbrev_exit
Cancel abbreviation entry.
VARIABLE ENTRY OPERATIONS
The following list of operations is available only while entering a
variable name. As abbreviations are unavailable while entering
variables, these operations should be bound to single keypresses using
the bind keyword.
* variable_backspace
Delete a character from the variable name.
* variable_cancel
Cancel entry of the variable name.
* variable_complete
Autocomplete the variable name.
* variable_enter
Enter the variable name on the stack.
INTEGER ENTRY OPERATIONS
The following operation is available only while entering an integer; it
can be made accessible by binding it to a single keypress using the
bind keyword.
* integer_cancel
Cancel entry of an integer.
SEE ALSO
orpie(1), orpie-curses-keys(1)
AUTHOR
This manpage is written by Paul J. Pelzl <pelzlpj@eecs.umich.edu>.
configuration file for the Orpi13cSeptember 2007