Index: doc/user/user.tex
===================================================================
--- doc/user/user.tex	(revision 3ac5fd8bcb3728ce8676e2b55b9fd4f691a06719)
+++ doc/user/user.tex	(revision 6503ef4f201545a960c07a4385e562f244961952)
@@ -11,6 +11,6 @@
 %% Created On       : Wed Apr  6 14:53:29 2016
 %% Last Modified By : Peter A. Buhr
-%% Last Modified On : Thu Aug 15 22:23:30 2024
-%% Update Count     : 6957
+%% Last Modified On : Sat Dec  7 16:53:37 2024
+%% Update Count     : 6970
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
@@ -454,5 +454,5 @@
 The majority of these flags are used by \CFA developers, but some are occasionally useful to programmers.
 Each option must be escaped with \Indexc{-XCFA}\index{transpiler option!-XCFA@{©-XCFA©}} to direct it to the \CFA compilation step, similar to the ©-Xlinker© flag for the linker, \eg:
-\begin{lstlisting}[language=sh]
+\begin{lstlisting}[language=sh,escapechar=§]
 cfa §test§.cfa -CFA -XCFA -p # print translated code without printing the standard prelude
 cfa §test§.cfa -XCFA -P -XCFA parse -XCFA -n # show program parse without prelude
@@ -607,5 +607,5 @@
 C, \CC, and Java (and other programming languages) have \emph{no} exponentiation operator\index{exponentiation!operator}\index{operator!exponentiation}, \ie $x^y$, and instead use a routine, like \Indexc{pow(x,y)}, to perform the exponentiation operation.
 \CFA extends the basic operators with the exponentiation operator ©?©\R{©\\©}©?©\index{?\\?@©?@\@?©} and ©?©\R{©\\©}©=?©\index{?\\=?@©@\@=?©}, as in, ©x ©\R{©\\©}© y© and ©x ©\R{©\\©}©= y©, which means $x^y$ and $x \leftarrow x^y$.
-The priority of the exponentiation operator is between the cast and multiplicative operators, so that ©w * (int)x \ (int)y * z© is parenthesized as ©(w * (((int)x) \ ((int)y))) * z©.
+The priority of the exponentiation operator is between the cast and multiplicative operators, so ©-f(x) \ -g(y)© is parenthesized as ©(-f(x)) \ (-g(y))©.
 
 There are exponentiation operators for integral and floating types, including the builtin \Index{complex} types.
@@ -9419,26 +9419,26 @@
 The ©PRNG© types for sequential programs, including coroutining, are:
 \begin{cfa}
