%%% Two notes on column specification:
%%% (i)  Column widths are manually chosen as small as possible to allow
%%%      for a wider last X column.
%%% (ii)  In the first column \linepenalty=100 prefers shorter paragraphs
%%%       (less lines), where plain \raggedright were indifferent and
%%%       sometimes caused a dangling line, e.g., for 'directionpoint of'
%%%       or 'directiontime of'.
\begin{longtable}{|>{\raggedright\linepenalty=100\ttfamily}p{.793in}*{3}{|>{\raggedright}p{.715in}}|>{\raggedleft}p{1.5em}|>{\raggedright\arraybackslash}X|}
\caption{Operators}\label{optab}\\
\hline
Name&  \multicolumn3{c|}{Argument/result types}&  \makebox[.2in][c]{Page}&  Explanation\\\cline{2-4}
&  \multicolumn1{c|}{Left}&  \multicolumn1{c|}{Right}&  \multicolumn1{c|}{Result}&  &  \\
\hline
\hline
\endfirsthead
\caption[]{Operators \emph{(continued)}}\\
\hline
Name&  \multicolumn3{c|}{Argument/result types}&  \makebox[.2in][c]{Page}&  Explanation\\\cline{2-4}
&  \multicolumn1{c|}{Left}&  \multicolumn1{c|}{Right}&  \multicolumn1{c|}{Result}&  &  \\
\hline
\hline
\endhead
\&&  string\par path&  string\par path &  string\par path&  \pageref{Damp}&  Concatenation---works for paths $l\hbox{\tt\&}r$ if $r$ starts exactly where the $l$ ends\\\hline
*&  numeric&  (cmyk)color\par numeric\par pair&  (cmyk)color\par numeric\par pair&  \pageref{Dmldiv}&  Multiplication\\\hline
*&  (cmyk)color\par numeric\par pair&  numeric&  (cmyk)color\par numeric\par pair&  \pageref{Dmldiv}&  Multiplication\\\hline
**&  numeric&  numeric&  numeric&  \pageref{Dpow}&  Exponentiation\\\hline
+&  (cmyk)color\par numeric\par pair&  (cmyk)color\par numeric\par pair&  (cmyk)color\par numeric\par pair&  \pageref{Dadd}&  Addition\\\hline
++&  numeric&  numeric&  numeric&  \pageref{Dpyadd}&  Pythagorean addition $\sqrt{l^2+r^2}$\\\hline
+-+&  numeric&  numeric&  numeric&  \pageref{Dpysub}&  Pythagorean subtraction $\sqrt{l^2-r^2}$\\\hline
-&  (cmyk)color\par numeric\par pair&  (cmyk)color\par numeric\par pair&  (cmyk)color\par numeric\par pair&  \pageref{Dadd}&  Subtraction\\\hline
-&  --&  (cmyk)color\par numeric\par pair&  (cmyk)color\par numeric\par pair&  \pageref{Dneg}&  Negation\\\hline
/&  (cmyk)color\par numeric\par pair&  numeric&  (cmyk)color\par numeric\par pair&  \pageref{Dmldiv}&  Division\\\hline
< = >\par <= >=\par <>&  string\par numeric\par pair\par (cmyk)color\par transform&  string\par numeric\par pair\par (cmyk)color\par transform&  boolean&  \pageref{Dcmpar}&  Comparison operators\\\hline
\pl abs&  --&  numeric\par pair&  numeric&  \pageref{Dabs}&  Absolute value\par Euclidean length $\sqrt{(\mbox{\ttfamily xpart\ } r)^2+(\mbox{\ttfamily ypart\ } r)^2}$\\\hline
and&  boolean&  boolean&  boolean&  \pageref{Dand}&  Logical and\\\hline
angle&  --&  pair&  numeric&  \pageref{Dangle}&  2$-$argument arctangent (in degrees)\\\hline
arclength&  --&  path&  numeric&  \pageref{Darclng}&  Arc length of a path\\\hline
arctime of&  numeric&  path&  numeric&  \pageref{Darctim}&  Time on a path where arc length from the start reaches a given value\\\hline
ASCII\index{ASCII?\texttt{ASCII}}&  --&  string&  numeric&  --&  ASCII value of first character in string\\\hline
\pl bbox&  --&  picture\par path\par pen&  path&  \pageref{Dbbox}&  A rectangular path for the bounding box\\\hline
blackpart&  --&  cmykcolor&  numeric&  \pageref{Dcmykprt}&  Extract the fourth component\\\hline
bluepart&  --&  color&  numeric&  \pageref{Drgbprt}&  Extract the third component\\\hline
boolean&  --&  any&  boolean&  \pageref{Dboolop}&  Is the expression of type boolean?\\\hline
\pl bot&  --&  numeric\par pair&  numeric\par pair&  \pageref{Dbot}&  Bottom of current pen when centered at the given coordinate(s)\\\hline
bounded&  --&  any&  boolean&  \pageref{Dbounded}&  Is argument a picture with a bounding box?\\\hline
\pl ceiling&  --&  numeric&  numeric&  \pageref{Dceil}&  Least integer greater than or equal to\\\hline
\pl center&  --&  picture\par path\par pen&  pair&  \pageref{Dcenter}&  Center of the bounding box\\\hline
char&  --&  numeric&  string&  \pageref{Dchar}&  Character with a given ASCII code\\\hline
clipped&  --&  any&  boolean&  \pageref{Dclipped}&  Is argument a clipped picture?\\\hline
cmykcolor&  --&  any&  boolean&  \pageref{Dccolrop}&  Is the expression of type cmykcolor?\\\hline
colormodel&  --&  image object&  numeric&  --&  What is the color model of the image object?\\\hline
color&  --&  any&  boolean&  \pageref{Dcolrop}&  Is the expression of type color?\\\hline
cosd&  --&  numeric&  numeric&  \pageref{Dcosd}&  Cosine of angle in degrees\\\hline
\pl cutafter&  path&  path&  path&  \pageref{Dcuta}&  Left argument with part after the intersection dropped\\\hline
\pl cutbefore&  path&  path&  path&  \pageref{Dcutb}&  Left argument with part before the intersection dropped\\\hline
cyanpart&  --&  cmykcolor&  numeric&  \pageref{Dcmykprt}&  Extract the first component\\\hline
cycle&  --&  path&  boolean&  \pageref{Dcycop}&  Determines whether a path is cyclic\\\hline
dashpart&  --&  picture&  picture&  \pageref{Ddashpart}&  Dash pattern of a path in a stroked picture\\\hline
decimal&  --&  numeric&  string&  \pageref{Ddecop}&  The decimal representation\\\hline
\pl dir&  --&  numeric&  pair&  \pageref{Ddirop}&  $(\cos\theta,\sin\theta)$ given $\theta$ in degrees\\\hline
\pl direction of&  numeric&  path&  pair&  \pageref{Ddirof}&  The direction of a path at a given `time'\\\hline
\pl direction\-point of&  pair&  path&  numeric&  \pageref{Ddpntof}&  Point where a path has a given direction\\\hline
direction\-time of&  pair&  path&  numeric&  \pageref{Ddtimof}&  `Time' when a path has a given direction\\\hline
\pl div\index{div?\texttt{div}}&  numeric&  numeric&  numeric&  --&  Integer division $\lfloor l/r\rfloor$\\\hline
\pl dotprod&  pair&  pair&  numeric&  \pageref{Ddprod}&  vector dot product\\\hline
filled&  --&  any&  boolean&  \pageref{Dfilled}&  Is argument a filled outline?\\\hline
floor&  --&  numeric&  numeric&  \pageref{Dfloor}&  Greatest integer less than or equal to\\\hline
fontpart&  --&  picture&  string&  \pageref{Dfontpart}&  Font of a textual picture component\\\hline
fontsize&  --&  string&  numeric&  \pageref{Dfntsiz}&  The point size of a font\\\hline
greenpart&  --&  color&  numeric&  \pageref{Drgbprt}&  Extract the second component\\\hline
greypart&  --&  numeric&  numeric&  --&  Extract the first (only) component\\\hline
hex\index{hex?\texttt{hex}}&  --&  string&  numeric&  --&  Interpret as a hexadecimal number\\\hline
infont&  string&  string&  picture&  \pageref{Sinfont}&  Typeset string in given font\\\hline
\pl intersec\-tionpoint&  path&  path&  pair&  \pageref{Disecpt}&  An intersection point\\\hline
intersec\-tiontimes&  path&  path&  pair&  \pageref{Disectt}&  Times ($t_l,t_r)$ on paths $l$ and $r$ when the paths intersect\\\hline
\pl inverse&  --&  transform&  transform&  \pageref{Dinv}&  Invert a transformation\\\hline
known&  --&  any&  boolean&  \pageref{Dknown}&  Does argument have a known value?\\\hline
length&  --&  path\par string\par picture&  numeric&  \pageref{Dlength}\par \pageref{DlengthString}\par \pageref{DlengthPicture}&  Number of components (arcs, characters, strokes, \ldots) in the argument\\\hline
\pl lft&  --&  numeric\par pair&  numeric\par pair&  \pageref{Dlft}&  Left side of current pen when its center is at the given coordinate(s)\\\hline
llcorner&  --&  picture\par path\par pen&  pair&  \pageref{Dcornop}&  Lower-left corner of bounding box\\\hline
lrcorner&  --&  picture\par path\par pen&  pair&  \pageref{Dcornop}&  Lower-right corner of bounding box\\\hline
magentapart&  --&  cmykcolor&  numeric&  \pageref{Dcmykprt}&  Extract the second component\\\hline
makepath&  --&  pen&  path&  \pageref{Dmkpath}&  Cyclic path bounding the pen shape\\\hline
makepen&  --&  path&  pen&  \pageref{Dmkpen}&  A polygonal pen made from the convex hull of the path knots\\\hline
mexp\index{mexp?\texttt{mexp}}&  --&  numeric&  numeric&  --&  The function $\exp(x/256)$\\\hline
mlog\index{mlog?\texttt{mlog}}&  --&  numeric&  numeric&  --&  The function $256\ln(x)$\\\hline
\pl mod\index{mod?\texttt{mod}}&  --&  numeric&  numeric&  --&  The remainder function $l-r\lfloor l/r\rfloor$\\\hline
normal\-deviate\index{normaldeviate?\texttt{normaldeviate}}&  --&  --&  numeric&  --&  Choose a random number with mean~0 and standard deviation~1\\\hline
not&  --&  boolean&  boolean&  \pageref{Dnot}&  Logical negation\\\hline
numeric&  --&  any&  boolean&  \pageref{Dnumop}&  Is the expression of type numeric?\\\hline
oct\index{oct?\texttt{oct}}&  --&  string&  numeric&  --&  Interpret string as octal number\\\hline
odd\index{odd?\texttt{odd}}&  --&  numeric&  boolean&  --&  Is the closest integer odd or even?\\\hline
or&  boolean&  boolean&  boolean&  \pageref{Dor}&  Logical inclusive or\\\hline
pair&  --&  any&  boolean&  \pageref{Dpairop}&  Is the expression of type pair?\\\hline
path&  --&  any&  boolean&  \pageref{Dpathop}&  Is the expression of type path?\\\hline
pathpart&  --&  picture&  path&  \pageref{Dpathpart}&  Path of a stroked picture component\\\hline
pen&  --&  any&  boolean&  \pageref{Dpenop}&  Is the expression of type pen?\\\hline
penoffset of\index{penoffset?\texttt{penoffset}}&  pair&  pen&  pair&  --&  Point on the pen furthest to the right of the given direction\\\hline
penpart&  --&  picture&  pen&  \pageref{Dpenpart}&  Pen of a stroked picture component\\\hline
picture&  --&  any&  boolean&  \pageref{Dpictop}&  Is the expression of type picture?\\\hline
point of&  numeric&  path&  pair&  \pageref{Dpntof}&  Point on a path given a time value\\\hline
postcontrol of\index{postcontrol?\texttt{postcontrol}}&  numeric&  path&  pair&  --&  First B\'ezier control point on path segment starting at the given time\\\hline
precontrol of\index{precontrol?\texttt{precontrol}}&  numeric&  path&  pair&  --&  Last B\'ezier control point on path segment ending at the given time\\\hline
readfrom&  --&  string&  string&  \pageref{Dreadfrom}&  Read a line from file\\\hline
redpart&  --&  color&  numeric&  \pageref{Drgbprt}&  Extract the first component\\\hline
reverse&  --&  path&  path&  \pageref{Drevrse}&  `time'-reversed path, beginning swapped with ending\\\hline
rgbcolor&  --&  any&  boolean&  \pageref{Drcolrop}&  Is the expression of type color?\\\hline
rotated&  picture\par path\par pair\par pen\par transform&  numeric&  picture\par path\par pair\par pen\par transform&  \pageref{Dtranop}&  Rotate counterclockwise a given number of degrees\\\hline
\pl round&  --&  numeric\par pair&  numeric\par pair&  \pageref{Dround}&  round each component to the nearest integer\\\hline
\pl rt&  --&  numeric\par pair&  numeric\par pair&  \pageref{Drt}&  Right side of current pen when centered at given coordinate(s)\\\hline
scaled&  picture\par path\par pair\par pen\par transform&  numeric&  picture\par path\par pair\par pen\par transform&  \pageref{Dtranop}&  Scale all coordinates by the given amount\\\hline
scantokens&  --&  string&  token sequence&  \pageref{Dscantokens}&  Converts a string to a token or token sequence. Provides string to numeric conversion, etc.\\\hline
shifted&  picture\par path\par pair\par pen\par transform&  pair&  picture\par path\par pair\par pen\par transform&  \pageref{Dtranop}&  Add the given shift amount to each pair of coordinates\\\hline
sind&  --&  numeric&  numeric&  \pageref{Dsind}&  Sine of an angle in degrees\\\hline
slanted&  picture\par path\par pair\par pen\par transform&  numeric&  picture\par path\par pair\par pen\par transform&  \pageref{Dtranop}&  Apply the slanting transformation that maps $(x,y)$ into $(x+sy,y)$, where~$s$ is the numeric argument\\\hline
sqrt&  --&  numeric&  numeric&  \pageref{Dsqrt}&  Square root\\\hline
str&  --&  suffix&  string&  \pageref{Dstr}&  String representation for a suffix\\\hline
string&  --&  any&  boolean&  \pageref{Dstrgop}&  Is the expression of type string?\\\hline
stroked&  --&  any&  boolean&  \pageref{Dstroked}&  Is argument a stroked line?\\\hline
subpath of&  pair&  path&  path&  \pageref{Dsubpth}&  Portion of a path for given range of time values\\\hline
substring of&  pair&  string&  string&  \pageref{Dsubstr}&  Substring bounded by given indices\\\hline
textpart&  --&  picture&  string&  \pageref{Dtextpart}&  Text of a textual picture component\\\hline
textual&  --&  any&  boolean&  \pageref{Dtextual}&  Is argument typeset text?\\\hline
\pl top&  --&  numeric\par pair&  numeric\par pair&  \pageref{Dtop}&  Top of current pen when centered at the given coordinate(s)\\\hline
transform&  --&  any&  boolean&  \pageref{Dtrnfop}&  Is the argument of type transform?\\\hline
transformed&  picture\par path\par pair\par pen\par transform&  transform&  picture\par path\par pair\par pen\par transform&  \pageref{Dtrfrmd}&  Apply the given transform to all coordinates\\\hline
ulcorner&  --&  picture\par path\par pen&  pair&  \pageref{Dcornop}&  Upper-left corner of bounding box\\\hline
uniform\-deviate\index{uniformdeviate?\texttt{uniformdeviate}}&  --&  numeric&  numeric&  --&  Random number between zero and the value of the argument\\\hline
\pl unitvector&  --&  pair&  pair&  \pageref{Duvec}&  Rescale a vector so its length is~1\\\hline
unknown&  --&  any&  boolean&  \pageref{Dunknwn}&  Is the value unknown?\\\hline
urcorner&  --&  picture\par path\par pen&  pair&  \pageref{Dcornop}&  Upper-right corner of bounding box\\\hline
\pl whatever&  --&  --&  numeric&  \pageref{Dwhatev}&  Create a new anonymous unknown\\\hline
withpost\-script&  --&  string&  ---&  \pageref{Dwithpost}&  End raw PostScript code\\\hline
withpre\-script&  --&  string&  ---&  \pageref{Dwithpre}&  Begin raw PostScript code\\\hline
xpart&  --&  pair\par transform&  number&  \pageref{Dxprt}&  $x$ or $t_x$ component\\\hline
xscaled&  picture\par path\par pair\par pen\par transform&  numeric&  picture\par path\par pair\par pen\par transform&  \pageref{Dtranop}&  Scale all $x$ coordinates by the given amount\\\hline
xxpart&  --&  transform&  number&  \pageref{Dtrprt}&  $t_{xx}$ entry in transformation matrix\\\hline
xypart&  --&  transform&  number&  \pageref{Dtrprt}&  $t_{xy}$ entry in transformation matrix\\\hline
yellowpart&  --&  cmykcolor&  numeric&  \pageref{Dcmykprt}&  Extract the third component\\\hline
ypart&  --&  pair\par transform&  number&  \pageref{Dyprt}&  $y$ or $t_y$ component\\\hline
yscaled&  picture\par path\par pair\par pen\par transform&  numeric&  picture\par path\par pair\par pen\par transform&  \pageref{Dtranop}&  Scale all $y$ coordinates by the given amount\\\hline
yxpart&  --&  transform&  number&  \pageref{Dtrprt}&  $t_{yx}$ entry in transformation matrix\\\hline
yypart&  --&  transform&  number&  \pageref{Dtrprt}&  $t_{yy}$ entry in transformation matrix\\\hline
zscaled &  picture\par path\par pair\par pen\par transform&  pair&  picture\par path\par pair\par pen\par transform&  \pageref{Dtranop}&  Rotate and scale all coordinates so that $(1,0)$ is mapped into the given pair; i.e., do complex multiplication.\\\hline
\end{longtable}
