Chapters:
1: Introduction
2: Simple example
3: Invocation
4: Finer Control
5: X-Y Plots
6: Contour Plots
7: Image Plots
8: Examples
9: Gri Commands
10: Programming
11: Environment
12: Emacs Mode
13: History
14: Installation
15: Gri Bugs
16: Test Suite
17: Acknowledgments
18: License
Indices:
Concepts
Commands
Variables
|
10.9.5: Unary Operators
Unary operators replace the last item on the stack with another item.
For example, the `sin ' operator takes the sine of the number on the
top of the stack; e.g., `{rpn 45 sin} ' yields the sine of 45 degrees.
The unary operators are illustrated below, in rough alphabetical order.
- {rpn 0 !}
- Replace 0 (false) with its logical negation 1 (true).
- {rpn -3 abs}
- Calculate the absolute value of `
-3 '.
- {rpn 0.5 acos}
- Calculate the inverse cosine of 0.5, yielding 60 (degrees).
- {rpn 2 acosh}
- Calculate the inverse hyperbolic cosine of 2, yielding 1.317. (Note:
argument must equal or exceed 1, or an error results.)
- {rpn y x area}
- Calculate the area under the curve y=y(x). For details
(see Manipulation of Columns etc).
- {rpn 0.5 asin}
- Calculate the inverse sine of 0.5, yielding 30 (degrees).
- {rpn 1 atan}
- Calculate the inverse tangent of 1, yielding 45 (degrees).
- {rpn 0.5 atanh}
- Calculate the inverse hyperbolic tangent of 0.5, yielding 0.549306
(radians).
- {rpn 0 argv}
- Returns the name of the Gri command-file, which is considered as the first
"optional" argument. (It may seem odd that the name of the command-file
is considered an option, but Gri does this for consistency with C and
other languages. It is useful.) Other arguments provided when Gri
was invoked are provided as `
rpn 1 argv ', etc.
A string consisting of a single blank character results if one tries to
access beyond the list of arguments that were actually supplied. See
also the `argc ' solitary operator (see Solitary Operators), which
returns the number of optional arguments.
For example, if Gri is invoked as
gri myscript.gri file1.dat file2.dat
|
and if `myscript.gri' contained
.n. = {rpn argc}
.i. = 0
while {rpn .n. .i. <}
show "argument " .i. " is " {rpn .i. argv}
.i. += 1
end while
|
then the output would be
argument 0 is myscript.gri
argument 1 is file1.dat
argument 2 is file2.dat
|
For usage within the Emacs gri-mode, see
see Filename arguments when running gri.
- {rpn "hi" ascent}
- Determine ascent of this string (in cm), in the present font and
fontsize. (See also `
descent ' and `width '.)
- {rpn "3.1" atof}
- Calculate the numerical value contained in indicated string.
- {rpn 1.5 ceil}
- Calculate the next higher integer, yielding 2. (Opposite of `
floor '.)
- {rpn 45 cos}
- Calculate the cosine of 45 degrees, yielding 0.707.
- {rpn 1 cosh}
- Calculate the hyperbolic cosine of 1 (radian), yielding 1.543.
- {rpn 1 cmtopt}
- Convert from 1 centimeter to so-called ``point'' units, yielding 28.45.
(Opposite of `
pttocm '.)
- {rpn "\\syn" defined}
- Test whether the synonym is defined at the moment, returning 1 if
so and 0 if not. (Note the double-backslash in the synonym name, which
is required.)
- {rpn ".var." defined}
- Test whether the variable is defined at the moment, returning 1 if
so and 0 if not.
- {rpn "\\@alias" defined}
- Test whether the variable/synonym item that is named by the alias
(see Alias Synonyms) is defined at the moment, returning 1 if so and 0
if not.
- {rpn "hi" descent}
- Calculate the descent (below the baseline in cm) for the given string,
in the present font and fontsize. (See also `
ascent ' and
`width '.)
- {rpn "/home/me/data/timeseries" directory_exists}
- Determine whether indicate directory exists, yielding `
1 ' if it does
and `0 ' otherwise. (See also `file_exists '.)
- {rpn 2 dup}
- Duplicate the top item on stack, yielding `
2 2 ' on the stack.
(See also `exch ' and `pop '.)
- {rpn 1 exp}
- Calculate the value of `
e ' raised to the indicated power, yielding 2.71828.
- {rpn 2 exp10}
- Calculate the value of `
10 ' raised to the indicated power, yielding 100.
- {rpn "foo.dat" file_exists}
- Determine whether the indicate file exists, yielding `
1 ' if it does
and `0 ' otherwise. (See also `directory_exists '.)
- {rpn 1.5 floor}
- Calculate the nearest smaller integer, yielding 1. (Opposite of
`
ceil '.)
- {rpn 3 ismissing}
- Yields 1 if the indicated value is a ``missing value'' or 0 otherwise.
- {rpn 100 log}
- Calculate the base-10 logarithm of 100, yielding 2.
- {rpn 10 ln}
- Calculate the natural logarithm of 10, yielding 2.30259.
- {rpn x mean}
- Yields the mean value of the (non-missing) numbers in the x column. A
similar form also works for `
y ', etc.
(see Manipulation of Columns etc).
- {rpn x max}
- Yields the largest value of the (non-missing) numbers in the x column. A
similar form also works for `
y ', etc.
(see Manipulation of Columns etc).
- {rpn x min}
- Yields the smallest value of the (non-missing) numbers in the x column. A
similar form also works for `
y ', etc.
(see Manipulation of Columns etc).
- {rpn 28.45 pttocm}
- Calculate the number of centimeters in 28.45 printers points, yielding 1.
(Opposite of `
cmtopt '.)
- {rpn 1 2 pop}
- Remove the top item from the stack, yielding `
1 ' on the stack.
Generates an error if the stack is empty. (See also `exch ' and
`dup '.)
- {rpn 4 sqrt}
- Calculate the square root of 4, yielding 2. (Negative arguments yield
errors.)
- {rpn 45 sin}
- Calculate the sine of 45 (degrees), yielding 0.707107.
- {rpn 2 sinh}
- Calculate the hyperbolic sine of 2, yielding 3.62686.
- {rpn "hello" strlen}
- Determine the number of characters in string, e.g. 6 here.
- {rpn "date" system}
- Call the indicated system function and insert its ouput on the stack,
yielding the date as a character string.
- {rpn 45 tan}
- Calculate the tangent of 45 (degrees), yielding 1.
- {rpn tanh}
- Calculate the hyperbolic tangent of 2, yielding 0.964028.
- {rpn "hi" width}
- Determine width of this string (in cm), in the present font and fontsize.
(See also `
ascent ' and `descent '.)
- {rpn 0 wordv}
- Returns the first word used in invoking the present command. Similar
to the `
\.word0. ' synonym (see Local Synonyms). Example:
`let us test .it.'
{
.w. = 0
while {rpn .w. wordc >}
show "The " .w. "-th word is `" {rpn .w. wordv} "'."
.w. += 1
end while
}
let us test "this thing"
let us test "this" "thing"
let us test "Pi is" {rpn 3.14}
|
If you are using this to parse options given to the command, it is up to
you to skip the non-optional words in the command. In this case, for
example, we skipped the first three words (`let ', `us ', and
`test ').
- {rpn 1 xusertocm}
- Calculate the x coordinate, in centimeters measured from left-hand side of
page, corresponding to a user-value of x=1. (Opposite of
`
xcmtouser '.)
- {rpn 1 xcmtouser}
- Calculate the x value, in user units, for a point that is 1 centimeter from
the left-hand edge of the paper. (Opposite of `
xusertocm '.)
- {rpn 1 yusertocm}
- Calculate the y coordinate, in centimeters measured from bottom side of
page, corresponding to a user-value of x=1. (Opposite of
`
ycmtouser '.)
- {rpn 1 ycmtouser}
- Calculate the y value, in user units, for a point that is 1 centimeter from
the bottom edge of the paper. (Opposite of `
yusertocm '.)
|