overgrown/docs/rpn.1

85 lines
2.5 KiB
Groff
Raw Normal View History

2024-02-01 11:36:38 -07:00
.\" Copyright (c) 2024 Emma Tebibyte <emma@tebibyte.media>
2024-02-02 20:12:12 -07:00
.\" Copyright (c) 2024 DTB <trinity@trinity.moe>
2024-02-01 11:36:38 -07:00
.\"
.\" This work is licensed under CC BY-SA 4.0. To see a copy of this license,
.\" visit <http://creativecommons.org/licenses/by-sa/4.0/>.
.\"
2024-02-01 11:36:38 -07:00
.TH rpn 1
.SH NAME
2024-02-02 20:12:12 -07:00
rpn \(en reverse polish notation evaluation
.\"
2024-02-01 11:36:38 -07:00
.SH SYNOPSIS
.\"
2024-02-02 20:12:12 -07:00
rpn
.RB [ numbers... ]
.RB [ operators... ]
.\"
2024-02-01 11:36:38 -07:00
.SH DESCRIPTION
.\"
Evaluate reverse polish notation.
2024-02-02 20:12:12 -07:00
The program evaluates reverse polish notation expressions either read from the
standard input or parsed from provided arguments. See the STANDARD INPUT
section.
Upon evaluation, the program will print the resulting number on the stack to the
2024-02-07 19:11:53 -07:00
standard output. Any further specified numbers will be placed at the end of the
stack.
2024-02-03 17:20:31 -07:00
2024-02-02 20:12:12 -07:00
For information on for reverse polish notation syntax, see rpn(7).
.\"
2024-02-01 11:36:38 -07:00
.SH STANDARD INPUT
.\"
If arguments are passed, they are interpreted as an expression to be
evaluated. Otherwise, it reads whitespace-delimited numbers and operations from
the standard input.
.\"
2024-02-03 17:20:31 -07:00
.SH DIAGNOSTICS
.\"
In the event of a syntax error, the program will print an
In the event of an error, a debug message will be printed and the program will
exit with the appropriate
.BR sysexits.h(3)
error code.
.\"
2024-02-02 20:12:12 -07:00
.SH CAVEATS
.\"
2024-02-02 20:12:12 -07:00
Due to precision constraints and the way floats are represented in accordance
with the IEEE Standard for Floating Point Arithmetic (\fIIEEE 754\fP),
floating-point arithmetic has rounding errors. This is somewhat curbed by using
the machine epsilon as provided by the Rust standard library to which to round
2024-02-07 19:11:53 -07:00
numbers. Because of this, variation is expected in the number of decimal places
the program can handle based on the platform and hardware of any given machine.
.\"
2024-02-01 11:36:38 -07:00
.SH RATIONALE
.\"
An infix notation calculation utility,
.BR bc (1p),
is included in the POSIX standard, but does not accept expressions as arguments;
in scripts, any predefined, non-interactive input must be piped into the
program. A
.BR dc (1)
pre-dates the standardized
.BR bc (1p),
the latter originally being a preprocessor for the former, and was included in
UNIX v2 onward. While it implements reverse polish notation, it still suffers
from being unable to accept an expression as an argument.
.\"
2024-02-01 11:36:38 -07:00
.SH AUTHOR
.\"
Written by Emma Tebibyte
.MT emma@tebibyte.media
.ME .
.\"
2024-02-01 11:36:38 -07:00
.SH COPYRIGHT
.\"
2024-02-01 11:36:38 -07:00
Copyright (c) 2024 Emma Tebibyte. License AGPLv3+: GNU AGPL version 3 or later
<https://gnu.org/licenses/agpl.html>.
.\"
2024-02-01 11:36:38 -07:00
.SH SEE ALSO
.BR bc (1p),
.BR dc (1),
.BR rpn(7),
.I IEEE 754