.\" Copyright (c) 2024 Emma Tebibyte .\" .\" This work is licensed under CC BY-SA 4.0. To see a copy of this license, .\" visit . .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 . .SH COPYRIGHT Copyright (c) 2024 Emma Tebibyte. License AGPLv3+: GNU AGPL version 3 or later . .SH SEE ALSO bc(1p), dc(1)