1
0
forked from bonsai/harakit
coreutils/docs/rpn.1

71 lines
2.3 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
.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...]\ [operators...]
2024-02-01 11:36:38 -07:00
.SH DESCRIPTION
2024-02-07 19:17:59 -07:00
Rpn evaluates reverse polish notation expressions either read from the standard
input or parsed from provided arguments. See the STANDARD INPUT section.
2024-02-02 20:12:12 -07:00
2024-02-03 17:20:31 -07:00
Upon evaluation, rpn 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
2024-02-07 19:11:53 -07:00
If arguments are passed to rpn, it interprets them as an expression to be
evaluated. Otherwise, it reads whitespace-delimited numbers and operations from
the standard input.
2024-02-02 20:12:12 -07:00
2024-02-03 17:20:31 -07:00
.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.
2024-02-02 20:12:12 -07:00
.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
2024-02-07 19:11:53 -07:00
machine epsilon as provided by the Rust standard library to which to round
numbers. Because of this, variation is expected in the number of decimal places
rpn can handle based on the platform and hardware of any given machine.
2024-02-01 11:36:38 -07:00
.SH RATIONALE
2024-02-02 20:12:12 -07:00
An infix notation calculation utility, bc(1p), is included in the POSIX
2024-02-07 19:11:53 -07:00
standard, but does not accept expressions as arguments; in scripts, any
2024-02-02 20:12:12 -07:00
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.
2024-02-01 11:36:38 -07:00
.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
2024-02-02 23:24:45 -07:00
bc(1p), dc(1), rpn(7), IEEE 754