-struct PRNG32 {};						§\C{// opaque type, no copy or assignment}§
-void ?{}( PRNG32 & prng, uint32_t seed ); §\C{// fixed seed}§
-void ?{}( PRNG32 & prng );				§\C{// random seed}§
+struct PRNG32 {};							§\C[3.5in]{// opaque type, no copy or assignment}§
+void ?{}( PRNG32 & prng, uint32_t seed );	§\C{// fixed seed}§
+void ?{}( PRNG32 & prng );					§\C{// random seed}§
 void set_seed( PRNG32 & prng, uint32_t seed ); §\C{// set seed}§
-uint32_t get_seed( PRNG32 & prng );		§\C{// get seed}§
-uint32_t prng( PRNG32 & prng );			§\C{// [0,UINT\_MAX]}§
-uint32_t prng( PRNG32 & prng, uint32_t u ); §\C{// [0,u)}§
+uint32_t get_seed( PRNG32 & prng );			§\C{// get seed}§
+uint32_t prng( PRNG32 & prng );				§\C{// [0,UINT\_MAX]}§
+uint32_t prng( PRNG32 & prng, uint32_t u );	§\C{// [0,u)}§
 uint32_t prng( PRNG32 & prng, uint32_t l, uint32_t u ); §\C{// [l,u]}§
-uint32_t calls( PRNG32 & prng );		§\C{// number of calls}§
-void copy( PRNG32 & dst, PRNG32 & src ); §\C{// checkpoint PRNG state}§
-\end{cfa}
-\begin{cfa}
-struct PRNG64 {};						§\C{// opaque type, no copy or assignment}§
-void ?{}( PRNG64 & prng, uint64_t seed ); §\C{// fixed seed}§
-void ?{}( PRNG64 & prng );				§\C{// random seed}§
+uint32_t calls( PRNG32 & prng );			§\C{// number of calls}§
+void copy( PRNG32 & dst, PRNG32 & src );	§\C{// checkpoint PRNG state}§
+\end{cfa}
+\begin{cfa}
+struct PRNG64 {};							§\C{// opaque type, no copy or assignment}§
+void ?{}( PRNG64 & prng, uint64_t seed );	§\C{// fixed seed}§
+void ?{}( PRNG64 & prng );					§\C{// random seed}§
 void set_seed( PRNG64 & prng, uint64_t seed ); §\C{// set seed}§
-uint64_t get_seed( PRNG64 & prng );		§\C{// get seed}§
-uint64_t prng( PRNG64 & prng );			§\C{// [0,UINT\_MAX]}§
-uint64_t prng( PRNG64 & prng, uint64_t u ); §\C{// [0,u)}§
+uint64_t get_seed( PRNG64 & prng );			§\C{// get seed}§
+uint64_t prng( PRNG64 & prng );				§\C{// [0,UINT\_MAX]}§
+uint64_t prng( PRNG64 & prng, uint64_t u );	§\C{// [0,u)}§
 uint64_t prng( PRNG64 & prng, uint64_t l, uint64_t u ); §\C{// [l,u]}§
-uint64_t calls( PRNG64 & prng );		§\C{// number of calls}§
-void copy( PRNG64 & dst, PRNG64 & src ); §\C{// checkpoint PRNG state}§
+uint64_t calls( PRNG64 & prng );			§\C{// number of calls}§
+void copy( PRNG64 & dst, PRNG64 & src );	§\C{// checkpoint PRNG state}\CRT§
 \end{cfa}
 The type ©PRNG© is aliased to ©PRNG64© on 64-bit architectures and ©PRNG32© on 32-bit architectures.
@@ -9452,5 +9452,5 @@
 \begin{figure}
 \begin{cfa}
-PRNG sprng1, sprng2;					§\C{// select appropriate 32/64-bit PRNG}§
+PRNG sprng1, sprng2;						§\C{// select appropriate 32/64-bit PRNG}§
 ®set_seed( sprng1, 1009 )®;   ®set_seed( sprng2, 1009 )®;
 for ( 10 ) {
@@ -9496,14 +9496,14 @@
 The PRNG global and companion thread functions are for concurrent programming, such as randomizing execution in short-running programs, \eg ©yield( prng() % 5 )©.
 \begin{cfa}
-void set_seed( size_t seed );			§\C{// set global seed}§
-size_t get_seed();						§\C{// get global seed}§
+void set_seed( size_t seed );				§\C[3.5in]{// set global seed}§
+size_t get_seed();							§\C{// get global seed}§
 // SLOWER, global routines
-size_t prng( void );					§\C{// [0,UINT\_MAX]}§
-size_t prng( size_t u );				§\C{// [0,u)}§
-size_t prng( size_t l, size_t u );		§\C{// [l,u]}§
+size_t prng( void );						§\C{// [0,UINT\_MAX]}§
+size_t prng( size_t u );					§\C{// [0,u)}§
+size_t prng( size_t l, size_t u );			§\C{// [l,u]}§
 // FASTER, thread members
-size_t prng( §thread\LstStringStyle{\textdollar}§ & th );	§\C{// [0,UINT\_MAX]}§
-size_t prng( §thread\LstStringStyle{\textdollar}§ & th, size_t u );	§\C{// [0,u)}§
-size_t prng( §thread\LstStringStyle{\textdollar}§ & th, size_t l, size_t u );	§\C{// [l,u]}§
+size_t prng( §thread\LstStringStyle{\textdollar}§ & th ); §\C{// [0,UINT\_MAX]}§
+size_t prng( §thread\LstStringStyle{\textdollar}§ & th, size_t u ); §\C{// [0,u)}§
+size_t prng( §thread\LstStringStyle{\textdollar}§ & th, size_t l, size_t u ); §\C{// [l,u]}\CRT§
 \end{cfa}
 The only difference between the two sets of ©prng© routines is performance.
