]
.SH DESCRIPTION
.I Pc
-is an arbitrary precision calculator with a special emphasis on supporting two's complement bit operations and working with different number bases.
+is an arbitrary precision integer calculator with a special emphasis on supporting two's complement bit operations and working with different number bases.
.PP
.I Pc
reads input statements which are either expressions or control statements.
.TP
.B < >= < <= == !=
.PP
+The \fB$\fR operator performs sign extension. \fIn\fB$\fIx\fR truncates \fIx\fR to \fIn\fR bits and sign extends.
+If \fIn\fR is omitted, it is inferred from the highest set bit (the result is always ≤ 0 in this case).
+.PP
Variables can be defined using
.BR = .
The builtin variable
.I hex(n)
Display \fIn\fR in hexadecimal.
.TP
+.I pb(n, b)
+Display \fIn\fR in base \fIb\fR (currently must be one of 0, 2, 8, 10, 16; 0 uses the defined output base).
+.TP
.I abs(n)
Absolute value of \fIn\fR.
.TP
.I gcd(n,m)
The greatest common divisor of \fIn\fR and \fIm\fR.
.TP
+.I clog(a,b)
+The ceiling of the logarithm of \fIa\fR with respect to base \fIb\fR. \fIb\fR can be omitted, in which case it defaults to 2.
+.TP
.I minv(n,m)
The inverse of \fIn\fR mod \fIm\fR.
.TP
Use truncating division (same as C).
\fIa\fR / \fIb\fR is rounded towards zero.
\fIa\fR % \fIb\fR can be negative.
+.TP
+\fL\'\fR 1
+Enable numbering bits (disable with 0).
+If the base is a power of two, print the number of the corresponding bit above each digit.
.SH SOURCE
.B /sys/src/cmd/pc.y
.SH "SEE ALSO"