overgrown/docs/rpn.1

87 lines
2.5 KiB
Groff
Raw Permalink 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/>.
.\"
.TH RPN 1 2024-06-17 "Harakit X.X.X"
2024-02-01 11:36:38 -07:00
.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-06-03 23:07:19 -06:00
2024-02-02 20:12:12 -07:00
rpn
.RB [ numbers... ]
.RB [ operators... ]
.\"
2024-02-01 11:36:38 -07:00
.SH DESCRIPTION
2024-06-03 23:07:19 -06:00
Evaluate reverse polish notation.
2024-02-02 20:12:12 -07:00
2024-06-17 23:16:25 -06:00
The program evaluates reverse polish notation expressions read either from the
standard input or parsed from provided arguments. See the STANDARD INPUT
section.
2024-06-17 23:16:25 -06:00
Upon evaluation, the resulting number on the stack will be printed to the
standard output. Any further numbers specified will be placed at the end of the
2024-02-07 19:11:53 -07:00
stack.
2024-02-03 17:20:31 -07:00
2024-06-04 16:11:33 -06:00
For information on for reverse polish notation syntax, see
.BR rpn (7).
.\"
2024-02-01 11:36:38 -07:00
.SH STANDARD INPUT
2024-06-03 23:07:19 -06:00
2024-06-17 23:16:25 -06:00
If arguments are specified, they are interpreted as an expression to be
evaluated. Otherwise, whitespace-delimited numbers and operations are read from
the standard input.
.\"
2024-02-03 17:20:31 -07:00
.SH DIAGNOSTICS
2024-06-03 23:07:19 -06:00
In the event of an error, a debug message will be printed and the program will
exit with the appropriate
2024-06-04 16:11:33 -06:00
.BR sysexits.h (3)
error code; however, in the event of a syntax error, the program will print an
error message and continue accepting input.
.\"
2024-02-02 20:12:12 -07:00
.SH CAVEATS
2024-06-03 23:07:19 -06:00
2024-02-02 20:12:12 -07:00
Due to precision constraints and the way floats are represented in accordance
2024-06-17 23:16:25 -06:00
with the
.I 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 numbers are rounded. 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
2024-06-03 23:07:19 -06:00
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
2024-06-17 23:16:25 -06:00
Second Edition UNIX and 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
2024-06-03 23:07:19 -06:00
Written by Emma Tebibyte
.MT emma@tebibyte.media
.ME .
.\"
2024-02-01 11:36:38 -07:00
.SH COPYRIGHT
2024-06-03 23:07:19 -06:00
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),
2024-06-04 16:11:33 -06:00
.BR rpn (7),
.I IEEE 754