I use the GNU Emacs Calc, an RPN calculator, exclusively unless I’m away from a computer; as a programming, scientific and general calculator. This is my cheat sheet for my oft-used functions. There’s also a printable, broad-coverage official reference card (PDF). True to Emacs’ documenting tradition, the manual documents all features extensively, with examples too.
Programming
Binary
- Set binary radix:
d 2
- Prefix with
O
to display two’s complement as2##1100
instead of-2#0100
- Notice
#
-count for disambiguation
- Notice
- Other useful radices:
16
,0
and8
- Prefix with
- Set word size (32 bits by default) before doing anything interesting:
b w
- Set negative word size if you want to work on signed numbers
- Arithmetic
-1320 >> 4
=65530
(base = 16) instead of-83
(base = -16)
- Arithmetic
- Manually clip values to $2^w$:
b c
- Set word size per-operation (except shifts/rotates) with prefix:
C-u SIZE
- Example:
C-u 4 b n
flips bits and clips to $2^4$
- Example:
- Set negative word size if you want to work on signed numbers
- Enable leading zero display:
d z
- Useful to see the entire word
- Enable digit grouping:
d g
- Input numbers in a particular radix:
R#DIGITS
e.g.16#f00ba4
- Most useful binary operations start with prefix
b
- Binary NOT:
b n
- Binary AND, OR, XOR, DIFF:
b a
,b o
,b x
,b d
- Takes two operands from stack
- DIFF is actually bits set in
X
but not inY
i.e.X & ~Y
- Shift:
b l
,b r
,b R
,b L
- Takes 1 or prefix as second operand; use top-of-stack with Hyperbolic prefix
H
- Uppercase does arithmetic shift; arithmetic left shift makes sense with negative arguments
- Takes 1 or prefix as second operand; use top-of-stack with Hyperbolic prefix
- Rotate:
b t
- Takes 1 or prefix as second operand; use top-of-stack with Hyperbolic prefix
H
- Use negative second operand for rotate-right
- Takes 1 or prefix as second operand; use top-of-stack with Hyperbolic prefix
- Binary NOT:
Misc
- Integer divide quotient / reminder:
\
/%
- Note: floors (rounds → -∞) unlike the truncating C integer division (rounds → 0)
- Floor, Truncate, Ceil, Round:
F
,I R
,I F
,R
- Vector
- (Euclidean) Length / l-2 norm:
A
- Dot / Cross products:
*
/V C
- Determinant / Inverse / Transpose:
V D
/&
/v t
- Element-wise add (map):
V M +
- Sum elements (reduce):
V R +
- Pack / Unpack / Reverse:
v p
/v u
/v v
- (Euclidean) Length / l-2 norm:
- Convert to new unit / base unit:
u c
/u b
- Input with unit using algebraic input e.g.
' 60 km/hr
- Temperature units:
degC
,degF
,K
- Temperature units:
- Input with unit using algebraic input e.g.
- Prime numbers
- Test prime:
k p
- Prime factorize:
k f
- Next/Previous prime:
k n
,I k n
- Test prime:
- Random number:
k r
- Between [0, M) or (M, 0] depending on sign(M); M is top-of-stack or prefix
- Use
1.
(mind the decimal point) to generate numbers between [0, 1) - Random again (same M):
k a
- Shuffle $\binom{n}{k}$:
k h
- Takes
n
andk
from stack and returns a list - Shuffle top-of-stack list with prefix:
C-u -1
- Takes
- Permutation (${}_n\mathrm{ P }_k$) and Combination (${}_n\mathrm{ C }_k$):
H k c
,k c
- Factorial:
!
- Factorial:
Scientific
- Get constants
Key | Constant | Name | Value |
---|---|---|---|
P | $\pi$ | Pi | 3.14159265359 |
H P | $e$ | Euler’s number | 2.71828182846 |
I P | $\gamma$ | Euler’s constant | 0.577215664902 |
I H P | $\phi$ | Golden ratio | 1.61803398875 |
- Floating-point / Fixed-point / Scientific notation:
d n
/d f
/d s
- Set precision:
p
- Log to top-of-stack as base:
B
- Integer log to top-of-stack as base
f I
- $log_{10}$:
H L
- $ln$:
L
- Integer log to top-of-stack as base
- Square root:
Q
- Integer square root:
f Q
- n-th root:
I ^
- Integer square root:
- Reciprocal:
&
- Convert to fraction/float:
c F
/c f
- Change to radians/degrees:
m r
/m d
- Calculate sin and cos:
calc-sincos
General
- Edit top-of-stack: backtick
- Rotate stack:
C-u 0 M-TAB