bonsix/docs/rpn.1
2024-02-01 11:36:38 -07:00

64 lines
1.7 KiB
Groff

.\" Copyright (c) 2024 Emma Tebibyte <emma@tebibyte.media>
.\"
.\" 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
npc \(en reverse polish notation evaluation
.SH SYNOPSIS
rpn [integers...] [operations...]
.SH DESCRIPTION
Rpn parses reverse polish notation and adds characters to the stack until there
is an operation. See rpn(7) for more details on the syntax of reverse polish
notation.
.SH STANDARD INPUT
If rpn is passed arguments, it interprets those arguments as an expression to
be evaluated. Otherwise, it reads characters from standard input to add to the
stack.
.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 the complexity of integer storage in memory, rpn is only capable of
parsing decimal integers.
Additionally, due to the laws of physics, floating-point math can only be as
precise as slightly less than the machine epsilon of the hardware on which rpn
is running.
.SH RATIONALE
POSIX has its own calculator in the form of bc(1p), which uses standard input
for its calculations. Pair the clunkiness of piping expressions into it and its
use of standard notation, it was clear what rpn should be.
There are no mathematics in the qi(1) shell because it was decided early on that
math was the job of a specific tool and not the shell itself. Thus, rpn was
born.
.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)