rpn.1: made more precise
This commit is contained in:
parent
4993c53080
commit
a30152d783
52
docs/rpn.1
52
docs/rpn.1
|
@ -1,4 +1,5 @@
|
||||||
.\" Copyright (c) 2024 Emma Tebibyte <emma@tebibyte.media>
|
.\" 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,
|
.\" 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/>.
|
.\" visit <http://creativecommons.org/licenses/by-sa/4.0/>.
|
||||||
|
@ -7,47 +8,48 @@
|
||||||
|
|
||||||
.SH NAME
|
.SH NAME
|
||||||
|
|
||||||
npc \(en reverse polish notation evaluation
|
rpn \(en reverse polish notation evaluation
|
||||||
|
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
|
|
||||||
rpn [integers...] [operations...]
|
rpn
|
||||||
|
.RB [numbers...]\ [operators...]
|
||||||
|
|
||||||
.SH DESCRIPTION
|
.SH DESCRIPTION
|
||||||
|
|
||||||
Rpn parses reverse polish notation and adds characters to the stack until there
|
Rpn parses and and evaluates reverse polish notation either from the standard
|
||||||
is an operation. See rpn(7) for more details on the syntax of reverse polish
|
input or by parsing its arguments. See the STANDARD INPUT section.
|
||||||
notation.
|
|
||||||
|
For information on for reverse polish notation syntax, see rpn(7).
|
||||||
|
|
||||||
.SH STANDARD INPUT
|
.SH STANDARD INPUT
|
||||||
|
|
||||||
If rpn is passed arguments, it interprets those arguments as an expression to
|
If rpn is passed arguments, it interprets them as an expression to be evaluated.
|
||||||
be evaluated. Otherwise, it reads characters from standard input to add to the
|
Otherwise, it reads whitespace-delimited numbers and operations from the
|
||||||
stack.
|
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
|
.SH DIAGNOSTICS
|
||||||
|
|
||||||
If encountering a syntax error, rpn will exit with the appropriate error code
|
If encountering a syntax error, rpn will exit with the appropriate error code
|
||||||
as defined by sysexits.h(3) and print an error message.
|
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
|
.SH RATIONALE
|
||||||
|
|
||||||
POSIX has its own calculator in the form of bc(1p), which uses standard input
|
An infix notation calculation utility, bc(1p), is included in the POSIX
|
||||||
for its calculations. Pair the clunkiness of piping expressions into it and its
|
standard, but it doesn’t accept expressions as arguments; in scripts, any
|
||||||
use of standard notation, it was clear what rpn should be.
|
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
|
||||||
There are no mathematics in the qi(1) shell because it was decided early on that
|
for the former, and was included in UNIX v2 onward. While it implements reverse
|
||||||
math was the job of a specific tool and not the shell itself. Thus, rpn was
|
polish notation, it still suffers from being unable to accept an expression as
|
||||||
born.
|
an argument.
|
||||||
|
|
||||||
.SH AUTHOR
|
.SH AUTHOR
|
||||||
|
|
||||||
|
@ -60,4 +62,4 @@ Copyright (c) 2024 Emma Tebibyte. License AGPLv3+: GNU AGPL version 3 or later
|
||||||
|
|
||||||
.SH SEE ALSO
|
.SH SEE ALSO
|
||||||
|
|
||||||
bc(1p), dc(1)
|
rpn(7), bc(1p), dc(1), IEEE 754
|
||||||
|
|
Loading…
Reference in New Issue
Block a user