CloudFlare suffered a massive security issue affecting all of its customers, including Rosetta Code. All passwords not changed since February 19th 2017 have been expired, and session cookie longevity will be reduced until late March.--Michael Mol (talk) 05:15, 25 February 2017 (UTC)


From Rosetta Code
This programming language may be used to instruct a computer to perform a task.
Execution method: Interpreted
Type checking: Dynamic
See Also:

Listed below are all of the tasks on Rosetta Code which have been solved using Dc.
Your Help Needed
If you know Dc, please write code for some of the tasks not implemented in Dc.
dc is the unix desktop calculator.

It uses a reverse polish notation and is turing complete.

See also
  • bc - basic calculator

Quick reference[edit]

Commands in AT&T dc

number      : push a number (0-9A-F digits, _ negative, . radix point)
[...]       : push a string
+ - * / % ^ : arithmetic operations: add sub mul div mod pow
v           : square root
c           : clear stack
d           : duplicate top of the stack
f           : show stack
p           : print value with a newline, leave it on the stack
P           : print string, or print number as ASCII string
sx          : store to register x
lx          : load from register x
Sx          : push to register x
Lx          : pop register x
1 2 :x      : store x[2] = 1 (x is register)
2 ;x        : retrieve x[2]
<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
q           : quit, or break 2 execution levels
3 Q         : break 3 execution levels
i           : set input radix from top of stack
I           : get current input base, push it on stack
o           : set output radix from top of stack
O           : get current output base, push it on stack
k           : set scale factor
K           : get current scale factor
x           : execute a string of dc commands
X           : count decimal digits after decimal point
z           : count elements on the stack
Z           : count all decimal digits in number, or characters in string
?           : read and execute one line of input
Y           : debug information

Extensions in both GNU dc and OpenBSD dc

a           : print ASCII character
n           : print value without a newline
~           : divmod: division and remainder
r           : reverse (swap) the top two elements
#           : comment

Extension in GNU dc

|           : arithmetic - modular exponentiation

Extensions in OpenBSD dc

3 J         : break 3 execution levels, then jump to next M
M           : mark for the J command
R           : pop and discard top of the stack
<xey >xey   : comparisons with an else branch: if true,
=xey !<xey  :   then execute register x
!>xey !=xey :   else execute register y
1 2 G       : equality: push 1 if 2 == 1, else push 0
1 2 (       : less than: push 1 if 2 < 1, else push 0
3 N         : boolean not: push 1 if 3 == 0, else push 0


This category has the following 3 subcategories, out of 3 total.