66 lines
2.0 KiB
Groff
66 lines
2.0 KiB
Groff
.\" 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.
|
||
|
||
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 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 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 RATIONALE
|
||
|
||
An infix notation calculation utility, bc(1p), is included in the POSIX
|
||
standard, but it doesn’t 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
|