Category:Dc: Difference between revisions

Expand the quick reference to cover OpenBSD dc.
No edit summary
(Expand the quick reference to cover OpenBSD dc.)
Line 4:
}}dc is the unix desktop calculator. It uses a reverse polish notation and is turing complete.
 
== Quick reference ==
Commands in POSIX[[AT&T dc]]
number : push a number
number : push a number (0-9A-F digits, _ negative, . radix point)
+ - / * % ^ : arithmetic operations: add sub div mul mod exp
sx Sx[...] : pop the stack and save or push it to registera xstring
+ - / * / % ^ : arithmetic operations: add sub div mul div mod exppow
lx Lx : copy | pop the register x to main stack.
av : asciifysquare root
pc : print top of theclear stack
d : duplicate top of the stack
p : print top of the stack
P : pop and print String
f : show stack
qp : exitprint (dropvalue executionwith stacka bynewline, 2)leave it on the stack
QP : dropprint executionstring, stackor byprint topnumber ofas theASCII stack numberstring
x sx : executestore dcto commandsregister on top of the stackx
X lx : replace top of stack byload itsfrom scaleregister factor.x
[...]Sx : stringpush to register notationx
<xLx >x =x : compare 2 elements at top of the stack, and: executepop register x
va b :x : store x[b] := a (x squareis rootregister)
a ;rx : retrieve rx[b]
<x >x =x : compare top 2 values: if true, then execute register x
!>x !<x !=x : (example: 5 2 <A executes register A if 2 < 5)
! : shell command
cq : clearquit, or break 2 execution levels
n Q : break n execution levels
i : set input radix from top of stack
I : pushget current input base, onpush theit top of theon stack.
o : set output radix from top of stack
O : pushget current output base, onpush theit top of theon stack.
k : set scale factor
K : get current scale factor
zx : getexecute thea currentstring stackof level.dc commands
ZX : getcount thedecimal characterdigits lengthafter ofdecimal element at top of stackpoint
?z : readcount inputelements andon execute.the stack
Z : count all decimal digits in number, or characters in string
P? : popread and printexecute Stringone line of input
Y : debug information
a b :r : store r[b] = a (r is register)
a ;r : retrieve r[b]
 
Extensions in both [[GNU dc]] and [[OpenBSD dc]]
GNU Extensions
na : print value without a newASCII linecharacter
n : print value without a newline
~ : divmod: division and remainder
r : reverse (swap) the top two elements
~# : arithmetic - divmodcomment
 
Extension in [[GNU dc]]
n : print value without a new line
~ : arithmetic - divmod
| : arithmetic - modular exponentiation
 
r : swap the top two elements
Extensions in [[OpenBSD dc]]
a : asciify
n J : break n execution levels, then jump to next M
!>r !<r !=r : execute contents of register x based on comparison
XM : pushesmark for the number of fractionalJ digitscommand
#a N : boolean not: commentpush 1 if a == 0, else push 0
lxR Lx : copy | : pop theand registerdiscard xtop toof mainthe stack.
<xey >xey : comparisons with an else branch: if true,
=xey !<xey : then execute register x
!>xey !=xey : else execute register y
a b G : equality: push 1 if b == a, else push 0
a b ( : less than: push 1 if b < a, else push 0
Anonymous user