mirror of
https://github.com/louisrubet/rpn
synced 2025-02-06 08:46:31 +01:00
#74: updated main README
This commit is contained in:
parent
40a3657bd8
commit
3059ec233f
1 changed files with 46 additions and 9 deletions
55
README.md
55
README.md
|
@ -1,19 +1,56 @@
|
||||||
# Reverse Polish Notation language
|
# **rpn** - **R**everse **P**olish **N**otation language
|
||||||
|
|
||||||
- __rpn__ is a reverse polish notation mathematical language, which brings powerfull calculation facilities on floating point number with __arbitrary precision__
|
- **rpn** is a mathematical language, which brings
|
||||||
|
- powerfull calculation facilities on floating point numbers with __arbitrary precision__, provided by **GNU MPFR** library
|
||||||
|
- a **math-oriented language** inspired by Hewlett-Packard **R**everse **P**olish **L**isp (**HP28S** user manual is provided as a reference), it includes at least **stack**, **store**, **branch**, **test**, **trig** and **logs** commands
|
||||||
|
- using that so cool **reverse polish notation**
|
||||||
|
|
||||||
- The special feature of this language is to make no difference between keywords and functions, even user functions
|
Quick examples:
|
||||||
|
|
||||||
- Following objects are managed: floating numbers, symbols, strings, programs, plus language keywords (commands and flow controls)
|
- easy calculation with **stacked results**
|
||||||
|
```
|
||||||
|
rpn> 1 exp 3 *
|
||||||
|
8.1548454853771357061
|
||||||
|
rpn> 2 sqrt
|
||||||
|
2> 8.1548454853771357061
|
||||||
|
1> 1.4142135623730950488
|
||||||
|
rpn>
|
||||||
|
```
|
||||||
|
- **programs** and **variables**, eg same example as in HP28S Quick Reference:
|
||||||
|
```
|
||||||
|
rpn> << rot * swap 2 / chs dup sq rot - sqrt >> 'quadratic_solution' sto
|
||||||
|
rpn> 1 2 -3 quadratic_solution
|
||||||
|
2> -1
|
||||||
|
1> 2
|
||||||
|
rpn> vars
|
||||||
|
var 1: name 'quadratic_solution', type program, value << rot * swap 2 / chs dup sq rot - sqrt >>
|
||||||
|
```
|
||||||
|
- **local variables**, always from the same reference:
|
||||||
|
```
|
||||||
|
rpn> << -> x y << x y + ln >> >> 'P' sto
|
||||||
|
rpn> 1 2 P
|
||||||
|
rpn> 1.0986122886681096914
|
||||||
|
```
|
||||||
|
- **arbitrary precision** (up to 0x7FFFFFFFFFFFFFFF bits with GNU MPFR !)
|
||||||
|
```
|
||||||
|
rpn> 256 prec 200 std
|
||||||
|
rpn> pi 3 * 4 / cos
|
||||||
|
-0.70710678118654752440084436210484903928483593768847403658833986899536623923105962592591087473479525356117497671223960240783675485777817360566073272153486395308799122357513534343724299243077135552002446
|
||||||
|
rpn>
|
||||||
|
```
|
||||||
|
|
||||||
- Inspired by Hewlett-Packard RPL language (**HP28S** user manual is provided as a reference), it includes at least STACK, STORE, BRANCH, TEST, TRIG and LOGS commands of HP28S RPL implementation
|
- Following objects are managed: **floating numbers**, **symbols**, **strings**, **programs**, plus language **keywords** (commands and flow controls)
|
||||||
|
```
|
||||||
|
4> 'symbol'
|
||||||
|
3> "string"
|
||||||
|
2> 12.3456
|
||||||
|
1> << -> n << 0 1 n for i i 2 * inv + next >> >>
|
||||||
|
rpn>
|
||||||
|
```
|
||||||
|
|
||||||
- A __GNU-readline__-based interactive editor with autocompletion is provided.
|
- A __GNU-readline__-based interactive editor with autocompletion is provided.
|
||||||
|
|
||||||
Multiple-precision floating-point computations with correct rounding are ensured by __MPFR library__ under LGPL v3
|
## Keywords
|
||||||
|
|
||||||
## Implemented commands
|
|
||||||
|
|
||||||
|GENERAL||
|
|GENERAL||
|
||||||
|-|-|
|
|-|-|
|
||||||
|nop | no operation |
|
|nop | no operation |
|
||||||
|
|
Loading…
Add table
Reference in a new issue