toolbox

calc
Login

Name

calc - RPN calculator

SYNOPSIS

calc
calc < commands

DESCRIPTION

calc is a RPN calculator in the spirit of the HP calculators.

CALC SETTINGS

dsp

Control the number of stack entries to display (4 by default).

4:
3:
2:
1:                 1.00
> 2 dsp

2:
1:                 1.00
>

prec

Specify float precision (2 by default).

1:                 3.14
> 4 prec

1:               3.1416
>

rad

Switch to radius mode.

deg

Switch to degree mode.

STACK MANAGEMENT

clear

Clear the stack.

dropn

Remove the n topmost elements of the stack.

4:                 2.00
3:                33.00
2:                44.00
1:                55.00
> 3 dropn

4:
3:
2:
1:                 2.00
>

drop2

Shortcut for 2 dropn.

drop

Shortcut for 1 dropn.

dupn

Duplicate the n topmost elements of the stack.

4:
3:
2:                 3.14
1:                34.00
> 2 dupn

4:                 3.14
3:                34.00
2:                 3.14
1:                34.00
>

dup2

Shortcut for 2 dupn.

dup

Shortcut for 1 dupn.

pick

Pick an element in the stack and copy it at the top of the stack.

4:
3:               123.00
2:                33.00
1:                44.00
> 3 pick

4:               123.00
3:                33.00
2:                44.00
1:               123.00
>

over

Shortcut for 2 pick.

roll

Pick an element in the stack and move it at the top of the stack.

4:
3:               123.00
2:                33.00
1:                44.00
> 3 roll

4:
3:                33.00
2:                44.00
1:               123.00
>

swap

Shortcut for 2 roll.

rot

Shortcut for 3 roll.

rolld

Pick the topmost element and move it downward the stack.

4:                 1.00
3:                 2.00
2:                 3.00
1:                 4.00
> 3 rolld

4:                 1.00
3:                 4.00
2:                 2.00
1:                 3.00
>

depth

Push the size of the stack on the stack.

ARITHMETIC OPERATORS

add, +

Add two topmost elements of the stack.

sub, -

Substract two topmost elements of the stack.

mul, *

Multiply two topmost elements of the stack.

div, /

Divide two topmost elements of the stack.

modulo, %

Modulo of two topmost elements of the stack.

pow

Exponentiation operator of two topmost elements of the stack.

sq

Shortcut for 2 pow (square value of topmost element).

sqrt

Shortcut for .5 pow (square root value of topmost element).

neg

Negate topmost element of the stack.

abs

Replace topmost element of the stack by its absolute value.

ceil

Replace topmost element of the stack by its ceiling value.

floor

Replace topmost element of the stack by its floor value.

round

Replace topmost element of the stack by its round value.

sum

Sum every element of the stack.

avg

Compute average value of the stack.

COMPARATORS

equal

Test if second element equals first one.

le

Test if second element is less or equal compared to first one.

lt

Test if second element is less than first one.

ge

Test if second element is greater or equal compared to first one.

gt

Test if second element is greater than first one.

BASE NUMBERS

calc accepts numbers in 'base mode' format, using the following syntax:

#...b

binary base number (example #01b)

#...o

octal base number (example #12o)

#...d

decimal base number (example #23d)

#...h

hexadecimal base number (example #ea1h)

Base numbers are displayed in decimal base by default. See commands bin, oct, dec, hex to change the default base number display mode.

base

Turn a float number into a base number.

float

Turn a base number into a float number.

bin

Display base numbers in base 2.

oct

Display base numbers in base 8.

dec

Display base numbers in base 10.

hex

Display base numbers in base 16.

BITWISE OPERATORS

blshift

Binary left shift operator.

4:
3:
2:
1:                 1.00
> 2 blshift

4:
3:
2:
1:                 4.00
>

brshift

Binary right shift operator.

band

Binary and between two topmost elements.

bor

Binary or between two topmost elements.

bxor

Binary xor between two topmost elements.

CONSTANTS

pi

The Pi constant.

e

Natural logarithm.

TRIGONOMETRY

cos

Cosinus.

sin

Sinus.

tan

Tangent.

acos

Arc-cosinus.

asin

Arc-sinus.

atan

Arc-tangent.

cosh

Hyperbolic-cosinus.

sinh

Hyperbolic-sinus.

tanh

Hyperbolic-tangent.

LABELS

calc supports the notion of labels, where values can be stored to / retrieved from. A valid label name is made of alphabetic characters and underscore character.

A label can be entered as is. If a value is already assigned to a label, the stored value is pushed on the stack. Otherwise, the label name is put on the stack. To put a label on the stack without evaluation, enter it in single quotes.

mem

Dump a list of labels and their associated value.

sto

Store a value into a label:

4:
3:
2:
1:
> 2 'two' sto

4:
3:
2:
1:
> mem

two: 2.00

4:
3:
2:
1:
> two

4:
3:
2:
1:                 2.00
>

sto+

Increment value stored in a label with the topmost value of the stack.

4:
3:
2:
1:                 5.00
> 'two' sto+

4:
3:
2:
1:
> two

4:
3:
2:
1:                 7.00
>

rcl

Recall a value stored in a label.

4:
3:
2:
1:
> 'two' rcl

4:
3:
2:
1:                 7.00
>

purge

Unassign value stored in a label.

4:
3:
2:
1:
> 'two' purge

PROGRAMS

<<...>>

Sequences of commands can be specified between double angle brackets:

4:
3:
2:
1:
> <<3 4 5 6>>

4:
3:
2:
1: <<3.00 4.00 5.00 6.00>>
>

eval

A program on top of the stack can be evaluted with the eval command:

4:
3:
2:
1: <<3.00 4.00 5.00 6.00>>
> eval

4:                 3.00
3:                 4.00
2:                 5.00
1:                 6.00
>

CONTROL FLOW

ift

If-then conditionnal. Expect a program as a first argument, and an int value as a second argument. program is evaluated if float value is not zero.

4:
3:
2: 1
1: <<3.00 4.00 add>>
> ift

4:
3:
2:
1:                 7.00
>

ifte

If-then-else conditionnal. Expect programs on first and second arguments, and an int value as a third argument. Evaluate first program if third argument is not zero, evaluate second program otherwise.

4:
3: 0
2: <<1.00 1.00 add>>
1: <<2.00 2.00 mul>>
> ifte

4:
3:
2:
1:                 2.00
>

whileop

While loop operator. Expect programs on first and second arguments. Evaluate first program as long a second program evaluate to a float value that is not zero.

COMMENTS

The '@' character mark the beginning of a comment. Following characters until EOL are discarded.

4:
3:
2:
1:
> @ this is a comment

RCFILE

On startup, calc parse the $HOME/.config/calc/calcrc if it exists. You can store there your custom commands. For example, this rc file defines a rgb command by storing a program into the 'rgb' label:

$ cat ~/.config/calc/calcrc
@ 'rgb' command to convert an hexadecimal color value into RGB format
<<dup 16 brshift #ffh band swap dup 8 brshift #ffh band swap #ffh band>> 'rgb' sto

$ calc

4:
3:
2:
1:
> #63c6a5h rgb

4:
3:                 #99d
2:                #198d
1:                #165d
>

AUTHOR

Gerome Fournier <jef@foutaise.org>.