bonsix/docs/rpn.1
2024-02-03 17:20:31 -07:00

70 lines
2.2 KiB
Groff
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

.\" Copyright (c) 2024 Emma Tebibyte <emma@tebibyte.media>
.\" Copyright (c) 2024 DTB <trinity@trinity.moe>
.\"
.\" 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
.SH NAME
rpn \(en reverse polish notation evaluation
.SH SYNOPSIS
rpn
.RB [numbers...]\ [operators...]
.SH DESCRIPTION
Rpn parses and and evaluates reverse polish notation expressions either from the
standard input or by parsing its arguments. See the STANDARD INPUT section.
Upon evaluation, rpn will print the resulting number on the stack to the
standard output. Any further specified numbers will be placed on the stack
following the last outputted number.
For information on for reverse polish notation syntax, see rpn(7).
.SH STANDARD INPUT
If rpn is passed arguments, it interprets them as an expression to be evaluated.
Otherwise, it reads whitespace-delimited numbers and operations from the
standard input.
.SH DIAGNOSTICS
If encountering a syntax error, rpn will exit with the appropriate error code
as defined by sysexits.h(3) and print an error message.
.SH CAVEATS
Due to precision constraints and the way floats are represented in accordance
with the IEEE Standard for Floating Point Arithmetic (IEEE 754), floating-point
arithmetic has rounding errors. This is somewhat curbed by using the
second-highest float that can be represented in line with this standard to round
numbers to before outputting.
.SH RATIONALE
An infix notation calculation utility, bc(1p), is included in the POSIX
standard, but it doesnt accept expressions as arguments; in scripts, any
predefined, non-interactive input must be piped into the program. A dc(1)
pre-dates the standardized 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.
.SH AUTHOR
Written by Emma Tebibyte <emma@tebibyte.media>.
.SH COPYRIGHT
Copyright (c) 2024 Emma Tebibyte. License AGPLv3+: GNU AGPL version 3 or later
<https://gnu.org/licenses/agpl.html>.
.SH SEE ALSO
bc(1p), dc(1), rpn(7), IEEE 754