%%% 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{\strut 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[]{\strut 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}