desk calculator, aka desk calculator, is a programming language created in 1978. dc (desk calculator) is a cross-platform reverse-polish calculator which supports arbitrary-precision arithmetic. It is one of the oldest Unix utilities, predating even the invention of the C programming language. Like other utilities of that vintage, it has a powerful set of features but terse syntax. Read more on Wikipedia...

 42Years Old 20Users ?Jobs

### Example code from Wikipedia:

```#!/usr/bin/perl

my (\$g,\$e,\$m) = map { "\U\$_" } @ARGV;
die "\$0 gen exp mod\n" unless \$m;

print `echo \$g \$e \$m | dc -e '
# Hex input and output
16dio
# Read m, e and g from stdin on one line
?SmSeSg

# Function z: return g * top of stack
[lg*]sz

# Function Q: remove the top of the stack and return 1
[sb1q]sQ

# Function X(e): recursively compute g^e % m
# It is the same as Sm^Lm%, but handles arbitrarily large exponents.
# Stack at entry: e
# Stack at exit: g^e % m
# Since e may be very large, this uses the property that g^e % m ==
#	if( e == 0 )
#		return 1
#	x = (g^(e/2)) ^ 2
#	if( e % 2 == 1 )
#		x *= g
#	return x %
[
d 0=Q		# return 1 if e==0 (otherwise, stack: e)
d 2% Sa		# Store e%2 in a (stack: e)
2/		# compute e/2
lXx		# call X(e/2)
d*		# compute X(e/2)^2
La1=z		# multiply by g if e%2==1
lm %		# compute (g^e) % m
] SX

le	# Load e from the register
lXx	# compute g^e % m
p	# Print the result
'`;```

Last updated January 25th, 2020

Edit desk calculator on GitHub