]> www.ginac.de Git - cln.git/commitdiff
- Added lots of @cindex to produce an index.
authorRichard Kreckel <kreckel@ginac.de>
Thu, 4 May 2000 19:32:30 +0000 (19:32 +0000)
committerRichard Kreckel <kreckel@ginac.de>
Thu, 4 May 2000 19:32:30 +0000 (19:32 +0000)
- Minor updates / fixed typos.

20 files changed:
doc/cln.dvi
doc/cln.html
doc/cln.info
doc/cln.ps
doc/cln.tex
doc/cln.texi
doc/cln_1.html
doc/cln_10.html
doc/cln_11.html
doc/cln_12.html
doc/cln_13.html
doc/cln_2.html
doc/cln_3.html
doc/cln_4.html
doc/cln_5.html
doc/cln_6.html
doc/cln_7.html
doc/cln_8.html
doc/cln_9.html
doc/cln_toc.html

index a1e064dcae4275401a1a67e6e5617eaffe63bd2c..086cf54ac849ccff0928188b6bc52f3035b1a310 100644 (file)
Binary files a/doc/cln.dvi and b/doc/cln.dvi differ
index 9e9c2b8a9e8691041da95b8c490ea2d1a64699ac..f46415340934c93281fab585a5cabae03f507e55 100644 (file)
@@ -1,6 +1,6 @@
 <HTML>
 <HEAD>
-<!-- Created by texi2html 1.56k from cln.texi on 14 January 2000 -->
+<!-- Created by texi2html 1.56k from cln.texi on 4 May 2000 -->
 
 <TITLE>CLN, a Class Library for Numbers</TITLE>
 </HEAD>
@@ -243,8 +243,9 @@ The kernel of CLN has been written in assembly language for some CPUs
 (<CODE>i386</CODE>, <CODE>m68k</CODE>, <CODE>sparc</CODE>, <CODE>mips</CODE>, <CODE>arm</CODE>).
 <LI>
 
-On all CPUs, CLN uses the superefficient low-level routines from GNU
-GMP version 2.
+<A NAME="IDX1"></A>
+On all CPUs, CLN may be configured to use the superefficient low-level
+routines from GNU GMP version 3.
 <LI>
 
 It uses Karatsuba multiplication, which is significantly faster
@@ -253,9 +254,9 @@ for large numbers than the standard multiplication algorithm.
 
 For very large numbers (more than 12000 decimal digits), it uses
 Schönhage-Strassen
-multiplication, which is an asymptotically
-optimal multiplication algorithm, for multiplication, division and
-radix conversion.
+<A NAME="IDX2"></A>
+multiplication, which is an asymptotically optimal multiplication
+algorithm, for multiplication, division and radix conversion.
 </UL>
 
 <P>
@@ -292,7 +293,7 @@ This section describes how to install the CLN package on your system.
 To build CLN, you need a C++ compiler.
 Actually, you need GNU <CODE>g++ 2.7.0</CODE> or newer.
 On HPPA, you need GNU <CODE>g++ 2.8.0</CODE> or newer.
-I recommend GNU <CODE>egcs 1.1</CODE> or newer.
+I recommend GNU <CODE>g++ 2.95</CODE> or newer.
 
 
 <P>
@@ -315,6 +316,8 @@ of static and global variables, a feature which I could
 implement for GNU g++ only.
 
 
+<P>
+<A NAME="IDX3"></A>
 
 
 <H3><A NAME="SEC5" HREF="cln.html#TOC5">2.1.2 Make utility</A></H3>
@@ -323,6 +326,8 @@ implement for GNU g++ only.
 To build CLN, you also need to have GNU <CODE>make</CODE> installed.
 
 
+<P>
+<A NAME="IDX4"></A>
 
 
 <H3><A NAME="SEC6" HREF="cln.html#TOC6">2.1.3 Sed utility</A></H3>
@@ -446,11 +451,6 @@ With full <SAMP>`-O2'</SAMP>, <CODE>g++</CODE> miscompiles the division routines
 --enable-shared to work, you need egcs-1.1.2 or newer.
 
 
-<P>
-On MIPS (SGI Irix 6), pass option <CODE>--without-gmp</CODE> to configure. gmp does
-not work when compiled in <SAMP>`n32'</SAMP> binary format on Irix.
-
-
 <P>
 By default, only a static library is built. You can build CLN as a shared
 library too, by calling <CODE>configure</CODE> with the option <SAMP>`--enable-shared'</SAMP>.
@@ -467,6 +467,9 @@ library.
 
 
 <H2><A NAME="SEC8" HREF="cln.html#TOC8">2.3 Installing the library</A></H2>
+<P>
+<A NAME="IDX5"></A>
+
 
 <P>
 As with any autoconfiguring GNU software, installation is as easy as this:
@@ -552,6 +555,8 @@ Rational number                     Floating-point number
 </PRE>
 
 <P>
+<A NAME="IDX6"></A>
+<A NAME="IDX7"></A>
 The base class <CODE>cl_number</CODE> is an abstract base class.
 It is not useful to declare a variable of this type except if you want
 to completely disable compile-time type checking and use run-time type
@@ -559,17 +564,24 @@ checking instead.
 
 
 <P>
+<A NAME="IDX8"></A>
+<A NAME="IDX9"></A>
+<A NAME="IDX10"></A>
 The class <CODE>cl_N</CODE> comprises real and complex numbers. There is
 no special class for complex numbers since complex numbers with imaginary
 part <CODE>0</CODE> are automatically converted to real numbers.
 
 
 <P>
+<A NAME="IDX11"></A>
 The class <CODE>cl_R</CODE> comprises real numbers of different kinds. It is an
 abstract class.
 
 
 <P>
+<A NAME="IDX12"></A>
+<A NAME="IDX13"></A>
+<A NAME="IDX14"></A>
 The class <CODE>cl_RA</CODE> comprises exact real numbers: rational numbers, including
 integers. There is no special class for non-integral rational numbers
 since rational numbers with denominator <CODE>1</CODE> are automatically converted
@@ -577,6 +589,7 @@ to integers.
 
 
 <P>
+<A NAME="IDX15"></A>
 The class <CODE>cl_F</CODE> implements floating-point approximations to real numbers.
 It is an abstract class.
 
@@ -584,6 +597,9 @@ It is an abstract class.
 
 
 <H2><A NAME="SEC11" HREF="cln.html#TOC11">3.1 Exact numbers</A></H2>
+<P>
+<A NAME="IDX16"></A>
+
 
 <P>
 Some numbers are represented as exact numbers: there is no loss of information
@@ -625,6 +641,9 @@ is completely transparent.
 
 
 <H2><A NAME="SEC12" HREF="cln.html#TOC12">3.2 Floating-point numbers</A></H2>
+<P>
+<A NAME="IDX17"></A>
+
 
 <P>
 Not all real numbers can be represented exactly. (There is an easy mathematical
@@ -635,6 +654,7 @@ CLN implements ordinary floating-point numbers, with mantissa and exponent.
 
 
 <P>
+<A NAME="IDX18"></A>
 The elementary operations (<CODE>+</CODE>, <CODE>-</CODE>, <CODE>*</CODE>, <CODE>/</CODE>, ...)
 only return approximate results. For example, the value of the expression
 <CODE>(cl_F) 0.3 + (cl_F) 0.4</CODE> prints as <SAMP>`0.70000005'</SAMP>, not as
@@ -665,6 +685,7 @@ Floating point numbers come in four flavors:
 <UL>
 <LI>
 
+<A NAME="IDX19"></A>
 Short floats, type <CODE>cl_SF</CODE>.
 They have 1 sign bit, 8 exponent bits (including the exponent's sign),
 and 17 mantissa bits (including the "hidden" bit).
@@ -672,6 +693,7 @@ They don't consume heap allocation.
 
 <LI>
 
+<A NAME="IDX20"></A>
 Single floats, type <CODE>cl_FF</CODE>.
 They have 1 sign bit, 8 exponent bits (including the exponent's sign),
 and 24 mantissa bits (including the "hidden" bit).
@@ -680,6 +702,7 @@ This corresponds closely to the C/C++ type <SAMP>`float'</SAMP>.
 
 <LI>
 
+<A NAME="IDX21"></A>
 Double floats, type <CODE>cl_DF</CODE>.
 They have 1 sign bit, 11 exponent bits (including the exponent's sign),
 and 53 mantissa bits (including the "hidden" bit).
@@ -688,6 +711,7 @@ This corresponds closely to the C/C++ type <SAMP>`double'</SAMP>.
 
 <LI>
 
+<A NAME="IDX22"></A>
 Long floats, type <CODE>cl_LF</CODE>.
 They have 1 sign bit, 32 exponent bits (including the exponent's sign),
 and n mantissa bits (including the "hidden" bit), where n &#62;= 64.
@@ -708,6 +732,7 @@ with larger exponent range.
 
 
 <P>
+<A NAME="IDX23"></A>
 As a user of CLN, you can forget about the differences between the
 four floating-point types and just declare all your floating-point
 variables as being of type <CODE>cl_F</CODE>. This has the advantage that
@@ -723,6 +748,9 @@ the floating point contagion rule happened to change in the future.)
 
 
 <H2><A NAME="SEC13" HREF="cln.html#TOC13">3.3 Complex numbers</A></H2>
+<P>
+<A NAME="IDX24"></A>
+
 
 <P>
 Complex numbers, as implemented by the class <CODE>cl_N</CODE>, have a real
@@ -739,6 +767,9 @@ through application of <CODE>sqrt</CODE> or transcendental functions.
 
 
 <H2><A NAME="SEC14" HREF="cln.html#TOC14">3.4 Conversions</A></H2>
+<P>
+<A NAME="IDX25"></A>
+
 
 <P>
 Conversions from any class to any its superclasses ("base classes" in
@@ -796,6 +827,7 @@ Conversions from <SAMP>`const char *'</SAMP> are provided for the classes
 <CODE>cl_R</CODE>, <CODE>cl_N</CODE>.
 The easiest way to specify a value which is outside of the range of the
 C++ built-in types is therefore to specify it as a string, like this:
+<A NAME="IDX26"></A>
 
 <PRE>
    cl_I order_of_rubiks_cube_group = "43252003274489856000";
@@ -815,12 +847,16 @@ the functions
 
 <DT><CODE>int cl_I_to_int (const cl_I&#38; x)</CODE>
 <DD>
+<A NAME="IDX27"></A>
 <DT><CODE>unsigned int cl_I_to_uint (const cl_I&#38; x)</CODE>
 <DD>
+<A NAME="IDX28"></A>
 <DT><CODE>long cl_I_to_long (const cl_I&#38; x)</CODE>
 <DD>
+<A NAME="IDX29"></A>
 <DT><CODE>unsigned long cl_I_to_ulong (const cl_I&#38; x)</CODE>
 <DD>
+<A NAME="IDX30"></A>
 Returns <CODE>x</CODE> as element of the C type <VAR>ctype</VAR>. If <CODE>x</CODE> is not
 representable in the range of <VAR>ctype</VAR>, a runtime error occurs.
 </DL>
@@ -837,8 +873,10 @@ the functions
 
 <DT><CODE>float cl_float_approx (const <VAR>type</VAR>&#38; x)</CODE>
 <DD>
+<A NAME="IDX31"></A>
 <DT><CODE>double cl_double_approx (const <VAR>type</VAR>&#38; x)</CODE>
 <DD>
+<A NAME="IDX32"></A>
 Returns an approximation of <CODE>x</CODE> of C type <VAR>ctype</VAR>.
 If <CODE>abs(x)</CODE> is too close to 0 (underflow), 0 is returned.
 If <CODE>abs(x)</CODE> is too large (overflow), an IEEE infinity is returned.
@@ -849,8 +887,10 @@ Conversions from any class to any of its subclasses ("derived classes" in
 C++ terminology) are not provided. Instead, you can assert and check
 that a value belongs to a certain subclass, and return it as element of that
 class, using the <SAMP>`As'</SAMP> and <SAMP>`The'</SAMP> macros.
+<A NAME="IDX33"></A>
 <CODE>As(<VAR>type</VAR>)(<VAR>value</VAR>)</CODE> checks that <VAR>value</VAR> belongs to
 <VAR>type</VAR> and returns it as such.
+<A NAME="IDX34"></A>
 <CODE>The(<VAR>type</VAR>)(<VAR>value</VAR>)</CODE> assumes that <VAR>value</VAR> belongs to
 <VAR>type</VAR> and returns it as such. It is your responsibility to ensure
 that this assumption is valid.
@@ -967,10 +1007,12 @@ defines the following operations:
 
 <DT><CODE><VAR>type</VAR> operator + (const <VAR>type</VAR>&#38;, const <VAR>type</VAR>&#38;)</CODE>
 <DD>
+<A NAME="IDX35"></A>
 Addition.
 
 <DT><CODE><VAR>type</VAR> operator - (const <VAR>type</VAR>&#38;, const <VAR>type</VAR>&#38;)</CODE>
 <DD>
+<A NAME="IDX36"></A>
 Subtraction.
 
 <DT><CODE><VAR>type</VAR> operator - (const <VAR>type</VAR>&#38;)</CODE>
@@ -979,18 +1021,22 @@ Returns the negative of the argument.
 
 <DT><CODE><VAR>type</VAR> plus1 (const <VAR>type</VAR>&#38; x)</CODE>
 <DD>
+<A NAME="IDX37"></A>
 Returns <CODE>x + 1</CODE>.
 
 <DT><CODE><VAR>type</VAR> minus1 (const <VAR>type</VAR>&#38; x)</CODE>
 <DD>
+<A NAME="IDX38"></A>
 Returns <CODE>x - 1</CODE>.
 
 <DT><CODE><VAR>type</VAR> operator * (const <VAR>type</VAR>&#38;, const <VAR>type</VAR>&#38;)</CODE>
 <DD>
+<A NAME="IDX39"></A>
 Multiplication.
 
 <DT><CODE><VAR>type</VAR> square (const <VAR>type</VAR>&#38; x)</CODE>
 <DD>
+<A NAME="IDX40"></A>
 Returns <CODE>x * x</CODE>.
 </DL>
 
@@ -1004,10 +1050,12 @@ defines the following operations:
 
 <DT><CODE><VAR>type</VAR> operator / (const <VAR>type</VAR>&#38;, const <VAR>type</VAR>&#38;)</CODE>
 <DD>
+<A NAME="IDX41"></A>
 Division.
 
 <DT><CODE><VAR>type</VAR> recip (const <VAR>type</VAR>&#38;)</CODE>
 <DD>
+<A NAME="IDX42"></A>
 Returns the reciprocal of the argument.
 </DL>
 
@@ -1023,6 +1071,7 @@ Instead, <CODE>cl_I</CODE> defines an "exact quotient" function:
 
 <DT><CODE>cl_I exquo (const cl_I&#38; x, const cl_I&#38; y)</CODE>
 <DD>
+<A NAME="IDX43"></A>
 Checks that <CODE>y</CODE> divides <CODE>x</CODE>, and returns the quotient <CODE>x</CODE>/<CODE>y</CODE>.
 </DL>
 
@@ -1034,12 +1083,14 @@ The following exponentiation functions are defined:
 
 <DT><CODE>cl_I expt_pos (const cl_I&#38; x, const cl_I&#38; y)</CODE>
 <DD>
+<A NAME="IDX44"></A>
 <DT><CODE>cl_RA expt_pos (const cl_RA&#38; x, const cl_I&#38; y)</CODE>
 <DD>
 <CODE>y</CODE> must be &#62; 0. Returns <CODE>x^y</CODE>.
 
 <DT><CODE>cl_RA expt (const cl_RA&#38; x, const cl_I&#38; y)</CODE>
 <DD>
+<A NAME="IDX45"></A>
 <DT><CODE>cl_R expt (const cl_R&#38; x, const cl_I&#38; y)</CODE>
 <DD>
 <DT><CODE>cl_N expt (const cl_N&#38; x, const cl_I&#38; y)</CODE>
@@ -1057,6 +1108,7 @@ defines the following operation:
 
 <DT><CODE><VAR>type</VAR> abs (const <VAR>type</VAR>&#38; x)</CODE>
 <DD>
+<A NAME="IDX46"></A>
 Returns the absolute value of <CODE>x</CODE>.
 This is <CODE>x</CODE> if <CODE>x &#62;= 0</CODE>, and <CODE>-x</CODE> if <CODE>x &#60;= 0</CODE>.
 </DL>
@@ -1082,6 +1134,7 @@ defines the following operation:
 
 <DT><CODE><VAR>type</VAR> signum (const <VAR>type</VAR>&#38; x)</CODE>
 <DD>
+<A NAME="IDX47"></A>
 Returns the sign of <CODE>x</CODE>, in the same number format as <CODE>x</CODE>.
 This is defined as <CODE>x / abs(x)</CODE> if <CODE>x</CODE> is non-zero, and
 <CODE>x</CODE> if <CODE>x</CODE> is zero. If <CODE>x</CODE> is real, the value is either
@@ -1100,10 +1153,12 @@ Each of the classes <CODE>cl_RA</CODE>, <CODE>cl_I</CODE> defines the following
 
 <DT><CODE>cl_I numerator (const <VAR>type</VAR>&#38; x)</CODE>
 <DD>
+<A NAME="IDX48"></A>
 Returns the numerator of <CODE>x</CODE>.
 
 <DT><CODE>cl_I denominator (const <VAR>type</VAR>&#38; x)</CODE>
 <DD>
+<A NAME="IDX49"></A>
 Returns the denominator of <CODE>x</CODE>.
 </DL>
 
@@ -1124,6 +1179,7 @@ The class <CODE>cl_N</CODE> defines the following operation:
 
 <DT><CODE>cl_N complex (const cl_R&#38; a, const cl_R&#38; b)</CODE>
 <DD>
+<A NAME="IDX50"></A>
 Returns the complex number <CODE>a+bi</CODE>, that is, the complex number with
 real part <CODE>a</CODE> and imaginary part <CODE>b</CODE>.
 </DL>
@@ -1136,14 +1192,17 @@ Each of the classes <CODE>cl_N</CODE>, <CODE>cl_R</CODE> defines the following o
 
 <DT><CODE>cl_R realpart (const <VAR>type</VAR>&#38; x)</CODE>
 <DD>
+<A NAME="IDX51"></A>
 Returns the real part of <CODE>x</CODE>.
 
 <DT><CODE>cl_R imagpart (const <VAR>type</VAR>&#38; x)</CODE>
 <DD>
+<A NAME="IDX52"></A>
 Returns the imaginary part of <CODE>x</CODE>.
 
 <DT><CODE><VAR>type</VAR> conjugate (const <VAR>type</VAR>&#38; x)</CODE>
 <DD>
+<A NAME="IDX53"></A>
 Returns the complex conjugate of <CODE>x</CODE>.
 </DL>
 
@@ -1164,6 +1223,9 @@ We have the relations
 
 
 <H2><A NAME="SEC24" HREF="cln.html#TOC24">4.5 Comparisons</A></H2>
+<P>
+<A NAME="IDX54"></A>
+
 
 <P>
 Each of the classes <CODE>cl_N</CODE>, <CODE>cl_R</CODE>, <CODE>cl_RA</CODE>, <CODE>cl_I</CODE>,
@@ -1175,18 +1237,22 @@ defines the following operations:
 
 <DT><CODE>bool operator == (const <VAR>type</VAR>&#38;, const <VAR>type</VAR>&#38;)</CODE>
 <DD>
+<A NAME="IDX55"></A>
 <DT><CODE>bool operator != (const <VAR>type</VAR>&#38;, const <VAR>type</VAR>&#38;)</CODE>
 <DD>
+<A NAME="IDX56"></A>
 Comparison, as in C and C++.
 
 <DT><CODE>uint32 cl_equal_hashcode (const <VAR>type</VAR>&#38;)</CODE>
 <DD>
+<A NAME="IDX57"></A>
 Returns a 32-bit hash code that is the same for any two numbers which are
 the same according to <CODE>==</CODE>. This hash code depends on the number's value,
 not its type or precision.
 
 <DT><CODE>cl_boolean zerop (const <VAR>type</VAR>&#38; x)</CODE>
 <DD>
+<A NAME="IDX58"></A>
 Compare against zero: <CODE>x == 0</CODE>
 </DL>
 
@@ -1200,33 +1266,42 @@ defines the following operations:
 
 <DT><CODE>cl_signean cl_compare (const <VAR>type</VAR>&#38; x, const <VAR>type</VAR>&#38; y)</CODE>
 <DD>
+<A NAME="IDX59"></A>
 Compares <CODE>x</CODE> and <CODE>y</CODE>. Returns +1 if <CODE>x</CODE>&#62;<CODE>y</CODE>,
 -1 if <CODE>x</CODE>&#60;<CODE>y</CODE>, 0 if <CODE>x</CODE>=<CODE>y</CODE>.
 
 <DT><CODE>bool operator &#60;= (const <VAR>type</VAR>&#38;, const <VAR>type</VAR>&#38;)</CODE>
 <DD>
+<A NAME="IDX60"></A>
 <DT><CODE>bool operator &#60; (const <VAR>type</VAR>&#38;, const <VAR>type</VAR>&#38;)</CODE>
 <DD>
+<A NAME="IDX61"></A>
 <DT><CODE>bool operator &#62;= (const <VAR>type</VAR>&#38;, const <VAR>type</VAR>&#38;)</CODE>
 <DD>
+<A NAME="IDX62"></A>
 <DT><CODE>bool operator &#62; (const <VAR>type</VAR>&#38;, const <VAR>type</VAR>&#38;)</CODE>
 <DD>
+<A NAME="IDX63"></A>
 Comparison, as in C and C++.
 
 <DT><CODE>cl_boolean minusp (const <VAR>type</VAR>&#38; x)</CODE>
 <DD>
+<A NAME="IDX64"></A>
 Compare against zero: <CODE>x &#60; 0</CODE>
 
 <DT><CODE>cl_boolean plusp (const <VAR>type</VAR>&#38; x)</CODE>
 <DD>
+<A NAME="IDX65"></A>
 Compare against zero: <CODE>x &#62; 0</CODE>
 
 <DT><CODE><VAR>type</VAR> max (const <VAR>type</VAR>&#38; x, const <VAR>type</VAR>&#38; y)</CODE>
 <DD>
+<A NAME="IDX66"></A>
 Return the maximum of <CODE>x</CODE> and <CODE>y</CODE>.
 
 <DT><CODE><VAR>type</VAR> min (const <VAR>type</VAR>&#38; x, const <VAR>type</VAR>&#38; y)</CODE>
 <DD>
+<A NAME="IDX67"></A>
 Return the minimum of <CODE>x</CODE> and <CODE>y</CODE>.
 </DL>
 
@@ -1242,6 +1317,9 @@ there is no floating point number whose value is exactly <CODE>1/3</CODE>.
 
 
 <H2><A NAME="SEC25" HREF="cln.html#TOC25">4.6 Rounding functions</A></H2>
+<P>
+<A NAME="IDX68"></A>
+
 
 <P>
 When a real number is to be converted to an integer, there is no "best"
@@ -1311,15 +1389,19 @@ defines the following operations:
 
 <DT><CODE>cl_I floor1 (const <VAR>type</VAR>&#38; x)</CODE>
 <DD>
+<A NAME="IDX69"></A>
 Returns <CODE>floor(x)</CODE>.
 <DT><CODE>cl_I ceiling1 (const <VAR>type</VAR>&#38; x)</CODE>
 <DD>
+<A NAME="IDX70"></A>
 Returns <CODE>ceiling(x)</CODE>.
 <DT><CODE>cl_I truncate1 (const <VAR>type</VAR>&#38; x)</CODE>
 <DD>
+<A NAME="IDX71"></A>
 Returns <CODE>truncate(x)</CODE>.
 <DT><CODE>cl_I round1 (const <VAR>type</VAR>&#38; x)</CODE>
 <DD>
+<A NAME="IDX72"></A>
 Returns <CODE>round(x)</CODE>.
 </DL>
 
@@ -1408,12 +1490,16 @@ defines the following operations:
 <DD>
 <DT><CODE><VAR>type</VAR>_div_t floor2 (const <VAR>type</VAR>&#38; x, const <VAR>type</VAR>&#38; y)</CODE>
 <DD>
+<A NAME="IDX73"></A>
 <DT><CODE><VAR>type</VAR>_div_t ceiling2 (const <VAR>type</VAR>&#38; x, const <VAR>type</VAR>&#38; y)</CODE>
 <DD>
+<A NAME="IDX74"></A>
 <DT><CODE><VAR>type</VAR>_div_t truncate2 (const <VAR>type</VAR>&#38; x, const <VAR>type</VAR>&#38; y)</CODE>
 <DD>
+<A NAME="IDX75"></A>
 <DT><CODE><VAR>type</VAR>_div_t round2 (const <VAR>type</VAR>&#38; x, const <VAR>type</VAR>&#38; y)</CODE>
 <DD>
+<A NAME="IDX76"></A>
 </DL>
 
 <P>
@@ -1432,12 +1518,16 @@ defines the following operations:
 
 <DT><CODE><VAR>type</VAR> ffloor (const <VAR>type</VAR>&#38; x)</CODE>
 <DD>
+<A NAME="IDX77"></A>
 <DT><CODE><VAR>type</VAR> fceiling (const <VAR>type</VAR>&#38; x)</CODE>
 <DD>
+<A NAME="IDX78"></A>
 <DT><CODE><VAR>type</VAR> ftruncate (const <VAR>type</VAR>&#38; x)</CODE>
 <DD>
+<A NAME="IDX79"></A>
 <DT><CODE><VAR>type</VAR> fround (const <VAR>type</VAR>&#38; x)</CODE>
 <DD>
+<A NAME="IDX80"></A>
 </DL>
 
 <P>
@@ -1477,12 +1567,16 @@ defines the following operations:
 <DD>
 <DT><CODE><VAR>type</VAR>_fdiv_t ffloor2 (const <VAR>type</VAR>&#38; x)</CODE>
 <DD>
+<A NAME="IDX81"></A>
 <DT><CODE><VAR>type</VAR>_fdiv_t fceiling2 (const <VAR>type</VAR>&#38; x)</CODE>
 <DD>
+<A NAME="IDX82"></A>
 <DT><CODE><VAR>type</VAR>_fdiv_t ftruncate2 (const <VAR>type</VAR>&#38; x)</CODE>
 <DD>
+<A NAME="IDX83"></A>
 <DT><CODE><VAR>type</VAR>_fdiv_t fround2 (const <VAR>type</VAR>&#38; x)</CODE>
 <DD>
+<A NAME="IDX84"></A>
 </DL>
 <P>
 and similarly for class <CODE>cl_R</CODE>, but with quotient type <CODE>cl_F</CODE>.
@@ -1537,8 +1631,10 @@ The classes <CODE>cl_R</CODE>, <CODE>cl_I</CODE> define the following operations
 
 <DT><CODE><VAR>type</VAR> mod (const <VAR>type</VAR>&#38; x, const <VAR>type</VAR>&#38; y)</CODE>
 <DD>
+<A NAME="IDX85"></A>
 <DT><CODE><VAR>type</VAR> rem (const <VAR>type</VAR>&#38; x, const <VAR>type</VAR>&#38; y)</CODE>
 <DD>
+<A NAME="IDX86"></A>
 </DL>
 
 
@@ -1555,6 +1651,7 @@ defines the following operation:
 
 <DT><CODE><VAR>type</VAR> sqrt (const <VAR>type</VAR>&#38; x)</CODE>
 <DD>
+<A NAME="IDX87"></A>
 <CODE>x</CODE> must be &#62;= 0. This function returns the square root of <CODE>x</CODE>,
 normalized to be &#62;= 0. If <CODE>x</CODE> is the square of a rational number,
 <CODE>sqrt(x)</CODE> will be a rational number, else it will return a
@@ -1569,6 +1666,7 @@ The classes <CODE>cl_RA</CODE>, <CODE>cl_I</CODE> define the following operation
 
 <DT><CODE>cl_boolean sqrtp (const <VAR>type</VAR>&#38; x, <VAR>type</VAR>* root)</CODE>
 <DD>
+<A NAME="IDX88"></A>
 This tests whether <CODE>x</CODE> is a perfect square. If so, it returns true
 and the exact square root in <CODE>*root</CODE>, else it returns false.
 </DL>
@@ -1581,6 +1679,7 @@ Furthermore, for integers, similarly:
 
 <DT><CODE>cl_boolean isqrt (const <VAR>type</VAR>&#38; x, <VAR>type</VAR>* root)</CODE>
 <DD>
+<A NAME="IDX89"></A>
 <CODE>x</CODE> should be &#62;= 0. This function sets <CODE>*root</CODE> to
 <CODE>floor(sqrt(x))</CODE> and returns the same value as <CODE>sqrtp</CODE>:
 the boolean value <CODE>(expt(*root,2) == x)</CODE>.
@@ -1595,6 +1694,7 @@ define the following operation:
 
 <DT><CODE>cl_boolean rootp (const <VAR>type</VAR>&#38; x, const cl_I&#38; n, <VAR>type</VAR>* root)</CODE>
 <DD>
+<A NAME="IDX90"></A>
 <CODE>x</CODE> must be &#62;= 0. <CODE>n</CODE> must be &#62; 0.
 This tests whether <CODE>x</CODE> is an <CODE>n</CODE>th power of a rational number.
 If so, it returns true and the exact root in <CODE>*root</CODE>, else it returns
@@ -1610,6 +1710,7 @@ for class <CODE>cl_N</CODE>:
 
 <DT><CODE>cl_N sqrt (const cl_N&#38; z)</CODE>
 <DD>
+<A NAME="IDX91"></A>
 Returns the square root of <CODE>z</CODE>, as defined by the formula
 <CODE>sqrt(z) = exp(log(z)/2)</CODE>. Conversion to a floating-point type
 or to a complex number are done if necessary. The range of the result is the
@@ -1622,6 +1723,9 @@ The result is an exact number only if <CODE>z</CODE> is an exact number.
 
 
 <H2><A NAME="SEC27" HREF="cln.html#TOC27">4.8 Transcendental functions</A></H2>
+<P>
+<A NAME="IDX92"></A>
+
 
 <P>
 The transcendental functions return an exact result if the argument
@@ -1638,6 +1742,7 @@ For example, <CODE>cos(0) = 1</CODE> returns the rational number <CODE>1</CODE>.
 
 <DT><CODE>cl_R exp (const cl_R&#38; x)</CODE>
 <DD>
+<A NAME="IDX93"></A>
 <DT><CODE>cl_N exp (const cl_N&#38; x)</CODE>
 <DD>
 Returns the exponential function of <CODE>x</CODE>. This is <CODE>e^x</CODE> where
@@ -1646,10 +1751,12 @@ is the entire complex plane excluding 0.
 
 <DT><CODE>cl_R ln (const cl_R&#38; x)</CODE>
 <DD>
+<A NAME="IDX94"></A>
 <CODE>x</CODE> must be &#62; 0. Returns the (natural) logarithm of x.
 
 <DT><CODE>cl_N log (const cl_N&#38; x)</CODE>
 <DD>
+<A NAME="IDX95"></A>
 Returns the (natural) logarithm of x. If <CODE>x</CODE> is real and positive,
 this is <CODE>ln(x)</CODE>. In general, <CODE>log(x) = log(abs(x)) + i*phase(x)</CODE>.
 The range of the result is the strip in the complex plane
@@ -1657,6 +1764,7 @@ The range of the result is the strip in the complex plane
 
 <DT><CODE>cl_R phase (const cl_N&#38; x)</CODE>
 <DD>
+<A NAME="IDX96"></A>
 Returns the angle part of <CODE>x</CODE> in its polar representation as a
 complex number. That is, <CODE>phase(x) = atan(realpart(x),imagpart(x))</CODE>.
 This is also the imaginary part of <CODE>log(x)</CODE>.
@@ -1678,6 +1786,7 @@ Returns the logarithm of <CODE>a</CODE> with respect to base <CODE>b</CODE>.
 
 <DT><CODE>cl_N expt (const cl_N&#38; x, const cl_N&#38; y)</CODE>
 <DD>
+<A NAME="IDX97"></A>
 Exponentiation: Returns <CODE>x^y = exp(y*log(x))</CODE>.
 </DL>
 
@@ -1689,6 +1798,7 @@ The constant e = exp(1) = 2.71828... is returned by the following functions:
 
 <DT><CODE>cl_F cl_exp1 (cl_float_format_t f)</CODE>
 <DD>
+<A NAME="IDX98"></A>
 Returns e as a float of format <CODE>f</CODE>.
 
 <DT><CODE>cl_F cl_exp1 (const cl_F&#38; y)</CODE>
@@ -1708,6 +1818,7 @@ Returns e as a float of format <CODE>cl_default_float_format</CODE>.
 
 <DT><CODE>cl_R sin (const cl_R&#38; x)</CODE>
 <DD>
+<A NAME="IDX99"></A>
 Returns <CODE>sin(x)</CODE>. The range of the result is the interval
 <CODE>-1 &#60;= sin(x) &#60;= 1</CODE>.
 
@@ -1717,6 +1828,7 @@ Returns <CODE>sin(z)</CODE>. The range of the result is the entire complex plane
 
 <DT><CODE>cl_R cos (const cl_R&#38; x)</CODE>
 <DD>
+<A NAME="IDX100"></A>
 Returns <CODE>cos(x)</CODE>. The range of the result is the interval
 <CODE>-1 &#60;= cos(x) &#60;= 1</CODE>.
 
@@ -1726,25 +1838,31 @@ Returns <CODE>cos(z)</CODE>. The range of the result is the entire complex plane
 
 <DT><CODE>struct cl_cos_sin_t { cl_R cos; cl_R sin; };</CODE>
 <DD>
+<A NAME="IDX101"></A>
 <DT><CODE>cl_cos_sin_t cl_cos_sin (const cl_R&#38; x)</CODE>
 <DD>
 Returns both <CODE>sin(x)</CODE> and <CODE>cos(x)</CODE>. This is more efficient than
+<A NAME="IDX102"></A>
 computing them separately. The relation <CODE>cos^2 + sin^2 = 1</CODE> will
 hold only approximately.
 
 <DT><CODE>cl_R tan (const cl_R&#38; x)</CODE>
 <DD>
+<A NAME="IDX103"></A>
 <DT><CODE>cl_N tan (const cl_N&#38; x)</CODE>
 <DD>
 Returns <CODE>tan(x) = sin(x)/cos(x)</CODE>.
 
 <DT><CODE>cl_N cis (const cl_R&#38; x)</CODE>
 <DD>
+<A NAME="IDX104"></A>
 <DT><CODE>cl_N cis (const cl_N&#38; x)</CODE>
 <DD>
 Returns <CODE>exp(i*x)</CODE>. The name <SAMP>`cis'</SAMP> means "cos + i sin", because
 <CODE>e^(i*x) = cos(x) + i*sin(x)</CODE>.
 
+<A NAME="IDX105"></A>
+<A NAME="IDX106"></A>
 <DT><CODE>cl_N asin (const cl_N&#38; z)</CODE>
 <DD>
 Returns <CODE>arcsin(z)</CODE>. This is defined as
@@ -1757,6 +1875,7 @@ with <CODE>realpart = pi/2</CODE> and <CODE>imagpart &#62; 0</CODE>.
 
 <DT><CODE>cl_N acos (const cl_N&#38; z)</CODE>
 <DD>
+<A NAME="IDX107"></A>
 Returns <CODE>arccos(z)</CODE>. This is defined as
 <CODE>arccos(z) = pi/2 - arcsin(z) = log(z+i*sqrt(1-z^2))/i</CODE>
 and satisfies <CODE>arccos(-z) = pi - arccos(z)</CODE>.
@@ -1765,6 +1884,8 @@ The range of the result is the strip in the complex domain
 with <CODE>realpart = 0</CODE> and <CODE>imagpart &#60; 0</CODE> and the numbers
 with <CODE>realpart = pi</CODE> and <CODE>imagpart &#62; 0</CODE>.
 
+<A NAME="IDX108"></A>
+<A NAME="IDX109"></A>
 <DT><CODE>cl_R atan (const cl_R&#38; x, const cl_R&#38; y)</CODE>
 <DD>
 Returns the angle of the polar representation of the complex number
@@ -1793,13 +1914,16 @@ with <CODE>realpart = pi/2</CODE> and <CODE>imagpart &#60;= 0</CODE>.
 </DL>
 
 <P>
-The constant pi = 3.14... is returned by the following functions:
+<A NAME="IDX110"></A>
+<A NAME="IDX111"></A>
+Archimedes' constant pi = 3.14... is returned by the following functions:
 
 
 <DL COMPACT>
 
 <DT><CODE>cl_F cl_pi (cl_float_format_t f)</CODE>
 <DD>
+<A NAME="IDX112"></A>
 Returns pi as a float of format <CODE>f</CODE>.
 
 <DT><CODE>cl_F cl_pi (const cl_F&#38; y)</CODE>
@@ -1819,6 +1943,7 @@ Returns pi as a float of format <CODE>cl_default_float_format</CODE>.
 
 <DT><CODE>cl_R sinh (const cl_R&#38; x)</CODE>
 <DD>
+<A NAME="IDX113"></A>
 Returns <CODE>sinh(x)</CODE>.
 
 <DT><CODE>cl_N sinh (const cl_N&#38; z)</CODE>
@@ -1827,6 +1952,7 @@ Returns <CODE>sinh(z)</CODE>. The range of the result is the entire complex plan
 
 <DT><CODE>cl_R cosh (const cl_R&#38; x)</CODE>
 <DD>
+<A NAME="IDX114"></A>
 Returns <CODE>cosh(x)</CODE>. The range of the result is the interval
 <CODE>cosh(x) &#62;= 1</CODE>.
 
@@ -1836,20 +1962,24 @@ Returns <CODE>cosh(z)</CODE>. The range of the result is the entire complex plan
 
 <DT><CODE>struct cl_cosh_sinh_t { cl_R cosh; cl_R sinh; };</CODE>
 <DD>
+<A NAME="IDX115"></A>
 <DT><CODE>cl_cosh_sinh_t cl_cosh_sinh (const cl_R&#38; x)</CODE>
 <DD>
+<A NAME="IDX116"></A>
 Returns both <CODE>sinh(x)</CODE> and <CODE>cosh(x)</CODE>. This is more efficient than
 computing them separately. The relation <CODE>cosh^2 - sinh^2 = 1</CODE> will
 hold only approximately.
 
 <DT><CODE>cl_R tanh (const cl_R&#38; x)</CODE>
 <DD>
+<A NAME="IDX117"></A>
 <DT><CODE>cl_N tanh (const cl_N&#38; x)</CODE>
 <DD>
 Returns <CODE>tanh(x) = sinh(x)/cosh(x)</CODE>.
 
 <DT><CODE>cl_N asinh (const cl_N&#38; z)</CODE>
 <DD>
+<A NAME="IDX118"></A>
 Returns <CODE>arsinh(z)</CODE>. This is defined as
 <CODE>arsinh(z) = log(z+sqrt(1+z^2))</CODE> and satisfies
 <CODE>arsinh(-z) = -arsinh(z)</CODE>.
@@ -1860,6 +1990,7 @@ with <CODE>imagpart = pi/2</CODE> and <CODE>realpart &#60; 0</CODE>.
 
 <DT><CODE>cl_N acosh (const cl_N&#38; z)</CODE>
 <DD>
+<A NAME="IDX119"></A>
 Returns <CODE>arcosh(z)</CODE>. This is defined as
 <CODE>arcosh(z) = 2*log(sqrt((z+1)/2)+sqrt((z-1)/2))</CODE>.
 The range of the result is the half-strip in the complex domain
@@ -1868,6 +1999,7 @@ excluding the numbers with <CODE>realpart = 0</CODE> and <CODE>-pi &#60; imagpar
 
 <DT><CODE>cl_N atanh (const cl_N&#38; z)</CODE>
 <DD>
+<A NAME="IDX120"></A>
 Returns <CODE>artanh(z)</CODE>. This is defined as
 <CODE>artanh(z) = (log(1+z)-log(1-z)) / 2</CODE> and satisfies
 <CODE>artanh(-z) = -artanh(z)</CODE>. The range of the result is
@@ -1880,6 +2012,9 @@ with <CODE>imagpart = pi/2</CODE> and <CODE>realpart &#62;= 0</CODE>.
 
 
 <H3><A NAME="SEC31" HREF="cln.html#TOC31">4.8.4 Euler gamma</A></H3>
+<P>
+<A NAME="IDX121"></A>
+
 
 <P>
 Euler's constant C = 0.577... is returned by the following functions:
@@ -1889,6 +2024,7 @@ Euler's constant C = 0.577... is returned by the following functions:
 
 <DT><CODE>cl_F cl_eulerconst (cl_float_format_t f)</CODE>
 <DD>
+<A NAME="IDX122"></A>
 Returns Euler's constant as a float of format <CODE>f</CODE>.
 
 <DT><CODE>cl_F cl_eulerconst (const cl_F&#38; y)</CODE>
@@ -1902,12 +2038,14 @@ Returns Euler's constant as a float of format <CODE>cl_default_float_format</COD
 
 <P>
 Catalan's constant G = 0.915... is returned by the following functions:
+<A NAME="IDX123"></A>
 
 
 <DL COMPACT>
 
 <DT><CODE>cl_F cl_catalanconst (cl_float_format_t f)</CODE>
 <DD>
+<A NAME="IDX124"></A>
 Returns Catalan's constant as a float of format <CODE>f</CODE>.
 
 <DT><CODE>cl_F cl_catalanconst (const cl_F&#38; y)</CODE>
@@ -1922,6 +2060,9 @@ Returns Catalan's constant as a float of format <CODE>cl_default_float_format</C
 
 
 <H3><A NAME="SEC32" HREF="cln.html#TOC32">4.8.5 Riemann zeta</A></H3>
+<P>
+<A NAME="IDX125"></A>
+
 
 <P>
 Riemann's zeta function at an integral point <CODE>s&#62;1</CODE> is returned by the
@@ -1932,6 +2073,7 @@ following functions:
 
 <DT><CODE>cl_F cl_zeta (int s, cl_float_format_t f)</CODE>
 <DD>
+<A NAME="IDX126"></A>
 Returns Riemann's zeta function at <CODE>s</CODE> as a float of format <CODE>f</CODE>.
 
 <DT><CODE>cl_F cl_zeta (int s, const cl_F&#38; y)</CODE>
@@ -1971,54 +2113,69 @@ on each of the bit positions in parallel.
 
 <DT><CODE>cl_I lognot (const cl_I&#38; x)</CODE>
 <DD>
+<A NAME="IDX127"></A>
 <DT><CODE>cl_I operator ~ (const cl_I&#38; x)</CODE>
 <DD>
+<A NAME="IDX128"></A>
 Logical not, like <CODE>~x</CODE> in C. This is the same as <CODE>-1-x</CODE>.
 
 <DT><CODE>cl_I logand (const cl_I&#38; x, const cl_I&#38; y)</CODE>
 <DD>
+<A NAME="IDX129"></A>
 <DT><CODE>cl_I operator &#38; (const cl_I&#38; x, const cl_I&#38; y)</CODE>
 <DD>
+<A NAME="IDX130"></A>
 Logical and, like <CODE>x &#38; y</CODE> in C.
 
 <DT><CODE>cl_I logior (const cl_I&#38; x, const cl_I&#38; y)</CODE>
 <DD>
+<A NAME="IDX131"></A>
 <DT><CODE>cl_I operator | (const cl_I&#38; x, const cl_I&#38; y)</CODE>
 <DD>
+<A NAME="IDX132"></A>
 Logical (inclusive) or, like <CODE>x | y</CODE> in C.
 
 <DT><CODE>cl_I logxor (const cl_I&#38; x, const cl_I&#38; y)</CODE>
 <DD>
+<A NAME="IDX133"></A>
 <DT><CODE>cl_I operator ^ (const cl_I&#38; x, const cl_I&#38; y)</CODE>
 <DD>
+<A NAME="IDX134"></A>
 Exclusive or, like <CODE>x ^ y</CODE> in C.
 
 <DT><CODE>cl_I logeqv (const cl_I&#38; x, const cl_I&#38; y)</CODE>
 <DD>
+<A NAME="IDX135"></A>
 Bitwise equivalence, like <CODE>~(x ^ y)</CODE> in C.
 
 <DT><CODE>cl_I lognand (const cl_I&#38; x, const cl_I&#38; y)</CODE>
 <DD>
+<A NAME="IDX136"></A>
 Bitwise not and, like <CODE>~(x &#38; y)</CODE> in C.
 
 <DT><CODE>cl_I lognor (const cl_I&#38; x, const cl_I&#38; y)</CODE>
 <DD>
+<A NAME="IDX137"></A>
 Bitwise not or, like <CODE>~(x | y)</CODE> in C.
 
 <DT><CODE>cl_I logandc1 (const cl_I&#38; x, const cl_I&#38; y)</CODE>
 <DD>
+<A NAME="IDX138"></A>
 Logical and, complementing the first argument, like <CODE>~x &#38; y</CODE> in C.
 
 <DT><CODE>cl_I logandc2 (const cl_I&#38; x, const cl_I&#38; y)</CODE>
 <DD>
+<A NAME="IDX139"></A>
 Logical and, complementing the second argument, like <CODE>x &#38; ~y</CODE> in C.
 
 <DT><CODE>cl_I logorc1 (const cl_I&#38; x, const cl_I&#38; y)</CODE>
 <DD>
+<A NAME="IDX140"></A>
 Logical or, complementing the first argument, like <CODE>~x | y</CODE> in C.
 
 <DT><CODE>cl_I logorc2 (const cl_I&#38; x, const cl_I&#38; y)</CODE>
 <DD>
+<A NAME="IDX141"></A>
 Logical or, complementing the second argument, like <CODE>x | ~y</CODE> in C.
 </DL>
 
@@ -2028,6 +2185,7 @@ These operations are all available though the function
 
 <DT><CODE>cl_I boole (cl_boole op, const cl_I&#38; x, const cl_I&#38; y)</CODE>
 <DD>
+<A NAME="IDX142"></A>
 </DL>
 <P>
 where <CODE>op</CODE> must have one of the 16 values (each one stands for a function
@@ -2036,6 +2194,21 @@ which combines two bits into one bit): <CODE>boole_clr</CODE>, <CODE>boole_set</
 <CODE>boole_and</CODE>, <CODE>boole_ior</CODE>, <CODE>boole_xor</CODE>, <CODE>boole_eqv</CODE>,
 <CODE>boole_nand</CODE>, <CODE>boole_nor</CODE>, <CODE>boole_andc1</CODE>, <CODE>boole_andc2</CODE>,
 <CODE>boole_orc1</CODE>, <CODE>boole_orc2</CODE>.
+<A NAME="IDX143"></A>
+<A NAME="IDX144"></A>
+<A NAME="IDX145"></A>
+<A NAME="IDX146"></A>
+<A NAME="IDX147"></A>
+<A NAME="IDX148"></A>
+<A NAME="IDX149"></A>
+<A NAME="IDX150"></A>
+<A NAME="IDX151"></A>
+<A NAME="IDX152"></A>
+<A NAME="IDX153"></A>
+<A NAME="IDX154"></A>
+<A NAME="IDX155"></A>
+<A NAME="IDX156"></A>
+<A NAME="IDX157"></A>
 
 
 <P>
@@ -2046,16 +2219,19 @@ Other functions that view integers as bit strings:
 
 <DT><CODE>cl_boolean logtest (const cl_I&#38; x, const cl_I&#38; y)</CODE>
 <DD>
+<A NAME="IDX158"></A>
 Returns true if some bit is set in both <CODE>x</CODE> and <CODE>y</CODE>, i.e. if
 <CODE>logand(x,y) != 0</CODE>.
 
 <DT><CODE>cl_boolean logbitp (const cl_I&#38; n, const cl_I&#38; x)</CODE>
 <DD>
+<A NAME="IDX159"></A>
 Returns true if the <CODE>n</CODE>th bit (from the right) of <CODE>x</CODE> is set.
 Bit 0 is the least significant bit.
 
 <DT><CODE>uintL logcount (const cl_I&#38; x)</CODE>
 <DD>
+<A NAME="IDX160"></A>
 Returns the number of one bits in <CODE>x</CODE>, if <CODE>x</CODE> &#62;= 0, or
 the number of zero bits in <CODE>x</CODE>, if <CODE>x</CODE> &#60; 0.
 </DL>
@@ -2069,6 +2245,7 @@ struct cl_byte { uintL size; uintL position; };
 </PRE>
 
 <P>
+<A NAME="IDX161"></A>
 represents the bit interval containing the bits
 <CODE>position</CODE>...<CODE>position+size-1</CODE> of an integer.
 The constructor <CODE>cl_byte(size,position)</CODE> constructs a <CODE>cl_byte</CODE>.
@@ -2078,16 +2255,19 @@ The constructor <CODE>cl_byte(size,position)</CODE> constructs a <CODE>cl_byte</
 
 <DT><CODE>cl_I ldb (const cl_I&#38; n, const cl_byte&#38; b)</CODE>
 <DD>
+<A NAME="IDX162"></A>
 extracts the bits of <CODE>n</CODE> described by the bit interval <CODE>b</CODE>
 and returns them as a nonnegative integer with <CODE>b.size</CODE> bits.
 
 <DT><CODE>cl_boolean ldb_test (const cl_I&#38; n, const cl_byte&#38; b)</CODE>
 <DD>
+<A NAME="IDX163"></A>
 Returns true if some bit described by the bit interval <CODE>b</CODE> is set in
 <CODE>n</CODE>.
 
 <DT><CODE>cl_I dpb (const cl_I&#38; newbyte, const cl_I&#38; n, const cl_byte&#38; b)</CODE>
 <DD>
+<A NAME="IDX164"></A>
 Returns <CODE>n</CODE>, with the bits described by the bit interval <CODE>b</CODE>
 replaced by <CODE>newbyte</CODE>. Only the lowest <CODE>b.size</CODE> bits of
 <CODE>newbyte</CODE> are relevant.
@@ -2102,11 +2282,13 @@ functions are their counterparts without shifting:
 
 <DT><CODE>cl_I mask_field (const cl_I&#38; n, const cl_byte&#38; b)</CODE>
 <DD>
+<A NAME="IDX165"></A>
 returns an integer with the bits described by the bit interval <CODE>b</CODE>
 copied from the corresponding bits in <CODE>n</CODE>, the other bits zero.
 
 <DT><CODE>cl_I deposit_field (const cl_I&#38; newbyte, const cl_I&#38; n, const cl_byte&#38; b)</CODE>
 <DD>
+<A NAME="IDX166"></A>
 returns an integer where the bits described by the bit interval <CODE>b</CODE>
 come from <CODE>newbyte</CODE> and the other bits come from <CODE>n</CODE>.
 </DL>
@@ -2137,33 +2319,39 @@ for common arithmetic operations:
 
 <DT><CODE>cl_boolean oddp (const cl_I&#38; x)</CODE>
 <DD>
+<A NAME="IDX167"></A>
 Returns true if the least significant bit of <CODE>x</CODE> is 1. Equivalent to
 <CODE>mod(x,2) != 0</CODE>.
 
 <DT><CODE>cl_boolean evenp (const cl_I&#38; x)</CODE>
 <DD>
+<A NAME="IDX168"></A>
 Returns true if the least significant bit of <CODE>x</CODE> is 0. Equivalent to
 <CODE>mod(x,2) == 0</CODE>.
 
 <DT><CODE>cl_I operator &#60;&#60; (const cl_I&#38; x, const cl_I&#38; n)</CODE>
 <DD>
+<A NAME="IDX169"></A>
 Shifts <CODE>x</CODE> by <CODE>n</CODE> bits to the left. <CODE>n</CODE> should be &#62;=0.
 Equivalent to <CODE>x * expt(2,n)</CODE>.
 
 <DT><CODE>cl_I operator &#62;&#62; (const cl_I&#38; x, const cl_I&#38; n)</CODE>
 <DD>
+<A NAME="IDX170"></A>
 Shifts <CODE>x</CODE> by <CODE>n</CODE> bits to the right. <CODE>n</CODE> should be &#62;=0.
 Bits shifted out to the right are thrown away.
 Equivalent to <CODE>floor(x / expt(2,n))</CODE>.
 
 <DT><CODE>cl_I ash (const cl_I&#38; x, const cl_I&#38; y)</CODE>
 <DD>
+<A NAME="IDX171"></A>
 Shifts <CODE>x</CODE> by <CODE>y</CODE> bits to the left (if <CODE>y</CODE>&#62;=0) or
 by <CODE>-y</CODE> bits to the right (if <CODE>y</CODE>&#60;=0). In other words, this
 returns <CODE>floor(x * expt(2,y))</CODE>.
 
 <DT><CODE>uintL integer_length (const cl_I&#38; x)</CODE>
 <DD>
+<A NAME="IDX172"></A>
 Returns the number of bits (excluding the sign bit) needed to represent <CODE>x</CODE>
 in two's complement notation. This is the smallest n &#62;= 0 such that
 -2^n &#60;= x &#60; 2^n. If x &#62; 0, this is the unique n &#62; 0 such that
@@ -2171,12 +2359,14 @@ in two's complement notation. This is the smallest n &#62;= 0 such that
 
 <DT><CODE>uintL ord2 (const cl_I&#38; x)</CODE>
 <DD>
+<A NAME="IDX173"></A>
 <CODE>x</CODE> must be non-zero. This function returns the number of 0 bits at the
 right of <CODE>x</CODE> in two's complement notation. This is the largest n &#62;= 0
 such that 2^n divides <CODE>x</CODE>.
 
 <DT><CODE>uintL power2p (const cl_I&#38; x)</CODE>
 <DD>
+<A NAME="IDX174"></A>
 <CODE>x</CODE> must be &#62; 0. This function checks whether <CODE>x</CODE> is a power of 2.
 If <CODE>x</CODE> = 2^(n-1), it returns n. Else it returns 0.
 (See also the function <CODE>logp</CODE>.)
@@ -2190,6 +2380,7 @@ If <CODE>x</CODE> = 2^(n-1), it returns n. Else it returns 0.
 
 <DT><CODE>uint32 gcd (uint32 a, uint32 b)</CODE>
 <DD>
+<A NAME="IDX175"></A>
 <DT><CODE>cl_I gcd (const cl_I&#38; a, const cl_I&#38; b)</CODE>
 <DD>
 This function returns the greatest common divisor of <CODE>a</CODE> and <CODE>b</CODE>,
@@ -2197,6 +2388,7 @@ normalized to be &#62;= 0.
 
 <DT><CODE>cl_I xgcd (const cl_I&#38; a, const cl_I&#38; b, cl_I* u, cl_I* v)</CODE>
 <DD>
+<A NAME="IDX176"></A>
 This function ("extended gcd") returns the greatest common divisor <CODE>g</CODE> of
 <CODE>a</CODE> and <CODE>b</CODE> and at the same time the representation of <CODE>g</CODE>
 as an integral linear combination of <CODE>a</CODE> and <CODE>b</CODE>:
@@ -2208,11 +2400,13 @@ value, in the following sense: If <CODE>a</CODE> and <CODE>b</CODE> are non-zero
 
 <DT><CODE>cl_I lcm (const cl_I&#38; a, const cl_I&#38; b)</CODE>
 <DD>
+<A NAME="IDX177"></A>
 This function returns the least common multiple of <CODE>a</CODE> and <CODE>b</CODE>,
 normalized to be &#62;= 0.
 
 <DT><CODE>cl_boolean logp (const cl_I&#38; a, const cl_I&#38; b, cl_RA* l)</CODE>
 <DD>
+<A NAME="IDX178"></A>
 <DT><CODE>cl_boolean logp (const cl_RA&#38; a, const cl_RA&#38; b, cl_RA* l)</CODE>
 <DD>
 <CODE>a</CODE> must be &#62; 0. <CODE>b</CODE> must be &#62;0 and != 1. If log(a,b) is
@@ -2228,17 +2422,20 @@ it returns false.
 
 <DT><CODE>cl_I factorial (uintL n)</CODE>
 <DD>
+<A NAME="IDX179"></A>
 <CODE>n</CODE> must be a small integer &#62;= 0. This function returns the factorial
 <CODE>n</CODE>! = <CODE>1*2*...*n</CODE>.
 
 <DT><CODE>cl_I doublefactorial (uintL n)</CODE>
 <DD>
+<A NAME="IDX180"></A>
 <CODE>n</CODE> must be a small integer &#62;= 0. This function returns the 
 doublefactorial <CODE>n</CODE>!! = <CODE>1*3*...*n</CODE> or 
 <CODE>n</CODE>!! = <CODE>2*4*...*n</CODE>, respectively.
 
 <DT><CODE>cl_I binomial (uintL n, uintL k)</CODE>
 <DD>
+<A NAME="IDX181"></A>
 <CODE>n</CODE> and <CODE>k</CODE> must be small integers &#62;= 0. This function returns the
 binomial coefficient
 (<CODE>n</CODE> choose <CODE>k</CODE>) = <CODE>n</CODE>! / <CODE>k</CODE>! <CODE>(n-k)</CODE>!
@@ -2265,6 +2462,7 @@ defines the following operations.
 
 <DT><CODE><VAR>type</VAR> scale_float (const <VAR>type</VAR>&#38; x, sintL delta)</CODE>
 <DD>
+<A NAME="IDX182"></A>
 <DT><CODE><VAR>type</VAR> scale_float (const <VAR>type</VAR>&#38; x, const cl_I&#38; delta)</CODE>
 <DD>
 Returns <CODE>x*2^delta</CODE>. This is more efficient than an explicit multiplication
@@ -2280,27 +2478,32 @@ representation of floating-point numbers.
 
 <DT><CODE>sintL float_exponent (const <VAR>type</VAR>&#38; x)</CODE>
 <DD>
+<A NAME="IDX183"></A>
 Returns the exponent <CODE>e</CODE> of <CODE>x</CODE>.
 For <CODE>x = 0.0</CODE>, this is 0. For <CODE>x</CODE> non-zero, this is the unique
 integer with <CODE>2^(e-1) &#60;= abs(x) &#60; 2^e</CODE>.
 
 <DT><CODE>sintL float_radix (const <VAR>type</VAR>&#38; x)</CODE>
 <DD>
+<A NAME="IDX184"></A>
 Returns the base of the floating-point representation. This is always <CODE>2</CODE>.
 
 <DT><CODE><VAR>type</VAR> float_sign (const <VAR>type</VAR>&#38; x)</CODE>
 <DD>
+<A NAME="IDX185"></A>
 Returns the sign <CODE>s</CODE> of <CODE>x</CODE> as a float. The value is 1 for
 <CODE>x</CODE> &#62;= 0, -1 for <CODE>x</CODE> &#60; 0.
 
 <DT><CODE>uintL float_digits (const <VAR>type</VAR>&#38; x)</CODE>
 <DD>
+<A NAME="IDX186"></A>
 Returns the number of mantissa bits in the floating-point representation
 of <CODE>x</CODE>, including the hidden bit. The value only depends on the type
 of <CODE>x</CODE>, not on its value.
 
 <DT><CODE>uintL float_precision (const <VAR>type</VAR>&#38; x)</CODE>
 <DD>
+<A NAME="IDX187"></A>
 Returns the number of significant mantissa bits in the floating-point
 representation of <CODE>x</CODE>. Since denormalized numbers are not supported,
 this is the same as <CODE>float_digits(x)</CODE> if <CODE>x</CODE> is non-zero, and
@@ -2309,6 +2512,11 @@ this is the same as <CODE>float_digits(x)</CODE> if <CODE>x</CODE> is non-zero,
 
 <P>
 The complete internal representation of a float is encoded in the type
+<A NAME="IDX188"></A>
+<A NAME="IDX189"></A>
+<A NAME="IDX190"></A>
+<A NAME="IDX191"></A>
+<A NAME="IDX192"></A>
 <CODE>cl_decoded_float</CODE> (or <CODE>cl_decoded_sfloat</CODE>, <CODE>cl_decoded_ffloat</CODE>,
 <CODE>cl_decoded_dfloat</CODE>, <CODE>cl_decoded_lfloat</CODE>, respectively), defined by
 
@@ -2326,6 +2534,7 @@ and returned by the function
 
 <DT><CODE>cl_decoded_<VAR>type</VAR>float decode_float (const <VAR>type</VAR>&#38; x)</CODE>
 <DD>
+<A NAME="IDX193"></A>
 For <CODE>x</CODE> non-zero, this returns <CODE>(-1)^s</CODE>, <CODE>e</CODE>, <CODE>m</CODE> with
 <CODE>x = (-1)^s * 2^e * m</CODE> and <CODE>0.5 &#60;= m &#60; 1.0</CODE>. For <CODE>x</CODE> = 0,
 it returns <CODE>(-1)^s</CODE>=1, <CODE>e</CODE>=0, <CODE>m</CODE>=0.
@@ -2336,7 +2545,7 @@ it returns <CODE>(-1)^s</CODE>=1, <CODE>e</CODE>=0, <CODE>m</CODE>=0.
 A complete decoding in terms of integers is provided as type
 
 <PRE>
-struct cl_idecoded_float {
+<A NAME="IDX194"></A>struct cl_idecoded_float {
         cl_I mantissa; cl_I exponent; cl_I sign;
 };
 </PRE>
@@ -2349,6 +2558,7 @@ by the following function:
 
 <DT><CODE>cl_idecoded_float integer_decode_float (const <VAR>type</VAR>&#38; x)</CODE>
 <DD>
+<A NAME="IDX195"></A>
 For <CODE>x</CODE> non-zero, this returns <CODE>(-1)^s</CODE>, <CODE>e</CODE>, <CODE>m</CODE> with
 <CODE>x = (-1)^s * 2^e * m</CODE> and <CODE>m</CODE> an integer with <CODE>float_digits(x)</CODE>
 bits. For <CODE>x</CODE> = 0, it returns <CODE>(-1)^s</CODE>=1, <CODE>e</CODE>=0, <CODE>m</CODE>=0.
@@ -2364,6 +2574,7 @@ Some other function, implemented only for class <CODE>cl_F</CODE>:
 
 <DT><CODE>cl_F float_sign (const cl_F&#38; x, const cl_F&#38; y)</CODE>
 <DD>
+<A NAME="IDX196"></A>
 This returns a floating point number whose precision and absolute value
 is that of <CODE>y</CODE> and whose sign is that of <CODE>x</CODE>. If <CODE>x</CODE> is
 zero, it is treated as positive. Same for <CODE>y</CODE>.
@@ -2372,6 +2583,9 @@ zero, it is treated as positive. Same for <CODE>y</CODE>.
 
 
 <H2><A NAME="SEC38" HREF="cln.html#TOC38">4.11 Conversion functions</A></H2>
+<P>
+<A NAME="IDX197"></A>
+
 
 
 
@@ -2385,6 +2599,7 @@ The type <CODE>cl_float_format_t</CODE> describes a floating-point format.
 
 <DT><CODE>cl_float_format_t cl_float_format (uintL n)</CODE>
 <DD>
+<A NAME="IDX198"></A>
 Returns the smallest float format which guarantees at least <CODE>n</CODE>
 decimal digits in the mantissa (after the decimal point).
 
@@ -2394,6 +2609,7 @@ Returns the floating point format of <CODE>x</CODE>.
 
 <DT><CODE>cl_float_format_t cl_default_float_format</CODE>
 <DD>
+<A NAME="IDX199"></A>
 Global variable: the default float format used when converting rational numbers
 to floats.
 </DL>
@@ -2409,6 +2625,7 @@ defines the following operations:
 
 <DT><CODE>cl_F cl_float (const <VAR>type</VAR>&#38;x, cl_float_format_t f)</CODE>
 <DD>
+<A NAME="IDX200"></A>
 Returns <CODE>x</CODE> as a float of format <CODE>f</CODE>.
 <DT><CODE>cl_F cl_float (const <VAR>type</VAR>&#38;x, const cl_F&#38; y)</CODE>
 <DD>
@@ -2431,28 +2648,34 @@ Every floating-point format has some characteristic numbers:
 
 <DT><CODE>cl_F most_positive_float (cl_float_format_t f)</CODE>
 <DD>
+<A NAME="IDX201"></A>
 Returns the largest (most positive) floating point number in float format <CODE>f</CODE>.
 
 <DT><CODE>cl_F most_negative_float (cl_float_format_t f)</CODE>
 <DD>
+<A NAME="IDX202"></A>
 Returns the smallest (most negative) floating point number in float format <CODE>f</CODE>.
 
 <DT><CODE>cl_F least_positive_float (cl_float_format_t f)</CODE>
 <DD>
+<A NAME="IDX203"></A>
 Returns the least positive floating point number (i.e. &#62; 0 but closest to 0)
 in float format <CODE>f</CODE>.
 
 <DT><CODE>cl_F least_negative_float (cl_float_format_t f)</CODE>
 <DD>
+<A NAME="IDX204"></A>
 Returns the least negative floating point number (i.e. &#60; 0 but closest to 0)
 in float format <CODE>f</CODE>.
 
 <DT><CODE>cl_F float_epsilon (cl_float_format_t f)</CODE>
 <DD>
+<A NAME="IDX205"></A>
 Returns the smallest floating point number e &#62; 0 such that <CODE>1+e != 1</CODE>.
 
 <DT><CODE>cl_F float_negative_epsilon (cl_float_format_t f)</CODE>
 <DD>
+<A NAME="IDX206"></A>
 Returns the smallest floating point number e &#62; 0 such that <CODE>1-e != 1</CODE>.
 </DL>
 
@@ -2469,6 +2692,7 @@ defines the following operation:
 
 <DT><CODE>cl_RA rational (const <VAR>type</VAR>&#38; x)</CODE>
 <DD>
+<A NAME="IDX207"></A>
 Returns the value of <CODE>x</CODE> as an exact number. If <CODE>x</CODE> is already
 an exact number, this is <CODE>x</CODE>. If <CODE>x</CODE> is a floating-point number,
 the value is a rational number whose denominator is a power of 2.
@@ -2483,6 +2707,7 @@ the function
 
 <DT><CODE>cl_RA rationalize (const cl_R&#38; x)</CODE>
 <DD>
+<A NAME="IDX208"></A>
 If <CODE>x</CODE> is a floating-point number, it actually represents an interval
 of real numbers, and this function returns the rational number with
 smallest denominator (and smallest numerator, in magnitude)
@@ -2524,6 +2749,7 @@ a complicated but deterministic way.
 
 <P>
 The global variable
+<A NAME="IDX209"></A>
 
 <PRE>
 cl_random_state cl_default_random_state
@@ -2540,12 +2766,14 @@ below are called without <CODE>cl_random_state</CODE> argument.
 <DD>
 <DT><CODE>uint32 random32 ()</CODE>
 <DD>
+<A NAME="IDX210"></A>
 Returns a random unsigned 32-bit number. All bits are equally random.
 
 <DT><CODE>cl_I random_I (cl_random_state&#38; randomstate, const cl_I&#38; n)</CODE>
 <DD>
 <DT><CODE>cl_I random_I (const cl_I&#38; n)</CODE>
 <DD>
+<A NAME="IDX211"></A>
 <CODE>n</CODE> must be an integer &#62; 0. This function returns a random integer <CODE>x</CODE>
 in the range <CODE>0 &#60;= x &#60; n</CODE>.
 
@@ -2553,6 +2781,7 @@ in the range <CODE>0 &#60;= x &#60; n</CODE>.
 <DD>
 <DT><CODE>cl_F random_F (const cl_F&#38; n)</CODE>
 <DD>
+<A NAME="IDX212"></A>
 <CODE>n</CODE> must be a float &#62; 0. This function returns a random floating-point
 number of the same format as <CODE>n</CODE> in the range <CODE>0 &#60;= x &#60; n</CODE>.
 
@@ -2560,6 +2789,7 @@ number of the same format as <CODE>n</CODE> in the range <CODE>0 &#60;= x &#60;
 <DD>
 <DT><CODE>cl_R random_R (const cl_R&#38; n)</CODE>
 <DD>
+<A NAME="IDX213"></A>
 Behaves like <CODE>random_I</CODE> if <CODE>n</CODE> is an integer and like <CODE>random_F</CODE>
 if <CODE>n</CODE> is a float.
 </DL>
@@ -2567,6 +2797,9 @@ if <CODE>n</CODE> is a float.
 
 
 <H2><A NAME="SEC42" HREF="cln.html#TOC42">4.13 Obfuscating operators</A></H2>
+<P>
+<A NAME="IDX214"></A>
+
 
 <P>
 The modifying C/C++ operators <CODE>+=</CODE>, <CODE>-=</CODE>, <CODE>*=</CODE>, <CODE>/=</CODE>,
@@ -2581,6 +2814,7 @@ to get happy, then add
 </PRE>
 
 <P>
+<A NAME="IDX215"></A>
 to the beginning of your source files, before the inclusion of any CLN
 include files. This flag will enable the following operators:
 
@@ -2594,12 +2828,16 @@ For the classes <CODE>cl_N</CODE>, <CODE>cl_R</CODE>, <CODE>cl_RA</CODE>,
 
 <DT><CODE><VAR>type</VAR>&#38; operator += (<VAR>type</VAR>&#38;, const <VAR>type</VAR>&#38;)</CODE>
 <DD>
+<A NAME="IDX216"></A>
 <DT><CODE><VAR>type</VAR>&#38; operator -= (<VAR>type</VAR>&#38;, const <VAR>type</VAR>&#38;)</CODE>
 <DD>
+<A NAME="IDX217"></A>
 <DT><CODE><VAR>type</VAR>&#38; operator *= (<VAR>type</VAR>&#38;, const <VAR>type</VAR>&#38;)</CODE>
 <DD>
+<A NAME="IDX218"></A>
 <DT><CODE><VAR>type</VAR>&#38; operator /= (<VAR>type</VAR>&#38;, const <VAR>type</VAR>&#38;)</CODE>
 <DD>
+<A NAME="IDX219"></A>
 </DL>
 
 <P>
@@ -2616,14 +2854,19 @@ For the class <CODE>cl_I</CODE>:
 <DD>
 <DT><CODE><VAR>type</VAR>&#38; operator &#38;= (<VAR>type</VAR>&#38;, const <VAR>type</VAR>&#38;)</CODE>
 <DD>
+<A NAME="IDX220"></A>
 <DT><CODE><VAR>type</VAR>&#38; operator |= (<VAR>type</VAR>&#38;, const <VAR>type</VAR>&#38;)</CODE>
 <DD>
+<A NAME="IDX221"></A>
 <DT><CODE><VAR>type</VAR>&#38; operator ^= (<VAR>type</VAR>&#38;, const <VAR>type</VAR>&#38;)</CODE>
 <DD>
+<A NAME="IDX222"></A>
 <DT><CODE><VAR>type</VAR>&#38; operator &#60;&#60;= (<VAR>type</VAR>&#38;, const <VAR>type</VAR>&#38;)</CODE>
 <DD>
+<A NAME="IDX223"></A>
 <DT><CODE><VAR>type</VAR>&#38; operator &#62;&#62;= (<VAR>type</VAR>&#38;, const <VAR>type</VAR>&#38;)</CODE>
 <DD>
+<A NAME="IDX224"></A>
 </DL>
 
 <P>
@@ -2635,6 +2878,7 @@ For the classes <CODE>cl_N</CODE>, <CODE>cl_R</CODE>, <CODE>cl_RA</CODE>, <CODE>
 
 <DT><CODE><VAR>type</VAR>&#38; operator ++ (<VAR>type</VAR>&#38; x)</CODE>
 <DD>
+<A NAME="IDX225"></A>
 The prefix operator <CODE>++x</CODE>.
 
 <DT><CODE>void operator ++ (<VAR>type</VAR>&#38; x, int)</CODE>
@@ -2643,6 +2887,7 @@ The postfix operator <CODE>x++</CODE>.
 
 <DT><CODE><VAR>type</VAR>&#38; operator -- (<VAR>type</VAR>&#38; x)</CODE>
 <DD>
+<A NAME="IDX226"></A>
 The prefix operator <CODE>--x</CODE>.
 
 <DT><CODE>void operator -- (<VAR>type</VAR>&#38; x, int)</CODE>
@@ -2659,10 +2904,16 @@ efficient.
 
 
 <H1><A NAME="SEC43" HREF="cln.html#TOC43">5. Input/Output</A></H1>
+<P>
+<A NAME="IDX227"></A>
+
 
 
 
 <H2><A NAME="SEC44" HREF="cln.html#TOC44">5.1 Internal and printed representation</A></H2>
+<P>
+<A NAME="IDX228"></A>
+
 
 <P>
 All computations deal with the internal representations of the numbers.
@@ -2676,8 +2927,10 @@ Several external representations may denote the same number, for example,
 
 <P>
 Converting an internal to an external representation is called "printing",
+<A NAME="IDX229"></A>
 converting an external to an internal representation is called "reading".
-In CLN, is it always true that conversion of an internal to an external
+<A NAME="IDX230"></A>
+In CLN, it is always true that conversion of an internal to an external
 representation and then back to an internal representation will yield the
 same internal representation. Symbolically: <CODE>read(print(x)) == x</CODE>.
 This is called "print-read consistency". 
@@ -3058,7 +3311,7 @@ using this variable name. Default is <CODE>"x"</CODE>.
 
 <P>
 The global variable <CODE>cl_default_print_flags</CODE> contains the default values,
-used by the function <CODE>fprint</CODE>,
+used by the function <CODE>fprint</CODE>.
 
 
 
@@ -3163,10 +3416,16 @@ Tests whether the given number is an element of the number ring R.
 
 
 <H1><A NAME="SEC48" HREF="cln.html#TOC48">7. Modular integers</A></H1>
+<P>
+<A NAME="IDX231"></A>
+
 
 
 
 <H2><A NAME="SEC49" HREF="cln.html#TOC49">7.1 Modular integer rings</A></H2>
+<P>
+<A NAME="IDX232"></A>
+
 
 <P>
 CLN implements modular integers, i.e. integers modulo a fixed integer N.
@@ -3212,9 +3471,11 @@ Modular integer rings are constructed using the function
 
 <DT><CODE>cl_modint_ring cl_find_modint_ring (const cl_I&#38; N)</CODE>
 <DD>
+<A NAME="IDX233"></A>
 This function returns the modular ring <SAMP>`Z/NZ'</SAMP>. It takes care
 of finding out about special cases of <CODE>N</CODE>, like powers of two
 and odd numbers for which Montgomery multiplication will be a win,
+<A NAME="IDX234"></A>
 and precomputes any necessary auxiliary data for computing modulo <CODE>N</CODE>.
 There is a cache table of rings, indexed by <CODE>N</CODE> (or, more precisely,
 by <CODE>abs(N)</CODE>). This ensures that the precomputation costs are reduced
@@ -3229,8 +3490,10 @@ Modular integer rings can be compared for equality:
 
 <DT><CODE>bool operator== (const cl_modint_ring&#38;, const cl_modint_ring&#38;)</CODE>
 <DD>
+<A NAME="IDX235"></A>
 <DT><CODE>bool operator!= (const cl_modint_ring&#38;, const cl_modint_ring&#38;)</CODE>
 <DD>
+<A NAME="IDX236"></A>
 These compare two modular integer rings for equality. Two different calls
 to <CODE>cl_find_modint_ring</CODE> with the same argument necessarily return the
 same ring because it is memoized in the cache table.
@@ -3248,22 +3511,27 @@ Given a modular integer ring <CODE>R</CODE>, the following members can be used.
 
 <DT><CODE>cl_I R-&#62;modulus</CODE>
 <DD>
+<A NAME="IDX237"></A>
 This is the ring's modulus, normalized to be nonnegative: <CODE>abs(N)</CODE>.
 
 <DT><CODE>cl_MI R-&#62;zero()</CODE>
 <DD>
+<A NAME="IDX238"></A>
 This returns <CODE>0 mod N</CODE>.
 
 <DT><CODE>cl_MI R-&#62;one()</CODE>
 <DD>
+<A NAME="IDX239"></A>
 This returns <CODE>1 mod N</CODE>.
 
 <DT><CODE>cl_MI R-&#62;canonhom (const cl_I&#38; x)</CODE>
 <DD>
+<A NAME="IDX240"></A>
 This returns <CODE>x mod N</CODE>.
 
 <DT><CODE>cl_I R-&#62;retract (const cl_MI&#38; x)</CODE>
 <DD>
+<A NAME="IDX241"></A>
 This is a partial inverse function to <CODE>R-&#62;canonhom</CODE>. It returns the
 standard representative (<CODE>&#62;=0</CODE>, <CODE>&#60;N</CODE>) of <CODE>x</CODE>.
 
@@ -3271,6 +3539,7 @@ standard representative (<CODE>&#62;=0</CODE>, <CODE>&#60;N</CODE>) of <CODE>x</
 <DD>
 <DT><CODE>cl_MI R-&#62;random()</CODE>
 <DD>
+<A NAME="IDX242"></A>
 This returns a random integer modulo <CODE>N</CODE>.
 </DL>
 
@@ -3282,15 +3551,18 @@ The following operations are defined on modular integers.
 
 <DT><CODE>cl_modint_ring x.ring ()</CODE>
 <DD>
+<A NAME="IDX243"></A>
 Returns the ring to which the modular integer <CODE>x</CODE> belongs.
 
 <DT><CODE>cl_MI operator+ (const cl_MI&#38;, const cl_MI&#38;)</CODE>
 <DD>
+<A NAME="IDX244"></A>
 Returns the sum of two modular integers. One of the arguments may also be
 a plain integer.
 
 <DT><CODE>cl_MI operator- (const cl_MI&#38;, const cl_MI&#38;)</CODE>
 <DD>
+<A NAME="IDX245"></A>
 Returns the difference of two modular integers. One of the arguments may also be
 a plain integer.
 
@@ -3300,50 +3572,61 @@ Returns the negative of a modular integer.
 
 <DT><CODE>cl_MI operator* (const cl_MI&#38;, const cl_MI&#38;)</CODE>
 <DD>
+<A NAME="IDX246"></A>
 Returns the product of two modular integers. One of the arguments may also be
 a plain integer.
 
 <DT><CODE>cl_MI square (const cl_MI&#38;)</CODE>
 <DD>
+<A NAME="IDX247"></A>
 Returns the square of a modular integer.
 
 <DT><CODE>cl_MI recip (const cl_MI&#38; x)</CODE>
 <DD>
+<A NAME="IDX248"></A>
 Returns the reciprocal <CODE>x^-1</CODE> of a modular integer <CODE>x</CODE>. <CODE>x</CODE>
 must be coprime to the modulus, otherwise an error message is issued.
 
 <DT><CODE>cl_MI div (const cl_MI&#38; x, const cl_MI&#38; y)</CODE>
 <DD>
+<A NAME="IDX249"></A>
 Returns the quotient <CODE>x*y^-1</CODE> of two modular integers <CODE>x</CODE>, <CODE>y</CODE>.
 <CODE>y</CODE> must be coprime to the modulus, otherwise an error message is issued.
 
 <DT><CODE>cl_MI expt_pos (const cl_MI&#38; x, const cl_I&#38; y)</CODE>
 <DD>
+<A NAME="IDX250"></A>
 <CODE>y</CODE> must be &#62; 0. Returns <CODE>x^y</CODE>.
 
 <DT><CODE>cl_MI expt (const cl_MI&#38; x, const cl_I&#38; y)</CODE>
 <DD>
+<A NAME="IDX251"></A>
 Returns <CODE>x^y</CODE>. If <CODE>y</CODE> is negative, <CODE>x</CODE> must be coprime to the
 modulus, else an error message is issued.
 
 <DT><CODE>cl_MI operator&#60;&#60; (const cl_MI&#38; x, const cl_I&#38; y)</CODE>
 <DD>
+<A NAME="IDX252"></A>
 Returns <CODE>x*2^y</CODE>.
 
 <DT><CODE>cl_MI operator&#62;&#62; (const cl_MI&#38; x, const cl_I&#38; y)</CODE>
 <DD>
+<A NAME="IDX253"></A>
 Returns <CODE>x*2^-y</CODE>. When <CODE>y</CODE> is positive, the modulus must be odd,
 or an error message is issued.
 
 <DT><CODE>bool operator== (const cl_MI&#38;, const cl_MI&#38;)</CODE>
 <DD>
+<A NAME="IDX254"></A>
 <DT><CODE>bool operator!= (const cl_MI&#38;, const cl_MI&#38;)</CODE>
 <DD>
+<A NAME="IDX255"></A>
 Compares two modular integers, belonging to the same modular integer ring,
 for equality.
 
 <DT><CODE>cl_boolean zerop (const cl_MI&#38; x)</CODE>
 <DD>
+<A NAME="IDX256"></A>
 Returns true if <CODE>x</CODE> is <CODE>0 mod N</CODE>.
 </DL>
 
@@ -3356,8 +3639,10 @@ input/output).
 
 <DT><CODE>void fprint (cl_ostream stream, const cl_MI&#38; x)</CODE>
 <DD>
+<A NAME="IDX257"></A>
 <DT><CODE>cl_ostream operator&#60;&#60; (cl_ostream stream, const cl_MI&#38; x)</CODE>
 <DD>
+<A NAME="IDX258"></A>
 Prints the modular integer <CODE>x</CODE> on the <CODE>stream</CODE>. The output may depend
 on the global printer settings in the variable <CODE>cl_default_print_flags</CODE>.
 </DL>
@@ -3365,6 +3650,9 @@ on the global printer settings in the variable <CODE>cl_default_print_flags</COD
 
 
 <H1><A NAME="SEC51" HREF="cln.html#TOC51">8. Symbolic data types</A></H1>
+<P>
+<A NAME="IDX259"></A>
+
 
 <P>
 CLN implements two symbolic (non-numeric) data types: strings and symbols.
@@ -3373,6 +3661,9 @@ CLN implements two symbolic (non-numeric) data types: strings and symbols.
 
 
 <H2><A NAME="SEC52" HREF="cln.html#TOC52">8.1 Strings</A></H2>
+<P>
+<A NAME="IDX260"></A>
+
 
 <P>
 The class
@@ -3397,6 +3688,7 @@ Strings are constructed through the following constructors:
 
 <DT><CODE>cl_string (const char * s)</CODE>
 <DD>
+<A NAME="IDX261"></A>
 Returns an immutable copy of the (zero-terminated) C string <CODE>s</CODE>.
 
 <DT><CODE>cl_string (const char * ptr, unsigned long len)</CODE>
@@ -3417,17 +3709,21 @@ Assignment from <CODE>cl_string</CODE> and <CODE>const char *</CODE>.
 
 <DT><CODE>s.length()</CODE>
 <DD>
+<A NAME="IDX262"></A>
 <DT><CODE>strlen(s)</CODE>
 <DD>
+<A NAME="IDX263"></A>
 Returns the length of the string <CODE>s</CODE>.
 
 <DT><CODE>s[i]</CODE>
 <DD>
+<A NAME="IDX264"></A>
 Returns the <CODE>i</CODE>th character of the string <CODE>s</CODE>.
 <CODE>i</CODE> must be in the range <CODE>0 &#60;= i &#60; s.length()</CODE>.
 
 <DT><CODE>bool equal (const cl_string&#38; s1, const cl_string&#38; s2)</CODE>
 <DD>
+<A NAME="IDX265"></A>
 Compares two strings for equality. One of the arguments may also be a
 plain <CODE>const char *</CODE>.
 </DL>
@@ -3435,6 +3731,9 @@ plain <CODE>const char *</CODE>.
 
 
 <H2><A NAME="SEC53" HREF="cln.html#TOC53">8.2 Symbols</A></H2>
+<P>
+<A NAME="IDX266"></A>
+
 
 <P>
 Symbols are uniquified strings: all symbols with the same name are shared.
@@ -3453,6 +3752,7 @@ Symbols are constructed through the following constructor:
 
 <DT><CODE>cl_symbol (const cl_string&#38; s)</CODE>
 <DD>
+<A NAME="IDX267"></A>
 Looks up or creates a new symbol with a given name.
 </DL>
 
@@ -3469,12 +3769,17 @@ Conversion to <CODE>cl_string</CODE>: Returns the string which names the symbol
 
 <DT><CODE>bool equal (const cl_symbol&#38; sym1, const cl_symbol&#38; sym2)</CODE>
 <DD>
+<A NAME="IDX268"></A>
 Compares two symbols for equality. This is very fast.
 </DL>
 
 
 
 <H1><A NAME="SEC54" HREF="cln.html#TOC54">9. Univariate polynomials</A></H1>
+<P>
+<A NAME="IDX269"></A>
+<A NAME="IDX270"></A>
+
 
 
 
@@ -3586,6 +3891,7 @@ return the same polynomial ring.
 
 <DT><CODE>cl_univpoly_complex_ring cl_find_univpoly_ring (const cl_complex_ring&#38; R)</CODE>
 <DD>
+<A NAME="IDX271"></A>
 <DT><CODE>cl_univpoly_complex_ring cl_find_univpoly_ring (const cl_complex_ring&#38; R, const cl_symbol&#38; varname)</CODE>
 <DD>
 <DT><CODE>cl_univpoly_real_ring cl_find_univpoly_ring (const cl_real_ring&#38; R)</CODE>
@@ -3620,27 +3926,33 @@ Given a univariate polynomial ring <CODE>R</CODE>, the following members can be
 
 <DT><CODE>cl_ring R-&#62;basering()</CODE>
 <DD>
+<A NAME="IDX272"></A>
 This returns the base ring, as passed to <SAMP>`cl_find_univpoly_ring'</SAMP>.
 
 <DT><CODE>cl_UP R-&#62;zero()</CODE>
 <DD>
+<A NAME="IDX273"></A>
 This returns <CODE>0 in R</CODE>, a polynomial of degree -1.
 
 <DT><CODE>cl_UP R-&#62;one()</CODE>
 <DD>
+<A NAME="IDX274"></A>
 This returns <CODE>1 in R</CODE>, a polynomial of degree &#60;= 0.
 
 <DT><CODE>cl_UP R-&#62;canonhom (const cl_I&#38; x)</CODE>
 <DD>
+<A NAME="IDX275"></A>
 This returns <CODE>x in R</CODE>, a polynomial of degree &#60;= 0.
 
 <DT><CODE>cl_UP R-&#62;monomial (const cl_ring_element&#38; x, uintL e)</CODE>
 <DD>
+<A NAME="IDX276"></A>
 This returns a sparse polynomial: <CODE>x * X^e</CODE>, where <CODE>X</CODE> is the
 indeterminate.
 
 <DT><CODE>cl_UP R-&#62;create (sintL degree)</CODE>
 <DD>
+<A NAME="IDX277"></A>
 Creates a new polynomial with a given degree. The zero polynomial has degree
 <CODE>-1</CODE>. After creating the polynomial, you should put in the coefficients,
 using the <CODE>set_coeff</CODE> member function, and then call the <CODE>finalize</CODE>
@@ -3655,12 +3967,14 @@ The following are the only destructive operations on univariate polynomials.
 
 <DT><CODE>void set_coeff (cl_UP&#38; x, uintL index, const cl_ring_element&#38; y)</CODE>
 <DD>
+<A NAME="IDX278"></A>
 This changes the coefficient of <CODE>X^index</CODE> in <CODE>x</CODE> to be <CODE>y</CODE>.
 After changing a polynomial and before applying any "normal" operation on it,
 you should call its <CODE>finalize</CODE> member function.
 
 <DT><CODE>void finalize (cl_UP&#38; x)</CODE>
 <DD>
+<A NAME="IDX279"></A>
 This function marks the endpoint of destructive modifications of a polynomial.
 It normalizes the internal representation so that subsequent computations have
 less overhead. Doing normal computations on unnormalized polynomials may
@@ -3675,14 +3989,17 @@ The following operations are defined on univariate polynomials.
 
 <DT><CODE>cl_univpoly_ring x.ring ()</CODE>
 <DD>
+<A NAME="IDX280"></A>
 Returns the ring to which the univariate polynomial <CODE>x</CODE> belongs.
 
 <DT><CODE>cl_UP operator+ (const cl_UP&#38;, const cl_UP&#38;)</CODE>
 <DD>
+<A NAME="IDX281"></A>
 Returns the sum of two univariate polynomials.
 
 <DT><CODE>cl_UP operator- (const cl_UP&#38;, const cl_UP&#38;)</CODE>
 <DD>
+<A NAME="IDX282"></A>
 Returns the difference of two univariate polynomials.
 
 <DT><CODE>cl_UP operator- (const cl_UP&#38;)</CODE>
@@ -3691,44 +4008,54 @@ Returns the negative of a univariate polynomial.
 
 <DT><CODE>cl_UP operator* (const cl_UP&#38;, const cl_UP&#38;)</CODE>
 <DD>
+<A NAME="IDX283"></A>
 Returns the product of two univariate polynomials. One of the arguments may
 also be a plain integer or an element of the base ring.
 
 <DT><CODE>cl_UP square (const cl_UP&#38;)</CODE>
 <DD>
+<A NAME="IDX284"></A>
 Returns the square of a univariate polynomial.
 
 <DT><CODE>cl_UP expt_pos (const cl_UP&#38; x, const cl_I&#38; y)</CODE>
 <DD>
+<A NAME="IDX285"></A>
 <CODE>y</CODE> must be &#62; 0. Returns <CODE>x^y</CODE>.
 
 <DT><CODE>bool operator== (const cl_UP&#38;, const cl_UP&#38;)</CODE>
 <DD>
+<A NAME="IDX286"></A>
 <DT><CODE>bool operator!= (const cl_UP&#38;, const cl_UP&#38;)</CODE>
 <DD>
+<A NAME="IDX287"></A>
 Compares two univariate polynomials, belonging to the same univariate
 polynomial ring, for equality.
 
 <DT><CODE>cl_boolean zerop (const cl_UP&#38; x)</CODE>
 <DD>
+<A NAME="IDX288"></A>
 Returns true if <CODE>x</CODE> is <CODE>0 in R</CODE>.
 
 <DT><CODE>sintL degree (const cl_UP&#38; x)</CODE>
 <DD>
+<A NAME="IDX289"></A>
 Returns the degree of the polynomial. The zero polynomial has degree <CODE>-1</CODE>.
 
 <DT><CODE>cl_ring_element coeff (const cl_UP&#38; x, uintL index)</CODE>
 <DD>
+<A NAME="IDX290"></A>
 Returns the coefficient of <CODE>X^index</CODE> in the polynomial <CODE>x</CODE>.
 
 <DT><CODE>cl_ring_element x (const cl_ring_element&#38; y)</CODE>
 <DD>
+<A NAME="IDX291"></A>
 Evaluation: If <CODE>x</CODE> is a polynomial and <CODE>y</CODE> belongs to the base ring,
 then <SAMP>`x(y)'</SAMP> returns the value of the substitution of <CODE>y</CODE> into
 <CODE>x</CODE>.
 
 <DT><CODE>cl_UP deriv (const cl_UP&#38; x)</CODE>
 <DD>
+<A NAME="IDX292"></A>
 Returns the derivative of the polynomial <CODE>x</CODE> with respect to the
 indeterminate <CODE>X</CODE>.
 </DL>
@@ -3742,8 +4069,10 @@ input/output).
 
 <DT><CODE>void fprint (cl_ostream stream, const cl_UP&#38; x)</CODE>
 <DD>
+<A NAME="IDX293"></A>
 <DT><CODE>cl_ostream operator&#60;&#60; (cl_ostream stream, const cl_UP&#38; x)</CODE>
 <DD>
+<A NAME="IDX294"></A>
 Prints the univariate polynomial <CODE>x</CODE> on the <CODE>stream</CODE>. The output may
 depend on the global printer settings in the variable
 <CODE>cl_default_print_flags</CODE>.
@@ -3761,18 +4090,26 @@ The following functions return special polynomials.
 
 <DT><CODE>cl_UP_I cl_tschebychev (sintL n)</CODE>
 <DD>
+<A NAME="IDX295"></A>
+<A NAME="IDX296"></A>
 Returns the n-th Tchebychev polynomial (n &#62;= 0).
 
 <DT><CODE>cl_UP_I cl_hermite (sintL n)</CODE>
 <DD>
+<A NAME="IDX297"></A>
+<A NAME="IDX298"></A>
 Returns the n-th Hermite polynomial (n &#62;= 0).
 
 <DT><CODE>cl_UP_RA cl_legendre (sintL n)</CODE>
 <DD>
+<A NAME="IDX299"></A>
+<A NAME="IDX300"></A>
 Returns the n-th Legendre polynomial (n &#62;= 0).
 
 <DT><CODE>cl_UP_I cl_laguerre (sintL n)</CODE>
 <DD>
+<A NAME="IDX301"></A>
+<A NAME="IDX302"></A>
 Returns the n-th Laguerre polynomial (n &#62;= 0).
 </DL>
 
@@ -3789,6 +4126,9 @@ of these polynomials from their definition can be found in the
 
 
 <H2><A NAME="SEC59" HREF="cln.html#TOC59">10.1 Why C++ ?</A></H2>
+<P>
+<A NAME="IDX303"></A>
+
 
 <P>
 Using C++ as an implementation language provides
@@ -3802,6 +4142,7 @@ Efficiency: It compiles to machine code.
 
 <LI>
 
+<A NAME="IDX304"></A>
 Portability: It runs on all platforms supporting a C++ compiler. Because
 of the availability of GNU C++, this includes all currently used 32-bit and
 64-bit platforms, independently of the quality of the vendor's C++ compiler.
@@ -3811,7 +4152,7 @@ of the availability of GNU C++, this includes all currently used 32-bit and
 Type safety: The C++ compilers knows about the number types and complains if,
 for example, you try to assign a float to an integer variable. However,
 a drawback is that C++ doesn't know about generic types, hence a restriction
-like that <CODE>operation+ (const cl_MI&#38;, const cl_MI&#38;)</CODE> requires that both
+like that <CODE>operator+ (const cl_MI&#38;, const cl_MI&#38;)</CODE> requires that both
 arguments belong to the same modular ring cannot be expressed as a compile-time
 information.
 
@@ -3847,6 +4188,8 @@ Object sharing: An operation like <CODE>x+0</CODE> returns <CODE>x</CODE> withou
 it.
 <LI>
 
+<A NAME="IDX305"></A>
+<A NAME="IDX306"></A>
 Garbage collection: A reference counting mechanism makes sure that any
 number object's storage is freed immediately when the last reference to the
 object is gone.
@@ -3879,8 +4222,8 @@ The kernel of CLN has been written in assembly language for some CPUs
 (<CODE>i386</CODE>, <CODE>m68k</CODE>, <CODE>sparc</CODE>, <CODE>mips</CODE>, <CODE>arm</CODE>).
 <LI>
 
-On all CPUs, CLN uses the superefficient low-level routines from GNU
-GMP version 2.
+On all CPUs, CLN may be configured to use the superefficient low-level
+routines from GNU GMP version 3.
 <LI>
 
 For large numbers, CLN uses, instead of the standard <CODE>O(N^2)</CODE>
@@ -3891,6 +4234,7 @@ algorithm.
 
 For very large numbers (more than 12000 decimal digits), CLN uses
 Schönhage-Strassen
+<A NAME="IDX307"></A>
 multiplication, which is an asymptotically
 optimal multiplication algorithm.
 <LI>
@@ -3902,6 +4246,9 @@ of division and radix conversion.
 
 
 <H2><A NAME="SEC62" HREF="cln.html#TOC62">10.4 Garbage collection</A></H2>
+<P>
+<A NAME="IDX308"></A>
+
 
 <P>
 All the number classes are reference count classes: They only contain a pointer
@@ -3937,6 +4284,9 @@ environment variables, or directly substitute the appropriate values.
 
 
 <H2><A NAME="SEC64" HREF="cln.html#TOC64">11.1 Compiler options</A></H2>
+<P>
+<A NAME="IDX309"></A>
+
 
 <P>
 Until you have installed CLN in a public place, the following options are
@@ -3973,6 +4323,10 @@ linking a CLN application it is sufficient to give the flag <CODE>-lcln</CODE>.
 
 
 <H2><A NAME="SEC65" HREF="cln.html#TOC65">11.2 Include files</A></H2>
+<P>
+<A NAME="IDX310"></A>
+<A NAME="IDX311"></A>
+
 
 <P>
 Here is a summary of the include files and their contents.
@@ -4168,6 +4522,7 @@ Includes all of the above.
 
 <P>
 A function which computes the nth Fibonacci number can be written as follows.
+<A NAME="IDX312"></A>
 
 
 
@@ -4244,9 +4599,17 @@ automatically reclaimed (garbage collected). Only the result survives and
 gets passed to the caller.
 
 
+<P>
+The file <CODE>fibonacci.cc</CODE> in the subdirectory <CODE>examples</CODE>
+contains this implementation together with an even faster algorithm.
+
+
 
 
 <H2><A NAME="SEC67" HREF="cln.html#TOC67">11.4 Debugging support</A></H2>
+<P>
+<A NAME="IDX313"></A>
+
 
 <P>
 When debugging a CLN application with GNU <CODE>gdb</CODE>, two facilities are
@@ -4279,6 +4642,7 @@ CLN offers a function <CODE>cl_print</CODE>, callable from the debugger,
 for printing number objects. In order to get this function, you have
 to define the macro <SAMP>`CL_DEBUG'</SAMP> and then include all the header files
 for which you want <CODE>cl_print</CODE> debugging support. For example:
+<A NAME="IDX314"></A>
 
 <PRE>
 #define CL_DEBUG
@@ -4305,6 +4669,7 @@ only with number objects and similar. Therefore CLN offers a member function
 <CODE>debug_print()</CODE> on all CLN types. The same macro <SAMP>`CL_DEBUG'</SAMP>
 is needed for this member function to be implemented. Under <CODE>gdb</CODE>,
 you call it like this:
+<A NAME="IDX315"></A>
 
 <PRE>
 (gdb) print s
@@ -4325,6 +4690,9 @@ Unfortunately, this feature does not seem to work under all circumstances.
 
 
 <H1><A NAME="SEC68" HREF="cln.html#TOC68">12. Customizing</A></H1>
+<P>
+<A NAME="IDX316"></A>
+
 
 
 
@@ -4343,12 +4711,16 @@ void cl_abort (void);
 </PRE>
 
 <P>
+<A NAME="IDX317"></A>
 This function must not return control to its caller.
 
 
 
 
 <H2><A NAME="SEC70" HREF="cln.html#TOC70">12.2 Floating-point underflow</A></H2>
+<P>
+<A NAME="IDX318"></A>
+
 
 <P>
 Floating point underflow denotes the situation when a floating-point number
@@ -4362,9 +4734,8 @@ cl_boolean cl_inhibit_floating_point_underflow
 
 <P>
 to <CODE>cl_true</CODE>, the error will be inhibited, and a floating-point zero
-will be generated instead.
-The default value of <CODE>cl_inhibit_floating_point_underflow</CODE> is
-<CODE>cl_false</CODE>.
+will be generated instead.  The default value of 
+<CODE>cl_inhibit_floating_point_underflow</CODE> is <CODE>cl_false</CODE>.
 
 
 
@@ -4374,6 +4745,7 @@ The default value of <CODE>cl_inhibit_floating_point_underflow</CODE> is
 <P>
 The output of the function <CODE>fprint</CODE> may be customized by changing the
 value of the global variable <CODE>cl_default_print_flags</CODE>.
+<A NAME="IDX319"></A>
 
 
 
@@ -4397,6 +4769,8 @@ void (*cl_free_hook) (void* ptr)      = ...;
 </PRE>
 
 <P>
+<A NAME="IDX320"></A>
+<A NAME="IDX321"></A>
 The <CODE>cl_malloc_hook</CODE> function must not return a <CODE>NULL</CODE> pointer.
 
 
@@ -4416,7 +4790,7 @@ Jump to:
 
 
 <P><HR><P>
-This document was generated on 14 January 2000 using
+This document was generated on 4 May 2000 using
 <A HREF="http://wwwinfo.cern.ch/dis/texi2html/">texi2html</A>&nbsp;1.56k.
 </BODY>
 </HTML>
index 2b722123f97d7a5e1b6106b09e795975eb66f1a2..2adcbc249e376ceb5b6cd1fbd32d2525efb2f995 100644 (file)
@@ -215,8 +215,8 @@ CLN is speed efficient:
    * The kernel of CLN has been written in assembly language for some
      CPUs (`i386', `m68k', `sparc', `mips', `arm').
 
-   * On all CPUs, CLN uses the superefficient low-level routines from
-     GNU GMP version 2.
+   * On all CPUs, CLN may be configured to use the superefficient
+     low-level routines from GNU GMP version 3.
 
    * It uses Karatsuba multiplication, which is significantly faster
      for large numbers than the standard multiplication algorithm.
@@ -267,7 +267,7 @@ C++ compiler
 
 To build CLN, you need a C++ compiler.  Actually, you need GNU `g++
 2.7.0' or newer.  On HPPA, you need GNU `g++ 2.8.0' or newer.  I
-recommend GNU `egcs 1.1' or newer.
+recommend GNU `g++ 2.95' or newer.
 
 The following C++ features are used: classes, member functions,
 overloading of functions and operators, constructors and destructors,
@@ -375,9 +375,6 @@ add either `-O' or `-O2 -fno-schedule-insns' to the CXXFLAGS.  With
 full `-O2', `g++' miscompiles the division routines. Also, for
 -enable-shared to work, you need egcs-1.1.2 or newer.
 
-On MIPS (SGI Irix 6), pass option `--without-gmp' to configure. gmp does
-not work when compiled in `n32' binary format on Irix.
-
 By default, only a static library is built. You can build CLN as a
 shared library too, by calling `configure' with the option
 `--enable-shared'.  To get it built as a shared library only, call
@@ -1310,7 +1307,8 @@ Trigonometric functions
      numbers with `realpart = -pi/2' and `imagpart >= 0' and the numbers
      with `realpart = pi/2' and `imagpart <= 0'.
 
-The constant pi = 3.14... is returned by the following functions:
+Archimedes' constant pi = 3.14... is returned by the following
+functions:
 
 `cl_F cl_pi (cl_float_format_t f)'
      Returns pi as a float of format `f'.
@@ -1943,7 +1941,7 @@ number, for example, "20.0" and "20.000".
 
 Converting an internal to an external representation is called
 "printing", converting an external to an internal representation is
-called "reading".  In CLN, is it always true that conversion of an
+called "reading".  In CLN, it is always true that conversion of an
 internal to an external representation and then back to an internal
 representation will yield the same internal representation.
 Symbolically: `read(print(x)) == x'.  This is called "print-read
@@ -2186,7 +2184,7 @@ The structure type `cl_print_flags' contains the following fields:
      printed using this variable name. Default is `"x"'.
 
 The global variable `cl_default_print_flags' contains the default
-values, used by the function `fprint',
+values, used by the function `fprint'.
 
 \1f
 File: cln.info,  Node: Rings,  Next: Modular integers,  Prev: Input/Output,  Up: Top
@@ -2755,7 +2753,7 @@ Using C++ as an implementation language provides
    * Type safety: The C++ compilers knows about the number types and
      complains if, for example, you try to assign a float to an integer
      variable. However, a drawback is that C++ doesn't know about
-     generic types, hence a restriction like that `operation+ (const
+     generic types, hence a restriction like that `operator+ (const
      cl_MI&, const cl_MI&)' requires that both arguments belong to the
      same modular ring cannot be expressed as a compile-time
      information.
@@ -2808,8 +2806,8 @@ and algorithms:
    * The kernel of CLN has been written in assembly language for some
      CPUs (`i386', `m68k', `sparc', `mips', `arm').
 
-   * On all CPUs, CLN uses the superefficient low-level routines from
-     GNU GMP version 2.
+   * On all CPUs, CLN may be configured to use the superefficient
+     low-level routines from GNU GMP version 3.
 
    * For large numbers, CLN uses, instead of the standard `O(N^2)'
      algorithm, the Karatsuba multiplication, which is an `O(N^1.6)'
@@ -3138,6 +3136,9 @@ When the function returns, all the local variables in the function are
 automatically reclaimed (garbage collected). Only the result survives
 and gets passed to the caller.
 
+The file `fibonacci.cc' in the subdirectory `examples' contains this
+implementation together with an even faster algorithm.
+
 \1f
 File: cln.info,  Node: Debugging support,  Prev: An Example,  Up: Using the library
 
@@ -3275,81 +3276,401 @@ Index
 
 * Menu:
 
+* abs ():                                Elementary functions.
+* abstract class:                        Ordinary number types.
+* acos ():                               Trigonometric functions.
+* acosh ():                              Hyperbolic functions.
+* advocacy:                              Why C++ ?.
+* Archimedes' constant:                  Trigonometric functions.
+* As() ():                               Conversions.
+* ash ():                                Logical functions.
+* asin:                                  Trigonometric functions.
+* asin ():                               Trigonometric functions.
+* asinh ():                              Hyperbolic functions.
+* atan:                                  Trigonometric functions.
+* atan ():                               Trigonometric functions.
+* atanh ():                              Hyperbolic functions.
+* basering ():                           Functions on univariate polynomials.
+* binomial ():                           Combinatorial functions.
+* boole ():                              Logical functions.
+* boole_1:                               Logical functions.
+* boole_2:                               Logical functions.
+* boole_and:                             Logical functions.
+* boole_andc1:                           Logical functions.
+* boole_andc2:                           Logical functions.
+* boole_c1:                              Logical functions.
+* boole_c2:                              Logical functions.
+* boole_clr:                             Logical functions.
+* boole_eqv:                             Logical functions.
+* boole_nand:                            Logical functions.
+* boole_nor:                             Logical functions.
+* boole_orc1:                            Logical functions.
+* boole_orc2:                            Logical functions.
+* boole_set:                             Logical functions.
+* boole_xor:                             Logical functions.
+* canonhom () <1>:                       Functions on univariate polynomials.
+* canonhom ():                           Functions on modular integers.
+* Catalan's constant:                    Euler gamma.
+* ceiling1 ():                           Rounding functions.
+* ceiling2 ():                           Rounding functions.
+* cis ():                                Trigonometric functions.
+* cl_abort ():                           Error handling.
+* cl_byte:                               Logical functions.
+* cl_catalanconst ():                    Euler gamma.
+* cl_compare ():                         Comparisons.
+* cl_cos_sin ():                         Trigonometric functions.
+* cl_cos_sin_t:                          Trigonometric functions.
+* cl_cosh_sinh ():                       Hyperbolic functions.
+* cl_cosh_sinh_t:                        Hyperbolic functions.
+* CL_DEBUG:                              Debugging support.
+* cl_decoded_dfloat:                     Functions on floating-point numbers.
+* cl_decoded_ffloat:                     Functions on floating-point numbers.
+* cl_decoded_float:                      Functions on floating-point numbers.
+* cl_decoded_lfloat:                     Functions on floating-point numbers.
+* cl_decoded_sfloat:                     Functions on floating-point numbers.
+* cl_default_float_format:               Conversion to floating-point numbers.
+* cl_default_print_flags:                Customizing I/O.
+* cl_default_random_state:               Random number generators.
+* cl_DF:                                 Floating-point numbers.
+* cl_double_approx ():                   Conversions.
+* cl_equal_hashcode ():                  Comparisons.
+* cl_eulerconst ():                      Euler gamma.
+* cl_F <1>:                              Floating-point numbers.
+* cl_F:                                  Ordinary number types.
+* cl_FF:                                 Floating-point numbers.
+* cl_find_modint_ring ():                Modular integer rings.
+* cl_find_univpoly_ring ():              Univariate polynomial rings.
+* cl_float:                              Conversion to floating-point numbers.
+* cl_float_approx ():                    Conversions.
+* cl_float_format ():                    Conversion to floating-point numbers.
+* cl_free_hook ():                       Customizing the memory allocator.
+* cl_hermite ():                         Special polynomials.
+* cl_I_to_int ():                        Conversions.
+* cl_I_to_long ():                       Conversions.
+* cl_I_to_uint ():                       Conversions.
+* cl_I_to_ulong ():                      Conversions.
+* cl_idecoded_float:                     Functions on floating-point numbers.
+* cl_laguerre ():                        Special polynomials.
+* cl_legendre ():                        Special polynomials.
+* cl_LF:                                 Floating-point numbers.
+* cl_malloc_hook ():                     Customizing the memory allocator.
+* cl_N:                                  Ordinary number types.
+* cl_number:                             Ordinary number types.
+* cl_pi:                                 Trigonometric functions.
+* cl_R:                                  Ordinary number types.
+* cl_RA:                                 Ordinary number types.
+* cl_SF:                                 Floating-point numbers.
+* cl_string ():                          Strings.
+* cl_symbol ():                          Symbols.
+* cl_tschebychev ():                     Special polynomials.
+* cl_zeta ():                            Riemann zeta.
+* coeff ():                              Functions on univariate polynomials.
+* comparison:                            Comparisons.
+* compiler options:                      Compiler options.
+* complex ():                            Elementary complex functions.
+* complex number <1>:                    Complex numbers.
+* complex number:                        Ordinary number types.
+* conjugate ():                          Elementary complex functions.
+* conversion <1>:                        Conversion functions.
+* conversion:                            Conversions.
+* cos ():                                Trigonometric functions.
+* cosh ():                               Hyperbolic functions.
+* create ():                             Functions on univariate polynomials.
+* customizing:                           Customizing.
+* debug_print ():                        Debugging support.
+* debugging:                             Debugging support.
+* decode_float ():                       Functions on floating-point numbers.
+* degree ():                             Functions on univariate polynomials.
+* denominator ():                        Elementary rational functions.
+* deposit_field ():                      Logical functions.
+* deriv ():                              Functions on univariate polynomials.
+* div ():                                Functions on modular integers.
+* doublefactorial ():                    Combinatorial functions.
+* dpb ():                                Logical functions.
+* equal () <1>:                          Symbols.
+* equal ():                              Strings.
+* etract ():                             Functions on modular integers.
+* Euler's constant:                      Euler gamma.
+* evenp ():                              Logical functions.
+* exact number:                          Exact numbers.
+* exp ():                                Exponential and logarithmic functions.
+* exp1 ():                               Exponential and logarithmic functions.
+* expt () <1>:                           Functions on modular integers.
+* expt () <2>:                           Exponential and logarithmic functions.
+* expt ():                               Elementary functions.
+* expt_pos () <1>:                       Functions on univariate polynomials.
+* expt_pos () <2>:                       Functions on modular integers.
+* expt_pos ():                           Elementary functions.
+* exquo ():                              Elementary functions.
+* factorial ():                          Combinatorial functions.
+* fceiling ():                           Rounding functions.
+* fceiling2 ():                          Rounding functions.
+* ffloor ():                             Rounding functions.
+* ffloor2 ():                            Rounding functions.
+* Fibonacci number:                      An Example.
+* finalize ():                           Functions on univariate polynomials.
+* float_digits ():                       Functions on floating-point numbers.
+* float_epsilon ():                      Conversion to floating-point numbers.
+* float_exponent ():                     Functions on floating-point numbers.
+* float_negative_epsilon ():             Conversion to floating-point numbers.
+* float_precision ():                    Functions on floating-point numbers.
+* float_radix ():                        Functions on floating-point numbers.
+* float_sign ():                         Functions on floating-point numbers.
+* floating-point number:                 Floating-point numbers.
+* floor1 ():                             Rounding functions.
+* floor2 ():                             Rounding functions.
+* fprint () <1>:                         Functions on univariate polynomials.
+* fprint ():                             Functions on modular integers.
+* fround ():                             Rounding functions.
+* fround2 ():                            Rounding functions.
+* ftruncate ():                          Rounding functions.
+* ftruncate2 ():                         Rounding functions.
+* garbage collection <1>:                Garbage collection.
+* garbage collection:                    Memory efficiency.
+* gcd ():                                Number theoretic functions.
+* GMP:                                   Introduction.
+* header files:                          Include files.
+* Hermite polynomial:                    Special polynomials.
+* imagpart ():                           Elementary complex functions.
+* include files:                         Include files.
+* Input/Output:                          Input/Output.
+* installation:                          Installing the library.
+* integer:                               Ordinary number types.
+* integer_decode_float ():               Functions on floating-point numbers.
+* integer_length ():                     Logical functions.
+* isqrt ():                              Roots.
+* Laguerre polynomial:                   Special polynomials.
+* lcm ():                                Number theoretic functions.
+* ldb ():                                Logical functions.
+* ldb_test ():                           Logical functions.
+* least_negative_float ():               Conversion to floating-point numbers.
+* least_positive_float ():               Conversion to floating-point numbers.
+* Legende polynomial:                    Special polynomials.
+* length ():                             Strings.
+* ln ():                                 Exponential and logarithmic functions.
+* log ():                                Exponential and logarithmic functions.
+* logand ():                             Logical functions.
+* logandc1 ():                           Logical functions.
+* logandc2 ():                           Logical functions.
+* logbitp ():                            Logical functions.
+* logcount ():                           Logical functions.
+* logeqv ():                             Logical functions.
+* logior ():                             Logical functions.
+* lognand ():                            Logical functions.
+* lognor ():                             Logical functions.
+* lognot ():                             Logical functions.
+* logorc1 ():                            Logical functions.
+* logorc2 ():                            Logical functions.
+* logp ():                               Number theoretic functions.
+* logtest ():                            Logical functions.
+* logxor ():                             Logical functions.
+* make:                                  C++ compiler.
+* mask_field ():                         Logical functions.
+* max ():                                Comparisons.
+* min ():                                Comparisons.
+* minus1 ():                             Elementary functions.
+* minusp ():                             Comparisons.
+* mod ():                                Rounding functions.
+* modifying operators:                   Obfuscating operators.
+* modular integer:                       Modular integers.
+* modulus:                               Functions on modular integers.
+* monomial ():                           Functions on univariate polynomials.
+* Montgomery multiplication:             Modular integer rings.
+* most_negative_float ():                Conversion to floating-point numbers.
+* most_positive_float ():                Conversion to floating-point numbers.
+* numerator ():                          Elementary rational functions.
+* oddp ():                               Logical functions.
+* one () <1>:                            Functions on univariate polynomials.
+* one ():                                Functions on modular integers.
+* operator != () <1>:                    Functions on univariate polynomials.
+* operator != () <2>:                    Functions on modular integers.
+* operator != () <3>:                    Modular integer rings.
+* operator != ():                        Comparisons.
+* operator & ():                         Logical functions.
+* operator &= ():                        Obfuscating operators.
+* operator () ():                        Functions on univariate polynomials.
+* operator * () <1>:                     Functions on univariate polynomials.
+* operator * () <2>:                     Functions on modular integers.
+* operator * ():                         Elementary functions.
+* operator *= ():                        Obfuscating operators.
+* operator + () <1>:                     Functions on univariate polynomials.
+* operator + () <2>:                     Functions on modular integers.
+* operator + ():                         Elementary functions.
+* operator ++ ():                        Obfuscating operators.
+* operator += ():                        Obfuscating operators.
+* operator - () <1>:                     Functions on univariate polynomials.
+* operator - () <2>:                     Functions on modular integers.
+* operator - ():                         Elementary functions.
+* operator -- ():                        Obfuscating operators.
+* operator -= ():                        Obfuscating operators.
+* operator / ():                         Elementary functions.
+* operator /= ():                        Obfuscating operators.
+* operator < ():                         Comparisons.
+* operator << () <1>:                    Functions on univariate polynomials.
+* operator << () <2>:                    Functions on modular integers.
+* operator << ():                        Logical functions.
+* operator <<= ():                       Obfuscating operators.
+* operator <= ():                        Comparisons.
+* operator == () <1>:                    Functions on univariate polynomials.
+* operator == () <2>:                    Functions on modular integers.
+* operator == () <3>:                    Modular integer rings.
+* operator == ():                        Comparisons.
+* operator > ():                         Comparisons.
+* operator >= ():                        Comparisons.
+* operator >> () <1>:                    Functions on modular integers.
+* operator >> ():                        Logical functions.
+* operator >>= ():                       Obfuscating operators.
+* operator [] ():                        Strings.
+* operator ^ ():                         Logical functions.
+* operator ^= ():                        Obfuscating operators.
+* operator | ():                         Logical functions.
+* operator |= ():                        Obfuscating operators.
+* operator ~ ():                         Logical functions.
+* ord2 ():                               Logical functions.
+* phase ():                              Exponential and logarithmic functions.
+* pi:                                    Trigonometric functions.
+* plus1 ():                              Elementary functions.
+* plusp ():                              Comparisons.
+* polynomial:                            Univariate polynomials.
+* portability:                           Why C++ ?.
+* power2p ():                            Logical functions.
+* printing:                              Internal and printed representation.
+* random ():                             Functions on modular integers.
+* random32 ():                           Random number generators.
+* random_F ():                           Random number generators.
+* random_I ():                           Random number generators.
+* random_R ():                           Random number generators.
+* rational ():                           Conversion to rational numbers.
+* rational number:                       Ordinary number types.
+* rationalize ():                        Conversion to rational numbers.
+* reading:                               Internal and printed representation.
+* real number:                           Ordinary number types.
+* realpart ():                           Elementary complex functions.
+* recip () <1>:                          Functions on modular integers.
+* recip ():                              Elementary functions.
+* reference counting:                    Memory efficiency.
+* rem ():                                Rounding functions.
+* representation:                        Internal and printed representation.
+* Riemann's zeta:                        Riemann zeta.
+* ring:                                  Modular integer rings.
+* ring ():                               Functions on univariate polynomials.
+* ring():                                Functions on modular integers.
+* rootp ():                              Roots.
+* round1 ():                             Rounding functions.
+* round2 ():                             Rounding functions.
+* rounding:                              Rounding functions.
+* rounding error:                        Floating-point numbers.
+* Rubik's cube:                          Conversions.
+* scale_float ():                        Functions on floating-point numbers.
+* Schönhage-Strassen:                    Speed efficiency.
+* Schönhage-Strassen multiplication:     Introduction.
+* sed:                                   Make utility.
+* set_coeff ():                          Functions on univariate polynomials.
+* signum ():                             Elementary functions.
+* sin ():                                Trigonometric functions.
+* sinh ():                               Hyperbolic functions.
+* sqrt ():                               Roots.
+* sqrtp ():                              Roots.
+* square () <1>:                         Functions on univariate polynomials.
+* square () <2>:                         Functions on modular integers.
+* square ():                             Elementary functions.
+* string:                                Strings.
+* strlen ():                             Strings.
+* symbol:                                Symbols.
+* symbolic type:                         Symbolic data types.
+* tan ():                                Trigonometric functions.
+* tanh ():                               Hyperbolic functions.
+* The() ():                              Conversions.
+* transcendental functions:              Transcendental functions.
+* truncate1 ():                          Rounding functions.
+* truncate2 ():                          Rounding functions.
+* Tschebychev polynomial:                Special polynomials.
+* underflow:                             Floating-point underflow.
+* univariate polynomial:                 Univariate polynomials.
+* WANT_OBFUSCATING_OPERATORS:            Obfuscating operators.
+* xgcd ():                               Number theoretic functions.
+* zero () <1>:                           Functions on univariate polynomials.
+* zero ():                               Functions on modular integers.
+* zerop () <1>:                          Functions on univariate polynomials.
+* zerop () <2>:                          Functions on modular integers.
+* zerop ():                              Comparisons.
+
+
 \1f
 Tag Table:
 Node: Top\7f957
 Node: Introduction\7f3124
-Node: Installation\7f5626
-Node: Prerequisites\7f5920
-Node: C++ compiler\7f6118
-Node: Make utility\7f6833
-Node: Sed utility\7f7019
-Node: Building the library\7f7339
-Node: Installing the library\7f10650
-Node: Cleaning up\7f11373
-Node: Ordinary number types\7f11698
-Node: Exact numbers\7f14045
-Node: Floating-point numbers\7f15210
-Node: Complex numbers\7f18789
-Node: Conversions\7f19286
-Node: Functions on numbers\7f22752
-Node: Constructing numbers\7f23455
-Node: Constructing integers\7f23827
-Node: Constructing rational numbers\7f24117
-Node: Constructing floating-point numbers\7f24592
-Node: Constructing complex numbers\7f25712
-Node: Elementary functions\7f26076
-Node: Elementary rational functions\7f28543
-Node: Elementary complex functions\7f29115
-Node: Comparisons\7f29943
-Node: Rounding functions\7f31842
-Node: Roots\7f37619
-Node: Transcendental functions\7f39500
-Node: Exponential and logarithmic functions\7f40056
-Node: Trigonometric functions\7f42073
-Node: Hyperbolic functions\7f45416
-Node: Euler gamma\7f47489
-Node: Riemann zeta\7f48405
-Node: Functions on integers\7f48961
-Node: Logical functions\7f49249
-Node: Number theoretic functions\7f55202
-Node: Combinatorial functions\7f56569
-Node: Functions on floating-point numbers\7f57247
-Node: Conversion functions\7f60478
-Node: Conversion to floating-point numbers\7f60758
-Node: Conversion to rational numbers\7f62981
-Node: Random number generators\7f64035
-Node: Obfuscating operators\7f65709
-Node: Input/Output\7f67439
-Node: Internal and printed representation\7f67649
-Node: Input functions\7f70191
-Node: Output functions\7f74742
-Node: Rings\7f78478
-Node: Modular integers\7f80402
-Node: Modular integer rings\7f80602
-Node: Functions on modular integers\7f82692
-Node: Symbolic data types\7f85702
-Node: Strings\7f85965
-Node: Symbols\7f87030
-Node: Univariate polynomials\7f87932
-Node: Univariate polynomial rings\7f88190
-Node: Functions on univariate polynomials\7f93144
-Node: Special polynomials\7f96925
-Node: Internals\7f97645
-Node: Why C++ ?\7f97859
-Node: Memory efficiency\7f99360
-Node: Speed efficiency\7f100058
-Node: Garbage collection\7f101122
-Node: Using the library\7f101949
-Node: Compiler options\7f102483
-Node: Include files\7f103401
-Node: An Example\7f107042
-Node: Debugging support\7f110067
-Node: Customizing\7f112417
-Node: Error handling\7f112645
-Node: Floating-point underflow\7f113219
-Node: Customizing I/O\7f113858
-Node: Customizing the memory allocator\7f114151
-Node: Index\7f115108
+Node: Installation\7f5646
+Node: Prerequisites\7f5940
+Node: C++ compiler\7f6138
+Node: Make utility\7f6853
+Node: Sed utility\7f7039
+Node: Building the library\7f7359
+Node: Installing the library\7f10541
+Node: Cleaning up\7f11264
+Node: Ordinary number types\7f11589
+Node: Exact numbers\7f13936
+Node: Floating-point numbers\7f15101
+Node: Complex numbers\7f18680
+Node: Conversions\7f19177
+Node: Functions on numbers\7f22643
+Node: Constructing numbers\7f23346
+Node: Constructing integers\7f23718
+Node: Constructing rational numbers\7f24008
+Node: Constructing floating-point numbers\7f24483
+Node: Constructing complex numbers\7f25603
+Node: Elementary functions\7f25967
+Node: Elementary rational functions\7f28434
+Node: Elementary complex functions\7f29006
+Node: Comparisons\7f29834
+Node: Rounding functions\7f31733
+Node: Roots\7f37510
+Node: Transcendental functions\7f39391
+Node: Exponential and logarithmic functions\7f39947
+Node: Trigonometric functions\7f41964
+Node: Hyperbolic functions\7f45315
+Node: Euler gamma\7f47388
+Node: Riemann zeta\7f48304
+Node: Functions on integers\7f48860
+Node: Logical functions\7f49148
+Node: Number theoretic functions\7f55101
+Node: Combinatorial functions\7f56468
+Node: Functions on floating-point numbers\7f57146
+Node: Conversion functions\7f60377
+Node: Conversion to floating-point numbers\7f60657
+Node: Conversion to rational numbers\7f62880
+Node: Random number generators\7f63934
+Node: Obfuscating operators\7f65608
+Node: Input/Output\7f67338
+Node: Internal and printed representation\7f67548
+Node: Input functions\7f70090
+Node: Output functions\7f74641
+Node: Rings\7f78377
+Node: Modular integers\7f80301
+Node: Modular integer rings\7f80501
+Node: Functions on modular integers\7f82591
+Node: Symbolic data types\7f85601
+Node: Strings\7f85864
+Node: Symbols\7f86929
+Node: Univariate polynomials\7f87831
+Node: Univariate polynomial rings\7f88089
+Node: Functions on univariate polynomials\7f93043
+Node: Special polynomials\7f96824
+Node: Internals\7f97544
+Node: Why C++ ?\7f97758
+Node: Memory efficiency\7f99258
+Node: Speed efficiency\7f99956
+Node: Garbage collection\7f101040
+Node: Using the library\7f101867
+Node: Compiler options\7f102401
+Node: Include files\7f103319
+Node: An Example\7f106960
+Node: Debugging support\7f110110
+Node: Customizing\7f112460
+Node: Error handling\7f112688
+Node: Floating-point underflow\7f113262
+Node: Customizing I/O\7f113901
+Node: Customizing the memory allocator\7f114194
+Node: Index\7f115151
 \1f
 End Tag Table
index 2b21c11882c8de8c33ed098498ee0af756e26340..1241843e865c1461b9b3427cb2f17b9a8a2dfece 100644 (file)
@@ -1,7 +1,7 @@
 %!PS-Adobe-2.0
 %%Creator: dvips(k) 5.86 Copyright 1999 Radical Eye Software
 %%Title: cln.dvi
-%%Pages: 71
+%%Pages: 74
 %%PageOrder: Ascend
 %%BoundingBox: 0 0 596 842
 %%EndComments
@@ -9,7 +9,7 @@
 %DVIPSCommandLine: /usr/local/teTeX/bin/ix86-linux-libc6/dvips -D600 -o
 %+ cln.ps cln.dvi
 %DVIPSParameters: dpi=600, compressed
-%DVIPSSource:  TeX output 2000.05.03:1938
+%DVIPSSource:  TeX output 2000.05.04:2122
 %%BeginProcSet: texc.pro
 %!
 /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
@@ -78,43 +78,302 @@ D E
 /Fb 1 47 df<13FCEA03FF481380121F4813C0A25AA2B5FCA31480A26C13005B6C5AEA1F
 F0EA07C0121271912B>46 D E
 %EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fc cmr9 9 11
-/Fc 11 121 df<14C01301EB03005B130E5B5B137813705B12015B1203485AA248C7FCA3
-121EA3123E123CA2127CA4127812F8B01278127CA4123CA2123E121EA37EA36C7EA26C7E
-12017F12001370137813387F7F7F7FEB01C01300124A79B71E>40
-D<7E7E126012707E7E7E120F7E6C7E7F12017F6C7EA21378A37FA3133E131EA2131FA47F
-1480B014005BA4131EA2133E133CA35BA35BA2485A5B12035B48C7FC5A120E5A5A5A1260
-5A5A114A7BB71E>I<B512FEA2000113006C5AB3B3A9487EB512FEA217337EB21C>73
-D<153FEC0FFFA2EC007F81AFEB07F0EB3FFCEBFC0F3901E003BF4848C6B4FC48487F48C7
-FC4880123EA2127E127CA212FCA8127CA2127E123EA27E6C5C6C6C5B3903C001BF3A01E0
-033F802600F81E13FCEB3FFCD90FE0130026357DB32B>100 D<EB0FE0EB7FFCEBF83E38
-01E00F3903C0078039078003C0390F0001E05A003E14F01400127E007C14F8A212FCA2B6
-FCA200FCC8FCA5127C127EA2003E1418121E001F14307E6C6C13606C6C13C03901E00180
-3900FC0F00EB3FFEEB07F01D237EA122>I<EA0780EA0FC0EA1FE0A4EA0FC0EA0780C7FC
-AAEA07E012FFA2120F1207B3A8EA0FF0B5FCA210337EB215>105
-D<3903F01FC000FFEB7FF09038F1E0F83907F3807C3903F6007E01FC133E153F5BA35BB3
-A2486CEB7F80B538C7FFFCA226217EA02B>110 D<EB07F0EB3FFE9038F80F803901E003
-C048486C7E48486C7E48C7127848147C001E143C003E143EA24880A300FC1580A8007C15
-00A2007E5C003E143EA26C5CA26C6C5B6C6C485A6C6C485A3900F80F80D93FFEC7FCEB07
-F021237EA126>I<EBFF06000713CE380F00FE001C133E48131E48130EA200F01306A37E
-6C90C7FCEA7F8013FC383FFFC06C7F6C13F86C7FC67FEB0FFF1300EC3F800040130F12C0
-14077EA36C14006C5B140E00FE5B38E7807838C1FFE038C07F8019237EA11E>115
-D<1330A51370A313F0A2120112031207121FB512FEA23803F000B01403A81201EBF80612
-00140CEB7E1CEB1FF8EB07E0182F7FAD1E>I<B53801FFF8A23A07FC007F800003EC7E00
-0001143800005C017E1360017F13E090383F81C090381F8380D90FC3C7FCEB07E614FE6D
-5A6D5A6D7E80805B9038039F809038071FC09038060FE0EB0C0790381C03F0496C7E0170
-7FEB6000D801E0137E0003147FD80FF0EBFF8026FFFC0313FCA226207F9F29>120
-D E
+%DVIPSBitmapFont: Fc cmr9 9 55
+/Fc 55 128 df<EC1FE0ECFFFC903803F01E90380FC00390391F000780013EEB0FC0017E
+131F5BA24848EB0F80ED070092C7FCA9ED0FC0B7FCA23901F8001F150FB3A8486CEB1FE0
+267FFFC1B5FCA228357FB42B>12 D<EC1FF891B512C0903803F00FEB0FC090381F001F13
+3E137E49130FA2485AACB7FCA23901F8000FB3A9486CEB1FE0267FFFE3B5FCA228357FB4
+2B>I<123C127EB4FCA21380A2127F123D1201A4EA0300A31206A35A5A5A127012200917
+7AB315>39 D<123C127EB4FCA21380A2127F123D1201A4EA0300A31206A35A5A5A127012
+2009177A8715>44 D<B512F0A514057F921A>I<15301578A215F815F0A2140115E0A214
+0315C014071580A2140F1500A25C141EA2143E143CA2147C1478A214F85C13015CA21303
+5CA213075CA2130F91C7FCA25B131EA2133E133CA2137C137813F85BA212015BA212035B
+A212075BA2120F90C8FCA25A121E123E123CA2127C1278A212F85AA212601D4B7CB726>
+47 D<EB0FE0EB7FFCEBF83E3903E00F803907C007C0EB8003390F0001E04814F0001E13
+00003E14F8A3007E14FC007C147CA400FC147EB2007C147CA4007E14FC003E14F8A3001E
+14F0001F13016C14E039078003C0EBC0073903E00F803900F83E00EB7FFCEB0FE01F347D
+B126>I<13075B5B137FEA07FFEAFFBFEAF83F1200B3B3A4EBFFC0007FEBFF80A219327A
+B126>I<EB3FC0EBFFF03803C07C48C67E000C7F48EB0F8048EB07C015E04814F0140312
+FC6C14F87EA4127E123CC7FC15F0140715E0A2EC0FC0A2EC1F801500143E5C5C5C495A49
+5A495A49C7FC130E5B4913185B5B48481330485A90C7FC00061470000FB512F05A5A4814
+E0B6FCA21D327CB126>I<EB1FE0EBFFFC3801E03F3903000F800006EB07C04814E048EB
+03F0121FD83F8013F8A213C01380121FEA0F00C713F0140715E0A2EC0FC01580EC1F0014
+3EEB01F8EB7FE014FCEB003FEC1F80EC0FC0EC07E0EC03F015F8A2EC01FCA215FEA2123C
+127EB4FCA34814FC5A0078EB03F812606C14F06CEB07E06CEB0FC00007EB1F803903E03F
+003800FFFCEB1FE01F347DB126>I<EC01C0A214031407A2140F141FA2143F147F146F14
+CF1301148FEB030F13071306130E131C131813381330136013E013C0EA01801203130012
+06120E120C5A123812305A12E0B71280A2C7380FC000AA4A7E0107B51280A221337EB226
+>I<000C14C0380FC00F90B5128015005C5C14F014C0D80C18C7FC90C8FCA9EB0FC0EB7F
+F8EBF07C380D801E380F000F000E1480000CEB07C0A2000814E0C7EA03F0A415F8A31218
+127C12FEA315F05A00D81307006014E0A26C14C0EC0F806CEB1F006C131E6C5B3803C0F8
+3801FFE038003F801D347CB126>I<14FE903807FF8090380F81C090383C006049137090
+38F001F83801E0031203EA07C0A2390F8001F0001F90C7FC90C8FC5AA35A127EEB07F0EB
+1FFC38FE381F903860078001C013C0EC03E039FF8001F0A2010013F8140015FC5A15FEA4
+127EA5123E003F14FCA26C14F81401D80F8013F015E03807C0030003EB07C03901E00F80
+3900F81E00EB3FFCEB0FE01F347DB126>I<1230123C003FB6FCA215FE4814FCA215F800
+70C7123000601460A215C048EB0180A2EC0300C71206A25C5C143814305CA214E0495AA2
+1303A2495AA3130FA349C7FCA35BA55BA8133E131C20347CB126>I<EB0FE0EB7FFCEBF0
+1F3901C0078039030003C00006EB01E0000EEB00F05A1578123CA4123E003F147015F0D8
+1FC013E0EBE001390FF803C09038FE07803907FF0F006C13DC6C13F87EEB3FFC14FF01F7
+1380D801C113C0D8038013E03907003FF0000EEB1FF8481307003CEB03FC481300157E00
+70143E12F0151EA4151C1278153C00381438003C14306C14606C14C039078003803901F0
+1F003800FFFCEB1FE01F347DB126>I<EB0FE0EB7FF8EBF83E3801E00F3903C007803907
+8003C0000F14E0381F00014814F0A2007E14F8A200FE130015FCA515FEA4127E1401123E
+123F6C1303A2380F8006EA07C00003130C3801F03839007FF0FCEB1FC090C7FCA2EC01F8
+A315F01403001F14E0EA3F80EC07C01580EC0F00EB001E001C131C000C1378380701F038
+03FFC0C690C7FC1F347DB126>I<15E0A34A7EA24A7EA34A7EA3EC0DFE140CA2EC187FA3
+4A6C7EA202707FEC601FA202E07FECC00FA2D901807F1507A249486C7EA301066D7EA201
+0E80010C1300010FB5FC49800118C77EA24981163FA2496E7EA3496E7EA2000182160712
+03486C81D81FF0EC1FFCD8FFFE49B512E0A233367DB53A>65 D<DA03FE130C91383FFF80
+9139FE01E01C903A03F000783CD90FC0131C49C7EA067C013EEC03FC4914015B48481400
+0003167C485A000F163C5B001F161CA2485AA2170C127F90C9FCA2481600AB7E170C7F12
+3FA36C6C1518A2120F7F000716306C7E000116606C6C15C0017CEC01806D14036DEC0700
+D90FC0130CD903F01338903900FE01F091383FFFC0DA03FEC7FC2E377CB437>67
+D<B812C0A2D803FEC7127F6C48140FEE03E01601A21600A21760A41730A21506A21700A3
+150EA2151E157E90B512FEA29038FC007E151E150EA21506A2170CA392C71218A41738A2
+17301770A217F016011603160F486CEC7FE0B8FCA22E337DB234>69
+D<B81280A2D803FEC7FC6C48141FEE07C01603A21601A21600A41760A2150CA21700A315
+1CA2153C15FC90B5FCA2EBFC00153C151CA2150CA592C8FCAD48B4FCB512FEA22B337DB2
+32>I<DA03FE130C91383FFF809139FE01E01C903A03F000783CD90FC0131C49C7EA067C
+013EEC03FC4914015B484814000003167C485A000F163C5B001F161CA2485AA2170C127F
+90C9FCA24893C7FCAA0303B512E07E92390007FE006DEC01FC123FA36C7EA2120F7F1207
+6C7E12016C7E017C14036D157C6D1406D90FC0EB0C3CD903F0EB381C903A00FE01F00C91
+263FFFC0C7FCDA03FEC8FC33377CB43C>I<B5D8FE03B512F8A2000190C73807FC006C48
+6E5AB3A290B7FCA249C71203B3A5486C4A7EB5D8FE03B512F8A235337EB23A>I<B512FE
+A2000113006C5AB3B3A9487EB512FEA217337EB21C>I<B512FEA2000390C9FCEA01FCB3
+ABEE0180A416031700A35EA35E5E5E167EED01FE486C1307B7FCA229337DB230>76
+D<D8FFFC923801FFF86D5D0003EFFE0000015F01BF1506A3D99F80140CA2D98FC01418A3
+D987E01430A2D983F01460A3D981F814C0A3D980FCEB0180A2027EEB0300A36E1306A26E
+6C5AA36E6C5AA36E6C5AA26E6C5AA36E6C5AA3913800FD80A2037FC7FCA3486C133E487E
+486C011C497EB592387FFFF8A23D337CB246>I<EC07FC91387FFFC0903901FC07F09039
+07E000FCD90F80133E013FC76C7E017E6E7E496E7E48486E7E48486E7EA248486E7E000F
+8249157E001F167FA24848ED3F80A2007F17C0A290C9121FA24817E0AB6C17C06D153FA3
+003F17806D157FA2001F17006D5D000F5E6C6C4A5AA26C6C4A5A00015E6C6C4A5A017E4A
+5A6D4A5AD91FC0017FC7FCD907E013FC903901FC07F09039007FFFC0DA07FCC8FC33377C
+B43C>79 D<B612FEEDFFC03A03FE0007F86C48EB01FCED007EEE3F80161F17C017E0160F
+17F0A717E0161F17C01780163FEE7E004B5AED07F890B612C04BC7FC01FCC9FCB3A3487E
+B512F8A22C337DB234>I<B612FCEDFFC000019038000FF06C48EB01FCED007E82707E83
+83160F83A65F161F5F5F4CC7FC167E4B5AED0FF090B612C093C8FC9039FE001FC0ED07E0
+ED01F0826F7E82167E167FA583A5180CA2EE3FC0A2041F1318486CEC0FE0B500FE010713
+30933803F060C93801FFC09338003F8036357EB239>82 D<90381FE003EB7FFC3901F01F
+07390380038F48C712CF000E147F4880003C80A24880A200F880A3817EA27E007E91C7FC
+127F13C0EA3FF013FF6C13F06C13FF6C14C06C80C614F8013F7F01037FEB003FEC03FF14
+00ED3F80151F16C0150F124000C01407A47E1680A27EED0F007E6C141E6C141C00F35CD8
+F1E013F039E0FC03E039C01FFF80D903FEC7FC22377CB42B>I<007FB712FEA29039800F
+F8013B7C0007F0003E0078161E0070160EA200601606A200E01607A2481603A6C71500B3
+ADEC1FFC011FB512FCA230337DB237>I<EB7F803803FFF0380F80FC381C003E001F7F48
+6C6C7E81A26C486C7E120EC7FCA4EB01FF131FEBFF873803F807EA07E0EA0F80EA1F0012
+3E127E16C05AA3140FA2007E131BA26C903871F180390FC1E1FF2607FF8013003900FE00
+3C22237DA126>97 D<EA03F012FFA212071203AFEC3F80ECFFE09038F3C0F89038F7003C
+01FC7F497FED07804914C0ED03E0A216F01501A216F8A816F0A2150316E0A2ED07C06D14
+80ED0F0001EC131E01C65B90388381F8903801FFE0C76CC7FC25357EB32B>I<EB0FF0EB
+3FFE9038F80F803901E001C03803C0073907800FE0EA0F005A48EB07C0003EEB0380007E
+90C7FCA2127CA212FCA8127C127EA2003E1430A26C14607E6D13C03907C001803903E003
+003800F81EEB7FFCEB0FE01C237DA122>I<153FEC0FFFA2EC007F81AFEB07F0EB3FFCEB
+FC0F3901E003BF4848C6B4FC48487F48C7FC4880123EA2127E127CA212FCA8127CA2127E
+123EA27E6C5C6C6C5B3903C001BF3A01E0033F802600F81E13FCEB3FFCD90FE013002635
+7DB32B>I<EB0FE0EB7FFCEBF83E3801E00F3903C0078039078003C0390F0001E05A003E
+14F01400127E007C14F8A212FCA2B6FCA200FCC8FCA5127C127EA2003E1418121E001F14
+307E6C6C13606C6C13C03901E001803900FC0F00EB3FFEEB07F01D237EA122>I<EB01FC
+EB07FEEB1F0790383E0F8090387C1FC013F8A20001EB0F809038F00700000390C7FCACB5
+12F0A2D803F0C7FCB3A9487E387FFFE0A21A357FB417>I<151F90391FC07F8090397FF1
+E3C09038F07B833903C01E039039800E01800007010FC7FC000F80EB00074880A66C5CEB
+800F000791C7FC0003130E6D5AEBF07838067FF0380E1FC090C9FCA5EA0F80EBFFFE6CEB
+FFC06C14F06C80000780390F0001FE001EEB007F48141F007C158048140FA5007CEC1F00
+A26C143E6C5C390FC001F83903F007E0C6B51280D91FFCC7FC22337EA126>I<EA03F012
+FFA212071203AFEC1FC0EC7FF09038F1E0F89038F3807C9038F6007E01FC133E153F5BA3
+5BB3A2486CEB7F80B538C7FFFCA226347EB32B>I<EA0780EA0FC0EA1FE0A4EA0FC0EA07
+80C7FCAAEA07E012FFA2120F1207B3A8EA0FF0B5FCA210337EB215>I<EA03F012FFA212
+071203B0913803FFE0A20200130015FC15F05D4A5A4AC7FC14065C14385C14F0EBF1F813
+F3EBFEFCEBFC7EEBF03E80816E7E1407816E7E1401816E7E8181486C1480B500C313F0A2
+24347EB329>107 D<EA07E012FFA2120F1207B3B3A9EA0FF0B5FCA210347EB315>I<2703
+F01FE013FF00FF90267FF80313C0913AE07C0703E03C07F3803E1C01F02803F7003F387F
+01F690381F300001FC02E07F495CA3495CB3A2486C496C487EB53BC7FFFE3FFFF0A23C21
+7EA041>I<3903F01FC000FFEB7FF09038F1E0F83907F3807C3903F6007E01FC133E153F
+5BA35BB3A2486CEB7F80B538C7FFFCA226217EA02B>I<EB07F0EB3FFE9038F80F803901
+E003C048486C7E48486C7E48C7127848147C001E143C003E143EA24880A300FC1580A800
+7C1500A2007E5C003E143EA26C5CA26C6C5B6C6C485A6C6C485A3900F80F80D93FFEC7FC
+EB07F021237EA126>I<3903F03F8000FFEBFFE09038F3C0F83907F7003CD803FC7F497F
+168049EB07C016E0150316F0A2150116F8A816F01503A216E0150716C06DEB0F80ED1F00
+6D131E01F6137C9038F381F89038F1FFE0D9F07FC7FC91C8FCAB487EB512C0A225307EA0
+2B>I<3803E07C00FF13FF9038E18F803907E31FC0EA03E613ECEC0F809038F8070091C7
+FCA35BB3487EB512E0A21A217FA01E>114 D<EBFF06000713CE380F00FE001C133E4813
+1E48130EA200F01306A37E6C90C7FCEA7F8013FC383FFFC06C7F6C13F86C7FC67FEB0FFF
+1300EC3F800040130F12C014077EA36C14006C5B140E00FE5B38E7807838C1FFE038C07F
+8019237EA11E>I<1330A51370A313F0A2120112031207121FB512FEA23803F000B01403
+A81201EBF8061200140CEB7E1CEB1FF8EB07E0182F7FAD1E>I<D803F0133F00FFEB0FFF
+A20007EB007F000380B3A35DA212015D9038F801BF00000103138090397E073FFCEB1FFC
+D907F8130026227EA02B>I<B5EBFFF0A2D80FF0EB3FC06C48EB0F00150E6C6C130CA26D
+131C00011418A26C6C5BA26D1370017E1360137F6D5BA290381F8180A214C3010F90C7FC
+A2EB07E6A214FE6D5AA26D5AA36D5AA2146024217E9F29>I<B53A1FFF81FFF0A23C0FF8
+03FC003F806C486C48EB1F0000030100141E170C816C6C017C5BA26D017E1338000002FE
+1330A290267E01FF5B159F168090263F030F5BA216C0903A1F8607C180A202C613E39026
+0FCC0390C7FCA2D907FC13F6ECF80116FE6D486C5AA36D481378A36D48133034217F9F37
+>I<B53801FFF8A23A07FC007F800003EC7E000001143800005C017E1360017F13E09038
+3F81C090381F8380D90FC3C7FCEB07E614FE6D5A6D5A6D7E80805B9038039F809038071F
+C09038060FE0EB0C0790381C03F0496C7E01707FEB6000D801E0137E0003147FD80FF0EB
+FF8026FFFC0313FCA226207F9F29>I<3A7FFF807FF8A23A07F8001FE00003EC0F80ED07
+0000011406A26C6C5BA26D131C017E1318A26D5BA2EC8070011F1360ECC0E0010F5BA290
+3807E180A214F3010390C7FC14FBEB01FEA26D5AA31478A21430A25CA214E05CA2495A12
+78D8FC03C8FCA21306130EEA701CEA7838EA1FF0EA0FC025307F9F29>I<003FB512F0A2
+90380007E0003CEB0FC00038131F0030EB3F8000701400147E006013FE5C495A1303C648
+5A5C495A131F495A91C7FC017E133013FE485A5B485A000714705B48481360001F14E048
+5AEB0003007E130FB6FCA21C207E9F22>I<001C1370003E13F8387F01FC00FF13FEA200
+7F13FC383E00F8001C1370170879B226>127 D E
+%EndDVIPSBitmapFont
+%DVIPSBitmapFont: Fd cmsl9 9 1
+/Fd 1 47 df<123C127E12FFA312FE127C12380808798715>46 D
+E
 %EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fd cmtt12 14.4 1
-/Fd 1 44 df<157815FC4A7EB3A2003FB812E04817F0B912F8A46C17F06C17E0C7D801FE
+%DVIPSBitmapFont: Fe cmtt9 9 63
+/Fe 63 127 df<123C127E12FFAF127EAE123C1200A7123C127E12FFA4127E123C082F71
+AE27>33 D<131FEB7FC0497E5A80EA03F1EBE1F8EA07E013C0A513C15C9039C3F1FF80D9
+E3E113C03803E7E3EBEFC1D9FF811380EDF800EC01F0EA01FEEBFC0301F85B00031307D8
+07FC5B120F381FFE0FD83FBE5BEB3F1FD87E1F90C7FC149F38FC0FBF14FE1307ECFC0201
+031307903901F80F80A238FE03FC387E07FE397F1FFF9F6CB61200149F6CEB0FFE390FFC
+03FC3903F000F822307EAE27>38 D<EB01C0EB03E0130F131FEB3FC0EB7F80EBFE00485A
+5B485A12075B485AA2485AA248C7FCA3127EA45AAC127EA47EA36C7EA26C7EA26C7E7F12
+036C7E7F6C7EEB7F80EB3FC0EB1FE0130F1303EB01C0133A73B327>40
+D<127012F812FE7E6C7E6C7EEA0FE06C7E12036C7E7F1200137EA27FA2EB1F80A3EB0FC0
+A4EB07E0ACEB0FC0A4EB1F80A3EB3F00A2137EA25B12015B485A1207485AEA3FC0485A48
+C7FC5A12F81270133A7AB327>I<130F497EA60078EB81E000FEEB87F000FF138FEBDFBF
+6CB512E06C14C0000F1400000313FCC613F0A2000313FC000F13FF003F14C04814E039FF
+DFBFF0EB1F8F00FE13870078EB81E00000EB8000A66DC7FC1C207BA627>I<EB03C0497E
+AD007FB512FEB7FCA46C14FE390007E000AD6D5A20227DA727>I<007FB512F8B612FCA4
+6C14F81E067C9927>45 D<1538157C15FCA2140115F8140315F0140715E0140F15C0141F
+1580143F1500A25C147E14FE5C13015C13035C13075C130F5CA2131F5C133F91C7FC5B13
+7E13FE5B12015B12035BA212075B120F5B121F5B123F90C8FC5A127E12FE5AA25A12781E
+3A7CB327>47 D<130E131FA25BA25B5B5A5A123F5AB5FC13BFEA7C3F1200B3AA003FB512
+805A15C01580A21A2F79AE27>49 D<EB3FC0EBFFF8000313FE000FEBFF804814C09038E0
+3FE0383F800F397F0007F0007EEB03F800FE13015A6C14FC1400A2127CA2C8FCA2140115
+F8A2140315F01407EC0FE0EC1FC0143FEC7F80ECFF00495A495A495A495A495A495A495A
+01FEC7FC485AD807F81378484813FC485A485A48B5FCB6FCA36C14F81E2F7CAE27>I<EB
+1FF0EBFFFE0003EBFF80000F14C015E0391FF00FF0393FC007F8EB0001018013FC1400A2
+6CC7FC1204C8FC140115F8140315F0140FEC3FE090381FFFC0491380A215E06D13F09038
+000FF81403EC01FCEC00FE157E157F153FA21238127C12FEA2157F48147E6C14FE007FEB
+01FC90388003F8383FF00F6CB512F06C14E000031480C6EBFE00EB1FF020307DAE27>I<
+153815FC14011407140FEC3FF8EC7FE0ECFFC001031300495AEB1FF8495A495A3801FF80
+4890C7FCEA0FFC485AEA7FF0EAFFC05BA27FEA7FF0EA1FF86C7EEA03FF6C7F38007FE06D
+7E6D7EEB07FE6D7E010013C0EC7FE0EC3FF8EC0FFC14071401140015381E287CAA27>60
+D<007FB512FEB7FCA4003F14FEC9FCA6003FB512FEB7FCA46C14FE20127D9F27>I<1270
+12FC7E6C7E7FEA7FF0EA1FF86C7EEA03FF6C7F38007FE06D7E6D7EEB07FE6D7E010013C0
+EC7FE0EC3FF8EC0FFC1407A2140FEC3FF8EC7FE0ECFFC001031300495AEB1FF8495A495A
+3801FF804890C7FCEA0FFC485AEA7FF0EAFFC05B48C8FC5A12701E287CAA27>I<EB03F0
+497EA2497EA4143CEB1F3EA5EB3F3FA3EB3E1FA2017E7FA4496C7EA548486C7EA390B5FC
+A24880A3EBF003A248486C7EA4000F803A7FFC0FFF8000FF15C06D5A497E007F1580222F
+7EAE27>65 D<007FB5FCB612C08115F87E3907E003FCEC00FE157E157F81A6157EA25D14
+03EC0FF890B55A15C015F081819038E000FE157FED3F80151FA2ED0FC0A6151F1680153F
+ED7F004A5A007FB55AB65A5D15E06C1480222E7FAD27>I<903803F80E90381FFE1F9038
+3FFFBF90B6FC5A3803FE0FEBF80348487E48487E5B4848137FA248C7123FA25A127E151E
+150012FE5AAA7E127EA2151E007F143F7EA26C7E157F6C6C137E6D13FE3907F001FC3803
+F8039038FE0FF86CB512F06C14E0013F13C06D1300EB03F820307DAE27>I<387FFFFC14
+FFB612C06C80813907E00FF81407EC01FC6E7EA2157E157F811680151FA316C0150FABED
+1F80A3153F1600A25D15FEA24A5A4A5A140F007FB55A5DB65A6C91C7FC14FC222E7FAD27
+>I<007FB61280B712C0A37E3907E0000FA6ED078092C7FCA4EC07804A7EA390B5FCA5EB
+E00FA36E5A91C8FCA4ED03C0ED07E0A7007FB6FCB7FCA36C15C0232E7FAD27>I<007FB6
+1280B712C0A37E3907E0000FA6ED078092C7FCA4EC07804A7EA390B5FCA5EBE00FA36E5A
+91C8FCAC387FFF80B5FC805C7E222E7EAD27>I<903807E03890381FFC7C90387FFFFC90
+B5FC5A3803FC1F3807F00FEBE007380FC003001F13011380123F90C7FCA2127EA2157892
+C7FC5AA8EC1FFF4A1380A3007E6D1300EC00FCA36C1301A21380121FEBC003120F3807E0
+07EBF00F3803FC1F6CB5FC7EEB7FFE90381FFC78D907E0C7FC21307DAE27>I<007FB512
+E0B612F0A36C14E039001F8000B3B2007FB512E0B612F0A36C14E01C2E7BAD27>73
+D<387FFFC080B5FC7E5CD803F0C8FCB3AAED0780ED0FC0A7007FB6FCA2B7FC7E1680222E
+7FAD27>76 D<3A7FF003FFE013F800FF4913F06C6C6C13E0A200079038003E0013DEA313
+CFA3148013C714C0A213C314E0A213C114F0A3EBC0F8A31478147CA2143C143EA2141E14
+1F140FA3EC07BEA3EC03FEEA7FFCA238FFFE01EA7FFC6E5A242E7FAD27>78
+D<EBFFFC0007EBFF80001F14E0A24814F0EBC00F397F8007F8EB0003007E1301A348EB00
+FCB3A76C1301007E14F8A3007F1303EB8007393FE01FF090B5FC6C14E0A200071480C6EB
+FC001E307CAE27>I<007FB5FCB612E081816C803907E003FEEC00FF81ED3F80151F16C0
+150FA6151F1680153FED7F005DEC03FE90B55A5D5D5D92C7FC01E0C8FCADEA7FFEB5FCA3
+6C5A222E7FAD27>I<387FFFF014FEB67E6C80813907E01FF014076E7E1401811400A514
+015D14034A5A141F90B55A5D5DA281EBE01F6E7E14076E7EA816F0EDF1F8A4397FFE01FB
+EDFFF0B57E6C4814E0ED7FC0C8EA0F00252F7FAD27>82 D<90383F80E03901FFF1F00007
+13FF5A5A383FC07FEB801F387F000F007E130712FE5A1403A3EC01E06C90C7FC127E127F
+EA3FC013F86CB47E6C13F86C13FE6CEBFF80C66C13C0010713E0EB007FEC0FF0EC07F814
+03140115FC1400127812FCA46CEB01F8A26C130390388007F09038F01FE090B5FC15C015
+0000F85B38701FF01E307CAE27>I<007FB61280B712C0A439FC03F00FA60078EC078000
+0091C7FCB3AB90B512C0A248806C5CA2222E7EAD27>I<3A7FFE01FFF8B54813FCA36C48
+6C13F83A07E0001F80B3AB6D133F00031500A26D5B0001147E6D13FE6C6C485A90387F87
+F814FF6D5B010F13C06D5BD900FCC7FC262F80AD27>I<D87FE0EB7FE0486CEBFFF0A36C
+48EB7FE0001FC7EA0F80A76C6CEB1F00A614F0EB81F83907C3FC3EA4149CEBC79EA30003
+143CA301E7137CEBEF9FA2140FA200011478A49038FE07F8A300005CA2EBFC0390387801
+E0242F7FAD27>87 D<387FFFF0B512F8A314F000FCC7FCB3B3ACB512F014F8A36C13F015
+3A71B327>91 D<387FFFF0B512F8A37EEA0001B3B3ACEA7FFFB5FCA36C13F0153A7EB327
+>93 D<131C137E3801FF80000713E0001F13F84813FC38FFE7FF13C3130000FC133F0078
+131E180B79AD27>I<007FB512F8B612FCA46C14F81E067C7E27>I<48B47E000F13F04813
+FC4813FF81EB807FEC1FC0381F000F00046D7EC7FCA2EB07FF137F0003B5FC120F5A383F
+F807EA7FC0130012FE5AA46C130F007F131F383F807F90B612806C15C07E000313F13A00
+7F807F8022207C9F27>97 D<EA7FE0487EA3127F1203A9147E9038F3FFC090B512F08181
+EC81FE49C67E49EB3F8049131F16C049130FA216E01507A6150F16C07F151F6DEB3F80ED
+7F006D5B9038FF83FEECFFFC5D5D01F313C02601E0FEC7FC232E7FAD27>I<EB0FFE9038
+7FFFC048B512E04814F05A380FF807EA1FE09038C003E0393F80008048C8FC127EA212FE
+5AA67E127EA2007F14F0393F8001F8EA1FC0EBE003390FF80FF06CB5FC6C14E06C14C06C
+6C1300EB0FF81D207B9F27>I<EC3FF04A7EA3143F1401A9EB0FE1EB7FFD48B5FC5A5A38
+0FF81F381FE00FEBC007383F8003EA7F00007E1301A212FE5AA67E007E1303A2127F6C13
+07EB800F381FE01F380FF03F6CB612C06C15E06C13FD38007FF9D90FC013C0232E7EAD27
+>I<EB07F0EB3FFE90B51280000314C04814E0390FF80FF0391FE003F8EBC001393F8000
+FC48C7FC127E157E12FEB612FEA415FC00FCC8FC7E127EA26C143C6D137E6C7ED80FF013
+FE9038FC03FC6CB512F812016C14F0013F13C0903803FC001F207D9F27>I<EC1FE0ECFF
+F84913FC4913FE5BEB0FF0ECC07C131FEC8000A6007FB512F0B612F8A36C14F039001F80
+00B3A4003FB512C04814E0A36C14C01F2E7EAD27>I<153F90391FC0FF80D97FF313C048
+B612E05A4814EF390FF07F873A1FC01FC3C09039800FC000A248486C7EA66C6C485AA2EB
+C01F390FF07F8090B5C7FC5C485BEB7FF0EB1FC090C9FCA27F6CB5FC6C14E04814F84814
+FE5A90388000FF007EC7EA3F80007C140F00FC15C0481407A46C140F007C1580007F143F
+6C6CEB7F00391FF003FE90B5FC000714F86C5CC66C1380D90FFCC7FC23337EA027>I<EA
+7FE0487EA3127F1203A9143F9038F1FFC001F77F90B57E8114C1EC01FCEBFE005B5BA25B
+B03A7FFF83FFE0B500C713F0A36C018313E0242E7FAD27>I<130F497E497EA46D5A6DC7
+FC90C8FCA7383FFF80487FA37EEA000FB3A4007FB512F0A2B612F86C14F0A21D2F7BAE27
+>I<143C147E14FFA4147E143C1400A73801FFFE4813FFA37EC7123FB3B0147E1238007C
+13FE38FE01FCEB03F8B5FC6C13F014E06C13803807FE0018407CAE27>I<EA7FE07F12FF
+127FA21201A991383FFFC04A13E0A36E13C0913803F8004A5A4A5A4A5A4A5A02FFC7FCEB
+F1FEEBF3FCEBF7F8EBFFFC80A2143F496C7E496C7E01F87FEBF0076E7E6E7E6E7EA2157E
+3A7FFFC1FFF002C313F8B512E36C13C316F0252E80AD27>I<387FFF80B57EA37EEA000F
+B3B2007FB512F8B612FCA36C14F81E2E7CAD27>I<397F07C01F3AFF9FF07FC09039FFF9
+FFE091B57E7E3A0FFC7FF1F89038F03FC001E0138001C01300A3EB803EB03A7FF0FFC3FF
+486C01E3138001F913E701F813E36C4801C313002920819F27>I<387FE03F39FFF1FFC0
+01F77F90B57E6C80000313C1EC01FCEBFE005B5BA25BB03A7FFF83FFE0B500C713F0A36C
+018313E024207F9F27>I<EB1FE0EB7FF83801FFFE487F481480390FF03FC0391FC00FE0
+393F8007F0EB00034814F8007E1301A248EB00FCA76C1301007E14F8A2007F1303393F80
+07F0A2391FE01FE0390FF03FC06CB512806C14006C5B38007FF8EB1FE01E207C9F27>I<
+387FE07E39FFF3FFC090B512F0816C800003EB81FE49C67E49EB3F8049131F16C049130F
+A216E01507A6150F16C07F151F6DEB3F80ED7F006D5B9038FF83FEECFFFC5D5D01F313C0
+D9F0FEC7FC91C8FCAC387FFF80B57EA36C5B23317F9F27>I<903807F03C90383FFE7E90
+B5FC000314FE5A380FF80F381FE007EBC003383F800148C7FC127EA200FE147E5AA67E00
+7E14FEA2127F383F8001381FC003EBE007380FF81F6CB5FC7E6C147E38007FFCEB0FE090
+C7FCAC91381FFFF8A24A13FC6E13F8A226317E9F27>I<397FFC01FC39FFFE0FFF023F13
+804A13C0007F90B5FC39007FFE1F14F89138F00F809138E002004AC7FC5CA291C8FCA213
+7EAD007FB57EB67EA36C5C22207E9F27>I<90387FF3800007B512C0121F5AA2387F801F
+38FC000F5AA2EC07806C90C7FCEA7F8013FC383FFFE06C13FC000713FFC61480010F13C0
+9038003FE014070078EB03F000FC1301A27E14036CEB07E0EBC01F90B512C01580150000
+FB13FC38707FE01C207B9F27>I<133C137EA8007FB512F0B612F8A36C14F0D8007EC7FC
+AE1518153C157EA315FE6D13FC148390381FFFF815F06D13E0010313C0903800FE001F29
+7EA827>I<397FE01FF8486C487EA3007F131F00031300B21401A21403EBF80F6CB612E0
+6C15F0A2EB3FFE90390FF07FE024207F9F27>I<3A7FFC0FFF80486C4813C0A36C486C13
+803A07C000F800EBE00100035CA2EBF00300015CA2EBF80700005CA390387C0F80A36D48
+C7FCA3EB3F3FEB1F3EA3EB0FFCA36D5AA26D5A22207E9F27>I<3A7FFE07FFE0A2B54813
+F06C486C13E0A23A0F80001F00A36D5B0007143EA414F0EBC1F83903E3FC7CA4EBE79EA2
+00011478A301F713F8A2EBFF0F6C5CA3EBFE0790387C03E024207F9F27>I<393FFC1FFF
+486C5A168016006C487E3901F807E06C6C485A4A5A017E90C7FC6D5AEB1F7E5C6D5A1307
+6D5A5C80497E130F497E143EEB3E3FEB7E1F90387C0F8001F87F00016D7E3803F0033A7F
+FE1FFF80A2B54813C06C486C1380A222207E9F27>I<3A7FFC0FFF80486C4813C0A36C48
+6C13803A07E000F800000313015D13F012016D485A1200A26D485A137CA290387E0F8013
+3EA2011F90C7FC5CA2130F149E14BE130714FC1303A25C1301A25CA213035CA213075C12
+08EA3E0F007F5B131FD87E7FC8FCEA7FFE6C5A5B6C5AEA07C022317E9F27>I<001FB512
+FE4814FFA490380001FEEC03FCEC07F8EC0FF0001EEB1FE0C7EA3FC0EC7F80ECFF00495A
+495A495AEB1FE0495A495A49C7FC485A4848131E4848133F485A485A485A485AB7FCA46C
+14FE20207E9F27>I<127812FCB3B3B3A21278063A70B327>124 D<9038F003803903FC07
+C0000F130F381FFE1F393FFF7F80397FBFFF0038FE1FFE486C5A00F813F0387003C01A0A
+7AAD27>126 D E
+%EndDVIPSBitmapFont
+%DVIPSBitmapFont: Ff cmtt12 14.4 1
+/Ff 1 44 df<157815FC4A7EB3A2003FB812E04817F0B912F8A46C17F06C17E0C7D801FE
 C8FCB3A26E5A157835347CBE3E>43 D E
 %EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fe cmsy7 7 1
-/Fe 1 1 df<B712FEA327037A8F34>0 D E
+%DVIPSBitmapFont: Fg cmsy7 7 1
+/Fg 1 1 df<B712FEA327037A8F34>0 D E
 %EndDVIPSBitmapFont
-%DVIPSBitmapFont: Ff cmr7 7 5
-/Ff 5 55 df<1238127C12FEA6127CAA1238AA12101200A51238127C12FEA3127C123807
+%DVIPSBitmapFont: Fh cmr7 7 5
+/Fh 5 55 df<1238127C12FEA6127CAA1238AA12101200A51238127C12FEA3127C123807
 297BA813>33 D<1306130C13181330136013E0EA01C0EA0380A2EA07005A120E121EA212
 1C123CA35AA512F85AAB7E1278A57EA3121C121EA2120E120F7EEA0380A2EA01C0EA00E0
 136013301318130C13060F3B7AAB1A>40 D<12C012607E7E7E120E7EEA0380A2EA01C013
@@ -125,8 +384,8 @@ E01200B3AB487EB512F8A215267BA521>49 D<EB0FE0EB3FF8EBF81C3801E0063803801F
 FE487FA2481480A41278A46C1400A2001C131E121E000E5B6C5B3803C0F03801FFC06C6C
 C7FC19277DA521>54 D E
 %EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fg cmmi7 7 3
-/Fg 3 111 df<1238127C12FEA3127C123807077A8614>58 D<1378EA07FC5BEA0078A3
+%DVIPSBitmapFont: Fi cmmi7 7 3
+/Fi 3 111 df<1238127C12FEA3127C123807077A8614>58 D<1378EA07FC5BEA0078A3
 5BA4485AA43903C00780EC1FC0EC3860EC60E0380780C1EB8103138290388401C0D80F18
 C7FC5B13E07FEA1FFE381E3F80EB07C06D7EEA3C011560A30078EBC0C01303903801C180
 A200F0EBE300EB00FE0060133C1B297CA723>107 D<3907C01FC0390FE07FE03918F0E0
@@ -134,8 +393,8 @@ F03930718078EB7B00D8607E1338017C133C01781338D8C0F813785B1200A248485BA34A
 5AEA03C01660EC03C0A23A07800780C0A2ED8180ED8300390F000386EC01FC00066D5A23
 1B7D9929>110 D E
 %EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fh cmex10 10 2
-/Fh 2 2 df<1430147014E0EB01C0EB0380A2EB0700130E131E131C133C5BA25BA2485A
+%DVIPSBitmapFont: Fj cmex10 10 2
+/Fj 2 2 df<1430147014E0EB01C0EB0380A2EB0700130E131E131C133C5BA25BA2485A
 A212035B1207A2485AA348C7FCA45A123EA3127EA5127CA212FCB3A2127CA2127EA5123E
 A3123F7EA46C7EA36C7EA212037F1201A26C7EA21378A27F131C131E130E7FEB0380A2EB
 01C0EB00E0147014301462738226>0 D<124012E012707E7EA27E7E7F12037F6C7EA26C
@@ -143,8 +402,8 @@ A3123F7EA46C7EA36C7EA212037F1201A26C7EA21378A27F131C131E130E7FEB0380A2EB
 1307A514C0A3130F1480A4EB1F00A3133EA2133C137C1378A25BA2485AA2485A5B120790
 C7FC120E5AA25A5A5A124014627C8226>I E
 %EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fi cmsl10 10.95 20
-/Fi 20 122 df<EC7FC0903803FFF890380F807E90381C001F01306D7E01786D7E13FC6D
+%DVIPSBitmapFont: Fk cmsl10 10.95 20
+/Fk 20 122 df<EC7FC0903803FFF890380F807E90381C001F01306D7E01786D7E13FC6D
 800001140382A26C5A137890C7FC4B5AA3EC01FF147F903803FF0790391FF00FC0EB7F80
 EBFE00EA03F8485A485A4848495A485A17C048C7FCA2153F00FEED0180157FA2007F14DF
 9139019F03006CEB031F3A1F800E0F86260FE03C13FC3A03FFF007F83A007FC003E02A2A
@@ -210,12 +469,12 @@ E0902707FC000113006D48EB00FC4A14706D7E17605F16016E5C01004AC7FCA216068002
 A25D14035D5DA292C9FCA21406140E140C5CA25C1218007E5B00FE5BA2495A4848CAFCEA
 F806EA600CEA7838EA3FF0EA0FC0343A80A630>I E
 %EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fj cmtt12 13.14 1
-/Fj 1 44 df<EC03C04A7E4A7EB2003FB712F84816FCB812FEA46C16FC6C16F8C7D80FF0
+%DVIPSBitmapFont: Fl cmtt12 13.14 1
+/Fl 1 44 df<EC03C04A7E4A7EB2003FB712F84816FCB812FEA46C16FC6C16F8C7D80FF0
 C7FCB26E5A6E5A2F307CB838>43 D E
 %EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fk cmbx12 13.14 42
-/Fk 42 123 df<923803FFF0037FEBFE7C0203B612FC141F91397FFE001FDAFFE0133F01
+%DVIPSBitmapFont: Fm cmbx12 13.14 42
+/Fm 42 123 df<923803FFF0037FEBFE7C0203B612FC141F91397FFE001FDAFFE0133F01
 030180137F4990C7FC495A4A14FF4948147F495AA24A143F017F151FAFB9FCA526007FF0
 C7121FB3B3A2003FB5D8E00FB512F8A53D4D7ECC44>13 D<B7FCAA200A7F9C29>45
 D<EA07E0EA0FF0EA3FFCA2EA7FFEB5FCA6EA7FFEEA3FFCA2EA0FF0EA07E01010778F22>
@@ -367,8 +626,8 @@ AF41>I<001FB712FCA4DA000113F801F84913F001E04913E05B494913C04B138048C748
 5B5D5B495B4990C712F85C137F495A48491301485BA248491303484913074849130F161F
 4890C7EA7FF04848EB03FFB8FCA42E307DAF37>I E
 %EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fl cmmi10 10.95 3
-/Fl 3 80 df<121E123FEA7F80EAFFC0A4EA7F80EA3F00121E0A0A798919>58
+%DVIPSBitmapFont: Fn cmmi10 10.95 3
+/Fn 3 80 df<121E123FEA7F80EAFFC0A4EA7F80EA3F00121E0A0A798919>58
 D<49B592B512F082A290C76D913807FE00DA01BFED01F0705D039F6F5AA29126031FF04A
 5A150F82150702066D4AC7FC1503A26F7E020C16068281834A017F5CA2707EA24A6E5B16
 1F83160F4A6E5B1607A2834A01035C8316018349486D5CA21880177F49C8EBC180173F18
@@ -381,8 +640,8 @@ A219004D5A1703604D5A6C7E4D5A4D5A003F5F4D5A6C6C4BC7FC17FE6C6C4A5A4C5A6C6C
 EC07E06C6CEC1FC06C6C4A5A6C6C02FEC8FC90393F8003F890390FE01FE00103B5C9FC90
 38007FF03E427BBF45>I E
 %EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fm cmbx12 17.28 42
-/Fm 42 123 df<19F0F001F819FC1803A2180719F8180F19F0A2181F19E0183F19C0A218
+%DVIPSBitmapFont: Fo cmbx12 17.28 42
+/Fo 42 123 df<19F0F001F819FC1803A2180719F8180F19F0A2181F19E0183F19C0A218
 7F198018FF1900A25F60170360A2170760170F60A2171F60173F60A2177F60A217FF95C7
 FC5E5FA216035F16075FA2160F5F161F5FA2163F5F167F5FA216FF94C8FC5D5EA215035E
 15075EA2150F5E151F5EA2153F5E157F5EA215FF93C9FC5C5DA214035D14075DA2140F5D
@@ -591,8 +850,8 @@ FC604B5C001F4A91C7FC495B5F4B5B4B5B5DC85C4B5B92B55A5C5F4A91C8FC5C4A5B5E4A
 484A141F5A92C8123F4849157F484915FF485E4A14074849021F13C0484BB5FCBAFCA47E
 3C407CBF48>I E
 %EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fn cmtt10 10.95 85
-/Fn 85 127 df<121C127FA2EAFF80B2EA7F00B1123EC7FCA9121C127FA2EAFF80A3EA7F
+%DVIPSBitmapFont: Fp cmtt10 10.95 85
+/Fp 85 127 df<121C127FA2EAFF80B2EA7F00B1123EC7FCA9121C127FA2EAFF80A3EA7F
 00A2121C09396DB830>33 D<003C131E00FEEB3F80A26C137FA248133FB3007E1400007C
 7F003C131E191B75B830>I<903903800380496C487E496C487EA8011F131F02C05BA400
 3FB612FE4881B81280A36C16006C5D3A003F803F80017F137F020090C7FCA9495B495B00
@@ -837,8 +1096,8 @@ FC14C05C01FCC8FCEA7FC025477BBE30>I<01781338D803FE137C3907FF80FE001F13C1
 48EBE7FC4813FF01CF13F8D8FF0713F0486C13C0D87C0013800038EB3C001F0B78B730>
 I E
 %EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fo cmsy10 10.95 3
-/Fo 3 16 df<007FB812F8B912FCA26C17F83604789847>0 D<EE3FFC0307B512E0033F
+%DVIPSBitmapFont: Fq cmsy10 10.95 3
+/Fq 3 16 df<007FB812F8B912FCA26C17F83604789847>0 D<EE3FFC0307B512E0033F
 14FC92B7FC0203D9E00713C0DA0FFCC7EA3FF0DA1FE0EC07F8DA3F80EC01FC02FEC9127F
 D901F8EE1F804948707E4948707ED90F80EE01F049CB7E013E187C49840178181E01F818
 1F4848F00F804848F007C049180300071AE0491801000F1AF090CDFC481AF8001E1A78A2
@@ -851,8 +1110,8 @@ D<EB07F8EB3FFF90B512C0488048804880488048804880A2481580A3B712C0A86C1580A3
 6C1500A26C5C6C5C6C5C6C5C6C5C6C5C013F90C7FCEB07F822227BA72D>15
 D E
 %EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fp cmr10 10.95 83
-/Fp 83 128 df<DA03FFEB0FE0021F9038C07FF8913AFE00F1F81CD901F890383BE03ED9
+%DVIPSBitmapFont: Fr cmr10 10.95 83
+/Fr 83 128 df<DA03FFEB0FE0021F9038C07FF8913AFE00F1F81CD901F890383BE03ED9
 07E090387FC07F49489038FF80FF49485AD93F005C013E167E017E163C6F48130049147E
 AEB91280A3D800FCC7007EC7FCB3AE486C14FF277FFFF83F13FFA338407FBF35>11
 D<EC03FC91383FFF809138FE03C0903901F00060D907E07FD90F8013F84948487E491303
@@ -1100,8 +1359,8 @@ EA383CEA1FF8EA07E02B3A7EA630>I<001FB61280A29039E0003F0090C7127E001E14FE
 7EEB1F80007F133F39FF807FC0A3397F003F80007E131F001CEB0E001A0977BD2D>127
 D E
 %EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fq cmbx12 14.4 58
-/Fq 58 123 df<EEFFF8031F13FF92B612C0020315F0020F9038C00FF8913A3FFC0001FC
+%DVIPSBitmapFont: Fs cmbx12 14.4 62
+/Fs 62 123 df<EEFFF8031F13FF92B612C0020315F0020F9038C00FF8913A3FFC0001FC
 DAFFF06D7E4901C0EB03FF49495B4990C7487F4A5C130F495AA25C133FA27190C7FCA271
 5AEF01F894C9FCA90403B512C0BAFCA526003FFCC7120783B3B3A6003FB5D8FC03B612C0
 A542547DD34B>12 D<EEFFFC031F9038FFCFC092B7FC1407021FEBC00791383FFC00DAFF
@@ -1207,47 +1466,65 @@ A26C7F7E806D7E6D7F6D7F6D7F6D6D5E6D13FC01006D93B5FC6E6C6C5C6E01E0EC07FB02
 0F01FCEC1FF10203D9FFE0EBFFE0020091B6EAC03F031FEE001F030303FC1307DB007F02
 E01301040101FCCAFC5B5479D26A>I<B8D8C003B8FCA5D8000701F8C9001FEBE000B3AE
 92BAFCA503F8C9121FB3B1B8D8C003B8FCA560527CD169>I<B812C0A5D8000701F8C7FC
-B3B3B3B2B812C0A52A527CD132>I<B600FC073FB512FE6F61A26F96B6FCA2D80007F5C0
-0070EF01EFA202EF6DEF03CFA202E76DEF078FA202E36DEF0F0FA202E16D171EA302E06D
-173CA26F6C1778A26F6C17F0A26F6DED01E0A26F6DED03C0A36F6DED0780A26F6DED0F00
-A26F6D151EA26F6D5DA3706C5DA2706C5DA2706D495AA2706D495AA2706D495AA3706D49
-C7FCA2706D131EA2706D5BA2716C5BA3716C5BA271EB81E0A271EBC3C0A271EBE780A271
-01FFC8FCA3715BA2715BA2725AA2725AA2D93FFC6F5AB74DB712FEA2725AA2725A77527C
-D180>77 D<93380FFFC00303B6FC031F15E092B712FC0203D9FC0013FF020F01C0010F13
-C0023F90C7000313F0DA7FFC02007F494848ED7FFE4901E0ED1FFF49496F7F49496F7F49
-90C96C7F49854948707F4948707FA24849717E48864A83481B804A83481BC0A2481BE04A
-83A2481BF0A348497113F8A5B51AFCAF6C1BF86E5FA46C1BF0A26E5F6C1BE0A36C6D4D13
-C0A26C6D4D1380A26C1B006C6D4D5A6E5E6C626D6C4C5B6D6D4B5B6D6D4B5B6D6D4B5B6D
-6D4B5B6D6D4B90C7FC6D6D4B5A6D01FF02035B023F01E0011F13F0020F01FC90B512C002
-0390B7C8FC020016FC031F15E0030392C9FCDB001F13E0565479D265>79
-D<BAFC19F819FF1AE086D8000701F0C7001F13FC060113FF726C13807313C0070F13E01B
-F0857313F81BFCA27313FEA41BFFA81BFEA31BFC61A21BF84F13F04F13E0614F13C04F13
-004E485A061F5B92B812F01AC04FC7FC19E003F8CBFCB3AEB812C0A550527CD15C>I<B9
-12F0F0FF8019F819FF1AC0D8000701F0C714F0060F7F060113FE727F737F737F85737F87
-A2737FA387A863A2616363A24F5B4F5B4F90C8FC4F5A06035B060F13F095B512C092B8C9
-FC19F819E019F89226F0000313FE9439007FFF80061F7F727F727F86727F8486A2727FA8
-87A71D1C1D3E8785A275137E73157C7315FC736D13F8B86C6DEBF801739038FE07F07390
-B512E0736C14C0080F1400CEEA7FFC5F537CD164>82 D<91260FFF80130791B500F85B01
-0302FF5B010FEDC03F013FEDF07F90267FF8006D5A2601FFC0EB07FD4890C70001B5FC48
-486E7E49814848150F48488183003F825B007F82A284A200FF83A27F84A27F7F7F6D93C7
-FC6C13C014F014FF6C14F0EDFF806C15F8EEFF806C16F017FC6C16FF6C836C17E06C836D
-82011F826D821303010082020F16801400030715C0ED007F1603DC007F13E083170F7113
-F08383127800F882A3187FA27E19E0A37E19C06C17FF6D17807F6D4B13006D5D6D5E01FE
-4B5AD9FFC0EC1FF802F84A5A903B1FFFC003FFE0D8FE0790B65AD8FC0193C7FC486C6C14
-FC48010714E0489026003FFEC8FC3C5479D24B>I<003FBC1280A59126C0003F9038C000
-7F49C71607D87FF8060113C001E08449197F49193F90C8171FA2007E1A0FA3007C1A07A5
-00FC1BE0481A03A6C994C7FCB3B3AC91B912F0A553517BD05E>I<B800C00103B612FCA5
-D8000701F8CAEBF000F31F80B3B3B26D193F99C7FC81A26D197EA26D6D17FE63027F1701
-6E6C4C5A636E6D15076E6D4B5A6E6DED3FC06E6D4B5A020001FCDA03FFC8FC6FB46CEB0F
-FE6F9039F001FFF8030F90B65A030316C0DB007F92C9FC040F14F8DC007F13805E537CD1
-67>I<B700FC017FB600FE91B612F0A5D8003F01C0C8001F01E0C9EBF8006F71EE0FC06D
-7161876F1C1F6D7196C7FC6F8373606D1E3E6F836D7160876F1CFC6D666F4B801F016D66
-704A806E525A88704A17076E059F5F70021F80080F160F6E6570023F806EDC3E074CC8FC
-8870027E5F6EDC7C03163E7002FC804F6C167E6E1C7C700101814F6C16FC6E745B700103
-17016E4C6D5D060716C00580496D14036F63DDC00F16E04F6D14076F07F05BDDE01F170F
-6F92C76C5D1DF8DDF03E6E141F6F98C9FCDDF87E16FC067C6E5C6FF1FE3EDDFCFC177E6F
-4A6E147C1DFFDDFFF06E14FC6F62A24E816F62A270496F5BA24E817061A295C97E7061A2
-70487090CAFCA37048705AA24D1601040360A27048705A84537DD18B>87
+B3B3B3B2B812C0A52A527CD132>I<B812F8A5D8000701F8CAFCB3B3A91A7CA41AFC1AF8
+A51901A31903A219071AF0190FA2191F193F197F19FF180360183F4DB5FCBB12E0A54652
+7CD151>76 D<B600FC073FB512FE6F61A26F96B6FCA2D80007F5C00070EF01EFA202EF6D
+EF03CFA202E76DEF078FA202E36DEF0F0FA202E16D171EA302E06D173CA26F6C1778A26F
+6C17F0A26F6DED01E0A26F6DED03C0A36F6DED0780A26F6DED0F00A26F6D151EA26F6D5D
+A3706C5DA2706C5DA2706D495AA2706D495AA2706D495AA3706D49C7FCA2706D131EA270
+6D5BA2716C5BA3716C5BA271EB81E0A271EBC3C0A271EBE780A27101FFC8FCA3715BA271
+5BA2725AA2725AA2D93FFC6F5AB74DB712FEA2725AA2725A77527CD180>I<B600F893B7
+FC81818182D800076E9239003FFC00F307E082828202EF7F8214E702E37F02E18002E080
+836F7F816F7F6F7F6F7F83816F806F80707F707F8482707F707F707F85827080717F717F
+717F8583717F717F7114801AC0837213E07213F07213F87213FC1AFE847213FF72148772
+14C71BE77313F7857313FF8585A28585858686A286868686A286861B7FD93FFC183FB717
+1FA21B0F1B07755A60527CD169>I<93380FFFC00303B6FC031F15E092B712FC0203D9FC
+0013FF020F01C0010F13C0023F90C7000313F0DA7FFC02007F494848ED7FFE4901E0ED1F
+FF49496F7F49496F7F4990C96C7F49854948707F4948707FA24849717E48864A83481B80
+4A83481BC0A2481BE04A83A2481BF0A348497113F8A5B51AFCAF6C1BF86E5FA46C1BF0A2
+6E5F6C1BE0A36C6D4D13C0A26C6D4D1380A26C1B006C6D4D5A6E5E6C626D6C4C5B6D6D4B
+5B6D6D4B5B6D6D4B5B6D6D4B5B6D6D4B90C7FC6D6D4B5A6D01FF02035B023F01E0011F13
+F0020F01FC90B512C0020390B7C8FC020016FC031F15E0030392C9FCDB001F13E0565479
+D265>I<BAFC19F819FF1AE086D8000701F0C7001F13FC060113FF726C13807313C0070F
+13E01BF0857313F81BFCA27313FEA41BFFA81BFEA31BFC61A21BF84F13F04F13E0614F13
+C04F13004E485A061F5B92B812F01AC04FC7FC19E003F8CBFCB3AEB812C0A550527CD15C
+>I<B912F0F0FF8019F819FF1AC0D8000701F0C714F0060F7F060113FE727F737F737F85
+737F87A2737FA387A863A2616363A24F5B4F5B4F90C8FC4F5A06035B060F13F095B512C0
+92B8C9FC19F819E019F89226F0000313FE9439007FFF80061F7F727F727F86727F8486A2
+727FA887A71D1C1D3E8785A275137E73157C7315FC736D13F8B86C6DEBF801739038FE07
+F07390B512E0736C14C0080F1400CEEA7FFC5F537CD164>82 D<91260FFF80130791B500
+F85B010302FF5B010FEDC03F013FEDF07F90267FF8006D5A2601FFC0EB07FD4890C70001
+B5FC48486E7E49814848150F48488183003F825B007F82A284A200FF83A27F84A27F7F7F
+6D93C7FC6C13C014F014FF6C14F0EDFF806C15F8EEFF806C16F017FC6C16FF6C836C17E0
+6C836D82011F826D821303010082020F16801400030715C0ED007F1603DC007F13E08317
+0F7113F08383127800F882A3187FA27E19E0A37E19C06C17FF6D17807F6D4B13006D5D6D
+5E01FE4B5AD9FFC0EC1FF802F84A5A903B1FFFC003FFE0D8FE0790B65AD8FC0193C7FC48
+6C6C14FC48010714E0489026003FFEC8FC3C5479D24B>I<003FBC1280A59126C0003F90
+38C0007F49C71607D87FF8060113C001E08449197F49193F90C8171FA2007E1A0FA3007C
+1A07A500FC1BE0481A03A6C994C7FCB3B3AC91B912F0A553517BD05E>I<B800C00103B6
+12FCA5D8000701F8CAEBF000F31F80B3B3B26D193F99C7FC81A26D197EA26D6D17FE6302
+7F17016E6C4C5A636E6D15076E6D4B5A6E6DED3FC06E6D4B5A020001FCDA03FFC8FC6FB4
+6CEB0FFE6F9039F001FFF8030F90B65A030316C0DB007F92C9FC040F14F8DC007F13805E
+537CD167>I<B700FC017FB600FE91B612F0A5D8003F01C0C8001F01E0C9EBF8006F71EE
+0FC06D7161876F1C1F6D7196C7FC6F8373606D1E3E6F836D7160876F1CFC6D666F4B801F
+016D66704A806E525A88704A17076E059F5F70021F80080F160F6E6570023F806EDC3E07
+4CC8FC8870027E5F6EDC7C03163E7002FC804F6C167E6E1C7C700101814F6C16FC6E745B
+70010317016E4C6D5D060716C00580496D14036F63DDC00F16E04F6D14076F07F05BDDE0
+1F170F6F92C76C5D1DF8DDF03E6E141F6F98C9FCDDF87E16FC067C6E5C6FF1FE3EDDFCFC
+177E6F4A6E147C1DFFDDFFF06E14FC6F62A24E816F62A270496F5BA24E817061A295C97E
+7061A270487090CAFCA37048705AA24D1601040360A27048705A84537DD18B>87
+D<003FB7D88003B7FCA5D8000749C8000701F8C7FC6D6D9238007F806D6E93C8FC7015FE
+6D17016E6D5D704A5A6E16076E6D4A5A6E6D5D4F5A6E6D143F6E6D4A5A7191C9FC6E16FE
+6EECC00171485A6F5D6F6D485A6FEBF80F71485A6F5D6F6D485AEFFF7F6F4ACAFC6F5C6F
+5CA2705B705B8482707F707FA2707F7080855E4C80855E4C80DC3FCF7F058F7FEE7F074C
+6C7FDB01FE814C7E4B486C8003076E7F4B48814C7F4B486D7F033F824C7F4BC76C7F4B6E
+7F4A5A4B6E804A486E800207844A48814B6F7F4A4883023F824A486F7F92C96C7F02FE84
+0101834948708090263FFFC084B76C0103B712F8A55D527CD166>I<001FBA12C01AE0A4
+0380C714C002F8C8148002C05C91C8481400495F495D494B5B495F495D48484B5B61495D
+94B55A6190C85A4C91C7FC605E003E4B5B605E4C5B60C95A93B55A605D4B91C8FC5F5D4B
+5B5F5D4B5B5F5D92B55A5F5C4A91C9FC5E5C4A5B5E4AEE03E04A5B5E5C91B55A5E491707
+4991C8FC4B16C05B495B5D49170F495B5D49171F90B55A4B153F5A4891C9127F4A16FF48
+5F48495D4A5D485F4849033F13804A4AB5FC48163FBBFCA47E435279D152>90
 D<EC3FFF0107B512F0011F14FE017F6E7E2701FFC0077F2703FC000113F001FF6D6C7E48
 6D6D7E83486D131F707EA284A26C497F846C90C7FCEA00FC90C8FCA6033FB5FC020FB6FC
 91B7FC01071407011F13E090387FFE003801FFF84813E0485B485B4890C7FC485A5B127F
@@ -1339,8 +1616,8 @@ F8C8EA7FC06EED3F00A26D6C153E187E013F167C6E15FC6D5E6F13016D5E6F13036D5E81
 EB0F80495B5D5B495B4B131F4916004990C7FC495A4A5C5A485B48495C5C485E48495B48
 49130791C7485A4815FFB8FCA37E31357CB43C>I E
 %EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fr cmbx12 20.736 16
-/Fr 16 122 df<13FF000313C04813F0487F487F487F5A801580B6FCA215C0A315E0A27E
+%DVIPSBitmapFont: Ft cmbx12 20.736 16
+/Ft 16 122 df<13FF000313C04813F0487F487F487F5A801580B6FCA215C0A315E0A27E
 A37E7E7E6C13F76C13E7C61387EB0007A2140F15C0A3141FA21580143FA215005C147E14
 FEA2495AA2495A495AA2495A495A133F495A49C7FC485A485A485A485A6C5A6C5A6C5A1B
 3A729836>44 D<96267FFFE01670063FB616F80503B700E01401053F04FC14034CB91407
@@ -1431,15 +1708,15 @@ TeXDict begin
 
 %%EndSetup
 %%Page: 1 1
-1 0 bop 0 1386 a Fr(CLN,)65 b(a)g(Class)h(Library)g(for)e(Num)-5
-b(b)5 b(ers)p 0 1486 3900 34 v 0 5068 a Fq(b)l(y)45 b(Bruno)f(Haible)p
+1 0 bop 0 1386 a Ft(CLN,)65 b(a)g(Class)h(Library)g(for)e(Num)-5
+b(b)5 b(ers)p 0 1486 3900 34 v 0 5068 a Fs(b)l(y)45 b(Bruno)f(Haible)p
 0 5141 3900 17 v eop
 %%Page: 2 2
-2 1 bop 0 3355 a Fp(Cop)m(yrigh)m(t)452 3352 y(c)427
-3355 y Fo(\015)30 b Fp(Bruno)g(Haible)h(1995,)i(1996,)f(1997,)g(1998,)h
+2 1 bop 0 3355 a Fr(Cop)m(yrigh)m(t)452 3352 y(c)427
+3355 y Fq(\015)30 b Fr(Bruno)g(Haible)h(1995,)i(1996,)f(1997,)g(1998,)h
 (1999,)f(2000.)0 3878 y(Published)19 b(b)m(y)h(Bruno)g(Haible,)j
-Fn(<haible@clisp.cons.org>)14 b Fp(and)20 b(Ric)m(hard)g(Krec)m(k)m
-(el,)k Fn(<kreckel@ginac.de>)p Fp(.)0 4152 y(P)m(ermission)g(is)h(gran)
+Fp(<haible@clisp.cons.org>)14 b Fr(and)20 b(Ric)m(hard)g(Krec)m(k)m
+(el,)k Fp(<kreckel@ginac.de>)p Fr(.)0 4152 y(P)m(ermission)g(is)h(gran)
 m(ted)g(to)h(mak)m(e)f(and)f(distribute)g(v)m(erbatim)h(copies)g(of)g
 (this)g(man)m(ual)f(pro)m(vided)h(the)g(cop)m(yrigh)m(t)0
 4276 y(notice)32 b(and)d(this)i(p)s(ermission)d(notice)k(are)e(preserv)
@@ -1457,146 +1734,147 @@ h(another)f(language,)0 5198 y(under)27 b(the)h(ab)s(o)m(v)m(e)h
 5322 y(in)j(a)h(translation)g(appro)m(v)m(ed)g(b)m(y)f(the)h(author.)p
 eop
 %%Page: 1 3
-1 2 bop 0 -116 a Fp(Chapter)30 b(1:)41 b(In)m(tro)s(duction)2892
-b(1)0 366 y Fm(1)80 b(In)l(tro)t(duction)0 719 y Fp(CLN)30
+1 2 bop 0 -116 a Fr(Chapter)30 b(1:)41 b(In)m(tro)s(duction)2892
+b(1)0 366 y Fo(1)80 b(In)l(tro)t(duction)0 719 y Fr(CLN)30
 b(is)g(a)h(library)f(for)g(computations)g(with)g(all)i(kinds)d(of)i(n)m
 (um)m(b)s(ers.)38 b(It)30 b(has)h(a)f(ric)m(h)h(set)g(of)f(n)m(um)m(b)s
-(er)e(classes:)75 993 y Fo(\017)60 b Fp(In)m(tegers)31
-b(\(with)g(unlimited)e(precision\),)75 1137 y Fo(\017)60
-b Fp(Rational)32 b(n)m(um)m(b)s(ers,)75 1281 y Fo(\017)60
-b Fp(Floating-p)s(oin)m(t)33 b(n)m(um)m(b)s(ers:)229
-1425 y Fo(\000)60 b Fp(Short)30 b(\015oat,)229 1569 y
-Fo(\000)60 b Fp(Single)31 b(\015oat,)229 1713 y Fo(\000)60
-b Fp(Double)31 b(\015oat,)229 1857 y Fo(\000)60 b Fp(Long)31
+(er)e(classes:)75 993 y Fq(\017)60 b Fr(In)m(tegers)31
+b(\(with)g(unlimited)e(precision\),)75 1137 y Fq(\017)60
+b Fr(Rational)32 b(n)m(um)m(b)s(ers,)75 1281 y Fq(\017)60
+b Fr(Floating-p)s(oin)m(t)33 b(n)m(um)m(b)s(ers:)229
+1425 y Fq(\000)60 b Fr(Short)30 b(\015oat,)229 1569 y
+Fq(\000)60 b Fr(Single)31 b(\015oat,)229 1713 y Fq(\000)60
+b Fr(Double)31 b(\015oat,)229 1857 y Fq(\000)60 b Fr(Long)31
 b(\015oat)g(\(with)f(unlimited)f(precision\),)75 2001
-y Fo(\017)60 b Fp(Complex)29 b(n)m(um)m(b)s(ers,)75 2145
-y Fo(\017)60 b Fp(Mo)s(dular)30 b(in)m(tegers)i(\(in)m(tegers)g(mo)s
-(dulo)c(a)j(\014xed)f(in)m(teger\),)75 2289 y Fo(\017)60
-b Fp(Univ)-5 b(ariate)32 b(p)s(olynomials.)0 2583 y(The)38
+y Fq(\017)60 b Fr(Complex)29 b(n)m(um)m(b)s(ers,)75 2145
+y Fq(\017)60 b Fr(Mo)s(dular)30 b(in)m(tegers)i(\(in)m(tegers)g(mo)s
+(dulo)c(a)j(\014xed)f(in)m(teger\),)75 2289 y Fq(\017)60
+b Fr(Univ)-5 b(ariate)32 b(p)s(olynomials.)0 2583 y(The)38
 b(subt)m(yp)s(es)g(of)h(the)g(complex)f(n)m(um)m(b)s(ers)f(among)h
 (these)h(are)g(exactly)i(the)e(t)m(yp)s(es)g(of)g(n)m(um)m(b)s(ers)d
 (kno)m(wn)i(to)0 2707 y(the)29 b(Common)d(Lisp)j(language.)41
-b(Therefore)29 b Fn(CLN)f Fp(can)h(b)s(e)f(used)g(for)h(Common)d(Lisp)i
-(implemen)m(tations,)h(giving)0 2832 y(`)p Fn(CLN)p Fp(')h(another)h
+b(Therefore)29 b Fp(CLN)f Fr(can)h(b)s(e)f(used)g(for)h(Common)d(Lisp)i
+(implemen)m(tations,)h(giving)0 2832 y(`)p Fp(CLN)p Fr(')h(another)h
 (meaning:)40 b(it)30 b(b)s(ecomes)g(an)g(abbreviation)h(of)g(\\Common)d
 (Lisp)i(Num)m(b)s(ers".)0 3106 y(The)g(CLN)g(pac)m(k)-5
-b(age)32 b(implemen)m(ts)75 3380 y Fo(\017)60 b Fp(Elemen)m(tary)30
-b(functions)g(\()p Fn(+)p Fp(,)h Fn(-)p Fp(,)f Fn(*)p
-Fp(,)g Fn(/)p Fp(,)h Fn(sqrt)p Fp(,)e(comparisons,)h
-Fl(:)15 b(:)g(:)q Fp(\),)75 3524 y Fo(\017)60 b Fp(Logical)32
-b(functions)e(\(logical)j Fn(and)p Fp(,)d Fn(or)p Fp(,)g
-Fn(not)p Fp(,)g Fl(:)15 b(:)g(:)q Fp(\),)75 3668 y Fo(\017)60
-b Fp(T)-8 b(ranscenden)m(tal)40 b(functions)f(\(exp)s(onen)m(tial,)k
+b(age)32 b(implemen)m(ts)75 3380 y Fq(\017)60 b Fr(Elemen)m(tary)30
+b(functions)g(\()p Fp(+)p Fr(,)h Fp(-)p Fr(,)f Fp(*)p
+Fr(,)g Fp(/)p Fr(,)h Fp(sqrt)p Fr(,)e(comparisons,)h
+Fn(:)15 b(:)g(:)q Fr(\),)75 3524 y Fq(\017)60 b Fr(Logical)32
+b(functions)e(\(logical)j Fp(and)p Fr(,)d Fp(or)p Fr(,)g
+Fp(not)p Fr(,)g Fn(:)15 b(:)g(:)q Fr(\),)75 3668 y Fq(\017)60
+b Fr(T)-8 b(ranscenden)m(tal)40 b(functions)f(\(exp)s(onen)m(tial,)k
 (logarithmic,)f(trigonometric,)g(h)m(yp)s(erb)s(olic)d(functions)g(and)
 180 3792 y(their)30 b(in)m(v)m(erse)i(functions\).)0
-4086 y(CLN)e(is)g(a)h(C)p Fn(++)f Fp(library)-8 b(.)40
-b(Using)31 b(C)p Fn(++)e Fp(as)i(an)f(implemen)m(tation)g(language)i
-(pro)m(vides)75 4360 y Fo(\017)60 b Fp(e\016ciency:)42
+4086 y(CLN)e(is)g(a)h(C)p Fp(++)f Fr(library)-8 b(.)40
+b(Using)31 b(C)p Fp(++)e Fr(as)i(an)f(implemen)m(tation)g(language)i
+(pro)m(vides)75 4360 y Fq(\017)60 b Fr(e\016ciency:)42
 b(it)31 b(compiles)f(to)h(mac)m(hine)f(co)s(de,)75 4504
-y Fo(\017)60 b Fp(t)m(yp)s(e)33 b(safet)m(y:)48 b(the)33
-b(C)p Fn(++)f Fp(compiler)h(kno)m(ws)f(ab)s(out)h(the)g(n)m(um)m(b)s
+y Fq(\017)60 b Fr(t)m(yp)s(e)33 b(safet)m(y:)48 b(the)33
+b(C)p Fp(++)f Fr(compiler)h(kno)m(ws)f(ab)s(out)h(the)g(n)m(um)m(b)s
 (er)e(t)m(yp)s(es)i(and)g(complains)f(if,)i(for)f(example,)180
 4628 y(y)m(ou)e(try)f(to)h(assign)g(a)g(\015oat)g(to)g(an)f(in)m(teger)
-i(v)-5 b(ariable.)75 4773 y Fo(\017)60 b Fp(algebraic)32
-b(syn)m(tax:)41 b(Y)-8 b(ou)31 b(can)g(use)f(the)h Fn(+)p
-Fp(,)f Fn(-)p Fp(,)g Fn(*)p Fp(,)g Fn(=)p Fp(,)h Fn(==)p
-Fp(,)f Fl(:)15 b(:)g(:)31 b Fp(op)s(erators)g(as)f(in)g(C)g(or)h(C)p
-Fn(++)p Fp(.)0 5066 y(CLN)f(is)g(memory)f(e\016cien)m(t:)75
-5340 y Fo(\017)60 b Fp(Small)30 b(in)m(tegers)h(and)f(short)g(\015oats)
+i(v)-5 b(ariable.)75 4773 y Fq(\017)60 b Fr(algebraic)32
+b(syn)m(tax:)41 b(Y)-8 b(ou)31 b(can)g(use)f(the)h Fp(+)p
+Fr(,)f Fp(-)p Fr(,)g Fp(*)p Fr(,)g Fp(=)p Fr(,)h Fp(==)p
+Fr(,)f Fn(:)15 b(:)g(:)31 b Fr(op)s(erators)g(as)f(in)g(C)g(or)h(C)p
+Fp(++)p Fr(.)0 5066 y(CLN)f(is)g(memory)f(e\016cien)m(t:)75
+5340 y Fq(\017)60 b Fr(Small)30 b(in)m(tegers)h(and)f(short)g(\015oats)
 h(are)g(immediate,)e(not)i(heap)f(allo)s(cated.)p eop
 %%Page: 2 4
-2 3 bop 0 -116 a Fp(Chapter)30 b(1:)41 b(In)m(tro)s(duction)2892
-b(2)75 366 y Fo(\017)60 b Fp(Heap-allo)s(cated)40 b(memory)35
+2 3 bop 0 -116 a Fr(Chapter)30 b(1:)41 b(In)m(tro)s(duction)2892
+b(2)75 366 y Fq(\017)60 b Fr(Heap-allo)s(cated)40 b(memory)35
 b(is)i(reclaimed)g(through)f(an)h(automatic,)j(non-in)m(terruptiv)m(e)d
 (garbage)i(collec-)180 491 y(tion.)0 790 y(CLN)30 b(is)g(sp)s(eed)g
-(e\016cien)m(t:)75 1064 y Fo(\017)60 b Fp(The)27 b(k)m(ernel)h(of)f
+(e\016cien)m(t:)75 1064 y Fq(\017)60 b Fr(The)27 b(k)m(ernel)h(of)f
 (CLN)g(has)g(b)s(een)g(written)g(in)g(assem)m(bly)g(language)h(for)f
-(some)g(CPUs)g(\()p Fn(i386)p Fp(,)g Fn(m68k)p Fp(,)g
-Fn(sparc)p Fp(,)180 1188 y Fn(mips)p Fp(,)i Fn(arm)p
-Fp(\).)75 1338 y Fo(\017)60 b Fp(On)30 b(all)h(CPUs,)f(CLN)g(uses)g
-(the)g(sup)s(ere\016cien)m(t)h(lo)m(w-lev)m(el)i(routines)d(from)f(GNU)
-i(GMP)g(v)m(ersion)g(2.)75 1487 y Fo(\017)60 b Fp(It)28
-b(uses)g(Karatsuba)g(m)m(ultiplication,)i(whic)m(h)e(is)g(signi\014can)
-m(tly)i(faster)e(for)g(large)h(n)m(um)m(b)s(ers)d(than)i(the)h(stan-)
-180 1612 y(dard)g(m)m(ultiplication)j(algorithm.)75 1761
-y Fo(\017)60 b Fp(F)-8 b(or)41 b(v)m(ery)g(large)h(n)m(um)m(b)s(ers)c
-(\(more)h(than)i(12000)h(decimal)f(digits\),)j(it)d(uses)f(Sc)m(h\177)
--45 b(onhage-Strassen)41 b(m)m(ul-)180 1886 y(tiplication,)k(whic)m(h)c
-(is)f(an)h(asymptotically)h(optimal)e(m)m(ultiplication)i(algorithm,)h
-(for)e(m)m(ultiplication,)180 2010 y(division)30 b(and)g(radix)g(con)m
-(v)m(ersion.)0 2309 y(CLN)g(aims)g(at)h(b)s(eing)f(easily)h(in)m
-(tegrated)h(in)m(to)g(larger)f(soft)m(w)m(are)g(pac)m(k)-5
-b(ages:)75 2583 y Fo(\017)60 b Fp(The)30 b(garbage)i(collection)h(imp)s
-(oses)28 b(no)j(burden)d(on)i(the)h(main)e(application.)75
-2733 y Fo(\017)60 b Fp(The)30 b(library)g(pro)m(vides)g(ho)s(oks)g(for)
-g(memory)f(allo)s(cation)j(and)e(exceptions.)p eop
+(some)g(CPUs)g(\()p Fp(i386)p Fr(,)g Fp(m68k)p Fr(,)g
+Fp(sparc)p Fr(,)180 1188 y Fp(mips)p Fr(,)i Fp(arm)p
+Fr(\).)75 1338 y Fq(\017)60 b Fr(On)33 b(all)i(CPUs,)g(CLN)f(ma)m(y)g
+(b)s(e)g(con\014gured)f(to)i(use)f(the)g(sup)s(ere\016cien)m(t)g(lo)m
+(w-lev)m(el)j(routines)e(from)d(GNU)180 1462 y(GMP)f(v)m(ersion)g(3.)75
+1612 y Fq(\017)60 b Fr(It)28 b(uses)g(Karatsuba)g(m)m(ultiplication,)i
+(whic)m(h)e(is)g(signi\014can)m(tly)i(faster)e(for)g(large)h(n)m(um)m
+(b)s(ers)d(than)i(the)h(stan-)180 1736 y(dard)g(m)m(ultiplication)j
+(algorithm.)75 1886 y Fq(\017)60 b Fr(F)-8 b(or)56 b(v)m(ery)f(large)h
+(n)m(um)m(b)s(ers)d(\(more)i(than)f(12000)k(decimal)d(digits\),)62
+b(it)56 b(uses)e(Sc)m(h\177)-45 b(onhage-Strassen)180
+2010 y(m)m(ultiplication,)27 b(whic)m(h)d(is)g(an)h(asymptotically)g
+(optimal)f(m)m(ultiplication)i(algorithm,)g(for)e(m)m(ultiplication,)
+180 2135 y(division)30 b(and)g(radix)g(con)m(v)m(ersion.)0
+2434 y(CLN)g(aims)g(at)h(b)s(eing)f(easily)h(in)m(tegrated)h(in)m(to)g
+(larger)f(soft)m(w)m(are)g(pac)m(k)-5 b(ages:)75 2708
+y Fq(\017)60 b Fr(The)30 b(garbage)i(collection)h(imp)s(oses)28
+b(no)j(burden)d(on)i(the)h(main)e(application.)75 2857
+y Fq(\017)60 b Fr(The)30 b(library)g(pro)m(vides)g(ho)s(oks)g(for)g
+(memory)f(allo)s(cation)j(and)e(exceptions.)p eop
 %%Page: 3 5
-3 4 bop 0 -116 a Fp(Chapter)30 b(2:)41 b(Installation)2939
-b(3)0 366 y Fm(2)80 b(Installation)0 808 y Fp(This)30
+3 4 bop 0 -116 a Fr(Chapter)30 b(2:)41 b(Installation)2939
+b(3)0 366 y Fo(2)80 b(Installation)0 808 y Fr(This)30
 b(section)h(describ)s(es)f(ho)m(w)g(to)h(install)g(the)g(CLN)f(pac)m(k)
--5 b(age)32 b(on)f(y)m(our)f(system.)0 1379 y Fq(2.1)68
-b(Prerequisites)0 1917 y Fk(2.1.1)63 b(C)p Fj(++)30 b
-Fk(compiler)0 2204 y Fp(T)-8 b(o)27 b(build)f(CLN,)g(y)m(ou)h(need)f(a)
-h(C)p Fn(++)f Fp(compiler.)39 b(Actually)-8 b(,)29 b(y)m(ou)e(need)g
-(GNU)g Fn(g++)i(2.7.0)c Fp(or)i(new)m(er.)39 b(On)26
-b(HPP)-8 b(A,)0 2329 y(y)m(ou)31 b(need)f(GNU)h Fn(g++)e(2.8.0)g
-Fp(or)i(new)m(er.)40 b(I)30 b(recommend)f(GNU)i Fn(egcs)e(1.1)g
-Fp(or)i(new)m(er.)0 2616 y(The)44 b(follo)m(wing)j(C)p
-Fn(++)d Fp(features)h(are)g(used:)69 b(classes,)50 b(mem)m(b)s(er)42
+-5 b(age)32 b(on)f(y)m(our)f(system.)0 1379 y Fs(2.1)68
+b(Prerequisites)0 1917 y Fm(2.1.1)63 b(C)p Fl(++)30 b
+Fm(compiler)0 2204 y Fr(T)-8 b(o)27 b(build)f(CLN,)g(y)m(ou)h(need)f(a)
+h(C)p Fp(++)f Fr(compiler.)39 b(Actually)-8 b(,)29 b(y)m(ou)e(need)g
+(GNU)g Fp(g++)i(2.7.0)c Fr(or)i(new)m(er.)39 b(On)26
+b(HPP)-8 b(A,)0 2329 y(y)m(ou)31 b(need)f(GNU)h Fp(g++)e(2.8.0)g
+Fr(or)i(new)m(er.)40 b(I)30 b(recommend)f(GNU)i Fp(g++)e(2.95)g
+Fr(or)i(new)m(er.)0 2616 y(The)44 b(follo)m(wing)j(C)p
+Fp(++)d Fr(features)h(are)g(used:)69 b(classes,)50 b(mem)m(b)s(er)42
 b(functions,)49 b(o)m(v)m(erloading)e(of)e(functions)g(and)0
 2741 y(op)s(erators,)31 b(constructors)f(and)g(destructors,)h(inline,)f
 (const,)i(m)m(ultiple)e(inheritance,)h(templates.)0 3028
-y(The)f(follo)m(wing)i(C)p Fn(++)d Fp(features)i(are)g(not)f(used:)40
-b Fn(new)p Fp(,)30 b Fn(delete)p Fp(,)f(virtual)h(inheritance,)i
+y(The)f(follo)m(wing)i(C)p Fp(++)d Fr(features)i(are)g(not)f(used:)40
+b Fp(new)p Fr(,)30 b Fp(delete)p Fr(,)f(virtual)h(inheritance,)i
 (exceptions.)0 3316 y(CLN)38 b(relies)h(on)f(semi-automatic)h(ordering)
 f(of)g(initializations)j(of)e(static)g(and)f(global)i(v)-5
 b(ariables,)41 b(a)d(feature)0 3441 y(whic)m(h)30 b(I)g(could)h
-(implemen)m(t)e(for)h(GNU)h(g)p Fn(++)f Fp(only)-8 b(.)0
-3978 y Fk(2.1.2)63 b(Mak)m(e)29 b(utilit)m(y)0 4266 y
-Fp(T)-8 b(o)31 b(build)e(CLN,)h(y)m(ou)h(also)g(need)g(to)g(ha)m(v)m(e)
-g(GNU)g Fn(make)e Fp(installed.)0 4803 y Fk(2.1.3)63
-b(Sed)30 b(utilit)m(y)0 5091 y Fp(T)-8 b(o)36 b(build)e(CLN)g(on)h
+(implemen)m(t)e(for)h(GNU)h(g)p Fp(++)f Fr(only)-8 b(.)0
+3978 y Fm(2.1.2)63 b(Mak)m(e)29 b(utilit)m(y)0 4266 y
+Fr(T)-8 b(o)31 b(build)e(CLN,)h(y)m(ou)h(also)g(need)g(to)g(ha)m(v)m(e)
+g(GNU)g Fp(make)e Fr(installed.)0 4803 y Fm(2.1.3)63
+b(Sed)30 b(utilit)m(y)0 5091 y Fr(T)-8 b(o)36 b(build)e(CLN)g(on)h
 (HP-UX,)h(y)m(ou)g(also)g(need)f(to)g(ha)m(v)m(e)i(GNU)e
-Fn(sed)g Fp(installed.)55 b(This)34 b(is)i(b)s(ecause)f(the)g(libto)s
+Fp(sed)g Fr(installed.)55 b(This)34 b(is)i(b)s(ecause)f(the)g(libto)s
 (ol)0 5215 y(script,)c(whic)m(h)f(creates)i(the)f(CLN)f(library)-8
-b(,)31 b(relies)g(on)g Fn(sed)p Fp(,)f(and)g(the)g(v)m(endor's)h
-Fn(sed)f Fp(utilit)m(y)h(on)g(these)g(systems)0 5340
+b(,)31 b(relies)g(on)g Fp(sed)p Fr(,)f(and)g(the)g(v)m(endor's)h
+Fp(sed)f Fr(utilit)m(y)h(on)g(these)g(systems)0 5340
 y(is)f(to)s(o)i(limited.)p eop
 %%Page: 4 6
-4 5 bop 0 -116 a Fp(Chapter)30 b(2:)41 b(Installation)2939
-b(4)0 366 y Fq(2.2)68 b(Building)31 b(the)f(library)0
-647 y Fp(As)g(with)g(an)m(y)h(auto)s(con\014guring)f(GNU)h(soft)m(w)m
+4 5 bop 0 -116 a Fr(Chapter)30 b(2:)41 b(Installation)2939
+b(4)0 366 y Fs(2.2)68 b(Building)31 b(the)f(library)0
+647 y Fr(As)g(with)g(an)m(y)h(auto)s(con\014guring)f(GNU)h(soft)m(w)m
 (are,)h(installation)h(is)d(as)h(easy)g(as)f(this:)240
-906 y Fn($)47 b(./configure)240 1010 y($)g(make)240 1114
-y($)g(make)g(check)0 1394 y Fp(If)30 b(on)g(y)m(our)g(system,)g(`)p
-Fn(make)p Fp(')g(is)g(not)h(GNU)g Fn(make)p Fp(,)e(y)m(ou)i(ha)m(v)m(e)
-h(to)f(use)f(`)p Fn(gmake)p Fp(')f(instead)i(of)g(`)p
-Fn(make)p Fp(')e(ab)s(o)m(v)m(e.)0 1675 y(The)34 b Fn(configure)f
-Fp(command)f(c)m(hec)m(ks)37 b(out)e(some)f(features)h(of)g(y)m(our)g
-(system)f(and)g(C)p Fn(++)g Fp(compiler)h(and)f(builds)0
-1799 y(the)e Fn(Makefile)p Fp(s.)42 b(The)31 b Fn(make)f
-Fp(command)f(builds)i(the)g(library)-8 b(.)45 b(This)30
+906 y Fp($)47 b(./configure)240 1010 y($)g(make)240 1114
+y($)g(make)g(check)0 1394 y Fr(If)30 b(on)g(y)m(our)g(system,)g(`)p
+Fp(make)p Fr(')g(is)g(not)h(GNU)g Fp(make)p Fr(,)e(y)m(ou)i(ha)m(v)m(e)
+h(to)f(use)f(`)p Fp(gmake)p Fr(')f(instead)i(of)g(`)p
+Fp(make)p Fr(')e(ab)s(o)m(v)m(e.)0 1675 y(The)34 b Fp(configure)f
+Fr(command)f(c)m(hec)m(ks)37 b(out)e(some)f(features)h(of)g(y)m(our)g
+(system)f(and)g(C)p Fp(++)g Fr(compiler)h(and)f(builds)0
+1799 y(the)e Fp(Makefile)p Fr(s.)42 b(The)31 b Fp(make)f
+Fr(command)f(builds)i(the)g(library)-8 b(.)45 b(This)30
 b(step)i(ma)m(y)f(tak)m(e)i(4)f(hours)e(on)i(an)f(a)m(v)m(erage)0
-1924 y(w)m(orkstation.)78 b(The)42 b Fn(make)29 b(check)41
-b Fp(runs)f(some)i(test)h(to)g(c)m(hec)m(k)h(that)f(no)f(imp)s(ortan)m
+1924 y(w)m(orkstation.)78 b(The)42 b Fp(make)29 b(check)41
+b Fr(runs)f(some)i(test)h(to)g(c)m(hec)m(k)h(that)f(no)f(imp)s(ortan)m
 (t)f(subroutine)h(has)g(b)s(een)0 2048 y(miscompiled.)0
-2329 y(The)30 b Fn(configure)e Fp(command)g(accepts)k(options.)41
+2329 y(The)30 b Fp(configure)e Fr(command)g(accepts)k(options.)41
 b(T)-8 b(o)30 b(get)i(a)f(summary)c(of)j(them,)g(try)240
-2588 y Fn($)47 b(./configure)e(--help)0 2868 y Fp(Some)29
+2588 y Fp($)47 b(./configure)e(--help)0 2868 y Fr(Some)29
 b(of)i(the)g(options)f(are)h(explained)g(in)f(detail)h(in)f(the)h(`)p
-Fn(INSTALL.generic)p Fp(')26 b(\014le.)0 3149 y(Y)-8
+Fp(INSTALL.generic)p Fr(')26 b(\014le.)0 3149 y(Y)-8
 b(ou)28 b(can)g(sp)s(ecify)g(the)g(C)f(compiler,)h(the)g(C)p
-Fn(++)f Fp(compiler)g(and)g(their)h(options)g(through)f(the)h(follo)m
+Fp(++)f Fr(compiler)g(and)g(their)h(options)g(through)f(the)h(follo)m
 (wing)i(en)m(viron-)0 3273 y(men)m(t)g(v)-5 b(ariables)31
-b(when)e(running)g Fn(configure)p Fp(:)0 3585 y Fn(CC)384
-b Fp(Sp)s(eci\014es)30 b(the)g(C)g(compiler.)0 3772 y
-Fn(CFLAGS)192 b Fp(Flags)32 b(to)f(b)s(e)f(giv)m(en)h(to)g(the)g(C)f
+b(when)e(running)g Fp(configure)p Fr(:)0 3585 y Fp(CC)384
+b Fr(Sp)s(eci\014es)30 b(the)g(C)g(compiler.)0 3772 y
+Fp(CFLAGS)192 b Fr(Flags)32 b(to)f(b)s(e)f(giv)m(en)h(to)g(the)g(C)f
 (compiler)f(when)h(compiling)g(programs)f(\(not)i(when)e(linking\).)0
-3959 y Fn(CXX)336 b Fp(Sp)s(eci\014es)30 b(the)g(C)p
-Fn(++)g Fp(compiler.)0 4146 y Fn(CXXFLAGS)96 b Fp(Flags)32
-b(to)f(b)s(e)f(giv)m(en)h(to)g(the)g(C)p Fn(++)e Fp(compiler)h(when)f
+3959 y Fp(CXX)336 b Fr(Sp)s(eci\014es)30 b(the)g(C)p
+Fp(++)g Fr(compiler.)0 4146 y Fp(CXXFLAGS)96 b Fr(Flags)32
+b(to)f(b)s(e)f(giv)m(en)h(to)g(the)g(C)p Fp(++)e Fr(compiler)h(when)f
 (compiling)h(programs)f(\(not)i(when)f(linking\).)0 4458
-y(Examples:)240 4717 y Fn($)47 b(CC="gcc")f(CFLAGS="-O")f(CXX="g++")g
+y(Examples:)240 4717 y Fp($)47 b(CC="gcc")f(CFLAGS="-O")f(CXX="g++")g
 (CXXFLAGS="-O")f(./configure)240 4821 y($)j(CC="gcc)f(-V)h(2.7.2")g
 (CFLAGS="-O)e(-g")h(\\)335 4925 y(CXX="g++)g(-V)h(2.7.2")f
 (CXXFLAGS="-O)f(-g")i(./configure)240 5029 y($)g(CC="gcc)f(-V)h(2.8.1")
@@ -1606,83 +1884,79 @@ y($)k(CC="gcc)f(-V)h(egcs-2.91.60")e(CFLAGS="-O2)f(-fno-exceptions")g
 (\\)335 5340 y(CXX="g++)i(-V)h(egcs-2.91.60")d(CFLAGS="-O2)h
 (-fno-exceptions")e(./configure)p eop
 %%Page: 5 7
-5 6 bop 0 -116 a Fp(Chapter)30 b(2:)41 b(Installation)2939
+5 6 bop 0 -116 a Fr(Chapter)30 b(2:)41 b(Installation)2939
 b(5)0 366 y(Note)28 b(that)g(for)f(these)h(en)m(vironmen)m(t)e(v)-5
 b(ariables)28 b(to)g(tak)m(e)h(e\013ect,)g(y)m(ou)e(ha)m(v)m(e)i(to)f
 (set)f(them)f(\(assuming)g(a)i(Bourne-)0 491 y(compatible)i(shell\))f
-(on)g(the)h(same)f(line)g(as)h(the)f Fn(configure)e Fp(command.)38
+(on)g(the)h(same)f(line)g(as)h(the)f Fp(configure)e Fr(command.)38
 b(If)29 b(y)m(ou)g(made)f(the)i(settings)g(in)f(earlier)0
 616 y(shell)f(commands,)e(y)m(ou)i(ha)m(v)m(e)g(to)h
-Fn(export)d Fp(the)h(en)m(vironmen)m(t)g(v)-5 b(ariables)29
-b(b)s(efore)e(calling)i Fn(configure)p Fp(.)37 b(In)27
-b(a)h Fn(csh)0 740 y Fp(shell,)j(y)m(ou)g(ha)m(v)m(e)g(to)g(use)f(the)h
-(`)p Fn(setenv)p Fp(')e(command)f(for)i(setting)i(eac)m(h)f(of)g(the)f
-(en)m(vironmen)m(t)g(v)-5 b(ariables.)0 1017 y(On)34
-b(Lin)m(ux,)i Fn(g++)e Fp(needs)g(15)i(MB)f(to)h(compile)f(the)g
+Fp(export)d Fr(the)h(en)m(vironmen)m(t)g(v)-5 b(ariables)29
+b(b)s(efore)e(calling)i Fp(configure)p Fr(.)37 b(In)27
+b(a)h Fp(csh)0 740 y Fr(shell,)j(y)m(ou)g(ha)m(v)m(e)g(to)g(use)f(the)h
+(`)p Fp(setenv)p Fr(')e(command)f(for)i(setting)i(eac)m(h)f(of)g(the)f
+(en)m(vironmen)m(t)g(v)-5 b(ariables.)0 1040 y(On)34
+b(Lin)m(ux,)i Fp(g++)e Fr(needs)g(15)i(MB)f(to)h(compile)f(the)g
 (tests.)55 b(So)34 b(y)m(ou)i(should)d(b)s(etter)i(ha)m(v)m(e)h(17)g
-(MB)g(sw)m(ap)e(space)0 1142 y(and)c(1)h(MB)g(ro)s(om)e(in)h($TMPDIR.)0
-1419 y(If)d(y)m(ou)h(use)g Fn(g++)e Fp(v)m(ersion)i(2.7.x,)i(don't)e
-(add)f(`)p Fn(-O2)p Fp(')g(to)i(the)f(CXXFLA)m(GS,)g(b)s(ecause)g(`)p
-Fn(g++)h(-O)p Fp(')f(generates)h(b)s(etter)0 1544 y(co)s(de)i(for)f
-(CLN)g(than)g(`)p Fn(g++)g(-O2)p Fp('.)0 1821 y(If)40
-b(y)m(ou)i(use)e Fn(g++)g Fp(v)m(ersion)h(2.8.x)i(or)e(egcs-2.91.x)j
+(MB)g(sw)m(ap)e(space)0 1164 y(and)c(1)h(MB)g(ro)s(om)e(in)h($TMPDIR.)0
+1464 y(If)d(y)m(ou)h(use)g Fp(g++)e Fr(v)m(ersion)i(2.7.x,)i(don't)e
+(add)f(`)p Fp(-O2)p Fr(')g(to)i(the)f(CXXFLA)m(GS,)g(b)s(ecause)g(`)p
+Fp(g++)h(-O)p Fr(')f(generates)h(b)s(etter)0 1588 y(co)s(de)i(for)f
+(CLN)g(than)g(`)p Fp(g++)g(-O2)p Fr('.)0 1888 y(If)40
+b(y)m(ou)i(use)e Fp(g++)g Fr(v)m(ersion)h(2.8.x)i(or)e(egcs-2.91.x)j
 (\(a.k.a.)73 b(egcs-1.1\))44 b(or)d(gcc-2.95.x,)47 b(I)41
-b(recommend)d(adding)0 1946 y(`)p Fn(-fno-exceptions)p
-Fp(')27 b(to)k(the)f(CXXFLA)m(GS.)i(This)d(will)i(lik)m(ely)h(generate)
-g(b)s(etter)e(co)s(de.)0 2223 y(If)50 b(y)m(ou)g(use)g
-Fn(g++)g Fp(v)m(ersion)g(egcs-2.91.x)k(\(egcs-1.1\))f(or)d(gcc-2.95.x)k
-(on)c(Sparc,)55 b(add)50 b(either)g(`)p Fn(-O)p Fp(')g(or)h(`)p
-Fn(-O2)0 2347 y(-fno-schedule-insns)p Fp(')21 b(to)26
-b(the)g(CXXFLA)m(GS.)g(With)g(full)g(`)p Fn(-O2)p Fp(',)g
-Fn(g++)f Fp(miscompiles)f(the)i(division)g(routines.)0
-2472 y(Also,)31 b(for)f({enable-shared)h(to)g(w)m(ork,)g(y)m(ou)g(need)
-f(egcs-1.1.2)k(or)c(new)m(er.)0 2749 y(On)23 b(MIPS)h(\(SGI)g(Irix)g
-(6\),)i(pass)e(option)g Fn(--without-gmp)d Fp(to)k(con\014gure.)38
-b(gmp)23 b(do)s(es)h(not)g(w)m(ork)g(when)f(compiled)0
-2874 y(in)30 b(`)p Fn(n32)p Fp(')g(binary)g(format)f(on)i(Irix.)0
-3151 y(By)36 b(default,)i(only)e(a)h(static)h(library)d(is)h(built.)58
-b(Y)-8 b(ou)36 b(can)h(build)e(CLN)g(as)i(a)f(shared)f(library)h(to)s
-(o,)i(b)m(y)e(calling)0 3275 y Fn(configure)43 b Fp(with)i(the)g
-(option)h(`)p Fn(--enable-shared)p Fp('.)82 b(T)-8 b(o)46
-b(get)g(it)g(built)f(as)h(a)f(shared)g(library)g(only)-8
-b(,)50 b(call)0 3400 y Fn(configure)28 b Fp(with)i(the)g(options)h(`)p
-Fn(--enable-shared)c(--disable-static)p Fp('.)0 3677
-y(If)j(y)m(ou)g(use)g Fn(g++)f Fp(v)m(ersion)i(egcs-2.91.x)i
-(\(egcs-1.1\))h(on)c(Sparc,)f(y)m(ou)i(cannot)g(use)e(`)p
-Fn(--enable-shared)p Fp(')e(b)s(ecause)0 3802 y Fn(g++)i
-Fp(w)m(ould)i(miscompile)e(parts)h(of)g(the)h(library)-8
-b(.)0 4280 y Fq(2.3)68 b(Installing)32 b(the)f(library)0
-4557 y Fp(As)f(with)g(an)m(y)h(auto)s(con\014guring)f(GNU)h(soft)m(w)m
+b(recommend)d(adding)0 2012 y(`)p Fp(-fno-exceptions)p
+Fr(')27 b(to)k(the)f(CXXFLA)m(GS.)i(This)d(will)i(lik)m(ely)h(generate)
+g(b)s(etter)e(co)s(de.)0 2312 y(If)50 b(y)m(ou)g(use)g
+Fp(g++)g Fr(v)m(ersion)g(egcs-2.91.x)k(\(egcs-1.1\))f(or)d(gcc-2.95.x)k
+(on)c(Sparc,)55 b(add)50 b(either)g(`)p Fp(-O)p Fr(')g(or)h(`)p
+Fp(-O2)0 2437 y(-fno-schedule-insns)p Fr(')21 b(to)26
+b(the)g(CXXFLA)m(GS.)g(With)g(full)g(`)p Fp(-O2)p Fr(',)g
+Fp(g++)f Fr(miscompiles)f(the)i(division)g(routines.)0
+2561 y(Also,)31 b(for)f({enable-shared)h(to)g(w)m(ork,)g(y)m(ou)g(need)
+f(egcs-1.1.2)k(or)c(new)m(er.)0 2861 y(By)36 b(default,)i(only)e(a)h
+(static)h(library)d(is)h(built.)58 b(Y)-8 b(ou)36 b(can)h(build)e(CLN)g
+(as)i(a)f(shared)f(library)h(to)s(o,)i(b)m(y)e(calling)0
+2985 y Fp(configure)43 b Fr(with)i(the)g(option)h(`)p
+Fp(--enable-shared)p Fr('.)82 b(T)-8 b(o)46 b(get)g(it)g(built)f(as)h
+(a)f(shared)g(library)g(only)-8 b(,)50 b(call)0 3110
+y Fp(configure)28 b Fr(with)i(the)g(options)h(`)p Fp(--enable-shared)c
+(--disable-static)p Fr('.)0 3409 y(If)j(y)m(ou)g(use)g
+Fp(g++)f Fr(v)m(ersion)i(egcs-2.91.x)i(\(egcs-1.1\))h(on)c(Sparc,)f(y)m
+(ou)i(cannot)g(use)e(`)p Fp(--enable-shared)p Fr(')e(b)s(ecause)0
+3534 y Fp(g++)i Fr(w)m(ould)i(miscompile)e(parts)h(of)g(the)h(library)
+-8 b(.)0 4213 y Fs(2.3)68 b(Installing)32 b(the)f(library)0
+4512 y Fr(As)f(with)g(an)m(y)h(auto)s(con\014guring)f(GNU)h(soft)m(w)m
 (are,)h(installation)h(is)d(as)h(easy)g(as)f(this:)240
-4814 y Fn($)47 b(make)g(install)0 5091 y Fp(The)20 b(`)p
-Fn(make)29 b(install)p Fp(')19 b(command)f(installs)j(the)f(library)g
+4791 y Fp($)47 b(make)g(install)0 5091 y Fr(The)20 b(`)p
+Fp(make)29 b(install)p Fr(')19 b(command)f(installs)j(the)f(library)g
 (and)g(the)g(include)g(\014les)h(in)m(to)g(public)e(places)i(\(`)p
-Fn(/usr/local/lib/)p Fp(')0 5215 y(and)28 b(`)p Fn(/usr/local/include/)
-p Fp(',)d(if)k(y)m(ou)h(ha)m(v)m(en't)g(sp)s(eci\014ed)f(a)g
-Fn(--prefix)e Fp(option)j(to)f Fn(configure)p Fp(\).)39
+Fp(/usr/local/lib/)p Fr(')0 5215 y(and)28 b(`)p Fp(/usr/local/include/)
+p Fr(',)d(if)k(y)m(ou)h(ha)m(v)m(en't)g(sp)s(eci\014ed)f(a)g
+Fp(--prefix)e Fr(option)j(to)f Fp(configure)p Fr(\).)39
 b(This)28 b(step)0 5340 y(ma)m(y)i(require)g(sup)s(eruser)e
 (privileges.)p eop
 %%Page: 6 8
-6 7 bop 0 -116 a Fp(Chapter)30 b(2:)41 b(Installation)2939
+6 7 bop 0 -116 a Fr(Chapter)30 b(2:)41 b(Installation)2939
 b(6)0 366 y(If)40 b(y)m(ou)i(ha)m(v)m(e)g(already)f(built)g(the)g
 (library)f(and)g(wish)g(to)i(install)g(it,)i(but)c(didn't)g(sp)s(ecify)
-h Fn(--prefix=)p Fl(:)15 b(:)g(:)39 b Fp(at)0 491 y(con\014gure)g
-(time,)i(just)d(re-run)g Fn(configure)p Fp(,)h(giving)h(it)f(the)g
+h Fp(--prefix=)p Fn(:)15 b(:)g(:)39 b Fr(at)0 491 y(con\014gure)g
+(time,)i(just)d(re-run)g Fp(configure)p Fr(,)h(giving)h(it)f(the)g
 (same)g(options)g(as)g(the)g(\014rst)f(time,)j(plus)d(the)i
-Fn(--)0 616 y(prefix=)p Fl(:)15 b(:)g(:)29 b Fp(option.)0
-1064 y Fq(2.4)68 b(Cleaning)32 b(up)0 1338 y Fp(Y)-8
+Fp(--)0 616 y(prefix=)p Fn(:)15 b(:)g(:)29 b Fr(option.)0
+1064 y Fs(2.4)68 b(Cleaning)32 b(up)0 1338 y Fr(Y)-8
 b(ou)31 b(can)g(remo)m(v)m(e)f(system-dep)s(enden)m(t)f(\014les)i
-(generated)g(b)m(y)f Fn(make)f Fp(through)240 1591 y
-Fn($)47 b(make)g(clean)0 1865 y Fp(Y)-8 b(ou)28 b(can)f(remo)m(v)m(e)h
-(all)g(\014les)f(generated)h(b)m(y)f Fn(make)p Fp(,)g(th)m(us)g(rev)m
+(generated)g(b)m(y)f Fp(make)f Fr(through)240 1591 y
+Fp($)47 b(make)g(clean)0 1865 y Fr(Y)-8 b(ou)28 b(can)f(remo)m(v)m(e)h
+(all)g(\014les)f(generated)h(b)m(y)f Fp(make)p Fr(,)g(th)m(us)g(rev)m
 (erting)h(to)g(a)g(virgin)f(distribution)f(of)i(CLN,)f(through)240
-2118 y Fn($)47 b(make)g(distclean)p eop
+2118 y Fp($)47 b(make)g(distclean)p eop
 %%Page: 7 9
-7 8 bop 0 -116 a Fp(Chapter)30 b(3:)41 b(Ordinary)29
-b(n)m(um)m(b)s(er)f(t)m(yp)s(es)2457 b(7)0 366 y Fm(3)80
+7 8 bop 0 -116 a Fr(Chapter)30 b(3:)41 b(Ordinary)29
+b(n)m(um)m(b)s(er)f(t)m(yp)s(es)2457 b(7)0 366 y Fo(3)80
 b(Ordinary)32 b(n)l(um)l(b)t(er)27 b(t)l(yp)t(es)0 809
-y Fp(CLN)j(implemen)m(ts)f(the)h(follo)m(wing)i(class)f(hierarc)m(h)m
-(y:)1385 1076 y Fn(Number)1338 1180 y(cl_number)1242
+y Fr(CLN)j(implemen)m(ts)f(the)h(follo)m(wing)i(class)f(hierarc)m(h)m
+(y:)1385 1076 y Fp(Number)1338 1180 y(cl_number)1242
 1283 y(<cl_number.h>)1481 1387 y(|)1481 1491 y(|)1051
 1595 y(Real)47 b(or)g(complex)f(number)1385 1698 y(cl_N)1242
 1802 y(<cl_complex.h>)1481 1906 y(|)1481 2010 y(|)1242
@@ -1697,62 +1971,62 @@ b(|)h(|)f(|)431 3359 y(cl_I)572 b(Short-Float)140 b(Single-Float)92
 b(Double-Float)140 b(Long-Float)288 3463 y(<cl_integer.h>)378
 b(cl_SF)428 b(cl_FF)g(cl_DF)g(cl_LF)1147 3566 y(<cl_sfloat.h>)44
 b(<cl_ffloat.h>)g(<cl_dfloat.h>)g(<cl_lfloat.h>)0 3854
-y Fp(The)36 b(base)g(class)h Fn(cl_number)d Fp(is)i(an)g(abstract)h
+y Fr(The)36 b(base)g(class)h Fp(cl_number)d Fr(is)i(an)g(abstract)h
 (base)f(class.)59 b(It)36 b(is)g(not)h(useful)e(to)i(declare)g(a)g(v)-5
 b(ariable)37 b(of)f(this)0 3979 y(t)m(yp)s(e)f(except)i(if)e(y)m(ou)g
 (w)m(an)m(t)h(to)g(completely)g(disable)g(compile-time)f(t)m(yp)s(e)g
 (c)m(hec)m(king)i(and)e(use)g(run-time)f(t)m(yp)s(e)0
 4103 y(c)m(hec)m(king)e(instead.)0 4391 y(The)25 b(class)h
-Fn(cl_N)f Fp(comprises)f(real)i(and)f(complex)g(n)m(um)m(b)s(ers.)37
+Fp(cl_N)f Fr(comprises)f(real)i(and)f(complex)g(n)m(um)m(b)s(ers.)37
 b(There)25 b(is)g(no)h(sp)s(ecial)g(class)g(for)f(complex)g(n)m(um)m(b)
 s(ers)0 4515 y(since)31 b(complex)f(n)m(um)m(b)s(ers)e(with)i
-(imaginary)g(part)g Fn(0)g Fp(are)h(automatically)h(con)m(v)m(erted)g
+(imaginary)g(part)g Fp(0)g Fr(are)h(automatically)h(con)m(v)m(erted)g
 (to)f(real)g(n)m(um)m(b)s(ers.)0 4803 y(The)f(class)h
-Fn(cl_R)e Fp(comprises)h(real)h(n)m(um)m(b)s(ers)d(of)i(di\013eren)m(t)
+Fp(cl_R)e Fr(comprises)h(real)h(n)m(um)m(b)s(ers)d(of)i(di\013eren)m(t)
 h(kinds.)40 b(It)30 b(is)h(an)f(abstract)h(class.)0 5091
-y(The)41 b(class)i Fn(cl_RA)e Fp(comprises)f(exact)k(real)e(n)m(um)m(b)
+y(The)41 b(class)i Fp(cl_RA)e Fr(comprises)f(exact)k(real)e(n)m(um)m(b)
 s(ers:)62 b(rational)43 b(n)m(um)m(b)s(ers,)f(including)g(in)m(tegers.)
 76 b(There)42 b(is)0 5215 y(no)34 b(sp)s(ecial)g(class)h(for)f(non-in)m
 (tegral)h(rational)h(n)m(um)m(b)s(ers)31 b(since)j(rational)i(n)m(um)m
-(b)s(ers)31 b(with)j(denominator)f Fn(1)h Fp(are)0 5340
+(b)s(ers)31 b(with)j(denominator)f Fp(1)h Fr(are)0 5340
 y(automatically)e(con)m(v)m(erted)g(to)f(in)m(tegers.)p
 eop
 %%Page: 8 10
-8 9 bop 0 -116 a Fp(Chapter)30 b(3:)41 b(Ordinary)29
+8 9 bop 0 -116 a Fr(Chapter)30 b(3:)41 b(Ordinary)29
 b(n)m(um)m(b)s(er)f(t)m(yp)s(es)2457 b(8)0 366 y(The)30
-b(class)h Fn(cl_F)e Fp(implemen)m(ts)g(\015oating-p)s(oin)m(t)j(appro)m
+b(class)h Fp(cl_F)e Fr(implemen)m(ts)g(\015oating-p)s(oin)m(t)j(appro)m
 (ximations)e(to)h(real)g(n)m(um)m(b)s(ers.)38 b(It)31
-b(is)f(an)g(abstract)i(class.)0 802 y Fq(3.1)68 b(Exact)31
-b(n)l(um)l(b)t(ers)0 1076 y Fp(Some)42 b(n)m(um)m(b)s(ers)e(are)j
+b(is)f(an)g(abstract)i(class.)0 802 y Fs(3.1)68 b(Exact)31
+b(n)l(um)l(b)t(ers)0 1076 y Fr(Some)42 b(n)m(um)m(b)s(ers)e(are)j
 (represen)m(ted)f(as)h(exact)h(n)m(um)m(b)s(ers:)63 b(there)42
 b(is)h(no)f(loss)h(of)g(information)f(when)f(suc)m(h)i(a)0
 1200 y(n)m(um)m(b)s(er)25 b(is)i(con)m(v)m(erted)i(from)d(its)h
 (mathematical)h(v)-5 b(alue)28 b(to)g(its)f(in)m(ternal)h(represen)m
 (tation.)41 b(On)26 b(exact)j(n)m(um)m(b)s(ers,)0 1325
-y(the)i(elemen)m(tary)f(op)s(erations)h(\()p Fn(+)p Fp(,)g
-Fn(-)p Fp(,)f Fn(*)p Fp(,)g Fn(/)p Fp(,)h(comparisons,)e
-Fl(:)15 b(:)g(:)q Fp(\))31 b(compute)f(the)g(completely)h(correct)h
+y(the)i(elemen)m(tary)f(op)s(erations)h(\()p Fp(+)p Fr(,)g
+Fp(-)p Fr(,)f Fp(*)p Fr(,)g Fp(/)p Fr(,)h(comparisons,)e
+Fn(:)15 b(:)g(:)q Fr(\))31 b(compute)f(the)g(completely)h(correct)h
 (result.)0 1599 y(In)e(CLN,)g(the)g(exact)i(n)m(um)m(b)s(ers)c(are:)75
-1873 y Fo(\017)60 b Fp(rational)32 b(n)m(um)m(b)s(ers)c(\(including)i
-(in)m(tegers\),)75 2019 y Fo(\017)60 b Fp(complex)30
+1873 y Fq(\017)60 b Fr(rational)32 b(n)m(um)m(b)s(ers)c(\(including)i
+(in)m(tegers\),)75 2019 y Fq(\017)60 b Fr(complex)30
 b(n)m(um)m(b)s(ers)e(whose)i(real)h(and)f(imaginary)g(parts)g(are)h(b)s
 (oth)e(rational)j(n)m(um)m(b)s(ers.)0 2314 y(Rational)26
 b(n)m(um)m(b)s(ers)d(are)i(alw)m(a)m(ys)h(normalized)e(to)i(the)f(form)
-e Fi(n)m(umerator)7 b Fn(/)p Fi(denominator)29 b Fp(where)24
+e Fk(n)m(umerator)7 b Fp(/)p Fk(denominator)29 b Fr(where)24
 b(the)h(n)m(umerator)0 2439 y(and)e(denominator)f(are)i(coprime)e(in)m
 (tegers)i(and)f(the)g(denominator)g(is)g(p)s(ositiv)m(e.)39
 b(If)23 b(the)g(resulting)h(denominator)0 2564 y(is)30
-b Fn(1)p Fp(,)h(the)f(rational)i(n)m(um)m(b)s(er)c(is)i(con)m(v)m
+b Fp(1)p Fr(,)h(the)f(rational)i(n)m(um)m(b)s(er)c(is)i(con)m(v)m
 (erted)i(to)f(an)g(in)m(teger.)0 2838 y(Small)d(in)m(tegers)j(\(t)m
-(ypically)g(in)e(the)g(range)h Fn(-2^30)p Fl(:)15 b(:)g(:)p
-Fn(2^30-1)p Fp(,)28 b(for)h(32-bit)h(mac)m(hines\))f(are)h(esp)s
+(ypically)g(in)e(the)g(range)h Fp(-2^30)p Fn(:)15 b(:)g(:)p
+Fp(2^30-1)p Fr(,)28 b(for)h(32-bit)h(mac)m(hines\))f(are)h(esp)s
 (ecially)g(e\016cien)m(t,)0 2962 y(b)s(ecause)c(they)g(consume)f(no)h
 (heap)g(allo)s(cation.)41 b(Otherwise)26 b(the)g(distinction)h(b)s(et)m
 (w)m(een)f(these)h(immediate)e(in)m(te-)0 3087 y(gers)31
 b(\(called)h(\\\014xn)m(ums"\))d(and)g(heap)i(allo)s(cated)h(in)m
 (tegers)g(\(called)g(\\bign)m(ums"\))d(is)i(completely)g(transparen)m
-(t.)0 3522 y Fq(3.2)68 b(Floating-p)t(oin)l(t)32 b(n)l(um)l(b)t(ers)0
-3796 y Fp(Not)37 b(all)g(real)g(n)m(um)m(b)s(ers)d(can)j(b)s(e)e
+(t.)0 3522 y Fs(3.2)68 b(Floating-p)t(oin)l(t)32 b(n)l(um)l(b)t(ers)0
+3796 y Fr(Not)37 b(all)g(real)g(n)m(um)m(b)s(ers)d(can)j(b)s(e)e
 (represen)m(ted)i(exactly)-8 b(.)60 b(\(There)36 b(is)h(an)f(easy)h
 (mathematical)f(pro)s(of)g(for)g(this:)0 3920 y(Only)31
 b(a)h(coun)m(table)h(set)f(of)g(n)m(um)m(b)s(ers)d(can)j(b)s(e)f
@@ -1762,61 +2036,61 @@ b(there)g(are)g(uncoun)m(tably)g(man)m(y)f(real)i(n)m(um)m(b)s(ers.\))
 41 b(So)31 b(some)f(appro)m(ximation)h(is)0 4169 y(needed.)40
 b(CLN)30 b(implemen)m(ts)f(ordinary)h(\015oating-p)s(oin)m(t)h(n)m(um)m
 (b)s(ers,)e(with)h(man)m(tissa)g(and)g(exp)s(onen)m(t.)0
-4443 y(The)c(elemen)m(tary)i(op)s(erations)f(\()p Fn(+)p
-Fp(,)g Fn(-)p Fp(,)h Fn(*)p Fp(,)f Fn(/)p Fp(,)h Fl(:)15
-b(:)g(:)q Fp(\))27 b(only)g(return)e(appro)m(ximate)i(results.)40
+4443 y(The)c(elemen)m(tary)i(op)s(erations)f(\()p Fp(+)p
+Fr(,)g Fp(-)p Fr(,)h Fp(*)p Fr(,)f Fp(/)p Fr(,)h Fn(:)15
+b(:)g(:)q Fr(\))27 b(only)g(return)e(appro)m(ximate)i(results.)40
 b(F)-8 b(or)27 b(example,)g(the)g(v)-5 b(alue)0 4568
-y(of)31 b(the)h(expression)f Fn(\(cl_F\))d(0.3)i(+)g(\(cl_F\))f(0.4)h
-Fp(prin)m(ts)h(as)g(`)p Fn(0.70000005)p Fp(',)e(not)j(as)f(`)p
-Fn(0.7)p Fp('.)43 b(Rounding)30 b(errors)0 4692 y(lik)m(e)i(this)e(one)
+y(of)31 b(the)h(expression)f Fp(\(cl_F\))d(0.3)i(+)g(\(cl_F\))f(0.4)h
+Fr(prin)m(ts)h(as)g(`)p Fp(0.70000005)p Fr(',)e(not)j(as)f(`)p
+Fp(0.7)p Fr('.)43 b(Rounding)30 b(errors)0 4692 y(lik)m(e)i(this)e(one)
 h(are)f(inevitable)i(when)d(computing)h(with)g(\015oating-p)s(oin)m(t)i
 (n)m(um)m(b)s(ers.)0 4966 y(Nev)m(ertheless,)41 b(CLN)36
 b(rounds)g(the)h(\015oating-p)s(oin)m(t)i(results)e(of)g(the)g(op)s
-(erations)h Fn(+)p Fp(,)h Fn(-)p Fp(,)f Fn(*)p Fp(,)h
-Fn(/)p Fp(,)g Fn(sqrt)d Fp(according)0 5091 y(to)c(the)f(\\round-to-ev)
+(erations)h Fp(+)p Fr(,)h Fp(-)p Fr(,)f Fp(*)p Fr(,)h
+Fp(/)p Fr(,)g Fp(sqrt)d Fr(according)0 5091 y(to)c(the)f(\\round-to-ev)
 m(en")h(rule:)42 b(It)31 b(\014rst)f(computes)g(the)h(exact)h
 (mathematical)f(result)g(and)g(then)f(returns)g(the)0
 5215 y(\015oating-p)s(oin)m(t)37 b(n)m(um)m(b)s(er)c(whic)m(h)i(is)h
 (nearest)g(to)h(this.)56 b(If)35 b(t)m(w)m(o)i(\015oating-p)s(oin)m(t)g
 (n)m(um)m(b)s(ers)c(are)j(equally)g(distan)m(t)0 5340
 y(from)29 b(the)h(ideal)i(result,)e(the)h(one)f(with)g(a)h
-Fn(0)f Fp(in)g(its)h(least)h(signi\014can)m(t)f(man)m(tissa)f(bit)h(is)
+Fp(0)f Fr(in)g(its)h(least)h(signi\014can)m(t)f(man)m(tissa)f(bit)h(is)
 f(c)m(hosen.)p eop
 %%Page: 9 11
-9 10 bop 0 -116 a Fp(Chapter)30 b(3:)41 b(Ordinary)29
+9 10 bop 0 -116 a Fr(Chapter)30 b(3:)41 b(Ordinary)29
 b(n)m(um)m(b)s(er)f(t)m(yp)s(es)2457 b(9)0 366 y(Similarly)-8
 b(,)48 b(testing)d(\015oating)g(p)s(oin)m(t)f(n)m(um)m(b)s(ers)e(for)i
-(equalit)m(y)i(`)p Fn(x)30 b(==)g(y)p Fp(')44 b(is)h(gam)m(bling)f
+(equalit)m(y)i(`)p Fp(x)30 b(==)g(y)p Fr(')44 b(is)h(gam)m(bling)f
 (with)g(random)e(errors.)0 491 y(Better)32 b(c)m(hec)m(k)g(for)e(`)p
-Fn(abs\(x)f(-)h(y\))g(<)g(epsilon)p Fp(')f(for)h(some)f(w)m(ell-c)m
-(hosen)k Fn(epsilon)p Fp(.)0 850 y(Floating)f(p)s(oin)m(t)f(n)m(um)m(b)
+Fp(abs\(x)f(-)h(y\))g(<)g(epsilon)p Fr(')f(for)h(some)f(w)m(ell-c)m
+(hosen)k Fp(epsilon)p Fr(.)0 850 y(Floating)f(p)s(oin)m(t)f(n)m(um)m(b)
 s(ers)d(come)i(in)g(four)g(\015a)m(v)m(ors:)75 1209 y
-Fo(\017)60 b Fp(Short)24 b(\015oats,)j(t)m(yp)s(e)d Fn(cl_SF)p
-Fp(.)38 b(They)24 b(ha)m(v)m(e)i(1)f(sign)g(bit,)h(8)f(exp)s(onen)m(t)f
+Fq(\017)60 b Fr(Short)24 b(\015oats,)j(t)m(yp)s(e)d Fp(cl_SF)p
+Fr(.)38 b(They)24 b(ha)m(v)m(e)i(1)f(sign)g(bit,)h(8)f(exp)s(onen)m(t)f
 (bits)h(\(including)g(the)g(exp)s(onen)m(t's)f(sign\),)180
 1333 y(and)30 b(17)h(man)m(tissa)f(bits)h(\(including)f(the)g
 (\\hidden")g(bit\).)41 b(They)30 b(don't)h(consume)e(heap)h(allo)s
-(cation.)75 1568 y Fo(\017)60 b Fp(Single)40 b(\015oats,)i(t)m(yp)s(e)e
-Fn(cl_FF)p Fp(.)66 b(They)39 b(ha)m(v)m(e)h(1)g(sign)g(bit,)h(8)f(exp)s
+(cation.)75 1568 y Fq(\017)60 b Fr(Single)40 b(\015oats,)i(t)m(yp)s(e)e
+Fp(cl_FF)p Fr(.)66 b(They)39 b(ha)m(v)m(e)h(1)g(sign)g(bit,)h(8)f(exp)s
 (onen)m(t)g(bits)f(\(including)g(the)h(exp)s(onen)m(t's)180
 1692 y(sign\),)j(and)c(24)h(man)m(tissa)g(bits)g(\(including)f(the)h
 (\\hidden")f(bit\).)69 b(In)39 b(CLN,)h(they)g(are)g(represen)m(ted)g
 (as)180 1817 y(IEEE)g(single-precision)h(\015oating)g(p)s(oin)m(t)g(n)m
 (um)m(b)s(ers.)68 b(This)39 b(corresp)s(onds)g(closely)j(to)f(the)f
-(C/C)p Fn(++)g Fp(t)m(yp)s(e)180 1941 y(`)p Fn(float)p
-Fp('.)75 2176 y Fo(\017)60 b Fp(Double)34 b(\015oats,)i(t)m(yp)s(e)e
-Fn(cl_DF)p Fp(.)50 b(They)34 b(ha)m(v)m(e)h(1)f(sign)g(bit,)h(11)g(exp)
+(C/C)p Fp(++)g Fr(t)m(yp)s(e)180 1941 y(`)p Fp(float)p
+Fr('.)75 2176 y Fq(\017)60 b Fr(Double)34 b(\015oats,)i(t)m(yp)s(e)e
+Fp(cl_DF)p Fr(.)50 b(They)34 b(ha)m(v)m(e)h(1)f(sign)g(bit,)h(11)g(exp)
 s(onen)m(t)f(bits)g(\(including)g(the)g(exp)s(onen)m(t's)180
 2300 y(sign\),)43 b(and)c(53)h(man)m(tissa)g(bits)g(\(including)f(the)h
 (\\hidden")f(bit\).)69 b(In)39 b(CLN,)h(they)g(are)g(represen)m(ted)g
 (as)180 2425 y(IEEE)d(double-precision)g(\015oating)h(p)s(oin)m(t)f(n)m
 (um)m(b)s(ers.)59 b(This)36 b(corresp)s(onds)g(closely)j(to)f(the)f
-(C/C)p Fn(++)g Fp(t)m(yp)s(e)180 2549 y(`)p Fn(double)p
-Fp('.)75 2784 y Fo(\017)60 b Fp(Long)23 b(\015oats,)i(t)m(yp)s(e)e
-Fn(cl_LF)p Fp(.)37 b(They)22 b(ha)m(v)m(e)i(1)f(sign)g(bit,)i(32)e(exp)
+(C/C)p Fp(++)g Fr(t)m(yp)s(e)180 2549 y(`)p Fp(double)p
+Fr('.)75 2784 y Fq(\017)60 b Fr(Long)23 b(\015oats,)i(t)m(yp)s(e)e
+Fp(cl_LF)p Fr(.)37 b(They)22 b(ha)m(v)m(e)i(1)f(sign)g(bit,)i(32)e(exp)
 s(onen)m(t)g(bits)g(\(including)f(the)h(exp)s(onen)m(t's)g(sign\),)180
 2908 y(and)k(n)h(man)m(tissa)g(bits)g(\(including)g(the)g(\\hidden")g
-(bit\),)h(where)e(n)h Fn(>)p Fp(=)f(64.)41 b(The)28 b(precision)g(of)g
+(bit\),)h(where)e(n)h Fp(>)p Fr(=)f(64.)41 b(The)28 b(precision)g(of)g
 (a)h(long)f(\015oat)180 3033 y(is)i(unlimited,)g(but)f(once)i(created,)
 h(a)f(long)g(\015oat)g(has)f(a)h(\014xed)f(precision.)40
 b(\(No)32 b(\\lazy)g(recomputation".\))0 3501 y(Of)27
@@ -1832,440 +2106,440 @@ h(limited)f(for)g(y)m(our)g(application,)i(c)m(ho)s(ose)f(another)0
 (forget)h(ab)s(out)f(the)g(di\013erences)g(b)s(et)m(w)m(een)g(the)g
 (four)g(\015oating-p)s(oin)m(t)h(t)m(yp)s(es)f(and)0
 4717 y(just)i(declare)i(all)g(y)m(our)e(\015oating-p)s(oin)m(t)i(v)-5
-b(ariables)37 b(as)f(b)s(eing)f(of)h(t)m(yp)s(e)g Fn(cl_F)p
-Fp(.)56 b(This)35 b(has)h(the)g(adv)-5 b(an)m(tage)37
+b(ariables)37 b(as)f(b)s(eing)f(of)h(t)m(yp)s(e)g Fp(cl_F)p
+Fr(.)56 b(This)35 b(has)h(the)g(adv)-5 b(an)m(tage)37
 b(that)0 4842 y(when)27 b(y)m(ou)h(c)m(hange)h(the)f(precision)f(of)h
-(some)f(computation)h(\(sa)m(y)-8 b(,)30 b(from)c Fn(cl_DF)h
-Fp(to)h Fn(cl_LF)p Fp(\),)f(y)m(ou)i(don't)e(ha)m(v)m(e)i(to)0
+(some)f(computation)h(\(sa)m(y)-8 b(,)30 b(from)c Fp(cl_DF)h
+Fr(to)h Fp(cl_LF)p Fr(\),)f(y)m(ou)i(don't)e(ha)m(v)m(e)i(to)0
 4966 y(c)m(hange)h(the)g(co)s(de,)g(only)f(the)h(precision)f(of)g(the)h
 (initial)g(v)-5 b(alues.)41 b(Also,)30 b(man)m(y)f(transcenden)m(tal)h
 (functions)f(ha)m(v)m(e)0 5091 y(b)s(een)f(declared)i(as)f(returning)g
-(a)g Fn(cl_F)f Fp(when)g(the)i(argumen)m(t)e(is)i(a)f
-Fn(cl_F)p Fp(,)g(but)f(suc)m(h)h(declarations)i(are)e(missing)0
-5215 y(for)g(the)g(t)m(yp)s(es)g Fn(cl_SF)p Fp(,)f Fn(cl_FF)p
-Fp(,)f Fn(cl_DF)p Fp(,)h Fn(cl_LF)p Fp(.)39 b(\(Suc)m(h)29
+(a)g Fp(cl_F)f Fr(when)g(the)i(argumen)m(t)e(is)i(a)f
+Fp(cl_F)p Fr(,)g(but)f(suc)m(h)h(declarations)i(are)e(missing)0
+5215 y(for)g(the)g(t)m(yp)s(es)g Fp(cl_SF)p Fr(,)f Fp(cl_FF)p
+Fr(,)f Fp(cl_DF)p Fr(,)h Fp(cl_LF)p Fr(.)39 b(\(Suc)m(h)29
 b(declarations)h(w)m(ould)f(b)s(e)f(wrong)g(if)h(the)g(\015oating)h(p)s
 (oin)m(t)0 5340 y(con)m(tagion)j(rule)d(happ)s(ened)e(to)j(c)m(hange)h
 (in)e(the)h(future.\))p eop
 %%Page: 10 12
-10 11 bop 0 -116 a Fp(Chapter)30 b(3:)41 b(Ordinary)29
-b(n)m(um)m(b)s(er)f(t)m(yp)s(es)2411 b(10)0 366 y Fq(3.3)68
-b(Complex)31 b(n)l(um)l(b)t(ers)0 654 y Fp(Complex)25
+10 11 bop 0 -116 a Fr(Chapter)30 b(3:)41 b(Ordinary)29
+b(n)m(um)m(b)s(er)f(t)m(yp)s(es)2411 b(10)0 366 y Fs(3.3)68
+b(Complex)31 b(n)l(um)l(b)t(ers)0 654 y Fr(Complex)25
 b(n)m(um)m(b)s(ers,)g(as)i(implemen)m(ted)e(b)m(y)h(the)h(class)g
-Fn(cl_N)p Fp(,)f(ha)m(v)m(e)h(a)g(real)g(part)f(and)g(an)g(imaginary)g
+Fp(cl_N)p Fr(,)f(ha)m(v)m(e)h(a)g(real)g(part)f(and)g(an)g(imaginary)g
 (part,)i(b)s(oth)0 778 y(real)38 b(n)m(um)m(b)s(ers.)59
 b(A)38 b(complex)f(n)m(um)m(b)s(er)e(whose)i(imaginary)g(part)g(is)g
-(the)h(exact)h(n)m(um)m(b)s(er)c Fn(0)i Fp(is)g(automatically)0
+(the)h(exact)h(n)m(um)m(b)s(er)c Fp(0)i Fr(is)g(automatically)0
 903 y(con)m(v)m(erted)32 b(to)f(a)g(real)g(n)m(um)m(b)s(er.)0
 1190 y(Complex)h(n)m(um)m(b)s(ers)e(can)k(arise)f(from)e(real)j(n)m(um)
 m(b)s(ers)c(alone,)35 b(for)e(example)g(through)f(application)i(of)f
-Fn(sqrt)f Fp(or)0 1315 y(transcenden)m(tal)f(functions.)0
-1883 y Fq(3.4)68 b(Con)l(v)l(ersions)0 2170 y Fp(Con)m(v)m(ersions)42
+Fp(sqrt)f Fr(or)0 1315 y(transcenden)m(tal)f(functions.)0
+1883 y Fs(3.4)68 b(Con)l(v)l(ersions)0 2170 y Fr(Con)m(v)m(ersions)42
 b(from)d(an)m(y)j(class)f(to)h(an)m(y)g(its)f(sup)s(erclasses)g
-(\(\\base)h(classes")g(in)f(C)p Fn(++)f Fp(terminology\))i(is)f(done)0
+(\(\\base)h(classes")g(in)f(C)p Fp(++)f Fr(terminology\))i(is)f(done)0
 2295 y(automatically)-8 b(.)0 2582 y(Con)m(v)m(ersions)24
-b(from)e(the)i(C)f(built-in)h(t)m(yp)s(es)f(`)p Fn(long)p
-Fp(')g(and)h(`)p Fn(unsigned)k(long)p Fp(')23 b(are)h(pro)m(vided)f
-(for)g(the)h(classes)h Fn(cl_I)p Fp(,)0 2706 y Fn(cl_RA)p
-Fp(,)k Fn(cl_R)p Fp(,)h Fn(cl_N)f Fp(and)h Fn(cl_number)p
-Fp(.)0 2994 y(Con)m(v)m(ersions)h(from)e(the)i(C)f(built-in)g(t)m(yp)s
-(es)g(`)p Fn(int)p Fp(')g(and)g(`)p Fn(unsigned)f(int)p
-Fp(')h(are)g(pro)m(vided)g(for)h(the)f(classes)i Fn(cl_I)p
-Fp(,)0 3118 y Fn(cl_RA)p Fp(,)h Fn(cl_R)p Fp(,)g Fn(cl_N)f
-Fp(and)g Fn(cl_number)p Fp(.)47 b(Ho)m(w)m(ev)m(er,)36
+b(from)e(the)i(C)f(built-in)h(t)m(yp)s(es)f(`)p Fp(long)p
+Fr(')g(and)h(`)p Fp(unsigned)k(long)p Fr(')23 b(are)h(pro)m(vided)f
+(for)g(the)h(classes)h Fp(cl_I)p Fr(,)0 2706 y Fp(cl_RA)p
+Fr(,)k Fp(cl_R)p Fr(,)h Fp(cl_N)f Fr(and)h Fp(cl_number)p
+Fr(.)0 2994 y(Con)m(v)m(ersions)h(from)e(the)i(C)f(built-in)g(t)m(yp)s
+(es)g(`)p Fp(int)p Fr(')g(and)g(`)p Fp(unsigned)f(int)p
+Fr(')h(are)g(pro)m(vided)g(for)h(the)f(classes)i Fp(cl_I)p
+Fr(,)0 3118 y Fp(cl_RA)p Fr(,)h Fp(cl_R)p Fr(,)g Fp(cl_N)f
+Fr(and)g Fp(cl_number)p Fr(.)47 b(Ho)m(w)m(ev)m(er,)36
 b(these)e(con)m(v)m(ersions)g(emphasize)e(e\016ciency)-8
 b(.)51 b(Their)33 b(range)0 3243 y(is)d(therefore)h(limited:)49
-3530 y Fo(\000)60 b Fp(The)30 b(con)m(v)m(ersion)i(from)c(`)p
-Fn(int)p Fp(')i(w)m(orks)h(only)f(if)h(the)f(argumen)m(t)g(is)g
-Fn(<)g Fp(2)p Fn(^)p Fp(29)i(and)e Fn(>)g Fp(-2)p Fn(^)p
-Fp(29.)49 3693 y Fo(\000)60 b Fp(The)30 b(con)m(v)m(ersion)i(from)c(`)p
-Fn(unsigned)h(int)p Fp(')h(w)m(orks)g(only)g(if)h(the)f(argumen)m(t)g
-(is)h Fn(<)f Fp(2)p Fn(^)p Fp(29.)0 4018 y(In)g(a)g(declaration)i(lik)m
-(e)g(`)p Fn(cl_I)d(x)h(=)g(10;)p Fp(')g(the)g(C)p Fn(++)f
-Fp(compiler)h(is)h(able)f(to)h(do)f(the)h(con)m(v)m(ersion)g(of)g
-Fn(10)f Fp(from)e(`)p Fn(int)p Fp(')0 4143 y(to)43 b(`)p
-Fn(cl_I)p Fp(')e(at)i(compile)g(time)e(already)-8 b(.)78
+3530 y Fq(\000)60 b Fr(The)30 b(con)m(v)m(ersion)i(from)c(`)p
+Fp(int)p Fr(')i(w)m(orks)h(only)f(if)h(the)f(argumen)m(t)g(is)g
+Fp(<)g Fr(2)p Fp(^)p Fr(29)i(and)e Fp(>)g Fr(-2)p Fp(^)p
+Fr(29.)49 3693 y Fq(\000)60 b Fr(The)30 b(con)m(v)m(ersion)i(from)c(`)p
+Fp(unsigned)h(int)p Fr(')h(w)m(orks)g(only)g(if)h(the)f(argumen)m(t)g
+(is)h Fp(<)f Fr(2)p Fp(^)p Fr(29.)0 4018 y(In)g(a)g(declaration)i(lik)m
+(e)g(`)p Fp(cl_I)d(x)h(=)g(10;)p Fr(')g(the)g(C)p Fp(++)f
+Fr(compiler)h(is)h(able)f(to)h(do)f(the)h(con)m(v)m(ersion)g(of)g
+Fp(10)f Fr(from)e(`)p Fp(int)p Fr(')0 4143 y(to)43 b(`)p
+Fp(cl_I)p Fr(')e(at)i(compile)g(time)e(already)-8 b(.)78
 b(On)41 b(the)h(other)h(hand,)h(co)s(de)f(lik)m(e)g(`)p
-Fn(cl_I)30 b(x)g(=)g(1000000000;)p Fp(')39 b(is)j(in)0
+Fp(cl_I)30 b(x)g(=)g(1000000000;)p Fr(')39 b(is)j(in)0
 4267 y(error.)g(So,)31 b(if)g(y)m(ou)g(w)m(an)m(t)h(to)g(b)s(e)e(sure)g
-(that)h(an)g(`)p Fn(int)p Fp(')g(whose)f(magnitude)h(is)f(not)i(guaran)
-m(teed)g(to)f(b)s(e)f Fn(<)h Fp(2)p Fn(^)p Fp(29)h(is)0
-4392 y(correctly)j(con)m(v)m(erted)f(to)g(a)g(`)p Fn(cl_I)p
-Fp(',)f(\014rst)f(con)m(v)m(ert)j(it)f(to)g(a)f(`)p Fn(long)p
-Fp('.)48 b(Similarly)-8 b(,)34 b(if)f(a)h(large)g(`)p
-Fn(unsigned)28 b(int)p Fp(')33 b(is)0 4516 y(to)e(b)s(e)f(con)m(v)m
-(erted)i(to)f(a)g(`)p Fn(cl_I)p Fp(',)f(\014rst)f(con)m(v)m(ert)j(it)f
-(to)g(an)f(`)p Fn(unsigned)f(long)p Fp('.)0 4804 y(Con)m(v)m(ersions)h
-(from)f(the)h(C)f(built-in)h(t)m(yp)s(e)g(`)p Fn(float)p
-Fp(')f(are)h(pro)m(vided)g(for)f(the)h(classes)h Fn(cl_FF)p
-Fp(,)e Fn(cl_F)p Fp(,)g Fn(cl_R)p Fp(,)g Fn(cl_N)0 4928
-y Fp(and)h Fn(cl_number)p Fp(.)0 5215 y(Con)m(v)m(ersions)d(from)e(the)
-i(C)f(built-in)g(t)m(yp)s(e)h(`)p Fn(double)p Fp(')e(are)i(pro)m(vided)
-g(for)f(the)h(classes)g Fn(cl_DF)p Fp(,)f Fn(cl_F)p Fp(,)h
-Fn(cl_R)p Fp(,)f Fn(cl_N)0 5340 y Fp(and)k Fn(cl_number)p
-Fp(.)p eop
+(that)h(an)g(`)p Fp(int)p Fr(')g(whose)f(magnitude)h(is)f(not)i(guaran)
+m(teed)g(to)f(b)s(e)f Fp(<)h Fr(2)p Fp(^)p Fr(29)h(is)0
+4392 y(correctly)j(con)m(v)m(erted)f(to)g(a)g(`)p Fp(cl_I)p
+Fr(',)f(\014rst)f(con)m(v)m(ert)j(it)f(to)g(a)f(`)p Fp(long)p
+Fr('.)48 b(Similarly)-8 b(,)34 b(if)f(a)h(large)g(`)p
+Fp(unsigned)28 b(int)p Fr(')33 b(is)0 4516 y(to)e(b)s(e)f(con)m(v)m
+(erted)i(to)f(a)g(`)p Fp(cl_I)p Fr(',)f(\014rst)f(con)m(v)m(ert)j(it)f
+(to)g(an)f(`)p Fp(unsigned)f(long)p Fr('.)0 4804 y(Con)m(v)m(ersions)h
+(from)f(the)h(C)f(built-in)h(t)m(yp)s(e)g(`)p Fp(float)p
+Fr(')f(are)h(pro)m(vided)g(for)f(the)h(classes)h Fp(cl_FF)p
+Fr(,)e Fp(cl_F)p Fr(,)g Fp(cl_R)p Fr(,)g Fp(cl_N)0 4928
+y Fr(and)h Fp(cl_number)p Fr(.)0 5215 y(Con)m(v)m(ersions)d(from)e(the)
+i(C)f(built-in)g(t)m(yp)s(e)h(`)p Fp(double)p Fr(')e(are)i(pro)m(vided)
+g(for)f(the)h(classes)g Fp(cl_DF)p Fr(,)f Fp(cl_F)p Fr(,)h
+Fp(cl_R)p Fr(,)f Fp(cl_N)0 5340 y Fr(and)k Fp(cl_number)p
+Fr(.)p eop
 %%Page: 11 13
-11 12 bop 0 -116 a Fp(Chapter)30 b(3:)41 b(Ordinary)29
+11 12 bop 0 -116 a Fr(Chapter)30 b(3:)41 b(Ordinary)29
 b(n)m(um)m(b)s(er)f(t)m(yp)s(es)2411 b(11)0 366 y(Con)m(v)m(ersions)35
-b(from)f(`)p Fn(const)29 b(char)g(*)p Fp(')35 b(are)g(pro)m(vided)g
-(for)f(the)i(classes)f Fn(cl_I)p Fp(,)h Fn(cl_RA)p Fp(,)e
-Fn(cl_SF)p Fp(,)h Fn(cl_FF)p Fp(,)g Fn(cl_DF)p Fp(,)0
-491 y Fn(cl_LF)p Fp(,)e Fn(cl_F)p Fp(,)h Fn(cl_R)p Fp(,)g
-Fn(cl_N)p Fp(.)50 b(The)33 b(easiest)i(w)m(a)m(y)g(to)g(sp)s(ecify)e(a)
+b(from)f(`)p Fp(const)29 b(char)g(*)p Fr(')35 b(are)g(pro)m(vided)g
+(for)f(the)i(classes)f Fp(cl_I)p Fr(,)h Fp(cl_RA)p Fr(,)e
+Fp(cl_SF)p Fr(,)h Fp(cl_FF)p Fr(,)g Fp(cl_DF)p Fr(,)0
+491 y Fp(cl_LF)p Fr(,)e Fp(cl_F)p Fr(,)h Fp(cl_R)p Fr(,)g
+Fp(cl_N)p Fr(.)50 b(The)33 b(easiest)i(w)m(a)m(y)g(to)g(sp)s(ecify)e(a)
 h(v)-5 b(alue)34 b(whic)m(h)g(is)g(outside)g(of)g(the)g(range)g(of)g
-(the)0 616 y(C)p Fn(++)29 b Fp(built-in)i(t)m(yp)s(es)f(is)g(therefore)
+(the)0 616 y(C)p Fp(++)29 b Fr(built-in)i(t)m(yp)s(es)f(is)g(therefore)
 h(to)g(sp)s(ecify)f(it)h(as)g(a)g(string,)f(lik)m(e)i(this:)383
-869 y Fn(cl_I)47 b(order_of_rubiks_cube_gro)o(up)41 b(=)48
-b("43252003274489856000";)0 1143 y Fp(Note)32 b(that)f(this)f(con)m(v)m
+869 y Fp(cl_I)47 b(order_of_rubiks_cube_gro)o(up)41 b(=)48
+b("43252003274489856000";)0 1143 y Fr(Note)32 b(that)f(this)f(con)m(v)m
 (ersion)i(is)e(done)g(at)h(run)m(time,)f(not)g(at)h(compile-time.)0
-1417 y(Con)m(v)m(ersions)h(from)f Fn(cl_I)g Fp(to)h(the)g(C)g(built-in)
-g(t)m(yp)s(es)g(`)p Fn(int)p Fp(',)g(`)p Fn(unsigned)c(int)p
-Fp(',)k(`)p Fn(long)p Fp(',)g(`)p Fn(unsigned)d(long)p
-Fp(')i(are)0 1541 y(pro)m(vided)f(through)g(the)g(functions)0
-1840 y Fn(int)f(cl_I_to_int)f(\(const)g(cl_I&)h(x\))0
+1417 y(Con)m(v)m(ersions)h(from)f Fp(cl_I)g Fr(to)h(the)g(C)g(built-in)
+g(t)m(yp)s(es)g(`)p Fp(int)p Fr(',)g(`)p Fp(unsigned)c(int)p
+Fr(',)k(`)p Fp(long)p Fr(',)g(`)p Fp(unsigned)d(long)p
+Fr(')i(are)0 1541 y(pro)m(vided)f(through)g(the)g(functions)0
+1840 y Fp(int)f(cl_I_to_int)f(\(const)g(cl_I&)h(x\))0
 1965 y(unsigned)f(int)i(cl_I_to_uint)d(\(const)h(cl_I&)h(x\))0
 2089 y(long)g(cl_I_to_long)e(\(const)i(cl_I&)g(x\))0
 2214 y(unsigned)f(long)h(cl_I_to_ulong)e(\(const)i(cl_I&)g(x\))480
-2338 y Fp(Returns)37 b Fn(x)h Fp(as)h(elemen)m(t)f(of)h(the)f(C)g(t)m
-(yp)s(e)g Fi(ct)m(yp)s(e)p Fp(.)65 b(If)38 b Fn(x)f Fp(is)i(not)f
+2338 y Fr(Returns)37 b Fp(x)h Fr(as)h(elemen)m(t)f(of)h(the)f(C)g(t)m
+(yp)s(e)g Fk(ct)m(yp)s(e)p Fr(.)65 b(If)38 b Fp(x)f Fr(is)i(not)f
 (represen)m(table)h(in)f(the)g(range)h(of)480 2463 y
-Fi(ct)m(yp)s(e)p Fp(,)31 b(a)g(run)m(time)e(error)h(o)s(ccurs.)0
+Fk(ct)m(yp)s(e)p Fr(,)31 b(a)g(run)m(time)e(error)h(o)s(ccurs.)0
 2762 y(Con)m(v)m(ersions)35 b(from)e(the)h(classes)i
-Fn(cl_I)p Fp(,)e Fn(cl_RA)p Fp(,)g Fn(cl_SF)p Fp(,)g
-Fn(cl_FF)p Fp(,)g Fn(cl_DF)p Fp(,)h Fn(cl_LF)p Fp(,)f
-Fn(cl_F)f Fp(and)h Fn(cl_R)f Fp(to)i(the)f(C)0 2886 y(built-in)c(t)m
-(yp)s(es)h(`)p Fn(float)p Fp(')e(and)h(`)p Fn(double)p
-Fp(')f(are)i(pro)m(vided)f(through)f(the)i(functions)0
-3185 y Fn(float)e(cl_float_approx)d(\(const)j Fi(t)m(yp)s(e)5
-b Fn(&)30 b(x\))0 3310 y(double)f(cl_double_approx)d(\(const)i
-Fi(t)m(yp)s(e)5 b Fn(&)31 b(x\))480 3434 y Fp(Returns)25
-b(an)h(appro)m(ximation)g(of)g Fn(x)f Fp(of)h(C)g(t)m(yp)s(e)g
-Fi(ct)m(yp)s(e)p Fp(.)39 b(If)26 b Fn(abs\(x\))e Fp(is)i(to)s(o)g
+Fp(cl_I)p Fr(,)e Fp(cl_RA)p Fr(,)g Fp(cl_SF)p Fr(,)g
+Fp(cl_FF)p Fr(,)g Fp(cl_DF)p Fr(,)h Fp(cl_LF)p Fr(,)f
+Fp(cl_F)f Fr(and)h Fp(cl_R)f Fr(to)i(the)f(C)0 2886 y(built-in)c(t)m
+(yp)s(es)h(`)p Fp(float)p Fr(')e(and)h(`)p Fp(double)p
+Fr(')f(are)i(pro)m(vided)f(through)f(the)i(functions)0
+3185 y Fp(float)e(cl_float_approx)d(\(const)j Fk(t)m(yp)s(e)5
+b Fp(&)30 b(x\))0 3310 y(double)f(cl_double_approx)d(\(const)i
+Fk(t)m(yp)s(e)5 b Fp(&)31 b(x\))480 3434 y Fr(Returns)25
+b(an)h(appro)m(ximation)g(of)g Fp(x)f Fr(of)h(C)g(t)m(yp)s(e)g
+Fk(ct)m(yp)s(e)p Fr(.)39 b(If)26 b Fp(abs\(x\))e Fr(is)i(to)s(o)g
 (close)i(to)e(0)g(\(under\015o)m(w\),)480 3559 y(0)31
-b(is)f(returned.)40 b(If)30 b Fn(abs\(x\))e Fp(is)j(to)s(o)g(large)g
+b(is)f(returned.)40 b(If)30 b Fp(abs\(x\))e Fr(is)j(to)s(o)g(large)g
 (\(o)m(v)m(er\015o)m(w\),)i(an)d(IEEE)g(in\014nit)m(y)g(is)h(returned.)
 0 3858 y(Con)m(v)m(ersions)g(from)e(an)m(y)i(class)g(to)g(an)m(y)g(of)g
 (its)g(sub)s(classes)f(\(\\deriv)m(ed)h(classes")h(in)e(C)p
-Fn(++)g Fp(terminology\))h(are)g(not)0 3982 y(pro)m(vided.)40
+Fp(++)g Fr(terminology\))h(are)g(not)0 3982 y(pro)m(vided.)40
 b(Instead,)31 b(y)m(ou)f(can)h(assert)g(and)e(c)m(hec)m(k)j(that)f(a)g
 (v)-5 b(alue)31 b(b)s(elongs)f(to)h(a)f(certain)i(sub)s(class,)d(and)h
 (return)0 4107 y(it)38 b(as)f(elemen)m(t)h(of)g(that)f(class,)j(using)d
-(the)h(`)p Fn(As)p Fp(')f(and)g(`)p Fn(The)p Fp(')f(macros.)61
-b Fn(As\()p Fi(t)m(yp)s(e)5 b Fn(\)\()p Fi(v)-5 b(alue)5
-b Fn(\))37 b Fp(c)m(hec)m(ks)i(that)e Fi(v)-5 b(alue)0
-4231 y Fp(b)s(elongs)29 b(to)h Fi(t)m(yp)s(e)35 b Fp(and)29
-b(returns)f(it)i(as)f(suc)m(h.)40 b Fn(The\()p Fi(t)m(yp)s(e)5
-b Fn(\)\()p Fi(v)-5 b(alue)5 b Fn(\))29 b Fp(assumes)f(that)i
-Fi(v)-5 b(alue)35 b Fp(b)s(elongs)29 b(to)h Fi(t)m(yp)s(e)35
-b Fp(and)0 4356 y(returns)29 b(it)i(as)g(suc)m(h.)40
+(the)h(`)p Fp(As)p Fr(')f(and)g(`)p Fp(The)p Fr(')f(macros.)61
+b Fp(As\()p Fk(t)m(yp)s(e)5 b Fp(\)\()p Fk(v)-5 b(alue)5
+b Fp(\))37 b Fr(c)m(hec)m(ks)i(that)e Fk(v)-5 b(alue)0
+4231 y Fr(b)s(elongs)29 b(to)h Fk(t)m(yp)s(e)35 b Fr(and)29
+b(returns)f(it)i(as)f(suc)m(h.)40 b Fp(The\()p Fk(t)m(yp)s(e)5
+b Fp(\)\()p Fk(v)-5 b(alue)5 b Fp(\))29 b Fr(assumes)f(that)i
+Fk(v)-5 b(alue)35 b Fr(b)s(elongs)29 b(to)h Fk(t)m(yp)s(e)35
+b Fr(and)0 4356 y(returns)29 b(it)i(as)g(suc)m(h.)40
 b(It)31 b(is)f(y)m(our)g(resp)s(onsibilit)m(y)h(to)g(ensure)e(that)i
 (this)g(assumption)d(is)j(v)-5 b(alid.)41 b(Example:)383
-4609 y Fn(cl_I)47 b(x)g(=)h Fl(:)15 b(:)g(:)q Fn(;)383
+4609 y Fp(cl_I)47 b(x)g(=)h Fn(:)15 b(:)g(:)q Fp(;)383
 4713 y(if)47 b(\(!\(x)g(>=)g(0\)\))g(abort\(\);)383 4816
 y(cl_I)g(ten_x)f(=)i(The\(cl_I\)\(expt\(10,x\)\);)41
 b(//)48 b(If)f(x)g(>=)g(0,)h(10^x)e(is)h(an)h(integer.)1004
 4920 y(//)f(In)g(general,)f(it)h(would)f(be)h(a)h(rational)d(number.)p
 eop
 %%Page: 12 14
-12 13 bop 0 -116 a Fp(Chapter)30 b(4:)41 b(F)-8 b(unctions)31
-b(on)f(n)m(um)m(b)s(ers)2463 b(12)0 366 y Fm(4)80 b(F)-13
-b(unctions)29 b(on)h(n)l(um)l(b)t(ers)0 754 y Fp(Eac)m(h)i(of)f(the)g
+12 13 bop 0 -116 a Fr(Chapter)30 b(4:)41 b(F)-8 b(unctions)31
+b(on)f(n)m(um)m(b)s(ers)2463 b(12)0 366 y Fo(4)80 b(F)-13
+b(unctions)29 b(on)h(n)l(um)l(b)t(ers)0 754 y Fr(Eac)m(h)i(of)f(the)g
 (n)m(um)m(b)s(er)e(classes)i(declares)h(its)g(mathematical)f(op)s
 (erations)g(in)g(the)g(corresp)s(onding)f(include)h(\014le.)0
 879 y(F)-8 b(or)26 b(example,)g(if)g(y)m(our)f(co)s(de)g(op)s(erates)h
-(with)f(ob)5 b(jects)26 b(of)f(t)m(yp)s(e)h Fn(cl_I)p
-Fp(,)f(it)h(should)e Fn(#include)29 b(<cl_integer.h>)p
-Fp(.)0 1353 y Fq(4.1)68 b(Constructing)31 b(n)l(um)l(b)t(ers)0
-1630 y Fp(Here)g(is)f(ho)m(w)h(to)g(create)h(n)m(um)m(b)s(er)c(ob)5
-b(jects)31 b(\\from)e(nothing".)0 2071 y Fk(4.1.1)63
-b(Constructing)30 b(in)m(tegers)0 2348 y Fn(cl_I)i Fp(ob)5
+(with)f(ob)5 b(jects)26 b(of)f(t)m(yp)s(e)h Fp(cl_I)p
+Fr(,)f(it)h(should)e Fp(#include)29 b(<cl_integer.h>)p
+Fr(.)0 1353 y Fs(4.1)68 b(Constructing)31 b(n)l(um)l(b)t(ers)0
+1630 y Fr(Here)g(is)f(ho)m(w)h(to)g(create)h(n)m(um)m(b)s(er)c(ob)5
+b(jects)31 b(\\from)e(nothing".)0 2071 y Fm(4.1.1)63
+b(Constructing)30 b(in)m(tegers)0 2348 y Fp(cl_I)i Fr(ob)5
 b(jects)33 b(are)g(most)f(easily)i(constructed)f(from)e(C)i(in)m
 (tegers)h(and)e(from)f(strings.)48 b(See)32 b(Section)i(3.4)g([Con-)0
-2472 y(v)m(ersions],)d(page)g(10.)0 2913 y Fk(4.1.2)63
+2472 y(v)m(ersions],)d(page)g(10.)0 2913 y Fm(4.1.2)63
 b(Constructing)30 b(rational)h(n)m(um)m(b)s(ers)0 3190
-y Fn(cl_RA)k Fp(ob)5 b(jects)38 b(can)f(b)s(e)f(constructed)h(from)e
+y Fp(cl_RA)k Fr(ob)5 b(jects)38 b(can)f(b)s(e)f(constructed)h(from)e
 (strings.)60 b(The)37 b(syn)m(tax)g(for)f(rational)i(n)m(um)m(b)s(ers)d
 (is)i(describ)s(ed)e(in)0 3314 y(Section)40 b(5.1)h([In)m(ternal)f(and)
 e(prin)m(ted)h(represen)m(tation],)k(page)e(37.)68 b(Another)39
 b(standard)g(w)m(a)m(y)h(to)g(pro)s(duce)f(a)0 3439 y(rational)32
 b(n)m(um)m(b)s(er)c(is)i(through)g(application)h(of)g(`)p
-Fn(operator)d(/)p Fp(')j(or)f(`)p Fn(recip)p Fp(')f(on)i(in)m(tegers.)0
-3880 y Fk(4.1.3)63 b(Constructing)30 b(\015oating-p)s(oin)m(t)i(n)m(um)
-m(b)s(ers)0 4157 y Fn(cl_F)39 b Fp(ob)5 b(jects)41 b(with)f(lo)m(w)i
+Fp(operator)d(/)p Fr(')j(or)f(`)p Fp(recip)p Fr(')f(on)i(in)m(tegers.)0
+3880 y Fm(4.1.3)63 b(Constructing)30 b(\015oating-p)s(oin)m(t)i(n)m(um)
+m(b)s(ers)0 4157 y Fp(cl_F)39 b Fr(ob)5 b(jects)41 b(with)f(lo)m(w)i
 (precision)e(are)h(most)f(easily)h(constructed)g(from)e(C)h(`)p
-Fn(float)p Fp(')f(and)h(`)p Fn(double)p Fp('.)70 b(See)0
+Fp(float)p Fr(')f(and)h(`)p Fp(double)p Fr('.)70 b(See)0
 4281 y(Section)31 b(3.4)h([Con)m(v)m(ersions],)f(page)g(10.)0
-4558 y(T)-8 b(o)42 b(construct)g(a)h Fn(cl_F)d Fp(with)i(high)f
+4558 y(T)-8 b(o)42 b(construct)g(a)h Fp(cl_F)d Fr(with)i(high)f
 (precision,)k(y)m(ou)d(can)h(use)e(the)h(con)m(v)m(ersion)h(from)d(`)p
-Fn(const)30 b(char)f(*)p Fp(',)45 b(but)0 4683 y(y)m(ou)33
+Fp(const)30 b(char)f(*)p Fr(',)45 b(but)0 4683 y(y)m(ou)33
 b(ha)m(v)m(e)h(to)f(sp)s(ecify)f(the)g(desired)g(precision)h(within)f
 (the)h(string.)47 b(\(See)33 b(Section)g(5.1)g([In)m(ternal)h(and)d
 (prin)m(ted)0 4807 y(represen)m(tation],)h(page)f(37.\))42
-b(Example:)383 5063 y Fn(cl_F)47 b(e)g(=)h("0.27182818284590452353)o
+b(Example:)383 5063 y Fp(cl_F)47 b(e)g(=)h("0.27182818284590452353)o
 (6028)o(7471)o(352)o(6624)o(9775)o(724)o(7093)o(6999)o(6e+)o(1_40)o(";)
-0 5340 y Fp(will)31 b(set)g(`)p Fn(e)p Fp(')f(to)h(the)g(giv)m(en)g(v)
+0 5340 y Fr(will)31 b(set)g(`)p Fp(e)p Fr(')f(to)h(the)g(giv)m(en)g(v)
 -5 b(alue,)31 b(with)f(a)h(precision)g(of)f(40)h(decimal)g(digits.)p
 eop
 %%Page: 13 15
-13 14 bop 0 -116 a Fp(Chapter)30 b(4:)41 b(F)-8 b(unctions)31
+13 14 bop 0 -116 a Fr(Chapter)30 b(4:)41 b(F)-8 b(unctions)31
 b(on)f(n)m(um)m(b)s(ers)2463 b(13)0 366 y(The)25 b(programmatic)f(w)m
-(a)m(y)j(to)f(construct)f(a)h Fn(cl_F)e Fp(with)h(high)g(precision)h
-(is)f(through)g(the)h Fn(cl_float)d Fp(con)m(v)m(ersion)0
+(a)m(y)j(to)f(construct)f(a)h Fp(cl_F)e Fr(with)h(high)g(precision)h
+(is)f(through)g(the)h Fp(cl_float)d Fr(con)m(v)m(ersion)0
 491 y(function,)29 b(see)h(Section)g(4.11.1)i([Con)m(v)m(ersion)e(to)g
 (\015oating-p)s(oin)m(t)h(n)m(um)m(b)s(ers],)c(page)j(32.)42
 b(F)-8 b(or)30 b(example,)f(to)h(com-)0 616 y(pute)d
-Fn(e)f Fp(to)i(40)f(decimal)g(places,)i(\014rst)d(construct)h(1.0)h(to)
+Fp(e)f Fr(to)i(40)f(decimal)g(places,)i(\014rst)d(construct)h(1.0)h(to)
 g(40)f(decimal)g(places)h(and)e(then)g(apply)h(the)g(exp)s(onen)m(tial)
-0 740 y(function:)383 993 y Fn(cl_float_format_t)43 b(precision)j(=)h
+0 740 y(function:)383 993 y Fp(cl_float_format_t)43 b(precision)j(=)h
 (cl_float_format\(40\);)383 1097 y(cl_F)g(e)g(=)h
-(exp\(cl_float\(1,precisio)o(n\)\);)0 1505 y Fk(4.1.4)63
+(exp\(cl_float\(1,precisio)o(n\)\);)0 1505 y Fm(4.1.4)63
 b(Constructing)30 b(complex)g(n)m(um)m(b)s(ers)0 1779
-y Fp(Non-real)h Fn(cl_N)f Fp(ob)5 b(jects)31 b(are)g(normally)e
-(constructed)i(through)e(the)i(function)383 2032 y Fn(cl_N)47
+y Fr(Non-real)h Fp(cl_N)f Fr(ob)5 b(jects)31 b(are)g(normally)e
+(constructed)i(through)e(the)i(function)383 2032 y Fp(cl_N)47
 b(complex)f(\(const)g(cl_R&)g(realpart,)f(const)i(cl_R&)f(imagpart\))0
-2306 y Fp(See)31 b(Section)g(4.4)g([Elemen)m(tary)g(complex)f
-(functions],)g(page)h(15.)0 2748 y Fq(4.2)68 b(Elemen)l(tary)32
-b(functions)0 3022 y Fp(Eac)m(h)22 b(of)g(the)g(classes)h
-Fn(cl_N)p Fp(,)g Fn(cl_R)p Fp(,)f Fn(cl_RA)p Fp(,)g Fn(cl_I)p
-Fp(,)h Fn(cl_F)p Fp(,)g Fn(cl_SF)p Fp(,)f Fn(cl_FF)p
-Fp(,)g Fn(cl_DF)p Fp(,)g Fn(cl_LF)f Fp(de\014nes)g(the)g(follo)m(wing)0
-3146 y(op)s(erations:)0 3443 y Fi(t)m(yp)s(e)36 b Fn(operator)28
-b(+)i(\(const)e Fi(t)m(yp)s(e)5 b Fn(&,)31 b(const)d
-Fi(t)m(yp)s(e)5 b Fn(&\))480 3568 y Fp(Addition.)0 3739
-y Fi(t)m(yp)s(e)36 b Fn(operator)28 b(-)i(\(const)e Fi(t)m(yp)s(e)5
-b Fn(&,)31 b(const)d Fi(t)m(yp)s(e)5 b Fn(&\))480 3863
-y Fp(Subtraction.)0 4034 y Fi(t)m(yp)s(e)36 b Fn(operator)28
-b(-)i(\(const)e Fi(t)m(yp)s(e)5 b Fn(&\))480 4159 y Fp(Returns)29
+2306 y Fr(See)31 b(Section)g(4.4)g([Elemen)m(tary)g(complex)f
+(functions],)g(page)h(15.)0 2748 y Fs(4.2)68 b(Elemen)l(tary)32
+b(functions)0 3022 y Fr(Eac)m(h)22 b(of)g(the)g(classes)h
+Fp(cl_N)p Fr(,)g Fp(cl_R)p Fr(,)f Fp(cl_RA)p Fr(,)g Fp(cl_I)p
+Fr(,)h Fp(cl_F)p Fr(,)g Fp(cl_SF)p Fr(,)f Fp(cl_FF)p
+Fr(,)g Fp(cl_DF)p Fr(,)g Fp(cl_LF)f Fr(de\014nes)g(the)g(follo)m(wing)0
+3146 y(op)s(erations:)0 3443 y Fk(t)m(yp)s(e)36 b Fp(operator)28
+b(+)i(\(const)e Fk(t)m(yp)s(e)5 b Fp(&,)31 b(const)d
+Fk(t)m(yp)s(e)5 b Fp(&\))480 3568 y Fr(Addition.)0 3739
+y Fk(t)m(yp)s(e)36 b Fp(operator)28 b(-)i(\(const)e Fk(t)m(yp)s(e)5
+b Fp(&,)31 b(const)d Fk(t)m(yp)s(e)5 b Fp(&\))480 3863
+y Fr(Subtraction.)0 4034 y Fk(t)m(yp)s(e)36 b Fp(operator)28
+b(-)i(\(const)e Fk(t)m(yp)s(e)5 b Fp(&\))480 4159 y Fr(Returns)29
 b(the)i(negativ)m(e)i(of)d(the)h(argumen)m(t.)0 4329
-y Fi(t)m(yp)s(e)36 b Fn(plus1)29 b(\(const)f Fi(t)m(yp)s(e)5
-b Fn(&)31 b(x\))480 4454 y Fp(Returns)e Fn(x)h(+)h(1)p
-Fp(.)0 4625 y Fi(t)m(yp)s(e)36 b Fn(minus1)28 b(\(const)h
-Fi(t)m(yp)s(e)5 b Fn(&)30 b(x\))480 4749 y Fp(Returns)f
-Fn(x)h(-)h(1)p Fp(.)0 4920 y Fi(t)m(yp)s(e)36 b Fn(operator)28
-b(*)i(\(const)e Fi(t)m(yp)s(e)5 b Fn(&,)31 b(const)d
-Fi(t)m(yp)s(e)5 b Fn(&\))480 5045 y Fp(Multiplication.)0
-5215 y Fi(t)m(yp)s(e)36 b Fn(square)28 b(\(const)h Fi(t)m(yp)s(e)5
-b Fn(&)30 b(x\))480 5340 y Fp(Returns)f Fn(x)h(*)h(x)p
-Fp(.)p eop
+y Fk(t)m(yp)s(e)36 b Fp(plus1)29 b(\(const)f Fk(t)m(yp)s(e)5
+b Fp(&)31 b(x\))480 4454 y Fr(Returns)e Fp(x)h(+)h(1)p
+Fr(.)0 4625 y Fk(t)m(yp)s(e)36 b Fp(minus1)28 b(\(const)h
+Fk(t)m(yp)s(e)5 b Fp(&)30 b(x\))480 4749 y Fr(Returns)f
+Fp(x)h(-)h(1)p Fr(.)0 4920 y Fk(t)m(yp)s(e)36 b Fp(operator)28
+b(*)i(\(const)e Fk(t)m(yp)s(e)5 b Fp(&,)31 b(const)d
+Fk(t)m(yp)s(e)5 b Fp(&\))480 5045 y Fr(Multiplication.)0
+5215 y Fk(t)m(yp)s(e)36 b Fp(square)28 b(\(const)h Fk(t)m(yp)s(e)5
+b Fp(&)30 b(x\))480 5340 y Fr(Returns)f Fp(x)h(*)h(x)p
+Fr(.)p eop
 %%Page: 14 16
-14 15 bop 0 -116 a Fp(Chapter)30 b(4:)41 b(F)-8 b(unctions)31
+14 15 bop 0 -116 a Fr(Chapter)30 b(4:)41 b(F)-8 b(unctions)31
 b(on)f(n)m(um)m(b)s(ers)2463 b(14)0 366 y(Eac)m(h)39
-b(of)g(the)g(classes)h Fn(cl_N)p Fp(,)g Fn(cl_R)p Fp(,)f
-Fn(cl_RA)p Fp(,)h Fn(cl_F)p Fp(,)g Fn(cl_SF)p Fp(,)f
-Fn(cl_FF)p Fp(,)h Fn(cl_DF)p Fp(,)g Fn(cl_LF)d Fp(de\014nes)h(the)g
-(follo)m(wing)0 491 y(op)s(erations:)0 796 y Fi(t)m(yp)s(e)e
-Fn(operator)28 b(/)i(\(const)e Fi(t)m(yp)s(e)5 b Fn(&,)31
-b(const)d Fi(t)m(yp)s(e)5 b Fn(&\))480 921 y Fp(Division.)0
-1101 y Fi(t)m(yp)s(e)36 b Fn(recip)29 b(\(const)f Fi(t)m(yp)s(e)5
-b Fn(&\))480 1225 y Fp(Returns)29 b(the)i(recipro)s(cal)g(of)g(the)f
-(argumen)m(t.)0 1530 y(The)d(class)g Fn(cl_I)f Fp(do)s(esn't)h
-(de\014ne)g(a)g(`)p Fn(/)p Fp(')g(op)s(eration)h(b)s(ecause)f(in)g(the)
-g(C/C)p Fn(++)f Fp(language)j(this)e(op)s(erator,)h(applied)0
+b(of)g(the)g(classes)h Fp(cl_N)p Fr(,)g Fp(cl_R)p Fr(,)f
+Fp(cl_RA)p Fr(,)h Fp(cl_F)p Fr(,)g Fp(cl_SF)p Fr(,)f
+Fp(cl_FF)p Fr(,)h Fp(cl_DF)p Fr(,)g Fp(cl_LF)d Fr(de\014nes)h(the)g
+(follo)m(wing)0 491 y(op)s(erations:)0 796 y Fk(t)m(yp)s(e)e
+Fp(operator)28 b(/)i(\(const)e Fk(t)m(yp)s(e)5 b Fp(&,)31
+b(const)d Fk(t)m(yp)s(e)5 b Fp(&\))480 921 y Fr(Division.)0
+1101 y Fk(t)m(yp)s(e)36 b Fp(recip)29 b(\(const)f Fk(t)m(yp)s(e)5
+b Fp(&\))480 1225 y Fr(Returns)29 b(the)i(recipro)s(cal)g(of)g(the)f
+(argumen)m(t.)0 1530 y(The)d(class)g Fp(cl_I)f Fr(do)s(esn't)h
+(de\014ne)g(a)g(`)p Fp(/)p Fr(')g(op)s(eration)h(b)s(ecause)f(in)g(the)
+g(C/C)p Fp(++)f Fr(language)j(this)e(op)s(erator,)h(applied)0
 1655 y(to)j(in)m(tegral)h(t)m(yp)s(es,)f(denotes)f(the)h(`)p
-Fn(floor)p Fp(')e(or)h(`)p Fn(truncate)p Fp(')f(op)s(eration)i(\(whic)m
+Fp(floor)p Fr(')e(or)h(`)p Fp(truncate)p Fr(')f(op)s(eration)i(\(whic)m
 (h)f(one)h(of)f(these,)h(is)g(implemen)m(ta-)0 1780 y(tion)j(dep)s
 (enden)m(t\).)48 b(\(See)34 b(Section)f(4.6)i([Rounding)d(functions],)i
-(page)g(17\))g(Instead,)g Fn(cl_I)e Fp(de\014nes)g(an)h(\\exact)0
-1904 y(quotien)m(t")f(function:)0 2209 y Fn(cl_I)d(exquo)g(\(const)g
-(cl_I&)g(x,)h(const)e(cl_I&)h(y\))480 2334 y Fp(Chec)m(ks)i(that)g
-Fn(y)f Fp(divides)g Fn(x)p Fp(,)g(and)g(returns)f(the)h(quotien)m(t)i
-Fn(x)p Fp(/)p Fn(y)p Fp(.)0 2638 y(The)e(follo)m(wing)i(exp)s(onen)m
-(tiation)f(functions)f(are)h(de\014ned:)0 2943 y Fn(cl_I)e(expt_pos)f
+(page)g(17\))g(Instead,)g Fp(cl_I)e Fr(de\014nes)g(an)h(\\exact)0
+1904 y(quotien)m(t")f(function:)0 2209 y Fp(cl_I)d(exquo)g(\(const)g
+(cl_I&)g(x,)h(const)e(cl_I&)h(y\))480 2334 y Fr(Chec)m(ks)i(that)g
+Fp(y)f Fr(divides)g Fp(x)p Fr(,)g(and)g(returns)f(the)h(quotien)m(t)i
+Fp(x)p Fr(/)p Fp(y)p Fr(.)0 2638 y(The)e(follo)m(wing)i(exp)s(onen)m
+(tiation)f(functions)f(are)h(de\014ned:)0 2943 y Fp(cl_I)e(expt_pos)f
 (\(const)h(cl_I&)g(x,)h(const)f(cl_I&)g(y\))0 3068 y(cl_RA)g(expt_pos)f
 (\(const)h(cl_RA&)f(x,)i(const)f(cl_I&)g(y\))480 3193
-y(y)h Fp(m)m(ust)f(b)s(e)h Fn(>)g Fp(0.)41 b(Returns)30
-b Fn(x^y)p Fp(.)0 3373 y Fn(cl_RA)f(expt)g(\(const)g(cl_RA&)f(x,)i
+y(y)h Fr(m)m(ust)f(b)s(e)h Fp(>)g Fr(0.)41 b(Returns)30
+b Fp(x^y)p Fr(.)0 3373 y Fp(cl_RA)f(expt)g(\(const)g(cl_RA&)f(x,)i
 (const)f(cl_I&)g(y\))0 3497 y(cl_R)g(expt)g(\(const)g(cl_R&)g(x,)h
 (const)f(cl_I&)g(y\))0 3622 y(cl_N)g(expt)g(\(const)g(cl_N&)g(x,)h
-(const)f(cl_I&)g(y\))480 3747 y Fp(Returns)g Fn(x^y)p
-Fp(.)0 4052 y(Eac)m(h)39 b(of)g(the)g(classes)h Fn(cl_R)p
-Fp(,)g Fn(cl_RA)p Fp(,)f Fn(cl_I)p Fp(,)h Fn(cl_F)p Fp(,)g
-Fn(cl_SF)p Fp(,)f Fn(cl_FF)p Fp(,)h Fn(cl_DF)p Fp(,)g
-Fn(cl_LF)d Fp(de\014nes)h(the)g(follo)m(wing)0 4176 y(op)s(eration:)0
-4481 y Fi(t)m(yp)s(e)e Fn(abs)29 b(\(const)g Fi(t)m(yp)s(e)5
-b Fn(&)30 b(x\))480 4606 y Fp(Returns)f(the)i(absolute)g(v)-5
-b(alue)31 b(of)f Fn(x)p Fp(.)41 b(This)29 b(is)i Fn(x)f
-Fp(if)g Fn(x)g(>=)g(0)p Fp(,)g(and)g Fn(-x)g Fp(if)g
-Fn(x)g(<=)g(0)p Fp(.)0 4911 y(The)g(class)h Fn(cl_N)e
-Fp(implemen)m(ts)g(this)h(as)h(follo)m(ws:)0 5215 y Fn(cl_R)e(abs)h
-(\(const)e(cl_N)i(x\))480 5340 y Fp(Returns)f(the)i(absolute)g(v)-5
-b(alue)31 b(of)f Fn(x)p Fp(.)p eop
+(const)f(cl_I&)g(y\))480 3747 y Fr(Returns)g Fp(x^y)p
+Fr(.)0 4052 y(Eac)m(h)39 b(of)g(the)g(classes)h Fp(cl_R)p
+Fr(,)g Fp(cl_RA)p Fr(,)f Fp(cl_I)p Fr(,)h Fp(cl_F)p Fr(,)g
+Fp(cl_SF)p Fr(,)f Fp(cl_FF)p Fr(,)h Fp(cl_DF)p Fr(,)g
+Fp(cl_LF)d Fr(de\014nes)h(the)g(follo)m(wing)0 4176 y(op)s(eration:)0
+4481 y Fk(t)m(yp)s(e)e Fp(abs)29 b(\(const)g Fk(t)m(yp)s(e)5
+b Fp(&)30 b(x\))480 4606 y Fr(Returns)f(the)i(absolute)g(v)-5
+b(alue)31 b(of)f Fp(x)p Fr(.)41 b(This)29 b(is)i Fp(x)f
+Fr(if)g Fp(x)g(>=)g(0)p Fr(,)g(and)g Fp(-x)g Fr(if)g
+Fp(x)g(<=)g(0)p Fr(.)0 4911 y(The)g(class)h Fp(cl_N)e
+Fr(implemen)m(ts)g(this)h(as)h(follo)m(ws:)0 5215 y Fp(cl_R)e(abs)h
+(\(const)e(cl_N)i(x\))480 5340 y Fr(Returns)f(the)i(absolute)g(v)-5
+b(alue)31 b(of)f Fp(x)p Fr(.)p eop
 %%Page: 15 17
-15 16 bop 0 -116 a Fp(Chapter)30 b(4:)41 b(F)-8 b(unctions)31
+15 16 bop 0 -116 a Fr(Chapter)30 b(4:)41 b(F)-8 b(unctions)31
 b(on)f(n)m(um)m(b)s(ers)2463 b(15)0 366 y(Eac)m(h)22
-b(of)g(the)g(classes)h Fn(cl_N)p Fp(,)g Fn(cl_R)p Fp(,)f
-Fn(cl_RA)p Fp(,)g Fn(cl_I)p Fp(,)h Fn(cl_F)p Fp(,)g Fn(cl_SF)p
-Fp(,)f Fn(cl_FF)p Fp(,)g Fn(cl_DF)p Fp(,)g Fn(cl_LF)f
-Fp(de\014nes)g(the)g(follo)m(wing)0 491 y(op)s(eration:)0
-798 y Fi(t)m(yp)s(e)36 b Fn(signum)28 b(\(const)h Fi(t)m(yp)s(e)5
-b Fn(&)30 b(x\))480 922 y Fp(Returns)g(the)i(sign)f(of)g
-Fn(x)p Fp(,)h(in)f(the)g(same)g(n)m(um)m(b)s(er)e(format)h(as)i
-Fn(x)p Fp(.)42 b(This)31 b(is)g(de\014ned)f(as)i Fn(x)e(/)g(abs\(x\))
-480 1047 y Fp(if)g Fn(x)g Fp(is)h(non-zero,)g(and)f Fn(x)g
-Fp(if)g Fn(x)g Fp(is)h(zero.)41 b(If)30 b Fn(x)g Fp(is)g(real,)i(the)e
+b(of)g(the)g(classes)h Fp(cl_N)p Fr(,)g Fp(cl_R)p Fr(,)f
+Fp(cl_RA)p Fr(,)g Fp(cl_I)p Fr(,)h Fp(cl_F)p Fr(,)g Fp(cl_SF)p
+Fr(,)f Fp(cl_FF)p Fr(,)g Fp(cl_DF)p Fr(,)g Fp(cl_LF)f
+Fr(de\014nes)g(the)g(follo)m(wing)0 491 y(op)s(eration:)0
+798 y Fk(t)m(yp)s(e)36 b Fp(signum)28 b(\(const)h Fk(t)m(yp)s(e)5
+b Fp(&)30 b(x\))480 922 y Fr(Returns)g(the)i(sign)f(of)g
+Fp(x)p Fr(,)h(in)f(the)g(same)g(n)m(um)m(b)s(er)e(format)h(as)i
+Fp(x)p Fr(.)42 b(This)31 b(is)g(de\014ned)f(as)i Fp(x)e(/)g(abs\(x\))
+480 1047 y Fr(if)g Fp(x)g Fr(is)h(non-zero,)g(and)f Fp(x)g
+Fr(if)g Fp(x)g Fr(is)h(zero.)41 b(If)30 b Fp(x)g Fr(is)g(real,)i(the)e
 (v)-5 b(alue)31 b(is)g(either)f(0)h(or)f(1)h(or)g(-1.)0
-1531 y Fq(4.3)68 b(Elemen)l(tary)32 b(rational)g(functions)0
-1808 y Fp(Eac)m(h)f(of)g(the)f(classes)i Fn(cl_RA)p Fp(,)d
-Fn(cl_I)g Fp(de\014nes)g(the)i(follo)m(wing)h(op)s(erations:)0
-2115 y Fn(cl_I)d(numerator)f(\(const)h Fi(t)m(yp)s(e)5
-b Fn(&)30 b(x\))480 2240 y Fp(Returns)f(the)i(n)m(umerator)e(of)i
-Fn(x)p Fp(.)0 2422 y Fn(cl_I)e(denominator)f(\(const)g
-Fi(t)m(yp)s(e)5 b Fn(&)31 b(x\))480 2546 y Fp(Returns)e(the)i
-(denominator)f(of)g Fn(x)p Fp(.)0 2853 y(The)c(n)m(umerator)h(and)f
+1531 y Fs(4.3)68 b(Elemen)l(tary)32 b(rational)g(functions)0
+1808 y Fr(Eac)m(h)f(of)g(the)f(classes)i Fp(cl_RA)p Fr(,)d
+Fp(cl_I)g Fr(de\014nes)g(the)i(follo)m(wing)h(op)s(erations:)0
+2115 y Fp(cl_I)d(numerator)f(\(const)h Fk(t)m(yp)s(e)5
+b Fp(&)30 b(x\))480 2240 y Fr(Returns)f(the)i(n)m(umerator)e(of)i
+Fp(x)p Fr(.)0 2422 y Fp(cl_I)e(denominator)f(\(const)g
+Fk(t)m(yp)s(e)5 b Fp(&)31 b(x\))480 2546 y Fr(Returns)e(the)i
+(denominator)f(of)g Fp(x)p Fr(.)0 2853 y(The)c(n)m(umerator)h(and)f
 (denominator)g(of)h(a)h(rational)g(n)m(um)m(b)s(er)c(are)k(normalized)e
 (in)h(suc)m(h)g(a)g(w)m(a)m(y)h(that)g(they)f(ha)m(v)m(e)0
 2978 y(no)j(factor)i(in)e(common)e(and)i(the)h(denominator)e(is)i(p)s
-(ositiv)m(e.)0 3462 y Fq(4.4)68 b(Elemen)l(tary)32 b(complex)f
-(functions)0 3739 y Fp(The)f(class)h Fn(cl_N)e Fp(de\014nes)h(the)g
-(follo)m(wing)i(op)s(eration:)0 4046 y Fn(cl_N)d(complex)g(\(const)f
-(cl_R&)h(a,)h(const)f(cl_R&)g(b\))480 4171 y Fp(Returns)i(the)h
-(complex)f(n)m(um)m(b)s(er)f Fn(a+bi)p Fp(,)h(that)i(is,)f(the)g
-(complex)g(n)m(um)m(b)s(er)d(with)j(real)g(part)g Fn(a)g
-Fp(and)480 4295 y(imaginary)e(part)g Fn(b)p Fp(.)0 4602
-y(Eac)m(h)h(of)g(the)f(classes)i Fn(cl_N)p Fp(,)d Fn(cl_R)g
-Fp(de\014nes)h(the)g(follo)m(wing)i(op)s(erations:)0
-4909 y Fn(cl_R)d(realpart)f(\(const)h Fi(t)m(yp)s(e)5
-b Fn(&)30 b(x\))480 5033 y Fp(Returns)f(the)i(real)g(part)f(of)h
-Fn(x)p Fp(.)0 5215 y Fn(cl_R)e(imagpart)f(\(const)h Fi(t)m(yp)s(e)5
-b Fn(&)30 b(x\))480 5340 y Fp(Returns)f(the)i(imaginary)f(part)g(of)h
-Fn(x)p Fp(.)p eop
+(ositiv)m(e.)0 3462 y Fs(4.4)68 b(Elemen)l(tary)32 b(complex)f
+(functions)0 3739 y Fr(The)f(class)h Fp(cl_N)e Fr(de\014nes)h(the)g
+(follo)m(wing)i(op)s(eration:)0 4046 y Fp(cl_N)d(complex)g(\(const)f
+(cl_R&)h(a,)h(const)f(cl_R&)g(b\))480 4171 y Fr(Returns)i(the)h
+(complex)f(n)m(um)m(b)s(er)f Fp(a+bi)p Fr(,)h(that)i(is,)f(the)g
+(complex)g(n)m(um)m(b)s(er)d(with)j(real)g(part)g Fp(a)g
+Fr(and)480 4295 y(imaginary)e(part)g Fp(b)p Fr(.)0 4602
+y(Eac)m(h)h(of)g(the)f(classes)i Fp(cl_N)p Fr(,)d Fp(cl_R)g
+Fr(de\014nes)h(the)g(follo)m(wing)i(op)s(erations:)0
+4909 y Fp(cl_R)d(realpart)f(\(const)h Fk(t)m(yp)s(e)5
+b Fp(&)30 b(x\))480 5033 y Fr(Returns)f(the)i(real)g(part)f(of)h
+Fp(x)p Fr(.)0 5215 y Fp(cl_R)e(imagpart)f(\(const)h Fk(t)m(yp)s(e)5
+b Fp(&)30 b(x\))480 5340 y Fr(Returns)f(the)i(imaginary)f(part)g(of)h
+Fp(x)p Fr(.)p eop
 %%Page: 16 18
-16 17 bop 0 -116 a Fp(Chapter)30 b(4:)41 b(F)-8 b(unctions)31
-b(on)f(n)m(um)m(b)s(ers)2463 b(16)0 366 y Fi(t)m(yp)s(e)36
-b Fn(conjugate)27 b(\(const)i Fi(t)m(yp)s(e)5 b Fn(&)31
-b(x\))480 491 y Fp(Returns)e(the)i(complex)f(conjugate)i(of)e
-Fn(x)p Fp(.)0 795 y(W)-8 b(e)32 b(ha)m(v)m(e)f(the)g(relations)180
-1071 y Fn(x)f(=)g(complex\(realpart\(x\),)25 b(imagpart\(x\)\))180
+16 17 bop 0 -116 a Fr(Chapter)30 b(4:)41 b(F)-8 b(unctions)31
+b(on)f(n)m(um)m(b)s(ers)2463 b(16)0 366 y Fk(t)m(yp)s(e)36
+b Fp(conjugate)27 b(\(const)i Fk(t)m(yp)s(e)5 b Fp(&)31
+b(x\))480 491 y Fr(Returns)e(the)i(complex)f(conjugate)i(of)e
+Fp(x)p Fr(.)0 795 y(W)-8 b(e)32 b(ha)m(v)m(e)f(the)g(relations)180
+1071 y Fp(x)f(=)g(complex\(realpart\(x\),)25 b(imagpart\(x\)\))180
 1223 y(conjugate\(x\))i(=)j(complex\(realpart\(x\),)25
-b(-imagpart\(x\)\))0 1693 y Fq(4.5)68 b(Comparisons)0
-1969 y Fp(Eac)m(h)22 b(of)g(the)g(classes)h Fn(cl_N)p
-Fp(,)g Fn(cl_R)p Fp(,)f Fn(cl_RA)p Fp(,)g Fn(cl_I)p Fp(,)h
-Fn(cl_F)p Fp(,)g Fn(cl_SF)p Fp(,)f Fn(cl_FF)p Fp(,)g
-Fn(cl_DF)p Fp(,)g Fn(cl_LF)f Fp(de\014nes)g(the)g(follo)m(wing)0
-2094 y(op)s(erations:)0 2397 y Fn(bool)29 b(operator)f(==)i(\(const)f
-Fi(t)m(yp)s(e)5 b Fn(&,)30 b(const)f Fi(t)m(yp)s(e)5
-b Fn(&\))0 2522 y(bool)29 b(operator)f(!=)i(\(const)f
-Fi(t)m(yp)s(e)5 b Fn(&,)30 b(const)f Fi(t)m(yp)s(e)5
-b Fn(&\))480 2646 y Fp(Comparison,)29 b(as)i(in)f(C)g(and)f(C)p
-Fn(++)p Fp(.)0 2825 y Fn(uint32)g(cl_equal_hashcode)c(\(const)k
-Fi(t)m(yp)s(e)5 b Fn(&\))480 2950 y Fp(Returns)31 b(a)h(32-bit)i(hash)d
+b(-imagpart\(x\)\))0 1693 y Fs(4.5)68 b(Comparisons)0
+1969 y Fr(Eac)m(h)22 b(of)g(the)g(classes)h Fp(cl_N)p
+Fr(,)g Fp(cl_R)p Fr(,)f Fp(cl_RA)p Fr(,)g Fp(cl_I)p Fr(,)h
+Fp(cl_F)p Fr(,)g Fp(cl_SF)p Fr(,)f Fp(cl_FF)p Fr(,)g
+Fp(cl_DF)p Fr(,)g Fp(cl_LF)f Fr(de\014nes)g(the)g(follo)m(wing)0
+2094 y(op)s(erations:)0 2397 y Fp(bool)29 b(operator)f(==)i(\(const)f
+Fk(t)m(yp)s(e)5 b Fp(&,)30 b(const)f Fk(t)m(yp)s(e)5
+b Fp(&\))0 2522 y(bool)29 b(operator)f(!=)i(\(const)f
+Fk(t)m(yp)s(e)5 b Fp(&,)30 b(const)f Fk(t)m(yp)s(e)5
+b Fp(&\))480 2646 y Fr(Comparison,)29 b(as)i(in)f(C)g(and)f(C)p
+Fp(++)p Fr(.)0 2825 y Fp(uint32)g(cl_equal_hashcode)c(\(const)k
+Fk(t)m(yp)s(e)5 b Fp(&\))480 2950 y Fr(Returns)31 b(a)h(32-bit)i(hash)d
 (co)s(de)h(that)h(is)f(the)g(same)f(for)h(an)m(y)g(t)m(w)m(o)i(n)m(um)m
 (b)s(ers)29 b(whic)m(h)j(are)g(the)h(same)480 3075 y(according)e(to)g
-Fn(==)p Fp(.)40 b(This)29 b(hash)g(co)s(de)i(dep)s(ends)d(on)i(the)g(n)
+Fp(==)p Fr(.)40 b(This)29 b(hash)g(co)s(de)i(dep)s(ends)d(on)i(the)g(n)
 m(um)m(b)s(er's)e(v)-5 b(alue,)31 b(not)f(its)g(t)m(yp)s(e)g(or)h
-(preci-)480 3199 y(sion.)0 3378 y Fn(cl_boolean)d(zerop)h(\(const)f
-Fi(t)m(yp)s(e)5 b Fn(&)31 b(x\))480 3503 y Fp(Compare)e(against)j
-(zero:)41 b Fn(x)30 b(==)g(0)0 3806 y Fp(Eac)m(h)39 b(of)g(the)g
-(classes)h Fn(cl_R)p Fp(,)g Fn(cl_RA)p Fp(,)f Fn(cl_I)p
-Fp(,)h Fn(cl_F)p Fp(,)g Fn(cl_SF)p Fp(,)f Fn(cl_FF)p
-Fp(,)h Fn(cl_DF)p Fp(,)g Fn(cl_LF)d Fp(de\014nes)h(the)g(follo)m(wing)0
-3931 y(op)s(erations:)0 4235 y Fn(cl_signean)28 b(cl_compare)f(\(const)
-i Fi(t)m(yp)s(e)5 b Fn(&)30 b(x,)g(const)f Fi(t)m(yp)s(e)5
-b Fn(&)30 b(y\))480 4359 y Fp(Compares)f Fn(x)h Fp(and)g
-Fn(y)p Fp(.)40 b(Returns)30 b Fn(+)p Fp(1)g(if)g Fn(x>y)p
-Fp(,)g(-1)h(if)g Fn(x<y)p Fp(,)e(0)i(if)f Fn(x)p Fp(=)p
-Fn(y)p Fp(.)0 4538 y Fn(bool)f(operator)f(<=)i(\(const)f
-Fi(t)m(yp)s(e)5 b Fn(&,)30 b(const)f Fi(t)m(yp)s(e)5
-b Fn(&\))0 4663 y(bool)29 b(operator)f(<)i(\(const)f
-Fi(t)m(yp)s(e)5 b Fn(&,)30 b(const)f Fi(t)m(yp)s(e)5
-b Fn(&\))0 4787 y(bool)29 b(operator)f(>=)i(\(const)f
-Fi(t)m(yp)s(e)5 b Fn(&,)30 b(const)f Fi(t)m(yp)s(e)5
-b Fn(&\))0 4912 y(bool)29 b(operator)f(>)i(\(const)f
-Fi(t)m(yp)s(e)5 b Fn(&,)30 b(const)f Fi(t)m(yp)s(e)5
-b Fn(&\))480 5036 y Fp(Comparison,)29 b(as)i(in)f(C)g(and)f(C)p
-Fn(++)p Fp(.)0 5215 y Fn(cl_boolean)f(minusp)g(\(const)h
-Fi(t)m(yp)s(e)5 b Fn(&)30 b(x\))480 5340 y Fp(Compare)f(against)j
-(zero:)41 b Fn(x)30 b(<)g(0)p eop
+(preci-)480 3199 y(sion.)0 3378 y Fp(cl_boolean)d(zerop)h(\(const)f
+Fk(t)m(yp)s(e)5 b Fp(&)31 b(x\))480 3503 y Fr(Compare)e(against)j
+(zero:)41 b Fp(x)30 b(==)g(0)0 3806 y Fr(Eac)m(h)39 b(of)g(the)g
+(classes)h Fp(cl_R)p Fr(,)g Fp(cl_RA)p Fr(,)f Fp(cl_I)p
+Fr(,)h Fp(cl_F)p Fr(,)g Fp(cl_SF)p Fr(,)f Fp(cl_FF)p
+Fr(,)h Fp(cl_DF)p Fr(,)g Fp(cl_LF)d Fr(de\014nes)h(the)g(follo)m(wing)0
+3931 y(op)s(erations:)0 4235 y Fp(cl_signean)28 b(cl_compare)f(\(const)
+i Fk(t)m(yp)s(e)5 b Fp(&)30 b(x,)g(const)f Fk(t)m(yp)s(e)5
+b Fp(&)30 b(y\))480 4359 y Fr(Compares)f Fp(x)h Fr(and)g
+Fp(y)p Fr(.)40 b(Returns)30 b Fp(+)p Fr(1)g(if)g Fp(x>y)p
+Fr(,)g(-1)h(if)g Fp(x<y)p Fr(,)e(0)i(if)f Fp(x)p Fr(=)p
+Fp(y)p Fr(.)0 4538 y Fp(bool)f(operator)f(<=)i(\(const)f
+Fk(t)m(yp)s(e)5 b Fp(&,)30 b(const)f Fk(t)m(yp)s(e)5
+b Fp(&\))0 4663 y(bool)29 b(operator)f(<)i(\(const)f
+Fk(t)m(yp)s(e)5 b Fp(&,)30 b(const)f Fk(t)m(yp)s(e)5
+b Fp(&\))0 4787 y(bool)29 b(operator)f(>=)i(\(const)f
+Fk(t)m(yp)s(e)5 b Fp(&,)30 b(const)f Fk(t)m(yp)s(e)5
+b Fp(&\))0 4912 y(bool)29 b(operator)f(>)i(\(const)f
+Fk(t)m(yp)s(e)5 b Fp(&,)30 b(const)f Fk(t)m(yp)s(e)5
+b Fp(&\))480 5036 y Fr(Comparison,)29 b(as)i(in)f(C)g(and)f(C)p
+Fp(++)p Fr(.)0 5215 y Fp(cl_boolean)f(minusp)g(\(const)h
+Fk(t)m(yp)s(e)5 b Fp(&)30 b(x\))480 5340 y Fr(Compare)f(against)j
+(zero:)41 b Fp(x)30 b(<)g(0)p eop
 %%Page: 17 19
-17 18 bop 0 -116 a Fp(Chapter)30 b(4:)41 b(F)-8 b(unctions)31
-b(on)f(n)m(um)m(b)s(ers)2463 b(17)0 366 y Fn(cl_boolean)28
-b(plusp)h(\(const)f Fi(t)m(yp)s(e)5 b Fn(&)31 b(x\))480
-491 y Fp(Compare)e(against)j(zero:)41 b Fn(x)30 b(>)g(0)0
-656 y Fi(t)m(yp)s(e)36 b Fn(max)29 b(\(const)g Fi(t)m(yp)s(e)5
-b Fn(&)30 b(x,)g(const)f Fi(t)m(yp)s(e)5 b Fn(&)30 b(y\))480
-780 y Fp(Return)g(the)g(maxim)m(um)d(of)k Fn(x)f Fp(and)g
-Fn(y)p Fp(.)0 945 y Fi(t)m(yp)s(e)36 b Fn(min)29 b(\(const)g
-Fi(t)m(yp)s(e)5 b Fn(&)30 b(x,)g(const)f Fi(t)m(yp)s(e)5
-b Fn(&)30 b(y\))480 1069 y Fp(Return)g(the)g(minim)m(um)d(of)j
-Fn(x)g Fp(and)g Fn(y)p Fp(.)0 1363 y(When)h(a)h(\015oating)g(p)s(oin)m
+17 18 bop 0 -116 a Fr(Chapter)30 b(4:)41 b(F)-8 b(unctions)31
+b(on)f(n)m(um)m(b)s(ers)2463 b(17)0 366 y Fp(cl_boolean)28
+b(plusp)h(\(const)f Fk(t)m(yp)s(e)5 b Fp(&)31 b(x\))480
+491 y Fr(Compare)e(against)j(zero:)41 b Fp(x)30 b(>)g(0)0
+656 y Fk(t)m(yp)s(e)36 b Fp(max)29 b(\(const)g Fk(t)m(yp)s(e)5
+b Fp(&)30 b(x,)g(const)f Fk(t)m(yp)s(e)5 b Fp(&)30 b(y\))480
+780 y Fr(Return)g(the)g(maxim)m(um)d(of)k Fp(x)f Fr(and)g
+Fp(y)p Fr(.)0 945 y Fk(t)m(yp)s(e)36 b Fp(min)29 b(\(const)g
+Fk(t)m(yp)s(e)5 b Fp(&)30 b(x,)g(const)f Fk(t)m(yp)s(e)5
+b Fp(&)30 b(y\))480 1069 y Fr(Return)g(the)g(minim)m(um)d(of)j
+Fp(x)g Fr(and)g Fp(y)p Fr(.)0 1363 y(When)h(a)h(\015oating)g(p)s(oin)m
 (t)f(n)m(um)m(b)s(er)e(and)h(a)i(rational)g(n)m(um)m(b)s(er)d(are)j
 (compared,)f(the)g(\015oat)h(is)f(\014rst)f(con)m(v)m(erted)j(to)0
 1488 y(a)e(rational)h(n)m(um)m(b)s(er)c(using)i(the)h(function)f
-Fn(rational)p Fp(.)39 b(Since)31 b(a)g(\015oating)g(p)s(oin)m(t)g(n)m
+Fp(rational)p Fr(.)39 b(Since)31 b(a)g(\015oating)g(p)s(oin)m(t)g(n)m
 (um)m(b)s(er)d(actually)k(represen)m(ts)0 1612 y(an)h(in)m(terv)-5
 b(al)34 b(of)g(real)g(n)m(um)m(b)s(ers,)d(the)j(result)f(migh)m(t)g(b)s
-(e)f(surprising.)48 b(F)-8 b(or)34 b(example,)g Fn
+(e)f(surprising.)48 b(F)-8 b(or)34 b(example,)g Fp
 (\(cl_F\)\(cl_R\)"1/3")26 b(==)0 1737 y(\(cl_R\)"1/3")h
-Fp(returns)i(false)i(b)s(ecause)g(there)f(is)h(no)f(\015oating)h(p)s
+Fr(returns)i(false)i(b)s(ecause)g(there)f(is)h(no)f(\015oating)h(p)s
 (oin)m(t)g(n)m(um)m(b)s(er)d(whose)i(v)-5 b(alue)31 b(is)f(exactly)i
-Fn(1/3)p Fp(.)0 2166 y Fq(4.6)68 b(Rounding)30 b(functions)0
-2440 y Fp(When)37 b(a)g(real)h(n)m(um)m(b)s(er)d(is)i(to)h(b)s(e)e(con)
+Fp(1/3)p Fr(.)0 2166 y Fs(4.6)68 b(Rounding)30 b(functions)0
+2440 y Fr(When)37 b(a)g(real)h(n)m(um)m(b)s(er)d(is)i(to)h(b)s(e)e(con)
 m(v)m(erted)j(to)e(an)g(in)m(teger,)k(there)c(is)g(no)g(\\b)s(est")g
 (rounding.)60 b(The)36 b(desired)0 2564 y(rounding)g(function)g(dep)s
 (ends)f(on)i(the)g(application.)61 b(The)36 b(Common)e(Lisp)j(and)f
 (ISO)g(Lisp)g(standards)g(o\013er)0 2689 y(four)30 b(rounding)f
-(functions:)0 2983 y Fn(floor\(x\))96 b Fp(This)30 b(is)g(the)h
-(largest)g(in)m(teger)h Fn(<)p Fp(=)p Fn(x)p Fp(.)0 3148
-y Fn(ceiling\(x\))480 3272 y Fp(This)e(is)g(the)h(smallest)f(in)m
-(teger)i Fn(>)p Fp(=)p Fn(x)p Fp(.)0 3437 y Fn(truncate\(x\))480
-3561 y Fp(Among)e(the)g(in)m(tegers)i(b)s(et)m(w)m(een)f(0)g(and)e
-Fn(x)h Fp(\(inclusiv)m(e\))i(the)f(one)g(nearest)f(to)i
-Fn(x)p Fp(.)0 3726 y Fn(round\(x\))96 b Fp(The)29 b(in)m(teger)h
-(nearest)f(to)h Fn(x)p Fp(.)40 b(If)29 b Fn(x)f Fp(is)h(exactly)i
+(functions:)0 2983 y Fp(floor\(x\))96 b Fr(This)30 b(is)g(the)h
+(largest)g(in)m(teger)h Fp(<)p Fr(=)p Fp(x)p Fr(.)0 3148
+y Fp(ceiling\(x\))480 3272 y Fr(This)e(is)g(the)h(smallest)f(in)m
+(teger)i Fp(>)p Fr(=)p Fp(x)p Fr(.)0 3437 y Fp(truncate\(x\))480
+3561 y Fr(Among)e(the)g(in)m(tegers)i(b)s(et)m(w)m(een)f(0)g(and)e
+Fp(x)h Fr(\(inclusiv)m(e\))i(the)f(one)g(nearest)f(to)i
+Fp(x)p Fr(.)0 3726 y Fp(round\(x\))96 b Fr(The)29 b(in)m(teger)h
+(nearest)f(to)h Fp(x)p Fr(.)40 b(If)29 b Fp(x)f Fr(is)h(exactly)i
 (halfw)m(a)m(y)f(b)s(et)m(w)m(een)g(t)m(w)m(o)g(in)m(tegers,)h(c)m(ho)s
 (ose)f(the)f(ev)m(en)480 3850 y(one.)0 4144 y(These)h(functions)g(ha)m
 (v)m(e)i(di\013eren)m(t)e(adv)-5 b(an)m(tages:)0 4418
-y Fn(floor)38 b Fp(and)g Fn(ceiling)g Fp(are)h(translation)h(in)m(v)-5
-b(arian)m(t:)60 b Fn(floor\(x+n\))28 b(=)i(floor\(x\))e(+)i(n)39
-b Fp(and)f Fn(ceiling\(x+n\))27 b(=)0 4543 y(ceiling\(x\))h(+)i(n)g
-Fp(for)g(ev)m(ery)h Fn(x)f Fp(and)g(ev)m(ery)h(in)m(teger)h
-Fn(n)p Fp(.)0 4817 y(On)46 b(the)h(other)g(hand,)j Fn(truncate)44
-b Fp(and)i Fn(round)f Fp(are)i(symmetric:)72 b Fn(truncate\(-x\))27
-b(=)j(-truncate\(x\))44 b Fp(and)0 4941 y Fn(round\(-x\))28
-b(=)i(-round\(x\))p Fp(,)38 b(and)g(furthermore)e Fn(round)h
-Fp(is)h(un)m(biased:)57 b(on)38 b(the)h(\\a)m(v)m(erage",)44
+y Fp(floor)38 b Fr(and)g Fp(ceiling)g Fr(are)h(translation)h(in)m(v)-5
+b(arian)m(t:)60 b Fp(floor\(x+n\))28 b(=)i(floor\(x\))e(+)i(n)39
+b Fr(and)f Fp(ceiling\(x+n\))27 b(=)0 4543 y(ceiling\(x\))h(+)i(n)g
+Fr(for)g(ev)m(ery)h Fp(x)f Fr(and)g(ev)m(ery)h(in)m(teger)h
+Fp(n)p Fr(.)0 4817 y(On)46 b(the)h(other)g(hand,)j Fp(truncate)44
+b Fr(and)i Fp(round)f Fr(are)i(symmetric:)72 b Fp(truncate\(-x\))27
+b(=)j(-truncate\(x\))44 b Fr(and)0 4941 y Fp(round\(-x\))28
+b(=)i(-round\(x\))p Fr(,)38 b(and)g(furthermore)e Fp(round)h
+Fr(is)h(un)m(biased:)57 b(on)38 b(the)h(\\a)m(v)m(erage",)44
 b(it)39 b(rounds)d(do)m(wn)0 5066 y(exactly)c(as)f(often)g(as)f(it)h
 (rounds)e(up.)0 5340 y(The)h(functions)g(are)h(related)g(lik)m(e)h
 (this:)p eop
 %%Page: 18 20
-18 19 bop 0 -116 a Fp(Chapter)30 b(4:)41 b(F)-8 b(unctions)31
-b(on)f(n)m(um)m(b)s(ers)2463 b(18)180 366 y Fn(ceiling\(m/n\))27
+18 19 bop 0 -116 a Fr(Chapter)30 b(4:)41 b(F)-8 b(unctions)31
+b(on)f(n)m(um)m(b)s(ers)2463 b(18)180 366 y Fp(ceiling\(m/n\))27
 b(=)j(floor\(\(m+n-1\)/n\))c(=)k(floor\(\(m-1\)/n\)+1)g
-Fp(for)35 b(rational)h(n)m(um)m(b)s(ers)c Fn(m/n)i Fp(\()p
-Fn(m)p Fp(,)i Fn(n)f Fp(in-)180 491 y(tegers,)d Fn(n>)p
-Fp(0\),)e(and)180 646 y Fn(truncate\(x\))d(=)j(sign\(x\))f(*)h
-(floor\(abs\(x\)\))0 957 y Fp(Eac)m(h)24 b(of)f(the)h(classes)g
-Fn(cl_R)p Fp(,)g Fn(cl_RA)p Fp(,)g Fn(cl_F)p Fp(,)f Fn(cl_SF)p
-Fp(,)h Fn(cl_FF)p Fp(,)f Fn(cl_DF)p Fp(,)h Fn(cl_LF)e
-Fp(de\014nes)g(the)i(follo)m(wing)g(op)s(erations:)0
-1268 y Fn(cl_I)29 b(floor1)g(\(const)g Fi(t)m(yp)s(e)5
-b Fn(&)30 b(x\))480 1392 y Fp(Returns)f Fn(floor\(x\))p
-Fp(.)0 1578 y Fn(cl_I)g(ceiling1)f(\(const)h Fi(t)m(yp)s(e)5
-b Fn(&)30 b(x\))480 1703 y Fp(Returns)f Fn(ceiling\(x\))p
-Fp(.)0 1889 y Fn(cl_I)g(truncate1)f(\(const)h Fi(t)m(yp)s(e)5
-b Fn(&)30 b(x\))480 2014 y Fp(Returns)f Fn(truncate\(x\))p
-Fp(.)0 2200 y Fn(cl_I)g(round1)g(\(const)g Fi(t)m(yp)s(e)5
-b Fn(&)30 b(x\))480 2324 y Fp(Returns)f Fn(round\(x\))p
-Fp(.)0 2635 y(Eac)m(h)39 b(of)g(the)g(classes)h Fn(cl_R)p
-Fp(,)g Fn(cl_RA)p Fp(,)f Fn(cl_I)p Fp(,)h Fn(cl_F)p Fp(,)g
-Fn(cl_SF)p Fp(,)f Fn(cl_FF)p Fp(,)h Fn(cl_DF)p Fp(,)g
-Fn(cl_LF)d Fp(de\014nes)h(the)g(follo)m(wing)0 2760 y(op)s(erations:)0
-3070 y Fn(cl_I)29 b(floor1)g(\(const)g Fi(t)m(yp)s(e)5
-b Fn(&)30 b(x,)g(const)f Fi(t)m(yp)s(e)5 b Fn(&)30 b(y\))480
-3195 y Fp(Returns)f Fn(floor\(x/y\))p Fp(.)0 3381 y Fn(cl_I)g(ceiling1)
-f(\(const)h Fi(t)m(yp)s(e)5 b Fn(&)30 b(x,)g(const)f
-Fi(t)m(yp)s(e)5 b Fn(&)30 b(y\))480 3505 y Fp(Returns)f
-Fn(ceiling\(x/y\))p Fp(.)0 3692 y Fn(cl_I)g(truncate1)f(\(const)h
-Fi(t)m(yp)s(e)5 b Fn(&)30 b(x,)g(const)f Fi(t)m(yp)s(e)5
-b Fn(&)30 b(y\))480 3816 y Fp(Returns)f Fn(truncate\(x/y\))p
-Fp(.)0 4002 y Fn(cl_I)g(round1)g(\(const)g Fi(t)m(yp)s(e)5
-b Fn(&)30 b(x,)g(const)f Fi(t)m(yp)s(e)5 b Fn(&)30 b(y\))480
-4127 y Fp(Returns)f Fn(round\(x/y\))p Fp(.)0 4437 y(These)41
-b(functions)g(are)h(called)h(`)p Fn(floor1)p Fp(',)g
-Fl(:)15 b(:)g(:)42 b Fp(here)g(instead)f(of)h(`)p Fn(floor)p
-Fp(',)i Fl(:)15 b(:)g(:)q Fp(,)44 b(b)s(ecause)d(on)h(some)f(systems,)0
+Fr(for)35 b(rational)h(n)m(um)m(b)s(ers)c Fp(m/n)i Fr(\()p
+Fp(m)p Fr(,)i Fp(n)f Fr(in-)180 491 y(tegers,)d Fp(n>)p
+Fr(0\),)e(and)180 646 y Fp(truncate\(x\))d(=)j(sign\(x\))f(*)h
+(floor\(abs\(x\)\))0 957 y Fr(Eac)m(h)24 b(of)f(the)h(classes)g
+Fp(cl_R)p Fr(,)g Fp(cl_RA)p Fr(,)g Fp(cl_F)p Fr(,)f Fp(cl_SF)p
+Fr(,)h Fp(cl_FF)p Fr(,)f Fp(cl_DF)p Fr(,)h Fp(cl_LF)e
+Fr(de\014nes)g(the)i(follo)m(wing)g(op)s(erations:)0
+1268 y Fp(cl_I)29 b(floor1)g(\(const)g Fk(t)m(yp)s(e)5
+b Fp(&)30 b(x\))480 1392 y Fr(Returns)f Fp(floor\(x\))p
+Fr(.)0 1578 y Fp(cl_I)g(ceiling1)f(\(const)h Fk(t)m(yp)s(e)5
+b Fp(&)30 b(x\))480 1703 y Fr(Returns)f Fp(ceiling\(x\))p
+Fr(.)0 1889 y Fp(cl_I)g(truncate1)f(\(const)h Fk(t)m(yp)s(e)5
+b Fp(&)30 b(x\))480 2014 y Fr(Returns)f Fp(truncate\(x\))p
+Fr(.)0 2200 y Fp(cl_I)g(round1)g(\(const)g Fk(t)m(yp)s(e)5
+b Fp(&)30 b(x\))480 2324 y Fr(Returns)f Fp(round\(x\))p
+Fr(.)0 2635 y(Eac)m(h)39 b(of)g(the)g(classes)h Fp(cl_R)p
+Fr(,)g Fp(cl_RA)p Fr(,)f Fp(cl_I)p Fr(,)h Fp(cl_F)p Fr(,)g
+Fp(cl_SF)p Fr(,)f Fp(cl_FF)p Fr(,)h Fp(cl_DF)p Fr(,)g
+Fp(cl_LF)d Fr(de\014nes)h(the)g(follo)m(wing)0 2760 y(op)s(erations:)0
+3070 y Fp(cl_I)29 b(floor1)g(\(const)g Fk(t)m(yp)s(e)5
+b Fp(&)30 b(x,)g(const)f Fk(t)m(yp)s(e)5 b Fp(&)30 b(y\))480
+3195 y Fr(Returns)f Fp(floor\(x/y\))p Fr(.)0 3381 y Fp(cl_I)g(ceiling1)
+f(\(const)h Fk(t)m(yp)s(e)5 b Fp(&)30 b(x,)g(const)f
+Fk(t)m(yp)s(e)5 b Fp(&)30 b(y\))480 3505 y Fr(Returns)f
+Fp(ceiling\(x/y\))p Fr(.)0 3692 y Fp(cl_I)g(truncate1)f(\(const)h
+Fk(t)m(yp)s(e)5 b Fp(&)30 b(x,)g(const)f Fk(t)m(yp)s(e)5
+b Fp(&)30 b(y\))480 3816 y Fr(Returns)f Fp(truncate\(x/y\))p
+Fr(.)0 4002 y Fp(cl_I)g(round1)g(\(const)g Fk(t)m(yp)s(e)5
+b Fp(&)30 b(x,)g(const)f Fk(t)m(yp)s(e)5 b Fp(&)30 b(y\))480
+4127 y Fr(Returns)f Fp(round\(x/y\))p Fr(.)0 4437 y(These)41
+b(functions)g(are)h(called)h(`)p Fp(floor1)p Fr(',)g
+Fn(:)15 b(:)g(:)42 b Fr(here)g(instead)f(of)h(`)p Fp(floor)p
+Fr(',)i Fn(:)15 b(:)g(:)q Fr(,)44 b(b)s(ecause)d(on)h(some)f(systems,)0
 4562 y(system)30 b(dep)s(enden)m(t)f(include)h(\014les)g(de\014ne)g(`)p
-Fn(floor)p Fp(')f(and)h(`)p Fn(ceiling)p Fp(')f(as)i(macros.)0
+Fp(floor)p Fr(')f(and)h(`)p Fp(ceiling)p Fr(')f(as)i(macros.)0
 4842 y(In)k(man)m(y)g(cases,)j(one)e(needs)g(b)s(oth)f(the)h(quotien)m
 (t)h(and)e(the)h(remainder)e(of)i(a)g(division.)57 b(It)36
 b(is)g(more)e(e\016cien)m(t)0 4966 y(to)j(compute)e(b)s(oth)g(at)i(the)
@@ -2274,829 +2548,829 @@ f(same)f(time)g(than)h(to)h(p)s(erform)c(t)m(w)m(o)k(divisions,)h(one)e
 (remainder.)59 b(The)37 b(follo)m(wing)h(functions)f(therefore)g
 (return)g(a)g(structure)g(con)m(taining)h(b)s(oth)f(the)0
 5215 y(quotien)m(t)28 b(and)e(the)h(remainder.)38 b(The)27
-b(su\016x)e(`)p Fn(2)p Fp(')i(indicates)h(the)f(n)m(um)m(b)s(er)e(of)i
+b(su\016x)e(`)p Fp(2)p Fr(')i(indicates)h(the)f(n)m(um)m(b)s(er)e(of)i
 (\\return)f(v)-5 b(alues".)40 b(The)27 b(remainder)0
 5340 y(is)j(de\014ned)g(as)g(follo)m(ws:)p eop
 %%Page: 19 21
-19 20 bop 0 -116 a Fp(Chapter)30 b(4:)41 b(F)-8 b(unctions)31
-b(on)f(n)m(um)m(b)s(ers)2463 b(19)75 366 y Fo(\017)60
-b Fp(for)30 b(the)h(computation)f(of)h Fn(quotient)d(=)i(floor\(x\))p
-Fp(,)e Fn(remainder)g(=)i(x)g(-)g(quotient)p Fp(,)75
-540 y Fo(\017)60 b Fp(for)30 b(the)h(computation)f(of)h
-Fn(quotient)d(=)i(floor\(x,y\))p Fp(,)e Fn(remainder)f(=)j(x)g(-)g
-(quotient*y)p Fp(,)0 888 y(and)g(similarly)g(for)g(the)g(other)h(three)
+19 20 bop 0 -116 a Fr(Chapter)30 b(4:)41 b(F)-8 b(unctions)31
+b(on)f(n)m(um)m(b)s(ers)2463 b(19)75 366 y Fq(\017)60
+b Fr(for)30 b(the)h(computation)f(of)h Fp(quotient)d(=)i(floor\(x\))p
+Fr(,)e Fp(remainder)g(=)i(x)g(-)g(quotient)p Fr(,)75
+540 y Fq(\017)60 b Fr(for)30 b(the)h(computation)f(of)h
+Fp(quotient)d(=)i(floor\(x,y\))p Fr(,)e Fp(remainder)f(=)j(x)g(-)g
+(quotient*y)p Fr(,)0 888 y(and)g(similarly)g(for)g(the)g(other)h(three)
 g(op)s(erations.)0 1186 y(Eac)m(h)24 b(of)f(the)h(classes)g
-Fn(cl_R)p Fp(,)g Fn(cl_RA)p Fp(,)g Fn(cl_F)p Fp(,)f Fn(cl_SF)p
-Fp(,)h Fn(cl_FF)p Fp(,)f Fn(cl_DF)p Fp(,)h Fn(cl_LF)e
-Fp(de\014nes)g(the)i(follo)m(wing)g(op)s(erations:)0
-1534 y Fn(struct)29 b Fi(t)m(yp)s(e)5 b Fn(_div_t)29
-b({)h(cl_I)f(quotient;)f Fi(t)m(yp)s(e)35 b Fn(remainder;)28
-b(};)0 1659 y Fi(t)m(yp)s(e)5 b Fn(_div_t)29 b(floor2)g(\(const)f
-Fi(t)m(yp)s(e)5 b Fn(&)31 b(x\))0 1783 y Fi(t)m(yp)s(e)5
-b Fn(_div_t)29 b(ceiling2)f(\(const)h Fi(t)m(yp)s(e)5
-b Fn(&)30 b(x\))0 1908 y Fi(t)m(yp)s(e)5 b Fn(_div_t)29
-b(truncate2)f(\(const)h Fi(t)m(yp)s(e)5 b Fn(&)30 b(x\))0
-2032 y Fi(t)m(yp)s(e)5 b Fn(_div_t)29 b(round2)g(\(const)f
-Fi(t)m(yp)s(e)5 b Fn(&)31 b(x\))0 2330 y Fp(Eac)m(h)39
-b(of)g(the)g(classes)h Fn(cl_R)p Fp(,)g Fn(cl_RA)p Fp(,)f
-Fn(cl_I)p Fp(,)h Fn(cl_F)p Fp(,)g Fn(cl_SF)p Fp(,)f Fn(cl_FF)p
-Fp(,)h Fn(cl_DF)p Fp(,)g Fn(cl_LF)d Fp(de\014nes)h(the)g(follo)m(wing)0
-2455 y(op)s(erations:)0 2803 y Fn(struct)29 b Fi(t)m(yp)s(e)5
-b Fn(_div_t)29 b({)h(cl_I)f(quotient;)f Fi(t)m(yp)s(e)35
-b Fn(remainder;)28 b(};)0 2927 y Fi(t)m(yp)s(e)5 b Fn(_div_t)29
-b(floor2)g(\(const)f Fi(t)m(yp)s(e)5 b Fn(&)31 b(x,)e(const)g
-Fi(t)m(yp)s(e)5 b Fn(&)31 b(y\))0 3052 y Fi(t)m(yp)s(e)5
-b Fn(_div_t)29 b(ceiling2)f(\(const)h Fi(t)m(yp)s(e)5
-b Fn(&)30 b(x,)g(const)f Fi(t)m(yp)s(e)5 b Fn(&)30 b(y\))0
-3176 y Fi(t)m(yp)s(e)5 b Fn(_div_t)29 b(truncate2)f(\(const)h
-Fi(t)m(yp)s(e)5 b Fn(&)30 b(x,)g(const)f Fi(t)m(yp)s(e)5
-b Fn(&)30 b(y\))0 3301 y Fi(t)m(yp)s(e)5 b Fn(_div_t)29
-b(round2)g(\(const)f Fi(t)m(yp)s(e)5 b Fn(&)31 b(x,)e(const)g
-Fi(t)m(yp)s(e)5 b Fn(&)31 b(y\))0 3599 y Fp(Sometimes,)24
+Fp(cl_R)p Fr(,)g Fp(cl_RA)p Fr(,)g Fp(cl_F)p Fr(,)f Fp(cl_SF)p
+Fr(,)h Fp(cl_FF)p Fr(,)f Fp(cl_DF)p Fr(,)h Fp(cl_LF)e
+Fr(de\014nes)g(the)i(follo)m(wing)g(op)s(erations:)0
+1534 y Fp(struct)29 b Fk(t)m(yp)s(e)5 b Fp(_div_t)29
+b({)h(cl_I)f(quotient;)f Fk(t)m(yp)s(e)35 b Fp(remainder;)28
+b(};)0 1659 y Fk(t)m(yp)s(e)5 b Fp(_div_t)29 b(floor2)g(\(const)f
+Fk(t)m(yp)s(e)5 b Fp(&)31 b(x\))0 1783 y Fk(t)m(yp)s(e)5
+b Fp(_div_t)29 b(ceiling2)f(\(const)h Fk(t)m(yp)s(e)5
+b Fp(&)30 b(x\))0 1908 y Fk(t)m(yp)s(e)5 b Fp(_div_t)29
+b(truncate2)f(\(const)h Fk(t)m(yp)s(e)5 b Fp(&)30 b(x\))0
+2032 y Fk(t)m(yp)s(e)5 b Fp(_div_t)29 b(round2)g(\(const)f
+Fk(t)m(yp)s(e)5 b Fp(&)31 b(x\))0 2330 y Fr(Eac)m(h)39
+b(of)g(the)g(classes)h Fp(cl_R)p Fr(,)g Fp(cl_RA)p Fr(,)f
+Fp(cl_I)p Fr(,)h Fp(cl_F)p Fr(,)g Fp(cl_SF)p Fr(,)f Fp(cl_FF)p
+Fr(,)h Fp(cl_DF)p Fr(,)g Fp(cl_LF)d Fr(de\014nes)h(the)g(follo)m(wing)0
+2455 y(op)s(erations:)0 2803 y Fp(struct)29 b Fk(t)m(yp)s(e)5
+b Fp(_div_t)29 b({)h(cl_I)f(quotient;)f Fk(t)m(yp)s(e)35
+b Fp(remainder;)28 b(};)0 2927 y Fk(t)m(yp)s(e)5 b Fp(_div_t)29
+b(floor2)g(\(const)f Fk(t)m(yp)s(e)5 b Fp(&)31 b(x,)e(const)g
+Fk(t)m(yp)s(e)5 b Fp(&)31 b(y\))0 3052 y Fk(t)m(yp)s(e)5
+b Fp(_div_t)29 b(ceiling2)f(\(const)h Fk(t)m(yp)s(e)5
+b Fp(&)30 b(x,)g(const)f Fk(t)m(yp)s(e)5 b Fp(&)30 b(y\))0
+3176 y Fk(t)m(yp)s(e)5 b Fp(_div_t)29 b(truncate2)f(\(const)h
+Fk(t)m(yp)s(e)5 b Fp(&)30 b(x,)g(const)f Fk(t)m(yp)s(e)5
+b Fp(&)30 b(y\))0 3301 y Fk(t)m(yp)s(e)5 b Fp(_div_t)29
+b(round2)g(\(const)f Fk(t)m(yp)s(e)5 b Fp(&)31 b(x,)e(const)g
+Fk(t)m(yp)s(e)5 b Fp(&)31 b(y\))0 3599 y Fr(Sometimes,)24
 b(one)h(w)m(an)m(ts)f(the)h(quotien)m(t)g(as)f(a)h(\015oating-p)s(oin)m
 (t)g(n)m(um)m(b)s(er)d(\(of)i(the)h(same)e(format)h(as)g(the)g(argumen)
 m(t,)0 3724 y(if)30 b(the)h(argumen)m(t)f(is)g(a)h(\015oat\))g(instead)
 g(of)f(as)h(an)f(in)m(teger.)42 b(The)30 b(pre\014x)g(`)p
-Fn(f)p Fp(')g(indicates)h(this.)0 4022 y(Eac)m(h)g(of)g(the)f(classes)i
-Fn(cl_F)p Fp(,)d Fn(cl_SF)p Fp(,)g Fn(cl_FF)p Fp(,)g
-Fn(cl_DF)p Fp(,)h Fn(cl_LF)e Fp(de\014nes)i(the)h(follo)m(wing)g(op)s
-(erations:)0 4370 y Fi(t)m(yp)s(e)36 b Fn(ffloor)28 b(\(const)h
-Fi(t)m(yp)s(e)5 b Fn(&)30 b(x\))0 4494 y Fi(t)m(yp)s(e)36
-b Fn(fceiling)28 b(\(const)g Fi(t)m(yp)s(e)5 b Fn(&)31
-b(x\))0 4619 y Fi(t)m(yp)s(e)36 b Fn(ftruncate)27 b(\(const)i
-Fi(t)m(yp)s(e)5 b Fn(&)31 b(x\))0 4743 y Fi(t)m(yp)s(e)36
-b Fn(fround)28 b(\(const)h Fi(t)m(yp)s(e)5 b Fn(&)30
-b(x\))0 5042 y Fp(and)g(similarly)g(for)g(class)h Fn(cl_R)p
-Fp(,)e(but)h(with)g(return)f(t)m(yp)s(e)i Fn(cl_F)p Fp(.)0
-5340 y(The)f(class)h Fn(cl_R)e Fp(de\014nes)h(the)g(follo)m(wing)i(op)s
+Fp(f)p Fr(')g(indicates)h(this.)0 4022 y(Eac)m(h)g(of)g(the)f(classes)i
+Fp(cl_F)p Fr(,)d Fp(cl_SF)p Fr(,)g Fp(cl_FF)p Fr(,)g
+Fp(cl_DF)p Fr(,)h Fp(cl_LF)e Fr(de\014nes)i(the)h(follo)m(wing)g(op)s
+(erations:)0 4370 y Fk(t)m(yp)s(e)36 b Fp(ffloor)28 b(\(const)h
+Fk(t)m(yp)s(e)5 b Fp(&)30 b(x\))0 4494 y Fk(t)m(yp)s(e)36
+b Fp(fceiling)28 b(\(const)g Fk(t)m(yp)s(e)5 b Fp(&)31
+b(x\))0 4619 y Fk(t)m(yp)s(e)36 b Fp(ftruncate)27 b(\(const)i
+Fk(t)m(yp)s(e)5 b Fp(&)31 b(x\))0 4743 y Fk(t)m(yp)s(e)36
+b Fp(fround)28 b(\(const)h Fk(t)m(yp)s(e)5 b Fp(&)30
+b(x\))0 5042 y Fr(and)g(similarly)g(for)g(class)h Fp(cl_R)p
+Fr(,)e(but)h(with)g(return)f(t)m(yp)s(e)i Fp(cl_F)p Fr(.)0
+5340 y(The)f(class)h Fp(cl_R)e Fr(de\014nes)h(the)g(follo)m(wing)i(op)s
 (erations:)p eop
 %%Page: 20 22
-20 21 bop 0 -116 a Fp(Chapter)30 b(4:)41 b(F)-8 b(unctions)31
-b(on)f(n)m(um)m(b)s(ers)2463 b(20)0 366 y Fn(cl_F)29
-b(ffloor)g(\(const)g Fi(t)m(yp)s(e)5 b Fn(&)30 b(x,)g(const)f
-Fi(t)m(yp)s(e)5 b Fn(&)30 b(y\))0 491 y(cl_F)f(fceiling)f(\(const)h
-Fi(t)m(yp)s(e)5 b Fn(&)30 b(x,)g(const)f Fi(t)m(yp)s(e)5
-b Fn(&)30 b(y\))0 616 y(cl_F)f(ftruncate)f(\(const)h
-Fi(t)m(yp)s(e)5 b Fn(&)30 b(x,)g(const)f Fi(t)m(yp)s(e)5
-b Fn(&)30 b(y\))0 740 y(cl_F)f(fround)g(\(const)g Fi(t)m(yp)s(e)5
-b Fn(&)30 b(x,)g(const)f Fi(t)m(yp)s(e)5 b Fn(&)30 b(y\))0
-1024 y Fp(These)25 b(functions)h(also)g(exist)h(in)e(v)m(ersions)h
+20 21 bop 0 -116 a Fr(Chapter)30 b(4:)41 b(F)-8 b(unctions)31
+b(on)f(n)m(um)m(b)s(ers)2463 b(20)0 366 y Fp(cl_F)29
+b(ffloor)g(\(const)g Fk(t)m(yp)s(e)5 b Fp(&)30 b(x,)g(const)f
+Fk(t)m(yp)s(e)5 b Fp(&)30 b(y\))0 491 y(cl_F)f(fceiling)f(\(const)h
+Fk(t)m(yp)s(e)5 b Fp(&)30 b(x,)g(const)f Fk(t)m(yp)s(e)5
+b Fp(&)30 b(y\))0 616 y(cl_F)f(ftruncate)f(\(const)h
+Fk(t)m(yp)s(e)5 b Fp(&)30 b(x,)g(const)f Fk(t)m(yp)s(e)5
+b Fp(&)30 b(y\))0 740 y(cl_F)f(fround)g(\(const)g Fk(t)m(yp)s(e)5
+b Fp(&)30 b(x,)g(const)f Fk(t)m(yp)s(e)5 b Fp(&)30 b(y\))0
+1024 y Fr(These)25 b(functions)h(also)g(exist)h(in)e(v)m(ersions)h
 (whic)m(h)g(return)e(b)s(oth)h(the)h(quotien)m(t)h(and)e(the)h
-(remainder.)38 b(The)25 b(su\016x)0 1149 y(`)p Fn(2)p
-Fp(')31 b(indicates)g(this.)0 1433 y(Eac)m(h)g(of)g(the)f(classes)i
-Fn(cl_F)p Fp(,)d Fn(cl_SF)p Fp(,)g Fn(cl_FF)p Fp(,)g
-Fn(cl_DF)p Fp(,)h Fn(cl_LF)e Fp(de\014nes)i(the)h(follo)m(wing)g(op)s
-(erations:)0 1752 y Fn(struct)e Fi(t)m(yp)s(e)5 b Fn(_fdiv_t)28
-b({)i Fi(t)m(yp)s(e)36 b Fn(quotient;)28 b Fi(t)m(yp)s(e)36
-b Fn(remainder;)27 b(};)0 1876 y Fi(t)m(yp)s(e)5 b Fn(_fdiv_t)29
-b(ffloor2)f(\(const)h Fi(t)m(yp)s(e)5 b Fn(&)30 b(x\))0
-2001 y Fi(t)m(yp)s(e)5 b Fn(_fdiv_t)29 b(fceiling2)f(\(const)g
-Fi(t)m(yp)s(e)5 b Fn(&)31 b(x\))0 2126 y Fi(t)m(yp)s(e)5
-b Fn(_fdiv_t)29 b(ftruncate2)e(\(const)i Fi(t)m(yp)s(e)5
-b Fn(&)30 b(x\))0 2250 y Fi(t)m(yp)s(e)5 b Fn(_fdiv_t)29
-b(fround2)f(\(const)h Fi(t)m(yp)s(e)5 b Fn(&)30 b(x\))0
-2534 y Fp(and)g(similarly)g(for)g(class)h Fn(cl_R)p Fp(,)e(but)h(with)g
-(quotien)m(t)i(t)m(yp)s(e)e Fn(cl_F)p Fp(.)0 2818 y(The)g(class)h
-Fn(cl_R)e Fp(de\014nes)h(the)g(follo)m(wing)i(op)s(erations:)0
-3137 y Fn(struct)d Fi(t)m(yp)s(e)5 b Fn(_fdiv_t)28 b({)i(cl_F)g
-(quotient;)d(cl_R)j(remainder;)d(};)0 3262 y Fi(t)m(yp)s(e)5
-b Fn(_fdiv_t)29 b(ffloor2)f(\(const)h Fi(t)m(yp)s(e)5
-b Fn(&)30 b(x,)g(const)f Fi(t)m(yp)s(e)5 b Fn(&)30 b(y\))0
-3386 y Fi(t)m(yp)s(e)5 b Fn(_fdiv_t)29 b(fceiling2)f(\(const)g
-Fi(t)m(yp)s(e)5 b Fn(&)31 b(x,)e(const)g Fi(t)m(yp)s(e)5
-b Fn(&)31 b(y\))0 3511 y Fi(t)m(yp)s(e)5 b Fn(_fdiv_t)29
-b(ftruncate2)e(\(const)i Fi(t)m(yp)s(e)5 b Fn(&)30 b(x,)g(const)f
-Fi(t)m(yp)s(e)5 b Fn(&)30 b(y\))0 3635 y Fi(t)m(yp)s(e)5
-b Fn(_fdiv_t)29 b(fround2)f(\(const)h Fi(t)m(yp)s(e)5
-b Fn(&)30 b(x,)g(const)f Fi(t)m(yp)s(e)5 b Fn(&)30 b(y\))0
-3920 y Fp(Other)i(applications)h(need)f(only)g(the)h(remainder)d(of)j
-(a)f(division.)47 b(The)31 b(remainder)g(of)h(`)p Fn(floor)p
-Fp(')g(and)f(`)p Fn(ffloor)p Fp(')0 4044 y(is)37 b(called)h(`)p
-Fn(mod)p Fp(')e(\(abbreviation)h(of)g(\\mo)s(dulo"\).)59
-b(The)36 b(remainder)g(`)p Fn(truncate)p Fp(')e(and)i(`)p
-Fn(ftruncate)p Fp(')f(is)i(called)0 4169 y(`)p Fn(rem)p
-Fp(')30 b(\(abbreviation)h(of)g(\\remainder"\).)75 4453
-y Fo(\017)60 b Fn(mod\(x,y\))28 b(=)i(floor2\(x,y\).remainder)25
-b(=)30 b(x)g(-)g(floor\(x/y\)*y)75 4612 y Fo(\017)60
-b Fn(rem\(x,y\))28 b(=)i(truncate2\(x,y\).remainder)24
-b(=)30 b(x)g(-)g(truncate\(x/y\)*y)0 4931 y Fp(If)g Fn(x)f
-Fp(and)h Fn(y)f Fp(are)i(b)s(oth)e Fn(>)p Fp(=)g(0,)i
-Fn(mod\(x,y\))d(=)i(rem\(x,y\))e(>=)i(0)p Fp(.)41 b(In)29
-b(general,)i Fn(mod\(x,y\))d Fp(has)i(the)g(sign)g(of)g
-Fn(y)g Fp(or)g(is)0 5056 y(zero,)h(and)f Fn(rem\(x,y\))e
-Fp(has)i(the)h(sign)f(of)h Fn(x)f Fp(or)g(is)h(zero.)0
-5340 y(The)f(classes)h Fn(cl_R)p Fp(,)f Fn(cl_I)f Fp(de\014ne)h(the)g
+(remainder.)38 b(The)25 b(su\016x)0 1149 y(`)p Fp(2)p
+Fr(')31 b(indicates)g(this.)0 1433 y(Eac)m(h)g(of)g(the)f(classes)i
+Fp(cl_F)p Fr(,)d Fp(cl_SF)p Fr(,)g Fp(cl_FF)p Fr(,)g
+Fp(cl_DF)p Fr(,)h Fp(cl_LF)e Fr(de\014nes)i(the)h(follo)m(wing)g(op)s
+(erations:)0 1752 y Fp(struct)e Fk(t)m(yp)s(e)5 b Fp(_fdiv_t)28
+b({)i Fk(t)m(yp)s(e)36 b Fp(quotient;)28 b Fk(t)m(yp)s(e)36
+b Fp(remainder;)27 b(};)0 1876 y Fk(t)m(yp)s(e)5 b Fp(_fdiv_t)29
+b(ffloor2)f(\(const)h Fk(t)m(yp)s(e)5 b Fp(&)30 b(x\))0
+2001 y Fk(t)m(yp)s(e)5 b Fp(_fdiv_t)29 b(fceiling2)f(\(const)g
+Fk(t)m(yp)s(e)5 b Fp(&)31 b(x\))0 2126 y Fk(t)m(yp)s(e)5
+b Fp(_fdiv_t)29 b(ftruncate2)e(\(const)i Fk(t)m(yp)s(e)5
+b Fp(&)30 b(x\))0 2250 y Fk(t)m(yp)s(e)5 b Fp(_fdiv_t)29
+b(fround2)f(\(const)h Fk(t)m(yp)s(e)5 b Fp(&)30 b(x\))0
+2534 y Fr(and)g(similarly)g(for)g(class)h Fp(cl_R)p Fr(,)e(but)h(with)g
+(quotien)m(t)i(t)m(yp)s(e)e Fp(cl_F)p Fr(.)0 2818 y(The)g(class)h
+Fp(cl_R)e Fr(de\014nes)h(the)g(follo)m(wing)i(op)s(erations:)0
+3137 y Fp(struct)d Fk(t)m(yp)s(e)5 b Fp(_fdiv_t)28 b({)i(cl_F)g
+(quotient;)d(cl_R)j(remainder;)d(};)0 3262 y Fk(t)m(yp)s(e)5
+b Fp(_fdiv_t)29 b(ffloor2)f(\(const)h Fk(t)m(yp)s(e)5
+b Fp(&)30 b(x,)g(const)f Fk(t)m(yp)s(e)5 b Fp(&)30 b(y\))0
+3386 y Fk(t)m(yp)s(e)5 b Fp(_fdiv_t)29 b(fceiling2)f(\(const)g
+Fk(t)m(yp)s(e)5 b Fp(&)31 b(x,)e(const)g Fk(t)m(yp)s(e)5
+b Fp(&)31 b(y\))0 3511 y Fk(t)m(yp)s(e)5 b Fp(_fdiv_t)29
+b(ftruncate2)e(\(const)i Fk(t)m(yp)s(e)5 b Fp(&)30 b(x,)g(const)f
+Fk(t)m(yp)s(e)5 b Fp(&)30 b(y\))0 3635 y Fk(t)m(yp)s(e)5
+b Fp(_fdiv_t)29 b(fround2)f(\(const)h Fk(t)m(yp)s(e)5
+b Fp(&)30 b(x,)g(const)f Fk(t)m(yp)s(e)5 b Fp(&)30 b(y\))0
+3920 y Fr(Other)i(applications)h(need)f(only)g(the)h(remainder)d(of)j
+(a)f(division.)47 b(The)31 b(remainder)g(of)h(`)p Fp(floor)p
+Fr(')g(and)f(`)p Fp(ffloor)p Fr(')0 4044 y(is)37 b(called)h(`)p
+Fp(mod)p Fr(')e(\(abbreviation)h(of)g(\\mo)s(dulo"\).)59
+b(The)36 b(remainder)g(`)p Fp(truncate)p Fr(')e(and)i(`)p
+Fp(ftruncate)p Fr(')f(is)i(called)0 4169 y(`)p Fp(rem)p
+Fr(')30 b(\(abbreviation)h(of)g(\\remainder"\).)75 4453
+y Fq(\017)60 b Fp(mod\(x,y\))28 b(=)i(floor2\(x,y\).remainder)25
+b(=)30 b(x)g(-)g(floor\(x/y\)*y)75 4612 y Fq(\017)60
+b Fp(rem\(x,y\))28 b(=)i(truncate2\(x,y\).remainder)24
+b(=)30 b(x)g(-)g(truncate\(x/y\)*y)0 4931 y Fr(If)g Fp(x)f
+Fr(and)h Fp(y)f Fr(are)i(b)s(oth)e Fp(>)p Fr(=)g(0,)i
+Fp(mod\(x,y\))d(=)i(rem\(x,y\))e(>=)i(0)p Fr(.)41 b(In)29
+b(general,)i Fp(mod\(x,y\))d Fr(has)i(the)g(sign)g(of)g
+Fp(y)g Fr(or)g(is)0 5056 y(zero,)h(and)f Fp(rem\(x,y\))e
+Fr(has)i(the)h(sign)f(of)h Fp(x)f Fr(or)g(is)h(zero.)0
+5340 y(The)f(classes)h Fp(cl_R)p Fr(,)f Fp(cl_I)f Fr(de\014ne)h(the)g
 (follo)m(wing)i(op)s(erations:)p eop
 %%Page: 21 23
-21 22 bop 0 -116 a Fp(Chapter)30 b(4:)41 b(F)-8 b(unctions)31
-b(on)f(n)m(um)m(b)s(ers)2463 b(21)0 366 y Fi(t)m(yp)s(e)36
-b Fn(mod)29 b(\(const)g Fi(t)m(yp)s(e)5 b Fn(&)30 b(x,)g(const)f
-Fi(t)m(yp)s(e)5 b Fn(&)30 b(y\))0 491 y Fi(t)m(yp)s(e)36
-b Fn(rem)29 b(\(const)g Fi(t)m(yp)s(e)5 b Fn(&)30 b(x,)g(const)f
-Fi(t)m(yp)s(e)5 b Fn(&)30 b(y\))0 906 y Fq(4.7)68 b(Ro)t(ots)0
-1180 y Fp(Eac)m(h)31 b(of)g(the)f(classes)i Fn(cl_R)p
-Fp(,)d Fn(cl_F)p Fp(,)g Fn(cl_SF)p Fp(,)h Fn(cl_FF)p
-Fp(,)f Fn(cl_DF)p Fp(,)g Fn(cl_LF)g Fp(de\014nes)g(the)i(follo)m(wing)h
-(op)s(eration:)0 1476 y Fi(t)m(yp)s(e)k Fn(sqrt)29 b(\(const)g
-Fi(t)m(yp)s(e)5 b Fn(&)30 b(x\))480 1601 y(x)35 b Fp(m)m(ust)f(b)s(e)g
-Fn(>)p Fp(=)h(0.)55 b(This)35 b(function)g(returns)e(the)j(square)f(ro)
-s(ot)g(of)g Fn(x)p Fp(,)i(normalized)d(to)i(b)s(e)f Fn(>)p
-Fp(=)f(0.)480 1725 y(If)c Fn(x)h Fp(is)g(the)g(square)f(of)h(a)g
-(rational)h(n)m(um)m(b)s(er,)d Fn(sqrt\(x\))g Fp(will)i(b)s(e)f(a)i
+21 22 bop 0 -116 a Fr(Chapter)30 b(4:)41 b(F)-8 b(unctions)31
+b(on)f(n)m(um)m(b)s(ers)2463 b(21)0 366 y Fk(t)m(yp)s(e)36
+b Fp(mod)29 b(\(const)g Fk(t)m(yp)s(e)5 b Fp(&)30 b(x,)g(const)f
+Fk(t)m(yp)s(e)5 b Fp(&)30 b(y\))0 491 y Fk(t)m(yp)s(e)36
+b Fp(rem)29 b(\(const)g Fk(t)m(yp)s(e)5 b Fp(&)30 b(x,)g(const)f
+Fk(t)m(yp)s(e)5 b Fp(&)30 b(y\))0 906 y Fs(4.7)68 b(Ro)t(ots)0
+1180 y Fr(Eac)m(h)31 b(of)g(the)f(classes)i Fp(cl_R)p
+Fr(,)d Fp(cl_F)p Fr(,)g Fp(cl_SF)p Fr(,)h Fp(cl_FF)p
+Fr(,)f Fp(cl_DF)p Fr(,)g Fp(cl_LF)g Fr(de\014nes)g(the)i(follo)m(wing)h
+(op)s(eration:)0 1476 y Fk(t)m(yp)s(e)k Fp(sqrt)29 b(\(const)g
+Fk(t)m(yp)s(e)5 b Fp(&)30 b(x\))480 1601 y(x)35 b Fr(m)m(ust)f(b)s(e)g
+Fp(>)p Fr(=)h(0.)55 b(This)35 b(function)g(returns)e(the)j(square)f(ro)
+s(ot)g(of)g Fp(x)p Fr(,)i(normalized)d(to)i(b)s(e)f Fp(>)p
+Fr(=)f(0.)480 1725 y(If)c Fp(x)h Fr(is)g(the)g(square)f(of)h(a)g
+(rational)h(n)m(um)m(b)s(er,)d Fp(sqrt\(x\))g Fr(will)i(b)s(e)f(a)i
 (rational)g(n)m(um)m(b)s(er,)d(else)i(it)h(will)480 1850
 y(return)d(a)i(\015oating-p)s(oin)m(t)h(appro)m(ximation.)0
-2146 y(The)e(classes)h Fn(cl_RA)p Fp(,)e Fn(cl_I)h Fp(de\014ne)f(the)i
-(follo)m(wing)h(op)s(eration:)0 2442 y Fn(cl_boolean)c(sqrtp)h(\(const)
-f Fi(t)m(yp)s(e)5 b Fn(&)31 b(x,)e Fi(t)m(yp)s(e)5 b
-Fn(*)31 b(root\))480 2567 y Fp(This)25 b(tests)i(whether)f
-Fn(x)g Fp(is)g(a)g(p)s(erfect)g(square.)39 b(If)26 b(so,)i(it)e
+2146 y(The)e(classes)h Fp(cl_RA)p Fr(,)e Fp(cl_I)h Fr(de\014ne)f(the)i
+(follo)m(wing)h(op)s(eration:)0 2442 y Fp(cl_boolean)c(sqrtp)h(\(const)
+f Fk(t)m(yp)s(e)5 b Fp(&)31 b(x,)e Fk(t)m(yp)s(e)5 b
+Fp(*)31 b(root\))480 2567 y Fr(This)25 b(tests)i(whether)f
+Fp(x)g Fr(is)g(a)g(p)s(erfect)g(square.)39 b(If)26 b(so,)i(it)e
 (returns)f(true)h(and)g(the)g(exact)i(square)e(ro)s(ot)480
-2691 y(in)k Fn(*root)p Fp(,)f(else)i(it)g(returns)f(false.)0
+2691 y(in)k Fp(*root)p Fr(,)f(else)i(it)g(returns)f(false.)0
 2988 y(F)-8 b(urthermore,)30 b(for)g(in)m(tegers,)i(similarly:)0
-3284 y Fn(cl_boolean)c(isqrt)h(\(const)f Fi(t)m(yp)s(e)5
-b Fn(&)31 b(x,)e Fi(t)m(yp)s(e)5 b Fn(*)31 b(root\))480
-3408 y(x)f Fp(should)g(b)s(e)g Fn(>)p Fp(=)g(0.)42 b(This)30
-b(function)h(sets)g Fn(*root)e Fp(to)i Fn(floor\(sqrt\(x\)\))c
-Fp(and)j(returns)g(the)h(same)480 3533 y(v)-5 b(alue)31
-b(as)f Fn(sqrtp)p Fp(:)40 b(the)30 b(b)s(o)s(olean)h(v)-5
-b(alue)31 b Fn(\(expt\(*root,2\))26 b(==)k(x\))p Fp(.)0
-3829 y(F)-8 b(or)31 b Fn(n)p Fp(th)f(ro)s(ots,)h(the)f(classes)i
-Fn(cl_RA)p Fp(,)d Fn(cl_I)g Fp(de\014ne)h(the)g(follo)m(wing)i(op)s
-(eration:)0 4125 y Fn(cl_boolean)c(rootp)h(\(const)f
-Fi(t)m(yp)s(e)5 b Fn(&)31 b(x,)e(const)g(cl_I&)g(n,)h
-Fi(t)m(yp)s(e)5 b Fn(*)30 b(root\))480 4250 y(x)36 b
-Fp(m)m(ust)f(b)s(e)g Fn(>)p Fp(=)g(0.)58 b Fn(n)36 b
-Fp(m)m(ust)f(b)s(e)g Fn(>)h Fp(0.)58 b(This)35 b(tests)i(whether)e
-Fn(x)h Fp(is)g(an)g Fn(n)p Fp(th)f(p)s(o)m(w)m(er)h(of)g(a)h(rational)
+3284 y Fp(cl_boolean)c(isqrt)h(\(const)f Fk(t)m(yp)s(e)5
+b Fp(&)31 b(x,)e Fk(t)m(yp)s(e)5 b Fp(*)31 b(root\))480
+3408 y(x)f Fr(should)g(b)s(e)g Fp(>)p Fr(=)g(0.)42 b(This)30
+b(function)h(sets)g Fp(*root)e Fr(to)i Fp(floor\(sqrt\(x\)\))c
+Fr(and)j(returns)g(the)h(same)480 3533 y(v)-5 b(alue)31
+b(as)f Fp(sqrtp)p Fr(:)40 b(the)30 b(b)s(o)s(olean)h(v)-5
+b(alue)31 b Fp(\(expt\(*root,2\))26 b(==)k(x\))p Fr(.)0
+3829 y(F)-8 b(or)31 b Fp(n)p Fr(th)f(ro)s(ots,)h(the)f(classes)i
+Fp(cl_RA)p Fr(,)d Fp(cl_I)g Fr(de\014ne)h(the)g(follo)m(wing)i(op)s
+(eration:)0 4125 y Fp(cl_boolean)c(rootp)h(\(const)f
+Fk(t)m(yp)s(e)5 b Fp(&)31 b(x,)e(const)g(cl_I&)g(n,)h
+Fk(t)m(yp)s(e)5 b Fp(*)30 b(root\))480 4250 y(x)36 b
+Fr(m)m(ust)f(b)s(e)g Fp(>)p Fr(=)g(0.)58 b Fp(n)36 b
+Fr(m)m(ust)f(b)s(e)g Fp(>)h Fr(0.)58 b(This)35 b(tests)i(whether)e
+Fp(x)h Fr(is)g(an)g Fp(n)p Fr(th)f(p)s(o)m(w)m(er)h(of)g(a)h(rational)
 480 4374 y(n)m(um)m(b)s(er.)h(If)30 b(so,)h(it)g(returns)e(true)h(and)g
-(the)h(exact)h(ro)s(ot)e(in)g Fn(*root)p Fp(,)g(else)h(it)g(returns)e
+(the)h(exact)h(ro)s(ot)e(in)g Fp(*root)p Fr(,)g(else)h(it)g(returns)e
 (false.)0 4670 y(The)h(only)g(square)g(ro)s(ot)h(function)f(whic)m(h)g
 (accepts)i(negativ)m(e)h(n)m(um)m(b)s(ers)28 b(is)i(the)h(one)f(for)g
-(class)h Fn(cl_N)p Fp(:)0 4966 y Fn(cl_N)e(sqrt)g(\(const)g(cl_N&)g
-(z\))480 5091 y Fp(Returns)38 b(the)i(square)f(ro)s(ot)h(of)f
-Fn(z)p Fp(,)j(as)d(de\014ned)g(b)m(y)g(the)g(form)m(ula)g
-Fn(sqrt\(z\))28 b(=)i(exp\(log\(z\)/2\))p Fp(.)480 5215
+(class)h Fp(cl_N)p Fr(:)0 4966 y Fp(cl_N)e(sqrt)g(\(const)g(cl_N&)g
+(z\))480 5091 y Fr(Returns)38 b(the)i(square)f(ro)s(ot)h(of)f
+Fp(z)p Fr(,)j(as)d(de\014ned)g(b)m(y)g(the)g(form)m(ula)g
+Fp(sqrt\(z\))28 b(=)i(exp\(log\(z\)/2\))p Fr(.)480 5215
 y(Con)m(v)m(ersion)44 b(to)g(a)f(\015oating-p)s(oin)m(t)i(t)m(yp)s(e)e
 (or)h(to)g(a)f(complex)g(n)m(um)m(b)s(er)e(are)j(done)f(if)g(necessary)
 -8 b(.)480 5340 y(The)31 b(range)h(of)g(the)g(result)g(is)g(the)g(righ)
-m(t)g(half)g(plane)g Fn(realpart\(sqrt\(z\)\))25 b(>=)30
-b(0)h Fp(including)h(the)p eop
+m(t)g(half)g(plane)g Fp(realpart\(sqrt\(z\)\))25 b(>=)30
+b(0)h Fr(including)h(the)p eop
 %%Page: 22 24
-22 23 bop 0 -116 a Fp(Chapter)30 b(4:)41 b(F)-8 b(unctions)31
+22 23 bop 0 -116 a Fr(Chapter)30 b(4:)41 b(F)-8 b(unctions)31
 b(on)f(n)m(um)m(b)s(ers)2463 b(22)480 366 y(p)s(ositiv)m(e)35
 b(imaginary)e(axis)h(and)g(0,)h(but)e(excluding)h(the)g(negativ)m(e)i
 (imaginary)d(axis.)52 b(The)33 b(result)480 491 y(is)d(an)h(exact)h(n)m
-(um)m(b)s(er)c(only)i(if)g Fn(z)g Fp(is)h(an)f(exact)i(n)m(um)m(b)s
-(er.)0 930 y Fq(4.8)68 b(T)-11 b(ranscenden)l(tal)31
-b(functions)0 1204 y Fp(The)c(transcenden)m(tal)h(functions)e(return)h
+(um)m(b)s(er)c(only)i(if)g Fp(z)g Fr(is)h(an)f(exact)i(n)m(um)m(b)s
+(er.)0 930 y Fs(4.8)68 b(T)-11 b(ranscenden)l(tal)31
+b(functions)0 1204 y Fr(The)c(transcenden)m(tal)h(functions)e(return)h
 (an)g(exact)h(result)f(if)g(the)h(argumen)m(t)e(is)i(exact)g(and)f(the)
 g(result)g(is)g(exact)0 1329 y(as)k(w)m(ell.)44 b(Otherwise)31
 b(they)g(m)m(ust)f(return)g(inexact)i(n)m(um)m(b)s(ers)d(ev)m(en)j(if)f
 (the)g(argumen)m(t)g(is)g(exact.)44 b(F)-8 b(or)32 b(example,)0
-1453 y Fn(cos\(0\))d(=)h(1)g Fp(returns)f(the)h(rational)i(n)m(um)m(b)s
-(er)c Fn(1)p Fp(.)0 1860 y Fk(4.8.1)63 b(Exp)s(onen)m(tial)30
-b(and)g(logarithmic)g(functions)0 2156 y Fn(cl_R)f(exp)h(\(const)e
+1453 y Fp(cos\(0\))d(=)h(1)g Fr(returns)f(the)h(rational)i(n)m(um)m(b)s
+(er)c Fp(1)p Fr(.)0 1860 y Fm(4.8.1)63 b(Exp)s(onen)m(tial)30
+b(and)g(logarithmic)g(functions)0 2156 y Fp(cl_R)f(exp)h(\(const)e
 (cl_R&)h(x\))0 2281 y(cl_N)g(exp)h(\(const)e(cl_N&)h(x\))480
-2405 y Fp(Returns)j(the)h(exp)s(onen)m(tial)h(function)f(of)g
-Fn(x)p Fp(.)48 b(This)32 b(is)h Fn(e^x)f Fp(where)g Fn(e)h
-Fp(is)g(the)g(base)g(of)g(the)g(natural)480 2530 y(logarithms.)41
+2405 y Fr(Returns)j(the)h(exp)s(onen)m(tial)h(function)f(of)g
+Fp(x)p Fr(.)48 b(This)32 b(is)h Fp(e^x)f Fr(where)g Fp(e)h
+Fr(is)g(the)g(base)g(of)g(the)g(natural)480 2530 y(logarithms.)41
 b(The)29 b(range)i(of)g(the)f(result)h(is)f(the)h(en)m(tire)g(complex)f
-(plane)g(excluding)h(0.)0 2700 y Fn(cl_R)e(ln)h(\(const)f(cl_R&)g(x\))
-480 2824 y(x)h Fp(m)m(ust)f(b)s(e)h Fn(>)g Fp(0.)41 b(Returns)30
-b(the)g(\(natural\))h(logarithm)g(of)f(x.)0 2994 y Fn(cl_N)f(log)h
-(\(const)e(cl_N&)h(x\))480 3119 y Fp(Returns)43 b(the)i(\(natural\))f
-(logarithm)h(of)f(x.)82 b(If)44 b Fn(x)f Fp(is)i(real)f(and)g(p)s
-(ositiv)m(e,)49 b(this)44 b(is)g Fn(ln\(x\))p Fp(.)81
-b(In)480 3243 y(general,)34 b Fn(log\(x\))29 b(=)h(log\(abs\(x\)\))d(+)
-j(i*phase\(x\))p Fp(.)45 b(The)32 b(range)g(of)h(the)g(result)f(is)h
+(plane)g(excluding)h(0.)0 2700 y Fp(cl_R)e(ln)h(\(const)f(cl_R&)g(x\))
+480 2824 y(x)h Fr(m)m(ust)f(b)s(e)h Fp(>)g Fr(0.)41 b(Returns)30
+b(the)g(\(natural\))h(logarithm)g(of)f(x.)0 2994 y Fp(cl_N)f(log)h
+(\(const)e(cl_N&)h(x\))480 3119 y Fr(Returns)43 b(the)i(\(natural\))f
+(logarithm)h(of)f(x.)82 b(If)44 b Fp(x)f Fr(is)i(real)f(and)g(p)s
+(ositiv)m(e,)49 b(this)44 b(is)g Fp(ln\(x\))p Fr(.)81
+b(In)480 3243 y(general,)34 b Fp(log\(x\))29 b(=)h(log\(abs\(x\)\))d(+)
+j(i*phase\(x\))p Fr(.)45 b(The)32 b(range)g(of)h(the)g(result)f(is)h
 (the)f(strip)g(in)480 3368 y(the)f(complex)f(plane)g
-Fn(-pi)g(<)g(imagpart\(log\(x\)\))25 b(<=)30 b(pi)p Fp(.)0
-3538 y Fn(cl_R)f(phase)g(\(const)g(cl_N&)g(x\))480 3662
-y Fp(Returns)38 b(the)h(angle)g(part)g(of)g Fn(x)f Fp(in)g(its)h(p)s
+Fp(-pi)g(<)g(imagpart\(log\(x\)\))25 b(<=)30 b(pi)p Fr(.)0
+3538 y Fp(cl_R)f(phase)g(\(const)g(cl_N&)g(x\))480 3662
+y Fr(Returns)38 b(the)h(angle)g(part)g(of)g Fp(x)f Fr(in)g(its)h(p)s
 (olar)g(represen)m(tation)g(as)g(a)g(complex)g(n)m(um)m(b)s(er.)63
-b(That)480 3787 y(is,)34 b Fn(phase\(x\))28 b(=)i
-(atan\(realpart\(x\),imagpart)o(\(x\)\))o Fp(.)43 b(This)33
+b(That)480 3787 y(is,)34 b Fp(phase\(x\))28 b(=)i
+(atan\(realpart\(x\),imagpart)o(\(x\)\))o Fr(.)43 b(This)33
 b(is)g(also)h(the)f(imaginary)g(part)g(of)480 3911 y
-Fn(log\(x\))p Fp(.)41 b(The)31 b(range)g(of)g(the)h(result)f(is)g(the)g
-(in)m(terv)-5 b(al)32 b Fn(-pi)e(<)g(phase\(x\))e(<=)i(pi)p
-Fp(.)42 b(The)31 b(result)g(will)480 4036 y(b)s(e)f(an)g(exact)i(n)m
-(um)m(b)s(er)c(only)i(if)h Fn(zerop\(x\))d Fp(or)i(if)h
-Fn(x)f Fp(is)g(real)h(and)f(p)s(ositiv)m(e.)0 4206 y
-Fn(cl_R)f(log)h(\(const)e(cl_R&)h(a,)h(const)f(cl_R&)g(b\))480
-4330 y(a)j Fp(and)g Fn(b)g Fp(m)m(ust)g(b)s(e)g Fn(>)g
-Fp(0.)48 b(Returns)31 b(the)i(logarithm)g(of)f Fn(a)g
-Fp(with)h(resp)s(ect)f(to)i(base)e Fn(b)p Fp(.)47 b Fn(log\(a,b\))28
-b(=)480 4455 y(ln\(a\)/ln\(b\))p Fp(.)38 b(The)30 b(result)g(can)g(b)s
-(e)g(exact)i(only)f(if)f Fn(a)g(=)g(1)g Fp(or)g(if)h
-Fn(a)f Fp(and)g Fn(b)g Fp(are)g(b)s(oth)g(rational.)0
-4624 y Fn(cl_N)f(log)h(\(const)e(cl_N&)h(a,)h(const)f(cl_N&)g(b\))480
-4749 y Fp(Returns)g(the)i(logarithm)f(of)h Fn(a)f Fp(with)g(resp)s(ect)
-g(to)i(base)e Fn(b)p Fp(.)40 b Fn(log\(a,b\))29 b(=)h
-(log\(a\)/log\(b\))p Fp(.)0 4919 y Fn(cl_N)f(expt)g(\(const)g(cl_N&)g
-(x,)h(const)f(cl_N&)g(y\))480 5043 y Fp(Exp)s(onen)m(tiation:)42
-b(Returns)29 b Fn(x^y)g(=)h(exp\(y*log\(x\)\))p Fp(.)0
+Fp(log\(x\))p Fr(.)41 b(The)31 b(range)g(of)g(the)h(result)f(is)g(the)g
+(in)m(terv)-5 b(al)32 b Fp(-pi)e(<)g(phase\(x\))e(<=)i(pi)p
+Fr(.)42 b(The)31 b(result)g(will)480 4036 y(b)s(e)f(an)g(exact)i(n)m
+(um)m(b)s(er)c(only)i(if)h Fp(zerop\(x\))d Fr(or)i(if)h
+Fp(x)f Fr(is)g(real)h(and)f(p)s(ositiv)m(e.)0 4206 y
+Fp(cl_R)f(log)h(\(const)e(cl_R&)h(a,)h(const)f(cl_R&)g(b\))480
+4330 y(a)j Fr(and)g Fp(b)g Fr(m)m(ust)g(b)s(e)g Fp(>)g
+Fr(0.)48 b(Returns)31 b(the)i(logarithm)g(of)f Fp(a)g
+Fr(with)h(resp)s(ect)f(to)i(base)e Fp(b)p Fr(.)47 b Fp(log\(a,b\))28
+b(=)480 4455 y(ln\(a\)/ln\(b\))p Fr(.)38 b(The)30 b(result)g(can)g(b)s
+(e)g(exact)i(only)f(if)f Fp(a)g(=)g(1)g Fr(or)g(if)h
+Fp(a)f Fr(and)g Fp(b)g Fr(are)g(b)s(oth)g(rational.)0
+4624 y Fp(cl_N)f(log)h(\(const)e(cl_N&)h(a,)h(const)f(cl_N&)g(b\))480
+4749 y Fr(Returns)g(the)i(logarithm)f(of)h Fp(a)f Fr(with)g(resp)s(ect)
+g(to)i(base)e Fp(b)p Fr(.)40 b Fp(log\(a,b\))29 b(=)h
+(log\(a\)/log\(b\))p Fr(.)0 4919 y Fp(cl_N)f(expt)g(\(const)g(cl_N&)g
+(x,)h(const)f(cl_N&)g(y\))480 5043 y Fr(Exp)s(onen)m(tiation:)42
+b(Returns)29 b Fp(x^y)g(=)h(exp\(y*log\(x\)\))p Fr(.)0
 5340 y(The)g(constan)m(t)i(e)e(=)g(exp\(1\))i(=)e(2.71828)p
-Fl(:)15 b(:)g(:)34 b Fp(is)c(returned)g(b)m(y)g(the)g(follo)m(wing)i
+Fn(:)15 b(:)g(:)34 b Fr(is)c(returned)g(b)m(y)g(the)g(follo)m(wing)i
 (functions:)p eop
 %%Page: 23 25
-23 24 bop 0 -116 a Fp(Chapter)30 b(4:)41 b(F)-8 b(unctions)31
-b(on)f(n)m(um)m(b)s(ers)2463 b(23)0 366 y Fn(cl_F)29
-b(cl_exp1)g(\(cl_float_format_t)c(f\))480 491 y Fp(Returns)k(e)i(as)g
-(a)g(\015oat)g(of)f(format)g Fn(f)p Fp(.)0 657 y Fn(cl_F)f(cl_exp1)g
-(\(const)f(cl_F&)h(y\))480 782 y Fp(Returns)g(e)i(in)f(the)h(\015oat)g
-(format)f(of)g Fn(y)p Fp(.)0 948 y Fn(cl_F)f(cl_exp1)g(\(void\))480
-1073 y Fp(Returns)g(e)i(as)g(a)g(\015oat)g(of)f(format)g
-Fn(cl_default_float_format)p Fp(.)0 1472 y Fk(4.8.2)63
-b(T)-10 b(rigonometric)30 b(functions)0 1767 y Fn(cl_R)f(sin)h(\(const)
-e(cl_R&)h(x\))480 1892 y Fp(Returns)g Fn(sin\(x\))p Fp(.)39
+23 24 bop 0 -116 a Fr(Chapter)30 b(4:)41 b(F)-8 b(unctions)31
+b(on)f(n)m(um)m(b)s(ers)2463 b(23)0 366 y Fp(cl_F)29
+b(cl_exp1)g(\(cl_float_format_t)c(f\))480 491 y Fr(Returns)k(e)i(as)g
+(a)g(\015oat)g(of)f(format)g Fp(f)p Fr(.)0 657 y Fp(cl_F)f(cl_exp1)g
+(\(const)f(cl_F&)h(y\))480 782 y Fr(Returns)g(e)i(in)f(the)h(\015oat)g
+(format)f(of)g Fp(y)p Fr(.)0 948 y Fp(cl_F)f(cl_exp1)g(\(void\))480
+1073 y Fr(Returns)g(e)i(as)g(a)g(\015oat)g(of)f(format)g
+Fp(cl_default_float_format)p Fr(.)0 1472 y Fm(4.8.2)63
+b(T)-10 b(rigonometric)30 b(functions)0 1767 y Fp(cl_R)f(sin)h(\(const)
+e(cl_R&)h(x\))480 1892 y Fr(Returns)g Fp(sin\(x\))p Fr(.)39
 b(The)30 b(range)h(of)g(the)f(result)g(is)h(the)f(in)m(terv)-5
-b(al)32 b Fn(-1)e(<=)f(sin\(x\))g(<=)h(1)p Fp(.)0 2058
-y Fn(cl_N)f(sin)h(\(const)e(cl_N&)h(z\))480 2183 y Fp(Returns)g
-Fn(sin\(z\))p Fp(.)39 b(The)30 b(range)h(of)g(the)f(result)g(is)h(the)f
-(en)m(tire)i(complex)e(plane.)0 2349 y Fn(cl_R)f(cos)h(\(const)e(cl_R&)
-h(x\))480 2474 y Fp(Returns)g Fn(cos\(x\))p Fp(.)39 b(The)30
+b(al)32 b Fp(-1)e(<=)f(sin\(x\))g(<=)h(1)p Fr(.)0 2058
+y Fp(cl_N)f(sin)h(\(const)e(cl_N&)h(z\))480 2183 y Fr(Returns)g
+Fp(sin\(z\))p Fr(.)39 b(The)30 b(range)h(of)g(the)f(result)g(is)h(the)f
+(en)m(tire)i(complex)e(plane.)0 2349 y Fp(cl_R)f(cos)h(\(const)e(cl_R&)
+h(x\))480 2474 y Fr(Returns)g Fp(cos\(x\))p Fr(.)39 b(The)30
 b(range)h(of)g(the)f(result)g(is)h(the)f(in)m(terv)-5
-b(al)32 b Fn(-1)e(<=)f(cos\(x\))g(<=)h(1)p Fp(.)0 2640
-y Fn(cl_N)f(cos)h(\(const)e(cl_N&)h(x\))480 2764 y Fp(Returns)g
-Fn(cos\(z\))p Fp(.)39 b(The)30 b(range)h(of)g(the)f(result)g(is)h(the)f
-(en)m(tire)i(complex)e(plane.)0 2931 y Fn(struct)f(cl_cos_sin_t)e({)j
+b(al)32 b Fp(-1)e(<=)f(cos\(x\))g(<=)h(1)p Fr(.)0 2640
+y Fp(cl_N)f(cos)h(\(const)e(cl_N&)h(x\))480 2764 y Fr(Returns)g
+Fp(cos\(z\))p Fr(.)39 b(The)30 b(range)h(of)g(the)f(result)g(is)h(the)f
+(en)m(tire)i(complex)e(plane.)0 2931 y Fp(struct)f(cl_cos_sin_t)e({)j
 (cl_R)f(cos;)g(cl_R)g(sin;)h(};)0 3055 y(cl_cos_sin_t)d(cl_cos_sin)h
-(\(const)g(cl_R&)h(x\))480 3180 y Fp(Returns)k(b)s(oth)h
-Fn(sin\(x\))f Fp(and)g Fn(cos\(x\))p Fp(.)51 b(This)34
+(\(const)g(cl_R&)h(x\))480 3180 y Fr(Returns)k(b)s(oth)h
+Fp(sin\(x\))f Fr(and)g Fp(cos\(x\))p Fr(.)51 b(This)34
 b(is)g(more)g(e\016cien)m(t)i(than)e(computing)f(them)g(sepa-)480
-3304 y(rately)-8 b(.)42 b(The)30 b(relation)i Fn(cos^2)d(+)h(sin^2)e(=)
-j(1)f Fp(will)g(hold)g(only)h(appro)m(ximately)-8 b(.)0
-3471 y Fn(cl_R)29 b(tan)h(\(const)e(cl_R&)h(x\))0 3595
-y(cl_N)g(tan)h(\(const)e(cl_N&)h(x\))480 3720 y Fp(Returns)g
-Fn(tan\(x\))g(=)h(sin\(x\)/cos\(x\))p Fp(.)0 3886 y Fn(cl_N)f(cis)h
+3304 y(rately)-8 b(.)42 b(The)30 b(relation)i Fp(cos^2)d(+)h(sin^2)e(=)
+j(1)f Fr(will)g(hold)g(only)h(appro)m(ximately)-8 b(.)0
+3471 y Fp(cl_R)29 b(tan)h(\(const)e(cl_R&)h(x\))0 3595
+y(cl_N)g(tan)h(\(const)e(cl_N&)h(x\))480 3720 y Fr(Returns)g
+Fp(tan\(x\))g(=)h(sin\(x\)/cos\(x\))p Fr(.)0 3886 y Fp(cl_N)f(cis)h
 (\(const)e(cl_R&)h(x\))0 4011 y(cl_N)g(cis)h(\(const)e(cl_N&)h(x\))480
-4135 y Fp(Returns)h Fn(exp\(i*x\))p Fp(.)41 b(The)30
-b(name)g(`)p Fn(cis)p Fp(')h(means)f(\\cos)i Fn(+)f Fp(i)g(sin",)g(b)s
-(ecause)g Fn(e^\(i*x\))e(=)h(cos\(x\))e(+)480 4260 y(i*sin\(x\))p
-Fp(.)0 4426 y Fn(cl_N)h(asin)g(\(const)g(cl_N&)g(z\))480
-4551 y Fp(Returns)24 b Fn(arcsin\(z\))p Fp(.)37 b(This)24
-b(is)h(de\014ned)f(as)h Fn(arcsin\(z\))j(=)i(log\(iz+sqrt\(1-z^2\)\)/i)
-20 b Fp(and)k(sat-)480 4675 y(is\014es)g Fn(arcsin\(-z\))j(=)j
-(-arcsin\(z\))p Fp(.)36 b(The)23 b(range)i(of)f(the)g(result)f(is)h
+4135 y Fr(Returns)h Fp(exp\(i*x\))p Fr(.)41 b(The)30
+b(name)g(`)p Fp(cis)p Fr(')h(means)f(\\cos)i Fp(+)f Fr(i)g(sin",)g(b)s
+(ecause)g Fp(e^\(i*x\))e(=)h(cos\(x\))e(+)480 4260 y(i*sin\(x\))p
+Fr(.)0 4426 y Fp(cl_N)h(asin)g(\(const)g(cl_N&)g(z\))480
+4551 y Fr(Returns)24 b Fp(arcsin\(z\))p Fr(.)37 b(This)24
+b(is)h(de\014ned)f(as)h Fp(arcsin\(z\))j(=)i(log\(iz+sqrt\(1-z^2\)\)/i)
+20 b Fr(and)k(sat-)480 4675 y(is\014es)g Fp(arcsin\(-z\))j(=)j
+(-arcsin\(z\))p Fr(.)36 b(The)23 b(range)i(of)f(the)g(result)f(is)h
 (the)g(strip)g(in)f(the)h(complex)g(do-)480 4800 y(main)g
-Fn(-pi/2)29 b(<=)h(realpart\(arcsin\(z\)\))25 b(<=)30
-b(pi/2)p Fp(,)25 b(excluding)g(the)h(n)m(um)m(b)s(ers)c(with)j
-Fn(realpart)480 4925 y(=)30 b(-pi/2)c Fp(and)g Fn(imagpart)i(<)i(0)d
-Fp(and)f(the)h(n)m(um)m(b)s(ers)e(with)i Fn(realpart)h(=)i(pi/2)25
-b Fp(and)i Fn(imagpart)h(>)i(0)p Fp(.)0 5091 y Fn(cl_N)f(acos)g
-(\(const)g(cl_N&)g(z\))480 5215 y Fp(Returns)19 b Fn(arccos\(z\))p
-Fp(.)35 b(This)20 b(is)g(de\014ned)f(as)i Fn(arccos\(z\))27
+Fp(-pi/2)29 b(<=)h(realpart\(arcsin\(z\)\))25 b(<=)30
+b(pi/2)p Fr(,)25 b(excluding)g(the)h(n)m(um)m(b)s(ers)c(with)j
+Fp(realpart)480 4925 y(=)30 b(-pi/2)c Fr(and)g Fp(imagpart)i(<)i(0)d
+Fr(and)f(the)h(n)m(um)m(b)s(ers)e(with)i Fp(realpart)h(=)i(pi/2)25
+b Fr(and)i Fp(imagpart)h(>)i(0)p Fr(.)0 5091 y Fp(cl_N)f(acos)g
+(\(const)g(cl_N&)g(z\))480 5215 y Fr(Returns)19 b Fp(arccos\(z\))p
+Fr(.)35 b(This)20 b(is)g(de\014ned)f(as)i Fp(arccos\(z\))27
 b(=)j(pi/2)g(-)g(arcsin\(z\))d(=)k(log\(z+i*sqrt\(1-)480
-5340 y(z^2\)\)/i)36 b Fp(and)i(satis\014es)g Fn(arccos\(-z\))28
-b(=)i(pi)g(-)g(arccos\(z\))p Fp(.)61 b(The)38 b(range)h(of)f(the)g
+5340 y(z^2\)\)/i)36 b Fr(and)i(satis\014es)g Fp(arccos\(-z\))28
+b(=)i(pi)g(-)g(arccos\(z\))p Fr(.)61 b(The)38 b(range)h(of)f(the)g
 (result)h(is)f(the)p eop
 %%Page: 24 26
-24 25 bop 0 -116 a Fp(Chapter)30 b(4:)41 b(F)-8 b(unctions)31
+24 25 bop 0 -116 a Fr(Chapter)30 b(4:)41 b(F)-8 b(unctions)31
 b(on)f(n)m(um)m(b)s(ers)2463 b(24)480 366 y(strip)40
-b(in)f(the)i(complex)e(domain)g Fn(0)30 b(<=)g(realpart\(arcsin\(z\)\))
-25 b(<=)30 b(pi)p Fp(,)42 b(excluding)e(the)g(n)m(um-)480
-491 y(b)s(ers)33 b(with)g Fn(realpart)28 b(=)i(0)k Fp(and)f
-Fn(imagpart)28 b(<)i(0)k Fp(and)f(the)h(n)m(um)m(b)s(ers)e(with)h
-Fn(realpart)28 b(=)i(pi)k Fp(and)480 616 y Fn(imagpart)28
-b(>)i(0)p Fp(.)0 785 y Fn(cl_R)f(atan)g(\(const)g(cl_R&)g(x,)h(const)f
-(cl_R&)g(y\))480 910 y Fp(Returns)37 b(the)i(angle)g(of)g(the)f(p)s
+b(in)f(the)i(complex)e(domain)g Fp(0)30 b(<=)g(realpart\(arcsin\(z\)\))
+25 b(<=)30 b(pi)p Fr(,)42 b(excluding)e(the)g(n)m(um-)480
+491 y(b)s(ers)33 b(with)g Fp(realpart)28 b(=)i(0)k Fr(and)f
+Fp(imagpart)28 b(<)i(0)k Fr(and)f(the)h(n)m(um)m(b)s(ers)e(with)h
+Fp(realpart)28 b(=)i(pi)k Fr(and)480 616 y Fp(imagpart)28
+b(>)i(0)p Fr(.)0 785 y Fp(cl_R)f(atan)g(\(const)g(cl_R&)g(x,)h(const)f
+(cl_R&)g(y\))480 910 y Fr(Returns)37 b(the)i(angle)g(of)g(the)f(p)s
 (olar)g(represen)m(tation)h(of)g(the)f(complex)g(n)m(um)m(b)s(er)e
-Fn(x+iy)p Fp(.)63 b(This)38 b(is)480 1034 y Fn(atan\(y/x\))27
-b Fp(if)i Fn(x>0)p Fp(.)40 b(The)28 b(range)i(of)f(the)h(result)f(is)h
-(the)f(in)m(terv)-5 b(al)31 b Fn(-pi)e(<)h(atan\(x,y\))e(<=)i(pi)p
-Fp(.)39 b(The)480 1159 y(result)j(will)g(b)s(e)f(an)g(exact)i(n)m(um)m
-(b)s(er)d(only)h(if)h Fn(x)30 b(>)g(0)41 b Fp(and)h Fn(y)f
-Fp(is)h(the)f(exact)j Fn(0)p Fp(.)74 b(W)-10 b(ARNING:)43
+Fp(x+iy)p Fr(.)63 b(This)38 b(is)480 1034 y Fp(atan\(y/x\))27
+b Fr(if)i Fp(x>0)p Fr(.)40 b(The)28 b(range)i(of)f(the)h(result)f(is)h
+(the)f(in)m(terv)-5 b(al)31 b Fp(-pi)e(<)h(atan\(x,y\))e(<=)i(pi)p
+Fr(.)39 b(The)480 1159 y(result)j(will)g(b)s(e)f(an)g(exact)i(n)m(um)m
+(b)s(er)d(only)h(if)h Fp(x)30 b(>)g(0)41 b Fr(and)h Fp(y)f
+Fr(is)h(the)f(exact)j Fp(0)p Fr(.)74 b(W)-10 b(ARNING:)43
 b(In)480 1283 y(Common)26 b(Lisp,)i(this)g(function)g(is)g(called)h(as)
-g Fn(\(atan)g(y)h(x\))p Fp(,)e(with)g(rev)m(ersed)g(order)g(of)g
-(argumen)m(ts.)0 1453 y Fn(cl_R)h(atan)g(\(const)g(cl_R&)g(x\))480
-1578 y Fp(Returns)36 b Fn(arctan\(x\))p Fp(.)59 b(This)37
-b(is)g(the)g(same)g(as)g Fn(atan\(1,x\))p Fp(.)59 b(The)37
+g Fp(\(atan)g(y)h(x\))p Fr(,)e(with)g(rev)m(ersed)g(order)g(of)g
+(argumen)m(ts.)0 1453 y Fp(cl_R)h(atan)g(\(const)g(cl_R&)g(x\))480
+1578 y Fr(Returns)36 b Fp(arctan\(x\))p Fr(.)59 b(This)37
+b(is)g(the)g(same)g(as)g Fp(atan\(1,x\))p Fr(.)59 b(The)37
 b(range)g(of)h(the)f(result)g(is)h(the)480 1702 y(in)m(terv)-5
-b(al)34 b Fn(-pi/2)29 b(<)h(atan\(x\))e(<)i(pi/2)p Fp(.)47
+b(al)34 b Fp(-pi/2)29 b(<)h(atan\(x\))e(<)i(pi/2)p Fr(.)47
 b(The)32 b(result)g(will)h(b)s(e)f(an)h(exact)h(n)m(um)m(b)s(er)c(only)
-j(if)g Fn(x)f Fp(is)h(the)480 1827 y(exact)f Fn(0)p Fp(.)0
-1996 y Fn(cl_N)d(atan)g(\(const)g(cl_N&)g(z\))480 2121
-y Fp(Returns)43 b Fn(arctan\(z\))p Fp(.)80 b(This)44
-b(is)g(de\014ned)g(as)g Fn(arctan\(z\))28 b(=)i
+j(if)g Fp(x)f Fr(is)h(the)480 1827 y(exact)f Fp(0)p Fr(.)0
+1996 y Fp(cl_N)d(atan)g(\(const)g(cl_N&)g(z\))480 2121
+y Fr(Returns)43 b Fp(arctan\(z\))p Fr(.)80 b(This)44
+b(is)g(de\014ned)g(as)g Fp(arctan\(z\))28 b(=)i
 (\(log\(1+iz\)-log\(1-iz\)\))25 b(/)30 b(2i)480 2245
-y Fp(and)23 b(satis\014es)h Fn(arctan\(-z\))k(=)i(-arctan\(z\))p
-Fp(.)35 b(The)23 b(range)h(of)g(the)g(result)f(is)h(the)g(strip)f(in)g
-(the)h(com-)480 2370 y(plex)45 b(domain)f Fn(-pi/2)29
-b(<=)h(realpart\(arctan\(z\)\))25 b(<=)30 b(pi/2)p Fp(,)47
+y Fr(and)23 b(satis\014es)h Fp(arctan\(-z\))k(=)i(-arctan\(z\))p
+Fr(.)35 b(The)23 b(range)h(of)g(the)g(result)f(is)h(the)g(strip)f(in)g
+(the)h(com-)480 2370 y(plex)45 b(domain)f Fp(-pi/2)29
+b(<=)h(realpart\(arctan\(z\)\))25 b(<=)30 b(pi/2)p Fr(,)47
 b(excluding)e(the)h(n)m(um)m(b)s(ers)c(with)480 2494
-y Fn(realpart)28 b(=)i(-pi/2)42 b Fp(and)h Fn(imagpart)28
-b(>=)i(0)42 b Fp(and)h(the)h(n)m(um)m(b)s(ers)c(with)j
-Fn(realpart)28 b(=)i(pi/2)43 b Fp(and)480 2619 y Fn(imagpart)28
-b(<=)i(0)p Fp(.)0 2915 y(The)g(constan)m(t)i(pi)e(=)g(3.14)p
-Fl(:)15 b(:)g(:)33 b Fp(is)d(returned)f(b)m(y)h(the)h(follo)m(wing)h
-(functions:)0 3212 y Fn(cl_F)d(cl_pi)g(\(cl_float_format_t)d(f\))480
-3336 y Fp(Returns)j(pi)i(as)f(a)h(\015oat)g(of)f(format)g
-Fn(f)p Fp(.)0 3506 y Fn(cl_F)f(cl_pi)g(\(const)g(cl_F&)g(y\))480
-3631 y Fp(Returns)g(pi)i(in)f(the)g(\015oat)h(format)f(of)g
-Fn(y)p Fp(.)0 3800 y Fn(cl_F)f(cl_pi)g(\(void\))480 3925
-y Fp(Returns)g(pi)i(as)f(a)h(\015oat)g(of)f(format)g
-Fn(cl_default_float_format)p Fp(.)0 4331 y Fk(4.8.3)63
-b(Hyp)s(erb)s(olic)31 b(functions)0 4627 y Fn(cl_R)e(sinh)g(\(const)g
-(cl_R&)g(x\))480 4752 y Fp(Returns)g Fn(sinh\(x\))p Fp(.)0
-4921 y Fn(cl_N)g(sinh)g(\(const)g(cl_N&)g(z\))480 5046
-y Fp(Returns)g Fn(sinh\(z\))p Fp(.)39 b(The)30 b(range)h(of)f(the)h
+y Fp(realpart)28 b(=)i(-pi/2)42 b Fr(and)h Fp(imagpart)28
+b(>=)i(0)42 b Fr(and)h(the)h(n)m(um)m(b)s(ers)c(with)j
+Fp(realpart)28 b(=)i(pi/2)43 b Fr(and)480 2619 y Fp(imagpart)28
+b(<=)i(0)p Fr(.)0 2915 y(Arc)m(himedes')g(constan)m(t)i(pi)e(=)g(3.14)p
+Fn(:)15 b(:)g(:)33 b Fr(is)d(returned)f(b)m(y)h(the)h(follo)m(wing)h
+(functions:)0 3212 y Fp(cl_F)d(cl_pi)g(\(cl_float_format_t)d(f\))480
+3336 y Fr(Returns)j(pi)i(as)f(a)h(\015oat)g(of)f(format)g
+Fp(f)p Fr(.)0 3506 y Fp(cl_F)f(cl_pi)g(\(const)g(cl_F&)g(y\))480
+3631 y Fr(Returns)g(pi)i(in)f(the)g(\015oat)h(format)f(of)g
+Fp(y)p Fr(.)0 3800 y Fp(cl_F)f(cl_pi)g(\(void\))480 3925
+y Fr(Returns)g(pi)i(as)f(a)h(\015oat)g(of)f(format)g
+Fp(cl_default_float_format)p Fr(.)0 4331 y Fm(4.8.3)63
+b(Hyp)s(erb)s(olic)31 b(functions)0 4627 y Fp(cl_R)e(sinh)g(\(const)g
+(cl_R&)g(x\))480 4752 y Fr(Returns)g Fp(sinh\(x\))p Fr(.)0
+4921 y Fp(cl_N)g(sinh)g(\(const)g(cl_N&)g(z\))480 5046
+y Fr(Returns)g Fp(sinh\(z\))p Fr(.)39 b(The)30 b(range)h(of)f(the)h
 (result)f(is)h(the)f(en)m(tire)h(complex)g(plane.)0 5215
-y Fn(cl_R)e(cosh)g(\(const)g(cl_R&)g(x\))480 5340 y Fp(Returns)g
-Fn(cosh\(x\))p Fp(.)39 b(The)30 b(range)h(of)f(the)h(result)f(is)h(the)
-f(in)m(terv)-5 b(al)32 b Fn(cosh\(x\))c(>=)i(1)p Fp(.)p
+y Fp(cl_R)e(cosh)g(\(const)g(cl_R&)g(x\))480 5340 y Fr(Returns)g
+Fp(cosh\(x\))p Fr(.)39 b(The)30 b(range)h(of)f(the)h(result)f(is)h(the)
+f(in)m(terv)-5 b(al)32 b Fp(cosh\(x\))c(>=)i(1)p Fr(.)p
 eop
 %%Page: 25 27
-25 26 bop 0 -116 a Fp(Chapter)30 b(4:)41 b(F)-8 b(unctions)31
-b(on)f(n)m(um)m(b)s(ers)2463 b(25)0 366 y Fn(cl_N)29
-b(cosh)g(\(const)g(cl_N&)g(z\))480 491 y Fp(Returns)g
-Fn(cosh\(z\))p Fp(.)39 b(The)30 b(range)h(of)f(the)h(result)f(is)h(the)
-f(en)m(tire)h(complex)g(plane.)0 667 y Fn(struct)e(cl_cosh_sinh_t)d({)k
+25 26 bop 0 -116 a Fr(Chapter)30 b(4:)41 b(F)-8 b(unctions)31
+b(on)f(n)m(um)m(b)s(ers)2463 b(25)0 366 y Fp(cl_N)29
+b(cosh)g(\(const)g(cl_N&)g(z\))480 491 y Fr(Returns)g
+Fp(cosh\(z\))p Fr(.)39 b(The)30 b(range)h(of)f(the)h(result)f(is)h(the)
+f(en)m(tire)h(complex)g(plane.)0 667 y Fp(struct)e(cl_cosh_sinh_t)d({)k
 (cl_R)f(cosh;)g(cl_R)h(sinh;)e(};)0 792 y(cl_cosh_sinh_t)e
-(cl_cosh_sinh)i(\(const)g(cl_R&)h(x\))480 916 y Fp(Returns)44
-b(b)s(oth)h Fn(sinh\(x\))e Fp(and)i Fn(cosh\(x\))p Fp(.)83
+(cl_cosh_sinh)i(\(const)g(cl_R&)h(x\))480 916 y Fr(Returns)44
+b(b)s(oth)h Fp(sinh\(x\))e Fr(and)i Fp(cosh\(x\))p Fr(.)83
 b(This)44 b(is)i(more)e(e\016cien)m(t)j(than)e(computing)f(them)480
-1041 y(separately)-8 b(.)42 b(The)30 b(relation)i Fn(cosh^2)c(-)j
-(sinh^2)d(=)i(1)g Fp(will)h(hold)f(only)g(appro)m(ximately)-8
-b(.)0 1217 y Fn(cl_R)29 b(tanh)g(\(const)g(cl_R&)g(x\))0
+1041 y(separately)-8 b(.)42 b(The)30 b(relation)i Fp(cosh^2)c(-)j
+(sinh^2)d(=)i(1)g Fr(will)h(hold)f(only)g(appro)m(ximately)-8
+b(.)0 1217 y Fp(cl_R)29 b(tanh)g(\(const)g(cl_R&)g(x\))0
 1342 y(cl_N)g(tanh)g(\(const)g(cl_N&)g(x\))480 1466 y
-Fp(Returns)g Fn(tanh\(x\))g(=)h(sinh\(x\)/cosh\(x\))p
-Fp(.)0 1643 y Fn(cl_N)f(asinh)g(\(const)g(cl_N&)g(z\))480
-1767 y Fp(Returns)22 b Fn(arsinh\(z\))p Fp(.)36 b(This)22
-b(is)i(de\014ned)d(as)j Fn(arsinh\(z\))k(=)i(log\(z+sqrt\(1+z^2\)\))18
-b Fp(and)k(satis\014es)480 1892 y Fn(arsinh\(-z\))28
-b(=)i(-arsinh\(z\))p Fp(.)37 b(The)27 b(range)h(of)g(the)g(result)g(is)
+Fr(Returns)g Fp(tanh\(x\))g(=)h(sinh\(x\)/cosh\(x\))p
+Fr(.)0 1643 y Fp(cl_N)f(asinh)g(\(const)g(cl_N&)g(z\))480
+1767 y Fr(Returns)22 b Fp(arsinh\(z\))p Fr(.)36 b(This)22
+b(is)i(de\014ned)d(as)j Fp(arsinh\(z\))k(=)i(log\(z+sqrt\(1+z^2\)\))18
+b Fr(and)k(satis\014es)480 1892 y Fp(arsinh\(-z\))28
+b(=)i(-arsinh\(z\))p Fr(.)37 b(The)27 b(range)h(of)g(the)g(result)g(is)
 g(the)g(strip)f(in)h(the)g(complex)f(domain)480 2016
-y Fn(-pi/2)i(<=)h(imagpart\(arsinh\(z\)\))25 b(<=)30
-b(pi/2)p Fp(,)39 b(excluding)f(the)h(n)m(um)m(b)s(ers)c(with)j
-Fn(imagpart)28 b(=)i(-)480 2141 y(pi/2)f Fp(and)h Fn(realpart)e(>)i(0)g
-Fp(and)g(the)g(n)m(um)m(b)s(ers)e(with)i Fn(imagpart)f(=)h(pi/2)f
-Fp(and)h Fn(realpart)e(<)i(0)p Fp(.)0 2317 y Fn(cl_N)f(acosh)g(\(const)
-g(cl_N&)g(z\))480 2442 y Fp(Returns)d Fn(arcosh\(z\))p
-Fp(.)37 b(This)26 b(is)h(de\014ned)f(as)h Fn(arcosh\(z\))h(=)i
+y Fp(-pi/2)i(<=)h(imagpart\(arsinh\(z\)\))25 b(<=)30
+b(pi/2)p Fr(,)39 b(excluding)f(the)h(n)m(um)m(b)s(ers)c(with)j
+Fp(imagpart)28 b(=)i(-)480 2141 y(pi/2)f Fr(and)h Fp(realpart)e(>)i(0)g
+Fr(and)g(the)g(n)m(um)m(b)s(ers)e(with)i Fp(imagpart)f(=)h(pi/2)f
+Fr(and)h Fp(realpart)e(<)i(0)p Fr(.)0 2317 y Fp(cl_N)f(acosh)g(\(const)
+g(cl_N&)g(z\))480 2442 y Fr(Returns)d Fp(arcosh\(z\))p
+Fr(.)37 b(This)26 b(is)h(de\014ned)f(as)h Fp(arcosh\(z\))h(=)i
 (2*log\(sqrt\(\(z+1\)/2\)+sqr)o(t\(\(z)o(-)480 2566 y(1\)/2\)\))p
-Fp(.)102 b(The)51 b(range)h(of)g(the)g(result)f(is)g(the)h(half-strip)f
-(in)h(the)f(complex)g(domain)g Fn(-pi)29 b(<)480 2691
+Fr(.)102 b(The)51 b(range)h(of)g(the)g(result)f(is)g(the)h(half-strip)f
+(in)h(the)f(complex)g(domain)g Fp(-pi)29 b(<)480 2691
 y(imagpart\(arcosh\(z\)\))c(<=)30 b(pi,)f(realpart\(arcosh\(z\)\))c(>=)
-30 b(0)p Fp(,)76 b(excluding)67 b(the)f(n)m(um)m(b)s(ers)480
-2815 y(with)30 b Fn(realpart)e(=)i(0)g Fp(and)g Fn(-pi)g(<)g(imagpart)e
-(<)i(0)p Fp(.)0 2991 y Fn(cl_N)f(atanh)g(\(const)g(cl_N&)g(z\))480
-3116 y Fp(Returns)38 b Fn(artanh\(z\))p Fp(.)64 b(This)39
-b(is)g(de\014ned)f(as)h Fn(artanh\(z\))28 b(=)i
-(\(log\(1+z\)-log\(1-z\)\))25 b(/)30 b(2)39 b Fp(and)480
-3241 y(satis\014es)f Fn(artanh\(-z\))27 b(=)j(-artanh\(z\))p
-Fp(.)58 b(The)37 b(range)g(of)g(the)g(result)g(is)g(the)h(strip)e(in)h
-(the)g(com-)480 3365 y(plex)45 b(domain)f Fn(-pi/2)29
-b(<=)h(imagpart\(artanh\(z\)\))25 b(<=)30 b(pi/2)p Fp(,)47
+30 b(0)p Fr(,)76 b(excluding)67 b(the)f(n)m(um)m(b)s(ers)480
+2815 y(with)30 b Fp(realpart)e(=)i(0)g Fr(and)g Fp(-pi)g(<)g(imagpart)e
+(<)i(0)p Fr(.)0 2991 y Fp(cl_N)f(atanh)g(\(const)g(cl_N&)g(z\))480
+3116 y Fr(Returns)38 b Fp(artanh\(z\))p Fr(.)64 b(This)39
+b(is)g(de\014ned)f(as)h Fp(artanh\(z\))28 b(=)i
+(\(log\(1+z\)-log\(1-z\)\))25 b(/)30 b(2)39 b Fr(and)480
+3241 y(satis\014es)f Fp(artanh\(-z\))27 b(=)j(-artanh\(z\))p
+Fr(.)58 b(The)37 b(range)g(of)g(the)g(result)g(is)g(the)h(strip)e(in)h
+(the)g(com-)480 3365 y(plex)45 b(domain)f Fp(-pi/2)29
+b(<=)h(imagpart\(artanh\(z\)\))25 b(<=)30 b(pi/2)p Fr(,)47
 b(excluding)e(the)h(n)m(um)m(b)s(ers)c(with)480 3490
-y Fn(imagpart)28 b(=)i(-pi/2)42 b Fp(and)h Fn(realpart)28
-b(<=)i(0)42 b Fp(and)h(the)h(n)m(um)m(b)s(ers)c(with)j
-Fn(imagpart)28 b(=)i(pi/2)43 b Fp(and)480 3614 y Fn(realpart)28
-b(>=)i(0)p Fp(.)0 4038 y Fk(4.8.4)63 b(Euler)30 b(gamma)0
-4313 y Fp(Euler's)g(constan)m(t)i(C)e(=)g(0.577)p Fl(:)15
-b(:)g(:)33 b Fp(is)e(returned)e(b)m(y)h(the)h(follo)m(wing)g
-(functions:)0 4614 y Fn(cl_F)e(cl_eulerconst)e(\(cl_float_format_t)e
-(f\))480 4738 y Fp(Returns)k(Euler's)i(constan)m(t)g(as)g(a)g(\015oat)g
-(of)f(format)g Fn(f)p Fp(.)0 4915 y Fn(cl_F)f(cl_eulerconst)e(\(const)i
-(cl_F&)g(y\))480 5039 y Fp(Returns)g(Euler's)i(constan)m(t)g(in)f(the)h
-(\015oat)g(format)f(of)g Fn(y)p Fp(.)0 5215 y Fn(cl_F)f(cl_eulerconst)e
-(\(void\))480 5340 y Fp(Returns)i(Euler's)i(constan)m(t)g(as)g(a)g
-(\015oat)g(of)f(format)g Fn(cl_default_float_format)p
-Fp(.)p eop
+y Fp(imagpart)28 b(=)i(-pi/2)42 b Fr(and)h Fp(realpart)28
+b(<=)i(0)42 b Fr(and)h(the)h(n)m(um)m(b)s(ers)c(with)j
+Fp(imagpart)28 b(=)i(pi/2)43 b Fr(and)480 3614 y Fp(realpart)28
+b(>=)i(0)p Fr(.)0 4038 y Fm(4.8.4)63 b(Euler)30 b(gamma)0
+4313 y Fr(Euler's)g(constan)m(t)i(C)e(=)g(0.577)p Fn(:)15
+b(:)g(:)33 b Fr(is)e(returned)e(b)m(y)h(the)h(follo)m(wing)g
+(functions:)0 4614 y Fp(cl_F)e(cl_eulerconst)e(\(cl_float_format_t)e
+(f\))480 4738 y Fr(Returns)k(Euler's)i(constan)m(t)g(as)g(a)g(\015oat)g
+(of)f(format)g Fp(f)p Fr(.)0 4915 y Fp(cl_F)f(cl_eulerconst)e(\(const)i
+(cl_F&)g(y\))480 5039 y Fr(Returns)g(Euler's)i(constan)m(t)g(in)f(the)h
+(\015oat)g(format)f(of)g Fp(y)p Fr(.)0 5215 y Fp(cl_F)f(cl_eulerconst)e
+(\(void\))480 5340 y Fr(Returns)i(Euler's)i(constan)m(t)g(as)g(a)g
+(\015oat)g(of)f(format)g Fp(cl_default_float_format)p
+Fr(.)p eop
 %%Page: 26 28
-26 27 bop 0 -116 a Fp(Chapter)30 b(4:)41 b(F)-8 b(unctions)31
+26 27 bop 0 -116 a Fr(Chapter)30 b(4:)41 b(F)-8 b(unctions)31
 b(on)f(n)m(um)m(b)s(ers)2463 b(26)0 366 y(Catalan's)32
-b(constan)m(t)f(G)g(=)f(0.915)p Fl(:)15 b(:)g(:)33 b
-Fp(is)e(returned)e(b)m(y)h(the)h(follo)m(wing)h(functions:)0
-676 y Fn(cl_F)d(cl_catalanconst)d(\(cl_float_format_t)g(f\))480
-800 y Fp(Returns)j(Catalan's)j(constan)m(t)g(as)e(a)h(\015oat)g(of)g
-(format)e Fn(f)p Fp(.)0 985 y Fn(cl_F)g(cl_catalanconst)d(\(const)j
-(cl_F&)g(y\))480 1110 y Fp(Returns)g(Catalan's)j(constan)m(t)g(in)e
-(the)g(\015oat)h(format)f(of)h Fn(y)p Fp(.)0 1294 y Fn(cl_F)e
-(cl_catalanconst)d(\(void\))480 1419 y Fp(Returns)j(Catalan's)j
-(constan)m(t)g(as)e(a)h(\015oat)g(of)g(format)e Fn
-(cl_default_float_format)p Fp(.)0 1881 y Fk(4.8.5)63
-b(Riemann)29 b(zeta)0 2160 y Fp(Riemann's)g(zeta)j(function)e(at)h(an)g
-(in)m(tegral)h(p)s(oin)m(t)e Fn(s>1)f Fp(is)i(returned)e(b)m(y)h(the)h
-(follo)m(wing)h(functions:)0 2470 y Fn(cl_F)d(cl_zeta)g(\(int)g(s,)h
-(cl_float_format_t)25 b(f\))480 2594 y Fp(Returns)k(Riemann's)h(zeta)i
-(function)e(at)h Fn(s)f Fp(as)g(a)h(\015oat)g(of)g(format)e
-Fn(f)p Fp(.)0 2779 y Fn(cl_F)g(cl_zeta)g(\(int)g(s,)h(const)f(cl_F&)f
-(y\))480 2904 y Fp(Returns)h(Riemann's)h(zeta)i(function)e(at)h
-Fn(s)f Fp(in)g(the)g(\015oat)h(format)f(of)h Fn(y)p Fp(.)0
-3088 y Fn(cl_F)e(cl_zeta)g(\(int)g(s\))480 3213 y Fp(Returns)e
-(Riemann's)g(zeta)j(function)d(at)i Fn(s)f Fp(as)g(a)h(\015oat)f(of)h
-(format)e Fn(cl_default_float_format)p Fp(.)0 3708 y
-Fq(4.9)68 b(F)-11 b(unctions)30 b(on)g(in)l(tegers)0
-4170 y Fk(4.9.1)63 b(Logical)30 b(functions)0 4450 y
-Fp(In)m(tegers,)e(when)c(view)m(ed)i(as)g(in)f(t)m(w)m(o's)i(complemen)
+b(constan)m(t)f(G)g(=)f(0.915)p Fn(:)15 b(:)g(:)33 b
+Fr(is)e(returned)e(b)m(y)h(the)h(follo)m(wing)h(functions:)0
+676 y Fp(cl_F)d(cl_catalanconst)d(\(cl_float_format_t)g(f\))480
+800 y Fr(Returns)j(Catalan's)j(constan)m(t)g(as)e(a)h(\015oat)g(of)g
+(format)e Fp(f)p Fr(.)0 985 y Fp(cl_F)g(cl_catalanconst)d(\(const)j
+(cl_F&)g(y\))480 1110 y Fr(Returns)g(Catalan's)j(constan)m(t)g(in)e
+(the)g(\015oat)h(format)f(of)h Fp(y)p Fr(.)0 1294 y Fp(cl_F)e
+(cl_catalanconst)d(\(void\))480 1419 y Fr(Returns)j(Catalan's)j
+(constan)m(t)g(as)e(a)h(\015oat)g(of)g(format)e Fp
+(cl_default_float_format)p Fr(.)0 1881 y Fm(4.8.5)63
+b(Riemann)29 b(zeta)0 2160 y Fr(Riemann's)g(zeta)j(function)e(at)h(an)g
+(in)m(tegral)h(p)s(oin)m(t)e Fp(s>1)f Fr(is)i(returned)e(b)m(y)h(the)h
+(follo)m(wing)h(functions:)0 2470 y Fp(cl_F)d(cl_zeta)g(\(int)g(s,)h
+(cl_float_format_t)25 b(f\))480 2594 y Fr(Returns)k(Riemann's)h(zeta)i
+(function)e(at)h Fp(s)f Fr(as)g(a)h(\015oat)g(of)g(format)e
+Fp(f)p Fr(.)0 2779 y Fp(cl_F)g(cl_zeta)g(\(int)g(s,)h(const)f(cl_F&)f
+(y\))480 2904 y Fr(Returns)h(Riemann's)h(zeta)i(function)e(at)h
+Fp(s)f Fr(in)g(the)g(\015oat)h(format)f(of)h Fp(y)p Fr(.)0
+3088 y Fp(cl_F)e(cl_zeta)g(\(int)g(s\))480 3213 y Fr(Returns)e
+(Riemann's)g(zeta)j(function)d(at)i Fp(s)f Fr(as)g(a)h(\015oat)f(of)h
+(format)e Fp(cl_default_float_format)p Fr(.)0 3708 y
+Fs(4.9)68 b(F)-11 b(unctions)30 b(on)g(in)l(tegers)0
+4170 y Fm(4.9.1)63 b(Logical)30 b(functions)0 4450 y
+Fr(In)m(tegers,)e(when)c(view)m(ed)i(as)g(in)f(t)m(w)m(o's)i(complemen)
 m(t)e(notation,)j(can)e(b)s(e)f(though)m(t)h(as)f(in\014nite)h(bit)f
 (strings)g(where)0 4574 y(the)31 b(bits')f(v)-5 b(alues)31
 b(ev)m(en)m(tually)h(are)f(constan)m(t.)42 b(F)-8 b(or)31
-b(example,)431 4832 y Fn(17)47 b(=)h(......00010001)431
-4936 y(-6)f(=)h(......11111010)0 5215 y Fp(The)30 b(logical)i(op)s
+b(example,)431 4832 y Fp(17)47 b(=)h(......00010001)431
+4936 y(-6)f(=)h(......11111010)0 5215 y Fr(The)30 b(logical)i(op)s
 (erations)f(view)f(in)m(tegers)h(as)g(suc)m(h)f(bit)g(strings)g(and)f
 (op)s(erate)i(on)f(eac)m(h)h(of)g(the)f(bit)g(p)s(ositions)g(in)0
 5340 y(parallel.)p eop
 %%Page: 27 29
-27 28 bop 0 -116 a Fp(Chapter)30 b(4:)41 b(F)-8 b(unctions)31
-b(on)f(n)m(um)m(b)s(ers)2463 b(27)0 366 y Fn(cl_I)29
+27 28 bop 0 -116 a Fr(Chapter)30 b(4:)41 b(F)-8 b(unctions)31
+b(on)f(n)m(um)m(b)s(ers)2463 b(27)0 366 y Fp(cl_I)29
 b(lognot)g(\(const)g(cl_I&)f(x\))0 491 y(cl_I)h(operator)f(~)i(\(const)
-f(cl_I&)g(x\))480 616 y Fp(Logical)j(not,)f(lik)m(e)h
-Fn(~x)e Fp(in)g(C.)g(This)g(is)g(the)h(same)e(as)i Fn(-1-x)p
-Fp(.)0 776 y Fn(cl_I)e(logand)g(\(const)g(cl_I&)f(x,)i(const)f(cl_I&)g
+f(cl_I&)g(x\))480 616 y Fr(Logical)j(not,)f(lik)m(e)h
+Fp(~x)e Fr(in)g(C.)g(This)g(is)g(the)h(same)e(as)i Fp(-1-x)p
+Fr(.)0 776 y Fp(cl_I)e(logand)g(\(const)g(cl_I&)f(x,)i(const)f(cl_I&)g
 (y\))0 900 y(cl_I)g(operator)f(&)i(\(const)f(cl_I&)g(x,)h(const)f
-(cl_I&)g(y\))480 1025 y Fp(Logical)j(and,)e(lik)m(e)i
-Fn(x)e(&)g(y)g Fp(in)g(C.)0 1185 y Fn(cl_I)f(logior)g(\(const)g(cl_I&)f
+(cl_I&)g(y\))480 1025 y Fr(Logical)j(and,)e(lik)m(e)i
+Fp(x)e(&)g(y)g Fr(in)g(C.)0 1185 y Fp(cl_I)f(logior)g(\(const)g(cl_I&)f
 (x,)i(const)f(cl_I&)g(y\))0 1309 y(cl_I)g(operator)f(|)i(\(const)f
-(cl_I&)g(x,)h(const)f(cl_I&)g(y\))480 1434 y Fp(Logical)j(\(inclusiv)m
-(e\))g(or,)f(lik)m(e)h Fn(x)e(|)g(y)g Fp(in)g(C.)0 1594
-y Fn(cl_I)f(logxor)g(\(const)g(cl_I&)f(x,)i(const)f(cl_I&)g(y\))0
+(cl_I&)g(x,)h(const)f(cl_I&)g(y\))480 1434 y Fr(Logical)j(\(inclusiv)m
+(e\))g(or,)f(lik)m(e)h Fp(x)e(|)g(y)g Fr(in)g(C.)0 1594
+y Fp(cl_I)f(logxor)g(\(const)g(cl_I&)f(x,)i(const)f(cl_I&)g(y\))0
 1718 y(cl_I)g(operator)f(^)i(\(const)f(cl_I&)g(x,)h(const)f(cl_I&)g
-(y\))480 1843 y Fp(Exclusiv)m(e)i(or,)g(lik)m(e)h Fn(x)e(^)g(y)g
-Fp(in)g(C.)0 2003 y Fn(cl_I)f(logeqv)g(\(const)g(cl_I&)f(x,)i(const)f
-(cl_I&)g(y\))480 2127 y Fp(Bit)m(wise)j(equiv)-5 b(alence,)32
-b(lik)m(e)g Fn(~\(x)d(^)h(y\))g Fp(in)g(C.)0 2288 y Fn(cl_I)f(lognand)g
+(y\))480 1843 y Fr(Exclusiv)m(e)i(or,)g(lik)m(e)h Fp(x)e(^)g(y)g
+Fr(in)g(C.)0 2003 y Fp(cl_I)f(logeqv)g(\(const)g(cl_I&)f(x,)i(const)f
+(cl_I&)g(y\))480 2127 y Fr(Bit)m(wise)j(equiv)-5 b(alence,)32
+b(lik)m(e)g Fp(~\(x)d(^)h(y\))g Fr(in)g(C.)0 2288 y Fp(cl_I)f(lognand)g
 (\(const)f(cl_I&)h(x,)h(const)f(cl_I&)g(y\))480 2412
-y Fp(Bit)m(wise)j(not)f(and,)f(lik)m(e)h Fn(~\(x)f(&)g(y\))g
-Fp(in)g(C.)0 2572 y Fn(cl_I)f(lognor)g(\(const)g(cl_I&)f(x,)i(const)f
-(cl_I&)g(y\))480 2697 y Fp(Bit)m(wise)j(not)f(or,)f(lik)m(e)i
-Fn(~\(x)d(|)h(y\))g Fp(in)g(C.)0 2857 y Fn(cl_I)f(logandc1)f(\(const)h
-(cl_I&)g(x,)h(const)f(cl_I&)g(y\))480 2981 y Fp(Logical)j(and,)e
+y Fr(Bit)m(wise)j(not)f(and,)f(lik)m(e)h Fp(~\(x)f(&)g(y\))g
+Fr(in)g(C.)0 2572 y Fp(cl_I)f(lognor)g(\(const)g(cl_I&)f(x,)i(const)f
+(cl_I&)g(y\))480 2697 y Fr(Bit)m(wise)j(not)f(or,)f(lik)m(e)i
+Fp(~\(x)d(|)h(y\))g Fr(in)g(C.)0 2857 y Fp(cl_I)f(logandc1)f(\(const)h
+(cl_I&)g(x,)h(const)f(cl_I&)g(y\))480 2981 y Fr(Logical)j(and,)e
 (complemen)m(ting)g(the)h(\014rst)e(argumen)m(t,)h(lik)m(e)i
-Fn(~x)e(&)g(y)g Fp(in)g(C.)0 3141 y Fn(cl_I)f(logandc2)f(\(const)h
-(cl_I&)g(x,)h(const)f(cl_I&)g(y\))480 3266 y Fp(Logical)j(and,)e
+Fp(~x)e(&)g(y)g Fr(in)g(C.)0 3141 y Fp(cl_I)f(logandc2)f(\(const)h
+(cl_I&)g(x,)h(const)f(cl_I&)g(y\))480 3266 y Fr(Logical)j(and,)e
 (complemen)m(ting)g(the)h(second)f(argumen)m(t,)g(lik)m(e)i
-Fn(x)e(&)g(~y)g Fp(in)g(C.)0 3426 y Fn(cl_I)f(logorc1)g(\(const)f
-(cl_I&)h(x,)h(const)f(cl_I&)g(y\))480 3550 y Fp(Logical)j(or,)f
+Fp(x)e(&)g(~y)g Fr(in)g(C.)0 3426 y Fp(cl_I)f(logorc1)g(\(const)f
+(cl_I&)h(x,)h(const)f(cl_I&)g(y\))480 3550 y Fr(Logical)j(or,)f
 (complemen)m(ting)f(the)g(\014rst)g(argumen)m(t,)g(lik)m(e)i
-Fn(~x)d(|)i(y)f Fp(in)g(C.)0 3710 y Fn(cl_I)f(logorc2)g(\(const)f
-(cl_I&)h(x,)h(const)f(cl_I&)g(y\))480 3835 y Fp(Logical)j(or,)f
+Fp(~x)d(|)i(y)f Fr(in)g(C.)0 3710 y Fp(cl_I)f(logorc2)g(\(const)f
+(cl_I&)h(x,)h(const)f(cl_I&)g(y\))480 3835 y Fr(Logical)j(or,)f
 (complemen)m(ting)f(the)g(second)h(argumen)m(t,)f(lik)m(e)i
-Fn(x)e(|)g(~y)f Fp(in)h(C.)0 4127 y(These)g(op)s(erations)h(are)g(all)g
+Fp(x)e(|)g(~y)f Fr(in)h(C.)0 4127 y(These)g(op)s(erations)h(are)g(all)g
 (a)m(v)-5 b(ailable)33 b(though)d(the)g(function)0 4418
-y Fn(cl_I)f(boole)g(\(cl_boole)f(op,)h(const)g(cl_I&)g(x,)h(const)f
-(cl_I&)g(y\))0 4692 y Fp(where)i Fn(op)g Fp(m)m(ust)g(ha)m(v)m(e)i(one)
+y Fp(cl_I)f(boole)g(\(cl_boole)f(op,)h(const)g(cl_I&)g(x,)h(const)f
+(cl_I&)g(y\))0 4692 y Fr(where)i Fp(op)g Fr(m)m(ust)g(ha)m(v)m(e)i(one)
 f(of)g(the)g(16)h(v)-5 b(alues)32 b(\(eac)m(h)h(one)f(stands)g(for)f(a)
 i(function)e(whic)m(h)h(com)m(bines)f(t)m(w)m(o)i(bits)0
-4817 y(in)m(to)24 b(one)f(bit\):)38 b Fn(boole_clr)p
-Fp(,)22 b Fn(boole_set)p Fp(,)h Fn(boole_1)p Fp(,)f Fn(boole_2)p
-Fp(,)h Fn(boole_c1)p Fp(,)g Fn(boole_c2)p Fp(,)f Fn(boole_and)p
-Fp(,)h Fn(boole_)0 4941 y(ior)p Fp(,)37 b Fn(boole_xor)p
-Fp(,)e Fn(boole_eqv)p Fp(,)g Fn(boole_nand)p Fp(,)g Fn(boole_nor)p
-Fp(,)g Fn(boole_andc1)p Fp(,)g Fn(boole_andc2)p Fp(,)f
-Fn(boole_orc1)p Fp(,)0 5066 y Fn(boole_orc2)p Fp(.)0
+4817 y(in)m(to)24 b(one)f(bit\):)38 b Fp(boole_clr)p
+Fr(,)22 b Fp(boole_set)p Fr(,)h Fp(boole_1)p Fr(,)f Fp(boole_2)p
+Fr(,)h Fp(boole_c1)p Fr(,)g Fp(boole_c2)p Fr(,)f Fp(boole_and)p
+Fr(,)h Fp(boole_)0 4941 y(ior)p Fr(,)37 b Fp(boole_xor)p
+Fr(,)e Fp(boole_eqv)p Fr(,)g Fp(boole_nand)p Fr(,)g Fp(boole_nor)p
+Fr(,)g Fp(boole_andc1)p Fr(,)g Fp(boole_andc2)p Fr(,)f
+Fp(boole_orc1)p Fr(,)0 5066 y Fp(boole_orc2)p Fr(.)0
 5340 y(Other)c(functions)g(that)h(view)f(in)m(tegers)i(as)f(bit)f
 (strings:)p eop
 %%Page: 28 30
-28 29 bop 0 -116 a Fp(Chapter)30 b(4:)41 b(F)-8 b(unctions)31
-b(on)f(n)m(um)m(b)s(ers)2463 b(28)0 366 y Fn(cl_boolean)28
+28 29 bop 0 -116 a Fr(Chapter)30 b(4:)41 b(F)-8 b(unctions)31
+b(on)f(n)m(um)m(b)s(ers)2463 b(28)0 366 y Fp(cl_boolean)28
 b(logtest)g(\(const)h(cl_I&)g(x,)g(const)g(cl_I&)g(y\))480
-491 y Fp(Returns)g(true)i(if)f(some)g(bit)g(is)h(set)f(in)h(b)s(oth)e
-Fn(x)h Fp(and)g Fn(y)p Fp(,)g(i.e.)42 b(if)30 b Fn(logand\(x,y\))d(!=)j
-(0)p Fp(.)0 671 y Fn(cl_boolean)e(logbitp)g(\(const)h(cl_I&)g(n,)g
-(const)g(cl_I&)g(x\))480 795 y Fp(Returns)f(true)g(if)g(the)h
-Fn(n)p Fp(th)f(bit)g(\(from)g(the)g(righ)m(t\))h(of)g
-Fn(x)f Fp(is)h(set.)40 b(Bit)30 b(0)e(is)h(the)g(least)g(signi\014can)m
-(t)h(bit.)0 975 y Fn(uintL)f(logcount)f(\(const)h(cl_I&)g(x\))480
-1100 y Fp(Returns)d(the)i(n)m(um)m(b)s(er)c(of)k(one)f(bits)g(in)g
-Fn(x)p Fp(,)h(if)f Fn(x)g(>)p Fp(=)f(0,)j(or)e(the)g(n)m(um)m(b)s(er)e
-(of)i(zero)h(bits)f(in)g Fn(x)p Fp(,)h(if)f Fn(x)f(<)h
-Fp(0.)0 1404 y(The)j(follo)m(wing)i(functions)e(op)s(erate)h(on)f(in)m
+491 y Fr(Returns)g(true)i(if)f(some)g(bit)g(is)h(set)f(in)h(b)s(oth)e
+Fp(x)h Fr(and)g Fp(y)p Fr(,)g(i.e.)42 b(if)30 b Fp(logand\(x,y\))d(!=)j
+(0)p Fr(.)0 671 y Fp(cl_boolean)e(logbitp)g(\(const)h(cl_I&)g(n,)g
+(const)g(cl_I&)g(x\))480 795 y Fr(Returns)f(true)g(if)g(the)h
+Fp(n)p Fr(th)f(bit)g(\(from)g(the)g(righ)m(t\))h(of)g
+Fp(x)f Fr(is)h(set.)40 b(Bit)30 b(0)e(is)h(the)g(least)g(signi\014can)m
+(t)h(bit.)0 975 y Fp(uintL)f(logcount)f(\(const)h(cl_I&)g(x\))480
+1100 y Fr(Returns)d(the)i(n)m(um)m(b)s(er)c(of)k(one)f(bits)g(in)g
+Fp(x)p Fr(,)h(if)f Fp(x)g(>)p Fr(=)f(0,)j(or)e(the)g(n)m(um)m(b)s(er)e
+(of)i(zero)h(bits)f(in)g Fp(x)p Fr(,)h(if)f Fp(x)f(<)h
+Fr(0.)0 1404 y(The)j(follo)m(wing)i(functions)e(op)s(erate)h(on)f(in)m
 (terv)-5 b(als)31 b(of)g(bits)f(in)g(in)m(tegers.)42
-b(The)30 b(t)m(yp)s(e)240 1660 y Fn(struct)46 b(cl_byte)g({)h(uintL)g
-(size;)f(uintL)g(position;)g(};)0 1937 y Fp(represen)m(ts)39
+b(The)30 b(t)m(yp)s(e)240 1660 y Fp(struct)46 b(cl_byte)g({)h(uintL)g
+(size;)f(uintL)g(position;)g(};)0 1937 y Fr(represen)m(ts)39
 b(the)g(bit)g(in)m(terv)-5 b(al)41 b(con)m(taining)f(the)f(bits)g
-Fn(position)p Fl(:)15 b(:)g(:)o Fn(position+size-1)35
-b Fp(of)k(an)g(in)m(teger.)68 b(The)0 2061 y(constructor)31
-b Fn(cl_byte\(size,position\))24 b Fp(constructs)31 b(a)f
-Fn(cl_byte)p Fp(.)0 2366 y Fn(cl_I)f(ldb)h(\(const)e(cl_I&)h(n,)h
-(const)f(cl_byte&)f(b\))480 2490 y Fp(extracts)g(the)f(bits)f(of)h
-Fn(n)f Fp(describ)s(ed)g(b)m(y)g(the)h(bit)g(in)m(terv)-5
-b(al)27 b Fn(b)g Fp(and)f(returns)f(them)g(as)i(a)g(nonnegativ)m(e)480
-2615 y(in)m(teger)32 b(with)e Fn(b.size)e Fp(bits.)0
-2794 y Fn(cl_boolean)g(ldb_test)g(\(const)g(cl_I&)h(n,)h(const)f
-(cl_byte&)f(b\))480 2919 y Fp(Returns)h(true)i(if)f(some)g(bit)g
+Fp(position)p Fn(:)15 b(:)g(:)o Fp(position+size-1)35
+b Fr(of)k(an)g(in)m(teger.)68 b(The)0 2061 y(constructor)31
+b Fp(cl_byte\(size,position\))24 b Fr(constructs)31 b(a)f
+Fp(cl_byte)p Fr(.)0 2366 y Fp(cl_I)f(ldb)h(\(const)e(cl_I&)h(n,)h
+(const)f(cl_byte&)f(b\))480 2490 y Fr(extracts)g(the)f(bits)f(of)h
+Fp(n)f Fr(describ)s(ed)g(b)m(y)g(the)h(bit)g(in)m(terv)-5
+b(al)27 b Fp(b)g Fr(and)f(returns)f(them)g(as)i(a)g(nonnegativ)m(e)480
+2615 y(in)m(teger)32 b(with)e Fp(b.size)e Fr(bits.)0
+2794 y Fp(cl_boolean)g(ldb_test)g(\(const)g(cl_I&)h(n,)h(const)f
+(cl_byte&)f(b\))480 2919 y Fr(Returns)h(true)i(if)f(some)g(bit)g
 (describ)s(ed)f(b)m(y)i(the)f(bit)h(in)m(terv)-5 b(al)31
-b Fn(b)f Fp(is)h(set)g(in)f Fn(n)p Fp(.)0 3099 y Fn(cl_I)f(dpb)h
+b Fp(b)f Fr(is)h(set)g(in)f Fp(n)p Fr(.)0 3099 y Fp(cl_I)f(dpb)h
 (\(const)e(cl_I&)h(newbyte,)f(const)h(cl_I&)g(n,)h(const)f(cl_byte&)f
-(b\))480 3223 y Fp(Returns)f Fn(n)p Fp(,)h(with)f(the)h(bits)g(describ)
-s(ed)e(b)m(y)i(the)f(bit)h(in)m(terv)-5 b(al)29 b Fn(b)e
-Fp(replaced)h(b)m(y)g Fn(newbyte)p Fp(.)38 b(Only)27
-b(the)480 3348 y(lo)m(w)m(est)32 b Fn(b.size)d Fp(bits)h(of)h
-Fn(newbyte)d Fp(are)j(relev)-5 b(an)m(t.)0 3652 y(The)28
-b(functions)h Fn(ldb)f Fp(and)g Fn(dpb)g Fp(implicitly)h(shift.)40
+(b\))480 3223 y Fr(Returns)f Fp(n)p Fr(,)h(with)f(the)h(bits)g(describ)
+s(ed)e(b)m(y)i(the)f(bit)h(in)m(terv)-5 b(al)29 b Fp(b)e
+Fr(replaced)h(b)m(y)g Fp(newbyte)p Fr(.)38 b(Only)27
+b(the)480 3348 y(lo)m(w)m(est)32 b Fp(b.size)d Fr(bits)h(of)h
+Fp(newbyte)d Fr(are)j(relev)-5 b(an)m(t.)0 3652 y(The)28
+b(functions)h Fp(ldb)f Fr(and)g Fp(dpb)g Fr(implicitly)h(shift.)40
 b(The)29 b(follo)m(wing)h(functions)e(are)i(their)f(coun)m(terparts)g
-(without)0 3777 y(shifting:)0 4081 y Fn(cl_I)g(mask_field)f(\(const)g
-(cl_I&)h(n,)h(const)f(cl_byte&)f(b\))480 4206 y Fp(returns)j(an)g(in)m
+(without)0 3777 y(shifting:)0 4081 y Fp(cl_I)g(mask_field)f(\(const)g
+(cl_I&)h(n,)h(const)f(cl_byte&)f(b\))480 4206 y Fr(returns)j(an)g(in)m
 (teger)j(with)d(the)h(bits)g(describ)s(ed)f(b)m(y)h(the)g(bit)g(in)m
-(terv)-5 b(al)33 b Fn(b)e Fp(copied)i(from)d(the)i(corre-)480
-4330 y(sp)s(onding)d(bits)h(in)g Fn(n)p Fp(,)g(the)h(other)g(bits)f
-(zero.)0 4510 y Fn(cl_I)f(deposit_field)e(\(const)i(cl_I&)g(newbyte,)f
+(terv)-5 b(al)33 b Fp(b)e Fr(copied)i(from)d(the)i(corre-)480
+4330 y(sp)s(onding)d(bits)h(in)g Fp(n)p Fr(,)g(the)h(other)g(bits)f
+(zero.)0 4510 y Fp(cl_I)f(deposit_field)e(\(const)i(cl_I&)g(newbyte,)f
 (const)h(cl_I&)g(n,)g(const)g(cl_byte&)f(b\))480 4634
-y Fp(returns)34 b(an)h(in)m(teger)i(where)d(the)i(bits)f(describ)s(ed)f
-(b)m(y)h(the)h(bit)f(in)m(terv)-5 b(al)36 b Fn(b)f Fp(come)g(from)f
-Fn(newbyte)480 4759 y Fp(and)c(the)g(other)h(bits)f(come)h(from)d
-Fn(n)p Fp(.)0 5063 y(The)i(follo)m(wing)i(relations)f(hold:)180
-5340 y Fn(ldb)e(\(n,)h(b\))g(=)g(mask_field\(n,)d(b\))i(>>)h
-(b.position)p Fp(,)p eop
+y Fr(returns)34 b(an)h(in)m(teger)i(where)d(the)i(bits)f(describ)s(ed)f
+(b)m(y)h(the)h(bit)f(in)m(terv)-5 b(al)36 b Fp(b)f Fr(come)g(from)f
+Fp(newbyte)480 4759 y Fr(and)c(the)g(other)h(bits)f(come)h(from)d
+Fp(n)p Fr(.)0 5063 y(The)i(follo)m(wing)i(relations)f(hold:)180
+5340 y Fp(ldb)e(\(n,)h(b\))g(=)g(mask_field\(n,)d(b\))i(>>)h
+(b.position)p Fr(,)p eop
 %%Page: 29 31
-29 30 bop 0 -116 a Fp(Chapter)30 b(4:)41 b(F)-8 b(unctions)31
-b(on)f(n)m(um)m(b)s(ers)2463 b(29)180 366 y Fn(dpb)29
+29 30 bop 0 -116 a Fr(Chapter)30 b(4:)41 b(F)-8 b(unctions)31
+b(on)f(n)m(um)m(b)s(ers)2463 b(29)180 366 y Fp(dpb)29
 b(\(newbyte,)f(n,)i(b\))g(=)g(deposit_field)d(\(newbyte)h(<<)h
-(b.position,)f(n,)i(b\))p Fp(,)180 522 y Fn(deposit_field\(newbyte,n,)o
+(b.position,)f(n,)i(b\))p Fr(,)180 522 y Fp(deposit_field\(newbyte,n,)o
 (b\))24 b(=)30 b(n)g(^)g(mask_field\(n,b\))c(^)31 b
-(mask_field\(new_byte,b\))p Fp(.)0 832 y(The)36 b(follo)m(wing)i(op)s
+(mask_field\(new_byte,b\))p Fr(.)0 832 y(The)36 b(follo)m(wing)i(op)s
 (erations)f(on)g(in)m(tegers)h(as)f(bit)f(strings)h(are)g(e\016cien)m
 (t)h(shortcuts)e(for)h(common)e(arithmetic)0 957 y(op)s(erations:)0
-1267 y Fn(cl_boolean)28 b(oddp)h(\(const)f(cl_I&)h(x\))480
-1392 y Fp(Returns)g(true)i(if)f(the)h(least)g(signi\014can)m(t)g(bit)g
-(of)f Fn(x)g Fp(is)h(1.)41 b(Equiv)-5 b(alen)m(t)31 b(to)g
-Fn(mod\(x,2\))d(!=)i(0)p Fp(.)0 1578 y Fn(cl_boolean)e(evenp)h(\(const)
-f(cl_I&)h(x\))480 1702 y Fp(Returns)g(true)i(if)f(the)h(least)g
-(signi\014can)m(t)g(bit)g(of)f Fn(x)g Fp(is)h(0.)41 b(Equiv)-5
-b(alen)m(t)31 b(to)g Fn(mod\(x,2\))d(==)i(0)p Fp(.)0
-1888 y Fn(cl_I)f(operator)f(<<)i(\(const)f(cl_I&)g(x,)g(const)g(cl_I&)g
-(n\))480 2013 y Fp(Shifts)h Fn(x)g Fp(b)m(y)g Fn(n)g
-Fp(bits)g(to)h(the)g(left.)41 b Fn(n)30 b Fp(should)g(b)s(e)f
-Fn(>)p Fp(=0.)41 b(Equiv)-5 b(alen)m(t)31 b(to)g Fn(x)f(*)g
-(expt\(2,n\))p Fp(.)0 2199 y Fn(cl_I)f(operator)f(>>)i(\(const)f(cl_I&)
-g(x,)g(const)g(cl_I&)g(n\))480 2323 y Fp(Shifts)24 b
-Fn(x)g Fp(b)m(y)g Fn(n)g Fp(bits)g(to)h(the)g(righ)m(t.)39
-b Fn(n)24 b Fp(should)f(b)s(e)h Fn(>)p Fp(=0.)39 b(Bits)25
+1267 y Fp(cl_boolean)28 b(oddp)h(\(const)f(cl_I&)h(x\))480
+1392 y Fr(Returns)g(true)i(if)f(the)h(least)g(signi\014can)m(t)g(bit)g
+(of)f Fp(x)g Fr(is)h(1.)41 b(Equiv)-5 b(alen)m(t)31 b(to)g
+Fp(mod\(x,2\))d(!=)i(0)p Fr(.)0 1578 y Fp(cl_boolean)e(evenp)h(\(const)
+f(cl_I&)h(x\))480 1702 y Fr(Returns)g(true)i(if)f(the)h(least)g
+(signi\014can)m(t)g(bit)g(of)f Fp(x)g Fr(is)h(0.)41 b(Equiv)-5
+b(alen)m(t)31 b(to)g Fp(mod\(x,2\))d(==)i(0)p Fr(.)0
+1888 y Fp(cl_I)f(operator)f(<<)i(\(const)f(cl_I&)g(x,)g(const)g(cl_I&)g
+(n\))480 2013 y Fr(Shifts)h Fp(x)g Fr(b)m(y)g Fp(n)g
+Fr(bits)g(to)h(the)g(left.)41 b Fp(n)30 b Fr(should)g(b)s(e)f
+Fp(>)p Fr(=0.)41 b(Equiv)-5 b(alen)m(t)31 b(to)g Fp(x)f(*)g
+(expt\(2,n\))p Fr(.)0 2199 y Fp(cl_I)f(operator)f(>>)i(\(const)f(cl_I&)
+g(x,)g(const)g(cl_I&)g(n\))480 2323 y Fr(Shifts)24 b
+Fp(x)g Fr(b)m(y)g Fp(n)g Fr(bits)g(to)h(the)g(righ)m(t.)39
+b Fp(n)24 b Fr(should)f(b)s(e)h Fp(>)p Fr(=0.)39 b(Bits)25
 b(shifted)f(out)g(to)h(the)g(righ)m(t)g(are)f(thro)m(wn)480
 2448 y(a)m(w)m(a)m(y)-8 b(.)43 b(Equiv)-5 b(alen)m(t)31
-b(to)g Fn(floor\(x)e(/)h(expt\(2,n\)\))p Fp(.)0 2634
-y Fn(cl_I)f(ash)h(\(const)e(cl_I&)h(x,)h(const)f(cl_I&)g(y\))480
-2759 y Fp(Shifts)34 b Fn(x)h Fp(b)m(y)g Fn(y)f Fp(bits)h(to)h(the)f
-(left)h(\(if)f Fn(y>)p Fp(=0\))g(or)g(b)m(y)g Fn(-y)f
-Fp(bits)h(to)h(the)f(righ)m(t)h(\(if)f Fn(y<)p Fp(=0\).)54
+b(to)g Fp(floor\(x)e(/)h(expt\(2,n\)\))p Fr(.)0 2634
+y Fp(cl_I)f(ash)h(\(const)e(cl_I&)h(x,)h(const)f(cl_I&)g(y\))480
+2759 y Fr(Shifts)34 b Fp(x)h Fr(b)m(y)g Fp(y)f Fr(bits)h(to)h(the)f
+(left)h(\(if)f Fp(y>)p Fr(=0\))g(or)g(b)m(y)g Fp(-y)f
+Fr(bits)h(to)h(the)f(righ)m(t)h(\(if)f Fp(y<)p Fr(=0\).)54
 b(In)35 b(other)480 2883 y(w)m(ords,)30 b(this)g(returns)g
-Fn(floor\(x)e(*)i(expt\(2,y\)\))p Fp(.)0 3069 y Fn(uintL)f
-(integer_length)d(\(const)j(cl_I&)g(x\))480 3194 y Fp(Returns)40
+Fp(floor\(x)e(*)i(expt\(2,y\)\))p Fr(.)0 3069 y Fp(uintL)f
+(integer_length)d(\(const)j(cl_I&)g(x\))480 3194 y Fr(Returns)40
 b(the)h(n)m(um)m(b)s(er)e(of)j(bits)f(\(excluding)g(the)h(sign)f(bit\))
-g(needed)g(to)h(represen)m(t)f Fn(x)g Fp(in)f(t)m(w)m(o's)480
+g(needed)g(to)h(represen)m(t)f Fp(x)g Fr(in)f(t)m(w)m(o's)480
 3318 y(complemen)m(t)28 b(notation.)41 b(This)27 b(is)i(the)f(smallest)
-h(n)f Fn(>)p Fp(=)f(0)i(suc)m(h)f(that)h(-2)p Fn(^)p
-Fp(n)f Fn(<)p Fp(=)g(x)g Fn(<)g Fp(2)p Fn(^)p Fp(n.)40
-b(If)28 b(x)g Fn(>)g Fp(0,)480 3443 y(this)i(is)h(the)f(unique)g(n)g
-Fn(>)g Fp(0)g(suc)m(h)g(that)h(2)p Fn(^)p Fp(\(n-1\))h
-Fn(<)p Fp(=)e(x)g Fn(<)g Fp(2)p Fn(^)p Fp(n.)0 3629 y
-Fn(uintL)f(ord2)g(\(const)g(cl_I&)g(x\))480 3753 y(x)36
-b Fp(m)m(ust)g(b)s(e)g(non-zero.)61 b(This)36 b(function)g(returns)g
+h(n)f Fp(>)p Fr(=)f(0)i(suc)m(h)f(that)h(-2)p Fp(^)p
+Fr(n)f Fp(<)p Fr(=)g(x)g Fp(<)g Fr(2)p Fp(^)p Fr(n.)40
+b(If)28 b(x)g Fp(>)g Fr(0,)480 3443 y(this)i(is)h(the)f(unique)g(n)g
+Fp(>)g Fr(0)g(suc)m(h)g(that)h(2)p Fp(^)p Fr(\(n-1\))h
+Fp(<)p Fr(=)e(x)g Fp(<)g Fr(2)p Fp(^)p Fr(n.)0 3629 y
+Fp(uintL)f(ord2)g(\(const)g(cl_I&)g(x\))480 3753 y(x)36
+b Fr(m)m(ust)g(b)s(e)g(non-zero.)61 b(This)36 b(function)g(returns)g
 (the)h(n)m(um)m(b)s(er)d(of)j(0)g(bits)g(at)h(the)f(righ)m(t)g(of)g
-Fn(x)f Fp(in)480 3878 y(t)m(w)m(o's)c(complemen)m(t)d(notation.)42
-b(This)30 b(is)g(the)h(largest)h(n)d Fn(>)p Fp(=)h(0)h(suc)m(h)f(that)h
-(2)p Fn(^)p Fp(n)f(divides)g Fn(x)p Fp(.)0 4064 y Fn(uintL)f(power2p)f
-(\(const)h(cl_I&)g(x\))480 4188 y(x)24 b Fp(m)m(ust)g(b)s(e)g
-Fn(>)g Fp(0.)40 b(This)23 b(function)i(c)m(hec)m(ks)h(whether)e
-Fn(x)g Fp(is)h(a)g(p)s(o)m(w)m(er)g(of)g(2.)39 b(If)24
-b Fn(x)g Fp(=)h(2)p Fn(^)p Fp(\(n-1\),)i(it)e(returns)480
+Fp(x)f Fr(in)480 3878 y(t)m(w)m(o's)c(complemen)m(t)d(notation.)42
+b(This)30 b(is)g(the)h(largest)h(n)d Fp(>)p Fr(=)h(0)h(suc)m(h)f(that)h
+(2)p Fp(^)p Fr(n)f(divides)g Fp(x)p Fr(.)0 4064 y Fp(uintL)f(power2p)f
+(\(const)h(cl_I&)g(x\))480 4188 y(x)24 b Fr(m)m(ust)g(b)s(e)g
+Fp(>)g Fr(0.)40 b(This)23 b(function)i(c)m(hec)m(ks)h(whether)e
+Fp(x)g Fr(is)h(a)g(p)s(o)m(w)m(er)g(of)g(2.)39 b(If)24
+b Fp(x)g Fr(=)h(2)p Fp(^)p Fr(\(n-1\),)i(it)e(returns)480
 4313 y(n.)40 b(Else)31 b(it)g(returns)e(0.)41 b(\(See)31
-b(also)g(the)g(function)f Fn(logp)p Fp(.\))0 4780 y Fk(4.9.2)63
-b(Num)m(b)s(er)30 b(theoretic)g(functions)0 5091 y Fn(uint32)f(gcd)g
+b(also)g(the)g(function)f Fp(logp)p Fr(.\))0 4780 y Fm(4.9.2)63
+b(Num)m(b)s(er)30 b(theoretic)g(functions)0 5091 y Fp(uint32)f(gcd)g
 (\(uint32)g(a,)g(uint32)g(b\))0 5215 y(cl_I)g(gcd)h(\(const)e(cl_I&)h
-(a,)h(const)f(cl_I&)g(b\))480 5340 y Fp(This)h(function)g(returns)f
-(the)h(greatest)j(common)28 b(divisor)i(of)h Fn(a)f Fp(and)g
-Fn(b)p Fp(,)g(normalized)g(to)h(b)s(e)f Fn(>)p Fp(=)f(0.)p
+(a,)h(const)f(cl_I&)g(b\))480 5340 y Fr(This)h(function)g(returns)f
+(the)h(greatest)j(common)28 b(divisor)i(of)h Fp(a)f Fr(and)g
+Fp(b)p Fr(,)g(normalized)g(to)h(b)s(e)f Fp(>)p Fr(=)f(0.)p
 eop
 %%Page: 30 32
-30 31 bop 0 -116 a Fp(Chapter)30 b(4:)41 b(F)-8 b(unctions)31
-b(on)f(n)m(um)m(b)s(ers)2463 b(30)0 366 y Fn(cl_I)29
+30 31 bop 0 -116 a Fr(Chapter)30 b(4:)41 b(F)-8 b(unctions)31
+b(on)f(n)m(um)m(b)s(ers)2463 b(30)0 366 y Fp(cl_I)29
 b(xgcd)g(\(const)g(cl_I&)g(a,)h(const)f(cl_I&)g(b,)g(cl_I*)g(u,)h
-(cl_I*)f(v\))480 491 y Fp(This)h(function)h(\(\\extended)g(gcd"\))h
-(returns)e(the)h(greatest)h(common)d(divisor)i Fn(g)f
-Fp(of)h Fn(a)g Fp(and)f Fn(b)h Fp(and)480 616 y(at)39
+(cl_I*)f(v\))480 491 y Fr(This)h(function)h(\(\\extended)g(gcd"\))h
+(returns)e(the)h(greatest)h(common)d(divisor)i Fp(g)f
+Fr(of)h Fp(a)g Fr(and)f Fp(b)h Fr(and)480 616 y(at)39
 b(the)f(same)g(time)g(the)g(represen)m(tation)i(of)e
-Fn(g)g Fp(as)g(an)g(in)m(tegral)i(linear)f(com)m(bination)f(of)h
-Fn(a)f Fp(and)480 740 y Fn(b)p Fp(:)53 b Fn(u)36 b Fp(and)g
-Fn(v)g Fp(with)h Fn(u*a+v*b)28 b(=)i(g)p Fp(,)38 b Fn(g)e(>)p
-Fp(=)g(0.)60 b Fn(u)36 b Fp(and)g Fn(v)h Fp(will)g(b)s(e)f(normalized)g
+Fp(g)g Fr(as)g(an)g(in)m(tegral)i(linear)f(com)m(bination)f(of)h
+Fp(a)f Fr(and)480 740 y Fp(b)p Fr(:)53 b Fp(u)36 b Fr(and)g
+Fp(v)g Fr(with)h Fp(u*a+v*b)28 b(=)i(g)p Fr(,)38 b Fp(g)e(>)p
+Fr(=)g(0.)60 b Fp(u)36 b Fr(and)g Fp(v)h Fr(will)g(b)s(e)f(normalized)g
 (to)h(b)s(e)f(of)h(smallest)480 865 y(p)s(ossible)g(absolute)h(v)-5
 b(alue,)40 b(in)e(the)f(follo)m(wing)i(sense:)55 b(If)37
-b Fn(a)h Fp(and)e Fn(b)i Fp(are)g(non-zero,)i(and)d Fn(abs\(a\))480
-989 y(!=)30 b(abs\(b\))p Fp(,)35 b Fn(u)g Fp(and)f Fn(v)h
-Fp(will)h(satisfy)g(the)f(inequalities)i Fn(abs\(u\))29
-b(<=)g(abs\(b\)/\(2*g\))p Fp(,)34 b Fn(abs\(v\))29 b(<=)480
-1114 y(abs\(a\)/\(2*g\))p Fp(.)0 1275 y Fn(cl_I)g(lcm)h(\(const)e
-(cl_I&)h(a,)h(const)f(cl_I&)g(b\))480 1400 y Fp(This)h(function)g
+b Fp(a)h Fr(and)e Fp(b)i Fr(are)g(non-zero,)i(and)d Fp(abs\(a\))480
+989 y(!=)30 b(abs\(b\))p Fr(,)35 b Fp(u)g Fr(and)f Fp(v)h
+Fr(will)h(satisfy)g(the)f(inequalities)i Fp(abs\(u\))29
+b(<=)g(abs\(b\)/\(2*g\))p Fr(,)34 b Fp(abs\(v\))29 b(<=)480
+1114 y(abs\(a\)/\(2*g\))p Fr(.)0 1275 y Fp(cl_I)g(lcm)h(\(const)e
+(cl_I&)h(a,)h(const)f(cl_I&)g(b\))480 1400 y Fr(This)h(function)g
 (returns)f(the)h(least)i(common)d(m)m(ultiple)h(of)g
-Fn(a)g Fp(and)g Fn(b)p Fp(,)g(normalized)g(to)h(b)s(e)f
-Fn(>)p Fp(=)g(0.)0 1562 y Fn(cl_boolean)e(logp)h(\(const)f(cl_I&)h(a,)h
+Fp(a)g Fr(and)g Fp(b)p Fr(,)g(normalized)g(to)h(b)s(e)f
+Fp(>)p Fr(=)g(0.)0 1562 y Fp(cl_boolean)e(logp)h(\(const)f(cl_I&)h(a,)h
 (const)f(cl_I&)g(b,)h(cl_RA*)e(l\))0 1686 y(cl_boolean)g(logp)h
 (\(const)f(cl_RA&)h(a,)h(const)f(cl_RA&)f(b,)i(cl_RA*)f(l\))480
-1811 y(a)35 b Fp(m)m(ust)g(b)s(e)g Fn(>)h Fp(0.)57 b
-Fn(b)36 b Fp(m)m(ust)e(b)s(e)h Fn(>)p Fp(0)h(and)f(!=)h(1.)57
+1811 y(a)35 b Fr(m)m(ust)g(b)s(e)g Fp(>)h Fr(0.)57 b
+Fp(b)36 b Fr(m)m(ust)e(b)s(e)h Fp(>)p Fr(0)h(and)f(!=)h(1.)57
 b(If)36 b(log\(a,b\))i(is)d(rational)i(n)m(um)m(b)s(er,)f(this)f
 (function)480 1935 y(returns)29 b(true)h(and)g(sets)h(*l)g(=)f
 (log\(a,b\),)j(else)e(it)g(returns)e(false.)0 2325 y
-Fk(4.9.3)63 b(Com)m(binatorial)29 b(functions)0 2618
-y Fn(cl_I)g(factorial)f(\(uintL)h(n\))480 2742 y(n)h
-Fp(m)m(ust)f(b)s(e)h(a)h(small)f(in)m(teger)h Fn(>)p
-Fp(=)f(0.)41 b(This)30 b(function)g(returns)f(the)i(factorial)h
-Fn(n)p Fp(!)40 b(=)30 b Fn(1*2*)p Fl(:)15 b(:)g(:)p Fn(*n)p
-Fp(.)0 2904 y Fn(cl_I)29 b(doublefactorial)d(\(uintL)j(n\))480
-3028 y(n)44 b Fp(m)m(ust)g(b)s(e)g(a)h(small)f(in)m(teger)i
-Fn(>)p Fp(=)e(0.)84 b(This)43 b(function)i(returns)e(the)i
-(doublefactorial)h Fn(n)p Fp(!!)83 b(=)480 3153 y Fn(1*3*)p
-Fl(:)15 b(:)g(:)p Fn(*n)30 b Fp(or)g Fn(n)p Fp(!!)41
-b(=)30 b Fn(2*4*)p Fl(:)15 b(:)g(:)p Fn(*n)p Fp(,)30
-b(resp)s(ectiv)m(ely)-8 b(.)0 3315 y Fn(cl_I)29 b(binomial)f(\(uintL)h
-(n,)h(uintL)f(k\))480 3439 y(n)36 b Fp(and)h Fn(k)f Fp(m)m(ust)g(b)s(e)
-g(small)g(in)m(tegers)i Fn(>)p Fp(=)e(0.)60 b(This)36
+Fm(4.9.3)63 b(Com)m(binatorial)29 b(functions)0 2618
+y Fp(cl_I)g(factorial)f(\(uintL)h(n\))480 2742 y(n)h
+Fr(m)m(ust)f(b)s(e)h(a)h(small)f(in)m(teger)h Fp(>)p
+Fr(=)f(0.)41 b(This)30 b(function)g(returns)f(the)i(factorial)h
+Fp(n)p Fr(!)40 b(=)30 b Fp(1*2*)p Fn(:)15 b(:)g(:)p Fp(*n)p
+Fr(.)0 2904 y Fp(cl_I)29 b(doublefactorial)d(\(uintL)j(n\))480
+3028 y(n)44 b Fr(m)m(ust)g(b)s(e)g(a)h(small)f(in)m(teger)i
+Fp(>)p Fr(=)e(0.)84 b(This)43 b(function)i(returns)e(the)i
+(doublefactorial)h Fp(n)p Fr(!!)83 b(=)480 3153 y Fp(1*3*)p
+Fn(:)15 b(:)g(:)p Fp(*n)30 b Fr(or)g Fp(n)p Fr(!!)41
+b(=)30 b Fp(2*4*)p Fn(:)15 b(:)g(:)p Fp(*n)p Fr(,)30
+b(resp)s(ectiv)m(ely)-8 b(.)0 3315 y Fp(cl_I)29 b(binomial)f(\(uintL)h
+(n,)h(uintL)f(k\))480 3439 y(n)36 b Fr(and)h Fp(k)f Fr(m)m(ust)g(b)s(e)
+g(small)g(in)m(tegers)i Fp(>)p Fr(=)e(0.)60 b(This)36
 b(function)h(returns)e(the)i(binomial)f(co)s(e\016cien)m(t)480
-3494 y Fh(\000)518 3523 y Fg(n)520 3595 y(k)559 3494
-y Fh(\001)622 3564 y Fp(=)828 3528 y Fg(n)p Ff(!)p 728
-3543 261 4 v 728 3595 a Fg(n)p Ff(!\()p Fg(n)p Fe(\000)p
-Fg(k)q Ff(\)!)1029 3564 y Fp(for)30 b(0)h Fn(<)p Fp(=)e(k)i
-Fn(<)p Fp(=)e(n,)h(0)h(else.)0 4001 y Fq(4.10)68 b(F)-11
+3494 y Fj(\000)518 3523 y Fi(n)520 3595 y(k)559 3494
+y Fj(\001)622 3564 y Fr(=)828 3528 y Fi(n)p Fh(!)p 728
+3543 261 4 v 728 3595 a Fi(n)p Fh(!\()p Fi(n)p Fg(\000)p
+Fi(k)q Fh(\)!)1029 3564 y Fr(for)30 b(0)h Fp(<)p Fr(=)e(k)i
+Fp(<)p Fr(=)e(n,)h(0)h(else.)0 4001 y Fs(4.10)68 b(F)-11
 b(unctions)30 b(on)g(\015oating-p)t(oin)l(t)i(n)l(um)l(b)t(ers)0
-4275 y Fp(Recall)27 b(that)g(a)f(\015oating-p)s(oin)m(t)h(n)m(um)m(b)s
-(er)d(consists)i(of)g(a)g(sign)g Fn(s)p Fp(,)g(an)g(exp)s(onen)m(t)g
-Fn(e)f Fp(and)g(a)i(man)m(tissa)e Fn(m)p Fp(.)39 b(The)25
+4275 y Fr(Recall)27 b(that)g(a)f(\015oating-p)s(oin)m(t)h(n)m(um)m(b)s
+(er)d(consists)i(of)g(a)g(sign)g Fp(s)p Fr(,)g(an)g(exp)s(onen)m(t)g
+Fp(e)f Fr(and)g(a)i(man)m(tissa)e Fp(m)p Fr(.)39 b(The)25
 b(v)-5 b(alue)0 4400 y(of)31 b(the)f(n)m(um)m(b)s(er)e(is)j
-Fn(\(-1\)^s)d(*)i(2^e)g(*)g(m)p Fp(.)0 4674 y(Eac)m(h)h(of)g(the)f
-(classes)i Fn(cl_F)p Fp(,)d Fn(cl_SF)p Fp(,)g Fn(cl_FF)p
-Fp(,)g Fn(cl_DF)p Fp(,)h Fn(cl_LF)e Fp(de\014nes)i(the)h(follo)m(wing)g
-(op)s(erations.)0 4966 y Fi(t)m(yp)s(e)36 b Fn(scale_float)27
-b(\(const)i Fi(t)m(yp)s(e)5 b Fn(&)30 b(x,)g(sintL)f(delta\))0
-5091 y Fi(t)m(yp)s(e)36 b Fn(scale_float)27 b(\(const)i
-Fi(t)m(yp)s(e)5 b Fn(&)30 b(x,)g(const)f(cl_I&)g(delta\))480
-5215 y Fp(Returns)35 b Fn(x*2^delta)p Fp(.)57 b(This)35
+Fp(\(-1\)^s)d(*)i(2^e)g(*)g(m)p Fr(.)0 4674 y(Eac)m(h)h(of)g(the)f
+(classes)i Fp(cl_F)p Fr(,)d Fp(cl_SF)p Fr(,)g Fp(cl_FF)p
+Fr(,)g Fp(cl_DF)p Fr(,)h Fp(cl_LF)e Fr(de\014nes)i(the)h(follo)m(wing)g
+(op)s(erations.)0 4966 y Fk(t)m(yp)s(e)36 b Fp(scale_float)27
+b(\(const)i Fk(t)m(yp)s(e)5 b Fp(&)30 b(x,)g(sintL)f(delta\))0
+5091 y Fk(t)m(yp)s(e)36 b Fp(scale_float)27 b(\(const)i
+Fk(t)m(yp)s(e)5 b Fp(&)30 b(x,)g(const)f(cl_I&)g(delta\))480
+5215 y Fr(Returns)35 b Fp(x*2^delta)p Fr(.)57 b(This)35
 b(is)h(more)g(e\016cien)m(t)i(than)e(an)g(explicit)i(m)m(ultiplication)
-f(b)s(ecause)f(it)480 5340 y(copies)31 b Fn(x)f Fp(and)g(mo)s(di\014es)
+f(b)s(ecause)f(it)480 5340 y(copies)31 b Fp(x)f Fr(and)g(mo)s(di\014es)
 f(the)h(exp)s(onen)m(t.)p eop
 %%Page: 31 33
-31 32 bop 0 -116 a Fp(Chapter)30 b(4:)41 b(F)-8 b(unctions)31
+31 32 bop 0 -116 a Fr(Chapter)30 b(4:)41 b(F)-8 b(unctions)31
 b(on)f(n)m(um)m(b)s(ers)2463 b(31)0 366 y(The)31 b(follo)m(wing)j
 (functions)d(pro)m(vide)h(an)g(abstract)h(in)m(terface)g(to)g(the)f
 (underlying)f(represen)m(tation)i(of)f(\015oating-)0
-491 y(p)s(oin)m(t)e(n)m(um)m(b)s(ers.)0 792 y Fn(sintL)f
-(float_exponent)d(\(const)j Fi(t)m(yp)s(e)5 b Fn(&)30
-b(x\))480 916 y Fp(Returns)g(the)h(exp)s(onen)m(t)g Fn(e)f
-Fp(of)h Fn(x)p Fp(.)41 b(F)-8 b(or)32 b Fn(x)e(=)g(0.0)p
-Fp(,)g(this)h(is)g(0.)42 b(F)-8 b(or)31 b Fn(x)g Fp(non-zero,)g(this)g
-(is)g(the)g(unique)480 1041 y(in)m(teger)h(with)e Fn(2^\(e-1\))e(<=)i
-(abs\(x\))f(<)h(2^e)p Fp(.)0 1217 y Fn(sintL)f(float_radix)e(\(const)i
-Fi(t)m(yp)s(e)5 b Fn(&)30 b(x\))480 1341 y Fp(Returns)f(the)i(base)g
+491 y(p)s(oin)m(t)e(n)m(um)m(b)s(ers.)0 792 y Fp(sintL)f
+(float_exponent)d(\(const)j Fk(t)m(yp)s(e)5 b Fp(&)30
+b(x\))480 916 y Fr(Returns)g(the)h(exp)s(onen)m(t)g Fp(e)f
+Fr(of)h Fp(x)p Fr(.)41 b(F)-8 b(or)32 b Fp(x)e(=)g(0.0)p
+Fr(,)g(this)h(is)g(0.)42 b(F)-8 b(or)31 b Fp(x)g Fr(non-zero,)g(this)g
+(is)g(the)g(unique)480 1041 y(in)m(teger)h(with)e Fp(2^\(e-1\))e(<=)i
+(abs\(x\))f(<)h(2^e)p Fr(.)0 1217 y Fp(sintL)f(float_radix)e(\(const)i
+Fk(t)m(yp)s(e)5 b Fp(&)30 b(x\))480 1341 y Fr(Returns)f(the)i(base)g
 (of)f(the)h(\015oating-p)s(oin)m(t)g(represen)m(tation.)42
-b(This)30 b(is)g(alw)m(a)m(ys)i Fn(2)p Fp(.)0 1518 y
-Fi(t)m(yp)s(e)k Fn(float_sign)27 b(\(const)i Fi(t)m(yp)s(e)5
-b Fn(&)30 b(x\))480 1642 y Fp(Returns)f(the)i(sign)f
-Fn(s)g Fp(of)h Fn(x)f Fp(as)h(a)f(\015oat.)42 b(The)30
-b(v)-5 b(alue)31 b(is)f(1)h(for)f Fn(x)g(>)p Fp(=)g(0,)h(-1)g(for)f
-Fn(x)g(<)g Fp(0.)0 1818 y Fn(uintL)f(float_digits)e(\(const)i
-Fi(t)m(yp)s(e)5 b Fn(&)30 b(x\))480 1943 y Fp(Returns)24
+b(This)30 b(is)g(alw)m(a)m(ys)i Fp(2)p Fr(.)0 1518 y
+Fk(t)m(yp)s(e)k Fp(float_sign)27 b(\(const)i Fk(t)m(yp)s(e)5
+b Fp(&)30 b(x\))480 1642 y Fr(Returns)f(the)i(sign)f
+Fp(s)g Fr(of)h Fp(x)f Fr(as)h(a)f(\015oat.)42 b(The)30
+b(v)-5 b(alue)31 b(is)f(1)h(for)f Fp(x)g(>)p Fr(=)g(0,)h(-1)g(for)f
+Fp(x)g(<)g Fr(0.)0 1818 y Fp(uintL)f(float_digits)e(\(const)i
+Fk(t)m(yp)s(e)5 b Fp(&)30 b(x\))480 1943 y Fr(Returns)24
 b(the)h(n)m(um)m(b)s(er)e(of)i(man)m(tissa)g(bits)f(in)h(the)g
-(\015oating-p)s(oin)m(t)h(represen)m(tation)g(of)f Fn(x)p
-Fp(,)h(including)480 2067 y(the)31 b(hidden)e(bit.)40
+(\015oating-p)s(oin)m(t)h(represen)m(tation)g(of)f Fp(x)p
+Fr(,)h(including)480 2067 y(the)31 b(hidden)e(bit.)40
 b(The)30 b(v)-5 b(alue)31 b(only)g(dep)s(ends)d(on)i(the)h(t)m(yp)s(e)f
-(of)h Fn(x)p Fp(,)f(not)h(on)f(its)h(v)-5 b(alue.)0 2243
-y Fn(uintL)29 b(float_precision)d(\(const)j Fi(t)m(yp)s(e)5
-b Fn(&)30 b(x\))480 2368 y Fp(Returns)21 b(the)h(n)m(um)m(b)s(er)d(of)j
+(of)h Fp(x)p Fr(,)f(not)h(on)f(its)h(v)-5 b(alue.)0 2243
+y Fp(uintL)29 b(float_precision)d(\(const)j Fk(t)m(yp)s(e)5
+b Fp(&)30 b(x\))480 2368 y Fr(Returns)21 b(the)h(n)m(um)m(b)s(er)d(of)j
 (signi\014can)m(t)h(man)m(tissa)f(bits)g(in)f(the)h(\015oating-p)s(oin)
-m(t)h(represen)m(tation)g(of)f Fn(x)p Fp(.)480 2493 y(Since)32
+m(t)h(represen)m(tation)g(of)f Fp(x)p Fr(.)480 2493 y(Since)32
 b(denormalized)f(n)m(um)m(b)s(ers)e(are)j(not)f(supp)s(orted,)g(this)g
-(is)h(the)f(same)g(as)h Fn(float_digits\(x\))480 2617
-y Fp(if)e Fn(x)g Fp(is)h(non-zero,)g(and)f(0)g(if)h Fn(x)f
-Fp(=)g(0.)0 2918 y(The)h(complete)h(in)m(ternal)h(represen)m(tation)g
+(is)h(the)f(same)g(as)h Fp(float_digits\(x\))480 2617
+y Fr(if)e Fp(x)g Fr(is)h(non-zero,)g(and)f(0)g(if)h Fp(x)f
+Fr(=)g(0.)0 2918 y(The)h(complete)h(in)m(ternal)h(represen)m(tation)g
 (of)f(a)g(\015oat)g(is)g(enco)s(ded)f(in)h(the)g(t)m(yp)s(e)f
-Fn(cl_decoded_float)d Fp(\(or)k Fn(cl_)0 3042 y(decoded_sfloat)p
-Fp(,)39 b Fn(cl_decoded_ffloat)p Fp(,)f Fn(cl_decoded_dfloat)p
-Fp(,)h Fn(cl_decoded_lfloat)p Fp(,)f(resp)s(ectiv)m(ely\),)0
-3167 y(de\014ned)29 b(b)m(y)240 3421 y Fn(struct)46 b(cl_decoded_)p
-Fi(t)m(yp)s(e)5 b Fn(float)44 b({)622 3525 y Fi(t)m(yp)s(e)53
-b Fn(mantissa;)45 b(cl_I)i(exponent;)e Fi(t)m(yp)s(e)53
-b Fn(sign;)240 3628 y(};)0 3903 y Fp(and)30 b(returned)f(b)m(y)h(the)h
-(function)0 4204 y Fn(cl_decoded_)p Fi(t)m(yp)s(e)5 b
-Fn(float)26 b(decode_float)h(\(const)i Fi(t)m(yp)s(e)5
-b Fn(&)30 b(x\))480 4329 y Fp(F)-8 b(or)38 b Fn(x)f Fp(non-zero,)j
-(this)d(returns)f Fn(\(-1\)^s)p Fp(,)h Fn(e)p Fp(,)i
-Fn(m)e Fp(with)g Fn(x)30 b(=)g(\(-1\)^s)f(*)h(2^e)f(*)h(m)37
-b Fp(and)g Fn(0.5)29 b(<=)h(m)g(<)480 4453 y(1.0)p Fp(.)63
-b(F)-8 b(or)39 b Fn(x)f Fp(=)g(0,)i(it)f(returns)e Fn(\(-1\)^s)p
-Fp(=1,)i Fn(e)p Fp(=0,)h Fn(m)p Fp(=0.)64 b Fn(e)37 b
-Fp(is)i(the)f(same)f(as)i(returned)e(b)m(y)h(the)480
-4578 y(function)30 b Fn(float_exponent)p Fp(.)0 4878
+Fp(cl_decoded_float)d Fr(\(or)k Fp(cl_)0 3042 y(decoded_sfloat)p
+Fr(,)39 b Fp(cl_decoded_ffloat)p Fr(,)f Fp(cl_decoded_dfloat)p
+Fr(,)h Fp(cl_decoded_lfloat)p Fr(,)f(resp)s(ectiv)m(ely\),)0
+3167 y(de\014ned)29 b(b)m(y)240 3421 y Fp(struct)46 b(cl_decoded_)p
+Fk(t)m(yp)s(e)5 b Fp(float)44 b({)622 3525 y Fk(t)m(yp)s(e)53
+b Fp(mantissa;)45 b(cl_I)i(exponent;)e Fk(t)m(yp)s(e)53
+b Fp(sign;)240 3628 y(};)0 3903 y Fr(and)30 b(returned)f(b)m(y)h(the)h
+(function)0 4204 y Fp(cl_decoded_)p Fk(t)m(yp)s(e)5 b
+Fp(float)26 b(decode_float)h(\(const)i Fk(t)m(yp)s(e)5
+b Fp(&)30 b(x\))480 4329 y Fr(F)-8 b(or)38 b Fp(x)f Fr(non-zero,)j
+(this)d(returns)f Fp(\(-1\)^s)p Fr(,)h Fp(e)p Fr(,)i
+Fp(m)e Fr(with)g Fp(x)30 b(=)g(\(-1\)^s)f(*)h(2^e)f(*)h(m)37
+b Fr(and)g Fp(0.5)29 b(<=)h(m)g(<)480 4453 y(1.0)p Fr(.)63
+b(F)-8 b(or)39 b Fp(x)f Fr(=)g(0,)i(it)f(returns)e Fp(\(-1\)^s)p
+Fr(=1,)i Fp(e)p Fr(=0,)h Fp(m)p Fr(=0.)64 b Fp(e)37 b
+Fr(is)i(the)f(same)f(as)i(returned)e(b)m(y)h(the)480
+4578 y(function)30 b Fp(float_exponent)p Fr(.)0 4878
 y(A)g(complete)h(deco)s(ding)g(in)f(terms)f(of)i(in)m(tegers)g(is)g
-(pro)m(vided)f(as)g(t)m(yp)s(e)240 5132 y Fn(struct)46
+(pro)m(vided)f(as)g(t)m(yp)s(e)240 5132 y Fp(struct)46
 b(cl_idecoded_float)d({)622 5236 y(cl_I)j(mantissa;)g(cl_I)g(exponent;)
 g(cl_I)g(sign;)240 5340 y(};)p eop
 %%Page: 32 34
-32 33 bop 0 -116 a Fp(Chapter)30 b(4:)41 b(F)-8 b(unctions)31
+32 33 bop 0 -116 a Fr(Chapter)30 b(4:)41 b(F)-8 b(unctions)31
 b(on)f(n)m(um)m(b)s(ers)2463 b(32)0 366 y(b)m(y)30 b(the)h(follo)m
-(wing)h(function:)0 670 y Fn(cl_idecoded_float)26 b
-(integer_decode_float)e(\(const)29 b Fi(t)m(yp)s(e)5
-b Fn(&)31 b(x\))480 794 y Fp(F)-8 b(or)33 b Fn(x)g Fp(non-zero,)h(this)
-e(returns)g Fn(\(-1\)^s)p Fp(,)f Fn(e)p Fp(,)j Fn(m)e
-Fp(with)g Fn(x)e(=)g(\(-1\)^s)f(*)h(2^e)f(*)h(m)j Fp(and)f
-Fn(m)g Fp(an)h(in)m(teger)480 919 y(with)e Fn(float_digits\(x\))c
-Fp(bits.)43 b(F)-8 b(or)32 b Fn(x)f Fp(=)g(0,)h(it)g(returns)e
-Fn(\(-1\)^s)p Fp(=1,)g Fn(e)p Fp(=0,)i Fn(m)p Fp(=0.)43
+(wing)h(function:)0 670 y Fp(cl_idecoded_float)26 b
+(integer_decode_float)e(\(const)29 b Fk(t)m(yp)s(e)5
+b Fp(&)31 b(x\))480 794 y Fr(F)-8 b(or)33 b Fp(x)g Fr(non-zero,)h(this)
+e(returns)g Fp(\(-1\)^s)p Fr(,)f Fp(e)p Fr(,)j Fp(m)e
+Fr(with)g Fp(x)e(=)g(\(-1\)^s)f(*)h(2^e)f(*)h(m)j Fr(and)f
+Fp(m)g Fr(an)h(in)m(teger)480 919 y(with)e Fp(float_digits\(x\))c
+Fr(bits.)43 b(F)-8 b(or)32 b Fp(x)f Fr(=)g(0,)h(it)g(returns)e
+Fp(\(-1\)^s)p Fr(=1,)g Fp(e)p Fr(=0,)i Fp(m)p Fr(=0.)43
 b(W)-10 b(ARNING:)480 1043 y(The)35 b(exp)s(onen)m(t)h
-Fn(e)f Fp(is)h(not)g(the)g(same)f(as)h(the)g(one)g(returned)f(b)m(y)g
-(the)h(functions)f Fn(decode_float)480 1168 y Fp(and)30
-b Fn(float_exponent)p Fp(.)0 1471 y(Some)f(other)i(function,)f
-(implemen)m(ted)f(only)i(for)f(class)h Fn(cl_F)p Fp(:)0
-1774 y Fn(cl_F)e(float_sign)f(\(const)g(cl_F&)h(x,)h(const)f(cl_F&)g
-(y\))480 1899 y Fp(This)34 b(returns)g(a)i(\015oating)g(p)s(oin)m(t)f
+Fp(e)f Fr(is)h(not)g(the)g(same)f(as)h(the)g(one)g(returned)f(b)m(y)g
+(the)h(functions)f Fp(decode_float)480 1168 y Fr(and)30
+b Fp(float_exponent)p Fr(.)0 1471 y(Some)f(other)i(function,)f
+(implemen)m(ted)f(only)i(for)f(class)h Fp(cl_F)p Fr(:)0
+1774 y Fp(cl_F)e(float_sign)f(\(const)g(cl_F&)h(x,)h(const)f(cl_F&)g
+(y\))480 1899 y Fr(This)34 b(returns)g(a)i(\015oating)g(p)s(oin)m(t)f
 (n)m(um)m(b)s(er)e(whose)i(precision)h(and)e(absolute)i(v)-5
-b(alue)36 b(is)f(that)h(of)f Fn(y)480 2023 y Fp(and)30
-b(whose)g(sign)g(is)h(that)g(of)f Fn(x)p Fp(.)41 b(If)30
-b Fn(x)g Fp(is)g(zero,)h(it)g(is)g(treated)g(as)g(p)s(ositiv)m(e.)41
-b(Same)30 b(for)g Fn(y)p Fp(.)0 2491 y Fq(4.11)68 b(Con)l(v)l(ersion)32
-b(functions)0 2925 y Fk(4.11.1)63 b(Con)m(v)m(ersion)31
+b(alue)36 b(is)f(that)h(of)f Fp(y)480 2023 y Fr(and)30
+b(whose)g(sign)g(is)h(that)g(of)f Fp(x)p Fr(.)41 b(If)30
+b Fp(x)g Fr(is)g(zero,)h(it)g(is)g(treated)g(as)g(p)s(ositiv)m(e.)41
+b(Same)30 b(for)g Fp(y)p Fr(.)0 2491 y Fs(4.11)68 b(Con)l(v)l(ersion)32
+b(functions)0 2925 y Fm(4.11.1)63 b(Con)m(v)m(ersion)31
 b(to)f(\015oating-p)s(oin)m(t)h(n)m(um)m(b)s(ers)0 3201
-y Fp(The)f(t)m(yp)s(e)g Fn(cl_float_format_t)c Fp(describ)s(es)k(a)g
-(\015oating-p)s(oin)m(t)i(format.)0 3505 y Fn(cl_float_format_t)26
-b(cl_float_format)g(\(uintL)j(n\))480 3629 y Fp(Returns)40
+y Fr(The)f(t)m(yp)s(e)g Fp(cl_float_format_t)c Fr(describ)s(es)k(a)g
+(\015oating-p)s(oin)m(t)i(format.)0 3505 y Fp(cl_float_format_t)26
+b(cl_float_format)g(\(uintL)j(n\))480 3629 y Fr(Returns)40
 b(the)h(smallest)g(\015oat)h(format)e(whic)m(h)h(guaran)m(tees)h(at)g
-(least)g Fn(n)f Fp(decimal)g(digits)g(in)g(the)480 3754
+(least)g Fp(n)f Fr(decimal)g(digits)g(in)g(the)480 3754
 y(man)m(tissa)30 b(\(after)i(the)e(decimal)g(p)s(oin)m(t\).)0
-3932 y Fn(cl_float_format_t)c(cl_float_format)g(\(const)j(cl_F&)f(x\))
-480 4057 y Fp(Returns)h(the)i(\015oating)g(p)s(oin)m(t)g(format)e(of)i
-Fn(x)p Fp(.)0 4236 y Fn(cl_float_format_t)26 b(cl_default_float_format)
-480 4360 y Fp(Global)41 b(v)-5 b(ariable:)60 b(the)40
+3932 y Fp(cl_float_format_t)c(cl_float_format)g(\(const)j(cl_F&)f(x\))
+480 4057 y Fr(Returns)h(the)i(\015oating)g(p)s(oin)m(t)g(format)e(of)i
+Fp(x)p Fr(.)0 4236 y Fp(cl_float_format_t)26 b(cl_default_float_format)
+480 4360 y Fr(Global)41 b(v)-5 b(ariable:)60 b(the)40
 b(default)g(\015oat)g(format)f(used)g(when)g(con)m(v)m(erting)i
 (rational)g(n)m(um)m(b)s(ers)c(to)480 4485 y(\015oats.)0
 4788 y(T)-8 b(o)37 b(con)m(v)m(ert)i(a)f(real)f(n)m(um)m(b)s(er)e(to)j
-(a)f(\015oat,)j(eac)m(h)e(of)f(the)g(t)m(yp)s(es)g Fn(cl_R)p
-Fp(,)h Fn(cl_F)p Fp(,)g Fn(cl_I)p Fp(,)g Fn(cl_RA)p Fp(,)f
-Fn(int)p Fp(,)h Fn(unsigned)0 4912 y(int)p Fp(,)30 b
-Fn(float)p Fp(,)f Fn(double)g Fp(de\014nes)g(the)i(follo)m(wing)g(op)s
-(erations:)0 5215 y Fn(cl_F)e(cl_float)f(\(const)h Fi(t)m(yp)s(e)5
-b Fn(&x,)30 b(cl_float_format_t)25 b(f\))480 5340 y Fp(Returns)k
-Fn(x)h Fp(as)h(a)g(\015oat)g(of)f(format)g Fn(f)p Fp(.)p
+(a)f(\015oat,)j(eac)m(h)e(of)f(the)g(t)m(yp)s(es)g Fp(cl_R)p
+Fr(,)h Fp(cl_F)p Fr(,)g Fp(cl_I)p Fr(,)g Fp(cl_RA)p Fr(,)f
+Fp(int)p Fr(,)h Fp(unsigned)0 4912 y(int)p Fr(,)30 b
+Fp(float)p Fr(,)f Fp(double)g Fr(de\014nes)g(the)i(follo)m(wing)g(op)s
+(erations:)0 5215 y Fp(cl_F)e(cl_float)f(\(const)h Fk(t)m(yp)s(e)5
+b Fp(&x,)30 b(cl_float_format_t)25 b(f\))480 5340 y Fr(Returns)k
+Fp(x)h Fr(as)h(a)g(\015oat)g(of)f(format)g Fp(f)p Fr(.)p
 eop
 %%Page: 33 35
-33 34 bop 0 -116 a Fp(Chapter)30 b(4:)41 b(F)-8 b(unctions)31
-b(on)f(n)m(um)m(b)s(ers)2463 b(33)0 366 y Fn(cl_F)29
-b(cl_float)f(\(const)h Fi(t)m(yp)s(e)5 b Fn(&x,)30 b(const)f(cl_F&)g
-(y\))480 491 y Fp(Returns)g Fn(x)h Fp(in)h(the)f(\015oat)h(format)f(of)
-g Fn(y)p Fp(.)0 667 y Fn(cl_F)f(cl_float)f(\(const)h
-Fi(t)m(yp)s(e)5 b Fn(&x\))480 792 y Fp(Returns)30 b Fn(x)g
-Fp(as)h(a)g(\015oat)h(of)f(format)f Fn(cl_default_float_format)24
-b Fp(if)31 b(it)g(is)g(an)g(exact)h(n)m(um)m(b)s(er,)d(or)480
-916 y Fn(x)h Fp(itself)h(if)g(it)f(is)h(already)g(a)g(\015oat.)0
+33 34 bop 0 -116 a Fr(Chapter)30 b(4:)41 b(F)-8 b(unctions)31
+b(on)f(n)m(um)m(b)s(ers)2463 b(33)0 366 y Fp(cl_F)29
+b(cl_float)f(\(const)h Fk(t)m(yp)s(e)5 b Fp(&x,)30 b(const)f(cl_F&)g
+(y\))480 491 y Fr(Returns)g Fp(x)h Fr(in)h(the)f(\015oat)h(format)f(of)
+g Fp(y)p Fr(.)0 667 y Fp(cl_F)f(cl_float)f(\(const)h
+Fk(t)m(yp)s(e)5 b Fp(&x\))480 792 y Fr(Returns)30 b Fp(x)g
+Fr(as)h(a)g(\015oat)h(of)f(format)f Fp(cl_default_float_format)24
+b Fr(if)31 b(it)g(is)g(an)g(exact)h(n)m(um)m(b)s(er,)d(or)480
+916 y Fp(x)h Fr(itself)h(if)g(it)f(is)h(already)g(a)g(\015oat.)0
 1217 y(Of)f(course,)h(con)m(v)m(erting)h(a)f(n)m(um)m(b)s(er)d(to)j(a)f
 (\015oat)i(can)e(lose)h(precision.)0 1491 y(Ev)m(ery)g(\015oating-p)s
 (oin)m(t)g(format)f(has)g(some)g(c)m(haracteristic)j(n)m(um)m(b)s(ers:)
-0 1792 y Fn(cl_F)c(most_positive_float)c(\(cl_float_format_t)h(f\))480
-1916 y Fp(Returns)j(the)i(largest)h(\(most)e(p)s(ositiv)m(e\))i
+0 1792 y Fp(cl_F)c(most_positive_float)c(\(cl_float_format_t)h(f\))480
+1916 y Fr(Returns)j(the)i(largest)h(\(most)e(p)s(ositiv)m(e\))i
 (\015oating)f(p)s(oin)m(t)f(n)m(um)m(b)s(er)e(in)i(\015oat)h(format)f
-Fn(f)p Fp(.)0 2092 y Fn(cl_F)f(most_negative_float)c
-(\(cl_float_format_t)h(f\))480 2217 y Fp(Returns)j(the)i(smallest)g
+Fp(f)p Fr(.)0 2092 y Fp(cl_F)f(most_negative_float)c
+(\(cl_float_format_t)h(f\))480 2217 y Fr(Returns)j(the)i(smallest)g
 (\(most)f(negativ)m(e\))j(\015oating)e(p)s(oin)m(t)f(n)m(um)m(b)s(er)e
-(in)i(\015oat)h(format)f Fn(f)p Fp(.)0 2393 y Fn(cl_F)f
+(in)i(\015oat)h(format)f Fp(f)p Fr(.)0 2393 y Fp(cl_F)f
 (least_positive_float)c(\(cl_float_format_t)g(f\))480
-2517 y Fp(Returns)39 b(the)i(least)g(p)s(ositiv)m(e)g(\015oating)g(p)s
-(oin)m(t)f(n)m(um)m(b)s(er)e(\(i.e.)71 b Fn(>)40 b Fp(0)h(but)e
+2517 y Fr(Returns)39 b(the)i(least)g(p)s(ositiv)m(e)g(\015oating)g(p)s
+(oin)m(t)f(n)m(um)m(b)s(er)e(\(i.e.)71 b Fp(>)40 b Fr(0)h(but)e
 (closest)j(to)f(0\))f(in)g(\015oat)480 2642 y(format)30
-b Fn(f)p Fp(.)0 2818 y Fn(cl_F)f(least_negative_float)c
-(\(cl_float_format_t)g(f\))480 2943 y Fp(Returns)38 b(the)h(least)h
+b Fp(f)p Fr(.)0 2818 y Fp(cl_F)f(least_negative_float)c
+(\(cl_float_format_t)g(f\))480 2943 y Fr(Returns)38 b(the)h(least)h
 (negativ)m(e)h(\015oating)f(p)s(oin)m(t)f(n)m(um)m(b)s(er)d(\(i.e.)67
-b Fn(<)39 b Fp(0)g(but)f(closest)j(to)e(0\))h(in)e(\015oat)480
-3067 y(format)30 b Fn(f)p Fp(.)0 3243 y Fn(cl_F)f(float_epsilon)e
-(\(cl_float_format_t)e(f\))480 3368 y Fp(Returns)k(the)i(smallest)g
-(\015oating)g(p)s(oin)m(t)f(n)m(um)m(b)s(er)e(e)j Fn(>)f
-Fp(0)h(suc)m(h)f(that)h Fn(1+e)e(!=)h(1)p Fp(.)0 3544
-y Fn(cl_F)f(float_negative_epsilon)c(\(cl_float_format_t)g(f\))480
-3668 y Fp(Returns)k(the)i(smallest)g(\015oating)g(p)s(oin)m(t)f(n)m(um)
-m(b)s(er)e(e)j Fn(>)f Fp(0)h(suc)m(h)f(that)h Fn(1-e)e(!=)h(1)p
-Fp(.)0 4091 y Fk(4.11.2)63 b(Con)m(v)m(ersion)31 b(to)f(rational)g(n)m
-(um)m(b)s(ers)0 4365 y Fp(Eac)m(h)h(of)g(the)f(classes)i
-Fn(cl_R)p Fp(,)d Fn(cl_RA)p Fp(,)g Fn(cl_F)g Fp(de\014nes)h(the)g
-(follo)m(wing)i(op)s(eration:)0 4666 y Fn(cl_RA)d(rational)f(\(const)h
-Fi(t)m(yp)s(e)5 b Fn(&)30 b(x\))480 4790 y Fp(Returns)g(the)h(v)-5
-b(alue)32 b(of)f Fn(x)f Fp(as)i(an)e(exact)j(n)m(um)m(b)s(er.)40
-b(If)31 b Fn(x)f Fp(is)h(already)h(an)f(exact)h(n)m(um)m(b)s(er,)d
-(this)i(is)g Fn(x)p Fp(.)480 4915 y(If)f Fn(x)g Fp(is)g(a)h
+b Fp(<)39 b Fr(0)g(but)f(closest)j(to)e(0\))h(in)e(\015oat)480
+3067 y(format)30 b Fp(f)p Fr(.)0 3243 y Fp(cl_F)f(float_epsilon)e
+(\(cl_float_format_t)e(f\))480 3368 y Fr(Returns)k(the)i(smallest)g
+(\015oating)g(p)s(oin)m(t)f(n)m(um)m(b)s(er)e(e)j Fp(>)f
+Fr(0)h(suc)m(h)f(that)h Fp(1+e)e(!=)h(1)p Fr(.)0 3544
+y Fp(cl_F)f(float_negative_epsilon)c(\(cl_float_format_t)g(f\))480
+3668 y Fr(Returns)k(the)i(smallest)g(\015oating)g(p)s(oin)m(t)f(n)m(um)
+m(b)s(er)e(e)j Fp(>)f Fr(0)h(suc)m(h)f(that)h Fp(1-e)e(!=)h(1)p
+Fr(.)0 4091 y Fm(4.11.2)63 b(Con)m(v)m(ersion)31 b(to)f(rational)g(n)m
+(um)m(b)s(ers)0 4365 y Fr(Eac)m(h)h(of)g(the)f(classes)i
+Fp(cl_R)p Fr(,)d Fp(cl_RA)p Fr(,)g Fp(cl_F)g Fr(de\014nes)h(the)g
+(follo)m(wing)i(op)s(eration:)0 4666 y Fp(cl_RA)d(rational)f(\(const)h
+Fk(t)m(yp)s(e)5 b Fp(&)30 b(x\))480 4790 y Fr(Returns)g(the)h(v)-5
+b(alue)32 b(of)f Fp(x)f Fr(as)i(an)e(exact)j(n)m(um)m(b)s(er.)40
+b(If)31 b Fp(x)f Fr(is)h(already)h(an)f(exact)h(n)m(um)m(b)s(er,)d
+(this)i(is)g Fp(x)p Fr(.)480 4915 y(If)f Fp(x)g Fr(is)g(a)h
 (\015oating-p)s(oin)m(t)g(n)m(um)m(b)s(er,)d(the)j(v)-5
 b(alue)30 b(is)h(a)f(rational)i(n)m(um)m(b)s(er)c(whose)i(denominator)f
 (is)i(a)480 5039 y(p)s(o)m(w)m(er)f(of)h(2.)0 5340 y(In)f(order)g(to)h
-(con)m(v)m(ert)h(bac)m(k,)f(sa)m(y)-8 b(,)32 b Fn
-(\(cl_F\)\(cl_R\)"1/3")25 b Fp(to)31 b Fn(1/3)p Fp(,)f(there)h(is)f
+(con)m(v)m(ert)h(bac)m(k,)f(sa)m(y)-8 b(,)32 b Fp
+(\(cl_F\)\(cl_R\)"1/3")25 b Fr(to)31 b Fp(1/3)p Fr(,)f(there)h(is)f
 (the)h(function)p eop
 %%Page: 34 36
-34 35 bop 0 -116 a Fp(Chapter)30 b(4:)41 b(F)-8 b(unctions)31
-b(on)f(n)m(um)m(b)s(ers)2463 b(34)0 366 y Fn(cl_RA)29
-b(rationalize)e(\(const)i(cl_R&)g(x\))480 491 y Fp(If)i
-Fn(x)h Fp(is)g(a)g(\015oating-p)s(oin)m(t)i(n)m(um)m(b)s(er,)c(it)i
+34 35 bop 0 -116 a Fr(Chapter)30 b(4:)41 b(F)-8 b(unctions)31
+b(on)f(n)m(um)m(b)s(ers)2463 b(34)0 366 y Fp(cl_RA)29
+b(rationalize)e(\(const)i(cl_R&)g(x\))480 491 y Fr(If)i
+Fp(x)h Fr(is)g(a)g(\015oating-p)s(oin)m(t)i(n)m(um)m(b)s(er,)c(it)i
 (actually)i(represen)m(ts)e(an)g(in)m(terv)-5 b(al)33
 b(of)f(real)g(n)m(um)m(b)s(ers,)f(and)480 616 y(this)43
 b(function)g(returns)f(the)h(rational)i(n)m(um)m(b)s(er)40
 b(with)j(smallest)h(denominator)e(\(and)h(smallest)480
 740 y(n)m(umerator,)31 b(in)h(magnitude\))f(whic)m(h)h(lies)g(in)g
-(this)g(in)m(terv)-5 b(al.)46 b(If)31 b Fn(x)h Fp(is)g(already)g(an)g
+(this)g(in)m(terv)-5 b(al.)46 b(If)31 b Fp(x)h Fr(is)g(already)g(an)g
 (exact)h(n)m(um)m(b)s(er,)480 865 y(this)d(function)g(returns)f
-Fn(x)p Fp(.)0 1185 y(If)h Fn(x)g Fp(is)g(an)m(y)h(\015oat,)g(one)g(has)
-180 1470 y Fn(cl_float\(rational\(x\),x\))24 b(=)30 b(x)180
+Fp(x)p Fr(.)0 1185 y(If)h Fp(x)g Fr(is)g(an)m(y)h(\015oat,)g(one)g(has)
+180 1470 y Fp(cl_float\(rational\(x\),x\))24 b(=)30 b(x)180
 1630 y(cl_float\(rationalize\(x\),)o(x\))24 b(=)30 b(x)0
-2175 y Fq(4.12)68 b(Random)31 b(n)l(um)l(b)t(er)f(generators)0
-2460 y Fp(A)c(random)f(generator)j(is)e(a)h(mac)m(hine)f(whic)m(h)g
+2175 y Fs(4.12)68 b(Random)31 b(n)l(um)l(b)t(er)f(generators)0
+2460 y Fr(A)c(random)f(generator)j(is)e(a)h(mac)m(hine)f(whic)m(h)g
 (pro)s(duces)f(\(pseudo-\)random)g(n)m(um)m(b)s(ers.)37
-b(The)26 b(include)g(\014le)g Fn(<cl_)0 2585 y(random.h>)34
-b Fp(de\014nes)i(a)i(class)f Fn(cl_random_state)c Fp(whic)m(h)j(con)m
+b(The)26 b(include)g(\014le)g Fp(<cl_)0 2585 y(random.h>)34
+b Fr(de\014nes)i(a)i(class)f Fp(cl_random_state)c Fr(whic)m(h)j(con)m
 (tains)i(the)g(state)g(of)f(a)g(random)e(generator.)61
 b(If)0 2709 y(y)m(ou)31 b(mak)m(e)g(a)g(cop)m(y)h(of)f(the)g(random)e
 (n)m(um)m(b)s(er)f(generator,)k(the)f(original)h(one)f(and)f(the)h(cop)
@@ -3106,216 +3380,216 @@ m(y)h(will)f(pro)s(duce)f(the)0 2834 y(same)g(sequence)h(of)f(random)f
 39 b(Calling)28 b(one)g(of)f(these)0 3243 y(mo)s(di\014es)i(the)h
 (state)i(of)e(the)h(random)e(n)m(um)m(b)s(er)f(generator)j(in)f(a)h
 (complicated)g(but)f(deterministic)g(w)m(a)m(y)-8 b(.)0
-3528 y(The)30 b(global)i(v)-5 b(ariable)240 3792 y Fn(cl_random_state)
-44 b(cl_default_random_state)0 4076 y Fp(con)m(tains)25
+3528 y(The)30 b(global)i(v)-5 b(ariable)240 3792 y Fp(cl_random_state)
+44 b(cl_default_random_state)0 4076 y Fr(con)m(tains)25
 b(a)e(default)h(random)d(n)m(um)m(b)s(er)g(generator.)40
 b(It)23 b(is)h(used)e(when)h(the)g(functions)g(b)s(elo)m(w)h(are)f
-(called)i(without)0 4201 y Fn(cl_random_state)h Fp(argumen)m(t.)0
-4521 y Fn(uint32)j(random32)f(\(cl_random_state&)d(randomstate\))0
-4646 y(uint32)k(random32)f(\(\))480 4770 y Fp(Returns)h(a)i(random)e
+(called)i(without)0 4201 y Fp(cl_random_state)h Fr(argumen)m(t.)0
+4521 y Fp(uint32)j(random32)f(\(cl_random_state&)d(randomstate\))0
+4646 y(uint32)k(random32)f(\(\))480 4770 y Fr(Returns)h(a)i(random)e
 (unsigned)g(32-bit)j(n)m(um)m(b)s(er.)38 b(All)31 b(bits)f(are)h
-(equally)g(random.)0 4966 y Fn(cl_I)e(random_I)f(\(cl_random_state&)e
+(equally)g(random.)0 4966 y Fp(cl_I)e(random_I)f(\(cl_random_state&)e
 (randomstate,)h(const)i(cl_I&)g(n\))0 5091 y(cl_I)g(random_I)f(\(const)
-h(cl_I&)g(n\))480 5215 y(n)i Fp(m)m(ust)g(b)s(e)g(an)h(in)m(teger)h
-Fn(>)f Fp(0.)45 b(This)31 b(function)g(returns)g(a)h(random)e(in)m
-(teger)j Fn(x)f Fp(in)f(the)h(range)h Fn(0)d(<=)480 5340
-y(x)g(<)g(n)p Fp(.)p eop
+h(cl_I&)g(n\))480 5215 y(n)i Fr(m)m(ust)g(b)s(e)g(an)h(in)m(teger)h
+Fp(>)f Fr(0.)45 b(This)31 b(function)g(returns)g(a)h(random)e(in)m
+(teger)j Fp(x)f Fr(in)f(the)h(range)h Fp(0)d(<=)480 5340
+y(x)g(<)g(n)p Fr(.)p eop
 %%Page: 35 37
-35 36 bop 0 -116 a Fp(Chapter)30 b(4:)41 b(F)-8 b(unctions)31
-b(on)f(n)m(um)m(b)s(ers)2463 b(35)0 366 y Fn(cl_F)29
+35 36 bop 0 -116 a Fr(Chapter)30 b(4:)41 b(F)-8 b(unctions)31
+b(on)f(n)m(um)m(b)s(ers)2463 b(35)0 366 y Fp(cl_F)29
 b(random_F)f(\(cl_random_state&)e(randomstate,)h(const)i(cl_F&)g(n\))0
 491 y(cl_F)g(random_F)f(\(const)h(cl_F&)g(n\))480 616
-y(n)36 b Fp(m)m(ust)g(b)s(e)g(a)h(\015oat)g Fn(>)g Fp(0.)60
+y(n)36 b Fr(m)m(ust)g(b)s(e)g(a)h(\015oat)g Fp(>)g Fr(0.)60
 b(This)36 b(function)g(returns)g(a)h(random)e(\015oating-p)s(oin)m(t)j
 (n)m(um)m(b)s(er)c(of)j(the)480 740 y(same)30 b(format)f(as)i
-Fn(n)f Fp(in)g(the)h(range)f Fn(0)h(<=)e(x)h(<)g(n)p
-Fp(.)0 932 y Fn(cl_R)f(random_R)f(\(cl_random_state&)e(randomstate,)h
+Fp(n)f Fr(in)g(the)h(range)f Fp(0)h(<=)e(x)h(<)g(n)p
+Fr(.)0 932 y Fp(cl_R)f(random_R)f(\(cl_random_state&)e(randomstate,)h
 (const)i(cl_R&)g(n\))0 1057 y(cl_R)g(random_R)f(\(const)h(cl_R&)g(n\))
-480 1181 y Fp(Beha)m(v)m(es)j(lik)m(e)g Fn(random_I)c
-Fp(if)i Fn(n)g Fp(is)h(an)f(in)m(teger)i(and)e(lik)m(e)h
-Fn(random_F)d Fp(if)j Fn(n)f Fp(is)g(a)h(\015oat.)0 1709
-y Fq(4.13)68 b(Obfuscating)31 b(op)t(erators)0 1991 y
-Fp(The)i(mo)s(difying)f(C/C)p Fn(++)h Fp(op)s(erators)h
-Fn(+=)p Fp(,)g Fn(-=)p Fp(,)g Fn(*=)p Fp(,)h Fn(/=)p
-Fp(,)f Fn(&=)p Fp(,)g Fn(|=)p Fp(,)g Fn(^=)p Fp(,)g Fn(<<=)p
-Fp(,)g Fn(>>=)f Fp(are)h(not)g(a)m(v)-5 b(ailable)36
+480 1181 y Fr(Beha)m(v)m(es)j(lik)m(e)g Fp(random_I)c
+Fr(if)i Fp(n)g Fr(is)h(an)f(in)m(teger)i(and)e(lik)m(e)h
+Fp(random_F)d Fr(if)j Fp(n)f Fr(is)g(a)h(\015oat.)0 1709
+y Fs(4.13)68 b(Obfuscating)31 b(op)t(erators)0 1991 y
+Fr(The)i(mo)s(difying)f(C/C)p Fp(++)h Fr(op)s(erators)h
+Fp(+=)p Fr(,)g Fp(-=)p Fr(,)g Fp(*=)p Fr(,)h Fp(/=)p
+Fr(,)f Fp(&=)p Fr(,)g Fp(|=)p Fr(,)g Fp(^=)p Fr(,)g Fp(<<=)p
+Fr(,)g Fp(>>=)f Fr(are)h(not)g(a)m(v)-5 b(ailable)36
 b(b)m(y)e(default)0 2116 y(b)s(ecause)41 b(their)g(use)g(tends)g(to)g
 (mak)m(e)g(programs)f(unreadable.)72 b(It)41 b(is)h(trivial)g(to)g(get)
 g(a)m(w)m(a)m(y)h(without)e(them.)0 2240 y(Ho)m(w)m(ev)m(er,)33
 b(if)d(y)m(ou)h(feel)g(that)g(y)m(ou)g(absolutely)g(need)f(these)h(op)s
 (erators)f(to)h(get)h(happ)m(y)-8 b(,)30 b(then)g(add)240
-2502 y Fn(#define)46 b(WANT_OBFUSCATING_OPERATO)o(RS)0
-2785 y Fp(to)34 b(the)g(b)s(eginning)f(of)h(y)m(our)f(source)h
+2502 y Fp(#define)46 b(WANT_OBFUSCATING_OPERATO)o(RS)0
+2785 y Fr(to)34 b(the)g(b)s(eginning)f(of)h(y)m(our)f(source)h
 (\014les,)h(b)s(efore)e(the)h(inclusion)f(of)h(an)m(y)g(CLN)f(include)g
 (\014les.)51 b(This)33 b(\015ag)h(will)0 2910 y(enable)d(the)f(follo)m
 (wing)i(op)s(erators:)0 3192 y(F)-8 b(or)31 b(the)g(classes)g
-Fn(cl_N)p Fp(,)f Fn(cl_R)p Fp(,)f Fn(cl_RA)p Fp(,)g Fn(cl_F)p
-Fp(,)h Fn(cl_SF)p Fp(,)f Fn(cl_FF)p Fp(,)g Fn(cl_DF)p
-Fp(,)g Fn(cl_LF)p Fp(:)0 3509 y Fi(t)m(yp)s(e)5 b Fn(&)30
-b(operator)e(+=)i(\()p Fi(t)m(yp)s(e)5 b Fn(&,)30 b(const)f
-Fi(t)m(yp)s(e)5 b Fn(&\))0 3633 y Fi(t)m(yp)s(e)g Fn(&)30
-b(operator)e(-=)i(\()p Fi(t)m(yp)s(e)5 b Fn(&,)30 b(const)f
-Fi(t)m(yp)s(e)5 b Fn(&\))0 3758 y Fi(t)m(yp)s(e)g Fn(&)30
-b(operator)e(*=)i(\()p Fi(t)m(yp)s(e)5 b Fn(&,)30 b(const)f
-Fi(t)m(yp)s(e)5 b Fn(&\))0 3883 y Fi(t)m(yp)s(e)g Fn(&)30
-b(operator)e(/=)i(\()p Fi(t)m(yp)s(e)5 b Fn(&,)30 b(const)f
-Fi(t)m(yp)s(e)5 b Fn(&\))0 4165 y Fp(F)-8 b(or)31 b(the)g(class)g
-Fn(cl_I)p Fp(:)0 4482 y Fi(t)m(yp)s(e)5 b Fn(&)30 b(operator)e(+=)i(\()
-p Fi(t)m(yp)s(e)5 b Fn(&,)30 b(const)f Fi(t)m(yp)s(e)5
-b Fn(&\))0 4606 y Fi(t)m(yp)s(e)g Fn(&)30 b(operator)e(-=)i(\()p
-Fi(t)m(yp)s(e)5 b Fn(&,)30 b(const)f Fi(t)m(yp)s(e)5
-b Fn(&\))0 4731 y Fi(t)m(yp)s(e)g Fn(&)30 b(operator)e(*=)i(\()p
-Fi(t)m(yp)s(e)5 b Fn(&,)30 b(const)f Fi(t)m(yp)s(e)5
-b Fn(&\))0 4855 y Fi(t)m(yp)s(e)g Fn(&)30 b(operator)e(&=)i(\()p
-Fi(t)m(yp)s(e)5 b Fn(&,)30 b(const)f Fi(t)m(yp)s(e)5
-b Fn(&\))0 4980 y Fi(t)m(yp)s(e)g Fn(&)30 b(operator)e(|=)i(\()p
-Fi(t)m(yp)s(e)5 b Fn(&,)30 b(const)f Fi(t)m(yp)s(e)5
-b Fn(&\))0 5104 y Fi(t)m(yp)s(e)g Fn(&)30 b(operator)e(^=)i(\()p
-Fi(t)m(yp)s(e)5 b Fn(&,)30 b(const)f Fi(t)m(yp)s(e)5
-b Fn(&\))0 5229 y Fi(t)m(yp)s(e)g Fn(&)30 b(operator)e(<<=)i(\()p
-Fi(t)m(yp)s(e)5 b Fn(&,)30 b(const)f Fi(t)m(yp)s(e)5
-b Fn(&\))0 5353 y Fi(t)m(yp)s(e)g Fn(&)30 b(operator)e(>>=)i(\()p
-Fi(t)m(yp)s(e)5 b Fn(&,)30 b(const)f Fi(t)m(yp)s(e)5
-b Fn(&\))p eop
+Fp(cl_N)p Fr(,)f Fp(cl_R)p Fr(,)f Fp(cl_RA)p Fr(,)g Fp(cl_F)p
+Fr(,)h Fp(cl_SF)p Fr(,)f Fp(cl_FF)p Fr(,)g Fp(cl_DF)p
+Fr(,)g Fp(cl_LF)p Fr(:)0 3509 y Fk(t)m(yp)s(e)5 b Fp(&)30
+b(operator)e(+=)i(\()p Fk(t)m(yp)s(e)5 b Fp(&,)30 b(const)f
+Fk(t)m(yp)s(e)5 b Fp(&\))0 3633 y Fk(t)m(yp)s(e)g Fp(&)30
+b(operator)e(-=)i(\()p Fk(t)m(yp)s(e)5 b Fp(&,)30 b(const)f
+Fk(t)m(yp)s(e)5 b Fp(&\))0 3758 y Fk(t)m(yp)s(e)g Fp(&)30
+b(operator)e(*=)i(\()p Fk(t)m(yp)s(e)5 b Fp(&,)30 b(const)f
+Fk(t)m(yp)s(e)5 b Fp(&\))0 3883 y Fk(t)m(yp)s(e)g Fp(&)30
+b(operator)e(/=)i(\()p Fk(t)m(yp)s(e)5 b Fp(&,)30 b(const)f
+Fk(t)m(yp)s(e)5 b Fp(&\))0 4165 y Fr(F)-8 b(or)31 b(the)g(class)g
+Fp(cl_I)p Fr(:)0 4482 y Fk(t)m(yp)s(e)5 b Fp(&)30 b(operator)e(+=)i(\()
+p Fk(t)m(yp)s(e)5 b Fp(&,)30 b(const)f Fk(t)m(yp)s(e)5
+b Fp(&\))0 4606 y Fk(t)m(yp)s(e)g Fp(&)30 b(operator)e(-=)i(\()p
+Fk(t)m(yp)s(e)5 b Fp(&,)30 b(const)f Fk(t)m(yp)s(e)5
+b Fp(&\))0 4731 y Fk(t)m(yp)s(e)g Fp(&)30 b(operator)e(*=)i(\()p
+Fk(t)m(yp)s(e)5 b Fp(&,)30 b(const)f Fk(t)m(yp)s(e)5
+b Fp(&\))0 4855 y Fk(t)m(yp)s(e)g Fp(&)30 b(operator)e(&=)i(\()p
+Fk(t)m(yp)s(e)5 b Fp(&,)30 b(const)f Fk(t)m(yp)s(e)5
+b Fp(&\))0 4980 y Fk(t)m(yp)s(e)g Fp(&)30 b(operator)e(|=)i(\()p
+Fk(t)m(yp)s(e)5 b Fp(&,)30 b(const)f Fk(t)m(yp)s(e)5
+b Fp(&\))0 5104 y Fk(t)m(yp)s(e)g Fp(&)30 b(operator)e(^=)i(\()p
+Fk(t)m(yp)s(e)5 b Fp(&,)30 b(const)f Fk(t)m(yp)s(e)5
+b Fp(&\))0 5229 y Fk(t)m(yp)s(e)g Fp(&)30 b(operator)e(<<=)i(\()p
+Fk(t)m(yp)s(e)5 b Fp(&,)30 b(const)f Fk(t)m(yp)s(e)5
+b Fp(&\))0 5353 y Fk(t)m(yp)s(e)g Fp(&)30 b(operator)e(>>=)i(\()p
+Fk(t)m(yp)s(e)5 b Fp(&,)30 b(const)f Fk(t)m(yp)s(e)5
+b Fp(&\))p eop
 %%Page: 36 38
-36 37 bop 0 -116 a Fp(Chapter)30 b(4:)41 b(F)-8 b(unctions)31
+36 37 bop 0 -116 a Fr(Chapter)30 b(4:)41 b(F)-8 b(unctions)31
 b(on)f(n)m(um)m(b)s(ers)2463 b(36)0 366 y(F)-8 b(or)31
-b(the)g(classes)g Fn(cl_N)p Fp(,)f Fn(cl_R)p Fp(,)f Fn(cl_RA)p
-Fp(,)g Fn(cl_I)p Fp(,)h Fn(cl_F)p Fp(,)f Fn(cl_SF)p Fp(,)g
-Fn(cl_FF)p Fp(,)h Fn(cl_DF)p Fp(,)f Fn(cl_LF)p Fp(:)0
-665 y Fi(t)m(yp)s(e)5 b Fn(&)30 b(operator)e(++)i(\()p
-Fi(t)m(yp)s(e)5 b Fn(&)30 b(x\))480 790 y Fp(The)g(pre\014x)f(op)s
-(erator)i Fn(++x)p Fp(.)0 964 y Fn(void)e(operator)f(++)i(\()p
-Fi(t)m(yp)s(e)5 b Fn(&)30 b(x,)g(int\))480 1089 y Fp(The)g(p)s
-(ost\014x)f(op)s(erator)i Fn(x++)p Fp(.)0 1263 y Fi(t)m(yp)s(e)5
-b Fn(&)30 b(operator)e(--)i(\()p Fi(t)m(yp)s(e)5 b Fn(&)30
-b(x\))480 1388 y Fp(The)g(pre\014x)f(op)s(erator)i Fn(--x)p
-Fp(.)0 1562 y Fn(void)e(operator)f(--)i(\()p Fi(t)m(yp)s(e)5
-b Fn(&)30 b(x,)g(int\))480 1687 y Fp(The)g(p)s(ost\014x)f(op)s(erator)i
-Fn(x--)p Fp(.)0 1985 y(Note)j(that)e(b)m(y)g(using)g(these)h
+b(the)g(classes)g Fp(cl_N)p Fr(,)f Fp(cl_R)p Fr(,)f Fp(cl_RA)p
+Fr(,)g Fp(cl_I)p Fr(,)h Fp(cl_F)p Fr(,)f Fp(cl_SF)p Fr(,)g
+Fp(cl_FF)p Fr(,)h Fp(cl_DF)p Fr(,)f Fp(cl_LF)p Fr(:)0
+665 y Fk(t)m(yp)s(e)5 b Fp(&)30 b(operator)e(++)i(\()p
+Fk(t)m(yp)s(e)5 b Fp(&)30 b(x\))480 790 y Fr(The)g(pre\014x)f(op)s
+(erator)i Fp(++x)p Fr(.)0 964 y Fp(void)e(operator)f(++)i(\()p
+Fk(t)m(yp)s(e)5 b Fp(&)30 b(x,)g(int\))480 1089 y Fr(The)g(p)s
+(ost\014x)f(op)s(erator)i Fp(x++)p Fr(.)0 1263 y Fk(t)m(yp)s(e)5
+b Fp(&)30 b(operator)e(--)i(\()p Fk(t)m(yp)s(e)5 b Fp(&)30
+b(x\))480 1388 y Fr(The)g(pre\014x)f(op)s(erator)i Fp(--x)p
+Fr(.)0 1562 y Fp(void)e(operator)f(--)i(\()p Fk(t)m(yp)s(e)5
+b Fp(&)30 b(x,)g(int\))480 1687 y Fr(The)g(p)s(ost\014x)f(op)s(erator)i
+Fp(x--)p Fr(.)0 1985 y(Note)j(that)e(b)m(y)g(using)g(these)h
 (obfuscating)g(op)s(erators,)g(y)m(ou)f(w)m(ouldn't)g(gain)h
-(e\016ciency:)46 b(In)31 b(CLN)h(`)p Fn(x)e(+=)g(y;)p
-Fp(')i(is)0 2110 y(exactly)g(the)f(same)e(as)i(`)p Fn(x)f(=)g(x+y;)p
-Fp(',)g(not)h(more)e(e\016cien)m(t.)p eop
+(e\016ciency:)46 b(In)31 b(CLN)h(`)p Fp(x)e(+=)g(y;)p
+Fr(')i(is)0 2110 y(exactly)g(the)f(same)e(as)i(`)p Fp(x)f(=)g(x+y;)p
+Fr(',)g(not)h(more)e(e\016cien)m(t.)p eop
 %%Page: 37 39
-37 38 bop 0 -116 a Fp(Chapter)30 b(5:)41 b(Input/Output)2784
-b(37)0 366 y Fm(5)80 b(Input/Output)0 933 y Fq(5.1)68
+37 38 bop 0 -116 a Fr(Chapter)30 b(5:)41 b(Input/Output)2784
+b(37)0 366 y Fo(5)80 b(Input/Output)0 933 y Fs(5.1)68
 b(In)l(ternal)32 b(and)e(prin)l(ted)g(represen)l(tation)0
-1209 y Fp(All)h(computations)f(deal)h(with)f(the)h(in)m(ternal)g
+1209 y Fr(All)h(computations)f(deal)h(with)f(the)h(in)m(ternal)g
 (represen)m(tations)g(of)g(the)f(n)m(um)m(b)s(ers.)0
 1484 y(Ev)m(ery)i(n)m(um)m(b)s(er)d(has)j(an)f(external)i(represen)m
 (tation)g(as)f(a)g(sequence)g(of)g(ASCI)s(I)e(c)m(haracters.)46
 b(Sev)m(eral)33 b(external)0 1609 y(represen)m(tations)e(ma)m(y)f
 (denote)h(the)g(same)f(n)m(um)m(b)s(er,)e(for)i(example,)g
-Fn(")p Fp(20.0)p Fn(")i Fp(and)d Fn(")p Fp(20.000)p Fn(")p
-Fp(.)0 1884 y(Con)m(v)m(erting)38 b(an)g(in)m(ternal)g(to)g(an)f
+Fp(")p Fr(20.0)p Fp(")i Fr(and)d Fp(")p Fr(20.000)p Fp(")p
+Fr(.)0 1884 y(Con)m(v)m(erting)38 b(an)g(in)m(ternal)g(to)g(an)f
 (external)i(represen)m(tation)f(is)g(called)g(\\prin)m(ting",)j(con)m
 (v)m(erting)e(an)e(external)0 2009 y(to)43 b(an)e(in)m(ternal)i
 (represen)m(tation)g(is)f(called)h(\\reading".)76 b(In)41
-b(CLN,)h(is)g(it)g(alw)m(a)m(ys)i(true)d(that)i(con)m(v)m(ersion)g(of)0
+b(CLN,)h(it)g(is)g(alw)m(a)m(ys)i(true)d(that)i(con)m(v)m(ersion)g(of)0
 2133 y(an)d(in)m(ternal)g(to)g(an)g(external)g(represen)m(tation)h(and)
 e(then)g(bac)m(k)i(to)f(an)g(in)m(ternal)g(represen)m(tation)h(will)f
 (yield)0 2258 y(the)34 b(same)e(in)m(ternal)j(represen)m(tation.)50
-b(Sym)m(b)s(olically:)d Fn(read\(print\(x\)\))27 b(==)i(x)p
-Fp(.)50 b(This)33 b(is)g(called)i(\\prin)m(t-read)0 2382
+b(Sym)m(b)s(olically:)d Fp(read\(print\(x\)\))27 b(==)i(x)p
+Fr(.)50 b(This)33 b(is)g(called)i(\\prin)m(t-read)0 2382
 y(consistency".)0 2658 y(Di\013eren)m(t)d(t)m(yp)s(es)e(of)h(n)m(um)m
 (b)s(ers)d(ha)m(v)m(e)j(di\013eren)m(t)g(external)g(represen)m(tations)
 h(\(case)f(is)g(insigni\014can)m(t\):)0 2959 y(In)m(tegers)167
-b(External)30 b(represen)m(tation:)41 b Fi(sign)p Fn({)p
-Fi(digit)r Fn(}+)p Fp(.)g(The)29 b(reader)g(also)i(accepts)g(the)e
-(Common)e(Lisp)i(syn-)480 3084 y(taxes)39 b Fi(sign)p
-Fn({)p Fi(digit)r Fn(}+.)f Fp(with)h(a)f(trailing)i(dot)e(for)h
-(decimal)f(in)m(tegers)i(and)d(the)i Fn(#)p Fi(n)p Fn(R)p
-Fp(,)g Fn(#b)p Fp(,)i Fn(#o)p Fp(,)f Fn(#x)480 3208 y
-Fp(pre\014xes.)0 3386 y(Rational)32 b(n)m(um)m(b)s(ers)480
-3510 y(External)37 b(represen)m(tation:)56 b Fi(sign)p
-Fn({)p Fi(digit)r Fn(}+/{)p Fi(digit)r Fn(}+)p Fp(.)k(The)37
-b Fn(#)p Fi(n)p Fn(R)p Fp(,)h Fn(#b)p Fp(,)g Fn(#o)p
-Fp(,)h Fn(#x)d Fp(pre\014xes)g(are)i(al-)480 3635 y(lo)m(w)m(ed)32
+b(External)30 b(represen)m(tation:)41 b Fk(sign)p Fp({)p
+Fk(digit)r Fp(}+)p Fr(.)g(The)29 b(reader)g(also)i(accepts)g(the)e
+(Common)e(Lisp)i(syn-)480 3084 y(taxes)39 b Fk(sign)p
+Fp({)p Fk(digit)r Fp(}+.)f Fr(with)h(a)f(trailing)i(dot)e(for)h
+(decimal)f(in)m(tegers)i(and)d(the)i Fp(#)p Fk(n)p Fp(R)p
+Fr(,)g Fp(#b)p Fr(,)i Fp(#o)p Fr(,)f Fp(#x)480 3208 y
+Fr(pre\014xes.)0 3386 y(Rational)32 b(n)m(um)m(b)s(ers)480
+3510 y(External)37 b(represen)m(tation:)56 b Fk(sign)p
+Fp({)p Fk(digit)r Fp(}+/{)p Fk(digit)r Fp(}+)p Fr(.)k(The)37
+b Fp(#)p Fk(n)p Fp(R)p Fr(,)h Fp(#b)p Fr(,)g Fp(#o)p
+Fr(,)h Fp(#x)d Fr(pre\014xes)g(are)i(al-)480 3635 y(lo)m(w)m(ed)32
 b(here)e(as)g(w)m(ell.)0 3812 y(Floating-p)s(oin)m(t)j(n)m(um)m(b)s
 (ers)480 3937 y(External)48 b(represen)m(tation:)76 b
-Fi(sign)p Fn({)p Fi(digit)r Fn(})p Fp(*)p Fi(exp)s(onen)m(t)50
-b Fp(or)d Fi(sign)p Fn({)p Fi(digit)r Fn(})p Fp(*)p Fn(.{)p
-Fi(digit)r Fn(})p Fp(*)p Fi(exp)s(onen)m(t)k Fp(or)480
-4061 y Fi(sign)p Fn({)p Fi(digit)r Fn(})p Fp(*)p Fn(.{)p
-Fi(digit)r Fn(}+)p Fp(.)40 b(A)26 b(precision)g(sp)s(eci\014er)f(of)h
-(the)h(form)p 2684 4061 28 4 v 57 w Fi(prec)k Fp(ma)m(y)26
+Fk(sign)p Fp({)p Fk(digit)r Fp(})p Fr(*)p Fk(exp)s(onen)m(t)50
+b Fr(or)d Fk(sign)p Fp({)p Fk(digit)r Fp(})p Fr(*)p Fp(.{)p
+Fk(digit)r Fp(})p Fr(*)p Fk(exp)s(onen)m(t)k Fr(or)480
+4061 y Fk(sign)p Fp({)p Fk(digit)r Fp(})p Fr(*)p Fp(.{)p
+Fk(digit)r Fp(}+)p Fr(.)40 b(A)26 b(precision)g(sp)s(eci\014er)f(of)h
+(the)h(form)p 2684 4061 28 4 v 57 w Fk(prec)k Fr(ma)m(y)26
 b(b)s(e)f(app)s(ended.)37 b(There)480 4186 y(m)m(ust)h(b)s(e)h(at)i
 (least)g(one)e(digit)i(in)e(the)h(non-exp)s(onen)m(t)f(part.)69
 b(The)39 b(exp)s(onen)m(t)g(has)h(the)f(syn)m(tax)480
-4310 y Fi(expmark)m(er)d(expsign)30 b Fn({)p Fi(digit)r
-Fn(}+)p Fp(.)41 b(The)30 b(exp)s(onen)m(t)g(mark)m(er)g(is)660
-4461 y(`)p Fn(s)p Fp(')h(for)f(short-\015oats,)660 4612
-y(`)p Fn(f)p Fp(')h(for)f(single-\015oats,)660 4763 y(`)p
-Fn(d)p Fp(')h(for)f(double-\015oats,)660 4914 y(`)p Fn(L)p
-Fp(')h(for)f(long-\015oats,)480 5091 y(or)25 b(`)p Fn(e)p
-Fp(',)i(whic)m(h)e(denotes)h(a)g(default)f(\015oat)h(format.)39
+4310 y Fk(expmark)m(er)d(expsign)30 b Fp({)p Fk(digit)r
+Fp(}+)p Fr(.)41 b(The)30 b(exp)s(onen)m(t)g(mark)m(er)g(is)660
+4461 y(`)p Fp(s)p Fr(')h(for)f(short-\015oats,)660 4612
+y(`)p Fp(f)p Fr(')h(for)f(single-\015oats,)660 4763 y(`)p
+Fp(d)p Fr(')h(for)f(double-\015oats,)660 4914 y(`)p Fp(L)p
+Fr(')h(for)f(long-\015oats,)480 5091 y(or)25 b(`)p Fp(e)p
+Fr(',)i(whic)m(h)e(denotes)h(a)g(default)f(\015oat)h(format.)39
 b(The)25 b(precision)g(sp)s(ecifying)g(su\016x)g(has)g(the)g(syn-)480
-5215 y(tax)p 638 5215 V 57 w Fi(prec)30 b Fp(where)23
-b Fi(prec)30 b Fp(denotes)24 b(the)g(n)m(um)m(b)s(er)e(of)i(v)-5
+5215 y(tax)p 638 5215 V 57 w Fk(prec)30 b Fr(where)23
+b Fk(prec)30 b Fr(denotes)24 b(the)g(n)m(um)m(b)s(er)e(of)i(v)-5
 b(alid)25 b(man)m(tissa)f(digits)g(\(in)g(decimal,)i(excluding)480
 5340 y(leading)31 b(zero)s(es\),)h(cf.)41 b(also)31 b(function)f(`)p
-Fn(cl_float_format)p Fp('.)p eop
+Fp(cl_float_format)p Fr('.)p eop
 %%Page: 38 40
-38 39 bop 0 -116 a Fp(Chapter)30 b(5:)41 b(Input/Output)2784
+38 39 bop 0 -116 a Fr(Chapter)30 b(5:)41 b(Input/Output)2784
 b(38)0 366 y(Complex)29 b(n)m(um)m(b)s(ers)480 491 y(External)i
 (represen)m(tation:)660 646 y(In)h(algebraic)i(notation:)46
-b Fi(realpart)r Fn(+)p Fi(imagpart)r Fn(i)p Fp(.)g(Of)32
-b(course,)h(if)g Fi(imagpart)h Fp(is)e(negativ)m(e,)k(its)660
+b Fk(realpart)r Fp(+)p Fk(imagpart)r Fp(i)p Fr(.)g(Of)32
+b(course,)h(if)g Fk(imagpart)h Fr(is)e(negativ)m(e,)k(its)660
 771 y(prin)m(ted)23 b(represen)m(tation)h(b)s(egins)f(with)g(a)h(`)p
-Fn(-)p Fp(',)h(and)e(the)h(`)p Fn(+)p Fp(')f(b)s(et)m(w)m(een)h
-Fi(realpart)i Fp(and)d Fi(imagpart)660 895 y Fp(ma)m(y)37
+Fp(-)p Fr(',)h(and)e(the)h(`)p Fp(+)p Fr(')f(b)s(et)m(w)m(een)h
+Fk(realpart)i Fr(and)d Fk(imagpart)660 895 y Fr(ma)m(y)37
 b(b)s(e)h(omitted.)63 b(Note)39 b(that)g(this)e(notation)j(cannot)e(b)s
-(e)f(used)g(when)g(the)h Fi(imagpart)i Fp(is)660 1020
+(e)f(used)g(when)g(the)h Fk(imagpart)i Fr(is)660 1020
 y(rational)c(and)f(the)g(rational)h(n)m(um)m(b)s(er's)d(base)i(is)g
-Fn(>)p Fp(18,)i(b)s(ecause)e(the)g(`)p Fn(i)p Fp(')g(is)g(then)g(read)f
+Fp(>)p Fr(18,)i(b)s(ecause)e(the)g(`)p Fp(i)p Fr(')g(is)g(then)g(read)f
 (as)i(a)660 1144 y(digit.)660 1299 y(In)30 b(Common)e(Lisp)h(notation:)
-42 b Fn(#C\()p Fi(realpart)32 b(imagpart)r Fn(\))p Fp(.)0
-1799 y Fq(5.2)68 b(Input)30 b(functions)0 2078 y Fp(Including)24
-b Fn(<cl_io.h>)e Fp(de\014nes)i(a)h(t)m(yp)s(e)g Fn(cl_istream)p
-Fp(,)e(whic)m(h)h(is)h(the)g(t)m(yp)s(e)g(of)g(the)g(\014rst)f(argumen)
+42 b Fp(#C\()p Fk(realpart)32 b(imagpart)r Fp(\))p Fr(.)0
+1799 y Fs(5.2)68 b(Input)30 b(functions)0 2078 y Fr(Including)24
+b Fp(<cl_io.h>)e Fr(de\014nes)i(a)h(t)m(yp)s(e)g Fp(cl_istream)p
+Fr(,)e(whic)m(h)h(is)h(the)g(t)m(yp)s(e)g(of)g(the)g(\014rst)f(argumen)
 m(t)g(to)h(all)h(input)0 2203 y(functions.)38 b(Unless)24
 b(y)m(ou)g(build)f(and)g(use)g(CLN)g(with)h(the)g(macro)f(CL)p
 2375 2203 28 4 v 32 w(IO)p 2511 2203 V 33 w(STDIO)f(b)s(eing)i
-(de\014ned,)g Fn(cl_istream)0 2327 y Fp(is)30 b(the)h(same)f(as)g
-Fn(istream&)p Fp(.)0 2607 y(The)g(v)-5 b(ariable)180
-2887 y Fn(cl_istream)28 b(cl_stdin)0 3197 y Fp(con)m(tains)k(the)e
+(de\014ned,)g Fp(cl_istream)0 2327 y Fr(is)30 b(the)h(same)f(as)g
+Fp(istream&)p Fr(.)0 2607 y(The)g(v)-5 b(ariable)180
+2887 y Fp(cl_istream)28 b(cl_stdin)0 3197 y Fr(con)m(tains)k(the)e
 (standard)g(input)f(stream.)0 3476 y(These)h(are)h(the)f(simple)g
-(input)f(functions:)0 3787 y Fn(int)g(freadchar)f(\(cl_istream)g
-(stream\))480 3911 y Fp(Reads)33 b(a)h(c)m(haracter)h(from)c
-Fn(stream)p Fp(.)48 b(Returns)32 b Fn(cl_EOF)f Fp(\(not)j(a)g(`)p
-Fn(char)p Fp('!\))48 b(if)33 b(the)h(end)e(of)i(stream)480
+(input)f(functions:)0 3787 y Fp(int)g(freadchar)f(\(cl_istream)g
+(stream\))480 3911 y Fr(Reads)33 b(a)h(c)m(haracter)h(from)c
+Fp(stream)p Fr(.)48 b(Returns)32 b Fp(cl_EOF)f Fr(\(not)j(a)g(`)p
+Fp(char)p Fr('!\))48 b(if)33 b(the)h(end)e(of)i(stream)480
 4036 y(w)m(as)d(encoun)m(tered)g(or)f(an)g(error)g(o)s(ccurred.)0
-4221 y Fn(int)f(funreadchar)f(\(cl_istream)f(stream,)h(int)i(c\))480
-4346 y Fp(Puts)37 b(bac)m(k)i Fn(c)f Fp(on)m(to)h Fn(stream)p
-Fp(.)61 b Fn(c)38 b Fp(m)m(ust)e(b)s(e)i(the)g(result)g(of)g(the)g
-(last)g Fn(freadchar)e Fp(op)s(eration)i(on)480 4471
-y Fn(stream)p Fp(.)0 4781 y(Eac)m(h)d(of)g(the)g(classes)g
-Fn(cl_N)p Fp(,)g Fn(cl_R)p Fp(,)g Fn(cl_RA)p Fp(,)f Fn(cl_I)p
-Fp(,)h Fn(cl_F)p Fp(,)f Fn(cl_SF)p Fp(,)h Fn(cl_FF)p
-Fp(,)f Fn(cl_DF)p Fp(,)h Fn(cl_LF)e Fp(de\014nes,)i(in)f
-Fn(<cl_)0 4905 y Fi(t)m(yp)s(e)5 b Fn(_io.h>)p Fp(,)29
-b(the)i(follo)m(wing)h(input)d(function:)0 5215 y Fn(cl_istream)f
-(operator>>)f(\(cl_istream)g(stream,)i Fi(t)m(yp)s(e)5
-b Fn(&)30 b(result\))480 5340 y Fp(Reads)g(a)h(n)m(um)m(b)s(er)d(from)h
-Fn(stream)g Fp(and)h(stores)g(it)h(in)f(the)h Fn(result)p
-Fp(.)p eop
+4221 y Fp(int)f(funreadchar)f(\(cl_istream)f(stream,)h(int)i(c\))480
+4346 y Fr(Puts)37 b(bac)m(k)i Fp(c)f Fr(on)m(to)h Fp(stream)p
+Fr(.)61 b Fp(c)38 b Fr(m)m(ust)e(b)s(e)i(the)g(result)g(of)g(the)g
+(last)g Fp(freadchar)e Fr(op)s(eration)i(on)480 4471
+y Fp(stream)p Fr(.)0 4781 y(Eac)m(h)d(of)g(the)g(classes)g
+Fp(cl_N)p Fr(,)g Fp(cl_R)p Fr(,)g Fp(cl_RA)p Fr(,)f Fp(cl_I)p
+Fr(,)h Fp(cl_F)p Fr(,)f Fp(cl_SF)p Fr(,)h Fp(cl_FF)p
+Fr(,)f Fp(cl_DF)p Fr(,)h Fp(cl_LF)e Fr(de\014nes,)i(in)f
+Fp(<cl_)0 4905 y Fk(t)m(yp)s(e)5 b Fp(_io.h>)p Fr(,)29
+b(the)i(follo)m(wing)h(input)d(function:)0 5215 y Fp(cl_istream)f
+(operator>>)f(\(cl_istream)g(stream,)i Fk(t)m(yp)s(e)5
+b Fp(&)30 b(result\))480 5340 y Fr(Reads)g(a)h(n)m(um)m(b)s(er)d(from)h
+Fp(stream)g Fr(and)h(stores)g(it)h(in)f(the)h Fp(result)p
+Fr(.)p eop
 %%Page: 39 41
-39 40 bop 0 -116 a Fp(Chapter)30 b(5:)41 b(Input/Output)2784
+39 40 bop 0 -116 a Fr(Chapter)30 b(5:)41 b(Input/Output)2784
 b(39)0 366 y(The)30 b(most)g(\015exible)g(input)g(functions,)g
-(de\014ned)f(in)h Fn(<cl_)p Fi(t)m(yp)s(e)5 b Fn(_io.h>)p
-Fp(,)28 b(are)j(the)f(follo)m(wing:)0 659 y Fn(cl_N)f(read_complex)e
+(de\014ned)f(in)h Fp(<cl_)p Fk(t)m(yp)s(e)5 b Fp(_io.h>)p
+Fr(,)28 b(are)j(the)f(follo)m(wing:)0 659 y Fp(cl_N)f(read_complex)e
 (\(cl_istream)h(stream,)g(const)h(cl_read_flags&)d(flags\))0
 783 y(cl_R)j(read_real)f(\(cl_istream)f(stream,)i(const)g
 (cl_read_flags&)d(flags\))0 908 y(cl_F)j(read_float)f(\(cl_istream)f
 (stream,)h(const)h(cl_read_flags&)e(flags\))0 1033 y(cl_RA)i
 (read_rational)e(\(cl_istream)g(stream,)h(const)h(cl_read_flags&)e
 (flags\))0 1157 y(cl_I)i(read_integer)e(\(cl_istream)h(stream,)g(const)
-h(cl_read_flags&)d(flags\))480 1282 y Fp(Reads)d(a)g(n)m(um)m(b)s(er)e
-(from)h Fn(stream)p Fp(.)36 b(The)23 b Fn(flags)e Fp(are)i(parameters)g
+h(cl_read_flags&)d(flags\))480 1282 y Fr(Reads)d(a)g(n)m(um)m(b)s(er)e
+(from)h Fp(stream)p Fr(.)36 b(The)23 b Fp(flags)e Fr(are)i(parameters)g
 (whic)m(h)f(a\013ect)j(the)e(input)f(syn)m(tax.)480 1406
 y(Whitespace)32 b(b)s(efore)e(the)g(n)m(um)m(b)s(er)e(is)j(silen)m(tly)
-h(skipp)s(ed.)0 1568 y Fn(cl_N)d(read_complex)e(\(const)i
+h(skipp)s(ed.)0 1568 y Fp(cl_N)d(read_complex)e(\(const)i
 (cl_read_flags&)d(flags,)j(const)g(char)g(*)h(string,)f(const)g(char)g
 (*)0 1692 y(string_limit,)e(const)i(char)g(*)h(*)g(end_of_parse\))0
 1817 y(cl_R)f(read_real)f(\(const)h(cl_read_flags&)d(flags,)j(const)g
@@ -3328,119 +3602,119 @@ h(skipp)s(ed.)0 1568 y Fn(cl_N)d(read_complex)e(\(const)i
 y(string_limit,)e(const)i(char)g(*)h(*)g(end_of_parse\))0
 2564 y(cl_I)f(read_integer)e(\(const)i(cl_read_flags&)d(flags,)j(const)
 g(char)g(*)h(string,)f(const)g(char)g(*)0 2688 y(string_limit,)e(const)
-i(char)g(*)h(*)g(end_of_parse\))480 2813 y Fp(Reads)g(a)h(n)m(um)m(b)s
+i(char)g(*)h(*)g(end_of_parse\))480 2813 y Fr(Reads)g(a)h(n)m(um)m(b)s
 (er)d(from)h(a)i(string)f(in)g(memory)-8 b(.)39 b(The)30
-b Fn(flags)f Fp(are)i(parameters)f(whic)m(h)g(a\013ect)i(the)480
+b Fp(flags)f Fr(are)i(parameters)f(whic)m(h)g(a\013ect)i(the)480
 2938 y(input)26 b(syn)m(tax.)40 b(The)27 b(string)g(starts)g(at)h
-Fn(string)d Fp(and)h(ends)g(at)i Fn(string_limit)c Fp(\(exclusiv)m(e)29
-b(limit\).)480 3062 y Fn(string_limit)24 b Fp(ma)m(y)j(also)h(b)s(e)e
-Fn(NULL)p Fp(,)h(denoting)h(the)f(en)m(tire)h(string,)g(i.e.)40
-b(equiv)-5 b(alen)m(t)29 b(to)f Fn(string_)480 3187 y(limit)h(=)h
-(string)f(+)h(strlen\(string\))p Fp(.)57 b(If)37 b Fn(end_of_parse)d
-Fp(is)j Fn(NULL)p Fp(,)h(the)g(string)f(in)g(memory)480
+Fp(string)d Fr(and)h(ends)g(at)i Fp(string_limit)c Fr(\(exclusiv)m(e)29
+b(limit\).)480 3062 y Fp(string_limit)24 b Fr(ma)m(y)j(also)h(b)s(e)e
+Fp(NULL)p Fr(,)h(denoting)h(the)f(en)m(tire)h(string,)g(i.e.)40
+b(equiv)-5 b(alen)m(t)29 b(to)f Fp(string_)480 3187 y(limit)h(=)h
+(string)f(+)h(strlen\(string\))p Fr(.)57 b(If)37 b Fp(end_of_parse)d
+Fr(is)j Fp(NULL)p Fr(,)h(the)g(string)f(in)g(memory)480
 3311 y(m)m(ust)26 b(con)m(tain)i(exactly)h(one)f(n)m(um)m(b)s(er)d(and)
 h(nothing)h(more,)g(else)h(a)g(fatal)g(error)f(will)g(b)s(e)g
-(signalled.)480 3436 y(If)33 b Fn(end_of_parse)c Fp(is)k(not)h
-Fn(NULL)p Fp(,)f Fn(*end_of_parse)c Fp(will)k(b)s(e)g(assigned)g(a)h(p)
+(signalled.)480 3436 y(If)33 b Fp(end_of_parse)c Fr(is)k(not)h
+Fp(NULL)p Fr(,)f Fp(*end_of_parse)c Fr(will)k(b)s(e)g(assigned)g(a)h(p)
 s(oin)m(ter)f(past)g(the)g(last)480 3560 y(parsed)h(c)m(haracter)i
-(\(i.e.)55 b Fn(string_limit)31 b Fp(if)k(nothing)f(came)h(after)g(the)
+(\(i.e.)55 b Fp(string_limit)31 b Fr(if)k(nothing)f(came)h(after)g(the)
 g(n)m(um)m(b)s(er\).)51 b(Whitespace)480 3685 y(is)30
-b(not)h(allo)m(w)m(ed.)0 3977 y(The)f(structure)g Fn(cl_read_flags)d
-Fp(con)m(tains)k(the)g(follo)m(wing)g(\014elds:)0 4270
-y Fn(cl_read_syntax_t)26 b(syntax)480 4394 y Fp(The)c(p)s(ossible)f
+b(not)h(allo)m(w)m(ed.)0 3977 y(The)f(structure)g Fp(cl_read_flags)d
+Fr(con)m(tains)k(the)g(follo)m(wing)g(\014elds:)0 4270
+y Fp(cl_read_syntax_t)26 b(syntax)480 4394 y Fr(The)c(p)s(ossible)f
 (results)h(of)h(the)f(read)g(op)s(eration.)38 b(P)m(ossible)23
-b(v)-5 b(alues)23 b(are)f Fn(syntax_number)p Fp(,)f Fn(syntax_)480
-4519 y(real)p Fp(,)37 b Fn(syntax_rational)p Fp(,)e Fn(syntax_integer)p
-Fp(,)g Fn(syntax_float)p Fp(,)g Fn(syntax_sfloat)p Fp(,)g
-Fn(syntax_)480 4643 y(ffloat)p Fp(,)29 b Fn(syntax_dfloat)p
-Fp(,)e Fn(syntax_lfloat)p Fp(.)0 4805 y Fn(cl_read_lsyntax_t)f(lsyntax)
-480 4929 y Fp(Sp)s(eci\014es)e(the)i(language-dep)s(enden)m(t)g(syn)m
+b(v)-5 b(alues)23 b(are)f Fp(syntax_number)p Fr(,)f Fp(syntax_)480
+4519 y(real)p Fr(,)37 b Fp(syntax_rational)p Fr(,)e Fp(syntax_integer)p
+Fr(,)g Fp(syntax_float)p Fr(,)g Fp(syntax_sfloat)p Fr(,)g
+Fp(syntax_)480 4643 y(ffloat)p Fr(,)29 b Fp(syntax_dfloat)p
+Fr(,)e Fp(syntax_lfloat)p Fr(.)0 4805 y Fp(cl_read_lsyntax_t)f(lsyntax)
+480 4929 y Fr(Sp)s(eci\014es)e(the)i(language-dep)s(enden)m(t)g(syn)m
 (tax)f(v)-5 b(arian)m(t)26 b(for)f(the)g(read)g(op)s(eration.)40
 b(P)m(ossible)26 b(v)-5 b(alues)480 5054 y(are)480 5215
-y Fn(lsyntax_standard)960 5340 y Fp(accept)32 b(standard)d(algebraic)j
+y Fp(lsyntax_standard)960 5340 y Fr(accept)32 b(standard)d(algebraic)j
 (notation)g(only)-8 b(,)31 b(no)g(complex)f(n)m(um)m(b)s(ers,)p
 eop
 %%Page: 40 42
-40 41 bop 0 -116 a Fp(Chapter)30 b(5:)41 b(Input/Output)2784
-b(40)480 366 y Fn(lsyntax_algebraic)960 491 y Fp(accept)32
-b(the)e(algebraic)i(notation)g Fi(x)6 b Fn(+)p Fi(y)i
-Fn(i)30 b Fp(for)g(complex)g(n)m(um)m(b)s(ers,)480 679
-y Fn(lsyntax_commonlisp)960 804 y Fp(accept)44 b(the)f
-Fn(#b)p Fp(,)i Fn(#o)p Fp(,)g Fn(#x)d Fp(syn)m(taxes)h(for)g(binary)-8
+40 41 bop 0 -116 a Fr(Chapter)30 b(5:)41 b(Input/Output)2784
+b(40)480 366 y Fp(lsyntax_algebraic)960 491 y Fr(accept)32
+b(the)e(algebraic)i(notation)g Fk(x)6 b Fp(+)p Fk(y)i
+Fp(i)30 b Fr(for)g(complex)g(n)m(um)m(b)s(ers,)480 679
+y Fp(lsyntax_commonlisp)960 804 y Fr(accept)44 b(the)f
+Fp(#b)p Fr(,)i Fp(#o)p Fr(,)g Fp(#x)d Fr(syn)m(taxes)h(for)g(binary)-8
 b(,)45 b(o)s(ctal,)i(hexadecimal)c(n)m(um)m(b)s(ers,)960
-928 y Fn(#)p Fi(base)5 b Fn(R)42 b Fp(for)g(rational)h(n)m(um)m(b)s
-(ers)d(in)h(a)i(giv)m(en)g(base,)i Fn(#c\()p Fi(realpart)33
-b(imagpart)r Fn(\))41 b Fp(for)960 1053 y(complex)30
-b(n)m(um)m(b)s(ers,)480 1241 y Fn(lsyntax_all)960 1365
-y Fp(accept)i(all)f(of)g(these)f(extensions.)0 1553 y
-Fn(unsigned)e(int)i(rational_base)480 1678 y Fp(The)g(base)g(in)g(whic)
+928 y Fp(#)p Fk(base)5 b Fp(R)42 b Fr(for)g(rational)h(n)m(um)m(b)s
+(ers)d(in)h(a)i(giv)m(en)g(base,)i Fp(#c\()p Fk(realpart)33
+b(imagpart)r Fp(\))41 b Fr(for)960 1053 y(complex)30
+b(n)m(um)m(b)s(ers,)480 1241 y Fp(lsyntax_all)960 1365
+y Fr(accept)i(all)f(of)g(these)f(extensions.)0 1553 y
+Fp(unsigned)e(int)i(rational_base)480 1678 y Fr(The)g(base)g(in)g(whic)
 m(h)h(rational)g(n)m(um)m(b)s(ers)d(are)j(read.)0 1866
-y Fn(cl_float_format_t)26 b(float_flags.default_flo)o(at_f)o(orm)o(at)
-480 1990 y Fp(The)k(\015oat)h(format)f(used)f(when)h(reading)g
-(\015oats)h(with)f(exp)s(onen)m(t)g(mark)m(er)g(`)p Fn(e)p
-Fp('.)0 2178 y Fn(cl_float_format_t)c(float_flags.default_lfl)o(oat_)o
-(for)o(mat)480 2303 y Fp(The)k(\015oat)h(format)f(used)f(when)h
+y Fp(cl_float_format_t)26 b(float_flags.default_flo)o(at_f)o(orm)o(at)
+480 1990 y Fr(The)k(\015oat)h(format)f(used)f(when)h(reading)g
+(\015oats)h(with)f(exp)s(onen)m(t)g(mark)m(er)g(`)p Fp(e)p
+Fr('.)0 2178 y Fp(cl_float_format_t)c(float_flags.default_lfl)o(oat_)o
+(for)o(mat)480 2303 y Fr(The)k(\015oat)h(format)f(used)f(when)h
 (reading)g(\015oats)h(with)f(exp)s(onen)m(t)g(mark)m(er)g(`)p
-Fn(l)p Fp('.)0 2491 y Fn(cl_boolean)e(float_flags.mantissa_de)o(pen)o
-(dent)o(_flo)o(at_)o(form)o(at)480 2615 y Fp(When)k(this)g(\015ag)g(is)
+Fp(l)p Fr('.)0 2491 y Fp(cl_boolean)e(float_flags.mantissa_de)o(pen)o
+(dent)o(_flo)o(at_)o(form)o(at)480 2615 y Fr(When)k(this)g(\015ag)g(is)
 g(true,)g(\015oats)h(sp)s(eci\014ed)e(with)g(more)g(digits)i(than)f
 (corresp)s(onding)f(to)h(the)g(ex-)480 2740 y(p)s(onen)m(t)25
 b(mark)m(er)f(they)i(con)m(tain,)h(but)e(without)p 2123
-2740 28 4 v 58 w Fi(nnn)f Fp(su\016x,)h(will)h(get)g(a)g(precision)f
+2740 28 4 v 58 w Fk(nnn)f Fr(su\016x,)h(will)h(get)g(a)g(precision)f
 (corresp)s(onding)480 2864 y(to)31 b(their)g(n)m(um)m(b)s(er)d(of)i
-(signi\014can)m(t)h(digits.)0 3374 y Fq(5.3)68 b(Output)30
-b(functions)0 3655 y Fp(Including)40 b Fn(<cl_io.h>)d
-Fp(de\014nes)j(a)h(t)m(yp)s(e)f Fn(cl_ostream)p Fp(,)h(whic)m(h)f(is)g
+(signi\014can)m(t)h(digits.)0 3374 y Fs(5.3)68 b(Output)30
+b(functions)0 3655 y Fr(Including)40 b Fp(<cl_io.h>)d
+Fr(de\014nes)j(a)h(t)m(yp)s(e)f Fp(cl_ostream)p Fr(,)h(whic)m(h)f(is)g
 (the)h(t)m(yp)s(e)f(of)h(the)f(\014rst)g(argumen)m(t)g(to)h(all)0
 3780 y(output)e(functions.)66 b(Unless)39 b(y)m(ou)g(build)f(and)g(use)
 h(CLN)f(with)h(the)g(macro)g(CL)p 2847 3780 V 32 w(IO)p
 2983 3780 V 32 w(STDIO)f(b)s(eing)h(de\014ned,)0 3904
-y Fn(cl_ostream)28 b Fp(is)i(the)h(same)e(as)i Fn(ostream&)p
-Fp(.)0 4185 y(The)f(v)-5 b(ariable)180 4466 y Fn(cl_ostream)28
-b(cl_stdout)0 4778 y Fp(con)m(tains)k(the)e(standard)g(output)g
-(stream.)0 5059 y(The)g(v)-5 b(ariable)180 5340 y Fn(cl_ostream)28
+y Fp(cl_ostream)28 b Fr(is)i(the)h(same)e(as)i Fp(ostream&)p
+Fr(.)0 4185 y(The)f(v)-5 b(ariable)180 4466 y Fp(cl_ostream)28
+b(cl_stdout)0 4778 y Fr(con)m(tains)k(the)e(standard)g(output)g
+(stream.)0 5059 y(The)g(v)-5 b(ariable)180 5340 y Fp(cl_ostream)28
 b(cl_stderr)p eop
 %%Page: 41 43
-41 42 bop 0 -116 a Fp(Chapter)30 b(5:)41 b(Input/Output)2784
+41 42 bop 0 -116 a Fr(Chapter)30 b(5:)41 b(Input/Output)2784
 b(41)0 366 y(con)m(tains)32 b(the)e(standard)g(error)g(output)g
 (stream.)0 643 y(These)g(are)h(the)f(simple)g(output)g(functions:)0
-948 y Fn(void)f(fprintchar)f(\(cl_ostream)f(stream,)h(char)i(c\))480
-1072 y Fp(Prin)m(ts)g(the)h(c)m(haracter)h Fn(x)e Fp(literally)i(on)e
-(the)h Fn(stream)p Fp(.)0 1252 y Fn(void)e(fprint)g(\(cl_ostream)e
-(stream,)i(const)f(char)i(*)g(string\))480 1376 y Fp(Prin)m(ts)g(the)h
-Fn(string)d Fp(literally)33 b(on)d(the)g Fn(stream)p
-Fp(.)0 1556 y Fn(void)f(fprintdecimal)e(\(cl_ostream)g(stream,)i(int)g
+948 y Fp(void)f(fprintchar)f(\(cl_ostream)f(stream,)h(char)i(c\))480
+1072 y Fr(Prin)m(ts)g(the)h(c)m(haracter)h Fp(x)e Fr(literally)i(on)e
+(the)h Fp(stream)p Fr(.)0 1252 y Fp(void)e(fprint)g(\(cl_ostream)e
+(stream,)i(const)f(char)i(*)g(string\))480 1376 y Fr(Prin)m(ts)g(the)h
+Fp(string)d Fr(literally)33 b(on)d(the)g Fp(stream)p
+Fr(.)0 1556 y Fp(void)f(fprintdecimal)e(\(cl_ostream)g(stream,)i(int)g
 (x\))0 1681 y(void)g(fprintdecimal)e(\(cl_ostream)g(stream,)i(const)g
-(cl_I&)g(x\))480 1805 y Fp(Prin)m(ts)h(the)h(in)m(teger)h
-Fn(x)e Fp(in)g(decimal)g(on)g(the)h Fn(stream)p Fp(.)0
-1985 y Fn(void)e(fprintbinary)e(\(cl_ostream)h(stream,)g(const)h(cl_I&)
-g(x\))480 2110 y Fp(Prin)m(ts)h(the)h(in)m(teger)h Fn(x)e
-Fp(in)g(binary)f(\(base)i(2,)g(without)g(pre\014x\))e(on)h(the)h
-Fn(stream)p Fp(.)0 2289 y Fn(void)e(fprintoctal)f(\(cl_ostream)f
-(stream,)h(const)h(cl_I&)g(x\))480 2414 y Fp(Prin)m(ts)h(the)h(in)m
-(teger)h Fn(x)e Fp(in)g(o)s(ctal)h(\(base)g(8,)g(without)g(pre\014x\))e
-(on)i(the)f Fn(stream)p Fp(.)0 2594 y Fn(void)f(fprinthexadecimal)d
+(cl_I&)g(x\))480 1805 y Fr(Prin)m(ts)h(the)h(in)m(teger)h
+Fp(x)e Fr(in)g(decimal)g(on)g(the)h Fp(stream)p Fr(.)0
+1985 y Fp(void)e(fprintbinary)e(\(cl_ostream)h(stream,)g(const)h(cl_I&)
+g(x\))480 2110 y Fr(Prin)m(ts)h(the)h(in)m(teger)h Fp(x)e
+Fr(in)g(binary)f(\(base)i(2,)g(without)g(pre\014x\))e(on)h(the)h
+Fp(stream)p Fr(.)0 2289 y Fp(void)e(fprintoctal)f(\(cl_ostream)f
+(stream,)h(const)h(cl_I&)g(x\))480 2414 y Fr(Prin)m(ts)h(the)h(in)m
+(teger)h Fp(x)e Fr(in)g(o)s(ctal)h(\(base)g(8,)g(without)g(pre\014x\))e
+(on)i(the)f Fp(stream)p Fr(.)0 2594 y Fp(void)f(fprinthexadecimal)d
 (\(cl_ostream)h(stream,)i(const)f(cl_I&)h(x\))480 2718
-y Fp(Prin)m(ts)h(the)h(in)m(teger)h Fn(x)e Fp(in)g(hexadecimal)g
-(\(base)h(16,)h(without)e(pre\014x\))g(on)g(the)h Fn(stream)p
-Fp(.)0 3023 y(Eac)m(h)k(of)g(the)g(classes)g Fn(cl_N)p
-Fp(,)g Fn(cl_R)p Fp(,)g Fn(cl_RA)p Fp(,)f Fn(cl_I)p Fp(,)h
-Fn(cl_F)p Fp(,)f Fn(cl_SF)p Fp(,)h Fn(cl_FF)p Fp(,)f
-Fn(cl_DF)p Fp(,)h Fn(cl_LF)e Fp(de\014nes,)i(in)f Fn(<cl_)0
-3147 y Fi(t)m(yp)s(e)5 b Fn(_io.h>)p Fp(,)29 b(the)i(follo)m(wing)h
-(output)e(functions:)0 3451 y Fn(void)f(fprint)g(\(cl_ostream)e
-(stream,)i(const)f Fi(t)m(yp)s(e)5 b Fn(&)31 b(x\))0
+y Fr(Prin)m(ts)h(the)h(in)m(teger)h Fp(x)e Fr(in)g(hexadecimal)g
+(\(base)h(16,)h(without)e(pre\014x\))g(on)g(the)h Fp(stream)p
+Fr(.)0 3023 y(Eac)m(h)k(of)g(the)g(classes)g Fp(cl_N)p
+Fr(,)g Fp(cl_R)p Fr(,)g Fp(cl_RA)p Fr(,)f Fp(cl_I)p Fr(,)h
+Fp(cl_F)p Fr(,)f Fp(cl_SF)p Fr(,)h Fp(cl_FF)p Fr(,)f
+Fp(cl_DF)p Fr(,)h Fp(cl_LF)e Fr(de\014nes,)i(in)f Fp(<cl_)0
+3147 y Fk(t)m(yp)s(e)5 b Fp(_io.h>)p Fr(,)29 b(the)i(follo)m(wing)h
+(output)e(functions:)0 3451 y Fp(void)f(fprint)g(\(cl_ostream)e
+(stream,)i(const)f Fk(t)m(yp)s(e)5 b Fp(&)31 b(x\))0
 3576 y(cl_ostream)d(operator<<)f(\(cl_ostream)g(stream,)i(const)g
-Fi(t)m(yp)s(e)5 b Fn(&)30 b(x\))480 3700 y Fp(Prin)m(ts)38
-b(the)h(n)m(um)m(b)s(er)d Fn(x)i Fp(on)g(the)h Fn(stream)p
-Fp(.)63 b(The)38 b(output)g(ma)m(y)g(dep)s(end)f(on)h(the)h(global)g
+Fk(t)m(yp)s(e)5 b Fp(&)30 b(x\))480 3700 y Fr(Prin)m(ts)38
+b(the)h(n)m(um)m(b)s(er)d Fp(x)i Fr(on)g(the)h Fp(stream)p
+Fr(.)63 b(The)38 b(output)g(ma)m(y)g(dep)s(end)f(on)h(the)h(global)g
 (prin)m(ter)480 3825 y(settings)k(in)e(the)h(v)-5 b(ariable)43
-b Fn(cl_default_print_flags)p Fp(.)69 b(The)42 b Fn(ostream)e
-Fp(\015ags)i(and)f(settings)480 3950 y(\(\015ags,)31
+b Fp(cl_default_print_flags)p Fr(.)69 b(The)42 b Fp(ostream)e
+Fr(\015ags)i(and)f(settings)480 3950 y(\(\015ags,)31
 b(width)f(and)g(lo)s(cale\))i(are)f(ignored.)0 4254 y(The)f(most)g
-(\015exible)g(output)g(function,)g(de\014ned)g(in)g Fn(<cl_)p
-Fi(t)m(yp)s(e)5 b Fn(_io.h>)p Fp(,)28 b(are)j(the)f(follo)m(wing:)240
-4510 y Fn(void)47 b(print_complex)92 b(\(cl_ostream)44
+(\015exible)g(output)g(function,)g(de\014ned)g(in)g Fp(<cl_)p
+Fk(t)m(yp)s(e)5 b Fp(_io.h>)p Fr(,)28 b(are)j(the)f(follo)m(wing:)240
+4510 y Fp(void)47 b(print_complex)92 b(\(cl_ostream)44
 b(stream,)i(const)g(cl_print_flags&)e(flags,)1242 4614
 y(const)j(cl_N&)f(z\);)240 4717 y(void)h(print_real)236
 b(\(cl_ostream)44 b(stream,)i(const)g(cl_print_flags&)e(flags,)1242
@@ -3452,51 +3726,51 @@ b(\(cl_ostream)44 b(stream,)i(const)g(cl_print_flags&)e(flags,)1242
 b(\(cl_ostream)44 b(stream,)i(const)g(cl_print_flags&)e(flags,)p
 eop
 %%Page: 42 44
-42 43 bop 0 -116 a Fp(Chapter)30 b(5:)41 b(Input/Output)2784
-b(42)1242 366 y Fn(const)47 b(cl_I&)f(z\);)0 640 y Fp(Prin)m(ts)30
-b(the)h(n)m(um)m(b)s(er)d Fn(x)i Fp(on)g(the)h Fn(stream)p
-Fp(.)39 b(The)30 b Fn(flags)f Fp(are)h(parameters)g(whic)m(h)g
+42 43 bop 0 -116 a Fr(Chapter)30 b(5:)41 b(Input/Output)2784
+b(42)1242 366 y Fp(const)47 b(cl_I&)f(z\);)0 640 y Fr(Prin)m(ts)30
+b(the)h(n)m(um)m(b)s(er)d Fp(x)i Fr(on)g(the)h Fp(stream)p
+Fr(.)39 b(The)30 b Fp(flags)f Fr(are)h(parameters)g(whic)m(h)g
 (a\013ect)i(the)f(output.)0 914 y(The)f(structure)g(t)m(yp)s(e)g
-Fn(cl_print_flags)d Fp(con)m(tains)k(the)g(follo)m(wing)h(\014elds:)0
-1213 y Fn(unsigned)c(int)i(rational_base)480 1338 y Fp(The)g(base)g(in)
+Fp(cl_print_flags)d Fr(con)m(tains)k(the)g(follo)m(wing)h(\014elds:)0
+1213 y Fp(unsigned)c(int)i(rational_base)480 1338 y Fr(The)g(base)g(in)
 g(whic)m(h)h(rational)g(n)m(um)m(b)s(ers)d(are)j(prin)m(ted.)40
-b(Default)32 b(is)e Fn(10)p Fp(.)0 1512 y Fn(cl_boolean)e
-(rational_readably)480 1637 y Fp(If)i(this)h(\015ag)g(is)g(true,)g
+b(Default)32 b(is)e Fp(10)p Fr(.)0 1512 y Fp(cl_boolean)e
+(rational_readably)480 1637 y Fr(If)i(this)h(\015ag)g(is)g(true,)g
 (rational)h(n)m(um)m(b)s(ers)c(are)j(prin)m(ted)f(with)h(radix)f(sp)s
 (eci\014ers)g(in)g(Common)f(Lisp)480 1761 y(syn)m(tax)i(\()p
-Fn(#)p Fi(n)p Fn(R)f Fp(or)g Fn(#b)g Fp(or)g Fn(#o)g
-Fp(or)g Fn(#x)g Fp(pre\014xes,)g(trailing)h(dot\).)41
-b(Default)32 b(is)e(false.)0 1936 y Fn(cl_boolean)e(float_readably)480
-2060 y Fp(If)i(this)g(\015ag)g(is)g(true,)h(t)m(yp)s(e)f(sp)s(eci\014c)
+Fp(#)p Fk(n)p Fp(R)f Fr(or)g Fp(#b)g Fr(or)g Fp(#o)g
+Fr(or)g Fp(#x)g Fr(pre\014xes,)g(trailing)h(dot\).)41
+b(Default)32 b(is)e(false.)0 1936 y Fp(cl_boolean)e(float_readably)480
+2060 y Fr(If)i(this)g(\015ag)g(is)g(true,)h(t)m(yp)s(e)f(sp)s(eci\014c)
 g(exp)s(onen)m(t)g(mark)m(ers)f(ha)m(v)m(e)j(precedence)e(o)m(v)m(er)i
-('E'.)f(Default)g(is)480 2185 y(false.)0 2359 y Fn(cl_float_format_t)26
-b(default_float_format)480 2484 y Fp(Floating)35 b(p)s(oin)m(t)e(n)m
+('E'.)f(Default)g(is)480 2185 y(false.)0 2359 y Fp(cl_float_format_t)26
+b(default_float_format)480 2484 y Fr(Floating)35 b(p)s(oin)m(t)e(n)m
 (um)m(b)s(ers)d(of)j(this)g(format)g(will)g(b)s(e)f(prin)m(ted)h(using)
 f(the)h('E')g(exp)s(onen)m(t)g(mark)m(er.)480 2608 y(Default)e(is)g
-Fn(cl_float_format_ffloat)p Fp(.)0 2782 y Fn(cl_boolean)d
-(complex_readably)480 2907 y Fp(If)37 b(this)f(\015ag)i(is)f(true,)h
+Fp(cl_float_format_ffloat)p Fr(.)0 2782 y Fp(cl_boolean)d
+(complex_readably)480 2907 y Fr(If)37 b(this)f(\015ag)i(is)f(true,)h
 (complex)f(n)m(um)m(b)s(ers)e(will)i(b)s(e)f(prin)m(ted)h(using)f(the)i
-(Common)c(Lisp)i(syn)m(tax)480 3031 y Fn(#C\()p Fi(realpart)c(imagpart)
-r Fn(\))p Fp(.)40 b(Default)32 b(is)e(false.)0 3206 y
-Fn(cl_string)e(univpoly_varname)480 3330 y Fp(Univ)-5
+(Common)c(Lisp)i(syn)m(tax)480 3031 y Fp(#C\()p Fk(realpart)c(imagpart)
+r Fp(\))p Fr(.)40 b(Default)32 b(is)e(false.)0 3206 y
+Fp(cl_string)e(univpoly_varname)480 3330 y Fr(Univ)-5
 b(ariate)31 b(p)s(olynomials)f(with)f(no)h(explicit)h(indeterminate)f
 (name)f(will)i(b)s(e)e(prin)m(ted)h(using)f(this)480
 3455 y(v)-5 b(ariable)31 b(name.)40 b(Default)31 b(is)g
-Fn("x")p Fp(.)0 3754 y(The)38 b(global)i(v)-5 b(ariable)40
-b Fn(cl_default_print_flags)32 b Fp(con)m(tains)40 b(the)f(default)g(v)
+Fp("x")p Fr(.)0 3754 y(The)38 b(global)i(v)-5 b(ariable)40
+b Fp(cl_default_print_flags)32 b Fr(con)m(tains)40 b(the)f(default)g(v)
 -5 b(alues,)41 b(used)d(b)m(y)g(the)h(function)0 3878
-y Fn(fprint)p Fp(,)p eop
+y Fp(fprint)p Fr(.)p eop
 %%Page: 43 45
-43 44 bop 0 -116 a Fp(Chapter)30 b(6:)41 b(Rings)3120
-b(43)0 366 y Fm(6)80 b(Rings)0 754 y Fp(CLN)30 b(has)g(a)h(class)g(of)g
-(abstract)g(rings.)1433 1010 y Fn(Ring)1338 1113 y(cl_ring)1290
-1217 y(<cl_ring.h>)0 1494 y Fp(Rings)f(can)h(b)s(e)f(compared)f(for)h
-(equalit)m(y:)0 1798 y Fn(bool)f(operator==)f(\(const)g(cl_ring&,)g
+43 44 bop 0 -116 a Fr(Chapter)30 b(6:)41 b(Rings)3120
+b(43)0 366 y Fo(6)80 b(Rings)0 754 y Fr(CLN)30 b(has)g(a)h(class)g(of)g
+(abstract)g(rings.)1433 1010 y Fp(Ring)1338 1113 y(cl_ring)1290
+1217 y(<cl_ring.h>)0 1494 y Fr(Rings)f(can)h(b)s(e)f(compared)f(for)h
+(equalit)m(y:)0 1798 y Fp(bool)f(operator==)f(\(const)g(cl_ring&,)g
 (const)h(cl_ring&\))0 1923 y(bool)g(operator!=)f(\(const)g(cl_ring&,)g
-(const)h(cl_ring&\))480 2047 y Fp(These)h(compare)g(t)m(w)m(o)i(rings)e
+(const)h(cl_ring&\))480 2047 y Fr(These)h(compare)g(t)m(w)m(o)i(rings)e
 (for)g(equalit)m(y)-8 b(.)0 2352 y(Giv)m(en)31 b(a)g(ring)f
-Fn(R)p Fp(,)g(the)h(follo)m(wing)h(mem)m(b)s(ers)27 b(can)k(b)s(e)f
-(used.)0 2656 y Fn(void)f(R->fprint)f(\(cl_ostream)f(stream,)i(const)g
+Fp(R)p Fr(,)g(the)h(follo)m(wing)h(mem)m(b)s(ers)27 b(can)k(b)s(e)f
+(used.)0 2656 y Fp(void)f(R->fprint)f(\(cl_ostream)f(stream,)i(const)g
 (cl_ring_element&)d(x\))0 2780 y(cl_boolean)i(R->equal)g(\(const)g
 (cl_ring_element&)e(x,)k(const)f(cl_ring_element&)d(y\))0
 2905 y(cl_ring_element)g(R->zero)j(\(\))0 3030 y(cl_boolean)f(R->zerop)
@@ -3510,193 +3784,193 @@ g(\(const)g(cl_ring_element&)e(x\))0 3154 y(cl_ring_element)g(R->plus)j
 b(const)f(cl_ring_element&)d(y\))0 3901 y(cl_ring_element)g(R->square)i
 (\(const)h(cl_ring_element&)d(x\))0 4026 y(cl_ring_element)g
 (R->expt_pos)i(\(const)g(cl_ring_element&)e(x,)k(const)f(cl_I&)g(y\))0
-4302 y Fp(The)h(follo)m(wing)i(rings)e(are)g(built-in.)0
-4607 y Fn(cl_null_ring)d(cl_0_ring)480 4731 y Fp(The)j(n)m(ull)g(ring,)
-h(con)m(taining)g(only)g(zero.)0 4911 y Fn(cl_complex_ring)26
-b(cl_C_ring)480 5036 y Fp(The)k(ring)g(of)h(complex)f(n)m(um)m(b)s
+4302 y Fr(The)h(follo)m(wing)i(rings)e(are)g(built-in.)0
+4607 y Fp(cl_null_ring)d(cl_0_ring)480 4731 y Fr(The)j(n)m(ull)g(ring,)
+h(con)m(taining)g(only)g(zero.)0 4911 y Fp(cl_complex_ring)26
+b(cl_C_ring)480 5036 y Fr(The)k(ring)g(of)h(complex)f(n)m(um)m(b)s
 (ers.)38 b(This)29 b(corresp)s(onds)g(to)j(the)e(t)m(yp)s(e)h
-Fn(cl_N)p Fp(.)0 5215 y Fn(cl_real_ring)c(cl_R_ring)480
-5340 y Fp(The)j(ring)g(of)h(real)g(n)m(um)m(b)s(ers.)38
+Fp(cl_N)p Fr(.)0 5215 y Fp(cl_real_ring)c(cl_R_ring)480
+5340 y Fr(The)j(ring)g(of)h(real)g(n)m(um)m(b)s(ers.)38
 b(This)29 b(corresp)s(onds)g(to)i(the)g(t)m(yp)s(e)g
-Fn(cl_R)p Fp(.)p eop
+Fp(cl_R)p Fr(.)p eop
 %%Page: 44 46
-44 45 bop 0 -116 a Fp(Chapter)30 b(6:)41 b(Rings)3120
-b(44)0 366 y Fn(cl_rational_ring)26 b(cl_RA_ring)480
-491 y Fp(The)k(ring)g(of)h(rational)g(n)m(um)m(b)s(ers.)38
+44 45 bop 0 -116 a Fr(Chapter)30 b(6:)41 b(Rings)3120
+b(44)0 366 y Fp(cl_rational_ring)26 b(cl_RA_ring)480
+491 y Fr(The)k(ring)g(of)h(rational)g(n)m(um)m(b)s(ers.)38
 b(This)30 b(corresp)s(onds)f(to)i(the)g(t)m(yp)s(e)f
-Fn(cl_RA)p Fp(.)0 665 y Fn(cl_integer_ring)c(cl_I_ring)480
-790 y Fp(The)k(ring)g(of)h(in)m(tegers.)41 b(This)30
-b(corresp)s(onds)f(to)i(the)g(t)m(yp)s(e)f Fn(cl_I)p
-Fp(.)0 1089 y(T)m(yp)s(e)g(tests)h(can)g(b)s(e)e(p)s(erformed)f(for)i
-(an)m(y)h(of)g Fn(cl_C_ring)p Fp(,)d Fn(cl_R_ring)p Fp(,)g
-Fn(cl_RA_ring)p Fp(,)g Fn(cl_I_ring)p Fp(:)0 1388 y Fn(cl_boolean)g
+Fp(cl_RA)p Fr(.)0 665 y Fp(cl_integer_ring)c(cl_I_ring)480
+790 y Fr(The)k(ring)g(of)h(in)m(tegers.)41 b(This)30
+b(corresp)s(onds)f(to)i(the)g(t)m(yp)s(e)f Fp(cl_I)p
+Fr(.)0 1089 y(T)m(yp)s(e)g(tests)h(can)g(b)s(e)e(p)s(erformed)f(for)i
+(an)m(y)h(of)g Fp(cl_C_ring)p Fr(,)d Fp(cl_R_ring)p Fr(,)g
+Fp(cl_RA_ring)p Fr(,)g Fp(cl_I_ring)p Fr(:)0 1388 y Fp(cl_boolean)g
 (instanceof)f(\(const)i(cl_number&)e(x,)j(const)f(cl_number_ring&)d
-(R\))480 1512 y Fp(T)-8 b(ests)31 b(whether)f(the)g(giv)m(en)i(n)m(um)m
+(R\))480 1512 y Fr(T)-8 b(ests)31 b(whether)f(the)g(giv)m(en)i(n)m(um)m
 (b)s(er)c(is)i(an)g(elemen)m(t)h(of)g(the)f(n)m(um)m(b)s(er)e(ring)i
 (R.)p eop
 %%Page: 45 47
-45 46 bop 0 -116 a Fp(Chapter)30 b(7:)41 b(Mo)s(dular)30
-b(in)m(tegers)2670 b(45)0 366 y Fm(7)80 b(Mo)t(dular)32
-b(in)l(tegers)0 1011 y Fq(7.1)68 b(Mo)t(dular)30 b(in)l(teger)i(rings)0
-1292 y Fp(CLN)24 b(implemen)m(ts)f(mo)s(dular)g(in)m(tegers,)k(i.e.)40
+45 46 bop 0 -116 a Fr(Chapter)30 b(7:)41 b(Mo)s(dular)30
+b(in)m(tegers)2670 b(45)0 366 y Fo(7)80 b(Mo)t(dular)32
+b(in)l(tegers)0 1011 y Fs(7.1)68 b(Mo)t(dular)30 b(in)l(teger)i(rings)0
+1292 y Fr(CLN)24 b(implemen)m(ts)f(mo)s(dular)g(in)m(tegers,)k(i.e.)40
 b(in)m(tegers)26 b(mo)s(dulo)d(a)i(\014xed)f(in)m(teger)i(N.)f(The)g
 (mo)s(dulus)d(is)i(explicitly)0 1417 y(part)34 b(of)f(ev)m(ery)i(mo)s
 (dular)d(in)m(teger.)52 b(CLN)33 b(do)s(esn't)g(allo)m(w)i(y)m(ou)g(to)
 f(\(acciden)m(tally\))j(mix)c(elemen)m(ts)h(of)f(di\013eren)m(t)0
-1541 y(mo)s(dular)20 b(rings,)k(e.g.)39 b Fn(\(3)30 b(mod)f(4\))h(+)g
-(\(2)g(mod)f(5\))22 b Fp(will)g(result)g(in)g(a)h(run)m(time)e(error.)
+1541 y(mo)s(dular)20 b(rings,)k(e.g.)39 b Fp(\(3)30 b(mod)f(4\))h(+)g
+(\(2)g(mod)f(5\))22 b Fr(will)g(result)g(in)g(a)h(run)m(time)e(error.)
 37 b(\(Ideally)23 b(one)g(w)m(ould)f(imagine)0 1666 y(a)28
-b(generic)g(data)g(t)m(yp)s(e)f Fn(cl_MI\(N\))p Fp(,)f(but)g(C)p
-Fn(++)g Fp(do)s(esn't)h(ha)m(v)m(e)i(generic)f(t)m(yp)s(es.)39
+b(generic)g(data)g(t)m(yp)s(e)f Fp(cl_MI\(N\))p Fr(,)f(but)g(C)p
+Fp(++)g Fr(do)s(esn't)h(ha)m(v)m(e)i(generic)f(t)m(yp)s(es.)39
 b(So)28 b(one)f(has)g(to)h(liv)m(e)g(with)f(run)m(time)0
 1790 y(c)m(hec)m(ks.\))0 2072 y(The)j(class)h(of)g(mo)s(dular)d(in)m
-(teger)k(rings)e(is)1433 2332 y Fn(Ring)1338 2436 y(cl_ring)1290
+(teger)k(rings)e(is)1433 2332 y Fp(Ring)1338 2436 y(cl_ring)1290
 2540 y(<cl_ring.h>)1481 2644 y(|)1481 2748 y(|)1051 2851
 y(Modular)46 b(integer)g(ring)1195 2955 y(cl_modint_ring)1147
-3059 y(<cl_modinteger.h>)0 3340 y Fp(and)30 b(the)g(class)h(of)g(all)g
+3059 y(<cl_modinteger.h>)0 3340 y Fr(and)30 b(the)g(class)h(of)g(all)g
 (mo)s(dular)e(in)m(tegers)i(\(elemen)m(ts)g(of)g(mo)s(dular)d(in)m
-(teger)k(rings\))e(is)1195 3601 y Fn(Modular)45 b(integer)1433
-3705 y(cl_MI)1147 3808 y(<cl_modinteger.h>)0 4090 y Fp(Mo)s(dular)30
+(teger)k(rings\))e(is)1195 3601 y Fp(Modular)45 b(integer)1433
+3705 y(cl_MI)1147 3808 y(<cl_modinteger.h>)0 4090 y Fr(Mo)s(dular)30
 b(in)m(teger)i(rings)e(are)g(constructed)h(using)f(the)h(function)0
-4404 y Fn(cl_modint_ring)26 b(cl_find_modint_ring)g(\(const)i(cl_I&)h
-(N\))480 4528 y Fp(This)23 b(function)h(returns)e(the)i(mo)s(dular)e
-(ring)i(`)p Fn(Z/NZ)p Fp('.)37 b(It)24 b(tak)m(es)i(care)e(of)g
+4404 y Fp(cl_modint_ring)26 b(cl_find_modint_ring)g(\(const)i(cl_I&)h
+(N\))480 4528 y Fr(This)23 b(function)h(returns)e(the)i(mo)s(dular)e
+(ring)i(`)p Fp(Z/NZ)p Fr('.)37 b(It)24 b(tak)m(es)i(care)e(of)g
 (\014nding)f(out)h(ab)s(out)f(sp)s(ecial)480 4653 y(cases)34
-b(of)f Fn(N)p Fp(,)g(lik)m(e)h(p)s(o)m(w)m(ers)f(of)g(t)m(w)m(o)i(and)d
+b(of)f Fp(N)p Fr(,)g(lik)m(e)h(p)s(o)m(w)m(ers)f(of)g(t)m(w)m(o)i(and)d
 (o)s(dd)g(n)m(um)m(b)s(ers)e(for)j(whic)m(h)f(Mon)m(tgomery)i(m)m
 (ultiplication)480 4777 y(will)39 b(b)s(e)f(a)h(win,)h(and)e
 (precomputes)f(an)m(y)h(necessary)h(auxiliary)h(data)f(for)f(computing)
-g(mo)s(dulo)480 4902 y Fn(N)p Fp(.)45 b(There)32 b(is)f(a)i(cac)m(he)g
-(table)g(of)f(rings,)g(indexed)g(b)m(y)g Fn(N)f Fp(\(or,)i(more)e
-(precisely)-8 b(,)34 b(b)m(y)e Fn(abs\(N\))p Fp(\).)44
+g(mo)s(dulo)480 4902 y Fp(N)p Fr(.)45 b(There)32 b(is)f(a)i(cac)m(he)g
+(table)g(of)f(rings,)g(indexed)g(b)m(y)g Fp(N)f Fr(\(or,)i(more)e
+(precisely)-8 b(,)34 b(b)m(y)e Fp(abs\(N\))p Fr(\).)44
 b(This)480 5026 y(ensures)29 b(that)i(the)g(precomputation)f(costs)h
 (are)g(reduced)e(to)j(a)e(minim)m(um.)0 5340 y(Mo)s(dular)g(in)m(teger)
 i(rings)e(can)g(b)s(e)g(compared)f(for)i(equalit)m(y:)p
 eop
 %%Page: 46 48
-46 47 bop 0 -116 a Fp(Chapter)30 b(7:)41 b(Mo)s(dular)30
-b(in)m(tegers)2670 b(46)0 366 y Fn(bool)29 b(operator==)f(\(const)g
+46 47 bop 0 -116 a Fr(Chapter)30 b(7:)41 b(Mo)s(dular)30
+b(in)m(tegers)2670 b(46)0 366 y Fp(bool)29 b(operator==)f(\(const)g
 (cl_modint_ring&,)e(const)j(cl_modint_ring&\))0 491 y(bool)g
 (operator!=)f(\(const)g(cl_modint_ring&,)e(const)j(cl_modint_ring&\))
-480 616 y Fp(These)e(compare)g(t)m(w)m(o)h(mo)s(dular)e(in)m(teger)i
+480 616 y Fr(These)e(compare)g(t)m(w)m(o)h(mo)s(dular)e(in)m(teger)i
 (rings)f(for)g(equalit)m(y)-8 b(.)42 b(Tw)m(o)27 b(di\013eren)m(t)h
-(calls)g(to)g Fn(cl_find_)480 740 y(modint_ring)34 b
-Fp(with)i(the)h(same)f(argumen)m(t)g(necessarily)h(return)f(the)h(same)
+(calls)g(to)g Fp(cl_find_)480 740 y(modint_ring)34 b
+Fr(with)i(the)h(same)f(argumen)m(t)g(necessarily)h(return)f(the)h(same)
 f(ring)g(b)s(ecause)h(it)g(is)480 865 y(memoized)29 b(in)h(the)h(cac)m
-(he)h(table.)0 1318 y Fq(7.2)68 b(F)-11 b(unctions)30
-b(on)g(mo)t(dular)g(in)l(tegers)0 1593 y Fp(Giv)m(en)h(a)g(mo)s(dular)d
-(in)m(teger)k(ring)e Fn(R)p Fp(,)h(the)f(follo)m(wing)i(mem)m(b)s(ers)c
-(can)i(b)s(e)g(used.)0 1893 y Fn(cl_I)f(R->modulus)480
-2017 y Fp(This)h(is)g(the)h(ring's)f(mo)s(dulus,)e(normalized)i(to)h(b)
-s(e)e(nonnegativ)m(e:)43 b Fn(abs\(N\))p Fp(.)0 2193
-y Fn(cl_MI)29 b(R->zero\(\))480 2317 y Fp(This)h(returns)f
-Fn(0)h(mod)f(N)p Fp(.)0 2493 y Fn(cl_MI)g(R->one\(\))480
-2617 y Fp(This)h(returns)f Fn(1)h(mod)f(N)p Fp(.)0 2793
-y Fn(cl_MI)g(R->canonhom)e(\(const)i(cl_I&)g(x\))480
-2917 y Fp(This)h(returns)f Fn(x)h(mod)f(N)p Fp(.)0 3093
-y Fn(cl_I)g(R->retract)f(\(const)g(cl_MI&)h(x\))480 3217
-y Fp(This)20 b(is)h(a)g(partial)g(in)m(v)m(erse)h(function)e(to)i
-Fn(R->canonhom)p Fp(.)34 b(It)21 b(returns)e(the)i(standard)f(represen)
-m(tativ)m(e)480 3342 y(\()p Fn(>=0)p Fp(,)30 b Fn(<N)p
-Fp(\))g(of)h Fn(x)p Fp(.)0 3517 y Fn(cl_MI)e(R->random\(cl_random_stat)
+(he)h(table.)0 1318 y Fs(7.2)68 b(F)-11 b(unctions)30
+b(on)g(mo)t(dular)g(in)l(tegers)0 1593 y Fr(Giv)m(en)h(a)g(mo)s(dular)d
+(in)m(teger)k(ring)e Fp(R)p Fr(,)h(the)f(follo)m(wing)i(mem)m(b)s(ers)c
+(can)i(b)s(e)g(used.)0 1893 y Fp(cl_I)f(R->modulus)480
+2017 y Fr(This)h(is)g(the)h(ring's)f(mo)s(dulus,)e(normalized)i(to)h(b)
+s(e)e(nonnegativ)m(e:)43 b Fp(abs\(N\))p Fr(.)0 2193
+y Fp(cl_MI)29 b(R->zero\(\))480 2317 y Fr(This)h(returns)f
+Fp(0)h(mod)f(N)p Fr(.)0 2493 y Fp(cl_MI)g(R->one\(\))480
+2617 y Fr(This)h(returns)f Fp(1)h(mod)f(N)p Fr(.)0 2793
+y Fp(cl_MI)g(R->canonhom)e(\(const)i(cl_I&)g(x\))480
+2917 y Fr(This)h(returns)f Fp(x)h(mod)f(N)p Fr(.)0 3093
+y Fp(cl_I)g(R->retract)f(\(const)g(cl_MI&)h(x\))480 3217
+y Fr(This)20 b(is)h(a)g(partial)g(in)m(v)m(erse)h(function)e(to)i
+Fp(R->canonhom)p Fr(.)34 b(It)21 b(returns)e(the)i(standard)f(represen)
+m(tativ)m(e)480 3342 y(\()p Fp(>=0)p Fr(,)30 b Fp(<N)p
+Fr(\))g(of)h Fp(x)p Fr(.)0 3517 y Fp(cl_MI)e(R->random\(cl_random_stat)
 o(e&)24 b(randomstate\))0 3642 y(cl_MI)29 b(R->random\(\))480
-3766 y Fp(This)h(returns)f(a)h(random)f(in)m(teger)j(mo)s(dulo)d
-Fn(N)p Fp(.)0 4066 y(The)h(follo)m(wing)i(op)s(erations)e(are)h
+3766 y Fr(This)h(returns)f(a)h(random)f(in)m(teger)j(mo)s(dulo)d
+Fp(N)p Fr(.)0 4066 y(The)h(follo)m(wing)i(op)s(erations)e(are)h
 (de\014ned)e(on)i(mo)s(dular)d(in)m(tegers.)0 4366 y
-Fn(cl_modint_ring)e(x.ring)j(\(\))480 4491 y Fp(Returns)g(the)i(ring)f
-(to)h(whic)m(h)f(the)h(mo)s(dular)d(in)m(teger)k Fn(x)e
-Fp(b)s(elongs.)0 4666 y Fn(cl_MI)f(operator+)f(\(const)g(cl_MI&,)h
-(const)g(cl_MI&\))480 4791 y Fp(Returns)j(the)h(sum)f(of)h(t)m(w)m(o)h
+Fp(cl_modint_ring)e(x.ring)j(\(\))480 4491 y Fr(Returns)g(the)i(ring)f
+(to)h(whic)m(h)f(the)h(mo)s(dular)d(in)m(teger)k Fp(x)e
+Fr(b)s(elongs.)0 4666 y Fp(cl_MI)f(operator+)f(\(const)g(cl_MI&,)h
+(const)g(cl_MI&\))480 4791 y Fr(Returns)j(the)h(sum)f(of)h(t)m(w)m(o)h
 (mo)s(dular)d(in)m(tegers.)51 b(One)32 b(of)i(the)f(argumen)m(ts)f(ma)m
 (y)h(also)h(b)s(e)f(a)g(plain)480 4915 y(in)m(teger.)0
-5091 y Fn(cl_MI)c(operator-)f(\(const)g(cl_MI&,)h(const)g(cl_MI&\))480
-5215 y Fp(Returns)k(the)h(di\013erence)h(of)f(t)m(w)m(o)i(mo)s(dular)c
+5091 y Fp(cl_MI)c(operator-)f(\(const)g(cl_MI&,)h(const)g(cl_MI&\))480
+5215 y Fr(Returns)k(the)h(di\013erence)h(of)f(t)m(w)m(o)i(mo)s(dular)c
 (in)m(tegers.)53 b(One)33 b(of)i(the)f(argumen)m(ts)f(ma)m(y)h(also)h
 (b)s(e)f(a)480 5340 y(plain)c(in)m(teger.)p eop
 %%Page: 47 49
-47 48 bop 0 -116 a Fp(Chapter)30 b(7:)41 b(Mo)s(dular)30
-b(in)m(tegers)2670 b(47)0 366 y Fn(cl_MI)29 b(operator-)f(\(const)g
-(cl_MI&\))480 491 y Fp(Returns)h(the)i(negativ)m(e)i(of)d(a)h(mo)s
-(dular)d(in)m(teger.)0 663 y Fn(cl_MI)h(operator*)f(\(const)g(cl_MI&,)h
-(const)g(cl_MI&\))480 787 y Fp(Returns)37 b(the)i(pro)s(duct)e(of)h(t)m
+47 48 bop 0 -116 a Fr(Chapter)30 b(7:)41 b(Mo)s(dular)30
+b(in)m(tegers)2670 b(47)0 366 y Fp(cl_MI)29 b(operator-)f(\(const)g
+(cl_MI&\))480 491 y Fr(Returns)h(the)i(negativ)m(e)i(of)d(a)h(mo)s
+(dular)d(in)m(teger.)0 663 y Fp(cl_MI)h(operator*)f(\(const)g(cl_MI&,)h
+(const)g(cl_MI&\))480 787 y Fr(Returns)37 b(the)i(pro)s(duct)e(of)h(t)m
 (w)m(o)i(mo)s(dular)c(in)m(tegers.)65 b(One)38 b(of)g(the)h(argumen)m
 (ts)e(ma)m(y)h(also)h(b)s(e)f(a)480 912 y(plain)30 b(in)m(teger.)0
-1084 y Fn(cl_MI)f(square)g(\(const)f(cl_MI&\))480 1208
-y Fp(Returns)h(the)i(square)f(of)h(a)f(mo)s(dular)f(in)m(teger.)0
-1380 y Fn(cl_MI)g(recip)g(\(const)g(cl_MI&)f(x\))480
-1505 y Fp(Returns)c(the)i(recipro)s(cal)f Fn(x^-1)f Fp(of)i(a)f(mo)s
-(dular)e(in)m(teger)k Fn(x)p Fp(.)38 b Fn(x)25 b Fp(m)m(ust)f(b)s(e)h
+1084 y Fp(cl_MI)f(square)g(\(const)f(cl_MI&\))480 1208
+y Fr(Returns)h(the)i(square)f(of)h(a)f(mo)s(dular)f(in)m(teger.)0
+1380 y Fp(cl_MI)g(recip)g(\(const)g(cl_MI&)f(x\))480
+1505 y Fr(Returns)c(the)i(recipro)s(cal)f Fp(x^-1)f Fr(of)i(a)f(mo)s
+(dular)e(in)m(teger)k Fp(x)p Fr(.)38 b Fp(x)25 b Fr(m)m(ust)f(b)s(e)h
 (coprime)f(to)i(the)f(mo)s(dulus,)480 1629 y(otherwise)31
-b(an)f(error)g(message)h(is)f(issued.)0 1801 y Fn(cl_MI)f(div)g
+b(an)f(error)g(message)h(is)f(issued.)0 1801 y Fp(cl_MI)f(div)g
 (\(const)g(cl_MI&)g(x,)h(const)e(cl_MI&)h(y\))480 1926
-y Fp(Returns)j(the)h(quotien)m(t)h Fn(x*y^-1)e Fp(of)h(t)m(w)m(o)h(mo)s
-(dular)d(in)m(tegers)j Fn(x)p Fp(,)g Fn(y)p Fp(.)48 b
-Fn(y)33 b Fp(m)m(ust)e(b)s(e)i(coprime)f(to)i(the)480
+y Fr(Returns)j(the)h(quotien)m(t)h Fp(x*y^-1)e Fr(of)h(t)m(w)m(o)h(mo)s
+(dular)d(in)m(tegers)j Fp(x)p Fr(,)g Fp(y)p Fr(.)48 b
+Fp(y)33 b Fr(m)m(ust)e(b)s(e)i(coprime)f(to)i(the)480
 2050 y(mo)s(dulus,)28 b(otherwise)j(an)f(error)g(message)g(is)h
-(issued.)0 2222 y Fn(cl_MI)e(expt_pos)f(\(const)h(cl_MI&)f(x,)i(const)f
-(cl_I&)g(y\))480 2347 y(y)h Fp(m)m(ust)f(b)s(e)h Fn(>)g
-Fp(0.)41 b(Returns)30 b Fn(x^y)p Fp(.)0 2519 y Fn(cl_MI)f(expt)g
+(issued.)0 2222 y Fp(cl_MI)e(expt_pos)f(\(const)h(cl_MI&)f(x,)i(const)f
+(cl_I&)g(y\))480 2347 y(y)h Fr(m)m(ust)f(b)s(e)h Fp(>)g
+Fr(0.)41 b(Returns)30 b Fp(x^y)p Fr(.)0 2519 y Fp(cl_MI)f(expt)g
 (\(const)g(cl_MI&)f(x,)i(const)f(cl_I&)g(y\))480 2643
-y Fp(Returns)d Fn(x^y)p Fp(.)39 b(If)26 b Fn(y)h Fp(is)g(negativ)m(e,)j
-Fn(x)d Fp(m)m(ust)f(b)s(e)h(coprime)f(to)i(the)f(mo)s(dulus,)e(else)j
+y Fr(Returns)d Fp(x^y)p Fr(.)39 b(If)26 b Fp(y)h Fr(is)g(negativ)m(e,)j
+Fp(x)d Fr(m)m(ust)f(b)s(e)h(coprime)f(to)i(the)f(mo)s(dulus,)e(else)j
 (an)f(error)g(message)480 2768 y(is)j(issued.)0 2940
-y Fn(cl_MI)f(operator<<)f(\(const)g(cl_MI&)h(x,)h(const)f(cl_I&)f(y\))
-480 3064 y Fp(Returns)h Fn(x*2^y)p Fp(.)0 3236 y Fn(cl_MI)g(operator>>)
+y Fp(cl_MI)f(operator<<)f(\(const)g(cl_MI&)h(x,)h(const)f(cl_I&)f(y\))
+480 3064 y Fr(Returns)h Fp(x*2^y)p Fr(.)0 3236 y Fp(cl_MI)g(operator>>)
 f(\(const)g(cl_MI&)h(x,)h(const)f(cl_I&)f(y\))480 3361
-y Fp(Returns)g Fn(x*2^-y)p Fp(.)38 b(When)29 b Fn(y)f
-Fp(is)h(p)s(ositiv)m(e,)i(the)e(mo)s(dulus)d(m)m(ust)i(b)s(e)g(o)s(dd,)
+y Fr(Returns)g Fp(x*2^-y)p Fr(.)38 b(When)29 b Fp(y)f
+Fr(is)h(p)s(ositiv)m(e,)i(the)e(mo)s(dulus)d(m)m(ust)i(b)s(e)g(o)s(dd,)
 g(or)h(an)g(error)f(message)h(is)480 3485 y(issued.)0
-3657 y Fn(bool)g(operator==)f(\(const)g(cl_MI&,)h(const)g(cl_MI&\))0
+3657 y Fp(bool)g(operator==)f(\(const)g(cl_MI&,)h(const)g(cl_MI&\))0
 3782 y(bool)g(operator!=)f(\(const)g(cl_MI&,)h(const)g(cl_MI&\))480
-3906 y Fp(Compares)24 b(t)m(w)m(o)i(mo)s(dular)d(in)m(tegers,)28
+3906 y Fr(Compares)24 b(t)m(w)m(o)i(mo)s(dular)d(in)m(tegers,)28
 b(b)s(elonging)e(to)f(the)h(same)e(mo)s(dular)f(in)m(teger)k(ring,)f
-(for)f(equal-)480 4031 y(it)m(y)-8 b(.)0 4203 y Fn(cl_boolean)28
-b(zerop)h(\(const)f(cl_MI&)h(x\))480 4327 y Fp(Returns)g(true)i(if)f
-Fn(x)g Fp(is)g Fn(0)g(mod)g(N)p Fp(.)0 4625 y(The)g(follo)m(wing)i
+(for)f(equal-)480 4031 y(it)m(y)-8 b(.)0 4203 y Fp(cl_boolean)28
+b(zerop)h(\(const)f(cl_MI&)h(x\))480 4327 y Fr(Returns)g(true)i(if)f
+Fp(x)g Fr(is)g Fp(0)g(mod)g(N)p Fr(.)0 4625 y(The)g(follo)m(wing)i
 (output)e(functions)g(are)g(de\014ned)g(\(see)h(also)g(the)g(c)m
-(hapter)g(on)f(input/output\).)0 4923 y Fn(void)f(fprint)g
+(hapter)g(on)f(input/output\).)0 4923 y Fp(void)f(fprint)g
 (\(cl_ostream)e(stream,)i(const)f(cl_MI&)h(x\))0 5047
 y(cl_ostream)f(operator<<)f(\(cl_ostream)g(stream,)i(const)g(cl_MI&)f
-(x\))480 5172 y Fp(Prin)m(ts)36 b(the)h(mo)s(dular)e(in)m(teger)j
-Fn(x)e Fp(on)g(the)h Fn(stream)p Fp(.)57 b(The)36 b(output)h(ma)m(y)f
+(x\))480 5172 y Fr(Prin)m(ts)36 b(the)h(mo)s(dular)e(in)m(teger)j
+Fp(x)e Fr(on)g(the)h Fp(stream)p Fr(.)57 b(The)36 b(output)h(ma)m(y)f
 (dep)s(end)e(on)j(the)g(global)480 5296 y(prin)m(ter)30
-b(settings)h(in)f(the)h(v)-5 b(ariable)31 b Fn(cl_default_print_flags)p
-Fp(.)p eop
+b(settings)h(in)f(the)h(v)-5 b(ariable)31 b Fp(cl_default_print_flags)p
+Fr(.)p eop
 %%Page: 48 50
-48 49 bop 0 -116 a Fp(Chapter)30 b(8:)41 b(Sym)m(b)s(olic)29
-b(data)i(t)m(yp)s(es)2536 b(48)0 366 y Fm(8)80 b(Sym)l(b)t(olic)31
-b(data)f(t)l(yp)t(es)0 784 y Fp(CLN)g(implemen)m(ts)f(t)m(w)m(o)j(sym)m
+48 49 bop 0 -116 a Fr(Chapter)30 b(8:)41 b(Sym)m(b)s(olic)29
+b(data)i(t)m(yp)s(es)2536 b(48)0 366 y Fo(8)80 b(Sym)l(b)t(olic)31
+b(data)f(t)l(yp)t(es)0 784 y Fr(CLN)g(implemen)m(ts)f(t)m(w)m(o)j(sym)m
 (b)s(olic)d(\(non-n)m(umeric\))h(data)h(t)m(yp)s(es:)41
-b(strings)30 b(and)g(sym)m(b)s(ols.)0 1310 y Fq(8.1)68
-b(Strings)0 1593 y Fp(The)30 b(class)1290 1855 y Fn(String)1242
-1959 y(cl_string)1195 2062 y(<cl_string.h>)0 2345 y Fp(implemen)m(ts)f
+b(strings)30 b(and)g(sym)m(b)s(ols.)0 1310 y Fs(8.1)68
+b(Strings)0 1593 y Fr(The)30 b(class)1290 1855 y Fp(String)1242
+1959 y(cl_string)1195 2062 y(<cl_string.h>)0 2345 y Fr(implemen)m(ts)f
 (imm)m(utable)g(strings.)0 2628 y(Strings)h(are)h(constructed)f
 (through)g(the)h(follo)m(wing)g(constructors:)0 2944
-y Fn(cl_string)d(\(const)h(char)g(*)h(s\))480 3069 y
-Fp(Returns)f(an)i(imm)m(utable)e(cop)m(y)i(of)f(the)h
-(\(zero-terminated\))h(C)e(string)g Fn(s)p Fp(.)0 3260
-y Fn(cl_string)e(\(const)h(char)g(*)h(ptr,)f(unsigned)f(long)h(len\))
-480 3385 y Fp(Returns)34 b(an)h(imm)m(utable)f(cop)m(y)h(of)g(the)h
-Fn(len)e Fp(c)m(haracters)i(at)g Fn(ptr[0])p Fp(,)f Fl(:)15
-b(:)g(:)q Fp(,)36 b Fn(ptr[len-1])p Fp(.)52 b(NUL)480
+y Fp(cl_string)d(\(const)h(char)g(*)h(s\))480 3069 y
+Fr(Returns)f(an)i(imm)m(utable)e(cop)m(y)i(of)f(the)h
+(\(zero-terminated\))h(C)e(string)g Fp(s)p Fr(.)0 3260
+y Fp(cl_string)e(\(const)h(char)g(*)h(ptr,)f(unsigned)f(long)h(len\))
+480 3385 y Fr(Returns)34 b(an)h(imm)m(utable)f(cop)m(y)h(of)g(the)h
+Fp(len)e Fr(c)m(haracters)i(at)g Fp(ptr[0])p Fr(,)f Fn(:)15
+b(:)g(:)q Fr(,)36 b Fp(ptr[len-1])p Fr(.)52 b(NUL)480
 3509 y(c)m(haracters)32 b(are)f(allo)m(w)m(ed.)0 3826
 y(The)f(follo)m(wing)i(functions)e(are)g(a)m(v)-5 b(ailable)33
-b(on)d(strings:)0 4142 y Fn(operator)e(=)480 4267 y Fp(Assignmen)m(t)i
-(from)f Fn(cl_string)f Fp(and)h Fn(const)g(char)h(*)p
-Fp(.)0 4458 y Fn(s.length\(\))0 4583 y(strlen\(s\))480
-4707 y Fp(Returns)f(the)i(length)g(of)f(the)h(string)f
-Fn(s)p Fp(.)0 4899 y Fn(s[i])288 b Fp(Returns)24 b(the)h
-Fn(i)p Fp(th)f(c)m(haracter)j(of)e(the)f(string)h Fn(s)p
-Fp(.)39 b Fn(i)24 b Fp(m)m(ust)g(b)s(e)g(in)h(the)f(range)i
-Fn(0)k(<=)f(i)h(<)g(s.length\(\))p Fp(.)0 5091 y Fn(bool)f(equal)g
+b(on)d(strings:)0 4142 y Fp(operator)e(=)480 4267 y Fr(Assignmen)m(t)i
+(from)f Fp(cl_string)f Fr(and)h Fp(const)g(char)h(*)p
+Fr(.)0 4458 y Fp(s.length\(\))0 4583 y(strlen\(s\))480
+4707 y Fr(Returns)f(the)i(length)g(of)f(the)h(string)f
+Fp(s)p Fr(.)0 4899 y Fp(s[i])288 b Fr(Returns)24 b(the)h
+Fp(i)p Fr(th)f(c)m(haracter)j(of)e(the)f(string)h Fp(s)p
+Fr(.)39 b Fp(i)24 b Fr(m)m(ust)g(b)s(e)g(in)h(the)f(range)i
+Fp(0)k(<=)f(i)h(<)g(s.length\(\))p Fr(.)0 5091 y Fp(bool)f(equal)g
 (\(const)g(cl_string&)e(s1,)j(const)f(cl_string&)e(s2\))480
-5215 y Fp(Compares)34 b(t)m(w)m(o)i(strings)f(for)g(equalit)m(y)-8
+5215 y Fr(Compares)34 b(t)m(w)m(o)i(strings)f(for)g(equalit)m(y)-8
 b(.)57 b(One)35 b(of)g(the)h(argumen)m(ts)e(ma)m(y)h(also)h(b)s(e)f(a)g
-(plain)g Fn(const)480 5340 y(char)29 b(*)p Fp(.)p eop
+(plain)g Fp(const)480 5340 y(char)29 b(*)p Fr(.)p eop
 %%Page: 49 51
-49 50 bop 0 -116 a Fp(Chapter)30 b(8:)41 b(Sym)m(b)s(olic)29
-b(data)i(t)m(yp)s(es)2536 b(49)0 366 y Fq(8.2)68 b(Sym)l(b)t(ols)0
-640 y Fp(Sym)m(b)s(ols)40 b(are)j(uniqui\014ed)d(strings:)64
+49 50 bop 0 -116 a Fr(Chapter)30 b(8:)41 b(Sym)m(b)s(olic)29
+b(data)i(t)m(yp)s(es)2536 b(49)0 366 y Fs(8.2)68 b(Sym)l(b)t(ols)0
+640 y Fr(Sym)m(b)s(ols)40 b(are)j(uniqui\014ed)d(strings:)64
 b(all)43 b(sym)m(b)s(ols)e(with)h(the)g(same)g(name)f(are)i(shared.)75
 b(This)41 b(means)g(that)0 765 y(comparison)34 b(of)i(t)m(w)m(o)g(sym)m
 (b)s(ols)e(is)h(fast)h(\(e\013ectiv)m(ely)i(just)d(a)g(p)s(oin)m(ter)g
@@ -3706,39 +3980,39 @@ b(strings)f(m)m(ust)f(in)g(the)h(w)m(orst)h(case)g(w)m(alk)f(b)s(oth)f
 b(are)h(used,)g(for)g(example,)0 1014 y(as)31 b(tags)g(for)f(prop)s
 (erties,)g(as)h(names)e(of)i(v)-5 b(ariables)31 b(in)f(p)s(olynomial)f
 (rings,)i(etc.)0 1288 y(Sym)m(b)s(ols)e(are)h(constructed)h(through)f
-(the)g(follo)m(wing)i(constructor:)0 1587 y Fn(cl_symbol)c(\(const)h
-(cl_string&)e(s\))480 1711 y Fp(Lo)s(oks)j(up)g(or)g(creates)i(a)f(new)
+(the)g(follo)m(wing)i(constructor:)0 1587 y Fp(cl_symbol)c(\(const)h
+(cl_string&)e(s\))480 1711 y Fr(Lo)s(oks)j(up)g(or)g(creates)i(a)f(new)
 e(sym)m(b)s(ol)h(with)g(a)g(giv)m(en)i(name.)0 2010 y(The)e(follo)m
 (wing)i(op)s(erations)e(are)h(a)m(v)-5 b(ailable)33 b(on)d(sym)m(b)s
-(ols:)0 2309 y Fn(cl_string)e(\(const)h(cl_symbol&)e(sym\))480
-2434 y Fp(Con)m(v)m(ersion)k(to)g Fn(cl_string)p Fp(:)38
+(ols:)0 2309 y Fp(cl_string)e(\(const)h(cl_symbol&)e(sym\))480
+2434 y Fr(Con)m(v)m(ersion)k(to)g Fp(cl_string)p Fr(:)38
 b(Returns)30 b(the)g(string)h(whic)m(h)f(names)f(the)i(sym)m(b)s(ol)e
-Fn(sym)p Fp(.)0 2608 y Fn(bool)g(equal)g(\(const)g(cl_symbol&)e(sym1,)i
-(const)g(cl_symbol&)f(sym2\))480 2733 y Fp(Compares)h(t)m(w)m(o)j(sym)m
+Fp(sym)p Fr(.)0 2608 y Fp(bool)g(equal)g(\(const)g(cl_symbol&)e(sym1,)i
+(const)g(cl_symbol&)f(sym2\))480 2733 y Fr(Compares)h(t)m(w)m(o)j(sym)m
 (b)s(ols)d(for)h(equalit)m(y)-8 b(.)43 b(This)29 b(is)i(v)m(ery)f
 (fast.)p eop
 %%Page: 50 52
-50 51 bop 0 -116 a Fp(Chapter)30 b(9:)41 b(Univ)-5 b(ariate)32
-b(p)s(olynomials)2423 b(50)0 366 y Fm(9)80 b(Univ)-9
-b(ariate)33 b(p)t(olynomials)0 907 y Fq(9.1)68 b(Univ)-7
-b(ariate)32 b(p)t(olynomial)g(rings)0 1181 y Fp(CLN)d(implemen)m(ts)e
+50 51 bop 0 -116 a Fr(Chapter)30 b(9:)41 b(Univ)-5 b(ariate)32
+b(p)s(olynomials)2423 b(50)0 366 y Fo(9)80 b(Univ)-9
+b(ariate)33 b(p)t(olynomials)0 907 y Fs(9.1)68 b(Univ)-7
+b(ariate)32 b(p)t(olynomial)g(rings)0 1181 y Fr(CLN)d(implemen)m(ts)e
 (univ)-5 b(ariate)30 b(p)s(olynomials)f(\(p)s(olynomials)f(in)h(one)h
 (v)-5 b(ariable\))30 b(o)m(v)m(er)g(an)f(arbitrary)g(ring.)40
 b(The)0 1305 y(indeterminate)h(v)-5 b(ariable)43 b(ma)m(y)e(b)s(e)g
 (either)i(unnamed)c(\(and)i(will)h(b)s(e)g(prin)m(ted)f(according)i(to)
-f Fn(cl_default_)0 1430 y(print_flags.univpoly_var)o(name)o
-Fp(,)23 b(whic)m(h)28 b(defaults)g(to)g(`)p Fn(x)p Fp('\))h(or)f(carry)
+f Fp(cl_default_)0 1430 y(print_flags.univpoly_var)o(name)o
+Fr(,)23 b(whic)m(h)28 b(defaults)g(to)g(`)p Fp(x)p Fr('\))h(or)f(carry)
 g(a)g(giv)m(en)h(name.)39 b(The)28 b(base)g(ring)g(and)0
 1554 y(the)h(indeterminate)f(are)g(explicitly)i(part)f(of)f(ev)m(ery)h
 (p)s(olynomial.)40 b(CLN)28 b(do)s(esn't)g(allo)m(w)i(y)m(ou)e(to)i
 (\(acciden)m(tally\))0 1679 y(mix)h(elemen)m(ts)h(of)f(di\013eren)m(t)h
-(p)s(olynomial)f(rings,)h(e.g.)46 b Fn(\(a^2+1\))28 b(*)i(\(b^3-1\))g
-Fp(will)i(result)f(in)h(a)g(run)m(time)e(error.)0 1803
+(p)s(olynomial)f(rings,)h(e.g.)46 b Fp(\(a^2+1\))28 b(*)i(\(b^3-1\))g
+Fr(will)i(result)f(in)h(a)g(run)m(time)e(error.)0 1803
 y(\(Ideally)h(this)g(should)e(return)g(a)i(m)m(ultiv)-5
 b(ariate)31 b(p)s(olynomial,)f(but)g(they)h(are)f(not)h(y)m(et)g
 (implemen)m(ted)e(in)h(CLN.\))0 2077 y(The)g(classes)h(of)g(univ)-5
 b(ariate)31 b(p)s(olynomial)f(rings)f(are)1529 2330 y
-Fn(Ring)1433 2434 y(cl_ring)1385 2538 y(<cl_ring.h>)1576
+Fp(Ring)1433 2434 y(cl_ring)1385 2538 y(<cl_ring.h>)1576
 2642 y(|)1576 2746 y(|)1051 2849 y(Univariate)45 b(polynomial)g(ring)
 1290 2953 y(cl_univpoly_ring)1290 3057 y(<cl_univpoly.h>)1576
 3161 y(|)765 3264 y(+----------------+------)o(----)o(----)o(---)o(--+)
@@ -3757,11 +4031,11 @@ y(Rational)45 b(polynomial)g(ring)142 b(|)288 4821 y
 y(+----------------+)765 5236 y(|)288 5340 y(Integer)46
 b(polynomial)f(ring)p eop
 %%Page: 51 53
-51 52 bop 0 -116 a Fp(Chapter)30 b(9:)41 b(Univ)-5 b(ariate)32
-b(p)s(olynomials)2423 b(51)288 366 y Fn(cl_univpoly_integer_rin)o(g)335
-470 y(<cl_univpoly_integer.h>)0 784 y Fp(and)30 b(the)g(corresp)s
+51 52 bop 0 -116 a Fr(Chapter)30 b(9:)41 b(Univ)-5 b(ariate)32
+b(p)s(olynomials)2423 b(51)288 366 y Fp(cl_univpoly_integer_rin)o(g)335
+470 y(<cl_univpoly_integer.h>)0 784 y Fr(and)30 b(the)g(corresp)s
 (onding)g(classes)h(of)g(univ)-5 b(ariate)31 b(p)s(olynomials)e(are)
-1147 1077 y Fn(Univariate)45 b(polynomial)1481 1181 y(cl_UP)1290
+1147 1077 y Fp(Univariate)45 b(polynomial)1481 1181 y(cl_UP)1290
 1285 y(<cl_univpoly.h>)1576 1389 y(|)765 1492 y
 (+----------------+------)o(----)o(----)o(---)o(--+)765
 1596 y(|)763 b(|)907 b(|)383 1700 y(Complex)46 b(polynomial)331
@@ -3776,27 +4050,27 @@ b(polynomial)283 b(|)622 3049 y(cl_UP_RA)570 b(|)335
 3153 y(<cl_univpoly_rational.h>)89 b(|)1576 3257 y(|)765
 3360 y(+----------------+)765 3464 y(|)383 3568 y(Integer)46
 b(polynomial)622 3672 y(cl_UP_I)335 3776 y(<cl_univpoly_integer.h>)0
-4089 y Fp(Univ)-5 b(ariate)32 b(p)s(olynomial)d(rings)h(are)h
-(constructed)g(using)f(the)g(functions)0 4468 y Fn(cl_univpoly_ring)c
+4089 y Fr(Univ)-5 b(ariate)32 b(p)s(olynomial)d(rings)h(are)h
+(constructed)g(using)f(the)g(functions)0 4468 y Fp(cl_univpoly_ring)c
 (cl_find_univpoly_ring)e(\(const)29 b(cl_ring&)f(R\))0
 4593 y(cl_univpoly_ring)e(cl_find_univpoly_ring)e(\(const)29
 b(cl_ring&)f(R,)i(const)f(cl_symbol&)f(varname\))480
-4717 y Fp(This)36 b(function)h(returns)f(the)i(p)s(olynomial)e(ring)h
-(`)p Fn(R[X])p Fp(',)h(unnamed)d(or)i(named.)60 b Fn(R)37
-b Fp(ma)m(y)g(b)s(e)f(an)480 4842 y(arbitrary)g(ring.)56
+4717 y Fr(This)36 b(function)h(returns)f(the)i(p)s(olynomial)e(ring)h
+(`)p Fp(R[X])p Fr(',)h(unnamed)d(or)i(named.)60 b Fp(R)37
+b Fr(ma)m(y)g(b)s(e)f(an)480 4842 y(arbitrary)g(ring.)56
 b(This)35 b(function)h(tak)m(es)h(care)f(of)g(\014nding)f(out)h(ab)s
-(out)f(sp)s(ecial)i(cases)f(of)g Fn(R)p Fp(,)h(suc)m(h)480
+(out)f(sp)s(ecial)i(cases)f(of)g Fp(R)p Fr(,)h(suc)m(h)480
 4966 y(as)28 b(the)g(rings)g(of)g(complex)g(n)m(um)m(b)s(ers,)e(real)i
 (n)m(um)m(b)s(ers,)f(rational)i(n)m(um)m(b)s(ers,)d(in)m(tegers,)k(or)e
 (mo)s(dular)480 5091 y(in)m(teger)j(rings.)40 b(There)30
 b(is)g(a)g(cac)m(he)i(table)e(of)g(rings,)g(indexed)g(b)m(y)f
-Fn(R)h Fp(and)f Fn(varname)p Fp(.)39 b(This)29 b(ensures)480
+Fp(R)h Fr(and)f Fp(varname)p Fr(.)39 b(This)29 b(ensures)480
 5215 y(that)24 b(t)m(w)m(o)h(calls)g(of)e(this)h(function)f(with)g(the)
 h(same)f(argumen)m(ts)g(will)h(return)e(the)i(same)f(p)s(olynomial)480
 5340 y(ring.)p eop
 %%Page: 52 54
-52 53 bop 0 -116 a Fp(Chapter)30 b(9:)41 b(Univ)-5 b(ariate)32
-b(p)s(olynomials)2423 b(52)0 366 y Fn(cl_univpoly_complex_ring)24
+52 53 bop 0 -116 a Fr(Chapter)30 b(9:)41 b(Univ)-5 b(ariate)32
+b(p)s(olynomials)2423 b(52)0 366 y Fp(cl_univpoly_complex_ring)24
 b(cl_find_univpoly_ring)g(\(const)29 b(cl_complex_ring&)d(R\))0
 491 y(cl_univpoly_complex_ring)e(cl_find_univpoly_ring)g(\(const)29
 b(cl_complex_ring&)d(R,)k(const)0 616 y(cl_symbol&)e(varname\))0
@@ -3814,48 +4088,48 @@ b(cl_integer_ring&)d(R\))0 1612 y(cl_univpoly_integer_ring)e
 (cl_find_univpoly_ring)h(\(const)j(cl_modint_ring&)e(R\))0
 1985 y(cl_univpoly_modint_ring)e(cl_find_univpoly_ring)h(\(const)j
 (cl_modint_ring&)e(R,)k(const)0 2110 y(cl_symbol&)e(varname\))480
-2234 y Fp(These)c(functions)f(are)i(equiv)-5 b(alen)m(t)26
-b(to)e(the)h(general)g Fn(cl_find_univpoly_ring)p Fp(,)20
+2234 y Fr(These)c(functions)f(are)i(equiv)-5 b(alen)m(t)26
+b(to)e(the)h(general)g Fp(cl_find_univpoly_ring)p Fr(,)20
 b(only)k(the)g(return)480 2359 y(t)m(yp)s(e)31 b(is)f(more)f(sp)s
 (eci\014c,)i(according)g(to)g(the)g(base)f(ring's)h(t)m(yp)s(e.)0
-2845 y Fq(9.2)68 b(F)-11 b(unctions)30 b(on)g(univ)-7
-b(ariate)31 b(p)t(olynomials)0 3123 y Fp(Giv)m(en)g(a)g(univ)-5
-b(ariate)31 b(p)s(olynomial)f(ring)g Fn(R)p Fp(,)g(the)h(follo)m(wing)h
-(mem)m(b)s(ers)27 b(can)k(b)s(e)f(used.)0 3430 y Fn(cl_ring)e
-(R->basering\(\))480 3555 y Fp(This)i(returns)f(the)h(base)h(ring,)f
-(as)h(passed)f(to)h(`)p Fn(cl_find_univpoly_ring)p Fp('.)0
-3737 y Fn(cl_UP)e(R->zero\(\))480 3862 y Fp(This)h(returns)f
-Fn(0)h(in)g(R)p Fp(,)g(a)h(p)s(olynomial)e(of)i(degree)g(-1.)0
-4045 y Fn(cl_UP)e(R->one\(\))480 4169 y Fp(This)h(returns)f
-Fn(1)h(in)g(R)p Fp(,)g(a)h(p)s(olynomial)e(of)i(degree)g
-Fn(<)p Fp(=)f(0.)0 4352 y Fn(cl_UP)f(R->canonhom)e(\(const)i(cl_I&)g
-(x\))480 4476 y Fp(This)h(returns)f Fn(x)h(in)g(R)p Fp(,)g(a)h(p)s
-(olynomial)e(of)i(degree)g Fn(<)p Fp(=)f(0.)0 4659 y
-Fn(cl_UP)f(R->monomial)e(\(const)i(cl_ring_element&)d(x,)k(uintL)f(e\))
-480 4784 y Fp(This)h(returns)f(a)h(sparse)g(p)s(olynomial:)41
-b Fn(x)30 b(*)g(X^e)p Fp(,)f(where)h Fn(X)g Fp(is)h(the)f
-(indeterminate.)0 4966 y Fn(cl_UP)f(R->create)f(\(sintL)g(degree\))480
-5091 y Fp(Creates)38 b(a)g(new)f(p)s(olynomial)f(with)i(a)f(giv)m(en)i
+2845 y Fs(9.2)68 b(F)-11 b(unctions)30 b(on)g(univ)-7
+b(ariate)31 b(p)t(olynomials)0 3123 y Fr(Giv)m(en)g(a)g(univ)-5
+b(ariate)31 b(p)s(olynomial)f(ring)g Fp(R)p Fr(,)g(the)h(follo)m(wing)h
+(mem)m(b)s(ers)27 b(can)k(b)s(e)f(used.)0 3430 y Fp(cl_ring)e
+(R->basering\(\))480 3555 y Fr(This)i(returns)f(the)h(base)h(ring,)f
+(as)h(passed)f(to)h(`)p Fp(cl_find_univpoly_ring)p Fr('.)0
+3737 y Fp(cl_UP)e(R->zero\(\))480 3862 y Fr(This)h(returns)f
+Fp(0)h(in)g(R)p Fr(,)g(a)h(p)s(olynomial)e(of)i(degree)g(-1.)0
+4045 y Fp(cl_UP)e(R->one\(\))480 4169 y Fr(This)h(returns)f
+Fp(1)h(in)g(R)p Fr(,)g(a)h(p)s(olynomial)e(of)i(degree)g
+Fp(<)p Fr(=)f(0.)0 4352 y Fp(cl_UP)f(R->canonhom)e(\(const)i(cl_I&)g
+(x\))480 4476 y Fr(This)h(returns)f Fp(x)h(in)g(R)p Fr(,)g(a)h(p)s
+(olynomial)e(of)i(degree)g Fp(<)p Fr(=)f(0.)0 4659 y
+Fp(cl_UP)f(R->monomial)e(\(const)i(cl_ring_element&)d(x,)k(uintL)f(e\))
+480 4784 y Fr(This)h(returns)f(a)h(sparse)g(p)s(olynomial:)41
+b Fp(x)30 b(*)g(X^e)p Fr(,)f(where)h Fp(X)g Fr(is)h(the)f
+(indeterminate.)0 4966 y Fp(cl_UP)f(R->create)f(\(sintL)g(degree\))480
+5091 y Fr(Creates)38 b(a)g(new)f(p)s(olynomial)f(with)i(a)f(giv)m(en)i
 (degree.)62 b(The)37 b(zero)h(p)s(olynomial)f(has)g(degree)h
-Fn(-1)p Fp(.)480 5215 y(After)29 b(creating)i(the)e(p)s(olynomial,)f(y)
+Fp(-1)p Fr(.)480 5215 y(After)29 b(creating)i(the)e(p)s(olynomial,)f(y)
 m(ou)i(should)e(put)g(in)h(the)g(co)s(e\016cien)m(ts,)i(using)d(the)h
-Fn(set_coeff)480 5340 y Fp(mem)m(b)s(er)f(function,)i(and)g(then)g
-(call)i(the)e Fn(finalize)e Fp(mem)m(b)s(er)g(function.)p
+Fp(set_coeff)480 5340 y Fr(mem)m(b)s(er)f(function,)i(and)g(then)g
+(call)i(the)e Fp(finalize)e Fr(mem)m(b)s(er)g(function.)p
 eop
 %%Page: 53 55
-53 54 bop 0 -116 a Fp(Chapter)30 b(9:)41 b(Univ)-5 b(ariate)32
+53 54 bop 0 -116 a Fr(Chapter)30 b(9:)41 b(Univ)-5 b(ariate)32
 b(p)s(olynomials)2423 b(53)0 366 y(The)30 b(follo)m(wing)i(are)e(the)h
 (only)g(destructiv)m(e)g(op)s(erations)g(on)f(univ)-5
-b(ariate)31 b(p)s(olynomials.)0 677 y Fn(void)e(set_coeff)f(\(cl_UP&)g
+b(ariate)31 b(p)s(olynomials.)0 677 y Fp(void)e(set_coeff)f(\(cl_UP&)g
 (x,)i(uintL)f(index,)g(const)g(cl_ring_element&)d(y\))480
-802 y Fp(This)i(c)m(hanges)j(the)e(co)s(e\016cien)m(t)i(of)f
-Fn(X^index)d Fp(in)i Fn(x)g Fp(to)h(b)s(e)f Fn(y)p Fp(.)40
+802 y Fr(This)i(c)m(hanges)j(the)e(co)s(e\016cien)m(t)i(of)f
+Fp(X^index)d Fr(in)i Fp(x)g Fr(to)h(b)s(e)f Fp(y)p Fr(.)40
 b(After)29 b(c)m(hanging)h(a)g(p)s(olynomial)f(and)480
-926 y(b)s(efore)35 b(applying)h(an)m(y)g Fn(")p Fp(normal)p
-Fn(")f Fp(op)s(eration)h(on)g(it,)i(y)m(ou)e(should)f(call)i(its)f
-Fn(finalize)e Fp(mem)m(b)s(er)480 1051 y(function.)0
-1237 y Fn(void)29 b(finalize)f(\(cl_UP&)h(x\))480 1361
-y Fp(This)f(function)g(marks)f(the)h(endp)s(oin)m(t)g(of)h(destructiv)m
+926 y(b)s(efore)35 b(applying)h(an)m(y)g Fp(")p Fr(normal)p
+Fp(")f Fr(op)s(eration)h(on)g(it,)i(y)m(ou)e(should)f(call)i(its)f
+Fp(finalize)e Fr(mem)m(b)s(er)480 1051 y(function.)0
+1237 y Fp(void)29 b(finalize)f(\(cl_UP&)h(x\))480 1361
+y Fr(This)f(function)g(marks)f(the)h(endp)s(oin)m(t)g(of)h(destructiv)m
 (e)g(mo)s(di\014cations)f(of)g(a)h(p)s(olynomial.)40
 b(It)28 b(nor-)480 1486 y(malizes)23 b(the)f(in)m(ternal)h(represen)m
 (tation)h(so)e(that)h(subsequen)m(t)f(computations)g(ha)m(v)m(e)i(less)
@@ -3863,105 +4137,105 @@ e(o)m(v)m(erhead.)480 1611 y(Doing)32 b(normal)e(computations)h(on)g
 (unnormalized)f(p)s(olynomials)g(ma)m(y)h(pro)s(duce)e(wrong)i(results)
 480 1735 y(or)f(crash)g(the)h(program.)0 2046 y(The)f(follo)m(wing)i
 (op)s(erations)e(are)h(de\014ned)e(on)i(univ)-5 b(ariate)31
-b(p)s(olynomials.)0 2356 y Fn(cl_univpoly_ring)26 b(x.ring)j(\(\))480
-2481 y Fp(Returns)g(the)i(ring)f(to)h(whic)m(h)f(the)h(univ)-5
-b(ariate)31 b(p)s(olynomial)f Fn(x)g Fp(b)s(elongs.)0
-2667 y Fn(cl_UP)f(operator+)f(\(const)g(cl_UP&,)h(const)g(cl_UP&\))480
-2792 y Fp(Returns)g(the)i(sum)d(of)j(t)m(w)m(o)h(univ)-5
-b(ariate)31 b(p)s(olynomials.)0 2978 y Fn(cl_UP)e(operator-)f(\(const)g
-(cl_UP&,)h(const)g(cl_UP&\))480 3102 y Fp(Returns)g(the)i(di\013erence)
+b(p)s(olynomials.)0 2356 y Fp(cl_univpoly_ring)26 b(x.ring)j(\(\))480
+2481 y Fr(Returns)g(the)i(ring)f(to)h(whic)m(h)f(the)h(univ)-5
+b(ariate)31 b(p)s(olynomial)f Fp(x)g Fr(b)s(elongs.)0
+2667 y Fp(cl_UP)f(operator+)f(\(const)g(cl_UP&,)h(const)g(cl_UP&\))480
+2792 y Fr(Returns)g(the)i(sum)d(of)j(t)m(w)m(o)h(univ)-5
+b(ariate)31 b(p)s(olynomials.)0 2978 y Fp(cl_UP)e(operator-)f(\(const)g
+(cl_UP&,)h(const)g(cl_UP&\))480 3102 y Fr(Returns)g(the)i(di\013erence)
 g(of)f(t)m(w)m(o)i(univ)-5 b(ariate)31 b(p)s(olynomials.)0
-3288 y Fn(cl_UP)e(operator-)f(\(const)g(cl_UP&\))480
-3413 y Fp(Returns)h(the)i(negativ)m(e)i(of)d(a)h(univ)-5
-b(ariate)31 b(p)s(olynomial.)0 3599 y Fn(cl_UP)e(operator*)f(\(const)g
-(cl_UP&,)h(const)g(cl_UP&\))480 3724 y Fp(Returns)e(the)h(pro)s(duct)e
+3288 y Fp(cl_UP)e(operator-)f(\(const)g(cl_UP&\))480
+3413 y Fr(Returns)h(the)i(negativ)m(e)i(of)d(a)h(univ)-5
+b(ariate)31 b(p)s(olynomial.)0 3599 y Fp(cl_UP)e(operator*)f(\(const)g
+(cl_UP&,)h(const)g(cl_UP&\))480 3724 y Fr(Returns)e(the)h(pro)s(duct)e
 (of)i(t)m(w)m(o)h(univ)-5 b(ariate)28 b(p)s(olynomials.)39
 b(One)27 b(of)h(the)g(argumen)m(ts)f(ma)m(y)g(also)i(b)s(e)480
 3848 y(a)i(plain)f(in)m(teger)i(or)e(an)g(elemen)m(t)h(of)g(the)f(base)
-h(ring.)0 4034 y Fn(cl_UP)e(square)g(\(const)f(cl_UP&\))480
-4159 y Fp(Returns)h(the)i(square)f(of)h(a)f(univ)-5 b(ariate)31
-b(p)s(olynomial.)0 4345 y Fn(cl_UP)e(expt_pos)f(\(const)h(cl_UP&)f(x,)i
-(const)f(cl_I&)g(y\))480 4470 y(y)h Fp(m)m(ust)f(b)s(e)h
-Fn(>)g Fp(0.)41 b(Returns)30 b Fn(x^y)p Fp(.)0 4656 y
-Fn(bool)f(operator==)f(\(const)g(cl_UP&,)h(const)g(cl_UP&\))0
+h(ring.)0 4034 y Fp(cl_UP)e(square)g(\(const)f(cl_UP&\))480
+4159 y Fr(Returns)h(the)i(square)f(of)h(a)f(univ)-5 b(ariate)31
+b(p)s(olynomial.)0 4345 y Fp(cl_UP)e(expt_pos)f(\(const)h(cl_UP&)f(x,)i
+(const)f(cl_I&)g(y\))480 4470 y(y)h Fr(m)m(ust)f(b)s(e)h
+Fp(>)g Fr(0.)41 b(Returns)30 b Fp(x^y)p Fr(.)0 4656 y
+Fp(bool)f(operator==)f(\(const)g(cl_UP&,)h(const)g(cl_UP&\))0
 4780 y(bool)g(operator!=)f(\(const)g(cl_UP&,)h(const)g(cl_UP&\))480
-4905 y Fp(Compares)39 b(t)m(w)m(o)j(univ)-5 b(ariate)41
+4905 y Fr(Compares)39 b(t)m(w)m(o)j(univ)-5 b(ariate)41
 b(p)s(olynomials,)h(b)s(elonging)e(to)h(the)g(same)f(univ)-5
 b(ariate)41 b(p)s(olynomial)480 5029 y(ring,)30 b(for)h(equalit)m(y)-8
-b(.)0 5215 y Fn(cl_boolean)28 b(zerop)h(\(const)f(cl_UP&)h(x\))480
-5340 y Fp(Returns)g(true)i(if)f Fn(x)g Fp(is)g Fn(0)g(in)g(R)p
-Fp(.)p eop
+b(.)0 5215 y Fp(cl_boolean)28 b(zerop)h(\(const)f(cl_UP&)h(x\))480
+5340 y Fr(Returns)g(true)i(if)f Fp(x)g Fr(is)g Fp(0)g(in)g(R)p
+Fr(.)p eop
 %%Page: 54 56
-54 55 bop 0 -116 a Fp(Chapter)30 b(9:)41 b(Univ)-5 b(ariate)32
-b(p)s(olynomials)2423 b(54)0 366 y Fn(sintL)29 b(degree)g(\(const)f
-(cl_UP&)h(x\))480 491 y Fp(Returns)g(the)i(degree)g(of)g(the)f(p)s
+54 55 bop 0 -116 a Fr(Chapter)30 b(9:)41 b(Univ)-5 b(ariate)32
+b(p)s(olynomials)2423 b(54)0 366 y Fp(sintL)29 b(degree)g(\(const)f
+(cl_UP&)h(x\))480 491 y Fr(Returns)g(the)i(degree)g(of)g(the)f(p)s
 (olynomial.)40 b(The)30 b(zero)h(p)s(olynomial)f(has)g(degree)h
-Fn(-1)p Fp(.)0 665 y Fn(cl_ring_element)26 b(coeff)j(\(const)g(cl_UP&)f
-(x,)i(uintL)f(index\))480 790 y Fp(Returns)g(the)i(co)s(e\016cien)m(t)h
-(of)f Fn(X^index)d Fp(in)i(the)h(p)s(olynomial)f Fn(x)p
-Fp(.)0 964 y Fn(cl_ring_element)c(x)k(\(const)f(cl_ring_element&)d(y\))
-480 1089 y Fp(Ev)-5 b(aluation:)40 b(If)25 b Fn(x)h Fp(is)h(a)f(p)s
-(olynomial)g(and)g Fn(y)g Fp(b)s(elongs)g(to)h(the)f(base)h(ring,)g
-(then)f(`)p Fn(x\(y\))p Fp(')g(returns)f(the)480 1213
-y(v)-5 b(alue)31 b(of)f(the)h(substitution)f(of)h Fn(y)f
-Fp(in)m(to)h Fn(x)p Fp(.)0 1388 y Fn(cl_UP)e(deriv)g(\(const)g(cl_UP&)f
-(x\))480 1512 y Fp(Returns)h(the)i(deriv)-5 b(ativ)m(e)32
-b(of)e(the)h(p)s(olynomial)f Fn(x)g Fp(with)g(resp)s(ect)g(to)h(the)g
-(indeterminate)f Fn(X)p Fp(.)0 1811 y(The)g(follo)m(wing)i(output)e
+Fp(-1)p Fr(.)0 665 y Fp(cl_ring_element)26 b(coeff)j(\(const)g(cl_UP&)f
+(x,)i(uintL)f(index\))480 790 y Fr(Returns)g(the)i(co)s(e\016cien)m(t)h
+(of)f Fp(X^index)d Fr(in)i(the)h(p)s(olynomial)f Fp(x)p
+Fr(.)0 964 y Fp(cl_ring_element)c(x)k(\(const)f(cl_ring_element&)d(y\))
+480 1089 y Fr(Ev)-5 b(aluation:)40 b(If)25 b Fp(x)h Fr(is)h(a)f(p)s
+(olynomial)g(and)g Fp(y)g Fr(b)s(elongs)g(to)h(the)f(base)h(ring,)g
+(then)f(`)p Fp(x\(y\))p Fr(')g(returns)f(the)480 1213
+y(v)-5 b(alue)31 b(of)f(the)h(substitution)f(of)h Fp(y)f
+Fr(in)m(to)h Fp(x)p Fr(.)0 1388 y Fp(cl_UP)e(deriv)g(\(const)g(cl_UP&)f
+(x\))480 1512 y Fr(Returns)h(the)i(deriv)-5 b(ativ)m(e)32
+b(of)e(the)h(p)s(olynomial)f Fp(x)g Fr(with)g(resp)s(ect)g(to)h(the)g
+(indeterminate)f Fp(X)p Fr(.)0 1811 y(The)g(follo)m(wing)i(output)e
 (functions)g(are)g(de\014ned)g(\(see)h(also)g(the)g(c)m(hapter)g(on)f
-(input/output\).)0 2110 y Fn(void)f(fprint)g(\(cl_ostream)e(stream,)i
+(input/output\).)0 2110 y Fp(void)f(fprint)g(\(cl_ostream)e(stream,)i
 (const)f(cl_UP&)h(x\))0 2234 y(cl_ostream)f(operator<<)f(\(cl_ostream)g
-(stream,)i(const)g(cl_UP&)f(x\))480 2359 y Fp(Prin)m(ts)39
-b(the)g(univ)-5 b(ariate)40 b(p)s(olynomial)f Fn(x)f
-Fp(on)h(the)h Fn(stream)p Fp(.)65 b(The)39 b(output)g(ma)m(y)f(dep)s
+(stream,)i(const)g(cl_UP&)f(x\))480 2359 y Fr(Prin)m(ts)39
+b(the)g(univ)-5 b(ariate)40 b(p)s(olynomial)f Fp(x)f
+Fr(on)h(the)h Fp(stream)p Fr(.)65 b(The)39 b(output)g(ma)m(y)f(dep)s
 (end)g(on)h(the)480 2484 y(global)32 b(prin)m(ter)e(settings)h(in)f
-(the)h(v)-5 b(ariable)31 b Fn(cl_default_print_flags)p
-Fp(.)0 2932 y Fq(9.3)68 b(Sp)t(ecial)31 b(p)t(olynomials)0
-3206 y Fp(The)f(follo)m(wing)i(functions)e(return)f(sp)s(ecial)i(p)s
-(olynomials.)0 3505 y Fn(cl_UP_I)d(cl_tschebychev)f(\(sintL)i(n\))480
-3629 y Fp(Returns)g(the)i(n-th)f(Tc)m(heb)m(yc)m(hev)h(p)s(olynomial)f
-(\(n)g Fn(>)p Fp(=)g(0\).)0 3804 y Fn(cl_UP_I)e(cl_hermite)g(\(sintL)h
-(n\))480 3928 y Fp(Returns)g(the)i(n-th)f(Hermite)g(p)s(olynomial)g
-(\(n)g Fn(>)p Fp(=)g(0\).)0 4102 y Fn(cl_UP_RA)e(cl_legendre)f(\(sintL)
-i(n\))480 4227 y Fp(Returns)g(the)i(n-th)f(Legendre)g(p)s(olynomial)g
-(\(n)g Fn(>)p Fp(=)g(0\).)0 4401 y Fn(cl_UP_I)e(cl_laguerre)g(\(sintL)g
-(n\))480 4526 y Fp(Returns)h(the)i(n-th)f(Laguerre)h(p)s(olynomial)e
-(\(n)h Fn(>)p Fp(=)g(0\).)0 4825 y(Information)24 b(ho)m(w)h(to)h
+(the)h(v)-5 b(ariable)31 b Fp(cl_default_print_flags)p
+Fr(.)0 2932 y Fs(9.3)68 b(Sp)t(ecial)31 b(p)t(olynomials)0
+3206 y Fr(The)f(follo)m(wing)i(functions)e(return)f(sp)s(ecial)i(p)s
+(olynomials.)0 3505 y Fp(cl_UP_I)d(cl_tschebychev)f(\(sintL)i(n\))480
+3629 y Fr(Returns)g(the)i(n-th)f(Tc)m(heb)m(yc)m(hev)h(p)s(olynomial)f
+(\(n)g Fp(>)p Fr(=)g(0\).)0 3804 y Fp(cl_UP_I)e(cl_hermite)g(\(sintL)h
+(n\))480 3928 y Fr(Returns)g(the)i(n-th)f(Hermite)g(p)s(olynomial)g
+(\(n)g Fp(>)p Fr(=)g(0\).)0 4102 y Fp(cl_UP_RA)e(cl_legendre)f(\(sintL)
+i(n\))480 4227 y Fr(Returns)g(the)i(n-th)f(Legendre)g(p)s(olynomial)g
+(\(n)g Fp(>)p Fr(=)g(0\).)0 4401 y Fp(cl_UP_I)e(cl_laguerre)g(\(sintL)g
+(n\))480 4526 y Fr(Returns)h(the)i(n-th)f(Laguerre)h(p)s(olynomial)e
+(\(n)h Fp(>)p Fr(=)g(0\).)0 4825 y(Information)24 b(ho)m(w)h(to)h
 (deriv)m(e)f(the)g(di\013eren)m(tial)i(equation)f(satis\014ed)f(b)m(y)f
 (eac)m(h)j(of)e(these)g(p)s(olynomials)f(from)g(their)0
 4949 y(de\014nition)30 b(can)h(b)s(e)e(found)g(in)i(the)f
-Fn(doc/polynomial/)c Fp(directory)-8 b(.)p eop
+Fp(doc/polynomial/)c Fr(directory)-8 b(.)p eop
 %%Page: 55 57
-55 56 bop 0 -116 a Fp(Chapter)30 b(10:)41 b(In)m(ternals)2950
-b(55)0 366 y Fm(10)80 b(In)l(ternals)0 944 y Fq(10.1)68
-b(Wh)l(y)31 b(C)p Fd(++)e Fq(?)0 1220 y Fp(Using)i(C)p
-Fn(++)e Fp(as)i(an)f(implemen)m(tation)g(language)i(pro)m(vides)75
-1496 y Fo(\017)60 b Fp(E\016ciency:)41 b(It)31 b(compiles)f(to)h(mac)m
-(hine)f(co)s(de.)75 1648 y Fo(\017)60 b Fp(P)m(ortabilit)m(y:)43
+55 56 bop 0 -116 a Fr(Chapter)30 b(10:)41 b(In)m(ternals)2950
+b(55)0 366 y Fo(10)80 b(In)l(ternals)0 944 y Fs(10.1)68
+b(Wh)l(y)31 b(C)p Ff(++)e Fs(?)0 1220 y Fr(Using)i(C)p
+Fp(++)e Fr(as)i(an)f(implemen)m(tation)g(language)i(pro)m(vides)75
+1496 y Fq(\017)60 b Fr(E\016ciency:)41 b(It)31 b(compiles)f(to)h(mac)m
+(hine)f(co)s(de.)75 1648 y Fq(\017)60 b Fr(P)m(ortabilit)m(y:)43
 b(It)29 b(runs)f(on)i(all)g(platforms)f(supp)s(orting)f(a)i(C)p
-Fn(++)e Fp(compiler.)40 b(Because)31 b(of)f(the)g(a)m(v)-5
-b(ailabilit)m(y)33 b(of)180 1772 y(GNU)j(C)p Fn(++)p
-Fp(,)f(this)g(includes)g(all)h(curren)m(tly)f(used)f(32-bit)i(and)f
+Fp(++)e Fr(compiler.)40 b(Because)31 b(of)f(the)g(a)m(v)-5
+b(ailabilit)m(y)33 b(of)180 1772 y(GNU)j(C)p Fp(++)p
+Fr(,)f(this)g(includes)g(all)h(curren)m(tly)f(used)f(32-bit)i(and)f
 (64-bit)h(platforms,)f(indep)s(enden)m(tly)g(of)g(the)180
-1897 y(qualit)m(y)d(of)e(the)h(v)m(endor's)f(C)p Fn(++)f
-Fp(compiler.)75 2049 y Fo(\017)60 b Fp(T)m(yp)s(e)26
-b(safet)m(y:)40 b(The)25 b(C)p Fn(++)g Fp(compilers)h(kno)m(ws)g(ab)s
+1897 y(qualit)m(y)d(of)e(the)h(v)m(endor's)f(C)p Fp(++)f
+Fr(compiler.)75 2049 y Fq(\017)60 b Fr(T)m(yp)s(e)26
+b(safet)m(y:)40 b(The)25 b(C)p Fp(++)g Fr(compilers)h(kno)m(ws)g(ab)s
 (out)g(the)g(n)m(um)m(b)s(er)e(t)m(yp)s(es)j(and)e(complains)h(if,)h
 (for)f(example,)180 2173 y(y)m(ou)41 b(try)f(to)h(assign)g(a)f(\015oat)
 h(to)g(an)g(in)m(teger)g(v)-5 b(ariable.)72 b(Ho)m(w)m(ev)m(er,)45
-b(a)c(dra)m(wbac)m(k)f(is)h(that)g(C)p Fn(++)e Fp(do)s(esn't)180
-2298 y(kno)m(w)i(ab)s(out)f(generic)h(t)m(yp)s(es,)j(hence)c(a)h
-(restriction)h(lik)m(e)g(that)f Fn(operation+)27 b(\(const)i(cl_MI&,)f
-(const)180 2422 y(cl_MI&\))i Fp(requires)i(that)h(b)s(oth)f(argumen)m
-(ts)g(b)s(elong)g(to)h(the)g(same)e(mo)s(dular)g(ring)h(cannot)h(b)s(e)
-e(expressed)180 2547 y(as)g(a)f(compile-time)h(information.)75
-2698 y Fo(\017)60 b Fp(Algebraic)34 b(syn)m(tax:)46 b(The)32
-b(elemen)m(tary)h(op)s(erations)g Fn(+)p Fp(,)g Fn(-)p
-Fp(,)g Fn(*)p Fp(,)g Fn(=)p Fp(,)g Fn(==)p Fp(,)g(...)48
+b(a)c(dra)m(wbac)m(k)f(is)h(that)g(C)p Fp(++)e Fr(do)s(esn't)180
+2298 y(kno)m(w)27 b(ab)s(out)f(generic)i(t)m(yp)s(es,)g(hence)f(a)g
+(restriction)h(lik)m(e)g(that)f Fp(operator+)h(\(const)g(cl_MI&,)h
+(const)g(cl_)180 2422 y(MI&\))f Fr(requires)h(that)g(b)s(oth)g(argumen)
+m(ts)f(b)s(elong)h(to)h(the)g(same)e(mo)s(dular)f(ring)i(cannot)h(b)s
+(e)f(expressed)f(as)i(a)180 2547 y(compile-time)g(information.)75
+2698 y Fq(\017)60 b Fr(Algebraic)34 b(syn)m(tax:)46 b(The)32
+b(elemen)m(tary)h(op)s(erations)g Fp(+)p Fr(,)g Fp(-)p
+Fr(,)g Fp(*)p Fr(,)g Fp(=)p Fr(,)g Fp(==)p Fr(,)g(...)48
 b(can)33 b(b)s(e)f(used)f(in)i(in\014x)e(notation,)180
 2823 y(whic)m(h)f(is)h(more)e(con)m(v)m(enien)m(t)k(than)d(Lisp)f
-(notation)j(`)p Fn(\(+)e(x)g(y\))p Fp(')g(or)g(C)g(notation)i(`)p
-Fn(add\(x,y,&z\))p Fp('.)0 3126 y(With)c(these)g(language)h(features,)g
+(notation)j(`)p Fp(\(+)e(x)g(y\))p Fr(')g(or)g(C)g(notation)i(`)p
+Fp(add\(x,y,&z\))p Fr('.)0 3126 y(With)c(these)g(language)h(features,)g
 (there)f(is)f(no)h(need)f(for)g(t)m(w)m(o)i(separate)g(languages,)h
 (one)d(for)h(the)g(implemen)m(ta-)0 3251 y(tion)i(of)h(the)f(library)f
 (and)h(one)g(in)g(whic)m(h)g(the)g(library's)f(users)h(can)g(program.)
@@ -3971,219 +4245,220 @@ y(implemen)m(tation)36 b(of)g(an)f(algorithm)h(can)h(b)s(e)e(in)m
 (b)s(een)0 3500 y(tested)g(and)f(debugged.)55 b(No)36
 b(need)g(to)g(rewrite)f(it)h(in)f(a)h(lo)m(w-lev)m(el)i(language)f
 (after)f(ha)m(ving)g(protot)m(yp)s(ed)f(in)h(a)0 3624
-y(high-lev)m(el)c(language.)0 4093 y Fq(10.2)68 b(Memory)31
-b(e\016ciency)0 4369 y Fp(In)f(order)g(to)h(sa)m(v)m(e)h(memory)c(allo)
-s(cations,)33 b(CLN)d(implemen)m(ts:)75 4645 y Fo(\017)60
-b Fp(Ob)5 b(ject)31 b(sharing:)40 b(An)30 b(op)s(eration)h(lik)m(e)g
-Fn(x+0)f Fp(returns)f Fn(x)h Fp(without)g(cop)m(ying)i(it.)75
-4797 y Fo(\017)60 b Fp(Garbage)42 b(collection:)64 b(A)41
+y(high-lev)m(el)c(language.)0 4093 y Fs(10.2)68 b(Memory)31
+b(e\016ciency)0 4369 y Fr(In)f(order)g(to)h(sa)m(v)m(e)h(memory)c(allo)
+s(cations,)33 b(CLN)d(implemen)m(ts:)75 4645 y Fq(\017)60
+b Fr(Ob)5 b(ject)31 b(sharing:)40 b(An)30 b(op)s(eration)h(lik)m(e)g
+Fp(x+0)f Fr(returns)f Fp(x)h Fr(without)g(cop)m(ying)i(it.)75
+4797 y Fq(\017)60 b Fr(Garbage)42 b(collection:)64 b(A)41
 b(reference)g(coun)m(ting)h(mec)m(hanism)d(mak)m(es)i(sure)f(that)h(an)
 m(y)g(n)m(um)m(b)s(er)e(ob)5 b(ject's)180 4922 y(storage)32
 b(is)e(freed)g(immediately)g(when)f(the)i(last)g(reference)g(to)g(the)g
-(ob)5 b(ject)31 b(is)f(gone.)75 5073 y Fo(\017)60 b Fp(Small)20
+(ob)5 b(ject)31 b(is)f(gone.)75 5073 y Fq(\017)60 b Fr(Small)20
 b(in)m(tegers)j(are)e(represen)m(ted)g(as)g(immediate)f(v)-5
 b(alues)22 b(instead)f(of)g(p)s(oin)m(ters)g(to)h(heap)f(allo)s(cated)i
 (storage.)180 5198 y(This)44 b(means)g(that)i(in)m(tegers)g
-Fn(>)30 b(-2^29)p Fp(,)48 b Fn(<)30 b(2^29)44 b Fp(don't)h(consume)f
+Fp(>)30 b(-2^29)p Fr(,)48 b Fp(<)30 b(2^29)44 b Fr(don't)h(consume)f
 (heap)h(memory)-8 b(,)47 b(unless)d(they)h(w)m(ere)180
 5322 y(explicitly)32 b(allo)s(cated)g(on)f(the)f(heap.)p
 eop
 %%Page: 56 58
-56 57 bop 0 -116 a Fp(Chapter)30 b(10:)41 b(In)m(ternals)2950
-b(56)0 366 y Fq(10.3)68 b(Sp)t(eed)30 b(e\016ciency)0
-640 y Fp(Sp)s(eed)f(e\016ciency)j(is)e(obtained)h(b)m(y)f(the)h(com)m
+56 57 bop 0 -116 a Fr(Chapter)30 b(10:)41 b(In)m(ternals)2950
+b(56)0 366 y Fs(10.3)68 b(Sp)t(eed)30 b(e\016ciency)0
+640 y Fr(Sp)s(eed)f(e\016ciency)j(is)e(obtained)h(b)m(y)f(the)h(com)m
 (bination)f(of)h(the)f(follo)m(wing)i(tric)m(ks)f(and)f(algorithms:)75
-914 y Fo(\017)60 b Fp(Small)38 b(in)m(tegers,)43 b(b)s(eing)c(represen)
+914 y Fq(\017)60 b Fr(Small)38 b(in)m(tegers,)43 b(b)s(eing)c(represen)
 m(ted)g(as)g(immediate)f(v)-5 b(alues,)42 b(don't)d(require)g(memory)e
 (access,)43 b(just)c(a)180 1039 y(couple)31 b(of)f(instructions)h(for)f
-(eac)m(h)h(elemen)m(tary)g(op)s(eration.)75 1188 y Fo(\017)60
-b Fp(The)27 b(k)m(ernel)h(of)f(CLN)g(has)g(b)s(een)g(written)g(in)g
-(assem)m(bly)g(language)h(for)f(some)g(CPUs)g(\()p Fn(i386)p
-Fp(,)g Fn(m68k)p Fp(,)g Fn(sparc)p Fp(,)180 1313 y Fn(mips)p
-Fp(,)i Fn(arm)p Fp(\).)75 1462 y Fo(\017)60 b Fp(On)30
-b(all)h(CPUs,)f(CLN)g(uses)g(the)g(sup)s(ere\016cien)m(t)h(lo)m(w-lev)m
-(el)i(routines)d(from)f(GNU)i(GMP)g(v)m(ersion)g(2.)75
-1612 y Fo(\017)60 b Fp(F)-8 b(or)32 b(large)g(n)m(um)m(b)s(ers,)e(CLN)h
-(uses,)g(instead)g(of)h(the)f(standard)g Fn(O\(N^2\))e
-Fp(algorithm,)j(the)g(Karatsuba)f(m)m(ul-)180 1736 y(tiplication,)i
-(whic)m(h)d(is)g(an)91 b Fl(O)s Fp(\()p Fl(N)1368 1703
-y Ff(1)p Fg(:)p Ff(6)1458 1736 y Fp(\))31 b(algorithm.)75
-1886 y Fo(\017)60 b Fp(F)-8 b(or)31 b(v)m(ery)f(large)h(n)m(um)m(b)s
-(ers)c(\(more)i(than)h(12000)i(decimal)e(digits\),)h(CLN)e(uses)g(Sc)m
-(h\177)-45 b(onhage-Strassen)31 b(m)m(ul-)180 2010 y(tiplication,)i
-(whic)m(h)d(is)g(an)g(asymptotically)i(optimal)e(m)m(ultiplication)i
-(algorithm.)75 2160 y Fo(\017)60 b Fp(These)27 b(fast)h(m)m
-(ultiplication)h(algorithms)e(also)i(giv)m(e)g(impro)m(v)m(emen)m(ts)d
-(in)i(the)f(sp)s(eed)g(of)h(division)f(and)g(radix)180
-2284 y(con)m(v)m(ersion.)0 2733 y Fq(10.4)68 b(Garbage)31
-b(collection)0 3007 y Fp(All)39 b(the)f(n)m(um)m(b)s(er)e(classes)j
-(are)g(reference)g(coun)m(t)f(classes:)58 b(They)37 b(only)i(con)m
-(tain)g(a)g(p)s(oin)m(ter)f(to)h(an)f(ob)5 b(ject)39
-b(in)0 3131 y(the)h(heap.)71 b(Up)s(on)39 b(construction,)44
-b(assignmen)m(t)c(and)f(destruction)i(of)f(n)m(um)m(b)s(er)e(ob)5
-b(jects,)44 b(only)c(the)h(ob)5 b(jects')0 3256 y(reference)31
-b(coun)m(t)g(are)g(manipulated.)0 3530 y(Memory)g(o)s(ccupied)g(b)m(y)g
-(n)m(um)m(b)s(er)d(ob)5 b(jects)32 b(are)g(automatically)h(reclaimed)e
-(as)g(so)s(on)g(as)h(their)f(reference)g(coun)m(t)0 3654
-y(drops)e(to)i(zero.)0 3928 y(F)-8 b(or)31 b(n)m(um)m(b)s(er)d(rings,)i
-(another)g(strategy)h(is)f(implemen)m(ted:)39 b(There)30
-b(is)g(a)h(cac)m(he)g(of,)g(for)f(example,)g(the)g(mo)s(dular)0
-4053 y(in)m(teger)k(rings.)49 b(A)33 b(mo)s(dular)e(in)m(teger)j(ring)f
-(is)g(destro)m(y)m(ed)h(only)f(if)g(its)g(reference)h(coun)m(t)f(dropp)
-s(ed)e(to)j(zero)g(and)0 4177 y(the)40 b(cac)m(he)i(is)e(ab)s(out)g(to)
-g(b)s(e)g(resized.)70 b(The)39 b(e\013ect)j(of)e(this)g(strategy)h(is)f
-(that)h(recen)m(tly)g(used)e(rings)h(remain)0 4302 y(cac)m(hed,)32
-b(whereas)e(undue)f(memory)f(consumption)h(through)g(cac)m(hed)j(rings)
-e(is)g(a)m(v)m(oided.)p eop
+(eac)m(h)h(elemen)m(tary)g(op)s(eration.)75 1188 y Fq(\017)60
+b Fr(The)27 b(k)m(ernel)h(of)f(CLN)g(has)g(b)s(een)g(written)g(in)g
+(assem)m(bly)g(language)h(for)f(some)g(CPUs)g(\()p Fp(i386)p
+Fr(,)g Fp(m68k)p Fr(,)g Fp(sparc)p Fr(,)180 1313 y Fp(mips)p
+Fr(,)i Fp(arm)p Fr(\).)75 1462 y Fq(\017)60 b Fr(On)33
+b(all)i(CPUs,)g(CLN)f(ma)m(y)g(b)s(e)g(con\014gured)f(to)i(use)f(the)g
+(sup)s(ere\016cien)m(t)g(lo)m(w-lev)m(el)j(routines)e(from)d(GNU)180
+1587 y(GMP)f(v)m(ersion)g(3.)75 1736 y Fq(\017)60 b Fr(F)-8
+b(or)32 b(large)g(n)m(um)m(b)s(ers,)e(CLN)h(uses,)g(instead)g(of)h(the)
+f(standard)g Fp(O\(N^2\))e Fr(algorithm,)j(the)g(Karatsuba)f(m)m(ul-)
+180 1861 y(tiplication,)i(whic)m(h)d(is)g(an)91 b Fn(O)s
+Fr(\()p Fn(N)1368 1828 y Fh(1)p Fi(:)p Fh(6)1458 1861
+y Fr(\))31 b(algorithm.)75 2010 y Fq(\017)60 b Fr(F)-8
+b(or)45 b(v)m(ery)g(large)h(n)m(um)m(b)s(ers)c(\(more)i(than)g(12000)i
+(decimal)f(digits\),)k(CLN)44 b(uses)g(Sc)m(h\177)-45
+b(onhage-Strassen)180 2135 y(m)m(ultiplication,)32 b(whic)m(h)e(is)g
+(an)g(asymptotically)i(optimal)e(m)m(ultiplication)i(algorithm.)75
+2284 y Fq(\017)60 b Fr(These)27 b(fast)h(m)m(ultiplication)h
+(algorithms)e(also)i(giv)m(e)g(impro)m(v)m(emen)m(ts)d(in)i(the)f(sp)s
+(eed)g(of)h(division)f(and)g(radix)180 2409 y(con)m(v)m(ersion.)0
+2857 y Fs(10.4)68 b(Garbage)31 b(collection)0 3131 y
+Fr(All)39 b(the)f(n)m(um)m(b)s(er)e(classes)j(are)g(reference)g(coun)m
+(t)f(classes:)58 b(They)37 b(only)i(con)m(tain)g(a)g(p)s(oin)m(ter)f
+(to)h(an)f(ob)5 b(ject)39 b(in)0 3256 y(the)h(heap.)71
+b(Up)s(on)39 b(construction,)44 b(assignmen)m(t)c(and)f(destruction)i
+(of)f(n)m(um)m(b)s(er)e(ob)5 b(jects,)44 b(only)c(the)h(ob)5
+b(jects')0 3380 y(reference)31 b(coun)m(t)g(are)g(manipulated.)0
+3654 y(Memory)g(o)s(ccupied)g(b)m(y)g(n)m(um)m(b)s(er)d(ob)5
+b(jects)32 b(are)g(automatically)h(reclaimed)e(as)g(so)s(on)g(as)h
+(their)f(reference)g(coun)m(t)0 3779 y(drops)e(to)i(zero.)0
+4053 y(F)-8 b(or)31 b(n)m(um)m(b)s(er)d(rings,)i(another)g(strategy)h
+(is)f(implemen)m(ted:)39 b(There)30 b(is)g(a)h(cac)m(he)g(of,)g(for)f
+(example,)g(the)g(mo)s(dular)0 4177 y(in)m(teger)k(rings.)49
+b(A)33 b(mo)s(dular)e(in)m(teger)j(ring)f(is)g(destro)m(y)m(ed)h(only)f
+(if)g(its)g(reference)h(coun)m(t)f(dropp)s(ed)e(to)j(zero)g(and)0
+4302 y(the)40 b(cac)m(he)i(is)e(ab)s(out)g(to)g(b)s(e)g(resized.)70
+b(The)39 b(e\013ect)j(of)e(this)g(strategy)h(is)f(that)h(recen)m(tly)g
+(used)e(rings)h(remain)0 4426 y(cac)m(hed,)32 b(whereas)e(undue)f
+(memory)f(consumption)h(through)g(cac)m(hed)j(rings)e(is)g(a)m(v)m
+(oided.)p eop
 %%Page: 57 59
-57 58 bop 0 -116 a Fp(Chapter)30 b(11:)41 b(Using)31
-b(the)f(library)2621 b(57)0 366 y Fm(11)80 b(Using)30
-b(the)g(library)0 729 y Fp(F)-8 b(or)43 b(the)g(follo)m(wing)g
+57 58 bop 0 -116 a Fr(Chapter)30 b(11:)41 b(Using)31
+b(the)f(library)2621 b(57)0 366 y Fo(11)80 b(Using)30
+b(the)g(library)0 729 y Fr(F)-8 b(or)43 b(the)g(follo)m(wing)g
 (discussion,)i(w)m(e)e(will)g(assume)e(that)i(y)m(ou)g(ha)m(v)m(e)g
-(installed)g(the)g(CLN)f(source)g(in)g Fn($CLN_)0 854
-y(DIR)37 b Fp(and)g(built)h(it)g(in)g Fn($CLN_TARGETDIR)p
-Fp(.)60 b(F)-8 b(or)38 b(example,)i(for)e(me)f(it's)h
-Fn(CLN_DIR="$HOME/cln")33 b Fp(and)k Fn(CLN_)0 978 y
-(TARGETDIR="$HOME/cln/lin)o(uxel)o(f")p Fp(.)g(Y)-8 b(ou)32
+(installed)g(the)g(CLN)f(source)g(in)g Fp($CLN_)0 854
+y(DIR)37 b Fr(and)g(built)h(it)g(in)g Fp($CLN_TARGETDIR)p
+Fr(.)60 b(F)-8 b(or)38 b(example,)i(for)e(me)f(it's)h
+Fp(CLN_DIR="$HOME/cln")33 b Fr(and)k Fp(CLN_)0 978 y
+(TARGETDIR="$HOME/cln/lin)o(uxel)o(f")p Fr(.)g(Y)-8 b(ou)32
 b(migh)m(t)f(de\014ne)g(these)h(as)f(en)m(vironmen)m(t)g(v)-5
 b(ariables,)33 b(or)e(directly)0 1103 y(substitute)f(the)h(appropriate)
-f(v)-5 b(alues.)0 1540 y Fq(11.1)68 b(Compiler)32 b(options)0
-1814 y Fp(Un)m(til)f(y)m(ou)g(ha)m(v)m(e)h(installed)f(CLN)f(in)g(a)h
+f(v)-5 b(alues.)0 1540 y Fs(11.1)68 b(Compiler)32 b(options)0
+1814 y Fr(Un)m(til)f(y)m(ou)g(ha)m(v)m(e)h(installed)f(CLN)f(in)g(a)h
 (public)e(place,)j(the)e(follo)m(wing)i(options)f(are)g(needed:)0
 2088 y(When)f(y)m(ou)h(compile)f(CLN)g(application)i(co)s(de,)f(add)e
-(the)i(\015ags)383 2341 y Fn(-I$CLN_DIR/include)43 b
-(-I$CLN_TARGETDIR/include)0 2615 y Fp(to)25 b(the)f(C)p
-Fn(++)f Fp(compiler's)h(command)e(line)j(\()p Fn(make)e
-Fp(v)-5 b(ariable)25 b(CFLA)m(GS)f(or)g(CXXFLA)m(GS\).)i(When)e(y)m(ou)
+(the)i(\015ags)383 2341 y Fp(-I$CLN_DIR/include)43 b
+(-I$CLN_TARGETDIR/include)0 2615 y Fr(to)25 b(the)f(C)p
+Fp(++)f Fr(compiler's)h(command)e(line)j(\()p Fp(make)e
+Fr(v)-5 b(ariable)25 b(CFLA)m(GS)f(or)g(CXXFLA)m(GS\).)i(When)e(y)m(ou)
 g(link)g(CLN)0 2740 y(application)32 b(co)s(de)e(to)h(form)e(an)i
-(executable,)h(add)e(the)g(\015ags)383 2993 y Fn
-($CLN_TARGETDIR/src/libcln)o(.a)0 3267 y Fp(to)h(the)g(C/C)p
-Fn(++)e Fp(compiler's)h(command)e(line)j(\()p Fn(make)f
-Fp(v)-5 b(ariable)31 b(LIBS\).)0 3541 y(If)20 b(y)m(ou)g(did)g(a)h
-Fn(make)29 b(install)p Fp(,)20 b(the)h(include)f(\014les)g(are)h
+(executable,)h(add)e(the)g(\015ags)383 2993 y Fp
+($CLN_TARGETDIR/src/libcln)o(.a)0 3267 y Fr(to)h(the)g(C/C)p
+Fp(++)e Fr(compiler's)h(command)e(line)j(\()p Fp(make)f
+Fr(v)-5 b(ariable)31 b(LIBS\).)0 3541 y(If)20 b(y)m(ou)g(did)g(a)h
+Fp(make)29 b(install)p Fr(,)20 b(the)h(include)f(\014les)g(are)h
 (installed)g(in)f(a)g(public)g(directory)h(\(normally)f
-Fn(/usr/local/include)p Fp(\),)0 3665 y(hence)k(y)m(ou)f(don't)h(need)f
+Fp(/usr/local/include)p Fr(\),)0 3665 y(hence)k(y)m(ou)f(don't)h(need)f
 (sp)s(ecial)h(\015ags)g(for)f(compiling.)38 b(The)23
 b(library)g(has)h(b)s(een)e(installed)j(to)f(a)g(public)e(directory)0
-3790 y(as)33 b(w)m(ell)h(\(normally)f Fn(/usr/local/lib)p
-Fp(\),)e(hence)i(when)f(linking)h(a)h(CLN)f(application)h(it)g(is)f
+3790 y(as)33 b(w)m(ell)h(\(normally)f Fp(/usr/local/lib)p
+Fr(\),)e(hence)i(when)f(linking)h(a)h(CLN)f(application)h(it)g(is)f
 (su\016cien)m(t)h(to)f(giv)m(e)0 3915 y(the)e(\015ag)f
-Fn(-lcln)p Fp(.)0 4352 y Fq(11.2)68 b(Include)30 b(\014les)0
-4626 y Fp(Here)h(is)f(a)h(summary)c(of)k(the)f(include)h(\014les)f(and)
-g(their)g(con)m(ten)m(ts.)0 4922 y Fn(<cl_object.h>)480
-5047 y Fp(General)h(de\014nitions,)f(reference)h(coun)m(ting,)h
-(garbage)f(collection.)0 5215 y Fn(<cl_number.h>)480
-5340 y Fp(The)f(class)h(cl)p 950 5340 28 4 v 33 w(n)m(um)m(b)s(er.)p
+Fp(-lcln)p Fr(.)0 4352 y Fs(11.2)68 b(Include)30 b(\014les)0
+4626 y Fr(Here)h(is)f(a)h(summary)c(of)k(the)f(include)h(\014les)f(and)
+g(their)g(con)m(ten)m(ts.)0 4922 y Fp(<cl_object.h>)480
+5047 y Fr(General)h(de\014nitions,)f(reference)h(coun)m(ting,)h
+(garbage)f(collection.)0 5215 y Fp(<cl_number.h>)480
+5340 y Fr(The)f(class)h(cl)p 950 5340 28 4 v 33 w(n)m(um)m(b)s(er.)p
 eop
 %%Page: 58 60
-58 59 bop 0 -116 a Fp(Chapter)30 b(11:)41 b(Using)31
-b(the)f(library)2621 b(58)0 366 y Fn(<cl_complex.h>)480
-491 y Fp(F)-8 b(unctions)31 b(for)f(class)h(cl)p 1318
+58 59 bop 0 -116 a Fr(Chapter)30 b(11:)41 b(Using)31
+b(the)f(library)2621 b(58)0 366 y Fp(<cl_complex.h>)480
+491 y Fr(F)-8 b(unctions)31 b(for)f(class)h(cl)p 1318
 491 28 4 v 34 w(N,)f(the)h(complex)f(n)m(um)m(b)s(ers.)0
-670 y Fn(<cl_real.h>)480 794 y Fp(F)-8 b(unctions)31
+670 y Fp(<cl_real.h>)480 794 y Fr(F)-8 b(unctions)31
 b(for)f(class)h(cl)p 1318 794 V 34 w(R,)f(the)h(real)g(n)m(um)m(b)s
-(ers.)0 973 y Fn(<cl_float.h>)480 1097 y Fp(F)-8 b(unctions)31
+(ers.)0 973 y Fp(<cl_float.h>)480 1097 y Fr(F)-8 b(unctions)31
 b(for)f(class)h(cl)p 1318 1097 V 34 w(F,)f(the)h(\015oats.)0
-1276 y Fn(<cl_sfloat.h>)480 1400 y Fp(F)-8 b(unctions)31
+1276 y Fp(<cl_sfloat.h>)480 1400 y Fr(F)-8 b(unctions)31
 b(for)f(class)h(cl)p 1318 1400 V 34 w(SF,)f(the)h(short-\015oats.)0
-1579 y Fn(<cl_ffloat.h>)480 1703 y Fp(F)-8 b(unctions)31
+1579 y Fp(<cl_ffloat.h>)480 1703 y Fr(F)-8 b(unctions)31
 b(for)f(class)h(cl)p 1318 1703 V 34 w(FF,)g(the)f(single-\015oats.)0
-1882 y Fn(<cl_dfloat.h>)480 2006 y Fp(F)-8 b(unctions)31
+1882 y Fp(<cl_dfloat.h>)480 2006 y Fr(F)-8 b(unctions)31
 b(for)f(class)h(cl)p 1318 2006 V 34 w(DF,)g(the)f(double-\015oats.)0
-2185 y Fn(<cl_lfloat.h>)480 2309 y Fp(F)-8 b(unctions)31
+2185 y Fp(<cl_lfloat.h>)480 2309 y Fr(F)-8 b(unctions)31
 b(for)f(class)h(cl)p 1318 2309 V 34 w(LF,)f(the)h(long-\015oats.)0
-2488 y Fn(<cl_rational.h>)480 2612 y Fp(F)-8 b(unctions)31
+2488 y Fp(<cl_rational.h>)480 2612 y Fr(F)-8 b(unctions)31
 b(for)f(class)h(cl)p 1318 2612 V 34 w(RA,)f(the)h(rational)g(n)m(um)m
-(b)s(ers.)0 2791 y Fn(<cl_integer.h>)480 2916 y Fp(F)-8
+(b)s(ers.)0 2791 y Fp(<cl_integer.h>)480 2916 y Fr(F)-8
 b(unctions)31 b(for)f(class)h(cl)p 1318 2916 V 34 w(I,)f(the)h(in)m
-(tegers.)0 3094 y Fn(<cl_io.h>)480 3219 y Fp(Input/Output.)0
-3397 y Fn(<cl_complex_io.h>)480 3522 y Fp(Input/Output)d(for)j(class)g
+(tegers.)0 3094 y Fp(<cl_io.h>)480 3219 y Fr(Input/Output.)0
+3397 y Fp(<cl_complex_io.h>)480 3522 y Fr(Input/Output)d(for)j(class)g
 (cl)p 1491 3522 V 33 w(N,)g(the)f(complex)g(n)m(um)m(b)s(ers.)0
-3700 y Fn(<cl_real_io.h>)480 3825 y Fp(Input/Output)e(for)j(class)g(cl)
+3700 y Fp(<cl_real_io.h>)480 3825 y Fr(Input/Output)e(for)j(class)g(cl)
 p 1491 3825 V 33 w(R,)g(the)f(real)h(n)m(um)m(b)s(ers.)0
-4003 y Fn(<cl_float_io.h>)480 4128 y Fp(Input/Output)d(for)j(class)g
+4003 y Fp(<cl_float_io.h>)480 4128 y Fr(Input/Output)d(for)j(class)g
 (cl)p 1491 4128 V 33 w(F,)g(the)g(\015oats.)0 4306 y
-Fn(<cl_sfloat_io.h>)480 4431 y Fp(Input/Output)d(for)j(class)g(cl)p
+Fp(<cl_sfloat_io.h>)480 4431 y Fr(Input/Output)d(for)j(class)g(cl)p
 1491 4431 V 33 w(SF,)f(the)h(short-\015oats.)0 4609 y
-Fn(<cl_ffloat_io.h>)480 4734 y Fp(Input/Output)d(for)j(class)g(cl)p
+Fp(<cl_ffloat_io.h>)480 4734 y Fr(Input/Output)d(for)j(class)g(cl)p
 1491 4734 V 33 w(FF,)g(the)g(single-\015oats.)0 4912
-y Fn(<cl_dfloat_io.h>)480 5037 y Fp(Input/Output)d(for)j(class)g(cl)p
+y Fp(<cl_dfloat_io.h>)480 5037 y Fr(Input/Output)d(for)j(class)g(cl)p
 1491 5037 V 33 w(DF,)g(the)g(double-\015oats.)0 5215
-y Fn(<cl_lfloat_io.h>)480 5340 y Fp(Input/Output)d(for)j(class)g(cl)p
+y Fp(<cl_lfloat_io.h>)480 5340 y Fr(Input/Output)d(for)j(class)g(cl)p
 1491 5340 V 33 w(LF,)g(the)f(long-\015oats.)p eop
 %%Page: 59 61
-59 60 bop 0 -116 a Fp(Chapter)30 b(11:)41 b(Using)31
-b(the)f(library)2621 b(59)0 366 y Fn(<cl_rational_io.h>)480
-491 y Fp(Input/Output)28 b(for)j(class)g(cl)p 1491 491
+59 60 bop 0 -116 a Fr(Chapter)30 b(11:)41 b(Using)31
+b(the)f(library)2621 b(59)0 366 y Fp(<cl_rational_io.h>)480
+491 y Fr(Input/Output)28 b(for)j(class)g(cl)p 1491 491
 28 4 v 33 w(RA,)g(the)f(rational)i(n)m(um)m(b)s(ers.)0
-670 y Fn(<cl_integer_io.h>)480 794 y Fp(Input/Output)c(for)j(class)g
+670 y Fp(<cl_integer_io.h>)480 794 y Fr(Input/Output)c(for)j(class)g
 (cl)p 1491 794 V 33 w(I,)f(the)h(in)m(tegers.)0 973 y
-Fn(<cl_input.h>)480 1097 y Fp(Flags)h(for)e(customizing)g(input)g(op)s
-(erations.)0 1276 y Fn(<cl_output.h>)480 1400 y Fp(Flags)i(for)e
-(customizing)g(output)g(op)s(erations.)0 1579 y Fn(<cl_malloc.h>)480
-1703 y(cl_malloc_hook)p Fp(,)d Fn(cl_free_hook)p Fp(.)0
-1882 y Fn(<cl_abort.h>)480 2006 y(cl_abort)p Fp(.)0 2185
-y Fn(<cl_condition.h>)480 2309 y Fp(Conditions/exceptions.)0
-2488 y Fn(<cl_string.h>)480 2612 y Fp(Strings.)0 2791
-y Fn(<cl_symbol.h>)480 2916 y Fp(Sym)m(b)s(ols.)0 3094
-y Fn(<cl_proplist.h>)480 3219 y Fp(Prop)s(ert)m(y)j(lists.)0
-3397 y Fn(<cl_ring.h>)480 3522 y Fp(General)h(rings.)0
-3700 y Fn(<cl_null_ring.h>)480 3825 y Fp(The)f(n)m(ull)g(ring.)0
-4003 y Fn(<cl_complex_ring.h>)480 4128 y Fp(The)g(ring)g(of)h(complex)f
-(n)m(um)m(b)s(ers.)0 4306 y Fn(<cl_real_ring.h>)480 4431
-y Fp(The)g(ring)g(of)h(real)g(n)m(um)m(b)s(ers.)0 4609
-y Fn(<cl_rational_ring.h>)480 4734 y Fp(The)f(ring)g(of)h(rational)g(n)
-m(um)m(b)s(ers.)0 4912 y Fn(<cl_integer_ring.h>)480 5037
-y Fp(The)f(ring)g(of)h(in)m(tegers.)0 5215 y Fn(<cl_numtheory.h>)480
-5340 y Fp(Num)m(b)s(er)d(threory)i(functions.)p eop
+Fp(<cl_input.h>)480 1097 y Fr(Flags)h(for)e(customizing)g(input)g(op)s
+(erations.)0 1276 y Fp(<cl_output.h>)480 1400 y Fr(Flags)i(for)e
+(customizing)g(output)g(op)s(erations.)0 1579 y Fp(<cl_malloc.h>)480
+1703 y(cl_malloc_hook)p Fr(,)d Fp(cl_free_hook)p Fr(.)0
+1882 y Fp(<cl_abort.h>)480 2006 y(cl_abort)p Fr(.)0 2185
+y Fp(<cl_condition.h>)480 2309 y Fr(Conditions/exceptions.)0
+2488 y Fp(<cl_string.h>)480 2612 y Fr(Strings.)0 2791
+y Fp(<cl_symbol.h>)480 2916 y Fr(Sym)m(b)s(ols.)0 3094
+y Fp(<cl_proplist.h>)480 3219 y Fr(Prop)s(ert)m(y)j(lists.)0
+3397 y Fp(<cl_ring.h>)480 3522 y Fr(General)h(rings.)0
+3700 y Fp(<cl_null_ring.h>)480 3825 y Fr(The)f(n)m(ull)g(ring.)0
+4003 y Fp(<cl_complex_ring.h>)480 4128 y Fr(The)g(ring)g(of)h(complex)f
+(n)m(um)m(b)s(ers.)0 4306 y Fp(<cl_real_ring.h>)480 4431
+y Fr(The)g(ring)g(of)h(real)g(n)m(um)m(b)s(ers.)0 4609
+y Fp(<cl_rational_ring.h>)480 4734 y Fr(The)f(ring)g(of)h(rational)g(n)
+m(um)m(b)s(ers.)0 4912 y Fp(<cl_integer_ring.h>)480 5037
+y Fr(The)f(ring)g(of)h(in)m(tegers.)0 5215 y Fp(<cl_numtheory.h>)480
+5340 y Fr(Num)m(b)s(er)d(threory)i(functions.)p eop
 %%Page: 60 62
-60 61 bop 0 -116 a Fp(Chapter)30 b(11:)41 b(Using)31
-b(the)f(library)2621 b(60)0 366 y Fn(<cl_modinteger.h>)480
-491 y Fp(Mo)s(dular)30 b(in)m(tegers.)0 659 y Fn(<cl_V.h>)96
-b Fp(V)-8 b(ectors.)0 827 y Fn(<cl_GV.h>)480 952 y Fp(General)31
-b(v)m(ectors.)0 1120 y Fn(<cl_GV_number.h>)480 1244 y
-Fp(General)g(v)m(ectors)h(o)m(v)m(er)g(cl)p 1393 1244
-28 4 v 33 w(n)m(um)m(b)s(er.)0 1412 y Fn(<cl_GV_complex.h>)480
-1537 y Fp(General)f(v)m(ectors)h(o)m(v)m(er)g(cl)p 1393
-1537 V 33 w(N.)0 1705 y Fn(<cl_GV_real.h>)480 1829 y
-Fp(General)f(v)m(ectors)h(o)m(v)m(er)g(cl)p 1393 1829
-V 33 w(R.)0 1997 y Fn(<cl_GV_rational.h>)480 2122 y Fp(General)f(v)m
+60 61 bop 0 -116 a Fr(Chapter)30 b(11:)41 b(Using)31
+b(the)f(library)2621 b(60)0 366 y Fp(<cl_modinteger.h>)480
+491 y Fr(Mo)s(dular)30 b(in)m(tegers.)0 659 y Fp(<cl_V.h>)96
+b Fr(V)-8 b(ectors.)0 827 y Fp(<cl_GV.h>)480 952 y Fr(General)31
+b(v)m(ectors.)0 1120 y Fp(<cl_GV_number.h>)480 1244 y
+Fr(General)g(v)m(ectors)h(o)m(v)m(er)g(cl)p 1393 1244
+28 4 v 33 w(n)m(um)m(b)s(er.)0 1412 y Fp(<cl_GV_complex.h>)480
+1537 y Fr(General)f(v)m(ectors)h(o)m(v)m(er)g(cl)p 1393
+1537 V 33 w(N.)0 1705 y Fp(<cl_GV_real.h>)480 1829 y
+Fr(General)f(v)m(ectors)h(o)m(v)m(er)g(cl)p 1393 1829
+V 33 w(R.)0 1997 y Fp(<cl_GV_rational.h>)480 2122 y Fr(General)f(v)m
 (ectors)h(o)m(v)m(er)g(cl)p 1393 2122 V 33 w(RA.)0 2290
-y Fn(<cl_GV_integer.h>)480 2414 y Fp(General)f(v)m(ectors)h(o)m(v)m(er)
-g(cl)p 1393 2414 V 33 w(I.)0 2582 y Fn(<cl_GV_modinteger.h>)480
-2707 y Fp(General)f(v)m(ectors)h(of)f(mo)s(dular)d(in)m(tegers.)0
-2875 y Fn(<cl_SV.h>)480 3000 y Fp(Simple)h(v)m(ectors.)0
-3168 y Fn(<cl_SV_number.h>)480 3292 y Fp(Simple)g(v)m(ectors)j(o)m(v)m
+y Fp(<cl_GV_integer.h>)480 2414 y Fr(General)f(v)m(ectors)h(o)m(v)m(er)
+g(cl)p 1393 2414 V 33 w(I.)0 2582 y Fp(<cl_GV_modinteger.h>)480
+2707 y Fr(General)f(v)m(ectors)h(of)f(mo)s(dular)d(in)m(tegers.)0
+2875 y Fp(<cl_SV.h>)480 3000 y Fr(Simple)h(v)m(ectors.)0
+3168 y Fp(<cl_SV_number.h>)480 3292 y Fr(Simple)g(v)m(ectors)j(o)m(v)m
 (er)g(cl)p 1352 3292 V 33 w(n)m(um)m(b)s(er.)0 3460 y
-Fn(<cl_SV_complex.h>)480 3585 y Fp(Simple)d(v)m(ectors)j(o)m(v)m(er)g
-(cl)p 1352 3585 V 33 w(N.)0 3753 y Fn(<cl_SV_real.h>)480
-3877 y Fp(Simple)d(v)m(ectors)j(o)m(v)m(er)g(cl)p 1352
-3877 V 33 w(R.)0 4045 y Fn(<cl_SV_rational.h>)480 4170
-y Fp(Simple)d(v)m(ectors)j(o)m(v)m(er)g(cl)p 1352 4170
-V 33 w(RA.)0 4338 y Fn(<cl_SV_integer.h>)480 4462 y Fp(Simple)d(v)m
+Fp(<cl_SV_complex.h>)480 3585 y Fr(Simple)d(v)m(ectors)j(o)m(v)m(er)g
+(cl)p 1352 3585 V 33 w(N.)0 3753 y Fp(<cl_SV_real.h>)480
+3877 y Fr(Simple)d(v)m(ectors)j(o)m(v)m(er)g(cl)p 1352
+3877 V 33 w(R.)0 4045 y Fp(<cl_SV_rational.h>)480 4170
+y Fr(Simple)d(v)m(ectors)j(o)m(v)m(er)g(cl)p 1352 4170
+V 33 w(RA.)0 4338 y Fp(<cl_SV_integer.h>)480 4462 y Fr(Simple)d(v)m
 (ectors)j(o)m(v)m(er)g(cl)p 1352 4462 V 33 w(I.)0 4630
-y Fn(<cl_SV_ringelt.h>)480 4755 y Fp(Simple)d(v)m(ectors)j(of)e
-(general)i(ring)e(elemen)m(ts.)0 4923 y Fn(<cl_univpoly.h>)480
-5047 y Fp(Univ)-5 b(ariate)32 b(p)s(olynomials.)0 5215
-y Fn(<cl_univpoly_integer.h>)480 5340 y Fp(Univ)-5 b(ariate)32
+y Fp(<cl_SV_ringelt.h>)480 4755 y Fr(Simple)d(v)m(ectors)j(of)e
+(general)i(ring)e(elemen)m(ts.)0 4923 y Fp(<cl_univpoly.h>)480
+5047 y Fr(Univ)-5 b(ariate)32 b(p)s(olynomials.)0 5215
+y Fp(<cl_univpoly_integer.h>)480 5340 y Fr(Univ)-5 b(ariate)32
 b(p)s(olynomials)d(o)m(v)m(er)j(the)f(in)m(tegers.)p
 eop
 %%Page: 61 63
-61 62 bop 0 -116 a Fp(Chapter)30 b(11:)41 b(Using)31
-b(the)f(library)2621 b(61)0 366 y Fn(<cl_univpoly_rational.h>)480
-491 y Fp(Univ)-5 b(ariate)32 b(p)s(olynomials)d(o)m(v)m(er)j(the)f
-(rational)g(n)m(um)m(b)s(ers.)0 671 y Fn(<cl_univpoly_real.h>)480
-795 y Fp(Univ)-5 b(ariate)32 b(p)s(olynomials)d(o)m(v)m(er)j(the)f
-(real)g(n)m(um)m(b)s(ers.)0 975 y Fn(<cl_univpoly_complex.h>)480
-1099 y Fp(Univ)-5 b(ariate)32 b(p)s(olynomials)d(o)m(v)m(er)j(the)f
-(complex)f(n)m(um)m(b)s(ers.)0 1279 y Fn(<cl_univpoly_modint.h>)480
-1403 y Fp(Univ)-5 b(ariate)32 b(p)s(olynomials)d(o)m(v)m(er)j(mo)s
-(dular)c(in)m(teger)k(rings.)0 1583 y Fn(<cl_timing.h>)480
-1707 y Fp(Timing)d(facilities.)0 1887 y Fn(<cln.h>)144
-b Fp(Includes)30 b(all)h(of)f(the)h(ab)s(o)m(v)m(e.)0
-2359 y Fq(11.3)68 b(An)30 b(Example)0 2635 y Fp(A)g(function)h(whic)m
+61 62 bop 0 -116 a Fr(Chapter)30 b(11:)41 b(Using)31
+b(the)f(library)2621 b(61)0 366 y Fp(<cl_univpoly_rational.h>)480
+491 y Fr(Univ)-5 b(ariate)32 b(p)s(olynomials)d(o)m(v)m(er)j(the)f
+(rational)g(n)m(um)m(b)s(ers.)0 671 y Fp(<cl_univpoly_real.h>)480
+795 y Fr(Univ)-5 b(ariate)32 b(p)s(olynomials)d(o)m(v)m(er)j(the)f
+(real)g(n)m(um)m(b)s(ers.)0 975 y Fp(<cl_univpoly_complex.h>)480
+1099 y Fr(Univ)-5 b(ariate)32 b(p)s(olynomials)d(o)m(v)m(er)j(the)f
+(complex)f(n)m(um)m(b)s(ers.)0 1279 y Fp(<cl_univpoly_modint.h>)480
+1403 y Fr(Univ)-5 b(ariate)32 b(p)s(olynomials)d(o)m(v)m(er)j(mo)s
+(dular)c(in)m(teger)k(rings.)0 1583 y Fp(<cl_timing.h>)480
+1707 y Fr(Timing)d(facilities.)0 1887 y Fp(<cln.h>)144
+b Fr(Includes)30 b(all)h(of)f(the)h(ab)s(o)m(v)m(e.)0
+2359 y Fs(11.3)68 b(An)30 b(Example)0 2635 y Fr(A)g(function)h(whic)m
 (h)f(computes)f(the)i(n)m(th)f(Fib)s(onacci)h(n)m(um)m(b)s(er)d(can)j
-(b)s(e)f(written)g(as)h(follo)m(ws.)240 2891 y Fn(#include)46
+(b)s(e)f(written)g(as)h(follo)m(ws.)240 2891 y Fp(#include)46
 b(<cl_integer.h>)240 2995 y(#include)g(<cl_real.h>)240
 3203 y(//)h(Returns)f(F_n,)h(computed)e(as)i(the)g(nearest)f(integer)g
 (to)240 3306 y(//)h(\(\(1+sqrt\(5\)\)/2\)^n/sqrt\(5\))o(.)42
@@ -4193,30 +4468,30 @@ b(Assume)k(n>=0.)240 3410 y(const)g(cl_I)h(fibonacci)e(\(int)i(n\))240
 b(prec)k(=)g(cl_float_format\(\(int\)\(0.)o(2089)o(8764)o(1*n)o(+5\)\))
 o(;)622 3825 y(cl_R)f(sqrt5)h(=)g(sqrt\(cl_float\(5,prec\)\);)622
 3929 y(cl_R)f(phi)h(=)h(\(1+sqrt5\)/2;)622 4033 y(return)e(round1\()g
-(expt\(phi,n\)/sqrt5)d(\);)240 4137 y(})0 4413 y Fp(Let's)31
+(expt\(phi,n\)/sqrt5)d(\);)240 4137 y(})0 4413 y Fr(Let's)31
 b(explain)g(what)f(is)g(going)i(on)e(in)g(detail.)0 4690
-y(The)j(include)h(\014le)g Fn(<cl_integer.h>)c Fp(is)k(necessary)g(b)s
-(ecause)g(the)g(t)m(yp)s(e)g Fn(cl_I)e Fp(is)i(used)f(in)h(the)g
+y(The)j(include)h(\014le)g Fp(<cl_integer.h>)c Fr(is)k(necessary)g(b)s
+(ecause)g(the)g(t)m(yp)s(e)g Fp(cl_I)e Fr(is)i(used)f(in)h(the)g
 (function,)h(and)0 4814 y(the)30 b(include)g(\014le)g
-Fn(<cl_real.h>)d Fp(is)j(needed)g(for)g(the)g(t)m(yp)s(e)h
-Fn(cl_R)e Fp(and)g(the)h(\015oating)h(p)s(oin)m(t)f(n)m(um)m(b)s(er)e
+Fp(<cl_real.h>)d Fr(is)j(needed)g(for)g(the)g(t)m(yp)s(e)h
+Fp(cl_R)e Fr(and)g(the)h(\015oating)h(p)s(oin)m(t)f(n)m(um)m(b)s(er)e
 (functions.)0 4939 y(The)i(order)g(of)g(the)h(include)f(\014les)g(do)s
 (es)g(not)h(matter.)0 5215 y(Then)h(comes)i(the)f(function)h
-(declaration.)51 b(The)33 b(argumen)m(t)g(is)g(an)h Fn(int)p
-Fp(,)f(the)h(result)f(an)h(in)m(teger.)51 b(The)33 b(return)0
-5340 y(t)m(yp)s(e)26 b(is)g(de\014ned)f(as)h(`)p Fn(const)j(cl_I)p
-Fp(',)d(not)h(simply)d(`)p Fn(cl_I)p Fp(',)i(b)s(ecause)g(that)h(allo)m
+(declaration.)51 b(The)33 b(argumen)m(t)g(is)g(an)h Fp(int)p
+Fr(,)f(the)h(result)f(an)h(in)m(teger.)51 b(The)33 b(return)0
+5340 y(t)m(yp)s(e)26 b(is)g(de\014ned)f(as)h(`)p Fp(const)j(cl_I)p
+Fr(',)d(not)h(simply)d(`)p Fp(cl_I)p Fr(',)i(b)s(ecause)g(that)h(allo)m
 (ws)g(the)f(compiler)g(to)h(detect)g(t)m(yp)s(os)p eop
 %%Page: 62 64
-62 63 bop 0 -116 a Fp(Chapter)30 b(11:)41 b(Using)31
-b(the)f(library)2621 b(62)0 366 y(lik)m(e)40 b(`)p Fn(fibonacci\(n\))27
-b(=)j(100)p Fp('.)64 b(It)39 b(w)m(ould)f(b)s(e)g(p)s(ossible)g(to)h
-(declare)g(the)g(return)e(t)m(yp)s(e)i(as)g Fn(const)29
-b(cl_R)37 b Fp(\(real)0 491 y(n)m(um)m(b)s(er\))28 b(or)h(ev)m(en)i
-Fn(const)e(cl_N)f Fp(\(complex)i(n)m(um)m(b)s(er\).)39
+62 63 bop 0 -116 a Fr(Chapter)30 b(11:)41 b(Using)31
+b(the)f(library)2621 b(62)0 366 y(lik)m(e)40 b(`)p Fp(fibonacci\(n\))27
+b(=)j(100)p Fr('.)64 b(It)39 b(w)m(ould)f(b)s(e)g(p)s(ossible)g(to)h
+(declare)g(the)g(return)e(t)m(yp)s(e)i(as)g Fp(const)29
+b(cl_R)37 b Fr(\(real)0 491 y(n)m(um)m(b)s(er\))28 b(or)h(ev)m(en)i
+Fp(const)e(cl_N)f Fr(\(complex)i(n)m(um)m(b)s(er\).)39
 b(W)-8 b(e)31 b(use)e(the)h(most)f(sp)s(ecialized)i(p)s(ossible)e
 (return)g(t)m(yp)s(e)0 616 y(b)s(ecause)34 b(functions)f(whic)m(h)g
-(call)i(`)p Fn(fibonacci)p Fp(')d(will)i(b)s(e)f(able)h(to)g(pro\014t)f
+(call)i(`)p Fp(fibonacci)p Fr(')d(will)i(b)s(e)f(able)h(to)g(pro\014t)f
 (from)f(the)i(compiler's)f(t)m(yp)s(e)h(analysis:)0 740
 y(Adding)j(t)m(w)m(o)h(in)m(tegers)h(is)e(sligh)m(tly)h(more)f
 (e\016cien)m(t)h(than)f(adding)g(the)h(same)e(ob)5 b(jects)38
@@ -4224,415 +4499,1345 @@ b(declared)g(as)f(complex)0 865 y(n)m(um)m(b)s(ers,)30
 b(b)s(ecause)i(it)g(needs)g(less)g(t)m(yp)s(e)g(dispatc)m(h.)46
 b(Also,)33 b(when)e(linking)h(to)h(CLN)e(as)h(a)h(non-shared)e(library)
 -8 b(,)0 989 y(this)30 b(minimizes)f(the)i(size)g(of)f(the)h(resulting)
-f(executable)i(program.)0 1269 y(The)37 b(result)g(will)g(b)s(e)g
+f(executable)i(program.)0 1263 y(The)37 b(result)g(will)g(b)s(e)g
 (computed)f(as)h(expt\(phi,n\)/sqrt\(5\),)k(rounded)35
 b(to)j(the)g(nearest)f(in)m(teger.)63 b(In)36 b(order)h(to)0
-1394 y(get)h(a)f(correct)h(result,)h(the)e(absolute)h(error)e(should)g
+1388 y(get)h(a)f(correct)h(result,)h(the)e(absolute)h(error)e(should)g
 (b)s(e)g(less)h(than)g(1/2,)j(i.e.)61 b(the)37 b(relativ)m(e)i(error)e
-(should)f(b)s(e)0 1518 y(less)28 b(than)g
+(should)f(b)s(e)0 1512 y(less)28 b(than)g
 (sqrt\(5\)/\(2*expt\(phi,n\)\).)43 b(T)-8 b(o)29 b(this)f(end,)g(the)h
 (\014rst)e(line)i(computes)e(a)i(\015oating)g(p)s(oin)m(t)f(precision)g
-(for)0 1643 y(sqrt\(5\))j(and)f(phi.)0 1923 y(Then)37
+(for)0 1637 y(sqrt\(5\))j(and)f(phi.)0 1911 y(Then)37
 b(sqrt\(5\))i(is)e(computed)g(b)m(y)h(\014rst)f(con)m(v)m(erting)j(the)
 e(in)m(teger)h(5)f(to)h(a)f(\015oating)h(p)s(oin)m(t)e(n)m(um)m(b)s(er)
-f(and)h(than)0 2047 y(taking)j(the)f(square)f(ro)s(ot.)67
+f(and)h(than)0 2035 y(taking)j(the)f(square)f(ro)s(ot.)67
 b(The)38 b(con)m(v)m(erse,)43 b(\014rst)38 b(taking)i(the)f(square)f
 (ro)s(ot)h(of)g(5,)j(and)c(then)h(con)m(v)m(erting)h(to)0
-2172 y(the)c(desired)g(precision,)h(w)m(ould)f(not)g(w)m(ork)g(in)g
+2160 y(the)c(desired)g(precision,)h(w)m(ould)f(not)g(w)m(ork)g(in)g
 (CLN:)g(The)f(square)h(ro)s(ot)g(w)m(ould)g(b)s(e)f(computed)g(to)h(a)h
-(default)0 2296 y(precision)e(\(normally)g(single-\015oat)h
+(default)0 2284 y(precision)e(\(normally)g(single-\015oat)h
 (precision\),)h(and)e(the)g(follo)m(wing)h(con)m(v)m(ersion)g(could)f
-(not)h(help)e(ab)s(out)h(the)0 2421 y(lac)m(king)i(accuracy)-8
+(not)h(help)e(ab)s(out)h(the)0 2409 y(lac)m(king)i(accuracy)-8
 b(.)58 b(This)35 b(is)h(b)s(ecause)f(CLN)g(is)h(not)g(a)g(sym)m(b)s
 (olic)f(computer)f(algebra)j(system)d(and)h(do)s(es)h(not)0
-2545 y(represen)m(t)30 b(sqrt\(5\))i(in)e(a)h(non-n)m(umeric)d(w)m(a)m
-(y)-8 b(.)0 2825 y(The)38 b(t)m(yp)s(e)h Fn(cl_R)f Fp(for)h(sqrt5)g
+2533 y(represen)m(t)30 b(sqrt\(5\))i(in)e(a)h(non-n)m(umeric)d(w)m(a)m
+(y)-8 b(.)0 2807 y(The)38 b(t)m(yp)s(e)h Fp(cl_R)f Fr(for)h(sqrt5)g
 (and,)i(in)d(the)h(follo)m(wing)i(line,)g(phi)d(is)h(the)g(only)g(p)s
-(ossible)g(c)m(hoice.)68 b(Y)-8 b(ou)39 b(cannot)0 2950
-y(write)28 b Fn(cl_F)e Fp(b)s(ecause)i(the)f(C)p Fn(++)g
-Fp(compiler)g(can)h(only)f(infer)g(that)h Fn(cl_float\(5,prec\))23
-b Fp(is)28 b(a)g(real)g(n)m(um)m(b)s(er.)37 b(Y)-8 b(ou)0
-3074 y(cannot)31 b(write)g Fn(cl_N)e Fp(b)s(ecause)h(a)h(`)p
-Fn(round1)p Fp(')e(do)s(es)h(not)h(exist)g(for)f(general)h(complex)f(n)
-m(um)m(b)s(ers.)0 3354 y(When)44 b(the)h(function)f(returns,)j(all)e
+(ossible)g(c)m(hoice.)68 b(Y)-8 b(ou)39 b(cannot)0 2932
+y(write)28 b Fp(cl_F)e Fr(b)s(ecause)i(the)f(C)p Fp(++)g
+Fr(compiler)g(can)h(only)f(infer)g(that)h Fp(cl_float\(5,prec\))23
+b Fr(is)28 b(a)g(real)g(n)m(um)m(b)s(er.)37 b(Y)-8 b(ou)0
+3056 y(cannot)31 b(write)g Fp(cl_N)e Fr(b)s(ecause)h(a)h(`)p
+Fp(round1)p Fr(')e(do)s(es)h(not)h(exist)g(for)f(general)h(complex)f(n)
+m(um)m(b)s(ers.)0 3330 y(When)44 b(the)h(function)f(returns,)j(all)e
 (the)g(lo)s(cal)g(v)-5 b(ariables)45 b(in)f(the)h(function)f(are)h
-(automatically)h(reclaimed)0 3479 y(\(garbage)32 b(collected\).)43
+(automatically)h(reclaimed)0 3455 y(\(garbage)32 b(collected\).)43
 b(Only)30 b(the)h(result)f(surviv)m(es)g(and)g(gets)h(passed)f(to)h
-(the)g(caller.)0 3982 y Fq(11.4)68 b(Debugging)31 b(supp)t(ort)0
-4262 y Fp(When)f(debugging)g(a)h(CLN)f(application)i(with)e(GNU)h
-Fn(gdb)p Fp(,)f(t)m(w)m(o)h(facilities)i(are)e(a)m(v)-5
-b(ailable)33 b(from)28 b(the)j(library:)75 4542 y Fo(\017)60
-b Fp(The)32 b(library)h(do)s(es)f(t)m(yp)s(e)h(c)m(hec)m(ks,)j(range)d
+(the)g(caller.)0 3729 y(The)j(\014le)g Fp(fibonacci.cc)d
+Fr(in)j(the)h(sub)s(directory)e Fp(examples)f Fr(con)m(tains)k(this)e
+(implemen)m(tation)g(together)i(with)0 3853 y(an)30 b(ev)m(en)h(faster)
+g(algorithm.)0 4292 y Fs(11.4)68 b(Debugging)31 b(supp)t(ort)0
+4566 y Fr(When)f(debugging)g(a)h(CLN)f(application)i(with)e(GNU)h
+Fp(gdb)p Fr(,)f(t)m(w)m(o)h(facilities)i(are)e(a)m(v)-5
+b(ailable)33 b(from)28 b(the)j(library:)75 4840 y Fq(\017)60
+b Fr(The)32 b(library)h(do)s(es)f(t)m(yp)s(e)h(c)m(hec)m(ks,)j(range)d
 (c)m(hec)m(ks,)i(consistency)f(c)m(hec)m(ks)g(at)g(man)m(y)e(places.)49
-b(When)33 b(one)g(of)180 4666 y(these)40 b(fails,)i(the)e(function)f
-Fn(cl_abort\(\))d Fp(is)j(called.)69 b(Its)39 b(default)h(implemen)m
-(tation)f(is)g(to)h(p)s(erform)d(an)180 4791 y Fn(exit\(1\))p
-Fp(,)29 b(so)i(y)m(ou)f(w)m(on't)i(ha)m(v)m(e)f(a)g(core)h(dump.)38
+b(When)33 b(one)g(of)180 4965 y(these)40 b(fails,)i(the)e(function)f
+Fp(cl_abort\(\))d Fr(is)j(called.)69 b(Its)39 b(default)h(implemen)m
+(tation)f(is)g(to)h(p)s(erform)d(an)180 5089 y Fp(exit\(1\))p
+Fr(,)29 b(so)i(y)m(ou)f(w)m(on't)i(ha)m(v)m(e)f(a)g(core)h(dump.)38
 b(But)31 b(for)f(debugging,)h(it)g(is)f(b)s(est)g(to)i(set)f(a)g
-(breakp)s(oin)m(t)f(at)180 4915 y(this)g(function:)420
-5050 y Fn(\(gdb\))46 b(break)h(cl_abort)180 5205 y Fp(When)30
-b(this)g(breakp)s(oin)m(t)h(is)f(hit,)h(lo)s(ok)g(at)g(the)f(stac)m
-(k's)i(bac)m(ktrace:)420 5340 y Fn(\(gdb\))46 b(where)p
-eop
+(breakp)s(oin)m(t)f(at)180 5214 y(this)g(function:)420
+5340 y Fp(\(gdb\))46 b(break)h(cl_abort)p eop
 %%Page: 63 65
-63 64 bop 0 -116 a Fp(Chapter)30 b(11:)41 b(Using)31
-b(the)f(library)2621 b(63)75 366 y Fo(\017)60 b Fp(The)27
-b(debugger's)g(normal)g Fn(print)f Fp(command)f(do)s(esn't)j(kno)m(w)f
+63 64 bop 0 -116 a Fr(Chapter)30 b(11:)41 b(Using)31
+b(the)f(library)2621 b(63)180 366 y(When)30 b(this)g(breakp)s(oin)m(t)h
+(is)f(hit,)h(lo)s(ok)g(at)g(the)f(stac)m(k's)i(bac)m(ktrace:)420
+495 y Fp(\(gdb\))46 b(where)75 645 y Fq(\017)60 b Fr(The)27
+b(debugger's)g(normal)g Fp(print)f Fr(command)f(do)s(esn't)j(kno)m(w)f
 (ab)s(out)h(CLN's)f(t)m(yp)s(es)g(and)g(therefore)h(prin)m(ts)180
-491 y(mostly)43 b(useless)h(hexadecimal)g(addresses.)80
-b(CLN)43 b(o\013ers)h(a)g(function)f Fn(cl_print)p Fp(,)i(callable)h
-(from)c(the)180 616 y(debugger,)37 b(for)e(prin)m(ting)g(n)m(um)m(b)s
+769 y(mostly)43 b(useless)h(hexadecimal)g(addresses.)80
+b(CLN)43 b(o\013ers)h(a)g(function)f Fp(cl_print)p Fr(,)i(callable)h
+(from)c(the)180 894 y(debugger,)37 b(for)e(prin)m(ting)g(n)m(um)m(b)s
 (er)e(ob)5 b(jects.)57 b(In)35 b(order)g(to)h(get)g(this)g(function,)g
-(y)m(ou)g(ha)m(v)m(e)h(to)f(de\014ne)f(the)180 740 y(macro)24
-b(`)p Fn(CL_DEBUG)p Fp(')f(and)h(then)h(include)f(all)h(the)g(header)g
-(\014les)f(for)h(whic)m(h)f(y)m(ou)h(w)m(an)m(t)h Fn(cl_print)c
-Fp(debugging)180 865 y(supp)s(ort.)39 b(F)-8 b(or)31
-b(example:)420 993 y Fn(#define)46 b(CL_DEBUG)420 1097
-y(#include)g(<cl_string.h>)180 1247 y Fp(No)m(w,)26 b(if)f(y)m(ou)f(ha)
+(y)m(ou)g(ha)m(v)m(e)h(to)f(de\014ne)f(the)180 1018 y(macro)24
+b(`)p Fp(CL_DEBUG)p Fr(')f(and)h(then)h(include)f(all)h(the)g(header)g
+(\014les)f(for)h(whic)m(h)f(y)m(ou)h(w)m(an)m(t)h Fp(cl_print)c
+Fr(debugging)180 1143 y(supp)s(ort.)39 b(F)-8 b(or)31
+b(example:)420 1271 y Fp(#define)46 b(CL_DEBUG)420 1375
+y(#include)g(<cl_string.h>)180 1525 y Fr(No)m(w,)26 b(if)f(y)m(ou)f(ha)
 m(v)m(e)i(in)e(y)m(our)g(program)f(a)i(v)-5 b(ariable)25
-b Fn(cl_string)i(s)p Fp(,)f(and)e(insp)s(ect)g(it)g(under)f
-Fn(gdb)p Fp(,)i(the)f(output)180 1371 y(ma)m(y)30 b(lo)s(ok)h(lik)m(e)h
-(this:)420 1500 y Fn(\(gdb\))46 b(print)h(s)420 1604
+b Fp(cl_string)i(s)p Fr(,)f(and)e(insp)s(ect)g(it)g(under)f
+Fp(gdb)p Fr(,)i(the)f(output)180 1649 y(ma)m(y)30 b(lo)s(ok)h(lik)m(e)h
+(this:)420 1778 y Fp(\(gdb\))46 b(print)h(s)420 1882
 y($7)g(=)h({<cl_gcpointer>)43 b(=)48 b({)f(=)h({pointer)d(=)j
-(0x8055b60,)d(heappointer)f(=)k(0x8055b60,)515 1707 y(word)f(=)h
-(134568800}},)c(})420 1811 y(\(gdb\))i(call)h(cl_print\(s\))420
-1915 y(\(cl_string\))e("")420 2019 y($8)i(=)h(134568800)180
-2168 y Fp(Note)34 b(that)f(the)g(output)f(of)h Fn(cl_print)d
-Fp(go)s(es)k(to)f(the)g(program's)e(error)h(output,)h(not)g(to)h(gdb's)
-e(standard)180 2293 y(output.)180 2442 y(Note,)38 b(ho)m(w)m(ev)m(er,)g
+(0x8055b60,)d(heappointer)f(=)k(0x8055b60,)515 1985 y(word)f(=)h
+(134568800}},)c(})420 2089 y(\(gdb\))i(call)h(cl_print\(s\))420
+2193 y(\(cl_string\))e("")420 2297 y($8)i(=)h(134568800)180
+2446 y Fr(Note)34 b(that)f(the)g(output)f(of)h Fp(cl_print)d
+Fr(go)s(es)k(to)f(the)g(program's)e(error)h(output,)h(not)g(to)h(gdb's)
+e(standard)180 2571 y(output.)180 2720 y(Note,)38 b(ho)m(w)m(ev)m(er,)g
 (that)d(the)g(ab)s(o)m(v)m(e)i(facilit)m(y)g(do)s(es)d(not)i(w)m(ork)f
 (with)f(all)i(CLN)f(t)m(yp)s(es,)h(only)g(with)e(n)m(um)m(b)s(er)180
-2567 y(ob)5 b(jects)42 b(and)e(similar.)72 b(Therefore)41
-b(CLN)g(o\013ers)g(a)h(mem)m(b)s(er)c(function)j Fn(debug_print\(\))c
-Fp(on)k(all)h(CLN)180 2691 y(t)m(yp)s(es.)63 b(The)37
-b(same)g(macro)h(`)p Fn(CL_DEBUG)p Fp(')e(is)h(needed)h(for)f(this)h
+2845 y(ob)5 b(jects)42 b(and)e(similar.)72 b(Therefore)41
+b(CLN)g(o\013ers)g(a)h(mem)m(b)s(er)c(function)j Fp(debug_print\(\))c
+Fr(on)k(all)h(CLN)180 2969 y(t)m(yp)s(es.)63 b(The)37
+b(same)g(macro)h(`)p Fp(CL_DEBUG)p Fr(')e(is)h(needed)h(for)f(this)h
 (mem)m(b)s(er)d(function)j(to)g(b)s(e)f(implemen)m(ted.)180
-2816 y(Under)30 b Fn(gdb)p Fp(,)f(y)m(ou)i(call)h(it)f(lik)m(e)g(this:)
-420 2944 y Fn(\(gdb\))46 b(print)h(s)420 3048 y($7)g(=)h
+3094 y(Under)30 b Fp(gdb)p Fr(,)f(y)m(ou)i(call)h(it)f(lik)m(e)g(this:)
+420 3222 y Fp(\(gdb\))46 b(print)h(s)420 3326 y($7)g(=)h
 ({<cl_gcpointer>)43 b(=)48 b({)f(=)h({pointer)d(=)j(0x8055b60,)d
-(heappointer)f(=)k(0x8055b60,)515 3152 y(word)f(=)h(134568800}},)c(})
-420 3256 y(\(gdb\))i(call)h(s.debug_print\(\))420 3359
-y(\(cl_string\))e("")420 3463 y(\(gdb\))h(define)g(cprint)420
-3567 y(>call)g(\($1\).debug_print\(\))420 3671 y(>end)420
-3775 y(\(gdb\))g(cprint)g(s)420 3878 y(\(cl_string\))f("")180
-4028 y Fp(Unfortunately)-8 b(,)31 b(this)g(feature)f(do)s(es)g(not)h
+(heappointer)f(=)k(0x8055b60,)515 3430 y(word)f(=)h(134568800}},)c(})
+420 3534 y(\(gdb\))i(call)h(s.debug_print\(\))420 3638
+y(\(cl_string\))e("")420 3741 y(\(gdb\))h(define)g(cprint)420
+3845 y(>call)g(\($1\).debug_print\(\))420 3949 y(>end)420
+4053 y(\(gdb\))g(cprint)g(s)420 4156 y(\(cl_string\))f("")180
+4306 y Fr(Unfortunately)-8 b(,)31 b(this)g(feature)f(do)s(es)g(not)h
 (seem)f(to)h(w)m(ork)f(under)f(all)i(circumstances.)p
 eop
 %%Page: 64 66
-64 65 bop 0 -116 a Fp(Chapter)30 b(12:)41 b(Customizing)2803
-b(64)0 366 y Fm(12)80 b(Customizing)0 1146 y Fq(12.1)68
-b(Error)31 b(handling)0 1438 y Fp(When)36 b(a)g(fatal)h(error)f(o)s
+64 65 bop 0 -116 a Fr(Chapter)30 b(12:)41 b(Customizing)2803
+b(64)0 366 y Fo(12)80 b(Customizing)0 1146 y Fs(12.1)68
+b(Error)31 b(handling)0 1438 y Fr(When)36 b(a)g(fatal)h(error)f(o)s
 (ccurs,)i(an)d(error)h(message)g(is)g(output)g(to)h(the)f(standard)f
 (error)h(output)f(stream,)j(and)0 1562 y(the)k(function)f
-Fn(cl_abort)e Fp(is)j(called.)76 b(The)41 b(default)h(v)m(ersion)g(of)f
+Fp(cl_abort)e Fr(is)j(called.)76 b(The)41 b(default)h(v)m(ersion)g(of)f
 (this)h(function)f(\(pro)m(vided)h(in)f(the)h(library\))0
 1687 y(terminates)32 b(the)g(application.)46 b(T)-8 b(o)32
 b(catc)m(h)h(suc)m(h)f(a)g(fatal)h(error,)f(y)m(ou)g(need)f(to)i
-(de\014ne)e(the)h(function)f Fn(cl_abort)0 1811 y Fp(y)m(ourself,)g
-(with)f(the)h(protot)m(yp)s(e)240 2083 y Fn(#include)46
+(de\014ne)e(the)h(function)f Fp(cl_abort)0 1811 y Fr(y)m(ourself,)g
+(with)f(the)h(protot)m(yp)s(e)240 2083 y Fp(#include)46
 b(<cl_abort.h>)240 2186 y(void)h(cl_abort)e(\(void\);)0
-2478 y Fp(This)30 b(function)g(m)m(ust)f(not)i(return)e(con)m(trol)j
-(to)f(its)f(caller.)0 3087 y Fq(12.2)68 b(Floating-p)t(oin)l(t)32
-b(under\015o)l(w)0 3379 y Fp(Floating)c(p)s(oin)m(t)d(under\015o)m(w)g
+2478 y Fr(This)30 b(function)g(m)m(ust)f(not)i(return)e(con)m(trol)j
+(to)f(its)f(caller.)0 3087 y Fs(12.2)68 b(Floating-p)t(oin)l(t)32
+b(under\015o)l(w)0 3379 y Fr(Floating)c(p)s(oin)m(t)d(under\015o)m(w)g
 (denotes)h(the)g(situation)g(when)f(a)h(\015oating-p)s(oin)m(t)h(n)m
 (um)m(b)s(er)c(is)j(to)g(b)s(e)f(created)i(whic)m(h)0
-3503 y(is)32 b(so)g(close)h(to)f Fn(0)g Fp(that)g(its)g(exp)s(onen)m(t)
+3503 y(is)32 b(so)g(close)h(to)f Fp(0)g Fr(that)g(its)g(exp)s(onen)m(t)
 g(is)g(to)s(o)h(lo)m(w)f(to)h(b)s(e)e(represen)m(ted)h(in)m(ternally)-8
 b(.)46 b(By)32 b(default,)h(this)e(causes)i(a)0 3628
 y(fatal)f(error.)40 b(If)30 b(y)m(ou)h(set)f(the)h(global)h(v)-5
-b(ariable)240 3899 y Fn(cl_boolean)45 b(cl_inhibit_floating_poin)o
-(t_un)o(derf)o(low)0 4190 y Fp(to)36 b Fn(cl_true)p Fp(,)f(the)h(error)
+b(ariable)240 3899 y Fp(cl_boolean)45 b(cl_inhibit_floating_poin)o
+(t_un)o(derf)o(low)0 4190 y Fr(to)36 b Fp(cl_true)p Fr(,)f(the)h(error)
 f(will)h(b)s(e)f(inhibited,)h(and)f(a)h(\015oating-p)s(oin)m(t)h(zero)f
 (will)g(b)s(e)f(generated)h(instead.)56 b(The)0 4315
-y(default)31 b(v)-5 b(alue)30 b(of)h Fn(cl_inhibit_floating_poin)o
-(t_un)o(der)o(flow)24 b Fp(is)30 b Fn(cl_false)p Fp(.)0
-4924 y Fq(12.3)68 b(Customizing)32 b(I/O)0 5215 y Fp(The)27
-b(output)g(of)h(the)f(function)h Fn(fprint)d Fp(ma)m(y)i(b)s(e)g
+y(default)31 b(v)-5 b(alue)30 b(of)h Fp(cl_inhibit_floating_poin)o
+(t_un)o(der)o(flow)24 b Fr(is)30 b Fp(cl_false)p Fr(.)0
+4924 y Fs(12.3)68 b(Customizing)32 b(I/O)0 5215 y Fr(The)27
+b(output)g(of)h(the)f(function)h Fp(fprint)d Fr(ma)m(y)i(b)s(e)g
 (customized)h(b)m(y)f(c)m(hanging)h(the)g(v)-5 b(alue)28
-b(of)g(the)f(global)i(v)-5 b(ariable)0 5340 y Fn
-(cl_default_print_flags)p Fp(.)p eop
+b(of)g(the)f(global)i(v)-5 b(ariable)0 5340 y Fp
+(cl_default_print_flags)p Fr(.)p eop
 %%Page: 65 67
-65 66 bop 0 -116 a Fp(Chapter)30 b(12:)41 b(Customizing)2803
-b(65)0 366 y Fq(12.4)68 b(Customizing)32 b(the)e(memory)h(allo)t(cator)
-0 640 y Fp(Ev)m(ery)j(memory)d(allo)s(cation)36 b(of)e(CLN)f(is)h(done)
-f(through)g(the)g(function)h(p)s(oin)m(ter)f Fn(cl_malloc_hook)p
-Fp(.)47 b(F)-8 b(reeing)0 765 y(of)31 b(this)g(memory)e(is)i(done)f
-(through)g(the)h(function)g(p)s(oin)m(ter)g Fn(cl_free_hook)p
-Fp(.)39 b(The)30 b(default)h(v)m(ersions)g(of)g(these)0
+65 66 bop 0 -116 a Fr(Chapter)30 b(12:)41 b(Customizing)2803
+b(65)0 366 y Fs(12.4)68 b(Customizing)32 b(the)e(memory)h(allo)t(cator)
+0 640 y Fr(Ev)m(ery)j(memory)d(allo)s(cation)36 b(of)e(CLN)f(is)h(done)
+f(through)g(the)g(function)h(p)s(oin)m(ter)f Fp(cl_malloc_hook)p
+Fr(.)47 b(F)-8 b(reeing)0 765 y(of)31 b(this)g(memory)e(is)i(done)f
+(through)g(the)h(function)g(p)s(oin)m(ter)g Fp(cl_free_hook)p
+Fr(.)39 b(The)30 b(default)h(v)m(ersions)g(of)g(these)0
 890 y(functions,)e(pro)m(vided)f(in)g(the)h(library)-8
-b(,)29 b(call)h Fn(malloc)d Fp(and)h Fn(free)f Fp(and)h(c)m(hec)m(k)i
-(the)f Fn(malloc)e Fp(result)h(against)i Fn(NULL)p Fp(.)0
+b(,)29 b(call)h Fp(malloc)d Fr(and)h Fp(free)f Fr(and)h(c)m(hec)m(k)i
+(the)f Fp(malloc)e Fr(result)h(against)i Fp(NULL)p Fr(.)0
 1014 y(If)25 b(y)m(ou)h(w)m(an)m(t)h(to)f(pro)m(vide)g(another)g
 (memory)d(allo)s(cator,)29 b(y)m(ou)d(need)f(to)i(de\014ne)e(the)h(v)-5
-b(ariables)26 b Fn(cl_malloc_hook)0 1139 y Fp(and)k Fn(cl_free_hook)d
-Fp(y)m(ourself,)k(lik)m(e)g(this:)240 1392 y Fn(#include)46
+b(ariables)26 b Fp(cl_malloc_hook)0 1139 y Fr(and)k Fp(cl_free_hook)d
+Fr(y)m(ourself,)k(lik)m(e)g(this:)240 1392 y Fp(#include)46
 b(<cl_malloc.h>)240 1496 y(void*)g(\(*cl_malloc_hook\))d(\(size_t)j
-(size\))h(=)g Fl(:)15 b(:)g(:)q Fn(;)240 1599 y(void)47
-b(\(*cl_free_hook\))c(\(void*)j(ptr\))286 b(=)47 b Fl(:)15
-b(:)g(:)q Fn(;)0 1873 y Fp(The)30 b Fn(cl_malloc_hook)c
-Fp(function)k(m)m(ust)g(not)g(return)g(a)g Fn(NULL)g
-Fp(p)s(oin)m(ter.)0 2147 y(It)24 b(is)g(not)g(p)s(ossible)f(to)i(c)m
+(size\))h(=)g Fn(:)15 b(:)g(:)q Fp(;)240 1599 y(void)47
+b(\(*cl_free_hook\))c(\(void*)j(ptr\))286 b(=)47 b Fn(:)15
+b(:)g(:)q Fp(;)0 1873 y Fr(The)30 b Fp(cl_malloc_hook)c
+Fr(function)k(m)m(ust)g(not)g(return)g(a)g Fp(NULL)g
+Fr(p)s(oin)m(ter.)0 2147 y(It)24 b(is)g(not)g(p)s(ossible)f(to)i(c)m
 (hange)g(the)f(memory)e(allo)s(cator)k(at)f(run)m(time,)f(b)s(ecause)g
 (it)g(is)g(already)g(called)i(at)e(program)0 2272 y(startup)30
 b(b)m(y)g(the)h(constructors)f(of)h(some)f(global)h(v)-5
 b(ariables.)p eop
 %%Page: 66 68
-66 67 bop 0 -116 a Fp(Index)3586 b(66)0 366 y Fm(Index)0
-831 y Fc(\(Index)24 b(is)i(nonexisten)n(t\))p eop
-%%Page: -1 69
--1 68 bop 3875 -116 a Fp(i)0 366 y Fm(T)-13 b(able)31
-b(of)f(Con)l(ten)l(ts)0 715 y Fq(1)135 b(In)l(tro)t(duction)40
+66 67 bop 0 -116 a Fr(Index)3586 b(66)0 366 y Fo(Index)0
+848 y Fs(A)0 981 y Fe(abs)26 b(\(\))10 b Fd(.)k(.)f(.)h(.)f(.)g(.)g(.)g
+(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)
+h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f
+(.)g(.)g(.)37 b Fc(14)0 1097 y(abstract)26 b(class)16
+b Fd(.)f(.)e(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
+g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
+(.)g(.)h(.)f(.)g(.)43 b Fc(7)0 1213 y Fe(acos)27 b(\(\))8
+b Fd(.)13 b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
+(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
+g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)34 b Fc(23)0
+1330 y Fe(acosh)27 b(\(\))c Fd(.)13 b(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g
+(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)
+g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)49
+b Fc(25)0 1446 y(adv)n(o)r(cacy)19 b Fd(.)13 b(.)g(.)h(.)f(.)g(.)g(.)g
+(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)
+g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)45
+b Fc(55)0 1562 y(Arc)n(himedes')25 b(constan)n(t)17 b
+Fd(.)c(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h
+(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)44
+b Fc(24)0 1678 y Fe(As\(\))27 b(\(\))8 b Fd(.)13 b(.)g(.)g(.)g(.)h(.)f
+(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
+g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
+(.)g(.)h(.)34 b Fc(11)0 1794 y Fe(ash)26 b(\(\))10 b
+Fd(.)k(.)f(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g
+(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)
+g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)37 b Fc(29)0
+1911 y Fe(asin)9 b Fd(.)14 b(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)
+g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g
+(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)
+35 b Fc(23)0 2027 y Fe(asin)27 b(\(\))8 b Fd(.)13 b(.)g(.)g(.)g(.)h(.)f
+(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
+g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
+(.)g(.)h(.)34 b Fc(23)0 2143 y Fe(asinh)27 b(\(\))c Fd(.)13
+b(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
+(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
+g(.)g(.)h(.)f(.)g(.)g(.)49 b Fc(25)0 2259 y Fe(atan)9
+b Fd(.)14 b(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g
+(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
+g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)35
+b Fc(24)0 2376 y Fe(atan)27 b(\(\))8 b Fd(.)13 b(.)g(.)g(.)g(.)h(.)f(.)
+g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
+(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
+g(.)h(.)34 b Fc(24)0 2492 y Fe(atanh)27 b(\(\))c Fd(.)13
+b(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
+(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
+g(.)g(.)h(.)f(.)g(.)g(.)49 b Fc(25)0 2745 y Fs(B)0 2878
+y Fe(basering)27 b(\(\))15 b Fd(.)f(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
+(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
+g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)41 b Fc(52)0
+2994 y Fe(binomial)27 b(\(\))15 b Fd(.)f(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)
+g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
+(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)41
+b Fc(30)0 3111 y Fe(boole)27 b(\(\))c Fd(.)13 b(.)g(.)g(.)g(.)g(.)g(.)h
+(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
+g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)49
+b Fc(27)0 3227 y Fe(boole)p 200 3227 24 4 v 29 w(1)7
+b Fd(.)13 b(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g
+(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)
+f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)33 b Fc(27)0
+3343 y Fe(boole)p 200 3343 V 29 w(2)7 b Fd(.)13 b(.)g(.)h(.)f(.)g(.)g
+(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
+g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h
+(.)f(.)g(.)33 b Fc(27)0 3459 y Fe(boole)p 200 3459 V
+29 w(and)20 b Fd(.)13 b(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g
+(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)
+f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)45 b Fc(27)0
+3576 y Fe(boole)p 200 3576 V 29 w(andc1)13 b Fd(.)i(.)e(.)g(.)h(.)f(.)g
+(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)
+g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)40
+b Fc(27)0 3692 y Fe(boole)p 200 3692 V 29 w(andc2)13
+b Fd(.)i(.)e(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)
+g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g
+(.)h(.)f(.)g(.)g(.)40 b Fc(27)0 3808 y Fe(boole)p 200
+3808 V 29 w(c1)22 b Fd(.)13 b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g
+(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)
+g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)48
+b Fc(27)0 3924 y Fe(boole)p 200 3924 V 29 w(c2)22 b Fd(.)13
+b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g
+(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)
+f(.)g(.)g(.)g(.)g(.)g(.)48 b Fc(27)0 4040 y Fe(boole)p
+200 4040 V 29 w(clr)20 b Fd(.)13 b(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
+(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
+g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)45
+b Fc(27)0 4157 y Fe(boole)p 200 4157 V 29 w(eqv)20 b
+Fd(.)13 b(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f
+(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
+g(.)g(.)g(.)h(.)f(.)g(.)g(.)45 b Fc(27)0 4273 y Fe(boole)p
+200 4273 V 29 w(nand)16 b Fd(.)e(.)g(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)
+g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
+(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)43 b Fc(27)0
+4389 y Fe(boole)p 200 4389 V 29 w(nor)20 b Fd(.)13 b(.)g(.)g(.)g(.)g(.)
+g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f
+(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
+45 b Fc(27)0 4505 y Fe(boole)p 200 4505 V 29 w(orc1)16
+b Fd(.)e(.)g(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)
+h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g
+(.)g(.)g(.)g(.)g(.)g(.)43 b Fc(27)0 4622 y Fe(boole)p
+200 4622 V 29 w(orc2)16 b Fd(.)e(.)g(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)
+g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
+(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)43 b Fc(27)0
+4738 y Fe(boole)p 200 4738 V 29 w(set)20 b Fd(.)13 b(.)g(.)g(.)g(.)g(.)
+g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f
+(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
+45 b Fc(27)0 4854 y Fe(boole)p 200 4854 V 29 w(xor)20
+b Fd(.)13 b(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f
+(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
+g(.)g(.)g(.)h(.)f(.)g(.)g(.)45 b Fc(27)0 5108 y Fs(C)0
+5240 y Fe(canonhom)27 b(\(\))22 b Fd(.)13 b(.)g(.)g(.)h(.)f(.)g(.)g(.)g
+(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)
+g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)47 b Fc(46,)27 b(52)0
+5357 y(Catalan's)h(constan)n(t)13 b Fd(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
+(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)
+g(.)h(.)f(.)g(.)g(.)g(.)g(.)40 b Fc(26)2031 848 y Fe(ceiling1)27
+b(\(\))15 b Fd(.)f(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h
+(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)
+g(.)g(.)g(.)g(.)g(.)h(.)f(.)41 b Fc(18)2031 964 y Fe(ceiling2)27
+b(\(\))15 b Fd(.)f(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h
+(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)
+g(.)g(.)g(.)g(.)g(.)h(.)f(.)41 b Fc(19)2031 1080 y Fe(cis)26
+b(\(\))10 b Fd(.)k(.)f(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
+(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
+g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)37
+b Fc(23)2031 1197 y Fe(cl_idecoded_float)10 b Fd(.)17
+b(.)c(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
+(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)36
+b Fc(31)2031 1313 y Fe(cl)p 2114 1313 V 29 w(abort)26
+b(\(\))21 b Fd(.)13 b(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g
+(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)
+g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)47 b Fc(64)2031 1429
+y Fe(cl)p 2114 1429 V 29 w(byte)7 b Fd(.)13 b(.)g(.)h(.)f(.)g(.)g(.)g
+(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)
+g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f
+(.)g(.)33 b Fc(28)2031 1545 y Fe(cl)p 2114 1545 V 29
+w(catalanconst)28 b(\(\))20 b Fd(.)13 b(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
+(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)
+h(.)f(.)g(.)g(.)46 b Fc(26)2031 1662 y Fe(cl)p 2114 1662
+V 29 w(compare)27 b(\(\))15 b Fd(.)f(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)
+g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
+(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)42 b Fc(16)2031
+1778 y Fe(cl)p 2114 1778 V 29 w(cos)p 2260 1778 V 29
+w(sin)26 b(\(\))21 b Fd(.)13 b(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g
+(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)
+g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)47 b Fc(23)2031 1894
+y Fe(cl)p 2114 1894 V 29 w(cos)p 2260 1894 V 29 w(sin)p
+2406 1894 V 29 w(t)22 b Fd(.)13 b(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
+(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
+g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)48 b Fc(23)2031
+2010 y Fe(cl)p 2114 2010 V 29 w(cosh)p 2299 2010 V 29
+w(sinh)26 b(\(\))16 b Fd(.)e(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
+g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
+(.)g(.)g(.)h(.)f(.)g(.)42 b Fc(25)2031 2127 y Fe(cl)p
+2114 2127 V 29 w(cosh)p 2299 2127 V 29 w(sinh)p 2484
+2127 V 29 w(t)17 b Fd(.)c(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h
+(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
+g(.)g(.)g(.)g(.)h(.)f(.)43 b Fc(25)2031 2243 y Fe(CL)p
+2114 2243 V 29 w(DEBUG)22 b Fd(.)13 b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
+(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)
+h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)48
+b Fc(63)2031 2359 y Fe(cl)p 2114 2359 V 29 w(decoded)p
+2416 2359 V 30 w(dfloat)22 b Fd(.)13 b(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g
+(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)
+g(.)g(.)g(.)h(.)f(.)47 b Fc(31)2031 2475 y Fe(cl)p 2114
+2475 V 29 w(decoded)p 2416 2475 V 30 w(ffloat)22 b Fd(.)13
+b(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
+(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)47
+b Fc(31)2031 2591 y Fe(cl)p 2114 2591 V 29 w(decoded)p
+2416 2591 V 30 w(float)6 b Fd(.)14 b(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)
+g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g
+(.)h(.)f(.)g(.)g(.)g(.)g(.)33 b Fc(31)2031 2708 y Fe(cl)p
+2114 2708 V 29 w(decoded)p 2416 2708 V 30 w(lfloat)22
+b Fd(.)13 b(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f
+(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)47
+b Fc(31)2031 2824 y Fe(cl)p 2114 2824 V 29 w(decoded)p
+2416 2824 V 30 w(sfloat)22 b Fd(.)13 b(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g
+(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)
+g(.)g(.)g(.)h(.)f(.)47 b Fc(31)2031 2940 y Fe(cl)p 2114
+2940 V 29 w(default)p 2416 2940 V 30 w(float)p 2641 2940
+V 29 w(format)11 b Fd(.)j(.)f(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g
+(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)37
+b Fc(32)2031 3056 y Fe(cl)p 2114 3056 V 29 w(default)p
+2416 3056 V 30 w(print)p 2641 3056 V 29 w(flags)14 b
+Fd(.)g(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g
+(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)40 b Fc(64)2031
+3173 y Fe(cl)p 2114 3173 V 29 w(default)p 2416 3173 V
+30 w(random)p 2680 3173 V 29 w(state)11 b Fd(.)j(.)f(.)h(.)f(.)g(.)g(.)
+g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g
+(.)h(.)37 b Fc(34)2031 3289 y Fe(cl)p 2114 3289 V 29
+w(DF)14 b Fd(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
+g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
+(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)41
+b Fc(9)2031 3405 y Fe(cl)p 2114 3405 V 29 w(double)p
+2377 3405 V 29 w(approx)27 b(\(\))c Fd(.)13 b(.)g(.)h(.)f(.)g(.)g(.)g
+(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)
+g(.)h(.)f(.)g(.)g(.)49 b Fc(11)2031 3521 y Fe(cl)p 2114
+3521 V 29 w(equal)p 2338 3521 V 29 w(hashcode)27 b(\(\))21
+b Fd(.)13 b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
+(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)46
+b Fc(16)2031 3638 y Fe(cl)p 2114 3638 V 29 w(eulerconst)28
+b(\(\))8 b Fd(.)13 b(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)
+g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f
+(.)g(.)g(.)34 b Fc(25)2031 3754 y Fe(cl)p 2114 3754 V
+29 w(F)8 b Fd(.)13 b(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)
+h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g
+(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)34
+b Fc(7,)27 b(9)2031 3870 y Fe(cl)p 2114 3870 V 29 w(FF)14
+b Fd(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)
+g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g
+(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)41
+b Fc(9)2031 3986 y Fe(cl)p 2114 3986 V 29 w(find)p 2299
+3986 V 29 w(modint)p 2562 3986 V 29 w(ring)27 b(\(\))21
+b Fd(.)13 b(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g
+(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)47 b Fc(45)2031
+4102 y Fe(cl)p 2114 4102 V 29 w(find)p 2299 4102 V 29
+w(univpoly)p 2640 4102 V 30 w(ring)26 b(\(\))15 b Fd(.)f(.)f(.)g(.)h(.)
+f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
+(.)g(.)g(.)42 b Fc(52)2031 4219 y Fe(cl)p 2114 4219 V
+29 w(float)22 b Fd(.)13 b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h
+(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
+g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)48 b
+Fc(32)2031 4335 y Fe(cl)p 2114 4335 V 29 w(float)p 2338
+4335 V 29 w(approx)27 b(\(\))8 b Fd(.)14 b(.)f(.)g(.)g(.)g(.)g(.)g(.)h
+(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)
+g(.)g(.)g(.)g(.)g(.)h(.)34 b Fc(11)2031 4451 y Fe(cl)p
+2114 4451 V 29 w(float)p 2338 4451 V 29 w(format)27 b(\(\))8
+b Fd(.)14 b(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h
+(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)34
+b Fc(32)2031 4567 y Fe(cl)p 2114 4567 V 29 w(free)p 2299
+4567 V 29 w(hook)26 b(\(\))16 b Fd(.)e(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h
+(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
+g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)42 b Fc(65)2031 4684
+y Fe(cl)p 2114 4684 V 29 w(hermite)27 b(\(\))15 b Fd(.)f(.)f(.)g(.)g(.)
+g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g
+(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)42
+b Fc(54)2031 4800 y Fe(cl)p 2114 4800 V 29 w(I)p 2182
+4800 V 28 w(to)p 2288 4800 V 29 w(int)26 b(\(\))7 b Fd(.)13
+b(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h
+(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
+g(.)33 b Fc(11)2031 4916 y Fe(cl)p 2114 4916 V 29 w(I)p
+2182 4916 V 28 w(to)p 2288 4916 V 29 w(long)26 b(\(\))c
+Fd(.)13 b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
+(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
+g(.)48 b Fc(11)2031 5032 y Fe(cl)p 2114 5032 V 29 w(I)p
+2182 5032 V 28 w(to)p 2288 5032 V 29 w(uint)26 b(\(\))c
+Fd(.)13 b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
+(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
+g(.)48 b Fc(11)2031 5149 y Fe(cl)p 2114 5149 V 29 w(I)p
+2182 5149 V 28 w(to)p 2288 5149 V 29 w(ulong)27 b(\(\))19
+b Fd(.)13 b(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f
+(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
+45 b Fc(11)2031 5265 y Fe(cl)p 2114 5265 V 29 w(laguerre)27
+b(\(\))13 b Fd(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
+(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)
+g(.)h(.)f(.)g(.)39 b Fc(54)p eop
+%%Page: 67 69
+67 68 bop 0 -116 a Fr(Index)3586 b(67)0 366 y Fe(cl)p
+83 366 24 4 v 29 w(legendre)27 b(\(\))13 b Fd(.)g(.)g(.)h(.)f(.)g(.)g
+(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
+g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)39 b
+Fc(54)0 483 y Fe(cl)p 83 483 V 29 w(LF)14 b Fd(.)f(.)g(.)g(.)h(.)f(.)g
+(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
+g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g
+(.)h(.)f(.)g(.)g(.)g(.)41 b Fc(9)0 599 y Fe(cl)p 83 599
+V 29 w(malloc)p 346 599 V 29 w(hook)27 b(\(\))11 b Fd(.)i(.)g(.)g(.)g
+(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)
+f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)37 b Fc(65)0
+715 y Fe(cl)p 83 715 V 29 w(N)16 b Fd(.)d(.)h(.)f(.)g(.)g(.)g(.)g(.)g
+(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)
+f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
+(.)g(.)g(.)g(.)g(.)44 b Fc(7)0 831 y Fe(cl)p 83 831 V
+29 w(number)22 b Fd(.)13 b(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g
+(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)
+f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)48 b
+Fc(7)0 948 y Fe(cl)p 83 948 V 29 w(pi)12 b Fd(.)h(.)g(.)g(.)g(.)h(.)f
+(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
+g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
+(.)g(.)h(.)f(.)g(.)38 b Fc(24)0 1064 y Fe(cl)p 83 1064
+V 29 w(R)16 b Fd(.)d(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)
+g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g
+(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)44
+b Fc(7)0 1180 y Fe(cl)p 83 1180 V 29 w(RA)14 b Fd(.)f(.)g(.)g(.)h(.)f
+(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
+g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
+(.)g(.)h(.)f(.)g(.)g(.)g(.)41 b Fc(7)0 1296 y Fe(cl)p
+83 1296 V 29 w(SF)14 b Fd(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g
+(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)
+g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
+(.)41 b Fc(9)0 1413 y Fe(cl)p 83 1413 V 29 w(string)27
+b(\(\))18 b Fd(.)13 b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h
+(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
+g(.)g(.)g(.)g(.)g(.)h(.)f(.)44 b Fc(48)0 1529 y Fe(cl)p
+83 1529 V 29 w(symbol)27 b(\(\))18 b Fd(.)13 b(.)g(.)g(.)g(.)h(.)f(.)g
+(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
+g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)44
+b Fc(49)0 1645 y Fe(cl)p 83 1645 V 29 w(tschebychev)28
+b(\(\))22 b Fd(.)13 b(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
+(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
+g(.)49 b Fc(54)0 1761 y Fe(cl)p 83 1761 V 29 w(zeta)26
+b(\(\))e Fd(.)13 b(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g
+(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)
+f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)49 b Fc(26)0 1877 y Fe(coeff)27
+b(\(\))c Fd(.)13 b(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g
+(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)
+g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)49 b Fc(54)0
+1994 y(comparison)17 b Fd(.)c(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
+(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)
+f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)43 b Fc(16)0
+2110 y(compiler)26 b(options)14 b Fd(.)g(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)
+g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
+(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)41 b Fc(57)0 2226
+y Fe(complex)27 b(\(\))17 b Fd(.)d(.)f(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g
+(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)
+f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)44 b
+Fc(15)0 2342 y(complex)25 b(n)n(um)n(b)r(er)6 b Fd(.)11
+b(.)i(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
+(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)33
+b Fc(7,)26 b(10)0 2459 y Fe(conjugate)i(\(\))12 b Fd(.)h(.)h(.)f(.)g(.)
+g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
+(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)39
+b Fc(16)0 2575 y(con)n(v)n(ersion)22 b Fd(.)13 b(.)g(.)h(.)f(.)g(.)g(.)
+g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g
+(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)48
+b Fc(10,)27 b(32)0 2691 y Fe(cos)f(\(\))10 b Fd(.)k(.)f(.)h(.)f(.)g(.)g
+(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
+g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h
+(.)f(.)g(.)g(.)37 b Fc(23)0 2807 y Fe(cosh)27 b(\(\))8
+b Fd(.)13 b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
+(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
+g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)34 b Fc(24)0
+2924 y Fe(create)27 b(\(\))20 b Fd(.)13 b(.)h(.)f(.)g(.)g(.)g(.)g(.)g
+(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)
+f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)46
+b Fc(52)0 3040 y(customizing)8 b Fd(.)13 b(.)h(.)f(.)g(.)g(.)g(.)g(.)g
+(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)
+f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)35
+b Fc(64)0 3302 y Fs(D)0 3434 y Fe(debug)p 200 3434 V
+29 w(print)27 b(\(\))13 b Fd(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)
+f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
+(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)39 b Fc(63)0 3551 y(debugging)19
+b Fd(.)13 b(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g
+(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)
+f(.)g(.)g(.)g(.)g(.)g(.)h(.)45 b Fc(62)0 3667 y Fe(decode)p
+239 3667 V 30 w(float)26 b(\(\))10 b Fd(.)k(.)f(.)g(.)g(.)h(.)f(.)g(.)g
+(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
+g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)37 b Fc(31)0 3783
+y Fe(degree)27 b(\(\))20 b Fd(.)13 b(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)
+f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g
+(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)46
+b Fc(54)0 3899 y Fe(denominator)28 b(\(\))7 b Fd(.)14
+b(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
+(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)
+34 b Fc(15)0 4016 y Fe(deposit)p 278 4016 V 30 w(field)27
+b(\(\))8 b Fd(.)13 b(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)
+g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f
+(.)g(.)g(.)34 b Fc(28)0 4132 y Fe(deriv)27 b(\(\))c Fd(.)13
+b(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
+(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
+g(.)g(.)h(.)f(.)g(.)g(.)49 b Fc(54)0 4248 y Fe(div)26
+b(\(\))10 b Fd(.)k(.)f(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
+(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)
+g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)37
+b Fc(47)0 4364 y Fe(doublefactorial)29 b(\(\))14 b Fd(.)g(.)f(.)g(.)g
+(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
+g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)41 b Fc(30)0 4480
+y Fe(dpb)26 b(\(\))10 b Fd(.)k(.)f(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f
+(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
+g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)37
+b Fc(28)0 4742 y Fs(E)0 4875 y Fe(equal)27 b(\(\))12
+b Fd(.)h(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)
+g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g
+(.)h(.)f(.)g(.)g(.)38 b Fc(48,)27 b(49)0 4991 y Fe(etract)g(\(\))20
+b Fd(.)13 b(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g
+(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)
+g(.)g(.)g(.)g(.)g(.)g(.)h(.)46 b Fc(46)0 5108 y(Euler's)27
+b(constan)n(t)21 b Fd(.)13 b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)
+g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f
+(.)g(.)g(.)g(.)g(.)g(.)48 b Fc(25)0 5224 y Fe(evenp)27
+b(\(\))c Fd(.)13 b(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g
+(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)
+g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)49 b Fc(29)0
+5340 y(exact)26 b(n)n(um)n(b)r(er)15 b Fd(.)10 b(.)k(.)f(.)g(.)g(.)g(.)
+g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g
+(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)42
+b Fc(8)2031 366 y Fe(exp)26 b(\(\))10 b Fd(.)k(.)f(.)h(.)f(.)g(.)g(.)g
+(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)
+g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f
+(.)g(.)g(.)37 b Fc(22)2031 483 y Fe(exp1)27 b(\(\))8
+b Fd(.)13 b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
+(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
+g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)34 b Fc(23)2031
+599 y Fe(expt)27 b(\(\))21 b Fd(.)13 b(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g
+(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)
+g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)48 b Fc(14,)26 b(22,)h(47)2031
+715 y Fe(expt)p 2192 715 V 29 w(pos)f(\(\))16 b Fd(.)e(.)f(.)g(.)g(.)h
+(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
+g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)43 b Fc(14,)26 b(47,)h(53)2031
+831 y Fe(exquo)g(\(\))c Fd(.)13 b(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
+(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
+g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)49
+b Fc(14)2031 1070 y Fs(F)2031 1203 y Fe(factorial)28
+b(\(\))12 b Fd(.)h(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
+(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)
+h(.)f(.)g(.)g(.)g(.)g(.)39 b Fc(30)2031 1319 y Fe(fceiling)27
+b(\(\))15 b Fd(.)f(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h
+(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)
+g(.)g(.)g(.)g(.)g(.)h(.)f(.)41 b Fc(19)2031 1436 y Fe(fceiling2)28
+b(\(\))12 b Fd(.)h(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
+(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)
+h(.)f(.)g(.)g(.)g(.)g(.)39 b Fc(20)2031 1552 y Fe(ffloor)27
+b(\(\))20 b Fd(.)13 b(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
+(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
+g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)46 b Fc(19)2031
+1668 y Fe(ffloor2)27 b(\(\))17 b Fd(.)d(.)f(.)g(.)h(.)f(.)g(.)g(.)g(.)g
+(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)
+h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)44
+b Fc(20)2031 1784 y(Fib)r(onacci)27 b(n)n(um)n(b)r(er)7
+b Fd(.)k(.)i(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)
+g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)33
+b Fc(61)2031 1900 y Fe(finalize)27 b(\(\))15 b Fd(.)f(.)f(.)g(.)g(.)g
+(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)
+f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)41
+b Fc(53)2031 2017 y Fe(float)p 2231 2017 V 29 w(digits)27
+b(\(\))10 b Fd(.)k(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f
+(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
+g(.)g(.)g(.)37 b Fc(31)2031 2133 y Fe(float)p 2231 2133
+V 29 w(epsilon)28 b(\(\))8 b Fd(.)13 b(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g
+(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
+g(.)g(.)g(.)h(.)f(.)g(.)g(.)34 b Fc(33)2031 2249 y Fe(float)p
+2231 2249 V 29 w(exponent)28 b(\(\))22 b Fd(.)13 b(.)h(.)f(.)g(.)g(.)g
+(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)
+g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)49 b Fc(31)2031 2365
+y Fe(float)p 2231 2365 V 29 w(negative)p 2572 2365 V
+30 w(epsilon)28 b(\(\))7 b Fd(.)13 b(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)
+h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)34
+b Fc(33)2031 2482 y Fe(float)p 2231 2482 V 29 w(precision)28
+b(\(\))20 b Fd(.)13 b(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f
+(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
+46 b Fc(31)2031 2598 y Fe(float)p 2231 2598 V 29 w(radix)27
+b(\(\))13 b Fd(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
+(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)
+g(.)h(.)f(.)g(.)39 b Fc(31)2031 2714 y Fe(float)p 2231
+2714 V 29 w(sign)27 b(\(\))22 b Fd(.)13 b(.)g(.)g(.)g(.)h(.)f(.)g(.)g
+(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
+g(.)g(.)h(.)f(.)g(.)g(.)g(.)48 b Fc(31,)27 b(32)2031
+2830 y(\015oating-p)r(oin)n(t)f(n)n(um)n(b)r(er)14 b
+Fd(.)d(.)i(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f
+(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)41
+b Fc(8)2031 2947 y Fe(floor1)27 b(\(\))20 b Fd(.)13 b(.)h(.)f(.)g(.)g
+(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
+g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h
+(.)46 b Fc(18)2031 3063 y Fe(floor2)27 b(\(\))20 b Fd(.)13
+b(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f
+(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
+g(.)g(.)g(.)g(.)h(.)46 b Fc(19)2031 3179 y Fe(fprint)27
+b(\(\))9 b Fd(.)14 b(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)
+g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f
+(.)g(.)g(.)g(.)g(.)g(.)h(.)35 b Fc(47,)27 b(54)2031 3295
+y Fe(fround)g(\(\))20 b Fd(.)13 b(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f
+(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
+g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)46
+b Fc(19)2031 3411 y Fe(fround2)27 b(\(\))17 b Fd(.)d(.)f(.)g(.)h(.)f(.)
+g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
+(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)44
+b Fc(20)2031 3528 y Fe(ftruncate)28 b(\(\))12 b Fd(.)h(.)h(.)f(.)g(.)g
+(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
+g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)39
+b Fc(19)2031 3644 y Fe(ftruncate2)28 b(\(\))10 b Fd(.)j(.)g(.)g(.)h(.)f
+(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
+g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)36
+b Fc(20)2031 3883 y Fs(G)2031 4016 y Fc(garbage)27 b(collection)15
+b Fd(.)f(.)g(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)
+h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)41
+b Fc(55,)27 b(56)2031 4132 y Fe(gcd)f(\(\))10 b Fd(.)k(.)f(.)h(.)f(.)g
+(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)
+g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g
+(.)h(.)f(.)g(.)g(.)37 b Fc(29)2031 4248 y(GMP)15 b Fd(.)f(.)f(.)g(.)g
+(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)
+f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
+(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)42 b Fc(2)2031 4487 y
+Fs(H)2031 4620 y Fc(header)26 b(\014les)19 b Fd(.)13
+b(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
+(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)
+g(.)h(.)f(.)g(.)45 b Fc(57)2031 4736 y(Hermite)25 b(p)r(olynomial)9
+b Fd(.)k(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
+g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)36
+b Fc(54)2031 4975 y Fs(I)2031 5108 y Fe(imagpart)27 b(\(\))15
+b Fd(.)f(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
+g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
+(.)g(.)g(.)h(.)f(.)41 b Fc(15)2031 5224 y(include)26
+b(\014les)10 b Fd(.)j(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g
+(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)
+g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)37 b Fc(57)2031 5340
+y(Input/Output)20 b Fd(.)13 b(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
+(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
+g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)49 b Fc(37)p eop
+%%Page: 68 70
+68 69 bop 0 -116 a Fr(Index)3586 b(68)0 366 y Fc(installation)23
+b Fd(.)13 b(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g
+(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)
+g(.)g(.)g(.)h(.)f(.)g(.)g(.)48 b Fc(5)0 483 y(in)n(teger)9
+b Fd(.)14 b(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g
+(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)
+g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)36 b
+Fc(7)0 599 y Fe(integer)p 278 599 24 4 v 30 w(decode)p
+542 599 V 29 w(float)27 b(\(\))12 b Fd(.)i(.)f(.)g(.)g(.)h(.)f(.)g(.)g
+(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
+39 b Fc(32)0 715 y Fe(integer)p 278 715 V 30 w(length)27
+b(\(\))22 b Fd(.)13 b(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
+(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
+g(.)49 b Fc(29)0 831 y Fe(isqrt)27 b(\(\))c Fd(.)13 b(.)g(.)g(.)g(.)g
+(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)
+f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g
+(.)g(.)49 b Fc(21)0 1093 y Fs(L)0 1226 y Fc(Laguerre)26
+b(p)r(olynomial)14 b Fd(.)g(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
+(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)
+h(.)40 b Fc(54)0 1342 y Fe(lcm)26 b(\(\))10 b Fd(.)k(.)f(.)h(.)f(.)g(.)
+g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
+(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)
+h(.)f(.)g(.)g(.)37 b Fc(30)0 1458 y Fe(ldb)26 b(\(\))10
+b Fd(.)k(.)f(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)
+g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f
+(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)37 b Fc(28)0
+1575 y Fe(ldb)p 122 1575 V 29 w(test)26 b(\(\))21 b Fd(.)13
+b(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h
+(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
+g(.)g(.)g(.)47 b Fc(28)0 1691 y Fe(least)p 200 1691 V
+29 w(negative)p 541 1691 V 30 w(float)27 b(\(\))12 b
+Fd(.)i(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
+(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)39 b Fc(33)0 1807
+y Fe(least)p 200 1807 V 29 w(positive)p 541 1807 V 30
+w(float)27 b(\(\))12 b Fd(.)i(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g
+(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)39
+b Fc(33)0 1923 y(Legende)26 b(p)r(olynomial)8 b Fd(.)13
+b(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
+(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)34
+b Fc(54)0 2040 y Fe(length)27 b(\(\))20 b Fd(.)13 b(.)h(.)f(.)g(.)g(.)g
+(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)
+g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)46
+b Fc(48)0 2156 y Fe(ln)26 b(\(\))13 b Fd(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)
+h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g
+(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)
+g(.)g(.)g(.)40 b Fc(22)0 2272 y Fe(log)26 b(\(\))10 b
+Fd(.)k(.)f(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g
+(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)
+g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)37 b Fc(22)0
+2388 y Fe(logand)27 b(\(\))20 b Fd(.)13 b(.)h(.)f(.)g(.)g(.)g(.)g(.)g
+(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)
+f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)46
+b Fc(27)0 2505 y Fe(logandc1)27 b(\(\))15 b Fd(.)f(.)f(.)g(.)g(.)g(.)g
+(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)
+g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)41
+b Fc(27)0 2621 y Fe(logandc2)27 b(\(\))15 b Fd(.)f(.)f(.)g(.)g(.)g(.)g
+(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)
+g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)41
+b Fc(27)0 2737 y Fe(logbitp)27 b(\(\))17 b Fd(.)d(.)f(.)g(.)h(.)f(.)g
+(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
+g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)44
+b Fc(28)0 2853 y Fe(logcount)27 b(\(\))15 b Fd(.)f(.)f(.)g(.)g(.)g(.)g
+(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)
+g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)41
+b Fc(28)0 2969 y Fe(logeqv)27 b(\(\))20 b Fd(.)13 b(.)h(.)f(.)g(.)g(.)g
+(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)
+g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)46
+b Fc(27)0 3086 y Fe(logior)27 b(\(\))20 b Fd(.)13 b(.)h(.)f(.)g(.)g(.)g
+(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)
+g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)46
+b Fc(27)0 3202 y Fe(lognand)27 b(\(\))17 b Fd(.)d(.)f(.)g(.)h(.)f(.)g
+(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
+g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)44
+b Fc(27)0 3318 y Fe(lognor)27 b(\(\))20 b Fd(.)13 b(.)h(.)f(.)g(.)g(.)g
+(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)
+g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)46
+b Fc(27)0 3434 y Fe(lognot)27 b(\(\))20 b Fd(.)13 b(.)h(.)f(.)g(.)g(.)g
+(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)
+g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)46
+b Fc(27)0 3551 y Fe(logorc1)27 b(\(\))17 b Fd(.)d(.)f(.)g(.)h(.)f(.)g
+(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
+g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)44
+b Fc(27)0 3667 y Fe(logorc2)27 b(\(\))17 b Fd(.)d(.)f(.)g(.)h(.)f(.)g
+(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
+g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)44
+b Fc(27)0 3783 y Fe(logp)27 b(\(\))8 b Fd(.)13 b(.)g(.)g(.)g(.)h(.)f(.)
+g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
+(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
+g(.)h(.)34 b Fc(30)0 3899 y Fe(logtest)27 b(\(\))17 b
+Fd(.)d(.)f(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
+(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)
+h(.)f(.)g(.)g(.)g(.)44 b Fc(28)0 4016 y Fe(logxor)27
+b(\(\))20 b Fd(.)13 b(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
+(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
+g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)46 b Fc(27)0
+4277 y Fs(M)0 4410 y Fe(make)11 b Fd(.)j(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)
+g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
+(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)
+h(.)f(.)g(.)g(.)38 b Fc(3)0 4526 y Fe(mask)p 161 4526
+V 29 w(field)27 b(\(\))15 b Fd(.)f(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g
+(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)
+g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)42 b Fc(28)0 4643
+y Fe(max)26 b(\(\))10 b Fd(.)k(.)f(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f
+(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
+g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)37
+b Fc(17)0 4759 y Fe(min)26 b(\(\))10 b Fd(.)k(.)f(.)h(.)f(.)g(.)g(.)g
+(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)
+h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f
+(.)g(.)g(.)37 b Fc(17)0 4875 y Fe(minus1)27 b(\(\))20
+b Fd(.)13 b(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g
+(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)
+g(.)g(.)g(.)g(.)g(.)g(.)h(.)46 b Fc(13)0 4991 y Fe(minusp)27
+b(\(\))20 b Fd(.)13 b(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
+(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
+g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)46 b Fc(16)0
+5108 y Fe(mod)26 b(\(\))10 b Fd(.)k(.)f(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h
+(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
+g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)37
+b Fc(21)0 5224 y(mo)r(difying)26 b(op)r(erators)e Fd(.)13
+b(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
+(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)49
+b Fc(35)0 5340 y(mo)r(dular)25 b(in)n(teger)8 b Fd(.)14
+b(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
+(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)
+35 b Fc(45)2031 366 y Fe(modulus)18 b Fd(.)d(.)e(.)g(.)g(.)g(.)h(.)f(.)
+g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
+(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
+45 b Fc(46)2031 483 y Fe(monomial)27 b(\(\))15 b Fd(.)f(.)f(.)g(.)g(.)g
+(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)
+f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)41
+b Fc(52)2031 599 y(Mon)n(tgomery)25 b(m)n(ultiplication)c
+Fd(.)14 b(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h
+(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)48 b Fc(45)2031 715 y
+Fe(most)p 2192 715 V 29 w(negative)p 2533 715 V 30 w(float)27
+b(\(\))15 b Fd(.)e(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
+(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)41
+b Fc(33)2031 831 y Fe(most)p 2192 831 V 29 w(positive)p
+2533 831 V 30 w(float)27 b(\(\))15 b Fd(.)e(.)g(.)h(.)f(.)g(.)g(.)g(.)g
+(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)
+f(.)41 b Fc(33)2031 1151 y Fs(N)2031 1284 y Fe(numerator)28
+b(\(\))12 b Fd(.)h(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
+(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)
+h(.)f(.)g(.)g(.)g(.)g(.)39 b Fc(15)2031 1604 y Fs(O)2031
+1737 y Fe(oddp)27 b(\(\))8 b Fd(.)13 b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
+(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)
+g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)34
+b Fc(29)2031 1853 y Fe(one)26 b(\(\))17 b Fd(.)d(.)f(.)g(.)g(.)g(.)g(.)
+h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g
+(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)43
+b Fc(46,)27 b(52)2031 1969 y Fe(operator)g(!=)f(\(\))16
+b Fd(.)e(.)f(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)
+g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)43 b Fc(16,)27 b(46,)f(47,)h(53)2031
+2086 y Fe(operator)g(&)f(\(\))17 b Fd(.)c(.)g(.)h(.)f(.)g(.)g(.)g(.)g
+(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)
+f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)43 b Fc(27)2031
+2202 y Fe(operator)27 b(&=)f(\(\))14 b Fd(.)g(.)f(.)g(.)g(.)h(.)f(.)g
+(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)
+g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)41 b Fc(35)2031
+2318 y Fe(operator)27 b(\(\))f(\(\))14 b Fd(.)g(.)f(.)g(.)g(.)h(.)f(.)g
+(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)
+g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)41 b Fc(54)2031
+2434 y Fe(operator)27 b(*)f(\(\))12 b Fd(.)i(.)f(.)g(.)g(.)h(.)f(.)g(.)
+g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
+(.)g(.)g(.)h(.)f(.)39 b Fc(13,)26 b(47,)h(53)2031 2550
+y Fe(operator)g(*=)f(\(\))14 b Fd(.)g(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)g
+(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)
+g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)41 b Fc(35)2031 2667
+y Fe(operator)27 b(-)f(\(\))12 b Fd(.)i(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)g
+(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)
+g(.)h(.)f(.)39 b Fc(13,)26 b(46,)h(53)2031 2783 y Fe(operator)g(--)f
+(\(\))14 b Fd(.)g(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f
+(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
+g(.)g(.)g(.)g(.)41 b Fc(36)2031 2899 y Fe(operator)27
+b(-=)f(\(\))14 b Fd(.)g(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h
+(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
+g(.)g(.)g(.)g(.)g(.)41 b Fc(35)2031 3015 y Fe(operator)27
+b(/)f(\(\))17 b Fd(.)c(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
+(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
+g(.)g(.)h(.)f(.)g(.)g(.)43 b Fc(14)2031 3132 y Fe(operator)27
+b(/=)f(\(\))14 b Fd(.)g(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h
+(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
+g(.)g(.)g(.)g(.)g(.)41 b Fc(35)2031 3248 y Fe(operator)27
+b(==)f(\(\))16 b Fd(.)e(.)f(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f
+(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)43 b Fc(16,)27
+b(46,)f(47,)h(53)2031 3364 y Fe(operator)g([])f(\(\))14
+b Fd(.)g(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
+g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g
+(.)g(.)41 b Fc(48)2031 3480 y Fe(operator)27 b(|)f(\(\))17
+b Fd(.)c(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)
+g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f
+(.)g(.)g(.)43 b Fc(27)2031 3597 y Fe(operator)27 b(|=)f(\(\))14
+b Fd(.)g(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
+g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g
+(.)g(.)41 b Fc(35)2031 3713 y Fe(operator)27 b(~)f(\(\))17
+b Fd(.)c(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)
+g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f
+(.)g(.)g(.)43 b Fc(27)2031 3829 y Fe(operator)27 b(+)f(\(\))12
+b Fd(.)i(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)
+g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)39
+b Fc(13,)26 b(46,)h(53)2031 3945 y Fe(operator)g(+=)f(\(\))14
+b Fd(.)g(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
+g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g
+(.)g(.)41 b Fc(35)2031 4061 y Fe(operator)27 b(++)f(\(\))14
+b Fd(.)g(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
+g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g
+(.)g(.)41 b Fc(36)2031 4178 y Fe(operator)27 b(>)f(\(\))17
+b Fd(.)c(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)
+g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f
+(.)g(.)g(.)43 b Fc(16)2031 4294 y Fe(operator)27 b(>=)f(\(\))14
+b Fd(.)g(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
+g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g
+(.)g(.)41 b Fc(16)2031 4410 y Fe(operator)27 b(>>)f(\(\))21
+b Fd(.)13 b(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g
+(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)47
+b Fc(29,)27 b(47)2031 4526 y Fe(operator)g(>>=)g(\(\))11
+b Fd(.)j(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)
+g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
+(.)38 b Fc(35)2031 4643 y Fe(operator)27 b(^)f(\(\))17
+b Fd(.)c(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)
+g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f
+(.)g(.)g(.)43 b Fc(27)2031 4759 y Fe(operator)27 b(^=)f(\(\))14
+b Fd(.)g(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
+g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g
+(.)g(.)41 b Fc(35)2031 4875 y Fe(operator)27 b(<)f(\(\))17
+b Fd(.)c(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)
+g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f
+(.)g(.)g(.)43 b Fc(16)2031 4991 y Fe(operator)27 b(<=)f(\(\))14
+b Fd(.)g(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
+g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g
+(.)g(.)41 b Fc(16)2031 5108 y Fe(operator)27 b(<<)f(\(\))10
+b Fd(.)k(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)
+g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)37 b
+Fc(29,)26 b(47,)h(54)2031 5224 y Fe(operator)g(<<=)g(\(\))11
+b Fd(.)j(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)
+g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
+(.)38 b Fc(35)2031 5340 y Fe(ord2)27 b(\(\))8 b Fd(.)13
+b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
+(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)
+h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)34 b Fc(29)p eop
+%%Page: 69 71
+69 70 bop 0 -116 a Fr(Index)3586 b(69)0 366 y Fs(P)0
+499 y Fe(phase)27 b(\(\))c Fd(.)13 b(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
+g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
+(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)49
+b Fc(22)0 616 y(pi)21 b Fd(.)13 b(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g
+(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)
+g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
+(.)g(.)g(.)g(.)48 b Fc(24)0 732 y Fe(plus1)27 b(\(\))c
+Fd(.)13 b(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f
+(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
+g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)49 b Fc(13)0 848 y Fe(plusp)27
+b(\(\))c Fd(.)13 b(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g
+(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)
+g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)49 b Fc(17)0
+964 y(p)r(olynomial)21 b Fd(.)13 b(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h
+(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
+g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)48 b
+Fc(50)0 1080 y(p)r(ortabilit)n(y)11 b Fd(.)j(.)f(.)g(.)g(.)g(.)h(.)f(.)
+g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
+(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)38
+b Fc(55)0 1197 y Fe(power2p)27 b(\(\))17 b Fd(.)d(.)f(.)g(.)h(.)f(.)g
+(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
+g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)44
+b Fc(29)0 1313 y(prin)n(ting)22 b Fd(.)13 b(.)g(.)g(.)g(.)h(.)f(.)g(.)g
+(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
+g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)49
+b Fc(37)0 1529 y Fs(R)0 1662 y Fe(random)27 b(\(\))20
+b Fd(.)13 b(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g
+(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)
+g(.)g(.)g(.)g(.)g(.)g(.)h(.)46 b Fc(46)0 1778 y Fe(random)p
+239 1778 24 4 v 30 w(F)25 b(\(\))c Fd(.)13 b(.)g(.)h(.)f(.)g(.)g(.)g(.)
+g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g
+(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)47
+b Fc(35)0 1894 y Fe(random)p 239 1894 V 30 w(I)25 b(\(\))c
+Fd(.)13 b(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g
+(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)
+f(.)g(.)g(.)g(.)g(.)47 b Fc(34)0 2010 y Fe(random)p 239
+2010 V 30 w(R)25 b(\(\))c Fd(.)13 b(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h
+(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)
+g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)47 b Fc(35)0
+2127 y Fe(random32)27 b(\(\))15 b Fd(.)f(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)
+g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
+(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)41
+b Fc(34)0 2243 y Fe(rational)27 b(\(\))15 b Fd(.)f(.)f(.)g(.)g(.)g(.)g
+(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)
+g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)41
+b Fc(33)0 2359 y(rational)27 b(n)n(um)n(b)r(er)7 b Fd(.)k(.)i(.)h(.)f
+(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
+g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)34
+b Fc(7)0 2475 y Fe(rationalize)28 b(\(\))7 b Fd(.)14
+b(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
+(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)
+34 b Fc(34)0 2591 y(reading)15 b Fd(.)e(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g
+(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)
+g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)41
+b Fc(37)0 2708 y(real)27 b(n)n(um)n(b)r(er)7 b Fd(.)k(.)i(.)g(.)g(.)g
+(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)
+h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g
+(.)34 b Fc(7)0 2824 y Fe(realpart)27 b(\(\))15 b Fd(.)f(.)f(.)g(.)g(.)g
+(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)
+f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)41
+b Fc(15)0 2940 y Fe(recip)27 b(\(\))12 b Fd(.)h(.)g(.)g(.)h(.)f(.)g(.)g
+(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)
+g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)38
+b Fc(14,)27 b(47)0 3056 y(reference)g(coun)n(ting)20
+b Fd(.)14 b(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h
+(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)47
+b Fc(55)0 3173 y Fe(rem)26 b(\(\))10 b Fd(.)k(.)f(.)h(.)f(.)g(.)g(.)g
+(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)
+h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f
+(.)g(.)g(.)37 b Fc(21)0 3289 y(represen)n(tation)20 b
+Fd(.)13 b(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
+(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)
+h(.)f(.)g(.)46 b Fc(37)0 3405 y(Riemann's)25 b(zeta)18
+b Fd(.)c(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
+g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
+(.)g(.)45 b Fc(26)0 3521 y(ring)21 b Fd(.)14 b(.)f(.)g(.)g(.)g(.)g(.)g
+(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)
+f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
+(.)g(.)g(.)g(.)g(.)48 b Fc(45)0 3638 y Fe(ring)27 b(\(\))8
+b Fd(.)13 b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
+(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
+g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)34 b Fc(53)0
+3754 y Fe(ring\(\))22 b Fd(.)13 b(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g
+(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)
+g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)47
+b Fc(46)0 3870 y Fe(rootp)27 b(\(\))c Fd(.)13 b(.)g(.)g(.)g(.)g(.)g(.)h
+(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
+g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)49
+b Fc(21)0 3986 y Fe(round1)27 b(\(\))20 b Fd(.)13 b(.)h(.)f(.)g(.)g(.)g
+(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)
+g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)46
+b Fc(18)0 4102 y Fe(round2)27 b(\(\))20 b Fd(.)13 b(.)h(.)f(.)g(.)g(.)g
+(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)
+g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)46
+b Fc(19)0 4219 y(rounding)6 b Fd(.)13 b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
+(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)
+g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)33
+b Fc(17)0 4335 y(rounding)25 b(error)16 b Fd(.)f(.)e(.)g(.)g(.)g(.)g(.)
+g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f
+(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)44
+b Fc(8)0 4451 y(Rubik's)25 b(cub)r(e)d Fd(.)13 b(.)g(.)h(.)f(.)g(.)g(.)
+g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g
+(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)49
+b Fc(11)0 4667 y Fs(S)0 4800 y Fe(scale)p 200 4800 V
+29 w(float)27 b(\(\))13 b Fd(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)
+f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
+(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)39 b Fc(30)2031 366 y(Sc)n(h\177)-38
+b(onhage-Strassen)15 b Fd(.)e(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f
+(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
+g(.)g(.)g(.)42 b Fc(56)2031 483 y(Sc)n(h\177)-38 b(onhage-Strassen)26
+b(m)n(ultiplication)10 b Fd(.)j(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
+(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)37 b Fc(2)2031 599 y Fe(sed)13
+b Fd(.)h(.)f(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
+g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h
+(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)41
+b Fc(3)2031 715 y Fe(set)p 2153 715 V 29 w(coeff)27 b(\(\))18
+b Fd(.)13 b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
+(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
+g(.)g(.)h(.)f(.)44 b Fc(53)2031 831 y Fe(signum)27 b(\(\))20
+b Fd(.)13 b(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g
+(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)
+g(.)g(.)g(.)g(.)g(.)g(.)h(.)46 b Fc(15)2031 948 y Fe(sin)26
+b(\(\))10 b Fd(.)k(.)f(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
+(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
+g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)37
+b Fc(23)2031 1064 y Fe(sinh)27 b(\(\))8 b Fd(.)13 b(.)g(.)g(.)g(.)h(.)f
+(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
+g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
+(.)g(.)h(.)34 b Fc(24)2031 1180 y Fe(sqrt)27 b(\(\))8
+b Fd(.)13 b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
+(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
+g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)34 b Fc(21)2031
+1296 y Fe(sqrtp)27 b(\(\))c Fd(.)13 b(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g
+(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)
+g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)49
+b Fc(21)2031 1413 y Fe(square)27 b(\(\))16 b Fd(.)d(.)g(.)g(.)h(.)f(.)g
+(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)
+g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)43 b Fc(13,)26
+b(47,)h(53)2031 1529 y(string)8 b Fd(.)14 b(.)f(.)g(.)g(.)g(.)g(.)g(.)h
+(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
+g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
+(.)g(.)g(.)35 b Fc(48)2031 1645 y Fe(strlen)27 b(\(\))20
+b Fd(.)13 b(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g
+(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)
+g(.)g(.)g(.)g(.)g(.)g(.)h(.)46 b Fc(48)2031 1761 y(sym)n(b)r(ol)19
+b Fd(.)13 b(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
+(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)
+g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)46 b Fc(49)2031
+1877 y(sym)n(b)r(olic)25 b(t)n(yp)r(e)8 b Fd(.)13 b(.)g(.)g(.)g(.)g(.)g
+(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)
+f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)35
+b Fc(48)2031 2143 y Fs(T)2031 2276 y Fe(tan)26 b(\(\))10
+b Fd(.)k(.)f(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)
+g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f
+(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)37 b Fc(23)2031
+2392 y Fe(tanh)27 b(\(\))8 b Fd(.)13 b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
+(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)
+g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)34
+b Fc(25)2031 2508 y Fe(The\(\))27 b(\(\))c Fd(.)13 b(.)g(.)g(.)g(.)g(.)
+g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f
+(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
+g(.)49 b Fc(11)2031 2625 y(transcenden)n(tal)26 b(functions)18
+b Fd(.)c(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)
+g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)45 b Fc(22)2031
+2741 y Fe(truncate1)28 b(\(\))12 b Fd(.)h(.)h(.)f(.)g(.)g(.)g(.)g(.)g
+(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)
+g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)39 b
+Fc(18)2031 2857 y Fe(truncate2)28 b(\(\))12 b Fd(.)h(.)h(.)f(.)g(.)g(.)
+g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g
+(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)39
+b Fc(19)2031 2973 y(Tsc)n(heb)n(yc)n(hev)25 b(p)r(olynomial)18
+b Fd(.)13 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h
+(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)44 b Fc(54)2031
+3239 y Fs(U)2031 3372 y Fc(under\015o)n(w)9 b Fd(.)k(.)g(.)g(.)g(.)g(.)
+h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g
+(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)
+g(.)36 b Fc(64)2031 3488 y(univ)l(ariate)26 b(p)r(olynomial)11
+b Fd(.)i(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)
+h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)38
+b Fc(50)2031 3754 y Fs(W)2031 3887 y Fe(WANT)p 2192 3887
+V 29 w(OBFUSCATING)p 2650 3887 V 31 w(OPERATORS)15 b
+Fd(.)g(.)e(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
+(.)g(.)g(.)g(.)h(.)41 b Fc(35)2031 4152 y Fs(X)2031 4285
+y Fe(xgcd)27 b(\(\))8 b Fd(.)13 b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
+(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)
+h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)34
+b Fc(30)2031 4551 y Fs(Z)2031 4684 y Fe(zero)27 b(\(\))14
+b Fd(.)f(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)
+h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f
+(.)g(.)g(.)g(.)g(.)g(.)41 b Fc(46,)27 b(52)2031 4800
+y Fe(zerop)g(\(\))18 b Fd(.)c(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g
+(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)
+g(.)g(.)g(.)h(.)f(.)g(.)45 b Fc(16,)26 b(47,)h(53)p eop
+%%Page: -1 72
+-1 71 bop 3875 -116 a Fr(i)0 366 y Fo(T)-13 b(able)31
+b(of)f(Con)l(ten)l(ts)0 715 y Fs(1)135 b(In)l(tro)t(duction)40
 b Fb(.)20 b(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f
 (.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)
-f(.)85 b Fq(1)0 995 y(2)135 b(Installation)14 b Fb(.)22
+f(.)85 b Fs(1)0 995 y(2)135 b(Installation)14 b Fb(.)22
 b(.)d(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f
 (.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)
-f(.)59 b Fq(3)299 1151 y Fp(2.1)92 b(Prerequisites)15
+f(.)59 b Fs(3)299 1151 y Fr(2.1)92 b(Prerequisites)15
 b Fa(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
 h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
 (.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)44
-b Fp(3)598 1276 y(2.1.1)93 b(C)p Fn(++)29 b Fp(compiler)14
+b Fr(3)598 1276 y(2.1.1)93 b(C)p Fp(++)29 b Fr(compiler)14
 b Fa(.)g(.)h(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
 g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)43 b Fp(3)598 1400 y(2.1.2)93
+(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)43 b Fr(3)598 1400 y(2.1.2)93
 b(Mak)m(e)31 b(utilit)m(y)14 b Fa(.)i(.)f(.)h(.)f(.)g(.)g(.)g(.)g(.)g
 (.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
 g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)43
-b Fp(3)598 1525 y(2.1.3)93 b(Sed)29 b(utilit)m(y)h Fa(.)15
+b Fr(3)598 1525 y(2.1.3)93 b(Sed)29 b(utilit)m(y)h Fa(.)15
 b(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
 (.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)58 b Fp(3)299 1649 y(2.2)92
+g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)58 b Fr(3)299 1649 y(2.2)92
 b(Building)30 b(the)h(library)25 b Fa(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)
 h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
 (.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)
-f(.)55 b Fp(4)299 1774 y(2.3)92 b(Installing)31 b(the)g(library)8
+f(.)55 b Fr(4)299 1774 y(2.3)92 b(Installing)31 b(the)g(library)8
 b Fa(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
 (.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)
-g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)38 b Fp(5)299
+g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)38 b Fr(5)299
 1898 y(2.4)92 b(Cleaning)31 b(up)8 b Fa(.)14 b(.)h(.)g(.)g(.)g(.)g(.)g
 (.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
 g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)38 b Fp(6)0 2147
-y Fq(3)135 b(Ordinary)45 b(n)l(um)l(b)t(er)f(t)l(yp)t(es)31
+(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)38 b Fr(6)0 2147
+y Fs(3)135 b(Ordinary)45 b(n)l(um)l(b)t(er)f(t)l(yp)t(es)31
 b Fb(.)19 b(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h
-(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)75 b Fq(7)299 2303
-y Fp(3.1)92 b(Exact)31 b(n)m(um)m(b)s(ers)14 b Fa(.)f(.)i(.)g(.)g(.)g
+(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)75 b Fs(7)299 2303
+y Fr(3.1)92 b(Exact)31 b(n)m(um)m(b)s(ers)14 b Fa(.)f(.)i(.)g(.)g(.)g
 (.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)
 f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)44 b Fp(8)299 2428
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)44 b Fr(8)299 2428
 y(3.2)92 b(Floating-p)s(oin)m(t)33 b(n)m(um)m(b)s(ers)17
 b Fa(.)12 b(.)j(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
 (.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)g(.)g(.)g(.)g(.)47 b Fp(8)299 2552 y(3.3)92
+g(.)g(.)g(.)g(.)g(.)g(.)g(.)47 b Fr(8)299 2552 y(3.3)92
 b(Complex)29 b(n)m(um)m(b)s(ers)17 b Fa(.)c(.)i(.)g(.)g(.)g(.)g(.)g(.)g
 (.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
 g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)47 b Fp(10)299 2677 y(3.4)92 b(Con)m(v)m(ersions)10
+(.)g(.)47 b Fr(10)299 2677 y(3.4)92 b(Con)m(v)m(ersions)10
 b Fa(.)16 b(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
 (.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
 g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)40
-b Fp(10)0 2926 y Fq(4)135 b(F)-11 b(unctions)44 b(on)h(n)l(um)l(b)t
+b Fr(10)0 2926 y Fs(4)135 b(F)-11 b(unctions)44 b(on)h(n)l(um)l(b)t
 (ers)38 b Fb(.)20 b(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f
-(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)83 b Fq(12)299
-3081 y Fp(4.1)92 b(Constructing)30 b(n)m(um)m(b)s(ers)21
+(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)83 b Fs(12)299
+3081 y Fr(4.1)92 b(Constructing)30 b(n)m(um)m(b)s(ers)21
 b Fa(.)13 b(.)i(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
 (.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)g(.)g(.)g(.)g(.)50 b Fp(12)598 3206 y(4.1.1)93
+g(.)g(.)g(.)g(.)g(.)g(.)g(.)50 b Fr(12)598 3206 y(4.1.1)93
 b(Constructing)30 b(in)m(tegers)24 b Fa(.)15 b(.)g(.)h(.)f(.)g(.)g(.)g
 (.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)53 b Fp(12)598 3330 y(4.1.2)93
+g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)53 b Fr(12)598 3330 y(4.1.2)93
 b(Constructing)30 b(rational)h(n)m(um)m(b)s(ers)11 b
 Fa(.)i(.)i(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h
-(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)40 b Fp(12)598 3455 y(4.1.3)93
+(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)40 b Fr(12)598 3455 y(4.1.3)93
 b(Constructing)30 b(\015oating-p)s(oin)m(t)h(n)m(um)m(b)s(ers)25
 b Fa(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)56 b Fp(12)598 3579 y(4.1.4)93 b(Constructing)30
+(.)g(.)g(.)56 b Fr(12)598 3579 y(4.1.4)93 b(Constructing)30
 b(complex)g(n)m(um)m(b)s(ers)21 b Fa(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g
 (.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)53
-b Fp(13)299 3704 y(4.2)92 b(Elemen)m(tary)30 b(functions)17
+b Fr(13)299 3704 y(4.2)92 b(Elemen)m(tary)30 b(functions)17
 b Fa(.)e(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
 g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)46 b Fp(13)299 3829 y(4.3)92
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)46 b Fr(13)299 3829 y(4.3)92
 b(Elemen)m(tary)30 b(rational)i(functions)20 b Fa(.)14
 b(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g
 (.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)49
-b Fp(15)299 3953 y(4.4)92 b(Elemen)m(tary)30 b(complex)g(functions)11
+b Fr(15)299 3953 y(4.4)92 b(Elemen)m(tary)30 b(complex)g(functions)11
 b Fa(.)k(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
 g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)40
-b Fp(15)299 4078 y(4.5)92 b(Comparisons)13 b Fa(.)g(.)i(.)g(.)g(.)g(.)g
+b Fr(15)299 4078 y(4.5)92 b(Comparisons)13 b Fa(.)g(.)i(.)g(.)g(.)g(.)g
 (.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
 g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h
-(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)42 b Fp(16)299 4202
+(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)42 b Fr(16)299 4202
 y(4.6)92 b(Rounding)29 b(functions)9 b Fa(.)15 b(.)g(.)g(.)g(.)g(.)g(.)
 g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
 (.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)h(.)38 b Fp(17)299 4327 y(4.7)92 b(Ro)s(ots)24 b
+g(.)h(.)38 b Fr(17)299 4327 y(4.7)92 b(Ro)s(ots)24 b
 Fa(.)15 b(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
 (.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
 g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)53 b Fp(21)299 4451 y(4.8)92 b(T)-8
+(.)g(.)g(.)g(.)g(.)53 b Fr(21)299 4451 y(4.8)92 b(T)-8
 b(ranscenden)m(tal)31 b(functions)8 b Fa(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g
 (.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
 g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)38
-b Fp(22)598 4576 y(4.8.1)93 b(Exp)s(onen)m(tial)30 b(and)g(logarithmic)
+b Fr(22)598 4576 y(4.8.1)93 b(Exp)s(onen)m(tial)30 b(and)g(logarithmic)
 h(functions)9 b Fa(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)38 b Fp(22)598 4700 y(4.8.2)93
+(.)g(.)g(.)g(.)g(.)g(.)38 b Fr(22)598 4700 y(4.8.2)93
 b(T)-8 b(rigonometric)30 b(functions)17 b Fa(.)e(.)h(.)f(.)g(.)g(.)g(.)
 g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)47 b Fp(23)598 4825 y(4.8.3)93
+(.)g(.)g(.)g(.)g(.)g(.)g(.)47 b Fr(23)598 4825 y(4.8.3)93
 b(Hyp)s(erb)s(olic)29 b(functions)15 b Fa(.)g(.)g(.)g(.)g(.)g(.)g(.)g
 (.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)
-g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)44 b Fp(24)598 4949
+g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)44 b Fr(24)598 4949
 y(4.8.4)93 b(Euler)29 b(gamma)12 b Fa(.)i(.)h(.)g(.)g(.)g(.)g(.)g(.)g
 (.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)
 g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)41
-b Fp(25)598 5074 y(4.8.5)93 b(Riemann)29 b(zeta)e Fa(.)15
+b Fr(25)598 5074 y(4.8.5)93 b(Riemann)29 b(zeta)e Fa(.)15
 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
 (.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)g(.)55 b Fp(26)299 5198 y(4.9)92 b(F)-8 b(unctions)31
+g(.)g(.)g(.)g(.)55 b Fr(26)299 5198 y(4.9)92 b(F)-8 b(unctions)31
 b(on)f(in)m(tegers)17 b Fa(.)f(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
 (.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
 g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)46
-b Fp(26)598 5323 y(4.9.1)93 b(Logical)32 b(functions)25
+b Fr(26)598 5323 y(4.9.1)93 b(Logical)32 b(functions)25
 b Fa(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
 (.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)55 b Fp(26)p eop
-%%Page: -2 70
--2 69 bop 3849 -116 a Fp(ii)598 83 y(4.9.2)93 b(Num)m(b)s(er)28
+g(.)g(.)g(.)55 b Fr(26)p eop
+%%Page: -2 73
+-2 72 bop 3849 -116 a Fr(ii)598 83 y(4.9.2)93 b(Num)m(b)s(er)28
 b(theoretic)k(functions)11 b Fa(.)k(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
 (.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)
-40 b Fp(29)598 208 y(4.9.3)93 b(Com)m(binatorial)30 b(functions)12
+40 b Fr(29)598 208 y(4.9.3)93 b(Com)m(binatorial)30 b(functions)12
 b Fa(.)j(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
 g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)42
-b Fp(30)299 332 y(4.10)92 b(F)-8 b(unctions)31 b(on)g(\015oating-p)s
+b Fr(30)299 332 y(4.10)92 b(F)-8 b(unctions)31 b(on)g(\015oating-p)s
 (oin)m(t)g(n)m(um)m(b)s(ers)19 b Fa(.)12 b(.)j(.)h(.)f(.)g(.)g(.)g(.)g
 (.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)48 b Fp(30)299 457 y(4.11)92 b(Con)m(v)m(ersion)31
+g(.)48 b Fr(30)299 457 y(4.11)92 b(Con)m(v)m(ersion)31
 b(functions)25 b Fa(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
 (.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)
-g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)54 b Fp(32)598
+g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)54 b Fr(32)598
 581 y(4.11.1)93 b(Con)m(v)m(ersion)31 b(to)g(\015oating-p)s(oin)m(t)h
 (n)m(um)m(b)s(ers)9 b Fa(.)j(.)j(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
-g(.)g(.)g(.)g(.)g(.)g(.)38 b Fp(32)598 706 y(4.11.2)93
+g(.)g(.)g(.)g(.)g(.)g(.)38 b Fr(32)598 706 y(4.11.2)93
 b(Con)m(v)m(ersion)31 b(to)g(rational)h(n)m(um)m(b)s(ers)15
 b Fa(.)d(.)j(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)g(.)g(.)g(.)44 b Fp(33)299 830 y(4.12)92
+g(.)g(.)g(.)g(.)g(.)g(.)44 b Fr(33)299 830 y(4.12)92
 b(Random)29 b(n)m(um)m(b)s(er)f(generators)16 b Fa(.)g(.)f(.)g(.)g(.)g
 (.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
 g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)45 b
-Fp(34)299 955 y(4.13)92 b(Obfuscating)30 b(op)s(erators)21
+Fr(34)299 955 y(4.13)92 b(Obfuscating)30 b(op)s(erators)21
 b Fa(.)16 b(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
 (.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)
-g(.)g(.)g(.)g(.)g(.)g(.)50 b Fp(35)0 1204 y Fq(5)135
+g(.)g(.)g(.)g(.)g(.)g(.)50 b Fr(35)0 1204 y Fs(5)135
 b(Input/Output)28 b Fb(.)18 b(.)i(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h
 (.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)
-g(.)h(.)f(.)h(.)72 b Fq(37)299 1359 y Fp(5.1)92 b(In)m(ternal)31
+g(.)h(.)f(.)h(.)72 b Fs(37)299 1359 y Fr(5.1)92 b(In)m(ternal)31
 b(and)e(prin)m(ted)h(represen)m(tation)20 b Fa(.)d(.)e(.)g(.)g(.)g(.)g
 (.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)g(.)h(.)49 b Fp(37)299 1484 y(5.2)92 b(Input)29
+g(.)g(.)g(.)g(.)h(.)49 b Fr(37)299 1484 y(5.2)92 b(Input)29
 b(functions)e Fa(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
 (.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
 g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)57
-b Fp(38)299 1609 y(5.3)92 b(Output)29 b(functions)12
+b Fr(38)299 1609 y(5.3)92 b(Output)29 b(functions)12
 b Fa(.)j(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)
 g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)42 b Fp(40)0
-1858 y Fq(6)135 b(Rings)23 b Fb(.)d(.)g(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)42 b Fr(40)0
+1858 y Fs(6)135 b(Rings)23 b Fb(.)d(.)g(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f
 (.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)
 h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)68
-b Fq(43)0 2138 y(7)135 b(Mo)t(dular)44 b(in)l(tegers)28
+b Fs(43)0 2138 y(7)135 b(Mo)t(dular)44 b(in)l(tegers)28
 b Fb(.)22 b(.)d(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f
 (.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)73
-b Fq(45)299 2293 y Fp(7.1)92 b(Mo)s(dular)30 b(in)m(teger)i(rings)10
+b Fs(45)299 2293 y Fr(7.1)92 b(Mo)s(dular)30 b(in)m(teger)i(rings)10
 b Fa(.)k(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
 g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)39 b Fp(45)299 2418 y(7.2)92
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)39 b Fr(45)299 2418 y(7.2)92
 b(F)-8 b(unctions)31 b(on)f(mo)s(dular)e(in)m(tegers)j
 Fa(.)15 b(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
 (.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)59
-b Fp(46)0 2667 y Fq(8)135 b(Sym)l(b)t(olic)45 b(data)g(t)l(yp)t(es)30
+b Fr(46)0 2667 y Fs(8)135 b(Sym)l(b)t(olic)45 b(data)g(t)l(yp)t(es)30
 b Fb(.)20 b(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f
-(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)74 b Fq(48)299
-2823 y Fp(8.1)92 b(Strings)22 b Fa(.)14 b(.)h(.)g(.)g(.)g(.)g(.)h(.)f
+(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)74 b Fs(48)299
+2823 y Fr(8.1)92 b(Strings)22 b Fa(.)14 b(.)h(.)g(.)g(.)g(.)g(.)h(.)f
 (.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
 g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)51 b Fp(48)299
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)51 b Fr(48)299
 2947 y(8.2)92 b(Sym)m(b)s(ols)17 b Fa(.)c(.)i(.)g(.)g(.)g(.)g(.)g(.)g
 (.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
 g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h
-(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)46 b Fp(49)0
-3196 y Fq(9)135 b(Univ)-7 b(ariate)46 b(p)t(olynomials)41
+(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)46 b Fr(49)0
+3196 y Fs(9)135 b(Univ)-7 b(ariate)46 b(p)t(olynomials)41
 b Fb(.)19 b(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h
-(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)84 b Fq(50)299 3352 y
-Fp(9.1)92 b(Univ)-5 b(ariate)32 b(p)s(olynomial)d(rings)16
+(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)84 b Fs(50)299 3352 y
+Fr(9.1)92 b(Univ)-5 b(ariate)32 b(p)s(olynomial)d(rings)16
 b Fa(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
 g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)46 b Fp(50)299 3477 y(9.2)92 b(F)-8 b(unctions)31
+(.)g(.)46 b Fr(50)299 3477 y(9.2)92 b(F)-8 b(unctions)31
 b(on)f(univ)-5 b(ariate)31 b(p)s(olynomials)20 b Fa(.)14
 b(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)49 b Fp(52)299
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)49 b Fr(52)299
 3601 y(9.3)92 b(Sp)s(ecial)31 b(p)s(olynomials)25 b Fa(.)15
 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g
 (.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)g(.)g(.)g(.)g(.)56 b Fp(54)0 3850 y Fq(10)135
+g(.)g(.)g(.)g(.)g(.)g(.)g(.)56 b Fr(54)0 3850 y Fs(10)135
 b(In)l(ternals)21 b Fb(.)f(.)g(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f
 (.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)
-h(.)f(.)h(.)f(.)h(.)f(.)g(.)66 b Fq(55)299 4006 y Fp(10.1)92
-b(Wh)m(y)31 b(C)p Fn(++)f Fp(?)19 b Fa(.)14 b(.)h(.)g(.)g(.)h(.)f(.)g
+h(.)f(.)h(.)f(.)h(.)f(.)g(.)66 b Fs(55)299 4006 y Fr(10.1)92
+b(Wh)m(y)31 b(C)p Fp(++)f Fr(?)19 b Fa(.)14 b(.)h(.)g(.)g(.)h(.)f(.)g
 (.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
 g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)48 b Fp(55)299 4130 y(10.2)92
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)48 b Fr(55)299 4130 y(10.2)92
 b(Memory)30 b(e\016ciency)15 b Fa(.)h(.)f(.)h(.)f(.)g(.)g(.)g(.)g(.)g
 (.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
 g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)44
-b Fp(55)299 4255 y(10.3)92 b(Sp)s(eed)30 b(e\016ciency)19
+b Fr(55)299 4255 y(10.3)92 b(Sp)s(eed)30 b(e\016ciency)19
 b Fa(.)d(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
 g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)48 b Fp(56)299
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)48 b Fr(56)299
 4379 y(10.4)92 b(Garbage)32 b(collection)e Fa(.)15 b(.)g(.)g(.)g(.)g(.)
 g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
 (.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)57 b Fp(56)0 4628 y Fq(11)135 b(Using)46 b(the)f(library)26
+g(.)g(.)57 b Fr(56)0 4628 y Fs(11)135 b(Using)46 b(the)f(library)26
 b Fb(.)20 b(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f
 (.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)71
-b Fq(57)299 4784 y Fp(11.1)92 b(Compiler)30 b(options)12
+b Fs(57)299 4784 y Fr(11.1)92 b(Compiler)30 b(options)12
 b Fa(.)j(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)
 g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)41 b Fp(57)299
+(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)41 b Fr(57)299
 4909 y(11.2)92 b(Include)30 b(\014les)10 b Fa(.)15 b(.)g(.)g(.)g(.)g(.)
 g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
 (.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)39 b Fp(57)299 5033
+g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)39 b Fr(57)299 5033
 y(11.3)92 b(An)30 b(Example)19 b Fa(.)c(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
 (.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
 g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)49 b Fp(61)299 5158 y(11.4)92 b(Debugging)32
+(.)g(.)g(.)g(.)g(.)49 b Fr(61)299 5158 y(11.4)92 b(Debugging)32
 b(supp)s(ort)17 b Fa(.)c(.)i(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
 g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
 (.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)46
-b Fp(62)p eop
-%%Page: -3 71
--3 70 bop 3824 -116 a Fp(iii)0 83 y Fq(12)135 b(Customizing)40
+b Fr(62)p eop
+%%Page: -3 74
+-3 73 bop 3824 -116 a Fr(iii)0 83 y Fs(12)135 b(Customizing)40
 b Fb(.)20 b(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f
 (.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)84
-b Fq(64)299 239 y Fp(12.1)92 b(Error)30 b(handling)17
+b Fs(64)299 239 y Fr(12.1)92 b(Error)30 b(handling)17
 b Fa(.)d(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
 g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
 (.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)46
-b Fp(64)299 363 y(12.2)92 b(Floating-p)s(oin)m(t)33 b(under\015o)m(w)11
+b Fr(64)299 363 y(12.2)92 b(Floating-p)s(oin)m(t)33 b(under\015o)m(w)11
 b Fa(.)j(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
 g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)40 b Fp(64)299 488 y(12.3)92 b(Customizing)30
+(.)g(.)g(.)g(.)40 b Fr(64)299 488 y(12.3)92 b(Customizing)30
 b(I/O)16 b Fa(.)f(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g
 (.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
 g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)45
-b Fp(64)299 612 y(12.4)92 b(Customizing)30 b(the)h(memory)d(allo)s
+b Fr(64)299 612 y(12.4)92 b(Customizing)30 b(the)h(memory)d(allo)s
 (cator)k Fa(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
 (.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)59
-b Fp(65)0 861 y Fq(Index)31 b Fb(.)19 b(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h
+b Fr(65)0 861 y Fs(Index)31 b Fb(.)19 b(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h
 (.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)
 g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)76
-b Fq(66)p eop
+b Fs(66)p eop
 %%Trailer
 end
 userdict /end-hook known{end-hook}if
index b83dfa8f11c05a04f7a7b8a0d4dbabe322da5a3e..21f263ea5c21bf20523ccc9bc176c42bd2b135ec 100644 (file)
@@ -191,8 +191,9 @@ CLN is speed efficient:
 The kernel of CLN has been written in assembly language for some CPUs
 (@code{i386}, @code{m68k}, @code{sparc}, @code{mips}, @code{arm}).
 @item
-On all CPUs, CLN uses the superefficient low-level routines from GNU
-GMP version 2.
+@cindex GMP
+On all CPUs, CLN may be configured to use the superefficient low-level
+routines from GNU GMP version 3.
 @item
 It uses Karatsuba multiplication, which is significantly faster
 for large numbers than the standard multiplication algorithm.
@@ -200,13 +201,14 @@ for large numbers than the standard multiplication algorithm.
 For very large numbers (more than 12000 decimal digits), it uses
 @iftex
 Sch{@"o}nhage-Strassen
+@cindex Sch{@"o}nhage-Strassen multiplication
 @end iftex
 @ifinfo
 Schönhage-Strassen
+@cindex Schönhage-Strassen multiplication
 @end ifinfo
-multiplication, which is an asymptotically
-optimal multiplication algorithm, for multiplication, division and
-radix conversion.
+multiplication, which is an asymptotically optimal multiplication
+algorithm, for multiplication, division and radix conversion.
 @end itemize
 
 @noindent
@@ -232,7 +234,7 @@ This section describes how to install the CLN package on your system.
 To build CLN, you need a C++ compiler.
 Actually, you need GNU @code{g++ 2.7.0} or newer.
 On HPPA, you need GNU @code{g++ 2.8.0} or newer.
-I recommend GNU @code{egcs 1.1} or newer.
+I recommend GNU @code{g++ 2.95} or newer.
 
 The following C++ features are used:
 classes, member functions,
@@ -281,10 +283,12 @@ initializations will not work.
 @end itemize
 @end ignore
 
+@cindex @code{make}
 @subsection Make utility
 
 To build CLN, you also need to have GNU @code{make} installed.
 
+@cindex @code{sed}
 @subsection Sed utility
 
 To build CLN on HP-UX, you also need to have GNU @code{sed} installed.
@@ -397,9 +401,6 @@ add either @samp{-O} or @samp{-O2 -fno-schedule-insns} to the CXXFLAGS.
 With full @samp{-O2}, @code{g++} miscompiles the division routines. Also, for
 --enable-shared to work, you need egcs-1.1.2 or newer.
 
-On MIPS (SGI Irix 6), pass option @code{--without-gmp} to configure. gmp does
-not work when compiled in @samp{n32} binary format on Irix.
-
 By default, only a static library is built. You can build CLN as a shared
 library too, by calling @code{configure} with the option @samp{--enable-shared}.
 To get it built as a shared library only, call @code{configure} with the options
@@ -411,6 +412,7 @@ library.
 
 
 @section Installing the library
+@cindex installation
 
 As with any autoconfiguring GNU software, installation is as easy as this:
 
@@ -477,28 +479,39 @@ Rational number                     Floating-point number
                    <cl_sfloat.h> <cl_ffloat.h> <cl_dfloat.h> <cl_lfloat.h>
 @end example
 
+@cindex @code{cl_number}
+@cindex abstract class
 The base class @code{cl_number} is an abstract base class.
 It is not useful to declare a variable of this type except if you want
 to completely disable compile-time type checking and use run-time type
 checking instead.
 
+@cindex @code{cl_N}
+@cindex real number
+@cindex complex number
 The class @code{cl_N} comprises real and complex numbers. There is
 no special class for complex numbers since complex numbers with imaginary
 part @code{0} are automatically converted to real numbers.
 
+@cindex @code{cl_R}
 The class @code{cl_R} comprises real numbers of different kinds. It is an
 abstract class.
 
+@cindex @code{cl_RA}
+@cindex rational number
+@cindex integer
 The class @code{cl_RA} comprises exact real numbers: rational numbers, including
 integers. There is no special class for non-integral rational numbers
 since rational numbers with denominator @code{1} are automatically converted
 to integers.
 
+@cindex @code{cl_F}
 The class @code{cl_F} implements floating-point approximations to real numbers.
 It is an abstract class.
 
 
 @section Exact numbers
+@cindex exact number
 
 Some numbers are represented as exact numbers: there is no loss of information
 when such a number is converted from its mathematical value to its internal
@@ -528,6 +541,7 @@ is completely transparent.
 
 
 @section Floating-point numbers
+@cindex floating-point number
 
 Not all real numbers can be represented exactly. (There is an easy mathematical
 proof for this: Only a countable set of numbers can be stored exactly in
@@ -535,6 +549,7 @@ a computer, even if one assumes that it has unlimited storage. But there
 are uncountably many real numbers.) So some approximation is needed.
 CLN implements ordinary floating-point numbers, with mantissa and exponent.
 
+@cindex rounding error
 The elementary operations (@code{+}, @code{-}, @code{*}, @code{/}, @dots{})
 only return approximate results. For example, the value of the expression
 @code{(cl_F) 0.3 + (cl_F) 0.4} prints as @samp{0.70000005}, not as
@@ -556,12 +571,14 @@ Floating point numbers come in four flavors:
 
 @itemize @bullet
 @item
+@cindex @code{cl_SF}
 Short floats, type @code{cl_SF}.
 They have 1 sign bit, 8 exponent bits (including the exponent's sign),
 and 17 mantissa bits (including the ``hidden'' bit).
 They don't consume heap allocation.
 
 @item
+@cindex @code{cl_FF}
 Single floats, type @code{cl_FF}.
 They have 1 sign bit, 8 exponent bits (including the exponent's sign),
 and 24 mantissa bits (including the ``hidden'' bit).
@@ -569,6 +586,7 @@ In CLN, they are represented as IEEE single-precision floating point numbers.
 This corresponds closely to the C/C++ type @samp{float}.
 
 @item
+@cindex @code{cl_DF}
 Double floats, type @code{cl_DF}.
 They have 1 sign bit, 11 exponent bits (including the exponent's sign),
 and 53 mantissa bits (including the ``hidden'' bit).
@@ -576,6 +594,7 @@ In CLN, they are represented as IEEE double-precision floating point numbers.
 This corresponds closely to the C/C++ type @samp{double}.
 
 @item
+@cindex @code{cl_LF}
 Long floats, type @code{cl_LF}.
 They have 1 sign bit, 32 exponent bits (including the exponent's sign),
 and n mantissa bits (including the ``hidden'' bit), where n >= 64.
@@ -591,6 +610,7 @@ gradual underflow. If the exponent range of some floating-point type
 is too limited for your application, choose another floating-point type
 with larger exponent range.
 
+@cindex @code{cl_F}
 As a user of CLN, you can forget about the differences between the
 four floating-point types and just declare all your floating-point
 variables as being of type @code{cl_F}. This has the advantage that
@@ -604,6 +624,7 @@ the floating point contagion rule happened to change in the future.)
 
 
 @section Complex numbers
+@cindex complex number
 
 Complex numbers, as implemented by the class @code{cl_N}, have a real
 part and an imaginary part, both real numbers. A complex number whose
@@ -615,6 +636,7 @@ through application of @code{sqrt} or transcendental functions.
 
 
 @section Conversions
+@cindex conversion
 
 Conversions from any class to any its superclasses (``base classes'' in
 C++ terminology) is done automatically.
@@ -656,6 +678,7 @@ Conversions from @samp{const char *} are provided for the classes
 @code{cl_R}, @code{cl_N}.
 The easiest way to specify a value which is outside of the range of the
 C++ built-in types is therefore to specify it as a string, like this:
+@cindex Rubik's cube
 @example
    cl_I order_of_rubiks_cube_group = "43252003274489856000";
 @end example
@@ -667,9 +690,13 @@ the functions
 
 @table @code
 @item int cl_I_to_int (const cl_I& x)
+@cindex @code{cl_I_to_int ()}
 @itemx unsigned int cl_I_to_uint (const cl_I& x)
+@cindex @code{cl_I_to_uint ()}
 @itemx long cl_I_to_long (const cl_I& x)
+@cindex @code{cl_I_to_long ()}
 @itemx unsigned long cl_I_to_ulong (const cl_I& x)
+@cindex @code{cl_I_to_ulong ()}
 Returns @code{x} as element of the C type @var{ctype}. If @code{x} is not
 representable in the range of @var{ctype}, a runtime error occurs.
 @end table
@@ -682,7 +709,9 @@ the functions
 
 @table @code
 @item float cl_float_approx (const @var{type}& x)
+@cindex @code{cl_float_approx ()}
 @itemx double cl_double_approx (const @var{type}& x)
+@cindex @code{cl_double_approx ()}
 Returns an approximation of @code{x} of C type @var{ctype}.
 If @code{abs(x)} is too close to 0 (underflow), 0 is returned.
 If @code{abs(x)} is too large (overflow), an IEEE infinity is returned.
@@ -692,8 +721,10 @@ Conversions from any class to any of its subclasses (``derived classes'' in
 C++ terminology) are not provided. Instead, you can assert and check
 that a value belongs to a certain subclass, and return it as element of that
 class, using the @samp{As} and @samp{The} macros.
+@cindex @code{As() ()}
 @code{As(@var{type})(@var{value})} checks that @var{value} belongs to
 @var{type} and returns it as such.
+@cindex @code{The() ()}
 @code{The(@var{type})(@var{value})} assumes that @var{value} belongs to
 @var{type} and returns it as such. It is your responsibility to ensure
 that this assumption is valid.
@@ -777,24 +808,30 @@ defines the following operations:
 
 @table @code
 @item @var{type} operator + (const @var{type}&, const @var{type}&)
+@cindex @code{operator + ()}
 Addition.
 
 @item @var{type} operator - (const @var{type}&, const @var{type}&)
+@cindex @code{operator - ()}
 Subtraction.
 
 @item @var{type} operator - (const @var{type}&)
 Returns the negative of the argument.
 
 @item @var{type} plus1 (const @var{type}& x)
+@cindex @code{plus1 ()}
 Returns @code{x + 1}.
 
 @item @var{type} minus1 (const @var{type}& x)
+@cindex @code{minus1 ()}
 Returns @code{x - 1}.
 
 @item @var{type} operator * (const @var{type}&, const @var{type}&)
+@cindex @code{operator * ()}
 Multiplication.
 
 @item @var{type} square (const @var{type}& x)
+@cindex @code{square ()}
 Returns @code{x * x}.
 @end table
 
@@ -804,9 +841,11 @@ defines the following operations:
 
 @table @code
 @item @var{type} operator / (const @var{type}&, const @var{type}&)
+@cindex @code{operator / ()}
 Division.
 
 @item @var{type} recip (const @var{type}&)
+@cindex @code{recip ()}
 Returns the reciprocal of the argument.
 @end table
 
@@ -818,6 +857,7 @@ Instead, @code{cl_I} defines an ``exact quotient'' function:
 
 @table @code
 @item cl_I exquo (const cl_I& x, const cl_I& y)
+@cindex @code{exquo ()}
 Checks that @code{y} divides @code{x}, and returns the quotient @code{x}/@code{y}.
 @end table
 
@@ -825,10 +865,12 @@ The following exponentiation functions are defined:
 
 @table @code
 @item cl_I expt_pos (const cl_I& x, const cl_I& y)
+@cindex @code{expt_pos ()}
 @itemx cl_RA expt_pos (const cl_RA& x, const cl_I& y)
 @code{y} must be > 0. Returns @code{x^y}.
 
 @item cl_RA expt (const cl_RA& x, const cl_I& y)
+@cindex @code{expt ()}
 @itemx cl_R expt (const cl_R& x, const cl_I& y)
 @itemx cl_N expt (const cl_N& x, const cl_I& y)
 Returns @code{x^y}.
@@ -840,6 +882,7 @@ defines the following operation:
 
 @table @code
 @item @var{type} abs (const @var{type}& x)
+@cindex @code{abs ()}
 Returns the absolute value of @code{x}.
 This is @code{x} if @code{x >= 0}, and @code{-x} if @code{x <= 0}.
 @end table
@@ -857,6 +900,7 @@ defines the following operation:
 
 @table @code
 @item @var{type} signum (const @var{type}& x)
+@cindex @code{signum ()}
 Returns the sign of @code{x}, in the same number format as @code{x}.
 This is defined as @code{x / abs(x)} if @code{x} is non-zero, and
 @code{x} if @code{x} is zero. If @code{x} is real, the value is either
@@ -870,9 +914,11 @@ Each of the classes @code{cl_RA}, @code{cl_I} defines the following operations:
 
 @table @code
 @item cl_I numerator (const @var{type}& x)
+@cindex @code{numerator ()}
 Returns the numerator of @code{x}.
 
 @item cl_I denominator (const @var{type}& x)
+@cindex @code{denominator ()}
 Returns the denominator of @code{x}.
 @end table
 
@@ -886,6 +932,7 @@ The class @code{cl_N} defines the following operation:
 
 @table @code
 @item cl_N complex (const cl_R& a, const cl_R& b)
+@cindex @code{complex ()}
 Returns the complex number @code{a+bi}, that is, the complex number with
 real part @code{a} and imaginary part @code{b}.
 @end table
@@ -894,12 +941,15 @@ Each of the classes @code{cl_N}, @code{cl_R} defines the following operations:
 
 @table @code
 @item cl_R realpart (const @var{type}& x)
+@cindex @code{realpart ()}
 Returns the real part of @code{x}.
 
 @item cl_R imagpart (const @var{type}& x)
+@cindex @code{imagpart ()}
 Returns the imaginary part of @code{x}.
 
 @item @var{type} conjugate (const @var{type}& x)
+@cindex @code{conjugate ()}
 Returns the complex conjugate of @code{x}.
 @end table
 
@@ -914,6 +964,7 @@ We have the relations
 
 
 @section Comparisons
+@cindex comparison
 
 Each of the classes @code{cl_N}, @code{cl_R}, @code{cl_RA}, @code{cl_I},
 @code{cl_F}, @code{cl_SF}, @code{cl_FF}, @code{cl_DF}, @code{cl_LF}
@@ -921,15 +972,19 @@ defines the following operations:
 
 @table @code
 @item bool operator == (const @var{type}&, const @var{type}&)
+@cindex @code{operator == ()}
 @itemx bool operator != (const @var{type}&, const @var{type}&)
+@cindex @code{operator != ()}
 Comparison, as in C and C++.
 
 @item uint32 cl_equal_hashcode (const @var{type}&)
+@cindex @code{cl_equal_hashcode ()}
 Returns a 32-bit hash code that is the same for any two numbers which are
 the same according to @code{==}. This hash code depends on the number's value,
 not its type or precision.
 
 @item cl_boolean zerop (const @var{type}& x)
+@cindex @code{zerop ()}
 Compare against zero: @code{x == 0}
 @end table
 
@@ -939,25 +994,34 @@ defines the following operations:
 
 @table @code
 @item cl_signean cl_compare (const @var{type}& x, const @var{type}& y)
+@cindex @code{cl_compare ()}
 Compares @code{x} and @code{y}. Returns +1 if @code{x}>@code{y},
 -1 if @code{x}<@code{y}, 0 if @code{x}=@code{y}.
 
 @item bool operator <= (const @var{type}&, const @var{type}&)
+@cindex @code{operator <= ()}
 @itemx bool operator < (const @var{type}&, const @var{type}&)
+@cindex @code{operator < ()}
 @itemx bool operator >= (const @var{type}&, const @var{type}&)
+@cindex @code{operator >= ()}
 @itemx bool operator > (const @var{type}&, const @var{type}&)
+@cindex @code{operator > ()}
 Comparison, as in C and C++.
 
 @item cl_boolean minusp (const @var{type}& x)
+@cindex @code{minusp ()}
 Compare against zero: @code{x < 0}
 
 @item cl_boolean plusp (const @var{type}& x)
+@cindex @code{plusp ()}
 Compare against zero: @code{x > 0}
 
 @item @var{type} max (const @var{type}& x, const @var{type}& y)
+@cindex @code{max ()}
 Return the maximum of @code{x} and @code{y}.
 
 @item @var{type} min (const @var{type}& x, const @var{type}& y)
+@cindex @code{min ()}
 Return the minimum of @code{x} and @code{y}.
 @end table
 
@@ -970,6 +1034,7 @@ there is no floating point number whose value is exactly @code{1/3}.
 
 
 @section Rounding functions
+@cindex rounding
 
 When a real number is to be converted to an integer, there is no ``best''
 rounding. The desired rounding function depends on the application.
@@ -1017,12 +1082,16 @@ defines the following operations:
 
 @table @code
 @item cl_I floor1 (const @var{type}& x)
+@cindex @code{floor1 ()}
 Returns @code{floor(x)}.
 @item cl_I ceiling1 (const @var{type}& x)
+@cindex @code{ceiling1 ()}
 Returns @code{ceiling(x)}.
 @item cl_I truncate1 (const @var{type}& x)
+@cindex @code{truncate1 ()}
 Returns @code{truncate(x)}.
 @item cl_I round1 (const @var{type}& x)
+@cindex @code{round1 ()}
 Returns @code{round(x)}.
 @end table
 
@@ -1082,9 +1151,13 @@ defines the following operations:
 @table @code
 @item struct @var{type}_div_t @{ cl_I quotient; @var{type} remainder; @};
 @itemx @var{type}_div_t floor2 (const @var{type}& x, const @var{type}& y)
+@cindex @code{floor2 ()}
 @itemx @var{type}_div_t ceiling2 (const @var{type}& x, const @var{type}& y)
+@cindex @code{ceiling2 ()}
 @itemx @var{type}_div_t truncate2 (const @var{type}& x, const @var{type}& y)
+@cindex @code{truncate2 ()}
 @itemx @var{type}_div_t round2 (const @var{type}& x, const @var{type}& y)
+@cindex @code{round2 ()}
 @end table
 
 Sometimes, one wants the quotient as a floating-point number (of the
@@ -1097,9 +1170,13 @@ defines the following operations:
 
 @table @code
 @item @var{type} ffloor (const @var{type}& x)
+@cindex @code{ffloor ()}
 @itemx @var{type} fceiling (const @var{type}& x)
+@cindex @code{fceiling ()}
 @itemx @var{type} ftruncate (const @var{type}& x)
+@cindex @code{ftruncate ()}
 @itemx @var{type} fround (const @var{type}& x)
+@cindex @code{fround ()}
 @end table
 
 and similarly for class @code{cl_R}, but with return type @code{cl_F}.
@@ -1123,9 +1200,13 @@ defines the following operations:
 @table @code
 @item struct @var{type}_fdiv_t @{ @var{type} quotient; @var{type} remainder; @};
 @itemx @var{type}_fdiv_t ffloor2 (const @var{type}& x)
+@cindex @code{ffloor2 ()}
 @itemx @var{type}_fdiv_t fceiling2 (const @var{type}& x)
+@cindex @code{fceiling2 ()}
 @itemx @var{type}_fdiv_t ftruncate2 (const @var{type}& x)
+@cindex @code{ftruncate2 ()}
 @itemx @var{type}_fdiv_t fround2 (const @var{type}& x)
+@cindex @code{fround2 ()}
 @end table
 and similarly for class @code{cl_R}, but with quotient type @code{cl_F}.
 
@@ -1159,7 +1240,9 @@ The classes @code{cl_R}, @code{cl_I} define the following operations:
 
 @table @code
 @item @var{type} mod (const @var{type}& x, const @var{type}& y)
+@cindex @code{mod ()}
 @itemx @var{type} rem (const @var{type}& x, const @var{type}& y)
+@cindex @code{rem ()}
 @end table
 
 
@@ -1171,6 +1254,7 @@ defines the following operation:
 
 @table @code
 @item @var{type} sqrt (const @var{type}& x)
+@cindex @code{sqrt ()}
 @code{x} must be >= 0. This function returns the square root of @code{x},
 normalized to be >= 0. If @code{x} is the square of a rational number,
 @code{sqrt(x)} will be a rational number, else it will return a
@@ -1181,6 +1265,7 @@ The classes @code{cl_RA}, @code{cl_I} define the following operation:
 
 @table @code
 @item cl_boolean sqrtp (const @var{type}& x, @var{type}* root)
+@cindex @code{sqrtp ()}
 This tests whether @code{x} is a perfect square. If so, it returns true
 and the exact square root in @code{*root}, else it returns false.
 @end table
@@ -1189,6 +1274,7 @@ Furthermore, for integers, similarly:
 
 @table @code
 @item cl_boolean isqrt (const @var{type}& x, @var{type}* root)
+@cindex @code{isqrt ()}
 @code{x} should be >= 0. This function sets @code{*root} to
 @code{floor(sqrt(x))} and returns the same value as @code{sqrtp}:
 the boolean value @code{(expt(*root,2) == x)}.
@@ -1199,6 +1285,7 @@ define the following operation:
 
 @table @code
 @item cl_boolean rootp (const @var{type}& x, const cl_I& n, @var{type}* root)
+@cindex @code{rootp ()}
 @code{x} must be >= 0. @code{n} must be > 0.
 This tests whether @code{x} is an @code{n}th power of a rational number.
 If so, it returns true and the exact root in @code{*root}, else it returns
@@ -1210,6 +1297,7 @@ for class @code{cl_N}:
 
 @table @code
 @item cl_N sqrt (const cl_N& z)
+@cindex @code{sqrt ()}
 Returns the square root of @code{z}, as defined by the formula
 @code{sqrt(z) = exp(log(z)/2)}. Conversion to a floating-point type
 or to a complex number are done if necessary. The range of the result is the
@@ -1221,7 +1309,7 @@ The result is an exact number only if @code{z} is an exact number.
 
 
 @section Transcendental functions
-
+@cindex transcendental functions
 
 The transcendental functions return an exact result if the argument
 is exact and the result is exact as well. Otherwise they must return
@@ -1233,21 +1321,25 @@ For example, @code{cos(0) = 1} returns the rational number @code{1}.
 
 @table @code
 @item cl_R exp (const cl_R& x)
+@cindex @code{exp ()}
 @itemx cl_N exp (const cl_N& x)
 Returns the exponential function of @code{x}. This is @code{e^x} where
 @code{e} is the base of the natural logarithms. The range of the result
 is the entire complex plane excluding 0.
 
 @item cl_R ln (const cl_R& x)
+@cindex @code{ln ()}
 @code{x} must be > 0. Returns the (natural) logarithm of x.
 
 @item cl_N log (const cl_N& x)
+@cindex @code{log ()}
 Returns the (natural) logarithm of x. If @code{x} is real and positive,
 this is @code{ln(x)}. In general, @code{log(x) = log(abs(x)) + i*phase(x)}.
 The range of the result is the strip in the complex plane
 @code{-pi < imagpart(log(x)) <= pi}.
 
 @item cl_R phase (const cl_N& x)
+@cindex @code{phase ()}
 Returns the angle part of @code{x} in its polar representation as a
 complex number. That is, @code{phase(x) = atan(realpart(x),imagpart(x))}.
 This is also the imaginary part of @code{log(x)}.
@@ -1266,6 +1358,7 @@ Returns the logarithm of @code{a} with respect to base @code{b}.
 @code{log(a,b) = log(a)/log(b)}.
 
 @item cl_N expt (const cl_N& x, const cl_N& y)
+@cindex @code{expt ()}
 Exponentiation: Returns @code{x^y = exp(y*log(x))}.
 @end table
 
@@ -1273,6 +1366,7 @@ The constant e = exp(1) = 2.71828@dots{} is returned by the following functions:
 
 @table @code
 @item cl_F cl_exp1 (cl_float_format_t f)
+@cindex @code{exp1 ()}
 Returns e as a float of format @code{f}.
 
 @item cl_F cl_exp1 (const cl_F& y)
@@ -1287,6 +1381,7 @@ Returns e as a float of format @code{cl_default_float_format}.
 
 @table @code
 @item cl_R sin (const cl_R& x)
+@cindex @code{sin ()}
 Returns @code{sin(x)}. The range of the result is the interval
 @code{-1 <= sin(x) <= 1}.
 
@@ -1294,6 +1389,7 @@ Returns @code{sin(x)}. The range of the result is the interval
 Returns @code{sin(z)}. The range of the result is the entire complex plane.
 
 @item cl_R cos (const cl_R& x)
+@cindex @code{cos ()}
 Returns @code{cos(x)}. The range of the result is the interval
 @code{-1 <= cos(x) <= 1}.
 
@@ -1301,20 +1397,26 @@ Returns @code{cos(x)}. The range of the result is the interval
 Returns @code{cos(z)}. The range of the result is the entire complex plane.
 
 @item struct cl_cos_sin_t @{ cl_R cos; cl_R sin; @};
+@cindex @code{cl_cos_sin_t}
 @itemx cl_cos_sin_t cl_cos_sin (const cl_R& x)
 Returns both @code{sin(x)} and @code{cos(x)}. This is more efficient than
+@cindex @code{cl_cos_sin ()}
 computing them separately. The relation @code{cos^2 + sin^2 = 1} will
 hold only approximately.
 
 @item cl_R tan (const cl_R& x)
+@cindex @code{tan ()}
 @itemx cl_N tan (const cl_N& x)
 Returns @code{tan(x) = sin(x)/cos(x)}.
 
 @item cl_N cis (const cl_R& x)
+@cindex @code{cis ()}
 @itemx cl_N cis (const cl_N& x)
 Returns @code{exp(i*x)}. The name @samp{cis} means ``cos + i sin'', because
 @code{e^(i*x) = cos(x) + i*sin(x)}.
 
+@cindex @code{asin}
+@cindex @code{asin ()}
 @item cl_N asin (const cl_N& z)
 Returns @code{arcsin(z)}. This is defined as
 @code{arcsin(z) = log(iz+sqrt(1-z^2))/i} and satisfies
@@ -1329,6 +1431,7 @@ results for arsinh.
 @end ignore
 
 @item cl_N acos (const cl_N& z)
+@cindex @code{acos ()}
 Returns @code{arccos(z)}. This is defined as
 @code{arccos(z) = pi/2 - arcsin(z) = log(z+i*sqrt(1-z^2))/i}
 @ignore
@@ -1344,6 +1447,8 @@ with @code{realpart = pi} and @code{imagpart > 0}.
 Proof: This follows from the results about arcsin.
 @end ignore
 
+@cindex @code{atan}
+@cindex @code{atan ()}
 @item cl_R atan (const cl_R& x, const cl_R& y)
 Returns the angle of the polar representation of the complex number
 @code{x+iy}. This is @code{atan(y/x)} if @code{x>0}. The range of
@@ -1371,10 +1476,13 @@ Proof: arctan(z) = artanh(iz)/i, we know the range of the artanh function.
 
 @end table
 
-The constant pi = 3.14@dots{} is returned by the following functions:
+@cindex pi
+@cindex Archimedes' constant
+Archimedes' constant pi = 3.14@dots{} is returned by the following functions:
 
 @table @code
 @item cl_F cl_pi (cl_float_format_t f)
+@cindex @code{cl_pi}
 Returns pi as a float of format @code{f}.
 
 @item cl_F cl_pi (const cl_F& y)
@@ -1389,12 +1497,14 @@ Returns pi as a float of format @code{cl_default_float_format}.
 
 @table @code
 @item cl_R sinh (const cl_R& x)
+@cindex @code{sinh ()}
 Returns @code{sinh(x)}.
 
 @item cl_N sinh (const cl_N& z)
 Returns @code{sinh(z)}. The range of the result is the entire complex plane.
 
 @item cl_R cosh (const cl_R& x)
+@cindex @code{cosh ()}
 Returns @code{cosh(x)}. The range of the result is the interval
 @code{cosh(x) >= 1}.
 
@@ -1402,16 +1512,20 @@ Returns @code{cosh(x)}. The range of the result is the interval
 Returns @code{cosh(z)}. The range of the result is the entire complex plane.
 
 @item struct cl_cosh_sinh_t @{ cl_R cosh; cl_R sinh; @};
+@cindex @code{cl_cosh_sinh_t}
 @itemx cl_cosh_sinh_t cl_cosh_sinh (const cl_R& x)
+@cindex @code{cl_cosh_sinh ()}
 Returns both @code{sinh(x)} and @code{cosh(x)}. This is more efficient than
 computing them separately. The relation @code{cosh^2 - sinh^2 = 1} will
 hold only approximately.
 
 @item cl_R tanh (const cl_R& x)
+@cindex @code{tanh ()}
 @itemx cl_N tanh (const cl_N& x)
 Returns @code{tanh(x) = sinh(x)/cosh(x)}.
 
 @item cl_N asinh (const cl_N& z)
+@cindex @code{asinh ()}
 Returns @code{arsinh(z)}. This is defined as
 @code{arsinh(z) = log(z+sqrt(1+z^2))} and satisfies
 @code{arsinh(-z) = -arsinh(z)}.
@@ -1443,6 +1557,7 @@ log(sqrt(1+z^2)+z) = 2 artanh(z/(1+sqrt(1+z^2)))
 @end ignore
 
 @item cl_N acosh (const cl_N& z)
+@cindex @code{acosh ()}
 Returns @code{arcosh(z)}. This is defined as
 @code{arcosh(z) = 2*log(sqrt((z+1)/2)+sqrt((z-1)/2))}.
 The range of the result is the half-strip in the complex domain
@@ -1488,6 +1603,7 @@ Otherwise, -z is in Range(sqrt).
 @end ignore
 
 @item cl_N atanh (const cl_N& z)
+@cindex @code{atanh ()}
 Returns @code{artanh(z)}. This is defined as
 @code{artanh(z) = (log(1+z)-log(1-z)) / 2} and satisfies
 @code{artanh(-z) = -artanh(z)}. The range of the result is
@@ -1519,11 +1635,13 @@ Proof: Write z = x+iy. Examine
 
 
 @subsection Euler gamma
+@cindex Euler's constant
 
 Euler's constant C = 0.577@dots{} is returned by the following functions:
 
 @table @code
 @item cl_F cl_eulerconst (cl_float_format_t f)
+@cindex @code{cl_eulerconst ()}
 Returns Euler's constant as a float of format @code{f}.
 
 @item cl_F cl_eulerconst (const cl_F& y)
@@ -1534,9 +1652,11 @@ Returns Euler's constant as a float of format @code{cl_default_float_format}.
 @end table
 
 Catalan's constant G = 0.915@dots{} is returned by the following functions:
+@cindex Catalan's constant
 
 @table @code
 @item cl_F cl_catalanconst (cl_float_format_t f)
+@cindex @code{cl_catalanconst ()}
 Returns Catalan's constant as a float of format @code{f}.
 
 @item cl_F cl_catalanconst (const cl_F& y)
@@ -1548,12 +1668,14 @@ Returns Catalan's constant as a float of format @code{cl_default_float_format}.
 
 
 @subsection Riemann zeta
+@cindex Riemann's zeta
 
 Riemann's zeta function at an integral point @code{s>1} is returned by the
 following functions:
 
 @table @code
 @item cl_F cl_zeta (int s, cl_float_format_t f)
+@cindex @code{cl_zeta ()}
 Returns Riemann's zeta function at @code{s} as a float of format @code{f}.
 
 @item cl_F cl_zeta (int s, const cl_F& y)
@@ -1582,46 +1704,62 @@ on each of the bit positions in parallel.
 
 @table @code
 @item cl_I lognot (const cl_I& x)
+@cindex @code{lognot ()}
 @itemx cl_I operator ~ (const cl_I& x)
+@cindex @code{operator ~ ()}
 Logical not, like @code{~x} in C. This is the same as @code{-1-x}.
 
 @item cl_I logand (const cl_I& x, const cl_I& y)
+@cindex @code{logand ()}
 @itemx cl_I operator & (const cl_I& x, const cl_I& y)
+@cindex @code{operator & ()}
 Logical and, like @code{x & y} in C.
 
 @item cl_I logior (const cl_I& x, const cl_I& y)
+@cindex @code{logior ()}
 @itemx cl_I operator | (const cl_I& x, const cl_I& y)
+@cindex @code{operator | ()}
 Logical (inclusive) or, like @code{x | y} in C.
 
 @item cl_I logxor (const cl_I& x, const cl_I& y)
+@cindex @code{logxor ()}
 @itemx cl_I operator ^ (const cl_I& x, const cl_I& y)
+@cindex @code{operator ^ ()}
 Exclusive or, like @code{x ^ y} in C.
 
 @item cl_I logeqv (const cl_I& x, const cl_I& y)
+@cindex @code{logeqv ()}
 Bitwise equivalence, like @code{~(x ^ y)} in C.
 
 @item cl_I lognand (const cl_I& x, const cl_I& y)
+@cindex @code{lognand ()}
 Bitwise not and, like @code{~(x & y)} in C.
 
 @item cl_I lognor (const cl_I& x, const cl_I& y)
+@cindex @code{lognor ()}
 Bitwise not or, like @code{~(x | y)} in C.
 
 @item cl_I logandc1 (const cl_I& x, const cl_I& y)
+@cindex @code{logandc1 ()}
 Logical and, complementing the first argument, like @code{~x & y} in C.
 
 @item cl_I logandc2 (const cl_I& x, const cl_I& y)
+@cindex @code{logandc2 ()}
 Logical and, complementing the second argument, like @code{x & ~y} in C.
 
 @item cl_I logorc1 (const cl_I& x, const cl_I& y)
+@cindex @code{logorc1 ()}
 Logical or, complementing the first argument, like @code{~x | y} in C.
 
 @item cl_I logorc2 (const cl_I& x, const cl_I& y)
+@cindex @code{logorc2 ()}
 Logical or, complementing the second argument, like @code{x | ~y} in C.
 @end table
 
 These operations are all available though the function
 @table @code
 @item cl_I boole (cl_boole op, const cl_I& x, const cl_I& y)
+@cindex @code{boole ()}
 @end table
 where @code{op} must have one of the 16 values (each one stands for a function
 which combines two bits into one bit): @code{boole_clr}, @code{boole_set},
@@ -1629,19 +1767,38 @@ which combines two bits into one bit): @code{boole_clr}, @code{boole_set},
 @code{boole_and}, @code{boole_ior}, @code{boole_xor}, @code{boole_eqv},
 @code{boole_nand}, @code{boole_nor}, @code{boole_andc1}, @code{boole_andc2},
 @code{boole_orc1}, @code{boole_orc2}.
+@cindex @code{boole_clr}
+@cindex @code{boole_set}
+@cindex @code{boole_1}
+@cindex @code{boole_2}
+@cindex @code{boole_c1}
+@cindex @code{boole_c2}
+@cindex @code{boole_and}
+@cindex @code{boole_xor}
+@cindex @code{boole_eqv}
+@cindex @code{boole_nand}
+@cindex @code{boole_nor}
+@cindex @code{boole_andc1}
+@cindex @code{boole_andc2}
+@cindex @code{boole_orc1}
+@cindex @code{boole_orc2}
+
 
 Other functions that view integers as bit strings:
 
 @table @code
 @item cl_boolean logtest (const cl_I& x, const cl_I& y)
+@cindex @code{logtest ()}
 Returns true if some bit is set in both @code{x} and @code{y}, i.e. if
 @code{logand(x,y) != 0}.
 
 @item cl_boolean logbitp (const cl_I& n, const cl_I& x)
+@cindex @code{logbitp ()}
 Returns true if the @code{n}th bit (from the right) of @code{x} is set.
 Bit 0 is the least significant bit.
 
 @item uintL logcount (const cl_I& x)
+@cindex @code{logcount ()}
 Returns the number of one bits in @code{x}, if @code{x} >= 0, or
 the number of zero bits in @code{x}, if @code{x} < 0.
 @end table
@@ -1651,20 +1808,24 @@ The type
 @example
 struct cl_byte @{ uintL size; uintL position; @};
 @end example
+@cindex @code{cl_byte}
 represents the bit interval containing the bits
 @code{position}@dots{}@code{position+size-1} of an integer.
 The constructor @code{cl_byte(size,position)} constructs a @code{cl_byte}.
 
 @table @code
 @item cl_I ldb (const cl_I& n, const cl_byte& b)
+@cindex @code{ldb ()}
 extracts the bits of @code{n} described by the bit interval @code{b}
 and returns them as a nonnegative integer with @code{b.size} bits.
 
 @item cl_boolean ldb_test (const cl_I& n, const cl_byte& b)
+@cindex @code{ldb_test ()}
 Returns true if some bit described by the bit interval @code{b} is set in
 @code{n}.
 
 @item cl_I dpb (const cl_I& newbyte, const cl_I& n, const cl_byte& b)
+@cindex @code{dpb ()}
 Returns @code{n}, with the bits described by the bit interval @code{b}
 replaced by @code{newbyte}. Only the lowest @code{b.size} bits of
 @code{newbyte} are relevant.
@@ -1675,10 +1836,12 @@ functions are their counterparts without shifting:
 
 @table @code
 @item cl_I mask_field (const cl_I& n, const cl_byte& b)
+@cindex @code{mask_field ()}
 returns an integer with the bits described by the bit interval @code{b}
 copied from the corresponding bits in @code{n}, the other bits zero.
 
 @item cl_I deposit_field (const cl_I& newbyte, const cl_I& n, const cl_byte& b)
+@cindex @code{deposit_field ()}
 returns an integer where the bits described by the bit interval @code{b}
 come from @code{newbyte} and the other bits come from @code{n}.
 @end table
@@ -1699,39 +1862,47 @@ for common arithmetic operations:
 
 @table @code
 @item cl_boolean oddp (const cl_I& x)
+@cindex @code{oddp ()}
 Returns true if the least significant bit of @code{x} is 1. Equivalent to
 @code{mod(x,2) != 0}.
 
 @item cl_boolean evenp (const cl_I& x)
+@cindex @code{evenp ()}
 Returns true if the least significant bit of @code{x} is 0. Equivalent to
 @code{mod(x,2) == 0}.
 
 @item cl_I operator << (const cl_I& x, const cl_I& n)
+@cindex @code{operator << ()}
 Shifts @code{x} by @code{n} bits to the left. @code{n} should be >=0.
 Equivalent to @code{x * expt(2,n)}.
 
 @item cl_I operator >> (const cl_I& x, const cl_I& n)
+@cindex @code{operator >> ()}
 Shifts @code{x} by @code{n} bits to the right. @code{n} should be >=0.
 Bits shifted out to the right are thrown away.
 Equivalent to @code{floor(x / expt(2,n))}.
 
 @item cl_I ash (const cl_I& x, const cl_I& y)
+@cindex @code{ash ()}
 Shifts @code{x} by @code{y} bits to the left (if @code{y}>=0) or
 by @code{-y} bits to the right (if @code{y}<=0). In other words, this
 returns @code{floor(x * expt(2,y))}.
 
 @item uintL integer_length (const cl_I& x)
+@cindex @code{integer_length ()}
 Returns the number of bits (excluding the sign bit) needed to represent @code{x}
 in two's complement notation. This is the smallest n >= 0 such that
 -2^n <= x < 2^n. If x > 0, this is the unique n > 0 such that
 2^(n-1) <= x < 2^n.
 
 @item uintL ord2 (const cl_I& x)
+@cindex @code{ord2 ()}
 @code{x} must be non-zero. This function returns the number of 0 bits at the
 right of @code{x} in two's complement notation. This is the largest n >= 0
 such that 2^n divides @code{x}.
 
 @item uintL power2p (const cl_I& x)
+@cindex @code{power2p ()}
 @code{x} must be > 0. This function checks whether @code{x} is a power of 2.
 If @code{x} = 2^(n-1), it returns n. Else it returns 0.
 (See also the function @code{logp}.)
@@ -1742,11 +1913,13 @@ If @code{x} = 2^(n-1), it returns n. Else it returns 0.
 
 @table @code
 @item uint32 gcd (uint32 a, uint32 b)
+@cindex @code{gcd ()}
 @itemx cl_I gcd (const cl_I& a, const cl_I& b)
 This function returns the greatest common divisor of @code{a} and @code{b},
 normalized to be >= 0.
 
 @item cl_I xgcd (const cl_I& a, const cl_I& b, cl_I* u, cl_I* v)
+@cindex @code{xgcd ()}
 This function (``extended gcd'') returns the greatest common divisor @code{g} of
 @code{a} and @code{b} and at the same time the representation of @code{g}
 as an integral linear combination of @code{a} and @code{b}:
@@ -1757,10 +1930,12 @@ value, in the following sense: If @code{a} and @code{b} are non-zero, and
 @code{abs(u) <= abs(b)/(2*g)}, @code{abs(v) <= abs(a)/(2*g)}.
 
 @item cl_I lcm (const cl_I& a, const cl_I& b)
+@cindex @code{lcm ()}
 This function returns the least common multiple of @code{a} and @code{b},
 normalized to be >= 0.
 
 @item cl_boolean logp (const cl_I& a, const cl_I& b, cl_RA* l)
+@cindex @code{logp ()}
 @itemx cl_boolean logp (const cl_RA& a, const cl_RA& b, cl_RA* l)
 @code{a} must be > 0. @code{b} must be >0 and != 1. If log(a,b) is
 rational number, this function returns true and sets *l = log(a,b), else
@@ -1772,15 +1947,18 @@ it returns false.
 
 @table @code
 @item cl_I factorial (uintL n)
+@cindex @code{factorial ()}
 @code{n} must be a small integer >= 0. This function returns the factorial
 @code{n}! = @code{1*2*@dots{}*n}.
 
 @item cl_I doublefactorial (uintL n)
+@cindex @code{doublefactorial ()}
 @code{n} must be a small integer >= 0. This function returns the 
 doublefactorial @code{n}!! = @code{1*3*@dots{}*n} or 
 @code{n}!! = @code{2*4*@dots{}*n}, respectively.
 
 @item cl_I binomial (uintL n, uintL k)
+@cindex @code{binomial ()}
 @code{n} and @code{k} must be small integers >= 0. This function returns the
 binomial coefficient
 @tex
@@ -1805,6 +1983,7 @@ defines the following operations.
 
 @table @code
 @item @var{type} scale_float (const @var{type}& x, sintL delta)
+@cindex @code{scale_float ()}
 @itemx @var{type} scale_float (const @var{type}& x, const cl_I& delta)
 Returns @code{x*2^delta}. This is more efficient than an explicit multiplication
 because it copies @code{x} and modifies the exponent.
@@ -1815,23 +1994,28 @@ representation of floating-point numbers.
 
 @table @code
 @item sintL float_exponent (const @var{type}& x)
+@cindex @code{float_exponent ()}
 Returns the exponent @code{e} of @code{x}.
 For @code{x = 0.0}, this is 0. For @code{x} non-zero, this is the unique
 integer with @code{2^(e-1) <= abs(x) < 2^e}.
 
 @item sintL float_radix (const @var{type}& x)
+@cindex @code{float_radix ()}
 Returns the base of the floating-point representation. This is always @code{2}.
 
 @item @var{type} float_sign (const @var{type}& x)
+@cindex @code{float_sign ()}
 Returns the sign @code{s} of @code{x} as a float. The value is 1 for
 @code{x} >= 0, -1 for @code{x} < 0.
 
 @item uintL float_digits (const @var{type}& x)
+@cindex @code{float_digits ()}
 Returns the number of mantissa bits in the floating-point representation
 of @code{x}, including the hidden bit. The value only depends on the type
 of @code{x}, not on its value.
 
 @item uintL float_precision (const @var{type}& x)
+@cindex @code{float_precision ()}
 Returns the number of significant mantissa bits in the floating-point
 representation of @code{x}. Since denormalized numbers are not supported,
 this is the same as @code{float_digits(x)} if @code{x} is non-zero, and
@@ -1839,6 +2023,11 @@ this is the same as @code{float_digits(x)} if @code{x} is non-zero, and
 @end table
 
 The complete internal representation of a float is encoded in the type
+@cindex @code{cl_decoded_float}
+@cindex @code{cl_decoded_sfloat}
+@cindex @code{cl_decoded_ffloat}
+@cindex @code{cl_decoded_dfloat}
+@cindex @code{cl_decoded_lfloat}
 @code{cl_decoded_float} (or @code{cl_decoded_sfloat}, @code{cl_decoded_ffloat},
 @code{cl_decoded_dfloat}, @code{cl_decoded_lfloat}, respectively), defined by
 @example
@@ -1851,6 +2040,7 @@ and returned by the function
 
 @table @code
 @item cl_decoded_@var{type}float decode_float (const @var{type}& x)
+@cindex @code{decode_float ()}
 For @code{x} non-zero, this returns @code{(-1)^s}, @code{e}, @code{m} with
 @code{x = (-1)^s * 2^e * m} and @code{0.5 <= m < 1.0}. For @code{x} = 0,
 it returns @code{(-1)^s}=1, @code{e}=0, @code{m}=0.
@@ -1859,6 +2049,7 @@ it returns @code{(-1)^s}=1, @code{e}=0, @code{m}=0.
 
 A complete decoding in terms of integers is provided as type
 @example
+@cindex @code{cl_idecoded_float}
 struct cl_idecoded_float @{
         cl_I mantissa; cl_I exponent; cl_I sign;
 @};
@@ -1867,6 +2058,7 @@ by the following function:
 
 @table @code
 @item cl_idecoded_float integer_decode_float (const @var{type}& x)
+@cindex @code{integer_decode_float ()}
 For @code{x} non-zero, this returns @code{(-1)^s}, @code{e}, @code{m} with
 @code{x = (-1)^s * 2^e * m} and @code{m} an integer with @code{float_digits(x)}
 bits. For @code{x} = 0, it returns @code{(-1)^s}=1, @code{e}=0, @code{m}=0.
@@ -1878,6 +2070,7 @@ Some other function, implemented only for class @code{cl_F}:
 
 @table @code
 @item cl_F float_sign (const cl_F& x, const cl_F& y)
+@cindex @code{float_sign ()}
 This returns a floating point number whose precision and absolute value
 is that of @code{y} and whose sign is that of @code{x}. If @code{x} is
 zero, it is treated as positive. Same for @code{y}.
@@ -1885,6 +2078,7 @@ zero, it is treated as positive. Same for @code{y}.
 
 
 @section Conversion functions
+@cindex conversion
 
 @subsection Conversion to floating-point numbers
 
@@ -1892,6 +2086,7 @@ The type @code{cl_float_format_t} describes a floating-point format.
 
 @table @code
 @item cl_float_format_t cl_float_format (uintL n)
+@cindex @code{cl_float_format ()}
 Returns the smallest float format which guarantees at least @code{n}
 decimal digits in the mantissa (after the decimal point).
 
@@ -1899,6 +2094,7 @@ decimal digits in the mantissa (after the decimal point).
 Returns the floating point format of @code{x}.
 
 @item cl_float_format_t cl_default_float_format
+@cindex @code{cl_default_float_format}
 Global variable: the default float format used when converting rational numbers
 to floats.
 @end table
@@ -1910,6 +2106,7 @@ defines the following operations:
 
 @table @code
 @item cl_F cl_float (const @var{type}&x, cl_float_format_t f)
+@cindex @code{cl_float}
 Returns @code{x} as a float of format @code{f}.
 @item cl_F cl_float (const @var{type}&x, const cl_F& y)
 Returns @code{x} in the float format of @code{y}.
@@ -1924,23 +2121,29 @@ Every floating-point format has some characteristic numbers:
 
 @table @code
 @item cl_F most_positive_float (cl_float_format_t f)
+@cindex @code{most_positive_float ()}
 Returns the largest (most positive) floating point number in float format @code{f}.
 
 @item cl_F most_negative_float (cl_float_format_t f)
+@cindex @code{most_negative_float ()}
 Returns the smallest (most negative) floating point number in float format @code{f}.
 
 @item cl_F least_positive_float (cl_float_format_t f)
+@cindex @code{least_positive_float ()}
 Returns the least positive floating point number (i.e. > 0 but closest to 0)
 in float format @code{f}.
 
 @item cl_F least_negative_float (cl_float_format_t f)
+@cindex @code{least_negative_float ()}
 Returns the least negative floating point number (i.e. < 0 but closest to 0)
 in float format @code{f}.
 
 @item cl_F float_epsilon (cl_float_format_t f)
+@cindex @code{float_epsilon ()}
 Returns the smallest floating point number e > 0 such that @code{1+e != 1}.
 
 @item cl_F float_negative_epsilon (cl_float_format_t f)
+@cindex @code{float_negative_epsilon ()}
 Returns the smallest floating point number e > 0 such that @code{1-e != 1}.
 @end table
 
@@ -1952,6 +2155,7 @@ defines the following operation:
 
 @table @code
 @item cl_RA rational (const @var{type}& x)
+@cindex @code{rational ()}
 Returns the value of @code{x} as an exact number. If @code{x} is already
 an exact number, this is @code{x}. If @code{x} is a floating-point number,
 the value is a rational number whose denominator is a power of 2.
@@ -1962,6 +2166,7 @@ the function
 
 @table @code
 @item cl_RA rationalize (const cl_R& x)
+@cindex @code{rationalize ()}
 If @code{x} is a floating-point number, it actually represents an interval
 of real numbers, and this function returns the rational number with
 smallest denominator (and smallest numerator, in magnitude)
@@ -1993,6 +2198,7 @@ Calling one of these modifies the state of the random number generator in
 a complicated but deterministic way.
 
 The global variable
+@cindex @code{cl_default_random_state}
 @example
 cl_random_state cl_default_random_state
 @end example
@@ -2002,26 +2208,31 @@ below are called without @code{cl_random_state} argument.
 @table @code
 @item uint32 random32 (cl_random_state& randomstate)
 @itemx uint32 random32 ()
+@cindex @code{random32 ()}
 Returns a random unsigned 32-bit number. All bits are equally random.
 
 @item cl_I random_I (cl_random_state& randomstate, const cl_I& n)
 @itemx cl_I random_I (const cl_I& n)
+@cindex @code{random_I ()}
 @code{n} must be an integer > 0. This function returns a random integer @code{x}
 in the range @code{0 <= x < n}.
 
 @item cl_F random_F (cl_random_state& randomstate, const cl_F& n)
 @itemx cl_F random_F (const cl_F& n)
+@cindex @code{random_F ()}
 @code{n} must be a float > 0. This function returns a random floating-point
 number of the same format as @code{n} in the range @code{0 <= x < n}.
 
 @item cl_R random_R (cl_random_state& randomstate, const cl_R& n)
 @itemx cl_R random_R (const cl_R& n)
+@cindex @code{random_R ()}
 Behaves like @code{random_I} if @code{n} is an integer and like @code{random_F}
 if @code{n} is a float.
 @end table
 
 
 @section Obfuscating operators
+@cindex modifying operators
 
 The modifying C/C++ operators @code{+=}, @code{-=}, @code{*=}, @code{/=},
 @code{&=}, @code{|=}, @code{^=}, @code{<<=}, @code{>>=}
@@ -2032,6 +2243,7 @@ to get happy, then add
 @example
 #define WANT_OBFUSCATING_OPERATORS
 @end example
+@cindex @code{WANT_OBFUSCATING_OPERATORS}
 to the beginning of your source files, before the inclusion of any CLN
 include files. This flag will enable the following operators:
 
@@ -2040,9 +2252,13 @@ For the classes @code{cl_N}, @code{cl_R}, @code{cl_RA},
 
 @table @code
 @item @var{type}& operator += (@var{type}&, const @var{type}&)
+@cindex @code{operator += ()}
 @itemx @var{type}& operator -= (@var{type}&, const @var{type}&)
+@cindex @code{operator -= ()}
 @itemx @var{type}& operator *= (@var{type}&, const @var{type}&)
+@cindex @code{operator *= ()}
 @itemx @var{type}& operator /= (@var{type}&, const @var{type}&)
+@cindex @code{operator /= ()}
 @end table
 
 For the class @code{cl_I}:
@@ -2052,10 +2268,15 @@ For the class @code{cl_I}:
 @itemx @var{type}& operator -= (@var{type}&, const @var{type}&)
 @itemx @var{type}& operator *= (@var{type}&, const @var{type}&)
 @itemx @var{type}& operator &= (@var{type}&, const @var{type}&)
+@cindex @code{operator &= ()}
 @itemx @var{type}& operator |= (@var{type}&, const @var{type}&)
+@cindex @code{operator |= ()}
 @itemx @var{type}& operator ^= (@var{type}&, const @var{type}&)
+@cindex @code{operator ^= ()}
 @itemx @var{type}& operator <<= (@var{type}&, const @var{type}&)
+@cindex @code{operator <<= ()}
 @itemx @var{type}& operator >>= (@var{type}&, const @var{type}&)
+@cindex @code{operator >>= ()}
 @end table
 
 For the classes @code{cl_N}, @code{cl_R}, @code{cl_RA}, @code{cl_I},
@@ -2063,12 +2284,14 @@ For the classes @code{cl_N}, @code{cl_R}, @code{cl_RA}, @code{cl_I},
 
 @table @code
 @item @var{type}& operator ++ (@var{type}& x)
+@cindex @code{operator ++ ()}
 The prefix operator @code{++x}.
 
 @item void operator ++ (@var{type}& x, int)
 The postfix operator @code{x++}.
 
 @item @var{type}& operator -- (@var{type}& x)
+@cindex @code{operator -- ()}
 The prefix operator @code{--x}.
 
 @item void operator -- (@var{type}& x, int)
@@ -2081,8 +2304,10 @@ efficient.
 
 
 @chapter Input/Output
+@cindex Input/Output
 
 @section Internal and printed representation
+@cindex representation
 
 All computations deal with the internal representations of the numbers.
 
@@ -2091,8 +2316,10 @@ Several external representations may denote the same number, for example,
 "20.0" and "20.000".
 
 Converting an internal to an external representation is called ``printing'',
+@cindex printing
 converting an external to an internal representation is called ``reading''.
-In CLN, is it always true that conversion of an internal to an external
+@cindex reading
+In CLN, it is always true that conversion of an internal to an external
 representation and then back to an internal representation will yield the
 same internal representation. Symbolically: @code{read(print(x)) == x}.
 This is called ``print-read consistency''. 
@@ -2366,7 +2593,7 @@ using this variable name. Default is @code{"x"}.
 @end table
 
 The global variable @code{cl_default_print_flags} contains the default values,
-used by the function @code{fprint},
+used by the function @code{fprint}.
 
 
 @chapter Rings
@@ -2433,8 +2660,10 @@ Tests whether the given number is an element of the number ring R.
 
 
 @chapter Modular integers
+@cindex modular integer
 
 @section Modular integer rings
+@cindex ring
 
 CLN implements modular integers, i.e. integers modulo a fixed integer N.
 The modulus is explicitly part of every modular integer. CLN doesn't
@@ -2468,9 +2697,11 @@ Modular integer rings are constructed using the function
 
 @table @code
 @item cl_modint_ring cl_find_modint_ring (const cl_I& N)
+@cindex @code{cl_find_modint_ring ()}
 This function returns the modular ring @samp{Z/NZ}. It takes care
 of finding out about special cases of @code{N}, like powers of two
 and odd numbers for which Montgomery multiplication will be a win,
+@cindex Montgomery multiplication
 and precomputes any necessary auxiliary data for computing modulo @code{N}.
 There is a cache table of rings, indexed by @code{N} (or, more precisely,
 by @code{abs(N)}). This ensures that the precomputation costs are reduced
@@ -2481,7 +2712,9 @@ Modular integer rings can be compared for equality:
 
 @table @code
 @item bool operator== (const cl_modint_ring&, const cl_modint_ring&)
+@cindex @code{operator == ()}
 @itemx bool operator!= (const cl_modint_ring&, const cl_modint_ring&)
+@cindex @code{operator != ()}
 These compare two modular integer rings for equality. Two different calls
 to @code{cl_find_modint_ring} with the same argument necessarily return the
 same ring because it is memoized in the cache table.
@@ -2493,23 +2726,29 @@ Given a modular integer ring @code{R}, the following members can be used.
 
 @table @code
 @item cl_I R->modulus
+@cindex @code{modulus}
 This is the ring's modulus, normalized to be nonnegative: @code{abs(N)}.
 
 @item cl_MI R->zero()
+@cindex @code{zero ()}
 This returns @code{0 mod N}.
 
 @item cl_MI R->one()
+@cindex @code{one ()}
 This returns @code{1 mod N}.
 
 @item cl_MI R->canonhom (const cl_I& x)
+@cindex @code{canonhom ()}
 This returns @code{x mod N}.
 
 @item cl_I R->retract (const cl_MI& x)
+@cindex @code{etract ()}
 This is a partial inverse function to @code{R->canonhom}. It returns the
 standard representative (@code{>=0}, @code{<N}) of @code{x}.
 
 @item cl_MI R->random(cl_random_state& randomstate)
 @itemx cl_MI R->random()
+@cindex @code{random ()}
 This returns a random integer modulo @code{N}.
 @end table
 
@@ -2517,13 +2756,16 @@ The following operations are defined on modular integers.
 
 @table @code
 @item cl_modint_ring x.ring ()
+@cindex @code{ring()}
 Returns the ring to which the modular integer @code{x} belongs.
 
 @item cl_MI operator+ (const cl_MI&, const cl_MI&)
+@cindex @code{operator + ()}
 Returns the sum of two modular integers. One of the arguments may also be
 a plain integer.
 
 @item cl_MI operator- (const cl_MI&, const cl_MI&)
+@cindex @code{operator - ()}
 Returns the difference of two modular integers. One of the arguments may also be
 a plain integer.
 
@@ -2531,40 +2773,51 @@ a plain integer.
 Returns the negative of a modular integer.
 
 @item cl_MI operator* (const cl_MI&, const cl_MI&)
+@cindex @code{operator * ()}
 Returns the product of two modular integers. One of the arguments may also be
 a plain integer.
 
 @item cl_MI square (const cl_MI&)
+@cindex @code{square ()}
 Returns the square of a modular integer.
 
 @item cl_MI recip (const cl_MI& x)
+@cindex @code{recip ()}
 Returns the reciprocal @code{x^-1} of a modular integer @code{x}. @code{x}
 must be coprime to the modulus, otherwise an error message is issued.
 
 @item cl_MI div (const cl_MI& x, const cl_MI& y)
+@cindex @code{div ()}
 Returns the quotient @code{x*y^-1} of two modular integers @code{x}, @code{y}.
 @code{y} must be coprime to the modulus, otherwise an error message is issued.
 
 @item cl_MI expt_pos (const cl_MI& x, const cl_I& y)
+@cindex @code{expt_pos ()}
 @code{y} must be > 0. Returns @code{x^y}.
 
 @item cl_MI expt (const cl_MI& x, const cl_I& y)
+@cindex @code{expt ()}
 Returns @code{x^y}. If @code{y} is negative, @code{x} must be coprime to the
 modulus, else an error message is issued.
 
 @item cl_MI operator<< (const cl_MI& x, const cl_I& y)
+@cindex @code{operator << ()}
 Returns @code{x*2^y}.
 
 @item cl_MI operator>> (const cl_MI& x, const cl_I& y)
+@cindex @code{operator >> ()}
 Returns @code{x*2^-y}. When @code{y} is positive, the modulus must be odd,
 or an error message is issued.
 
 @item bool operator== (const cl_MI&, const cl_MI&)
+@cindex @code{operator == ()}
 @itemx bool operator!= (const cl_MI&, const cl_MI&)
+@cindex @code{operator != ()}
 Compares two modular integers, belonging to the same modular integer ring,
 for equality.
 
 @item cl_boolean zerop (const cl_MI& x)
+@cindex @code{zerop ()}
 Returns true if @code{x} is @code{0 mod N}.
 @end table
 
@@ -2573,17 +2826,21 @@ input/output).
 
 @table @code
 @item void fprint (cl_ostream stream, const cl_MI& x)
+@cindex @code{fprint ()}
 @itemx cl_ostream operator<< (cl_ostream stream, const cl_MI& x)
+@cindex @code{operator << ()}
 Prints the modular integer @code{x} on the @code{stream}. The output may depend
 on the global printer settings in the variable @code{cl_default_print_flags}.
 @end table
 
 
 @chapter Symbolic data types
+@cindex symbolic type
 
 CLN implements two symbolic (non-numeric) data types: strings and symbols.
 
 @section Strings
+@cindex string
 
 The class
 
@@ -2599,6 +2856,7 @@ Strings are constructed through the following constructors:
 
 @table @code
 @item cl_string (const char * s)
+@cindex @code{cl_string ()}
 Returns an immutable copy of the (zero-terminated) C string @code{s}.
 
 @item cl_string (const char * ptr, unsigned long len)
@@ -2613,19 +2871,24 @@ The following functions are available on strings:
 Assignment from @code{cl_string} and @code{const char *}.
 
 @item s.length()
+@cindex @code{length ()}
 @itemx strlen(s)
+@cindex @code{strlen ()}
 Returns the length of the string @code{s}.
 
 @item s[i]
+@cindex @code{operator [] ()}
 Returns the @code{i}th character of the string @code{s}.
 @code{i} must be in the range @code{0 <= i < s.length()}.
 
 @item bool equal (const cl_string& s1, const cl_string& s2)
+@cindex @code{equal ()}
 Compares two strings for equality. One of the arguments may also be a
 plain @code{const char *}.
 @end table
 
 @section Symbols
+@cindex symbol
 
 Symbols are uniquified strings: all symbols with the same name are shared.
 This means that comparison of two symbols is fast (effectively just a pointer
@@ -2638,6 +2901,7 @@ Symbols are constructed through the following constructor:
 
 @table @code
 @item cl_symbol (const cl_string& s)
+@cindex @code{cl_symbol ()}
 Looks up or creates a new symbol with a given name.
 @end table
 
@@ -2649,11 +2913,14 @@ Conversion to @code{cl_string}: Returns the string which names the symbol
 @code{sym}.
 
 @item bool equal (const cl_symbol& sym1, const cl_symbol& sym2)
+@cindex @code{equal ()}
 Compares two symbols for equality. This is very fast.
 @end table
 
 
 @chapter Univariate polynomials
+@cindex polynomial
+@cindex univariate polynomial
 
 @section Univariate polynomial rings
 
@@ -2749,6 +3016,7 @@ This ensures that two calls of this function with the same arguments will
 return the same polynomial ring.
 
 @item cl_univpoly_complex_ring cl_find_univpoly_ring (const cl_complex_ring& R)
+@cindex @code{cl_find_univpoly_ring ()}
 @itemx cl_univpoly_complex_ring cl_find_univpoly_ring (const cl_complex_ring& R, const cl_symbol& varname)
 @itemx cl_univpoly_real_ring cl_find_univpoly_ring (const cl_real_ring& R)
 @itemx cl_univpoly_real_ring cl_find_univpoly_ring (const cl_real_ring& R, const cl_symbol& varname)
@@ -2768,22 +3036,28 @@ Given a univariate polynomial ring @code{R}, the following members can be used.
 
 @table @code
 @item cl_ring R->basering()
+@cindex @code{basering ()}
 This returns the base ring, as passed to @samp{cl_find_univpoly_ring}.
 
 @item cl_UP R->zero()
+@cindex @code{zero ()}
 This returns @code{0 in R}, a polynomial of degree -1.
 
 @item cl_UP R->one()
+@cindex @code{one ()}
 This returns @code{1 in R}, a polynomial of degree <= 0.
 
 @item cl_UP R->canonhom (const cl_I& x)
+@cindex @code{canonhom ()}
 This returns @code{x in R}, a polynomial of degree <= 0.
 
 @item cl_UP R->monomial (const cl_ring_element& x, uintL e)
+@cindex @code{monomial ()}
 This returns a sparse polynomial: @code{x * X^e}, where @code{X} is the
 indeterminate.
 
 @item cl_UP R->create (sintL degree)
+@cindex @code{create ()}
 Creates a new polynomial with a given degree. The zero polynomial has degree
 @code{-1}. After creating the polynomial, you should put in the coefficients,
 using the @code{set_coeff} member function, and then call the @code{finalize}
@@ -2794,11 +3068,13 @@ The following are the only destructive operations on univariate polynomials.
 
 @table @code
 @item void set_coeff (cl_UP& x, uintL index, const cl_ring_element& y)
+@cindex @code{set_coeff ()}
 This changes the coefficient of @code{X^index} in @code{x} to be @code{y}.
 After changing a polynomial and before applying any "normal" operation on it,
 you should call its @code{finalize} member function.
 
 @item void finalize (cl_UP& x)
+@cindex @code{finalize ()}
 This function marks the endpoint of destructive modifications of a polynomial.
 It normalizes the internal representation so that subsequent computations have
 less overhead. Doing normal computations on unnormalized polynomials may
@@ -2809,47 +3085,60 @@ The following operations are defined on univariate polynomials.
 
 @table @code
 @item cl_univpoly_ring x.ring ()
+@cindex @code{ring ()}
 Returns the ring to which the univariate polynomial @code{x} belongs.
 
 @item cl_UP operator+ (const cl_UP&, const cl_UP&)
+@cindex @code{operator + ()}
 Returns the sum of two univariate polynomials.
 
 @item cl_UP operator- (const cl_UP&, const cl_UP&)
+@cindex @code{operator - ()}
 Returns the difference of two univariate polynomials.
 
 @item cl_UP operator- (const cl_UP&)
 Returns the negative of a univariate polynomial.
 
 @item cl_UP operator* (const cl_UP&, const cl_UP&)
+@cindex @code{operator * ()}
 Returns the product of two univariate polynomials. One of the arguments may
 also be a plain integer or an element of the base ring.
 
 @item cl_UP square (const cl_UP&)
+@cindex @code{square ()}
 Returns the square of a univariate polynomial.
 
 @item cl_UP expt_pos (const cl_UP& x, const cl_I& y)
+@cindex @code{expt_pos ()}
 @code{y} must be > 0. Returns @code{x^y}.
 
 @item bool operator== (const cl_UP&, const cl_UP&)
+@cindex @code{operator == ()}
 @itemx bool operator!= (const cl_UP&, const cl_UP&)
+@cindex @code{operator != ()}
 Compares two univariate polynomials, belonging to the same univariate
 polynomial ring, for equality.
 
 @item cl_boolean zerop (const cl_UP& x)
+@cindex @code{zerop ()}
 Returns true if @code{x} is @code{0 in R}.
 
 @item sintL degree (const cl_UP& x)
+@cindex @code{degree ()}
 Returns the degree of the polynomial. The zero polynomial has degree @code{-1}.
 
 @item cl_ring_element coeff (const cl_UP& x, uintL index)
+@cindex @code{coeff ()}
 Returns the coefficient of @code{X^index} in the polynomial @code{x}.
 
 @item cl_ring_element x (const cl_ring_element& y)
+@cindex @code{operator () ()}
 Evaluation: If @code{x} is a polynomial and @code{y} belongs to the base ring,
 then @samp{x(y)} returns the value of the substitution of @code{y} into
 @code{x}.
 
 @item cl_UP deriv (const cl_UP& x)
+@cindex @code{deriv ()}
 Returns the derivative of the polynomial @code{x} with respect to the
 indeterminate @code{X}.
 @end table
@@ -2859,7 +3148,9 @@ input/output).
 
 @table @code
 @item void fprint (cl_ostream stream, const cl_UP& x)
+@cindex @code{fprint ()}
 @itemx cl_ostream operator<< (cl_ostream stream, const cl_UP& x)
+@cindex @code{operator << ()}
 Prints the univariate polynomial @code{x} on the @code{stream}. The output may
 depend on the global printer settings in the variable
 @code{cl_default_print_flags}.
@@ -2871,15 +3162,23 @@ The following functions return special polynomials.
 
 @table @code
 @item cl_UP_I cl_tschebychev (sintL n)
+@cindex @code{cl_tschebychev ()}
+@cindex Tschebychev polynomial
 Returns the n-th Tchebychev polynomial (n >= 0).
 
 @item cl_UP_I cl_hermite (sintL n)
+@cindex @code{cl_hermite ()}
+@cindex Hermite polynomial
 Returns the n-th Hermite polynomial (n >= 0).
 
 @item cl_UP_RA cl_legendre (sintL n)
+@cindex @code{cl_legendre ()}
+@cindex Legende polynomial
 Returns the n-th Legendre polynomial (n >= 0).
 
 @item cl_UP_I cl_laguerre (sintL n)
+@cindex @code{cl_laguerre ()}
+@cindex Laguerre polynomial
 Returns the n-th Laguerre polynomial (n >= 0).
 @end table
 
@@ -2891,6 +3190,7 @@ of these polynomials from their definition can be found in the
 @chapter Internals
 
 @section Why C++ ?
+@cindex advocacy
 
 Using C++ as an implementation language provides
 
@@ -2899,6 +3199,7 @@ Using C++ as an implementation language provides
 Efficiency: It compiles to machine code.
 
 @item
+@cindex portability
 Portability: It runs on all platforms supporting a C++ compiler. Because
 of the availability of GNU C++, this includes all currently used 32-bit and
 64-bit platforms, independently of the quality of the vendor's C++ compiler.
@@ -2907,7 +3208,7 @@ of the availability of GNU C++, this includes all currently used 32-bit and
 Type safety: The C++ compilers knows about the number types and complains if,
 for example, you try to assign a float to an integer variable. However,
 a drawback is that C++ doesn't know about generic types, hence a restriction
-like that @code{operation+ (const cl_MI&, const cl_MI&)} requires that both
+like that @code{operator+ (const cl_MI&, const cl_MI&)} requires that both
 arguments belong to the same modular ring cannot be expressed as a compile-time
 information.
 
@@ -2934,6 +3235,8 @@ In order to save memory allocations, CLN implements:
 Object sharing: An operation like @code{x+0} returns @code{x} without copying
 it.
 @item
+@cindex garbage collection
+@cindex reference counting
 Garbage collection: A reference counting mechanism makes sure that any
 number object's storage is freed immediately when the last reference to the
 object is gone.
@@ -2958,8 +3261,8 @@ memory access, just a couple of instructions for each elementary operation.
 The kernel of CLN has been written in assembly language for some CPUs
 (@code{i386}, @code{m68k}, @code{sparc}, @code{mips}, @code{arm}).
 @item
-On all CPUs, CLN uses the superefficient low-level routines from GNU
-GMP version 2.
+On all CPUs, CLN may be configured to use the superefficient low-level
+routines from GNU GMP version 3.
 @item
 For large numbers, CLN uses, instead of the standard @code{O(N^2)}
 algorithm, the Karatsuba multiplication, which is an
@@ -2976,9 +3279,11 @@ algorithm.
 For very large numbers (more than 12000 decimal digits), CLN uses
 @iftex
 Sch{@"o}nhage-Strassen
+@cindex Sch{@"o}nhage-Strassen
 @end iftex
 @ifinfo
 Schönhage-Strassen
+@cindex Schönhage-Strassen
 @end ifinfo
 multiplication, which is an asymptotically
 optimal multiplication algorithm.
@@ -2989,6 +3294,7 @@ of division and radix conversion.
 
 
 @section Garbage collection
+@cindex garbage collection
 
 All the number classes are reference count classes: They only contain a pointer
 to an object in the heap. Upon construction, assignment and destruction of
@@ -3014,6 +3320,7 @@ environment variables, or directly substitute the appropriate values.
 
 
 @section Compiler options
+@cindex compiler options
 
 Until you have installed CLN in a public place, the following options are
 needed:
@@ -3037,6 +3344,8 @@ linking a CLN application it is sufficient to give the flag @code{-lcln}.
 
 
 @section Include files
+@cindex include files
+@cindex header files
 
 Here is a summary of the include files and their contents.
 
@@ -3167,6 +3476,7 @@ Includes all of the above.
 @section An Example
 
 A function which computes the nth Fibonacci number can be written as follows.
+@cindex Fibonacci number
 
 @example
 #include <cl_integer.h>
@@ -3227,8 +3537,11 @@ When the function returns, all the local variables in the function are
 automatically reclaimed (garbage collected). Only the result survives and
 gets passed to the caller.
 
+The file @code{fibonacci.cc} in the subdirectory @code{examples}
+contains this implementation together with an even faster algorithm.
 
 @section Debugging support
+@cindex debugging
 
 When debugging a CLN application with GNU @code{gdb}, two facilities are
 available from the library:
@@ -3253,6 +3566,7 @@ CLN offers a function @code{cl_print}, callable from the debugger,
 for printing number objects. In order to get this function, you have
 to define the macro @samp{CL_DEBUG} and then include all the header files
 for which you want @code{cl_print} debugging support. For example:
+@cindex @code{CL_DEBUG}
 @example
 #define CL_DEBUG
 #include <cl_string.h>
@@ -3275,6 +3589,7 @@ only with number objects and similar. Therefore CLN offers a member function
 @code{debug_print()} on all CLN types. The same macro @samp{CL_DEBUG}
 is needed for this member function to be implemented. Under @code{gdb},
 you call it like this:
+@cindex @code{debug_print ()}
 @example
 (gdb) print s
 $7 = @{<cl_gcpointer> = @{ = @{pointer = 0x8055b60, heappointer = 0x8055b60,
@@ -3292,6 +3607,7 @@ Unfortunately, this feature does not seem to work under all circumstances.
 
 
 @chapter Customizing
+@cindex customizing
 
 @section Error handling
 
@@ -3304,10 +3620,12 @@ yourself, with the prototype
 #include <cl_abort.h>
 void cl_abort (void);
 @end example
+@cindex @code{cl_abort ()}
 This function must not return control to its caller.
 
 
 @section Floating-point underflow
+@cindex underflow
 
 Floating point underflow denotes the situation when a floating-point number
 is to be created which is so close to @code{0} that its exponent is too
@@ -3317,15 +3635,15 @@ If you set the global variable
 cl_boolean cl_inhibit_floating_point_underflow
 @end example
 to @code{cl_true}, the error will be inhibited, and a floating-point zero
-will be generated instead.
-The default value of @code{cl_inhibit_floating_point_underflow} is
-@code{cl_false}.
+will be generated instead.  The default value of 
+@code{cl_inhibit_floating_point_underflow} is @code{cl_false}.
 
 
 @section Customizing I/O
 
 The output of the function @code{fprint} may be customized by changing the
 value of the global variable @code{cl_default_print_flags}.
+@cindex @code{cl_default_print_flags}
 
 
 @section Customizing the memory allocator
@@ -3343,6 +3661,8 @@ like this:
 void* (*cl_malloc_hook) (size_t size) = @dots{};
 void (*cl_free_hook) (void* ptr)      = @dots{};
 @end example
+@cindex @code{cl_malloc_hook ()}
+@cindex @code{cl_free_hook ()}
 The @code{cl_malloc_hook} function must not return a @code{NULL} pointer.
 
 It is not possible to change the memory allocator at runtime, because
index 5f89fc2694692f715ce4bb452e5f4e8a2159a3dc..2ddb3b95b4a2d3c23b348c9a03829230ed995b02 100644 (file)
@@ -313,8 +313,9 @@ CLN is speed efficient:
 The kernel of CLN has been written in assembly language for some CPUs
 (@code{i386}, @code{m68k}, @code{sparc}, @code{mips}, @code{arm}).
 @item
-On all CPUs, CLN uses the superefficient low-level routines from GNU
-GMP version 2.
+@cindex GMP
+On all CPUs, CLN may be configured to use the superefficient low-level
+routines from GNU GMP version 3.
 @item
 It uses Karatsuba multiplication, which is significantly faster
 for large numbers than the standard multiplication algorithm.
@@ -322,13 +323,14 @@ for large numbers than the standard multiplication algorithm.
 For very large numbers (more than 12000 decimal digits), it uses
 @iftex
 Sch{@"o}nhage-Strassen
+@cindex Sch{@"o}nhage-Strassen multiplication
 @end iftex
 @ifinfo
 Schönhage-Strassen
+@cindex Schönhage-Strassen multiplication
 @end ifinfo
-multiplication, which is an asymptotically
-optimal multiplication algorithm, for multiplication, division and
-radix conversion.
+multiplication, which is an asymptotically optimal multiplication
+algorithm, for multiplication, division and radix conversion.
 @end itemize
 
 @noindent
@@ -370,7 +372,7 @@ This section describes how to install the CLN package on your system.
 To build CLN, you need a C++ compiler.
 Actually, you need GNU @code{g++ 2.7.0} or newer.
 On HPPA, you need GNU @code{g++ 2.8.0} or newer.
-I recommend GNU @code{egcs 1.1} or newer.
+I recommend GNU @code{g++ 2.95} or newer.
 
 The following C++ features are used:
 classes, member functions,
@@ -419,11 +421,13 @@ initializations will not work.
 @end itemize
 @end ignore
 
+@cindex @code{make}
 @node Make utility, Sed utility, C++ compiler, Prerequisites
 @subsection Make utility
 
 To build CLN, you also need to have GNU @code{make} installed.
 
+@cindex @code{sed}
 @node Sed utility,  , Make utility, Prerequisites
 @subsection Sed utility
 
@@ -538,9 +542,6 @@ add either @samp{-O} or @samp{-O2 -fno-schedule-insns} to the CXXFLAGS.
 With full @samp{-O2}, @code{g++} miscompiles the division routines. Also, for
 --enable-shared to work, you need egcs-1.1.2 or newer.
 
-On MIPS (SGI Irix 6), pass option @code{--without-gmp} to configure. gmp does
-not work when compiled in @samp{n32} binary format on Irix.
-
 By default, only a static library is built. You can build CLN as a shared
 library too, by calling @code{configure} with the option @samp{--enable-shared}.
 To get it built as a shared library only, call @code{configure} with the options
@@ -553,6 +554,7 @@ library.
 
 @node Installing the library, Cleaning up, Building the library, Installation
 @section Installing the library
+@cindex installation
 
 As with any autoconfiguring GNU software, installation is as easy as this:
 
@@ -621,23 +623,33 @@ Rational number                     Floating-point number
                    <cl_sfloat.h> <cl_ffloat.h> <cl_dfloat.h> <cl_lfloat.h>
 @end example
 
+@cindex @code{cl_number}
+@cindex abstract class
 The base class @code{cl_number} is an abstract base class.
 It is not useful to declare a variable of this type except if you want
 to completely disable compile-time type checking and use run-time type
 checking instead.
 
+@cindex @code{cl_N}
+@cindex real number
+@cindex complex number
 The class @code{cl_N} comprises real and complex numbers. There is
 no special class for complex numbers since complex numbers with imaginary
 part @code{0} are automatically converted to real numbers.
 
+@cindex @code{cl_R}
 The class @code{cl_R} comprises real numbers of different kinds. It is an
 abstract class.
 
+@cindex @code{cl_RA}
+@cindex rational number
+@cindex integer
 The class @code{cl_RA} comprises exact real numbers: rational numbers, including
 integers. There is no special class for non-integral rational numbers
 since rational numbers with denominator @code{1} are automatically converted
 to integers.
 
+@cindex @code{cl_F}
 The class @code{cl_F} implements floating-point approximations to real numbers.
 It is an abstract class.
 
@@ -651,6 +663,7 @@ It is an abstract class.
 
 @node Exact numbers, Floating-point numbers, Ordinary number types, Ordinary number types
 @section Exact numbers
+@cindex exact number
 
 Some numbers are represented as exact numbers: there is no loss of information
 when such a number is converted from its mathematical value to its internal
@@ -681,6 +694,7 @@ is completely transparent.
 
 @node Floating-point numbers, Complex numbers, Exact numbers, Ordinary number types
 @section Floating-point numbers
+@cindex floating-point number
 
 Not all real numbers can be represented exactly. (There is an easy mathematical
 proof for this: Only a countable set of numbers can be stored exactly in
@@ -688,6 +702,7 @@ a computer, even if one assumes that it has unlimited storage. But there
 are uncountably many real numbers.) So some approximation is needed.
 CLN implements ordinary floating-point numbers, with mantissa and exponent.
 
+@cindex rounding error
 The elementary operations (@code{+}, @code{-}, @code{*}, @code{/}, @dots{})
 only return approximate results. For example, the value of the expression
 @code{(cl_F) 0.3 + (cl_F) 0.4} prints as @samp{0.70000005}, not as
@@ -709,12 +724,14 @@ Floating point numbers come in four flavors:
 
 @itemize @bullet
 @item
+@cindex @code{cl_SF}
 Short floats, type @code{cl_SF}.
 They have 1 sign bit, 8 exponent bits (including the exponent's sign),
 and 17 mantissa bits (including the ``hidden'' bit).
 They don't consume heap allocation.
 
 @item
+@cindex @code{cl_FF}
 Single floats, type @code{cl_FF}.
 They have 1 sign bit, 8 exponent bits (including the exponent's sign),
 and 24 mantissa bits (including the ``hidden'' bit).
@@ -722,6 +739,7 @@ In CLN, they are represented as IEEE single-precision floating point numbers.
 This corresponds closely to the C/C++ type @samp{float}.
 
 @item
+@cindex @code{cl_DF}
 Double floats, type @code{cl_DF}.
 They have 1 sign bit, 11 exponent bits (including the exponent's sign),
 and 53 mantissa bits (including the ``hidden'' bit).
@@ -729,6 +747,7 @@ In CLN, they are represented as IEEE double-precision floating point numbers.
 This corresponds closely to the C/C++ type @samp{double}.
 
 @item
+@cindex @code{cl_LF}
 Long floats, type @code{cl_LF}.
 They have 1 sign bit, 32 exponent bits (including the exponent's sign),
 and n mantissa bits (including the ``hidden'' bit), where n >= 64.
@@ -744,6 +763,7 @@ gradual underflow. If the exponent range of some floating-point type
 is too limited for your application, choose another floating-point type
 with larger exponent range.
 
+@cindex @code{cl_F}
 As a user of CLN, you can forget about the differences between the
 four floating-point types and just declare all your floating-point
 variables as being of type @code{cl_F}. This has the advantage that
@@ -758,6 +778,7 @@ the floating point contagion rule happened to change in the future.)
 
 @node Complex numbers, Conversions, Floating-point numbers, Ordinary number types
 @section Complex numbers
+@cindex complex number
 
 Complex numbers, as implemented by the class @code{cl_N}, have a real
 part and an imaginary part, both real numbers. A complex number whose
@@ -770,6 +791,7 @@ through application of @code{sqrt} or transcendental functions.
 
 @node Conversions,  , Complex numbers, Ordinary number types
 @section Conversions
+@cindex conversion
 
 Conversions from any class to any its superclasses (``base classes'' in
 C++ terminology) is done automatically.
@@ -811,6 +833,7 @@ Conversions from @samp{const char *} are provided for the classes
 @code{cl_R}, @code{cl_N}.
 The easiest way to specify a value which is outside of the range of the
 C++ built-in types is therefore to specify it as a string, like this:
+@cindex Rubik's cube
 @example
    cl_I order_of_rubiks_cube_group = "43252003274489856000";
 @end example
@@ -822,9 +845,13 @@ the functions
 
 @table @code
 @item int cl_I_to_int (const cl_I& x)
+@cindex @code{cl_I_to_int ()}
 @itemx unsigned int cl_I_to_uint (const cl_I& x)
+@cindex @code{cl_I_to_uint ()}
 @itemx long cl_I_to_long (const cl_I& x)
+@cindex @code{cl_I_to_long ()}
 @itemx unsigned long cl_I_to_ulong (const cl_I& x)
+@cindex @code{cl_I_to_ulong ()}
 Returns @code{x} as element of the C type @var{ctype}. If @code{x} is not
 representable in the range of @var{ctype}, a runtime error occurs.
 @end table
@@ -837,7 +864,9 @@ the functions
 
 @table @code
 @item float cl_float_approx (const @var{type}& x)
+@cindex @code{cl_float_approx ()}
 @itemx double cl_double_approx (const @var{type}& x)
+@cindex @code{cl_double_approx ()}
 Returns an approximation of @code{x} of C type @var{ctype}.
 If @code{abs(x)} is too close to 0 (underflow), 0 is returned.
 If @code{abs(x)} is too large (overflow), an IEEE infinity is returned.
@@ -847,8 +876,10 @@ Conversions from any class to any of its subclasses (``derived classes'' in
 C++ terminology) are not provided. Instead, you can assert and check
 that a value belongs to a certain subclass, and return it as element of that
 class, using the @samp{As} and @samp{The} macros.
+@cindex @code{As() ()}
 @code{As(@var{type})(@var{value})} checks that @var{value} belongs to
 @var{type} and returns it as such.
+@cindex @code{The() ()}
 @code{The(@var{type})(@var{value})} assumes that @var{value} belongs to
 @var{type} and returns it as such. It is your responsibility to ensure
 that this assumption is valid.
@@ -962,24 +993,30 @@ defines the following operations:
 
 @table @code
 @item @var{type} operator + (const @var{type}&, const @var{type}&)
+@cindex @code{operator + ()}
 Addition.
 
 @item @var{type} operator - (const @var{type}&, const @var{type}&)
+@cindex @code{operator - ()}
 Subtraction.
 
 @item @var{type} operator - (const @var{type}&)
 Returns the negative of the argument.
 
 @item @var{type} plus1 (const @var{type}& x)
+@cindex @code{plus1 ()}
 Returns @code{x + 1}.
 
 @item @var{type} minus1 (const @var{type}& x)
+@cindex @code{minus1 ()}
 Returns @code{x - 1}.
 
 @item @var{type} operator * (const @var{type}&, const @var{type}&)
+@cindex @code{operator * ()}
 Multiplication.
 
 @item @var{type} square (const @var{type}& x)
+@cindex @code{square ()}
 Returns @code{x * x}.
 @end table
 
@@ -989,9 +1026,11 @@ defines the following operations:
 
 @table @code
 @item @var{type} operator / (const @var{type}&, const @var{type}&)
+@cindex @code{operator / ()}
 Division.
 
 @item @var{type} recip (const @var{type}&)
+@cindex @code{recip ()}
 Returns the reciprocal of the argument.
 @end table
 
@@ -1003,6 +1042,7 @@ Instead, @code{cl_I} defines an ``exact quotient'' function:
 
 @table @code
 @item cl_I exquo (const cl_I& x, const cl_I& y)
+@cindex @code{exquo ()}
 Checks that @code{y} divides @code{x}, and returns the quotient @code{x}/@code{y}.
 @end table
 
@@ -1010,10 +1050,12 @@ The following exponentiation functions are defined:
 
 @table @code
 @item cl_I expt_pos (const cl_I& x, const cl_I& y)
+@cindex @code{expt_pos ()}
 @itemx cl_RA expt_pos (const cl_RA& x, const cl_I& y)
 @code{y} must be > 0. Returns @code{x^y}.
 
 @item cl_RA expt (const cl_RA& x, const cl_I& y)
+@cindex @code{expt ()}
 @itemx cl_R expt (const cl_R& x, const cl_I& y)
 @itemx cl_N expt (const cl_N& x, const cl_I& y)
 Returns @code{x^y}.
@@ -1025,6 +1067,7 @@ defines the following operation:
 
 @table @code
 @item @var{type} abs (const @var{type}& x)
+@cindex @code{abs ()}
 Returns the absolute value of @code{x}.
 This is @code{x} if @code{x >= 0}, and @code{-x} if @code{x <= 0}.
 @end table
@@ -1042,6 +1085,7 @@ defines the following operation:
 
 @table @code
 @item @var{type} signum (const @var{type}& x)
+@cindex @code{signum ()}
 Returns the sign of @code{x}, in the same number format as @code{x}.
 This is defined as @code{x / abs(x)} if @code{x} is non-zero, and
 @code{x} if @code{x} is zero. If @code{x} is real, the value is either
@@ -1056,9 +1100,11 @@ Each of the classes @code{cl_RA}, @code{cl_I} defines the following operations:
 
 @table @code
 @item cl_I numerator (const @var{type}& x)
+@cindex @code{numerator ()}
 Returns the numerator of @code{x}.
 
 @item cl_I denominator (const @var{type}& x)
+@cindex @code{denominator ()}
 Returns the denominator of @code{x}.
 @end table
 
@@ -1073,6 +1119,7 @@ The class @code{cl_N} defines the following operation:
 
 @table @code
 @item cl_N complex (const cl_R& a, const cl_R& b)
+@cindex @code{complex ()}
 Returns the complex number @code{a+bi}, that is, the complex number with
 real part @code{a} and imaginary part @code{b}.
 @end table
@@ -1081,12 +1128,15 @@ Each of the classes @code{cl_N}, @code{cl_R} defines the following operations:
 
 @table @code
 @item cl_R realpart (const @var{type}& x)
+@cindex @code{realpart ()}
 Returns the real part of @code{x}.
 
 @item cl_R imagpart (const @var{type}& x)
+@cindex @code{imagpart ()}
 Returns the imaginary part of @code{x}.
 
 @item @var{type} conjugate (const @var{type}& x)
+@cindex @code{conjugate ()}
 Returns the complex conjugate of @code{x}.
 @end table
 
@@ -1102,6 +1152,7 @@ We have the relations
 
 @node Comparisons, Rounding functions, Elementary complex functions, Functions on numbers
 @section Comparisons
+@cindex comparison
 
 Each of the classes @code{cl_N}, @code{cl_R}, @code{cl_RA}, @code{cl_I},
 @code{cl_F}, @code{cl_SF}, @code{cl_FF}, @code{cl_DF}, @code{cl_LF}
@@ -1109,15 +1160,19 @@ defines the following operations:
 
 @table @code
 @item bool operator == (const @var{type}&, const @var{type}&)
+@cindex @code{operator == ()}
 @itemx bool operator != (const @var{type}&, const @var{type}&)
+@cindex @code{operator != ()}
 Comparison, as in C and C++.
 
 @item uint32 cl_equal_hashcode (const @var{type}&)
+@cindex @code{cl_equal_hashcode ()}
 Returns a 32-bit hash code that is the same for any two numbers which are
 the same according to @code{==}. This hash code depends on the number's value,
 not its type or precision.
 
 @item cl_boolean zerop (const @var{type}& x)
+@cindex @code{zerop ()}
 Compare against zero: @code{x == 0}
 @end table
 
@@ -1127,25 +1182,34 @@ defines the following operations:
 
 @table @code
 @item cl_signean cl_compare (const @var{type}& x, const @var{type}& y)
+@cindex @code{cl_compare ()}
 Compares @code{x} and @code{y}. Returns +1 if @code{x}>@code{y},
 -1 if @code{x}<@code{y}, 0 if @code{x}=@code{y}.
 
 @item bool operator <= (const @var{type}&, const @var{type}&)
+@cindex @code{operator <= ()}
 @itemx bool operator < (const @var{type}&, const @var{type}&)
+@cindex @code{operator < ()}
 @itemx bool operator >= (const @var{type}&, const @var{type}&)
+@cindex @code{operator >= ()}
 @itemx bool operator > (const @var{type}&, const @var{type}&)
+@cindex @code{operator > ()}
 Comparison, as in C and C++.
 
 @item cl_boolean minusp (const @var{type}& x)
+@cindex @code{minusp ()}
 Compare against zero: @code{x < 0}
 
 @item cl_boolean plusp (const @var{type}& x)
+@cindex @code{plusp ()}
 Compare against zero: @code{x > 0}
 
 @item @var{type} max (const @var{type}& x, const @var{type}& y)
+@cindex @code{max ()}
 Return the maximum of @code{x} and @code{y}.
 
 @item @var{type} min (const @var{type}& x, const @var{type}& y)
+@cindex @code{min ()}
 Return the minimum of @code{x} and @code{y}.
 @end table
 
@@ -1159,6 +1223,7 @@ there is no floating point number whose value is exactly @code{1/3}.
 
 @node Rounding functions, Roots, Comparisons, Functions on numbers
 @section Rounding functions
+@cindex rounding
 
 When a real number is to be converted to an integer, there is no ``best''
 rounding. The desired rounding function depends on the application.
@@ -1206,12 +1271,16 @@ defines the following operations:
 
 @table @code
 @item cl_I floor1 (const @var{type}& x)
+@cindex @code{floor1 ()}
 Returns @code{floor(x)}.
 @item cl_I ceiling1 (const @var{type}& x)
+@cindex @code{ceiling1 ()}
 Returns @code{ceiling(x)}.
 @item cl_I truncate1 (const @var{type}& x)
+@cindex @code{truncate1 ()}
 Returns @code{truncate(x)}.
 @item cl_I round1 (const @var{type}& x)
+@cindex @code{round1 ()}
 Returns @code{round(x)}.
 @end table
 
@@ -1271,9 +1340,13 @@ defines the following operations:
 @table @code
 @item struct @var{type}_div_t @{ cl_I quotient; @var{type} remainder; @};
 @itemx @var{type}_div_t floor2 (const @var{type}& x, const @var{type}& y)
+@cindex @code{floor2 ()}
 @itemx @var{type}_div_t ceiling2 (const @var{type}& x, const @var{type}& y)
+@cindex @code{ceiling2 ()}
 @itemx @var{type}_div_t truncate2 (const @var{type}& x, const @var{type}& y)
+@cindex @code{truncate2 ()}
 @itemx @var{type}_div_t round2 (const @var{type}& x, const @var{type}& y)
+@cindex @code{round2 ()}
 @end table
 
 Sometimes, one wants the quotient as a floating-point number (of the
@@ -1286,9 +1359,13 @@ defines the following operations:
 
 @table @code
 @item @var{type} ffloor (const @var{type}& x)
+@cindex @code{ffloor ()}
 @itemx @var{type} fceiling (const @var{type}& x)
+@cindex @code{fceiling ()}
 @itemx @var{type} ftruncate (const @var{type}& x)
+@cindex @code{ftruncate ()}
 @itemx @var{type} fround (const @var{type}& x)
+@cindex @code{fround ()}
 @end table
 
 and similarly for class @code{cl_R}, but with return type @code{cl_F}.
@@ -1312,9 +1389,13 @@ defines the following operations:
 @table @code
 @item struct @var{type}_fdiv_t @{ @var{type} quotient; @var{type} remainder; @};
 @itemx @var{type}_fdiv_t ffloor2 (const @var{type}& x)
+@cindex @code{ffloor2 ()}
 @itemx @var{type}_fdiv_t fceiling2 (const @var{type}& x)
+@cindex @code{fceiling2 ()}
 @itemx @var{type}_fdiv_t ftruncate2 (const @var{type}& x)
+@cindex @code{ftruncate2 ()}
 @itemx @var{type}_fdiv_t fround2 (const @var{type}& x)
+@cindex @code{fround2 ()}
 @end table
 and similarly for class @code{cl_R}, but with quotient type @code{cl_F}.
 
@@ -1348,7 +1429,9 @@ The classes @code{cl_R}, @code{cl_I} define the following operations:
 
 @table @code
 @item @var{type} mod (const @var{type}& x, const @var{type}& y)
+@cindex @code{mod ()}
 @itemx @var{type} rem (const @var{type}& x, const @var{type}& y)
+@cindex @code{rem ()}
 @end table
 
 
@@ -1361,6 +1444,7 @@ defines the following operation:
 
 @table @code
 @item @var{type} sqrt (const @var{type}& x)
+@cindex @code{sqrt ()}
 @code{x} must be >= 0. This function returns the square root of @code{x},
 normalized to be >= 0. If @code{x} is the square of a rational number,
 @code{sqrt(x)} will be a rational number, else it will return a
@@ -1371,6 +1455,7 @@ The classes @code{cl_RA}, @code{cl_I} define the following operation:
 
 @table @code
 @item cl_boolean sqrtp (const @var{type}& x, @var{type}* root)
+@cindex @code{sqrtp ()}
 This tests whether @code{x} is a perfect square. If so, it returns true
 and the exact square root in @code{*root}, else it returns false.
 @end table
@@ -1379,6 +1464,7 @@ Furthermore, for integers, similarly:
 
 @table @code
 @item cl_boolean isqrt (const @var{type}& x, @var{type}* root)
+@cindex @code{isqrt ()}
 @code{x} should be >= 0. This function sets @code{*root} to
 @code{floor(sqrt(x))} and returns the same value as @code{sqrtp}:
 the boolean value @code{(expt(*root,2) == x)}.
@@ -1389,6 +1475,7 @@ define the following operation:
 
 @table @code
 @item cl_boolean rootp (const @var{type}& x, const cl_I& n, @var{type}* root)
+@cindex @code{rootp ()}
 @code{x} must be >= 0. @code{n} must be > 0.
 This tests whether @code{x} is an @code{n}th power of a rational number.
 If so, it returns true and the exact root in @code{*root}, else it returns
@@ -1400,6 +1487,7 @@ for class @code{cl_N}:
 
 @table @code
 @item cl_N sqrt (const cl_N& z)
+@cindex @code{sqrt ()}
 Returns the square root of @code{z}, as defined by the formula
 @code{sqrt(z) = exp(log(z)/2)}. Conversion to a floating-point type
 or to a complex number are done if necessary. The range of the result is the
@@ -1412,7 +1500,7 @@ The result is an exact number only if @code{z} is an exact number.
 
 @node Transcendental functions, Functions on integers, Roots, Functions on numbers
 @section Transcendental functions
-
+@cindex transcendental functions
 
 The transcendental functions return an exact result if the argument
 is exact and the result is exact as well. Otherwise they must return
@@ -1433,21 +1521,25 @@ For example, @code{cos(0) = 1} returns the rational number @code{1}.
 
 @table @code
 @item cl_R exp (const cl_R& x)
+@cindex @code{exp ()}
 @itemx cl_N exp (const cl_N& x)
 Returns the exponential function of @code{x}. This is @code{e^x} where
 @code{e} is the base of the natural logarithms. The range of the result
 is the entire complex plane excluding 0.
 
 @item cl_R ln (const cl_R& x)
+@cindex @code{ln ()}
 @code{x} must be > 0. Returns the (natural) logarithm of x.
 
 @item cl_N log (const cl_N& x)
+@cindex @code{log ()}
 Returns the (natural) logarithm of x. If @code{x} is real and positive,
 this is @code{ln(x)}. In general, @code{log(x) = log(abs(x)) + i*phase(x)}.
 The range of the result is the strip in the complex plane
 @code{-pi < imagpart(log(x)) <= pi}.
 
 @item cl_R phase (const cl_N& x)
+@cindex @code{phase ()}
 Returns the angle part of @code{x} in its polar representation as a
 complex number. That is, @code{phase(x) = atan(realpart(x),imagpart(x))}.
 This is also the imaginary part of @code{log(x)}.
@@ -1466,6 +1558,7 @@ Returns the logarithm of @code{a} with respect to base @code{b}.
 @code{log(a,b) = log(a)/log(b)}.
 
 @item cl_N expt (const cl_N& x, const cl_N& y)
+@cindex @code{expt ()}
 Exponentiation: Returns @code{x^y = exp(y*log(x))}.
 @end table
 
@@ -1473,6 +1566,7 @@ The constant e = exp(1) = 2.71828@dots{} is returned by the following functions:
 
 @table @code
 @item cl_F cl_exp1 (cl_float_format_t f)
+@cindex @code{exp1 ()}
 Returns e as a float of format @code{f}.
 
 @item cl_F cl_exp1 (const cl_F& y)
@@ -1488,6 +1582,7 @@ Returns e as a float of format @code{cl_default_float_format}.
 
 @table @code
 @item cl_R sin (const cl_R& x)
+@cindex @code{sin ()}
 Returns @code{sin(x)}. The range of the result is the interval
 @code{-1 <= sin(x) <= 1}.
 
@@ -1495,6 +1590,7 @@ Returns @code{sin(x)}. The range of the result is the interval
 Returns @code{sin(z)}. The range of the result is the entire complex plane.
 
 @item cl_R cos (const cl_R& x)
+@cindex @code{cos ()}
 Returns @code{cos(x)}. The range of the result is the interval
 @code{-1 <= cos(x) <= 1}.
 
@@ -1502,20 +1598,26 @@ Returns @code{cos(x)}. The range of the result is the interval
 Returns @code{cos(z)}. The range of the result is the entire complex plane.
 
 @item struct cl_cos_sin_t @{ cl_R cos; cl_R sin; @};
+@cindex @code{cl_cos_sin_t}
 @itemx cl_cos_sin_t cl_cos_sin (const cl_R& x)
 Returns both @code{sin(x)} and @code{cos(x)}. This is more efficient than
+@cindex @code{cl_cos_sin ()}
 computing them separately. The relation @code{cos^2 + sin^2 = 1} will
 hold only approximately.
 
 @item cl_R tan (const cl_R& x)
+@cindex @code{tan ()}
 @itemx cl_N tan (const cl_N& x)
 Returns @code{tan(x) = sin(x)/cos(x)}.
 
 @item cl_N cis (const cl_R& x)
+@cindex @code{cis ()}
 @itemx cl_N cis (const cl_N& x)
 Returns @code{exp(i*x)}. The name @samp{cis} means ``cos + i sin'', because
 @code{e^(i*x) = cos(x) + i*sin(x)}.
 
+@cindex @code{asin}
+@cindex @code{asin ()}
 @item cl_N asin (const cl_N& z)
 Returns @code{arcsin(z)}. This is defined as
 @code{arcsin(z) = log(iz+sqrt(1-z^2))/i} and satisfies
@@ -1530,6 +1632,7 @@ results for arsinh.
 @end ignore
 
 @item cl_N acos (const cl_N& z)
+@cindex @code{acos ()}
 Returns @code{arccos(z)}. This is defined as
 @code{arccos(z) = pi/2 - arcsin(z) = log(z+i*sqrt(1-z^2))/i}
 @ignore
@@ -1545,6 +1648,8 @@ with @code{realpart = pi} and @code{imagpart > 0}.
 Proof: This follows from the results about arcsin.
 @end ignore
 
+@cindex @code{atan}
+@cindex @code{atan ()}
 @item cl_R atan (const cl_R& x, const cl_R& y)
 Returns the angle of the polar representation of the complex number
 @code{x+iy}. This is @code{atan(y/x)} if @code{x>0}. The range of
@@ -1572,10 +1677,13 @@ Proof: arctan(z) = artanh(iz)/i, we know the range of the artanh function.
 
 @end table
 
-The constant pi = 3.14@dots{} is returned by the following functions:
+@cindex pi
+@cindex Archimedes' constant
+Archimedes' constant pi = 3.14@dots{} is returned by the following functions:
 
 @table @code
 @item cl_F cl_pi (cl_float_format_t f)
+@cindex @code{cl_pi}
 Returns pi as a float of format @code{f}.
 
 @item cl_F cl_pi (const cl_F& y)
@@ -1591,12 +1699,14 @@ Returns pi as a float of format @code{cl_default_float_format}.
 
 @table @code
 @item cl_R sinh (const cl_R& x)
+@cindex @code{sinh ()}
 Returns @code{sinh(x)}.
 
 @item cl_N sinh (const cl_N& z)
 Returns @code{sinh(z)}. The range of the result is the entire complex plane.
 
 @item cl_R cosh (const cl_R& x)
+@cindex @code{cosh ()}
 Returns @code{cosh(x)}. The range of the result is the interval
 @code{cosh(x) >= 1}.
 
@@ -1604,16 +1714,20 @@ Returns @code{cosh(x)}. The range of the result is the interval
 Returns @code{cosh(z)}. The range of the result is the entire complex plane.
 
 @item struct cl_cosh_sinh_t @{ cl_R cosh; cl_R sinh; @};
+@cindex @code{cl_cosh_sinh_t}
 @itemx cl_cosh_sinh_t cl_cosh_sinh (const cl_R& x)
+@cindex @code{cl_cosh_sinh ()}
 Returns both @code{sinh(x)} and @code{cosh(x)}. This is more efficient than
 computing them separately. The relation @code{cosh^2 - sinh^2 = 1} will
 hold only approximately.
 
 @item cl_R tanh (const cl_R& x)
+@cindex @code{tanh ()}
 @itemx cl_N tanh (const cl_N& x)
 Returns @code{tanh(x) = sinh(x)/cosh(x)}.
 
 @item cl_N asinh (const cl_N& z)
+@cindex @code{asinh ()}
 Returns @code{arsinh(z)}. This is defined as
 @code{arsinh(z) = log(z+sqrt(1+z^2))} and satisfies
 @code{arsinh(-z) = -arsinh(z)}.
@@ -1645,6 +1759,7 @@ log(sqrt(1+z^2)+z) = 2 artanh(z/(1+sqrt(1+z^2)))
 @end ignore
 
 @item cl_N acosh (const cl_N& z)
+@cindex @code{acosh ()}
 Returns @code{arcosh(z)}. This is defined as
 @code{arcosh(z) = 2*log(sqrt((z+1)/2)+sqrt((z-1)/2))}.
 The range of the result is the half-strip in the complex domain
@@ -1690,6 +1805,7 @@ Otherwise, -z is in Range(sqrt).
 @end ignore
 
 @item cl_N atanh (const cl_N& z)
+@cindex @code{atanh ()}
 Returns @code{artanh(z)}. This is defined as
 @code{artanh(z) = (log(1+z)-log(1-z)) / 2} and satisfies
 @code{artanh(-z) = -artanh(z)}. The range of the result is
@@ -1722,11 +1838,13 @@ Proof: Write z = x+iy. Examine
 
 @node Euler gamma, Riemann zeta, Hyperbolic functions, Transcendental functions
 @subsection Euler gamma
+@cindex Euler's constant
 
 Euler's constant C = 0.577@dots{} is returned by the following functions:
 
 @table @code
 @item cl_F cl_eulerconst (cl_float_format_t f)
+@cindex @code{cl_eulerconst ()}
 Returns Euler's constant as a float of format @code{f}.
 
 @item cl_F cl_eulerconst (const cl_F& y)
@@ -1737,9 +1855,11 @@ Returns Euler's constant as a float of format @code{cl_default_float_format}.
 @end table
 
 Catalan's constant G = 0.915@dots{} is returned by the following functions:
+@cindex Catalan's constant
 
 @table @code
 @item cl_F cl_catalanconst (cl_float_format_t f)
+@cindex @code{cl_catalanconst ()}
 Returns Catalan's constant as a float of format @code{f}.
 
 @item cl_F cl_catalanconst (const cl_F& y)
@@ -1752,12 +1872,14 @@ Returns Catalan's constant as a float of format @code{cl_default_float_format}.
 
 @node Riemann zeta,  , Euler gamma, Transcendental functions
 @subsection Riemann zeta
+@cindex Riemann's zeta
 
 Riemann's zeta function at an integral point @code{s>1} is returned by the
 following functions:
 
 @table @code
 @item cl_F cl_zeta (int s, cl_float_format_t f)
+@cindex @code{cl_zeta ()}
 Returns Riemann's zeta function at @code{s} as a float of format @code{f}.
 
 @item cl_F cl_zeta (int s, const cl_F& y)
@@ -1794,46 +1916,62 @@ on each of the bit positions in parallel.
 
 @table @code
 @item cl_I lognot (const cl_I& x)
+@cindex @code{lognot ()}
 @itemx cl_I operator ~ (const cl_I& x)
+@cindex @code{operator ~ ()}
 Logical not, like @code{~x} in C. This is the same as @code{-1-x}.
 
 @item cl_I logand (const cl_I& x, const cl_I& y)
+@cindex @code{logand ()}
 @itemx cl_I operator & (const cl_I& x, const cl_I& y)
+@cindex @code{operator & ()}
 Logical and, like @code{x & y} in C.
 
 @item cl_I logior (const cl_I& x, const cl_I& y)
+@cindex @code{logior ()}
 @itemx cl_I operator | (const cl_I& x, const cl_I& y)
+@cindex @code{operator | ()}
 Logical (inclusive) or, like @code{x | y} in C.
 
 @item cl_I logxor (const cl_I& x, const cl_I& y)
+@cindex @code{logxor ()}
 @itemx cl_I operator ^ (const cl_I& x, const cl_I& y)
+@cindex @code{operator ^ ()}
 Exclusive or, like @code{x ^ y} in C.
 
 @item cl_I logeqv (const cl_I& x, const cl_I& y)
+@cindex @code{logeqv ()}
 Bitwise equivalence, like @code{~(x ^ y)} in C.
 
 @item cl_I lognand (const cl_I& x, const cl_I& y)
+@cindex @code{lognand ()}
 Bitwise not and, like @code{~(x & y)} in C.
 
 @item cl_I lognor (const cl_I& x, const cl_I& y)
+@cindex @code{lognor ()}
 Bitwise not or, like @code{~(x | y)} in C.
 
 @item cl_I logandc1 (const cl_I& x, const cl_I& y)
+@cindex @code{logandc1 ()}
 Logical and, complementing the first argument, like @code{~x & y} in C.
 
 @item cl_I logandc2 (const cl_I& x, const cl_I& y)
+@cindex @code{logandc2 ()}
 Logical and, complementing the second argument, like @code{x & ~y} in C.
 
 @item cl_I logorc1 (const cl_I& x, const cl_I& y)
+@cindex @code{logorc1 ()}
 Logical or, complementing the first argument, like @code{~x | y} in C.
 
 @item cl_I logorc2 (const cl_I& x, const cl_I& y)
+@cindex @code{logorc2 ()}
 Logical or, complementing the second argument, like @code{x | ~y} in C.
 @end table
 
 These operations are all available though the function
 @table @code
 @item cl_I boole (cl_boole op, const cl_I& x, const cl_I& y)
+@cindex @code{boole ()}
 @end table
 where @code{op} must have one of the 16 values (each one stands for a function
 which combines two bits into one bit): @code{boole_clr}, @code{boole_set},
@@ -1841,19 +1979,38 @@ which combines two bits into one bit): @code{boole_clr}, @code{boole_set},
 @code{boole_and}, @code{boole_ior}, @code{boole_xor}, @code{boole_eqv},
 @code{boole_nand}, @code{boole_nor}, @code{boole_andc1}, @code{boole_andc2},
 @code{boole_orc1}, @code{boole_orc2}.
+@cindex @code{boole_clr}
+@cindex @code{boole_set}
+@cindex @code{boole_1}
+@cindex @code{boole_2}
+@cindex @code{boole_c1}
+@cindex @code{boole_c2}
+@cindex @code{boole_and}
+@cindex @code{boole_xor}
+@cindex @code{boole_eqv}
+@cindex @code{boole_nand}
+@cindex @code{boole_nor}
+@cindex @code{boole_andc1}
+@cindex @code{boole_andc2}
+@cindex @code{boole_orc1}
+@cindex @code{boole_orc2}
+
 
 Other functions that view integers as bit strings:
 
 @table @code
 @item cl_boolean logtest (const cl_I& x, const cl_I& y)
+@cindex @code{logtest ()}
 Returns true if some bit is set in both @code{x} and @code{y}, i.e. if
 @code{logand(x,y) != 0}.
 
 @item cl_boolean logbitp (const cl_I& n, const cl_I& x)
+@cindex @code{logbitp ()}
 Returns true if the @code{n}th bit (from the right) of @code{x} is set.
 Bit 0 is the least significant bit.
 
 @item uintL logcount (const cl_I& x)
+@cindex @code{logcount ()}
 Returns the number of one bits in @code{x}, if @code{x} >= 0, or
 the number of zero bits in @code{x}, if @code{x} < 0.
 @end table
@@ -1863,20 +2020,24 @@ The type
 @example
 struct cl_byte @{ uintL size; uintL position; @};
 @end example
+@cindex @code{cl_byte}
 represents the bit interval containing the bits
 @code{position}@dots{}@code{position+size-1} of an integer.
 The constructor @code{cl_byte(size,position)} constructs a @code{cl_byte}.
 
 @table @code
 @item cl_I ldb (const cl_I& n, const cl_byte& b)
+@cindex @code{ldb ()}
 extracts the bits of @code{n} described by the bit interval @code{b}
 and returns them as a nonnegative integer with @code{b.size} bits.
 
 @item cl_boolean ldb_test (const cl_I& n, const cl_byte& b)
+@cindex @code{ldb_test ()}
 Returns true if some bit described by the bit interval @code{b} is set in
 @code{n}.
 
 @item cl_I dpb (const cl_I& newbyte, const cl_I& n, const cl_byte& b)
+@cindex @code{dpb ()}
 Returns @code{n}, with the bits described by the bit interval @code{b}
 replaced by @code{newbyte}. Only the lowest @code{b.size} bits of
 @code{newbyte} are relevant.
@@ -1887,10 +2048,12 @@ functions are their counterparts without shifting:
 
 @table @code
 @item cl_I mask_field (const cl_I& n, const cl_byte& b)
+@cindex @code{mask_field ()}
 returns an integer with the bits described by the bit interval @code{b}
 copied from the corresponding bits in @code{n}, the other bits zero.
 
 @item cl_I deposit_field (const cl_I& newbyte, const cl_I& n, const cl_byte& b)
+@cindex @code{deposit_field ()}
 returns an integer where the bits described by the bit interval @code{b}
 come from @code{newbyte} and the other bits come from @code{n}.
 @end table
@@ -1911,39 +2074,47 @@ for common arithmetic operations:
 
 @table @code
 @item cl_boolean oddp (const cl_I& x)
+@cindex @code{oddp ()}
 Returns true if the least significant bit of @code{x} is 1. Equivalent to
 @code{mod(x,2) != 0}.
 
 @item cl_boolean evenp (const cl_I& x)
+@cindex @code{evenp ()}
 Returns true if the least significant bit of @code{x} is 0. Equivalent to
 @code{mod(x,2) == 0}.
 
 @item cl_I operator << (const cl_I& x, const cl_I& n)
+@cindex @code{operator << ()}
 Shifts @code{x} by @code{n} bits to the left. @code{n} should be >=0.
 Equivalent to @code{x * expt(2,n)}.
 
 @item cl_I operator >> (const cl_I& x, const cl_I& n)
+@cindex @code{operator >> ()}
 Shifts @code{x} by @code{n} bits to the right. @code{n} should be >=0.
 Bits shifted out to the right are thrown away.
 Equivalent to @code{floor(x / expt(2,n))}.
 
 @item cl_I ash (const cl_I& x, const cl_I& y)
+@cindex @code{ash ()}
 Shifts @code{x} by @code{y} bits to the left (if @code{y}>=0) or
 by @code{-y} bits to the right (if @code{y}<=0). In other words, this
 returns @code{floor(x * expt(2,y))}.
 
 @item uintL integer_length (const cl_I& x)
+@cindex @code{integer_length ()}
 Returns the number of bits (excluding the sign bit) needed to represent @code{x}
 in two's complement notation. This is the smallest n >= 0 such that
 -2^n <= x < 2^n. If x > 0, this is the unique n > 0 such that
 2^(n-1) <= x < 2^n.
 
 @item uintL ord2 (const cl_I& x)
+@cindex @code{ord2 ()}
 @code{x} must be non-zero. This function returns the number of 0 bits at the
 right of @code{x} in two's complement notation. This is the largest n >= 0
 such that 2^n divides @code{x}.
 
 @item uintL power2p (const cl_I& x)
+@cindex @code{power2p ()}
 @code{x} must be > 0. This function checks whether @code{x} is a power of 2.
 If @code{x} = 2^(n-1), it returns n. Else it returns 0.
 (See also the function @code{logp}.)
@@ -1955,11 +2126,13 @@ If @code{x} = 2^(n-1), it returns n. Else it returns 0.
 
 @table @code
 @item uint32 gcd (uint32 a, uint32 b)
+@cindex @code{gcd ()}
 @itemx cl_I gcd (const cl_I& a, const cl_I& b)
 This function returns the greatest common divisor of @code{a} and @code{b},
 normalized to be >= 0.
 
 @item cl_I xgcd (const cl_I& a, const cl_I& b, cl_I* u, cl_I* v)
+@cindex @code{xgcd ()}
 This function (``extended gcd'') returns the greatest common divisor @code{g} of
 @code{a} and @code{b} and at the same time the representation of @code{g}
 as an integral linear combination of @code{a} and @code{b}:
@@ -1970,10 +2143,12 @@ value, in the following sense: If @code{a} and @code{b} are non-zero, and
 @code{abs(u) <= abs(b)/(2*g)}, @code{abs(v) <= abs(a)/(2*g)}.
 
 @item cl_I lcm (const cl_I& a, const cl_I& b)
+@cindex @code{lcm ()}
 This function returns the least common multiple of @code{a} and @code{b},
 normalized to be >= 0.
 
 @item cl_boolean logp (const cl_I& a, const cl_I& b, cl_RA* l)
+@cindex @code{logp ()}
 @itemx cl_boolean logp (const cl_RA& a, const cl_RA& b, cl_RA* l)
 @code{a} must be > 0. @code{b} must be >0 and != 1. If log(a,b) is
 rational number, this function returns true and sets *l = log(a,b), else
@@ -1986,15 +2161,18 @@ it returns false.
 
 @table @code
 @item cl_I factorial (uintL n)
+@cindex @code{factorial ()}
 @code{n} must be a small integer >= 0. This function returns the factorial
 @code{n}! = @code{1*2*@dots{}*n}.
 
 @item cl_I doublefactorial (uintL n)
+@cindex @code{doublefactorial ()}
 @code{n} must be a small integer >= 0. This function returns the 
 doublefactorial @code{n}!! = @code{1*3*@dots{}*n} or 
 @code{n}!! = @code{2*4*@dots{}*n}, respectively.
 
 @item cl_I binomial (uintL n, uintL k)
+@cindex @code{binomial ()}
 @code{n} and @code{k} must be small integers >= 0. This function returns the
 binomial coefficient
 @tex
@@ -2020,6 +2198,7 @@ defines the following operations.
 
 @table @code
 @item @var{type} scale_float (const @var{type}& x, sintL delta)
+@cindex @code{scale_float ()}
 @itemx @var{type} scale_float (const @var{type}& x, const cl_I& delta)
 Returns @code{x*2^delta}. This is more efficient than an explicit multiplication
 because it copies @code{x} and modifies the exponent.
@@ -2030,23 +2209,28 @@ representation of floating-point numbers.
 
 @table @code
 @item sintL float_exponent (const @var{type}& x)
+@cindex @code{float_exponent ()}
 Returns the exponent @code{e} of @code{x}.
 For @code{x = 0.0}, this is 0. For @code{x} non-zero, this is the unique
 integer with @code{2^(e-1) <= abs(x) < 2^e}.
 
 @item sintL float_radix (const @var{type}& x)
+@cindex @code{float_radix ()}
 Returns the base of the floating-point representation. This is always @code{2}.
 
 @item @var{type} float_sign (const @var{type}& x)
+@cindex @code{float_sign ()}
 Returns the sign @code{s} of @code{x} as a float. The value is 1 for
 @code{x} >= 0, -1 for @code{x} < 0.
 
 @item uintL float_digits (const @var{type}& x)
+@cindex @code{float_digits ()}
 Returns the number of mantissa bits in the floating-point representation
 of @code{x}, including the hidden bit. The value only depends on the type
 of @code{x}, not on its value.
 
 @item uintL float_precision (const @var{type}& x)
+@cindex @code{float_precision ()}
 Returns the number of significant mantissa bits in the floating-point
 representation of @code{x}. Since denormalized numbers are not supported,
 this is the same as @code{float_digits(x)} if @code{x} is non-zero, and
@@ -2054,6 +2238,11 @@ this is the same as @code{float_digits(x)} if @code{x} is non-zero, and
 @end table
 
 The complete internal representation of a float is encoded in the type
+@cindex @code{cl_decoded_float}
+@cindex @code{cl_decoded_sfloat}
+@cindex @code{cl_decoded_ffloat}
+@cindex @code{cl_decoded_dfloat}
+@cindex @code{cl_decoded_lfloat}
 @code{cl_decoded_float} (or @code{cl_decoded_sfloat}, @code{cl_decoded_ffloat},
 @code{cl_decoded_dfloat}, @code{cl_decoded_lfloat}, respectively), defined by
 @example
@@ -2066,6 +2255,7 @@ and returned by the function
 
 @table @code
 @item cl_decoded_@var{type}float decode_float (const @var{type}& x)
+@cindex @code{decode_float ()}
 For @code{x} non-zero, this returns @code{(-1)^s}, @code{e}, @code{m} with
 @code{x = (-1)^s * 2^e * m} and @code{0.5 <= m < 1.0}. For @code{x} = 0,
 it returns @code{(-1)^s}=1, @code{e}=0, @code{m}=0.
@@ -2074,6 +2264,7 @@ it returns @code{(-1)^s}=1, @code{e}=0, @code{m}=0.
 
 A complete decoding in terms of integers is provided as type
 @example
+@cindex @code{cl_idecoded_float}
 struct cl_idecoded_float @{
         cl_I mantissa; cl_I exponent; cl_I sign;
 @};
@@ -2082,6 +2273,7 @@ by the following function:
 
 @table @code
 @item cl_idecoded_float integer_decode_float (const @var{type}& x)
+@cindex @code{integer_decode_float ()}
 For @code{x} non-zero, this returns @code{(-1)^s}, @code{e}, @code{m} with
 @code{x = (-1)^s * 2^e * m} and @code{m} an integer with @code{float_digits(x)}
 bits. For @code{x} = 0, it returns @code{(-1)^s}=1, @code{e}=0, @code{m}=0.
@@ -2093,6 +2285,7 @@ Some other function, implemented only for class @code{cl_F}:
 
 @table @code
 @item cl_F float_sign (const cl_F& x, const cl_F& y)
+@cindex @code{float_sign ()}
 This returns a floating point number whose precision and absolute value
 is that of @code{y} and whose sign is that of @code{x}. If @code{x} is
 zero, it is treated as positive. Same for @code{y}.
@@ -2101,6 +2294,7 @@ zero, it is treated as positive. Same for @code{y}.
 
 @node Conversion functions, Random number generators, Functions on floating-point numbers, Functions on numbers
 @section Conversion functions
+@cindex conversion
 
 @menu
 * Conversion to floating-point numbers::  
@@ -2114,6 +2308,7 @@ The type @code{cl_float_format_t} describes a floating-point format.
 
 @table @code
 @item cl_float_format_t cl_float_format (uintL n)
+@cindex @code{cl_float_format ()}
 Returns the smallest float format which guarantees at least @code{n}
 decimal digits in the mantissa (after the decimal point).
 
@@ -2121,6 +2316,7 @@ decimal digits in the mantissa (after the decimal point).
 Returns the floating point format of @code{x}.
 
 @item cl_float_format_t cl_default_float_format
+@cindex @code{cl_default_float_format}
 Global variable: the default float format used when converting rational numbers
 to floats.
 @end table
@@ -2132,6 +2328,7 @@ defines the following operations:
 
 @table @code
 @item cl_F cl_float (const @var{type}&x, cl_float_format_t f)
+@cindex @code{cl_float}
 Returns @code{x} as a float of format @code{f}.
 @item cl_F cl_float (const @var{type}&x, const cl_F& y)
 Returns @code{x} in the float format of @code{y}.
@@ -2146,23 +2343,29 @@ Every floating-point format has some characteristic numbers:
 
 @table @code
 @item cl_F most_positive_float (cl_float_format_t f)
+@cindex @code{most_positive_float ()}
 Returns the largest (most positive) floating point number in float format @code{f}.
 
 @item cl_F most_negative_float (cl_float_format_t f)
+@cindex @code{most_negative_float ()}
 Returns the smallest (most negative) floating point number in float format @code{f}.
 
 @item cl_F least_positive_float (cl_float_format_t f)
+@cindex @code{least_positive_float ()}
 Returns the least positive floating point number (i.e. > 0 but closest to 0)
 in float format @code{f}.
 
 @item cl_F least_negative_float (cl_float_format_t f)
+@cindex @code{least_negative_float ()}
 Returns the least negative floating point number (i.e. < 0 but closest to 0)
 in float format @code{f}.
 
 @item cl_F float_epsilon (cl_float_format_t f)
+@cindex @code{float_epsilon ()}
 Returns the smallest floating point number e > 0 such that @code{1+e != 1}.
 
 @item cl_F float_negative_epsilon (cl_float_format_t f)
+@cindex @code{float_negative_epsilon ()}
 Returns the smallest floating point number e > 0 such that @code{1-e != 1}.
 @end table
 
@@ -2175,6 +2378,7 @@ defines the following operation:
 
 @table @code
 @item cl_RA rational (const @var{type}& x)
+@cindex @code{rational ()}
 Returns the value of @code{x} as an exact number. If @code{x} is already
 an exact number, this is @code{x}. If @code{x} is a floating-point number,
 the value is a rational number whose denominator is a power of 2.
@@ -2185,6 +2389,7 @@ the function
 
 @table @code
 @item cl_RA rationalize (const cl_R& x)
+@cindex @code{rationalize ()}
 If @code{x} is a floating-point number, it actually represents an interval
 of real numbers, and this function returns the rational number with
 smallest denominator (and smallest numerator, in magnitude)
@@ -2217,6 +2422,7 @@ Calling one of these modifies the state of the random number generator in
 a complicated but deterministic way.
 
 The global variable
+@cindex @code{cl_default_random_state}
 @example
 cl_random_state cl_default_random_state
 @end example
@@ -2226,20 +2432,24 @@ below are called without @code{cl_random_state} argument.
 @table @code
 @item uint32 random32 (cl_random_state& randomstate)
 @itemx uint32 random32 ()
+@cindex @code{random32 ()}
 Returns a random unsigned 32-bit number. All bits are equally random.
 
 @item cl_I random_I (cl_random_state& randomstate, const cl_I& n)
 @itemx cl_I random_I (const cl_I& n)
+@cindex @code{random_I ()}
 @code{n} must be an integer > 0. This function returns a random integer @code{x}
 in the range @code{0 <= x < n}.
 
 @item cl_F random_F (cl_random_state& randomstate, const cl_F& n)
 @itemx cl_F random_F (const cl_F& n)
+@cindex @code{random_F ()}
 @code{n} must be a float > 0. This function returns a random floating-point
 number of the same format as @code{n} in the range @code{0 <= x < n}.
 
 @item cl_R random_R (cl_random_state& randomstate, const cl_R& n)
 @itemx cl_R random_R (const cl_R& n)
+@cindex @code{random_R ()}
 Behaves like @code{random_I} if @code{n} is an integer and like @code{random_F}
 if @code{n} is a float.
 @end table
@@ -2247,6 +2457,7 @@ if @code{n} is a float.
 
 @node Obfuscating operators,  , Random number generators, Functions on numbers
 @section Obfuscating operators
+@cindex modifying operators
 
 The modifying C/C++ operators @code{+=}, @code{-=}, @code{*=}, @code{/=},
 @code{&=}, @code{|=}, @code{^=}, @code{<<=}, @code{>>=}
@@ -2257,6 +2468,7 @@ to get happy, then add
 @example
 #define WANT_OBFUSCATING_OPERATORS
 @end example
+@cindex @code{WANT_OBFUSCATING_OPERATORS}
 to the beginning of your source files, before the inclusion of any CLN
 include files. This flag will enable the following operators:
 
@@ -2265,9 +2477,13 @@ For the classes @code{cl_N}, @code{cl_R}, @code{cl_RA},
 
 @table @code
 @item @var{type}& operator += (@var{type}&, const @var{type}&)
+@cindex @code{operator += ()}
 @itemx @var{type}& operator -= (@var{type}&, const @var{type}&)
+@cindex @code{operator -= ()}
 @itemx @var{type}& operator *= (@var{type}&, const @var{type}&)
+@cindex @code{operator *= ()}
 @itemx @var{type}& operator /= (@var{type}&, const @var{type}&)
+@cindex @code{operator /= ()}
 @end table
 
 For the class @code{cl_I}:
@@ -2277,10 +2493,15 @@ For the class @code{cl_I}:
 @itemx @var{type}& operator -= (@var{type}&, const @var{type}&)
 @itemx @var{type}& operator *= (@var{type}&, const @var{type}&)
 @itemx @var{type}& operator &= (@var{type}&, const @var{type}&)
+@cindex @code{operator &= ()}
 @itemx @var{type}& operator |= (@var{type}&, const @var{type}&)
+@cindex @code{operator |= ()}
 @itemx @var{type}& operator ^= (@var{type}&, const @var{type}&)
+@cindex @code{operator ^= ()}
 @itemx @var{type}& operator <<= (@var{type}&, const @var{type}&)
+@cindex @code{operator <<= ()}
 @itemx @var{type}& operator >>= (@var{type}&, const @var{type}&)
+@cindex @code{operator >>= ()}
 @end table
 
 For the classes @code{cl_N}, @code{cl_R}, @code{cl_RA}, @code{cl_I},
@@ -2288,12 +2509,14 @@ For the classes @code{cl_N}, @code{cl_R}, @code{cl_RA}, @code{cl_I},
 
 @table @code
 @item @var{type}& operator ++ (@var{type}& x)
+@cindex @code{operator ++ ()}
 The prefix operator @code{++x}.
 
 @item void operator ++ (@var{type}& x, int)
 The postfix operator @code{x++}.
 
 @item @var{type}& operator -- (@var{type}& x)
+@cindex @code{operator -- ()}
 The prefix operator @code{--x}.
 
 @item void operator -- (@var{type}& x, int)
@@ -2307,6 +2530,7 @@ efficient.
 
 @node Input/Output, Rings, Functions on numbers, Top
 @chapter Input/Output
+@cindex Input/Output
 
 @menu
 * Internal and printed representation::  
@@ -2316,6 +2540,7 @@ efficient.
 
 @node Internal and printed representation, Input functions, Input/Output, Input/Output
 @section Internal and printed representation
+@cindex representation
 
 All computations deal with the internal representations of the numbers.
 
@@ -2324,8 +2549,10 @@ Several external representations may denote the same number, for example,
 "20.0" and "20.000".
 
 Converting an internal to an external representation is called ``printing'',
+@cindex printing
 converting an external to an internal representation is called ``reading''.
-In CLN, is it always true that conversion of an internal to an external
+@cindex reading
+In CLN, it is always true that conversion of an internal to an external
 representation and then back to an internal representation will yield the
 same internal representation. Symbolically: @code{read(print(x)) == x}.
 This is called ``print-read consistency''. 
@@ -2601,7 +2828,7 @@ using this variable name. Default is @code{"x"}.
 @end table
 
 The global variable @code{cl_default_print_flags} contains the default values,
-used by the function @code{fprint},
+used by the function @code{fprint}.
 
 
 @node Rings, Modular integers, Input/Output, Top
@@ -2670,6 +2897,7 @@ Tests whether the given number is an element of the number ring R.
 
 @node Modular integers, Symbolic data types, Rings, Top
 @chapter Modular integers
+@cindex modular integer
 
 @menu
 * Modular integer rings::       
@@ -2678,6 +2906,7 @@ Tests whether the given number is an element of the number ring R.
 
 @node Modular integer rings, Functions on modular integers, Modular integers, Modular integers
 @section Modular integer rings
+@cindex ring
 
 CLN implements modular integers, i.e. integers modulo a fixed integer N.
 The modulus is explicitly part of every modular integer. CLN doesn't
@@ -2711,9 +2940,11 @@ Modular integer rings are constructed using the function
 
 @table @code
 @item cl_modint_ring cl_find_modint_ring (const cl_I& N)
+@cindex @code{cl_find_modint_ring ()}
 This function returns the modular ring @samp{Z/NZ}. It takes care
 of finding out about special cases of @code{N}, like powers of two
 and odd numbers for which Montgomery multiplication will be a win,
+@cindex Montgomery multiplication
 and precomputes any necessary auxiliary data for computing modulo @code{N}.
 There is a cache table of rings, indexed by @code{N} (or, more precisely,
 by @code{abs(N)}). This ensures that the precomputation costs are reduced
@@ -2724,7 +2955,9 @@ Modular integer rings can be compared for equality:
 
 @table @code
 @item bool operator== (const cl_modint_ring&, const cl_modint_ring&)
+@cindex @code{operator == ()}
 @itemx bool operator!= (const cl_modint_ring&, const cl_modint_ring&)
+@cindex @code{operator != ()}
 These compare two modular integer rings for equality. Two different calls
 to @code{cl_find_modint_ring} with the same argument necessarily return the
 same ring because it is memoized in the cache table.
@@ -2737,23 +2970,29 @@ Given a modular integer ring @code{R}, the following members can be used.
 
 @table @code
 @item cl_I R->modulus
+@cindex @code{modulus}
 This is the ring's modulus, normalized to be nonnegative: @code{abs(N)}.
 
 @item cl_MI R->zero()
+@cindex @code{zero ()}
 This returns @code{0 mod N}.
 
 @item cl_MI R->one()
+@cindex @code{one ()}
 This returns @code{1 mod N}.
 
 @item cl_MI R->canonhom (const cl_I& x)
+@cindex @code{canonhom ()}
 This returns @code{x mod N}.
 
 @item cl_I R->retract (const cl_MI& x)
+@cindex @code{etract ()}
 This is a partial inverse function to @code{R->canonhom}. It returns the
 standard representative (@code{>=0}, @code{<N}) of @code{x}.
 
 @item cl_MI R->random(cl_random_state& randomstate)
 @itemx cl_MI R->random()
+@cindex @code{random ()}
 This returns a random integer modulo @code{N}.
 @end table
 
@@ -2761,13 +3000,16 @@ The following operations are defined on modular integers.
 
 @table @code
 @item cl_modint_ring x.ring ()
+@cindex @code{ring()}
 Returns the ring to which the modular integer @code{x} belongs.
 
 @item cl_MI operator+ (const cl_MI&, const cl_MI&)
+@cindex @code{operator + ()}
 Returns the sum of two modular integers. One of the arguments may also be
 a plain integer.
 
 @item cl_MI operator- (const cl_MI&, const cl_MI&)
+@cindex @code{operator - ()}
 Returns the difference of two modular integers. One of the arguments may also be
 a plain integer.
 
@@ -2775,40 +3017,51 @@ a plain integer.
 Returns the negative of a modular integer.
 
 @item cl_MI operator* (const cl_MI&, const cl_MI&)
+@cindex @code{operator * ()}
 Returns the product of two modular integers. One of the arguments may also be
 a plain integer.
 
 @item cl_MI square (const cl_MI&)
+@cindex @code{square ()}
 Returns the square of a modular integer.
 
 @item cl_MI recip (const cl_MI& x)
+@cindex @code{recip ()}
 Returns the reciprocal @code{x^-1} of a modular integer @code{x}. @code{x}
 must be coprime to the modulus, otherwise an error message is issued.
 
 @item cl_MI div (const cl_MI& x, const cl_MI& y)
+@cindex @code{div ()}
 Returns the quotient @code{x*y^-1} of two modular integers @code{x}, @code{y}.
 @code{y} must be coprime to the modulus, otherwise an error message is issued.
 
 @item cl_MI expt_pos (const cl_MI& x, const cl_I& y)
+@cindex @code{expt_pos ()}
 @code{y} must be > 0. Returns @code{x^y}.
 
 @item cl_MI expt (const cl_MI& x, const cl_I& y)
+@cindex @code{expt ()}
 Returns @code{x^y}. If @code{y} is negative, @code{x} must be coprime to the
 modulus, else an error message is issued.
 
 @item cl_MI operator<< (const cl_MI& x, const cl_I& y)
+@cindex @code{operator << ()}
 Returns @code{x*2^y}.
 
 @item cl_MI operator>> (const cl_MI& x, const cl_I& y)
+@cindex @code{operator >> ()}
 Returns @code{x*2^-y}. When @code{y} is positive, the modulus must be odd,
 or an error message is issued.
 
 @item bool operator== (const cl_MI&, const cl_MI&)
+@cindex @code{operator == ()}
 @itemx bool operator!= (const cl_MI&, const cl_MI&)
+@cindex @code{operator != ()}
 Compares two modular integers, belonging to the same modular integer ring,
 for equality.
 
 @item cl_boolean zerop (const cl_MI& x)
+@cindex @code{zerop ()}
 Returns true if @code{x} is @code{0 mod N}.
 @end table
 
@@ -2817,7 +3070,9 @@ input/output).
 
 @table @code
 @item void fprint (cl_ostream stream, const cl_MI& x)
+@cindex @code{fprint ()}
 @itemx cl_ostream operator<< (cl_ostream stream, const cl_MI& x)
+@cindex @code{operator << ()}
 Prints the modular integer @code{x} on the @code{stream}. The output may depend
 on the global printer settings in the variable @code{cl_default_print_flags}.
 @end table
@@ -2825,6 +3080,7 @@ on the global printer settings in the variable @code{cl_default_print_flags}.
 
 @node Symbolic data types, Univariate polynomials, Modular integers, Top
 @chapter Symbolic data types
+@cindex symbolic type
 
 CLN implements two symbolic (non-numeric) data types: strings and symbols.
 
@@ -2835,6 +3091,7 @@ CLN implements two symbolic (non-numeric) data types: strings and symbols.
 
 @node Strings, Symbols, Symbolic data types, Symbolic data types
 @section Strings
+@cindex string
 
 The class
 
@@ -2850,6 +3107,7 @@ Strings are constructed through the following constructors:
 
 @table @code
 @item cl_string (const char * s)
+@cindex @code{cl_string ()}
 Returns an immutable copy of the (zero-terminated) C string @code{s}.
 
 @item cl_string (const char * ptr, unsigned long len)
@@ -2864,20 +3122,25 @@ The following functions are available on strings:
 Assignment from @code{cl_string} and @code{const char *}.
 
 @item s.length()
+@cindex @code{length ()}
 @itemx strlen(s)
+@cindex @code{strlen ()}
 Returns the length of the string @code{s}.
 
 @item s[i]
+@cindex @code{operator [] ()}
 Returns the @code{i}th character of the string @code{s}.
 @code{i} must be in the range @code{0 <= i < s.length()}.
 
 @item bool equal (const cl_string& s1, const cl_string& s2)
+@cindex @code{equal ()}
 Compares two strings for equality. One of the arguments may also be a
 plain @code{const char *}.
 @end table
 
 @node Symbols,  , Strings, Symbolic data types
 @section Symbols
+@cindex symbol
 
 Symbols are uniquified strings: all symbols with the same name are shared.
 This means that comparison of two symbols is fast (effectively just a pointer
@@ -2890,6 +3153,7 @@ Symbols are constructed through the following constructor:
 
 @table @code
 @item cl_symbol (const cl_string& s)
+@cindex @code{cl_symbol ()}
 Looks up or creates a new symbol with a given name.
 @end table
 
@@ -2901,12 +3165,15 @@ Conversion to @code{cl_string}: Returns the string which names the symbol
 @code{sym}.
 
 @item bool equal (const cl_symbol& sym1, const cl_symbol& sym2)
+@cindex @code{equal ()}
 Compares two symbols for equality. This is very fast.
 @end table
 
 
 @node Univariate polynomials, Internals, Symbolic data types, Top
 @chapter Univariate polynomials
+@cindex polynomial
+@cindex univariate polynomial
 
 @menu
 * Univariate polynomial rings::  
@@ -3009,6 +3276,7 @@ This ensures that two calls of this function with the same arguments will
 return the same polynomial ring.
 
 @item cl_univpoly_complex_ring cl_find_univpoly_ring (const cl_complex_ring& R)
+@cindex @code{cl_find_univpoly_ring ()}
 @itemx cl_univpoly_complex_ring cl_find_univpoly_ring (const cl_complex_ring& R, const cl_symbol& varname)
 @itemx cl_univpoly_real_ring cl_find_univpoly_ring (const cl_real_ring& R)
 @itemx cl_univpoly_real_ring cl_find_univpoly_ring (const cl_real_ring& R, const cl_symbol& varname)
@@ -3029,22 +3297,28 @@ Given a univariate polynomial ring @code{R}, the following members can be used.
 
 @table @code
 @item cl_ring R->basering()
+@cindex @code{basering ()}
 This returns the base ring, as passed to @samp{cl_find_univpoly_ring}.
 
 @item cl_UP R->zero()
+@cindex @code{zero ()}
 This returns @code{0 in R}, a polynomial of degree -1.
 
 @item cl_UP R->one()
+@cindex @code{one ()}
 This returns @code{1 in R}, a polynomial of degree <= 0.
 
 @item cl_UP R->canonhom (const cl_I& x)
+@cindex @code{canonhom ()}
 This returns @code{x in R}, a polynomial of degree <= 0.
 
 @item cl_UP R->monomial (const cl_ring_element& x, uintL e)
+@cindex @code{monomial ()}
 This returns a sparse polynomial: @code{x * X^e}, where @code{X} is the
 indeterminate.
 
 @item cl_UP R->create (sintL degree)
+@cindex @code{create ()}
 Creates a new polynomial with a given degree. The zero polynomial has degree
 @code{-1}. After creating the polynomial, you should put in the coefficients,
 using the @code{set_coeff} member function, and then call the @code{finalize}
@@ -3055,11 +3329,13 @@ The following are the only destructive operations on univariate polynomials.
 
 @table @code
 @item void set_coeff (cl_UP& x, uintL index, const cl_ring_element& y)
+@cindex @code{set_coeff ()}
 This changes the coefficient of @code{X^index} in @code{x} to be @code{y}.
 After changing a polynomial and before applying any "normal" operation on it,
 you should call its @code{finalize} member function.
 
 @item void finalize (cl_UP& x)
+@cindex @code{finalize ()}
 This function marks the endpoint of destructive modifications of a polynomial.
 It normalizes the internal representation so that subsequent computations have
 less overhead. Doing normal computations on unnormalized polynomials may
@@ -3070,47 +3346,60 @@ The following operations are defined on univariate polynomials.
 
 @table @code
 @item cl_univpoly_ring x.ring ()
+@cindex @code{ring ()}
 Returns the ring to which the univariate polynomial @code{x} belongs.
 
 @item cl_UP operator+ (const cl_UP&, const cl_UP&)
+@cindex @code{operator + ()}
 Returns the sum of two univariate polynomials.
 
 @item cl_UP operator- (const cl_UP&, const cl_UP&)
+@cindex @code{operator - ()}
 Returns the difference of two univariate polynomials.
 
 @item cl_UP operator- (const cl_UP&)
 Returns the negative of a univariate polynomial.
 
 @item cl_UP operator* (const cl_UP&, const cl_UP&)
+@cindex @code{operator * ()}
 Returns the product of two univariate polynomials. One of the arguments may
 also be a plain integer or an element of the base ring.
 
 @item cl_UP square (const cl_UP&)
+@cindex @code{square ()}
 Returns the square of a univariate polynomial.
 
 @item cl_UP expt_pos (const cl_UP& x, const cl_I& y)
+@cindex @code{expt_pos ()}
 @code{y} must be > 0. Returns @code{x^y}.
 
 @item bool operator== (const cl_UP&, const cl_UP&)
+@cindex @code{operator == ()}
 @itemx bool operator!= (const cl_UP&, const cl_UP&)
+@cindex @code{operator != ()}
 Compares two univariate polynomials, belonging to the same univariate
 polynomial ring, for equality.
 
 @item cl_boolean zerop (const cl_UP& x)
+@cindex @code{zerop ()}
 Returns true if @code{x} is @code{0 in R}.
 
 @item sintL degree (const cl_UP& x)
+@cindex @code{degree ()}
 Returns the degree of the polynomial. The zero polynomial has degree @code{-1}.
 
 @item cl_ring_element coeff (const cl_UP& x, uintL index)
+@cindex @code{coeff ()}
 Returns the coefficient of @code{X^index} in the polynomial @code{x}.
 
 @item cl_ring_element x (const cl_ring_element& y)
+@cindex @code{operator () ()}
 Evaluation: If @code{x} is a polynomial and @code{y} belongs to the base ring,
 then @samp{x(y)} returns the value of the substitution of @code{y} into
 @code{x}.
 
 @item cl_UP deriv (const cl_UP& x)
+@cindex @code{deriv ()}
 Returns the derivative of the polynomial @code{x} with respect to the
 indeterminate @code{X}.
 @end table
@@ -3120,7 +3409,9 @@ input/output).
 
 @table @code
 @item void fprint (cl_ostream stream, const cl_UP& x)
+@cindex @code{fprint ()}
 @itemx cl_ostream operator<< (cl_ostream stream, const cl_UP& x)
+@cindex @code{operator << ()}
 Prints the univariate polynomial @code{x} on the @code{stream}. The output may
 depend on the global printer settings in the variable
 @code{cl_default_print_flags}.
@@ -3133,15 +3424,23 @@ The following functions return special polynomials.
 
 @table @code
 @item cl_UP_I cl_tschebychev (sintL n)
+@cindex @code{cl_tschebychev ()}
+@cindex Tschebychev polynomial
 Returns the n-th Tchebychev polynomial (n >= 0).
 
 @item cl_UP_I cl_hermite (sintL n)
+@cindex @code{cl_hermite ()}
+@cindex Hermite polynomial
 Returns the n-th Hermite polynomial (n >= 0).
 
 @item cl_UP_RA cl_legendre (sintL n)
+@cindex @code{cl_legendre ()}
+@cindex Legende polynomial
 Returns the n-th Legendre polynomial (n >= 0).
 
 @item cl_UP_I cl_laguerre (sintL n)
+@cindex @code{cl_laguerre ()}
+@cindex Laguerre polynomial
 Returns the n-th Laguerre polynomial (n >= 0).
 @end table
 
@@ -3162,6 +3461,7 @@ of these polynomials from their definition can be found in the
 
 @node Why C++ ?, Memory efficiency, Internals, Internals
 @section Why C++ ?
+@cindex advocacy
 
 Using C++ as an implementation language provides
 
@@ -3170,6 +3470,7 @@ Using C++ as an implementation language provides
 Efficiency: It compiles to machine code.
 
 @item
+@cindex portability
 Portability: It runs on all platforms supporting a C++ compiler. Because
 of the availability of GNU C++, this includes all currently used 32-bit and
 64-bit platforms, independently of the quality of the vendor's C++ compiler.
@@ -3178,7 +3479,7 @@ of the availability of GNU C++, this includes all currently used 32-bit and
 Type safety: The C++ compilers knows about the number types and complains if,
 for example, you try to assign a float to an integer variable. However,
 a drawback is that C++ doesn't know about generic types, hence a restriction
-like that @code{operation+ (const cl_MI&, const cl_MI&)} requires that both
+like that @code{operator+ (const cl_MI&, const cl_MI&)} requires that both
 arguments belong to the same modular ring cannot be expressed as a compile-time
 information.
 
@@ -3206,6 +3507,8 @@ In order to save memory allocations, CLN implements:
 Object sharing: An operation like @code{x+0} returns @code{x} without copying
 it.
 @item
+@cindex garbage collection
+@cindex reference counting
 Garbage collection: A reference counting mechanism makes sure that any
 number object's storage is freed immediately when the last reference to the
 object is gone.
@@ -3231,8 +3534,8 @@ memory access, just a couple of instructions for each elementary operation.
 The kernel of CLN has been written in assembly language for some CPUs
 (@code{i386}, @code{m68k}, @code{sparc}, @code{mips}, @code{arm}).
 @item
-On all CPUs, CLN uses the superefficient low-level routines from GNU
-GMP version 2.
+On all CPUs, CLN may be configured to use the superefficient low-level
+routines from GNU GMP version 3.
 @item
 For large numbers, CLN uses, instead of the standard @code{O(N^2)}
 algorithm, the Karatsuba multiplication, which is an
@@ -3249,9 +3552,11 @@ algorithm.
 For very large numbers (more than 12000 decimal digits), CLN uses
 @iftex
 Sch{@"o}nhage-Strassen
+@cindex Sch{@"o}nhage-Strassen
 @end iftex
 @ifinfo
 Schönhage-Strassen
+@cindex Schönhage-Strassen
 @end ifinfo
 multiplication, which is an asymptotically
 optimal multiplication algorithm.
@@ -3263,6 +3568,7 @@ of division and radix conversion.
 
 @node Garbage collection,  , Speed efficiency, Internals
 @section Garbage collection
+@cindex garbage collection
 
 All the number classes are reference count classes: They only contain a pointer
 to an object in the heap. Upon construction, assignment and destruction of
@@ -3297,6 +3603,7 @@ environment variables, or directly substitute the appropriate values.
 
 @node Compiler options, Include files, Using the library, Using the library
 @section Compiler options
+@cindex compiler options
 
 Until you have installed CLN in a public place, the following options are
 needed:
@@ -3321,6 +3628,8 @@ linking a CLN application it is sufficient to give the flag @code{-lcln}.
 
 @node Include files, An Example, Compiler options, Using the library
 @section Include files
+@cindex include files
+@cindex header files
 
 Here is a summary of the include files and their contents.
 
@@ -3452,6 +3761,7 @@ Includes all of the above.
 @section An Example
 
 A function which computes the nth Fibonacci number can be written as follows.
+@cindex Fibonacci number
 
 @example
 #include <cl_integer.h>
@@ -3512,9 +3822,12 @@ When the function returns, all the local variables in the function are
 automatically reclaimed (garbage collected). Only the result survives and
 gets passed to the caller.
 
+The file @code{fibonacci.cc} in the subdirectory @code{examples}
+contains this implementation together with an even faster algorithm.
 
 @node Debugging support,  , An Example, Using the library
 @section Debugging support
+@cindex debugging
 
 When debugging a CLN application with GNU @code{gdb}, two facilities are
 available from the library:
@@ -3539,6 +3852,7 @@ CLN offers a function @code{cl_print}, callable from the debugger,
 for printing number objects. In order to get this function, you have
 to define the macro @samp{CL_DEBUG} and then include all the header files
 for which you want @code{cl_print} debugging support. For example:
+@cindex @code{CL_DEBUG}
 @example
 #define CL_DEBUG
 #include <cl_string.h>
@@ -3561,6 +3875,7 @@ only with number objects and similar. Therefore CLN offers a member function
 @code{debug_print()} on all CLN types. The same macro @samp{CL_DEBUG}
 is needed for this member function to be implemented. Under @code{gdb},
 you call it like this:
+@cindex @code{debug_print ()}
 @example
 (gdb) print s
 $7 = @{<cl_gcpointer> = @{ = @{pointer = 0x8055b60, heappointer = 0x8055b60,
@@ -3579,6 +3894,7 @@ Unfortunately, this feature does not seem to work under all circumstances.
 
 @node Customizing, Index, Using the library, Top
 @chapter Customizing
+@cindex customizing
 
 @menu
 * Error handling::              
@@ -3599,11 +3915,13 @@ yourself, with the prototype
 #include <cl_abort.h>
 void cl_abort (void);
 @end example
+@cindex @code{cl_abort ()}
 This function must not return control to its caller.
 
 
 @node Floating-point underflow, Customizing I/O, Error handling, Customizing
 @section Floating-point underflow
+@cindex underflow
 
 Floating point underflow denotes the situation when a floating-point number
 is to be created which is so close to @code{0} that its exponent is too
@@ -3613,9 +3931,8 @@ If you set the global variable
 cl_boolean cl_inhibit_floating_point_underflow
 @end example
 to @code{cl_true}, the error will be inhibited, and a floating-point zero
-will be generated instead.
-The default value of @code{cl_inhibit_floating_point_underflow} is
-@code{cl_false}.
+will be generated instead.  The default value of 
+@code{cl_inhibit_floating_point_underflow} is @code{cl_false}.
 
 
 @node Customizing I/O, Customizing the memory allocator, Floating-point underflow, Customizing
@@ -3623,6 +3940,7 @@ The default value of @code{cl_inhibit_floating_point_underflow} is
 
 The output of the function @code{fprint} may be customized by changing the
 value of the global variable @code{cl_default_print_flags}.
+@cindex @code{cl_default_print_flags}
 
 
 @node Customizing the memory allocator,  , Customizing I/O, Customizing
@@ -3641,6 +3959,8 @@ like this:
 void* (*cl_malloc_hook) (size_t size) = @dots{};
 void (*cl_free_hook) (void* ptr)      = @dots{};
 @end example
+@cindex @code{cl_malloc_hook ()}
+@cindex @code{cl_free_hook ()}
 The @code{cl_malloc_hook} function must not return a @code{NULL} pointer.
 
 It is not possible to change the memory allocator at runtime, because
index 6a1cb07651a5fdfd4caf55125dec1e33048f22e8..4f72621b37d470f01f86527ad54a37c2fa0fb5fd 100644 (file)
@@ -1,6 +1,6 @@
 <HTML>
 <HEAD>
-<!-- Created by texi2html 1.56k from cln.texi on 14 January 2000 -->
+<!-- Created by texi2html 1.56k from cln.texi on 4 May 2000 -->
 
 <TITLE>CLN, a Class Library for Numbers - 1. Introduction</TITLE>
 </HEAD>
@@ -134,8 +134,9 @@ The kernel of CLN has been written in assembly language for some CPUs
 (<CODE>i386</CODE>, <CODE>m68k</CODE>, <CODE>sparc</CODE>, <CODE>mips</CODE>, <CODE>arm</CODE>).
 <LI>
 
-On all CPUs, CLN uses the superefficient low-level routines from GNU
-GMP version 2.
+<A NAME="IDX1"></A>
+On all CPUs, CLN may be configured to use the superefficient low-level
+routines from GNU GMP version 3.
 <LI>
 
 It uses Karatsuba multiplication, which is significantly faster
@@ -144,9 +145,9 @@ for large numbers than the standard multiplication algorithm.
 
 For very large numbers (more than 12000 decimal digits), it uses
 Schönhage-Strassen
-multiplication, which is an asymptotically
-optimal multiplication algorithm, for multiplication, division and
-radix conversion.
+<A NAME="IDX2"></A>
+multiplication, which is an asymptotically optimal multiplication
+algorithm, for multiplication, division and radix conversion.
 </UL>
 
 <P>
index 059d50479e197945beb9345c3631c8a5bfa267e0..d858b76aa6b0d75be0dc24399f59c3c3cc03b7d1 100644 (file)
@@ -1,6 +1,6 @@
 <HTML>
 <HEAD>
-<!-- Created by texi2html 1.56k from cln.texi on 14 January 2000 -->
+<!-- Created by texi2html 1.56k from cln.texi on 4 May 2000 -->
 
 <TITLE>CLN, a Class Library for Numbers - 10. Internals</TITLE>
 </HEAD>
@@ -14,6 +14,9 @@ Go to the <A HREF="cln_1.html">first</A>, <A HREF="cln_9.html">previous</A>, <A
 
 
 <H2><A NAME="SEC59" HREF="cln_toc.html#TOC59">10.1 Why C++ ?</A></H2>
+<P>
+<A NAME="IDX303"></A>
+
 
 <P>
 Using C++ as an implementation language provides
@@ -27,6 +30,7 @@ Efficiency: It compiles to machine code.
 
 <LI>
 
+<A NAME="IDX304"></A>
 Portability: It runs on all platforms supporting a C++ compiler. Because
 of the availability of GNU C++, this includes all currently used 32-bit and
 64-bit platforms, independently of the quality of the vendor's C++ compiler.
@@ -36,7 +40,7 @@ of the availability of GNU C++, this includes all currently used 32-bit and
 Type safety: The C++ compilers knows about the number types and complains if,
 for example, you try to assign a float to an integer variable. However,
 a drawback is that C++ doesn't know about generic types, hence a restriction
-like that <CODE>operation+ (const cl_MI&#38;, const cl_MI&#38;)</CODE> requires that both
+like that <CODE>operator+ (const cl_MI&#38;, const cl_MI&#38;)</CODE> requires that both
 arguments belong to the same modular ring cannot be expressed as a compile-time
 information.
 
@@ -72,6 +76,8 @@ Object sharing: An operation like <CODE>x+0</CODE> returns <CODE>x</CODE> withou
 it.
 <LI>
 
+<A NAME="IDX305"></A>
+<A NAME="IDX306"></A>
 Garbage collection: A reference counting mechanism makes sure that any
 number object's storage is freed immediately when the last reference to the
 object is gone.
@@ -104,8 +110,8 @@ The kernel of CLN has been written in assembly language for some CPUs
 (<CODE>i386</CODE>, <CODE>m68k</CODE>, <CODE>sparc</CODE>, <CODE>mips</CODE>, <CODE>arm</CODE>).
 <LI>
 
-On all CPUs, CLN uses the superefficient low-level routines from GNU
-GMP version 2.
+On all CPUs, CLN may be configured to use the superefficient low-level
+routines from GNU GMP version 3.
 <LI>
 
 For large numbers, CLN uses, instead of the standard <CODE>O(N^2)</CODE>
@@ -116,6 +122,7 @@ algorithm.
 
 For very large numbers (more than 12000 decimal digits), CLN uses
 Schönhage-Strassen
+<A NAME="IDX307"></A>
 multiplication, which is an asymptotically
 optimal multiplication algorithm.
 <LI>
@@ -127,6 +134,9 @@ of division and radix conversion.
 
 
 <H2><A NAME="SEC62" HREF="cln_toc.html#TOC62">10.4 Garbage collection</A></H2>
+<P>
+<A NAME="IDX308"></A>
+
 
 <P>
 All the number classes are reference count classes: They only contain a pointer
index 61ab64bfb4ea18b3ee6f523102f039319c88954d..411c047f37fb5667a48846ac1fc38f42dbf165d8 100644 (file)
@@ -1,6 +1,6 @@
 <HTML>
 <HEAD>
-<!-- Created by texi2html 1.56k from cln.texi on 14 January 2000 -->
+<!-- Created by texi2html 1.56k from cln.texi on 4 May 2000 -->
 
 <TITLE>CLN, a Class Library for Numbers - 11. Using the library</TITLE>
 </HEAD>
@@ -22,6 +22,9 @@ environment variables, or directly substitute the appropriate values.
 
 
 <H2><A NAME="SEC64" HREF="cln_toc.html#TOC64">11.1 Compiler options</A></H2>
+<P>
+<A NAME="IDX309"></A>
+
 
 <P>
 Until you have installed CLN in a public place, the following options are
@@ -58,6 +61,10 @@ linking a CLN application it is sufficient to give the flag <CODE>-lcln</CODE>.
 
 
 <H2><A NAME="SEC65" HREF="cln_toc.html#TOC65">11.2 Include files</A></H2>
+<P>
+<A NAME="IDX310"></A>
+<A NAME="IDX311"></A>
+
 
 <P>
 Here is a summary of the include files and their contents.
@@ -253,6 +260,7 @@ Includes all of the above.
 
 <P>
 A function which computes the nth Fibonacci number can be written as follows.
+<A NAME="IDX312"></A>
 
 
 
@@ -329,9 +337,17 @@ automatically reclaimed (garbage collected). Only the result survives and
 gets passed to the caller.
 
 
+<P>
+The file <CODE>fibonacci.cc</CODE> in the subdirectory <CODE>examples</CODE>
+contains this implementation together with an even faster algorithm.
+
+
 
 
 <H2><A NAME="SEC67" HREF="cln_toc.html#TOC67">11.4 Debugging support</A></H2>
+<P>
+<A NAME="IDX313"></A>
+
 
 <P>
 When debugging a CLN application with GNU <CODE>gdb</CODE>, two facilities are
@@ -364,6 +380,7 @@ CLN offers a function <CODE>cl_print</CODE>, callable from the debugger,
 for printing number objects. In order to get this function, you have
 to define the macro <SAMP>`CL_DEBUG'</SAMP> and then include all the header files
 for which you want <CODE>cl_print</CODE> debugging support. For example:
+<A NAME="IDX314"></A>
 
 <PRE>
 #define CL_DEBUG
@@ -390,6 +407,7 @@ only with number objects and similar. Therefore CLN offers a member function
 <CODE>debug_print()</CODE> on all CLN types. The same macro <SAMP>`CL_DEBUG'</SAMP>
 is needed for this member function to be implemented. Under <CODE>gdb</CODE>,
 you call it like this:
+<A NAME="IDX315"></A>
 
 <PRE>
 (gdb) print s
index 0070b35d5dcff671dce7127e912a4a443881ac4a..93993488cf6f8da57bcde32bf1c18b5c6c94beed 100644 (file)
@@ -1,6 +1,6 @@
 <HTML>
 <HEAD>
-<!-- Created by texi2html 1.56k from cln.texi on 14 January 2000 -->
+<!-- Created by texi2html 1.56k from cln.texi on 4 May 2000 -->
 
 <TITLE>CLN, a Class Library for Numbers - 12. Customizing</TITLE>
 </HEAD>
@@ -10,6 +10,9 @@ Go to the <A HREF="cln_1.html">first</A>, <A HREF="cln_11.html">previous</A>, <A
 
 
 <H1><A NAME="SEC68" HREF="cln_toc.html#TOC68">12. Customizing</A></H1>
+<P>
+<A NAME="IDX316"></A>
+
 
 
 
@@ -28,12 +31,16 @@ void cl_abort (void);
 </PRE>
 
 <P>
+<A NAME="IDX317"></A>
 This function must not return control to its caller.
 
 
 
 
 <H2><A NAME="SEC70" HREF="cln_toc.html#TOC70">12.2 Floating-point underflow</A></H2>
+<P>
+<A NAME="IDX318"></A>
+
 
 <P>
 Floating point underflow denotes the situation when a floating-point number
@@ -47,9 +54,8 @@ cl_boolean cl_inhibit_floating_point_underflow
 
 <P>
 to <CODE>cl_true</CODE>, the error will be inhibited, and a floating-point zero
-will be generated instead.
-The default value of <CODE>cl_inhibit_floating_point_underflow</CODE> is
-<CODE>cl_false</CODE>.
+will be generated instead.  The default value of 
+<CODE>cl_inhibit_floating_point_underflow</CODE> is <CODE>cl_false</CODE>.
 
 
 
@@ -59,6 +65,7 @@ The default value of <CODE>cl_inhibit_floating_point_underflow</CODE> is
 <P>
 The output of the function <CODE>fprint</CODE> may be customized by changing the
 value of the global variable <CODE>cl_default_print_flags</CODE>.
+<A NAME="IDX319"></A>
 
 
 
@@ -82,6 +89,8 @@ void (*cl_free_hook) (void* ptr)      = ...;
 </PRE>
 
 <P>
+<A NAME="IDX320"></A>
+<A NAME="IDX321"></A>
 The <CODE>cl_malloc_hook</CODE> function must not return a <CODE>NULL</CODE> pointer.
 
 
index 7186cd1f78fb3fba70d0e1b929aacdb686da015e..1240d1ea358f08accd488af1b323d9f06f862b72 100644 (file)
@@ -1,6 +1,6 @@
 <HTML>
 <HEAD>
-<!-- Created by texi2html 1.56k from cln.texi on 14 January 2000 -->
+<!-- Created by texi2html 1.56k from cln.texi on 4 May 2000 -->
 
 <TITLE>CLN, a Class Library for Numbers - Index</TITLE>
 </HEAD>
index 2a92f2225fcca8ece1443b2adab22ae3b2fd4e53..d9f2136824e7935f587277d1ae484bafc79dc471 100644 (file)
@@ -1,6 +1,6 @@
 <HTML>
 <HEAD>
-<!-- Created by texi2html 1.56k from cln.texi on 14 January 2000 -->
+<!-- Created by texi2html 1.56k from cln.texi on 4 May 2000 -->
 
 <TITLE>CLN, a Class Library for Numbers - 2. Installation</TITLE>
 </HEAD>
@@ -27,7 +27,7 @@ This section describes how to install the CLN package on your system.
 To build CLN, you need a C++ compiler.
 Actually, you need GNU <CODE>g++ 2.7.0</CODE> or newer.
 On HPPA, you need GNU <CODE>g++ 2.8.0</CODE> or newer.
-I recommend GNU <CODE>egcs 1.1</CODE> or newer.
+I recommend GNU <CODE>g++ 2.95</CODE> or newer.
 
 
 <P>
@@ -50,6 +50,8 @@ of static and global variables, a feature which I could
 implement for GNU g++ only.
 
 
+<P>
+<A NAME="IDX3"></A>
 
 
 <H3><A NAME="SEC5" HREF="cln_toc.html#TOC5">2.1.2 Make utility</A></H3>
@@ -58,6 +60,8 @@ implement for GNU g++ only.
 To build CLN, you also need to have GNU <CODE>make</CODE> installed.
 
 
+<P>
+<A NAME="IDX4"></A>
 
 
 <H3><A NAME="SEC6" HREF="cln_toc.html#TOC6">2.1.3 Sed utility</A></H3>
@@ -181,11 +185,6 @@ With full <SAMP>`-O2'</SAMP>, <CODE>g++</CODE> miscompiles the division routines
 --enable-shared to work, you need egcs-1.1.2 or newer.
 
 
-<P>
-On MIPS (SGI Irix 6), pass option <CODE>--without-gmp</CODE> to configure. gmp does
-not work when compiled in <SAMP>`n32'</SAMP> binary format on Irix.
-
-
 <P>
 By default, only a static library is built. You can build CLN as a shared
 library too, by calling <CODE>configure</CODE> with the option <SAMP>`--enable-shared'</SAMP>.
@@ -202,6 +201,9 @@ library.
 
 
 <H2><A NAME="SEC8" HREF="cln_toc.html#TOC8">2.3 Installing the library</A></H2>
+<P>
+<A NAME="IDX5"></A>
+
 
 <P>
 As with any autoconfiguring GNU software, installation is as easy as this:
index 9db9d05b15f2c1130e9e37d1ca3ee7bddaff7b13..ed3eae488c1833cae038993c96704cdc43ebad55 100644 (file)
@@ -1,6 +1,6 @@
 <HTML>
 <HEAD>
-<!-- Created by texi2html 1.56k from cln.texi on 14 January 2000 -->
+<!-- Created by texi2html 1.56k from cln.texi on 4 May 2000 -->
 
 <TITLE>CLN, a Class Library for Numbers - 3. Ordinary number types</TITLE>
 </HEAD>
@@ -45,6 +45,8 @@ Rational number                     Floating-point number
 </PRE>
 
 <P>
+<A NAME="IDX6"></A>
+<A NAME="IDX7"></A>
 The base class <CODE>cl_number</CODE> is an abstract base class.
 It is not useful to declare a variable of this type except if you want
 to completely disable compile-time type checking and use run-time type
@@ -52,17 +54,24 @@ checking instead.
 
 
 <P>
+<A NAME="IDX8"></A>
+<A NAME="IDX9"></A>
+<A NAME="IDX10"></A>
 The class <CODE>cl_N</CODE> comprises real and complex numbers. There is
 no special class for complex numbers since complex numbers with imaginary
 part <CODE>0</CODE> are automatically converted to real numbers.
 
 
 <P>
+<A NAME="IDX11"></A>
 The class <CODE>cl_R</CODE> comprises real numbers of different kinds. It is an
 abstract class.
 
 
 <P>
+<A NAME="IDX12"></A>
+<A NAME="IDX13"></A>
+<A NAME="IDX14"></A>
 The class <CODE>cl_RA</CODE> comprises exact real numbers: rational numbers, including
 integers. There is no special class for non-integral rational numbers
 since rational numbers with denominator <CODE>1</CODE> are automatically converted
@@ -70,6 +79,7 @@ to integers.
 
 
 <P>
+<A NAME="IDX15"></A>
 The class <CODE>cl_F</CODE> implements floating-point approximations to real numbers.
 It is an abstract class.
 
@@ -77,6 +87,9 @@ It is an abstract class.
 
 
 <H2><A NAME="SEC11" HREF="cln_toc.html#TOC11">3.1 Exact numbers</A></H2>
+<P>
+<A NAME="IDX16"></A>
+
 
 <P>
 Some numbers are represented as exact numbers: there is no loss of information
@@ -118,6 +131,9 @@ is completely transparent.
 
 
 <H2><A NAME="SEC12" HREF="cln_toc.html#TOC12">3.2 Floating-point numbers</A></H2>
+<P>
+<A NAME="IDX17"></A>
+
 
 <P>
 Not all real numbers can be represented exactly. (There is an easy mathematical
@@ -128,6 +144,7 @@ CLN implements ordinary floating-point numbers, with mantissa and exponent.
 
 
 <P>
+<A NAME="IDX18"></A>
 The elementary operations (<CODE>+</CODE>, <CODE>-</CODE>, <CODE>*</CODE>, <CODE>/</CODE>, ...)
 only return approximate results. For example, the value of the expression
 <CODE>(cl_F) 0.3 + (cl_F) 0.4</CODE> prints as <SAMP>`0.70000005'</SAMP>, not as
@@ -158,6 +175,7 @@ Floating point numbers come in four flavors:
 <UL>
 <LI>
 
+<A NAME="IDX19"></A>
 Short floats, type <CODE>cl_SF</CODE>.
 They have 1 sign bit, 8 exponent bits (including the exponent's sign),
 and 17 mantissa bits (including the "hidden" bit).
@@ -165,6 +183,7 @@ They don't consume heap allocation.
 
 <LI>
 
+<A NAME="IDX20"></A>
 Single floats, type <CODE>cl_FF</CODE>.
 They have 1 sign bit, 8 exponent bits (including the exponent's sign),
 and 24 mantissa bits (including the "hidden" bit).
@@ -173,6 +192,7 @@ This corresponds closely to the C/C++ type <SAMP>`float'</SAMP>.
 
 <LI>
 
+<A NAME="IDX21"></A>
 Double floats, type <CODE>cl_DF</CODE>.
 They have 1 sign bit, 11 exponent bits (including the exponent's sign),
 and 53 mantissa bits (including the "hidden" bit).
@@ -181,6 +201,7 @@ This corresponds closely to the C/C++ type <SAMP>`double'</SAMP>.
 
 <LI>
 
+<A NAME="IDX22"></A>
 Long floats, type <CODE>cl_LF</CODE>.
 They have 1 sign bit, 32 exponent bits (including the exponent's sign),
 and n mantissa bits (including the "hidden" bit), where n &#62;= 64.
@@ -201,6 +222,7 @@ with larger exponent range.
 
 
 <P>
+<A NAME="IDX23"></A>
 As a user of CLN, you can forget about the differences between the
 four floating-point types and just declare all your floating-point
 variables as being of type <CODE>cl_F</CODE>. This has the advantage that
@@ -216,6 +238,9 @@ the floating point contagion rule happened to change in the future.)
 
 
 <H2><A NAME="SEC13" HREF="cln_toc.html#TOC13">3.3 Complex numbers</A></H2>
+<P>
+<A NAME="IDX24"></A>
+
 
 <P>
 Complex numbers, as implemented by the class <CODE>cl_N</CODE>, have a real
@@ -232,6 +257,9 @@ through application of <CODE>sqrt</CODE> or transcendental functions.
 
 
 <H2><A NAME="SEC14" HREF="cln_toc.html#TOC14">3.4 Conversions</A></H2>
+<P>
+<A NAME="IDX25"></A>
+
 
 <P>
 Conversions from any class to any its superclasses ("base classes" in
@@ -289,6 +317,7 @@ Conversions from <SAMP>`const char *'</SAMP> are provided for the classes
 <CODE>cl_R</CODE>, <CODE>cl_N</CODE>.
 The easiest way to specify a value which is outside of the range of the
 C++ built-in types is therefore to specify it as a string, like this:
+<A NAME="IDX26"></A>
 
 <PRE>
    cl_I order_of_rubiks_cube_group = "43252003274489856000";
@@ -308,12 +337,16 @@ the functions
 
 <DT><CODE>int cl_I_to_int (const cl_I&#38; x)</CODE>
 <DD>
+<A NAME="IDX27"></A>
 <DT><CODE>unsigned int cl_I_to_uint (const cl_I&#38; x)</CODE>
 <DD>
+<A NAME="IDX28"></A>
 <DT><CODE>long cl_I_to_long (const cl_I&#38; x)</CODE>
 <DD>
+<A NAME="IDX29"></A>
 <DT><CODE>unsigned long cl_I_to_ulong (const cl_I&#38; x)</CODE>
 <DD>
+<A NAME="IDX30"></A>
 Returns <CODE>x</CODE> as element of the C type <VAR>ctype</VAR>. If <CODE>x</CODE> is not
 representable in the range of <VAR>ctype</VAR>, a runtime error occurs.
 </DL>
@@ -330,8 +363,10 @@ the functions
 
 <DT><CODE>float cl_float_approx (const <VAR>type</VAR>&#38; x)</CODE>
 <DD>
+<A NAME="IDX31"></A>
 <DT><CODE>double cl_double_approx (const <VAR>type</VAR>&#38; x)</CODE>
 <DD>
+<A NAME="IDX32"></A>
 Returns an approximation of <CODE>x</CODE> of C type <VAR>ctype</VAR>.
 If <CODE>abs(x)</CODE> is too close to 0 (underflow), 0 is returned.
 If <CODE>abs(x)</CODE> is too large (overflow), an IEEE infinity is returned.
@@ -342,8 +377,10 @@ Conversions from any class to any of its subclasses ("derived classes" in
 C++ terminology) are not provided. Instead, you can assert and check
 that a value belongs to a certain subclass, and return it as element of that
 class, using the <SAMP>`As'</SAMP> and <SAMP>`The'</SAMP> macros.
+<A NAME="IDX33"></A>
 <CODE>As(<VAR>type</VAR>)(<VAR>value</VAR>)</CODE> checks that <VAR>value</VAR> belongs to
 <VAR>type</VAR> and returns it as such.
+<A NAME="IDX34"></A>
 <CODE>The(<VAR>type</VAR>)(<VAR>value</VAR>)</CODE> assumes that <VAR>value</VAR> belongs to
 <VAR>type</VAR> and returns it as such. It is your responsibility to ensure
 that this assumption is valid.
index f9ac86eddcd5da204679d2ba06577719df76eed6..4bf113f9b2e04993671bc3b30223cf1c27ffb231 100644 (file)
@@ -1,6 +1,6 @@
 <HTML>
 <HEAD>
-<!-- Created by texi2html 1.56k from cln.texi on 14 January 2000 -->
+<!-- Created by texi2html 1.56k from cln.texi on 4 May 2000 -->
 
 <TITLE>CLN, a Class Library for Numbers - 4. Functions on numbers</TITLE>
 </HEAD>
@@ -109,10 +109,12 @@ defines the following operations:
 
 <DT><CODE><VAR>type</VAR> operator + (const <VAR>type</VAR>&#38;, const <VAR>type</VAR>&#38;)</CODE>
 <DD>
+<A NAME="IDX35"></A>
 Addition.
 
 <DT><CODE><VAR>type</VAR> operator - (const <VAR>type</VAR>&#38;, const <VAR>type</VAR>&#38;)</CODE>
 <DD>
+<A NAME="IDX36"></A>
 Subtraction.
 
 <DT><CODE><VAR>type</VAR> operator - (const <VAR>type</VAR>&#38;)</CODE>
@@ -121,18 +123,22 @@ Returns the negative of the argument.
 
 <DT><CODE><VAR>type</VAR> plus1 (const <VAR>type</VAR>&#38; x)</CODE>
 <DD>
+<A NAME="IDX37"></A>
 Returns <CODE>x + 1</CODE>.
 
 <DT><CODE><VAR>type</VAR> minus1 (const <VAR>type</VAR>&#38; x)</CODE>
 <DD>
+<A NAME="IDX38"></A>
 Returns <CODE>x - 1</CODE>.
 
 <DT><CODE><VAR>type</VAR> operator * (const <VAR>type</VAR>&#38;, const <VAR>type</VAR>&#38;)</CODE>
 <DD>
+<A NAME="IDX39"></A>
 Multiplication.
 
 <DT><CODE><VAR>type</VAR> square (const <VAR>type</VAR>&#38; x)</CODE>
 <DD>
+<A NAME="IDX40"></A>
 Returns <CODE>x * x</CODE>.
 </DL>
 
@@ -146,10 +152,12 @@ defines the following operations:
 
 <DT><CODE><VAR>type</VAR> operator / (const <VAR>type</VAR>&#38;, const <VAR>type</VAR>&#38;)</CODE>
 <DD>
+<A NAME="IDX41"></A>
 Division.
 
 <DT><CODE><VAR>type</VAR> recip (const <VAR>type</VAR>&#38;)</CODE>
 <DD>
+<A NAME="IDX42"></A>
 Returns the reciprocal of the argument.
 </DL>
 
@@ -165,6 +173,7 @@ Instead, <CODE>cl_I</CODE> defines an "exact quotient" function:
 
 <DT><CODE>cl_I exquo (const cl_I&#38; x, const cl_I&#38; y)</CODE>
 <DD>
+<A NAME="IDX43"></A>
 Checks that <CODE>y</CODE> divides <CODE>x</CODE>, and returns the quotient <CODE>x</CODE>/<CODE>y</CODE>.
 </DL>
 
@@ -176,12 +185,14 @@ The following exponentiation functions are defined:
 
 <DT><CODE>cl_I expt_pos (const cl_I&#38; x, const cl_I&#38; y)</CODE>
 <DD>
+<A NAME="IDX44"></A>
 <DT><CODE>cl_RA expt_pos (const cl_RA&#38; x, const cl_I&#38; y)</CODE>
 <DD>
 <CODE>y</CODE> must be &#62; 0. Returns <CODE>x^y</CODE>.
 
 <DT><CODE>cl_RA expt (const cl_RA&#38; x, const cl_I&#38; y)</CODE>
 <DD>
+<A NAME="IDX45"></A>
 <DT><CODE>cl_R expt (const cl_R&#38; x, const cl_I&#38; y)</CODE>
 <DD>
 <DT><CODE>cl_N expt (const cl_N&#38; x, const cl_I&#38; y)</CODE>
@@ -199,6 +210,7 @@ defines the following operation:
 
 <DT><CODE><VAR>type</VAR> abs (const <VAR>type</VAR>&#38; x)</CODE>
 <DD>
+<A NAME="IDX46"></A>
 Returns the absolute value of <CODE>x</CODE>.
 This is <CODE>x</CODE> if <CODE>x &#62;= 0</CODE>, and <CODE>-x</CODE> if <CODE>x &#60;= 0</CODE>.
 </DL>
@@ -224,6 +236,7 @@ defines the following operation:
 
 <DT><CODE><VAR>type</VAR> signum (const <VAR>type</VAR>&#38; x)</CODE>
 <DD>
+<A NAME="IDX47"></A>
 Returns the sign of <CODE>x</CODE>, in the same number format as <CODE>x</CODE>.
 This is defined as <CODE>x / abs(x)</CODE> if <CODE>x</CODE> is non-zero, and
 <CODE>x</CODE> if <CODE>x</CODE> is zero. If <CODE>x</CODE> is real, the value is either
@@ -242,10 +255,12 @@ Each of the classes <CODE>cl_RA</CODE>, <CODE>cl_I</CODE> defines the following
 
 <DT><CODE>cl_I numerator (const <VAR>type</VAR>&#38; x)</CODE>
 <DD>
+<A NAME="IDX48"></A>
 Returns the numerator of <CODE>x</CODE>.
 
 <DT><CODE>cl_I denominator (const <VAR>type</VAR>&#38; x)</CODE>
 <DD>
+<A NAME="IDX49"></A>
 Returns the denominator of <CODE>x</CODE>.
 </DL>
 
@@ -266,6 +281,7 @@ The class <CODE>cl_N</CODE> defines the following operation:
 
 <DT><CODE>cl_N complex (const cl_R&#38; a, const cl_R&#38; b)</CODE>
 <DD>
+<A NAME="IDX50"></A>
 Returns the complex number <CODE>a+bi</CODE>, that is, the complex number with
 real part <CODE>a</CODE> and imaginary part <CODE>b</CODE>.
 </DL>
@@ -278,14 +294,17 @@ Each of the classes <CODE>cl_N</CODE>, <CODE>cl_R</CODE> defines the following o
 
 <DT><CODE>cl_R realpart (const <VAR>type</VAR>&#38; x)</CODE>
 <DD>
+<A NAME="IDX51"></A>
 Returns the real part of <CODE>x</CODE>.
 
 <DT><CODE>cl_R imagpart (const <VAR>type</VAR>&#38; x)</CODE>
 <DD>
+<A NAME="IDX52"></A>
 Returns the imaginary part of <CODE>x</CODE>.
 
 <DT><CODE><VAR>type</VAR> conjugate (const <VAR>type</VAR>&#38; x)</CODE>
 <DD>
+<A NAME="IDX53"></A>
 Returns the complex conjugate of <CODE>x</CODE>.
 </DL>
 
@@ -306,6 +325,9 @@ We have the relations
 
 
 <H2><A NAME="SEC24" HREF="cln_toc.html#TOC24">4.5 Comparisons</A></H2>
+<P>
+<A NAME="IDX54"></A>
+
 
 <P>
 Each of the classes <CODE>cl_N</CODE>, <CODE>cl_R</CODE>, <CODE>cl_RA</CODE>, <CODE>cl_I</CODE>,
@@ -317,18 +339,22 @@ defines the following operations:
 
 <DT><CODE>bool operator == (const <VAR>type</VAR>&#38;, const <VAR>type</VAR>&#38;)</CODE>
 <DD>
+<A NAME="IDX55"></A>
 <DT><CODE>bool operator != (const <VAR>type</VAR>&#38;, const <VAR>type</VAR>&#38;)</CODE>
 <DD>
+<A NAME="IDX56"></A>
 Comparison, as in C and C++.
 
 <DT><CODE>uint32 cl_equal_hashcode (const <VAR>type</VAR>&#38;)</CODE>
 <DD>
+<A NAME="IDX57"></A>
 Returns a 32-bit hash code that is the same for any two numbers which are
 the same according to <CODE>==</CODE>. This hash code depends on the number's value,
 not its type or precision.
 
 <DT><CODE>cl_boolean zerop (const <VAR>type</VAR>&#38; x)</CODE>
 <DD>
+<A NAME="IDX58"></A>
 Compare against zero: <CODE>x == 0</CODE>
 </DL>
 
@@ -342,33 +368,42 @@ defines the following operations:
 
 <DT><CODE>cl_signean cl_compare (const <VAR>type</VAR>&#38; x, const <VAR>type</VAR>&#38; y)</CODE>
 <DD>
+<A NAME="IDX59"></A>
 Compares <CODE>x</CODE> and <CODE>y</CODE>. Returns +1 if <CODE>x</CODE>&#62;<CODE>y</CODE>,
 -1 if <CODE>x</CODE>&#60;<CODE>y</CODE>, 0 if <CODE>x</CODE>=<CODE>y</CODE>.
 
 <DT><CODE>bool operator &#60;= (const <VAR>type</VAR>&#38;, const <VAR>type</VAR>&#38;)</CODE>
 <DD>
+<A NAME="IDX60"></A>
 <DT><CODE>bool operator &#60; (const <VAR>type</VAR>&#38;, const <VAR>type</VAR>&#38;)</CODE>
 <DD>
+<A NAME="IDX61"></A>
 <DT><CODE>bool operator &#62;= (const <VAR>type</VAR>&#38;, const <VAR>type</VAR>&#38;)</CODE>
 <DD>
+<A NAME="IDX62"></A>
 <DT><CODE>bool operator &#62; (const <VAR>type</VAR>&#38;, const <VAR>type</VAR>&#38;)</CODE>
 <DD>
+<A NAME="IDX63"></A>
 Comparison, as in C and C++.
 
 <DT><CODE>cl_boolean minusp (const <VAR>type</VAR>&#38; x)</CODE>
 <DD>
+<A NAME="IDX64"></A>
 Compare against zero: <CODE>x &#60; 0</CODE>
 
 <DT><CODE>cl_boolean plusp (const <VAR>type</VAR>&#38; x)</CODE>
 <DD>
+<A NAME="IDX65"></A>
 Compare against zero: <CODE>x &#62; 0</CODE>
 
 <DT><CODE><VAR>type</VAR> max (const <VAR>type</VAR>&#38; x, const <VAR>type</VAR>&#38; y)</CODE>
 <DD>
+<A NAME="IDX66"></A>
 Return the maximum of <CODE>x</CODE> and <CODE>y</CODE>.
 
 <DT><CODE><VAR>type</VAR> min (const <VAR>type</VAR>&#38; x, const <VAR>type</VAR>&#38; y)</CODE>
 <DD>
+<A NAME="IDX67"></A>
 Return the minimum of <CODE>x</CODE> and <CODE>y</CODE>.
 </DL>
 
@@ -384,6 +419,9 @@ there is no floating point number whose value is exactly <CODE>1/3</CODE>.
 
 
 <H2><A NAME="SEC25" HREF="cln_toc.html#TOC25">4.6 Rounding functions</A></H2>
+<P>
+<A NAME="IDX68"></A>
+
 
 <P>
 When a real number is to be converted to an integer, there is no "best"
@@ -453,15 +491,19 @@ defines the following operations:
 
 <DT><CODE>cl_I floor1 (const <VAR>type</VAR>&#38; x)</CODE>
 <DD>
+<A NAME="IDX69"></A>
 Returns <CODE>floor(x)</CODE>.
 <DT><CODE>cl_I ceiling1 (const <VAR>type</VAR>&#38; x)</CODE>
 <DD>
+<A NAME="IDX70"></A>
 Returns <CODE>ceiling(x)</CODE>.
 <DT><CODE>cl_I truncate1 (const <VAR>type</VAR>&#38; x)</CODE>
 <DD>
+<A NAME="IDX71"></A>
 Returns <CODE>truncate(x)</CODE>.
 <DT><CODE>cl_I round1 (const <VAR>type</VAR>&#38; x)</CODE>
 <DD>
+<A NAME="IDX72"></A>
 Returns <CODE>round(x)</CODE>.
 </DL>
 
@@ -550,12 +592,16 @@ defines the following operations:
 <DD>
 <DT><CODE><VAR>type</VAR>_div_t floor2 (const <VAR>type</VAR>&#38; x, const <VAR>type</VAR>&#38; y)</CODE>
 <DD>
+<A NAME="IDX73"></A>
 <DT><CODE><VAR>type</VAR>_div_t ceiling2 (const <VAR>type</VAR>&#38; x, const <VAR>type</VAR>&#38; y)</CODE>
 <DD>
+<A NAME="IDX74"></A>
 <DT><CODE><VAR>type</VAR>_div_t truncate2 (const <VAR>type</VAR>&#38; x, const <VAR>type</VAR>&#38; y)</CODE>
 <DD>
+<A NAME="IDX75"></A>
 <DT><CODE><VAR>type</VAR>_div_t round2 (const <VAR>type</VAR>&#38; x, const <VAR>type</VAR>&#38; y)</CODE>
 <DD>
+<A NAME="IDX76"></A>
 </DL>
 
 <P>
@@ -574,12 +620,16 @@ defines the following operations:
 
 <DT><CODE><VAR>type</VAR> ffloor (const <VAR>type</VAR>&#38; x)</CODE>
 <DD>
+<A NAME="IDX77"></A>
 <DT><CODE><VAR>type</VAR> fceiling (const <VAR>type</VAR>&#38; x)</CODE>
 <DD>
+<A NAME="IDX78"></A>
 <DT><CODE><VAR>type</VAR> ftruncate (const <VAR>type</VAR>&#38; x)</CODE>
 <DD>
+<A NAME="IDX79"></A>
 <DT><CODE><VAR>type</VAR> fround (const <VAR>type</VAR>&#38; x)</CODE>
 <DD>
+<A NAME="IDX80"></A>
 </DL>
 
 <P>
@@ -619,12 +669,16 @@ defines the following operations:
 <DD>
 <DT><CODE><VAR>type</VAR>_fdiv_t ffloor2 (const <VAR>type</VAR>&#38; x)</CODE>
 <DD>
+<A NAME="IDX81"></A>
 <DT><CODE><VAR>type</VAR>_fdiv_t fceiling2 (const <VAR>type</VAR>&#38; x)</CODE>
 <DD>
+<A NAME="IDX82"></A>
 <DT><CODE><VAR>type</VAR>_fdiv_t ftruncate2 (const <VAR>type</VAR>&#38; x)</CODE>
 <DD>
+<A NAME="IDX83"></A>
 <DT><CODE><VAR>type</VAR>_fdiv_t fround2 (const <VAR>type</VAR>&#38; x)</CODE>
 <DD>
+<A NAME="IDX84"></A>
 </DL>
 <P>
 and similarly for class <CODE>cl_R</CODE>, but with quotient type <CODE>cl_F</CODE>.
@@ -679,8 +733,10 @@ The classes <CODE>cl_R</CODE>, <CODE>cl_I</CODE> define the following operations
 
 <DT><CODE><VAR>type</VAR> mod (const <VAR>type</VAR>&#38; x, const <VAR>type</VAR>&#38; y)</CODE>
 <DD>
+<A NAME="IDX85"></A>
 <DT><CODE><VAR>type</VAR> rem (const <VAR>type</VAR>&#38; x, const <VAR>type</VAR>&#38; y)</CODE>
 <DD>
+<A NAME="IDX86"></A>
 </DL>
 
 
@@ -697,6 +753,7 @@ defines the following operation:
 
 <DT><CODE><VAR>type</VAR> sqrt (const <VAR>type</VAR>&#38; x)</CODE>
 <DD>
+<A NAME="IDX87"></A>
 <CODE>x</CODE> must be &#62;= 0. This function returns the square root of <CODE>x</CODE>,
 normalized to be &#62;= 0. If <CODE>x</CODE> is the square of a rational number,
 <CODE>sqrt(x)</CODE> will be a rational number, else it will return a
@@ -711,6 +768,7 @@ The classes <CODE>cl_RA</CODE>, <CODE>cl_I</CODE> define the following operation
 
 <DT><CODE>cl_boolean sqrtp (const <VAR>type</VAR>&#38; x, <VAR>type</VAR>* root)</CODE>
 <DD>
+<A NAME="IDX88"></A>
 This tests whether <CODE>x</CODE> is a perfect square. If so, it returns true
 and the exact square root in <CODE>*root</CODE>, else it returns false.
 </DL>
@@ -723,6 +781,7 @@ Furthermore, for integers, similarly:
 
 <DT><CODE>cl_boolean isqrt (const <VAR>type</VAR>&#38; x, <VAR>type</VAR>* root)</CODE>
 <DD>
+<A NAME="IDX89"></A>
 <CODE>x</CODE> should be &#62;= 0. This function sets <CODE>*root</CODE> to
 <CODE>floor(sqrt(x))</CODE> and returns the same value as <CODE>sqrtp</CODE>:
 the boolean value <CODE>(expt(*root,2) == x)</CODE>.
@@ -737,6 +796,7 @@ define the following operation:
 
 <DT><CODE>cl_boolean rootp (const <VAR>type</VAR>&#38; x, const cl_I&#38; n, <VAR>type</VAR>* root)</CODE>
 <DD>
+<A NAME="IDX90"></A>
 <CODE>x</CODE> must be &#62;= 0. <CODE>n</CODE> must be &#62; 0.
 This tests whether <CODE>x</CODE> is an <CODE>n</CODE>th power of a rational number.
 If so, it returns true and the exact root in <CODE>*root</CODE>, else it returns
@@ -752,6 +812,7 @@ for class <CODE>cl_N</CODE>:
 
 <DT><CODE>cl_N sqrt (const cl_N&#38; z)</CODE>
 <DD>
+<A NAME="IDX91"></A>
 Returns the square root of <CODE>z</CODE>, as defined by the formula
 <CODE>sqrt(z) = exp(log(z)/2)</CODE>. Conversion to a floating-point type
 or to a complex number are done if necessary. The range of the result is the
@@ -764,6 +825,9 @@ The result is an exact number only if <CODE>z</CODE> is an exact number.
 
 
 <H2><A NAME="SEC27" HREF="cln_toc.html#TOC27">4.8 Transcendental functions</A></H2>
+<P>
+<A NAME="IDX92"></A>
+
 
 <P>
 The transcendental functions return an exact result if the argument
@@ -780,6 +844,7 @@ For example, <CODE>cos(0) = 1</CODE> returns the rational number <CODE>1</CODE>.
 
 <DT><CODE>cl_R exp (const cl_R&#38; x)</CODE>
 <DD>
+<A NAME="IDX93"></A>
 <DT><CODE>cl_N exp (const cl_N&#38; x)</CODE>
 <DD>
 Returns the exponential function of <CODE>x</CODE>. This is <CODE>e^x</CODE> where
@@ -788,10 +853,12 @@ is the entire complex plane excluding 0.
 
 <DT><CODE>cl_R ln (const cl_R&#38; x)</CODE>
 <DD>
+<A NAME="IDX94"></A>
 <CODE>x</CODE> must be &#62; 0. Returns the (natural) logarithm of x.
 
 <DT><CODE>cl_N log (const cl_N&#38; x)</CODE>
 <DD>
+<A NAME="IDX95"></A>
 Returns the (natural) logarithm of x. If <CODE>x</CODE> is real and positive,
 this is <CODE>ln(x)</CODE>. In general, <CODE>log(x) = log(abs(x)) + i*phase(x)</CODE>.
 The range of the result is the strip in the complex plane
@@ -799,6 +866,7 @@ The range of the result is the strip in the complex plane
 
 <DT><CODE>cl_R phase (const cl_N&#38; x)</CODE>
 <DD>
+<A NAME="IDX96"></A>
 Returns the angle part of <CODE>x</CODE> in its polar representation as a
 complex number. That is, <CODE>phase(x) = atan(realpart(x),imagpart(x))</CODE>.
 This is also the imaginary part of <CODE>log(x)</CODE>.
@@ -820,6 +888,7 @@ Returns the logarithm of <CODE>a</CODE> with respect to base <CODE>b</CODE>.
 
 <DT><CODE>cl_N expt (const cl_N&#38; x, const cl_N&#38; y)</CODE>
 <DD>
+<A NAME="IDX97"></A>
 Exponentiation: Returns <CODE>x^y = exp(y*log(x))</CODE>.
 </DL>
 
@@ -831,6 +900,7 @@ The constant e = exp(1) = 2.71828... is returned by the following functions:
 
 <DT><CODE>cl_F cl_exp1 (cl_float_format_t f)</CODE>
 <DD>
+<A NAME="IDX98"></A>
 Returns e as a float of format <CODE>f</CODE>.
 
 <DT><CODE>cl_F cl_exp1 (const cl_F&#38; y)</CODE>
@@ -850,6 +920,7 @@ Returns e as a float of format <CODE>cl_default_float_format</CODE>.
 
 <DT><CODE>cl_R sin (const cl_R&#38; x)</CODE>
 <DD>
+<A NAME="IDX99"></A>
 Returns <CODE>sin(x)</CODE>. The range of the result is the interval
 <CODE>-1 &#60;= sin(x) &#60;= 1</CODE>.
 
@@ -859,6 +930,7 @@ Returns <CODE>sin(z)</CODE>. The range of the result is the entire complex plane
 
 <DT><CODE>cl_R cos (const cl_R&#38; x)</CODE>
 <DD>
+<A NAME="IDX100"></A>
 Returns <CODE>cos(x)</CODE>. The range of the result is the interval
 <CODE>-1 &#60;= cos(x) &#60;= 1</CODE>.
 
@@ -868,25 +940,31 @@ Returns <CODE>cos(z)</CODE>. The range of the result is the entire complex plane
 
 <DT><CODE>struct cl_cos_sin_t { cl_R cos; cl_R sin; };</CODE>
 <DD>
+<A NAME="IDX101"></A>
 <DT><CODE>cl_cos_sin_t cl_cos_sin (const cl_R&#38; x)</CODE>
 <DD>
 Returns both <CODE>sin(x)</CODE> and <CODE>cos(x)</CODE>. This is more efficient than
+<A NAME="IDX102"></A>
 computing them separately. The relation <CODE>cos^2 + sin^2 = 1</CODE> will
 hold only approximately.
 
 <DT><CODE>cl_R tan (const cl_R&#38; x)</CODE>
 <DD>
+<A NAME="IDX103"></A>
 <DT><CODE>cl_N tan (const cl_N&#38; x)</CODE>
 <DD>
 Returns <CODE>tan(x) = sin(x)/cos(x)</CODE>.
 
 <DT><CODE>cl_N cis (const cl_R&#38; x)</CODE>
 <DD>
+<A NAME="IDX104"></A>
 <DT><CODE>cl_N cis (const cl_N&#38; x)</CODE>
 <DD>
 Returns <CODE>exp(i*x)</CODE>. The name <SAMP>`cis'</SAMP> means "cos + i sin", because
 <CODE>e^(i*x) = cos(x) + i*sin(x)</CODE>.
 
+<A NAME="IDX105"></A>
+<A NAME="IDX106"></A>
 <DT><CODE>cl_N asin (const cl_N&#38; z)</CODE>
 <DD>
 Returns <CODE>arcsin(z)</CODE>. This is defined as
@@ -899,6 +977,7 @@ with <CODE>realpart = pi/2</CODE> and <CODE>imagpart &#62; 0</CODE>.
 
 <DT><CODE>cl_N acos (const cl_N&#38; z)</CODE>
 <DD>
+<A NAME="IDX107"></A>
 Returns <CODE>arccos(z)</CODE>. This is defined as
 <CODE>arccos(z) = pi/2 - arcsin(z) = log(z+i*sqrt(1-z^2))/i</CODE>
 and satisfies <CODE>arccos(-z) = pi - arccos(z)</CODE>.
@@ -907,6 +986,8 @@ The range of the result is the strip in the complex domain
 with <CODE>realpart = 0</CODE> and <CODE>imagpart &#60; 0</CODE> and the numbers
 with <CODE>realpart = pi</CODE> and <CODE>imagpart &#62; 0</CODE>.
 
+<A NAME="IDX108"></A>
+<A NAME="IDX109"></A>
 <DT><CODE>cl_R atan (const cl_R&#38; x, const cl_R&#38; y)</CODE>
 <DD>
 Returns the angle of the polar representation of the complex number
@@ -935,13 +1016,16 @@ with <CODE>realpart = pi/2</CODE> and <CODE>imagpart &#60;= 0</CODE>.
 </DL>
 
 <P>
-The constant pi = 3.14... is returned by the following functions:
+<A NAME="IDX110"></A>
+<A NAME="IDX111"></A>
+Archimedes' constant pi = 3.14... is returned by the following functions:
 
 
 <DL COMPACT>
 
 <DT><CODE>cl_F cl_pi (cl_float_format_t f)</CODE>
 <DD>
+<A NAME="IDX112"></A>
 Returns pi as a float of format <CODE>f</CODE>.
 
 <DT><CODE>cl_F cl_pi (const cl_F&#38; y)</CODE>
@@ -961,6 +1045,7 @@ Returns pi as a float of format <CODE>cl_default_float_format</CODE>.
 
 <DT><CODE>cl_R sinh (const cl_R&#38; x)</CODE>
 <DD>
+<A NAME="IDX113"></A>
 Returns <CODE>sinh(x)</CODE>.
 
 <DT><CODE>cl_N sinh (const cl_N&#38; z)</CODE>
@@ -969,6 +1054,7 @@ Returns <CODE>sinh(z)</CODE>. The range of the result is the entire complex plan
 
 <DT><CODE>cl_R cosh (const cl_R&#38; x)</CODE>
 <DD>
+<A NAME="IDX114"></A>
 Returns <CODE>cosh(x)</CODE>. The range of the result is the interval
 <CODE>cosh(x) &#62;= 1</CODE>.
 
@@ -978,20 +1064,24 @@ Returns <CODE>cosh(z)</CODE>. The range of the result is the entire complex plan
 
 <DT><CODE>struct cl_cosh_sinh_t { cl_R cosh; cl_R sinh; };</CODE>
 <DD>
+<A NAME="IDX115"></A>
 <DT><CODE>cl_cosh_sinh_t cl_cosh_sinh (const cl_R&#38; x)</CODE>
 <DD>
+<A NAME="IDX116"></A>
 Returns both <CODE>sinh(x)</CODE> and <CODE>cosh(x)</CODE>. This is more efficient than
 computing them separately. The relation <CODE>cosh^2 - sinh^2 = 1</CODE> will
 hold only approximately.
 
 <DT><CODE>cl_R tanh (const cl_R&#38; x)</CODE>
 <DD>
+<A NAME="IDX117"></A>
 <DT><CODE>cl_N tanh (const cl_N&#38; x)</CODE>
 <DD>
 Returns <CODE>tanh(x) = sinh(x)/cosh(x)</CODE>.
 
 <DT><CODE>cl_N asinh (const cl_N&#38; z)</CODE>
 <DD>
+<A NAME="IDX118"></A>
 Returns <CODE>arsinh(z)</CODE>. This is defined as
 <CODE>arsinh(z) = log(z+sqrt(1+z^2))</CODE> and satisfies
 <CODE>arsinh(-z) = -arsinh(z)</CODE>.
@@ -1002,6 +1092,7 @@ with <CODE>imagpart = pi/2</CODE> and <CODE>realpart &#60; 0</CODE>.
 
 <DT><CODE>cl_N acosh (const cl_N&#38; z)</CODE>
 <DD>
+<A NAME="IDX119"></A>
 Returns <CODE>arcosh(z)</CODE>. This is defined as
 <CODE>arcosh(z) = 2*log(sqrt((z+1)/2)+sqrt((z-1)/2))</CODE>.
 The range of the result is the half-strip in the complex domain
@@ -1010,6 +1101,7 @@ excluding the numbers with <CODE>realpart = 0</CODE> and <CODE>-pi &#60; imagpar
 
 <DT><CODE>cl_N atanh (const cl_N&#38; z)</CODE>
 <DD>
+<A NAME="IDX120"></A>
 Returns <CODE>artanh(z)</CODE>. This is defined as
 <CODE>artanh(z) = (log(1+z)-log(1-z)) / 2</CODE> and satisfies
 <CODE>artanh(-z) = -artanh(z)</CODE>. The range of the result is
@@ -1022,6 +1114,9 @@ with <CODE>imagpart = pi/2</CODE> and <CODE>realpart &#62;= 0</CODE>.
 
 
 <H3><A NAME="SEC31" HREF="cln_toc.html#TOC31">4.8.4 Euler gamma</A></H3>
+<P>
+<A NAME="IDX121"></A>
+
 
 <P>
 Euler's constant C = 0.577... is returned by the following functions:
@@ -1031,6 +1126,7 @@ Euler's constant C = 0.577... is returned by the following functions:
 
 <DT><CODE>cl_F cl_eulerconst (cl_float_format_t f)</CODE>
 <DD>
+<A NAME="IDX122"></A>
 Returns Euler's constant as a float of format <CODE>f</CODE>.
 
 <DT><CODE>cl_F cl_eulerconst (const cl_F&#38; y)</CODE>
@@ -1044,12 +1140,14 @@ Returns Euler's constant as a float of format <CODE>cl_default_float_format</COD
 
 <P>
 Catalan's constant G = 0.915... is returned by the following functions:
+<A NAME="IDX123"></A>
 
 
 <DL COMPACT>
 
 <DT><CODE>cl_F cl_catalanconst (cl_float_format_t f)</CODE>
 <DD>
+<A NAME="IDX124"></A>
 Returns Catalan's constant as a float of format <CODE>f</CODE>.
 
 <DT><CODE>cl_F cl_catalanconst (const cl_F&#38; y)</CODE>
@@ -1064,6 +1162,9 @@ Returns Catalan's constant as a float of format <CODE>cl_default_float_format</C
 
 
 <H3><A NAME="SEC32" HREF="cln_toc.html#TOC32">4.8.5 Riemann zeta</A></H3>
+<P>
+<A NAME="IDX125"></A>
+
 
 <P>
 Riemann's zeta function at an integral point <CODE>s&#62;1</CODE> is returned by the
@@ -1074,6 +1175,7 @@ following functions:
 
 <DT><CODE>cl_F cl_zeta (int s, cl_float_format_t f)</CODE>
 <DD>
+<A NAME="IDX126"></A>
 Returns Riemann's zeta function at <CODE>s</CODE> as a float of format <CODE>f</CODE>.
 
 <DT><CODE>cl_F cl_zeta (int s, const cl_F&#38; y)</CODE>
@@ -1113,54 +1215,69 @@ on each of the bit positions in parallel.
 
 <DT><CODE>cl_I lognot (const cl_I&#38; x)</CODE>
 <DD>
+<A NAME="IDX127"></A>
 <DT><CODE>cl_I operator ~ (const cl_I&#38; x)</CODE>
 <DD>
+<A NAME="IDX128"></A>
 Logical not, like <CODE>~x</CODE> in C. This is the same as <CODE>-1-x</CODE>.
 
 <DT><CODE>cl_I logand (const cl_I&#38; x, const cl_I&#38; y)</CODE>
 <DD>
+<A NAME="IDX129"></A>
 <DT><CODE>cl_I operator &#38; (const cl_I&#38; x, const cl_I&#38; y)</CODE>
 <DD>
+<A NAME="IDX130"></A>
 Logical and, like <CODE>x &#38; y</CODE> in C.
 
 <DT><CODE>cl_I logior (const cl_I&#38; x, const cl_I&#38; y)</CODE>
 <DD>
+<A NAME="IDX131"></A>
 <DT><CODE>cl_I operator | (const cl_I&#38; x, const cl_I&#38; y)</CODE>
 <DD>
+<A NAME="IDX132"></A>
 Logical (inclusive) or, like <CODE>x | y</CODE> in C.
 
 <DT><CODE>cl_I logxor (const cl_I&#38; x, const cl_I&#38; y)</CODE>
 <DD>
+<A NAME="IDX133"></A>
 <DT><CODE>cl_I operator ^ (const cl_I&#38; x, const cl_I&#38; y)</CODE>
 <DD>
+<A NAME="IDX134"></A>
 Exclusive or, like <CODE>x ^ y</CODE> in C.
 
 <DT><CODE>cl_I logeqv (const cl_I&#38; x, const cl_I&#38; y)</CODE>
 <DD>
+<A NAME="IDX135"></A>
 Bitwise equivalence, like <CODE>~(x ^ y)</CODE> in C.
 
 <DT><CODE>cl_I lognand (const cl_I&#38; x, const cl_I&#38; y)</CODE>
 <DD>
+<A NAME="IDX136"></A>
 Bitwise not and, like <CODE>~(x &#38; y)</CODE> in C.
 
 <DT><CODE>cl_I lognor (const cl_I&#38; x, const cl_I&#38; y)</CODE>
 <DD>
+<A NAME="IDX137"></A>
 Bitwise not or, like <CODE>~(x | y)</CODE> in C.
 
 <DT><CODE>cl_I logandc1 (const cl_I&#38; x, const cl_I&#38; y)</CODE>
 <DD>
+<A NAME="IDX138"></A>
 Logical and, complementing the first argument, like <CODE>~x &#38; y</CODE> in C.
 
 <DT><CODE>cl_I logandc2 (const cl_I&#38; x, const cl_I&#38; y)</CODE>
 <DD>
+<A NAME="IDX139"></A>
 Logical and, complementing the second argument, like <CODE>x &#38; ~y</CODE> in C.
 
 <DT><CODE>cl_I logorc1 (const cl_I&#38; x, const cl_I&#38; y)</CODE>
 <DD>
+<A NAME="IDX140"></A>
 Logical or, complementing the first argument, like <CODE>~x | y</CODE> in C.
 
 <DT><CODE>cl_I logorc2 (const cl_I&#38; x, const cl_I&#38; y)</CODE>
 <DD>
+<A NAME="IDX141"></A>
 Logical or, complementing the second argument, like <CODE>x | ~y</CODE> in C.
 </DL>
 
@@ -1170,6 +1287,7 @@ These operations are all available though the function
 
 <DT><CODE>cl_I boole (cl_boole op, const cl_I&#38; x, const cl_I&#38; y)</CODE>
 <DD>
+<A NAME="IDX142"></A>
 </DL>
 <P>
 where <CODE>op</CODE> must have one of the 16 values (each one stands for a function
@@ -1178,6 +1296,21 @@ which combines two bits into one bit): <CODE>boole_clr</CODE>, <CODE>boole_set</
 <CODE>boole_and</CODE>, <CODE>boole_ior</CODE>, <CODE>boole_xor</CODE>, <CODE>boole_eqv</CODE>,
 <CODE>boole_nand</CODE>, <CODE>boole_nor</CODE>, <CODE>boole_andc1</CODE>, <CODE>boole_andc2</CODE>,
 <CODE>boole_orc1</CODE>, <CODE>boole_orc2</CODE>.
+<A NAME="IDX143"></A>
+<A NAME="IDX144"></A>
+<A NAME="IDX145"></A>
+<A NAME="IDX146"></A>
+<A NAME="IDX147"></A>
+<A NAME="IDX148"></A>
+<A NAME="IDX149"></A>
+<A NAME="IDX150"></A>
+<A NAME="IDX151"></A>
+<A NAME="IDX152"></A>
+<A NAME="IDX153"></A>
+<A NAME="IDX154"></A>
+<A NAME="IDX155"></A>
+<A NAME="IDX156"></A>
+<A NAME="IDX157"></A>
 
 
 <P>
@@ -1188,16 +1321,19 @@ Other functions that view integers as bit strings:
 
 <DT><CODE>cl_boolean logtest (const cl_I&#38; x, const cl_I&#38; y)</CODE>
 <DD>
+<A NAME="IDX158"></A>
 Returns true if some bit is set in both <CODE>x</CODE> and <CODE>y</CODE>, i.e. if
 <CODE>logand(x,y) != 0</CODE>.
 
 <DT><CODE>cl_boolean logbitp (const cl_I&#38; n, const cl_I&#38; x)</CODE>
 <DD>
+<A NAME="IDX159"></A>
 Returns true if the <CODE>n</CODE>th bit (from the right) of <CODE>x</CODE> is set.
 Bit 0 is the least significant bit.
 
 <DT><CODE>uintL logcount (const cl_I&#38; x)</CODE>
 <DD>
+<A NAME="IDX160"></A>
 Returns the number of one bits in <CODE>x</CODE>, if <CODE>x</CODE> &#62;= 0, or
 the number of zero bits in <CODE>x</CODE>, if <CODE>x</CODE> &#60; 0.
 </DL>
@@ -1211,6 +1347,7 @@ struct cl_byte { uintL size; uintL position; };
 </PRE>
 
 <P>
+<A NAME="IDX161"></A>
 represents the bit interval containing the bits
 <CODE>position</CODE>...<CODE>position+size-1</CODE> of an integer.
 The constructor <CODE>cl_byte(size,position)</CODE> constructs a <CODE>cl_byte</CODE>.
@@ -1220,16 +1357,19 @@ The constructor <CODE>cl_byte(size,position)</CODE> constructs a <CODE>cl_byte</
 
 <DT><CODE>cl_I ldb (const cl_I&#38; n, const cl_byte&#38; b)</CODE>
 <DD>
+<A NAME="IDX162"></A>
 extracts the bits of <CODE>n</CODE> described by the bit interval <CODE>b</CODE>
 and returns them as a nonnegative integer with <CODE>b.size</CODE> bits.
 
 <DT><CODE>cl_boolean ldb_test (const cl_I&#38; n, const cl_byte&#38; b)</CODE>
 <DD>
+<A NAME="IDX163"></A>
 Returns true if some bit described by the bit interval <CODE>b</CODE> is set in
 <CODE>n</CODE>.
 
 <DT><CODE>cl_I dpb (const cl_I&#38; newbyte, const cl_I&#38; n, const cl_byte&#38; b)</CODE>
 <DD>
+<A NAME="IDX164"></A>
 Returns <CODE>n</CODE>, with the bits described by the bit interval <CODE>b</CODE>
 replaced by <CODE>newbyte</CODE>. Only the lowest <CODE>b.size</CODE> bits of
 <CODE>newbyte</CODE> are relevant.
@@ -1244,11 +1384,13 @@ functions are their counterparts without shifting:
 
 <DT><CODE>cl_I mask_field (const cl_I&#38; n, const cl_byte&#38; b)</CODE>
 <DD>
+<A NAME="IDX165"></A>
 returns an integer with the bits described by the bit interval <CODE>b</CODE>
 copied from the corresponding bits in <CODE>n</CODE>, the other bits zero.
 
 <DT><CODE>cl_I deposit_field (const cl_I&#38; newbyte, const cl_I&#38; n, const cl_byte&#38; b)</CODE>
 <DD>
+<A NAME="IDX166"></A>
 returns an integer where the bits described by the bit interval <CODE>b</CODE>
 come from <CODE>newbyte</CODE> and the other bits come from <CODE>n</CODE>.
 </DL>
@@ -1279,33 +1421,39 @@ for common arithmetic operations:
 
 <DT><CODE>cl_boolean oddp (const cl_I&#38; x)</CODE>
 <DD>
+<A NAME="IDX167"></A>
 Returns true if the least significant bit of <CODE>x</CODE> is 1. Equivalent to
 <CODE>mod(x,2) != 0</CODE>.
 
 <DT><CODE>cl_boolean evenp (const cl_I&#38; x)</CODE>
 <DD>
+<A NAME="IDX168"></A>
 Returns true if the least significant bit of <CODE>x</CODE> is 0. Equivalent to
 <CODE>mod(x,2) == 0</CODE>.
 
 <DT><CODE>cl_I operator &#60;&#60; (const cl_I&#38; x, const cl_I&#38; n)</CODE>
 <DD>
+<A NAME="IDX169"></A>
 Shifts <CODE>x</CODE> by <CODE>n</CODE> bits to the left. <CODE>n</CODE> should be &#62;=0.
 Equivalent to <CODE>x * expt(2,n)</CODE>.
 
 <DT><CODE>cl_I operator &#62;&#62; (const cl_I&#38; x, const cl_I&#38; n)</CODE>
 <DD>
+<A NAME="IDX170"></A>
 Shifts <CODE>x</CODE> by <CODE>n</CODE> bits to the right. <CODE>n</CODE> should be &#62;=0.
 Bits shifted out to the right are thrown away.
 Equivalent to <CODE>floor(x / expt(2,n))</CODE>.
 
 <DT><CODE>cl_I ash (const cl_I&#38; x, const cl_I&#38; y)</CODE>
 <DD>
+<A NAME="IDX171"></A>
 Shifts <CODE>x</CODE> by <CODE>y</CODE> bits to the left (if <CODE>y</CODE>&#62;=0) or
 by <CODE>-y</CODE> bits to the right (if <CODE>y</CODE>&#60;=0). In other words, this
 returns <CODE>floor(x * expt(2,y))</CODE>.
 
 <DT><CODE>uintL integer_length (const cl_I&#38; x)</CODE>
 <DD>
+<A NAME="IDX172"></A>
 Returns the number of bits (excluding the sign bit) needed to represent <CODE>x</CODE>
 in two's complement notation. This is the smallest n &#62;= 0 such that
 -2^n &#60;= x &#60; 2^n. If x &#62; 0, this is the unique n &#62; 0 such that
@@ -1313,12 +1461,14 @@ in two's complement notation. This is the smallest n &#62;= 0 such that
 
 <DT><CODE>uintL ord2 (const cl_I&#38; x)</CODE>
 <DD>
+<A NAME="IDX173"></A>
 <CODE>x</CODE> must be non-zero. This function returns the number of 0 bits at the
 right of <CODE>x</CODE> in two's complement notation. This is the largest n &#62;= 0
 such that 2^n divides <CODE>x</CODE>.
 
 <DT><CODE>uintL power2p (const cl_I&#38; x)</CODE>
 <DD>
+<A NAME="IDX174"></A>
 <CODE>x</CODE> must be &#62; 0. This function checks whether <CODE>x</CODE> is a power of 2.
 If <CODE>x</CODE> = 2^(n-1), it returns n. Else it returns 0.
 (See also the function <CODE>logp</CODE>.)
@@ -1332,6 +1482,7 @@ If <CODE>x</CODE> = 2^(n-1), it returns n. Else it returns 0.
 
 <DT><CODE>uint32 gcd (uint32 a, uint32 b)</CODE>
 <DD>
+<A NAME="IDX175"></A>
 <DT><CODE>cl_I gcd (const cl_I&#38; a, const cl_I&#38; b)</CODE>
 <DD>
 This function returns the greatest common divisor of <CODE>a</CODE> and <CODE>b</CODE>,
@@ -1339,6 +1490,7 @@ normalized to be &#62;= 0.
 
 <DT><CODE>cl_I xgcd (const cl_I&#38; a, const cl_I&#38; b, cl_I* u, cl_I* v)</CODE>
 <DD>
+<A NAME="IDX176"></A>
 This function ("extended gcd") returns the greatest common divisor <CODE>g</CODE> of
 <CODE>a</CODE> and <CODE>b</CODE> and at the same time the representation of <CODE>g</CODE>
 as an integral linear combination of <CODE>a</CODE> and <CODE>b</CODE>:
@@ -1350,11 +1502,13 @@ value, in the following sense: If <CODE>a</CODE> and <CODE>b</CODE> are non-zero
 
 <DT><CODE>cl_I lcm (const cl_I&#38; a, const cl_I&#38; b)</CODE>
 <DD>
+<A NAME="IDX177"></A>
 This function returns the least common multiple of <CODE>a</CODE> and <CODE>b</CODE>,
 normalized to be &#62;= 0.
 
 <DT><CODE>cl_boolean logp (const cl_I&#38; a, const cl_I&#38; b, cl_RA* l)</CODE>
 <DD>
+<A NAME="IDX178"></A>
 <DT><CODE>cl_boolean logp (const cl_RA&#38; a, const cl_RA&#38; b, cl_RA* l)</CODE>
 <DD>
 <CODE>a</CODE> must be &#62; 0. <CODE>b</CODE> must be &#62;0 and != 1. If log(a,b) is
@@ -1370,17 +1524,20 @@ it returns false.
 
 <DT><CODE>cl_I factorial (uintL n)</CODE>
 <DD>
+<A NAME="IDX179"></A>
 <CODE>n</CODE> must be a small integer &#62;= 0. This function returns the factorial
 <CODE>n</CODE>! = <CODE>1*2*...*n</CODE>.
 
 <DT><CODE>cl_I doublefactorial (uintL n)</CODE>
 <DD>
+<A NAME="IDX180"></A>
 <CODE>n</CODE> must be a small integer &#62;= 0. This function returns the 
 doublefactorial <CODE>n</CODE>!! = <CODE>1*3*...*n</CODE> or 
 <CODE>n</CODE>!! = <CODE>2*4*...*n</CODE>, respectively.
 
 <DT><CODE>cl_I binomial (uintL n, uintL k)</CODE>
 <DD>
+<A NAME="IDX181"></A>
 <CODE>n</CODE> and <CODE>k</CODE> must be small integers &#62;= 0. This function returns the
 binomial coefficient
 (<CODE>n</CODE> choose <CODE>k</CODE>) = <CODE>n</CODE>! / <CODE>k</CODE>! <CODE>(n-k)</CODE>!
@@ -1407,6 +1564,7 @@ defines the following operations.
 
 <DT><CODE><VAR>type</VAR> scale_float (const <VAR>type</VAR>&#38; x, sintL delta)</CODE>
 <DD>
+<A NAME="IDX182"></A>
 <DT><CODE><VAR>type</VAR> scale_float (const <VAR>type</VAR>&#38; x, const cl_I&#38; delta)</CODE>
 <DD>
 Returns <CODE>x*2^delta</CODE>. This is more efficient than an explicit multiplication
@@ -1422,27 +1580,32 @@ representation of floating-point numbers.
 
 <DT><CODE>sintL float_exponent (const <VAR>type</VAR>&#38; x)</CODE>
 <DD>
+<A NAME="IDX183"></A>
 Returns the exponent <CODE>e</CODE> of <CODE>x</CODE>.
 For <CODE>x = 0.0</CODE>, this is 0. For <CODE>x</CODE> non-zero, this is the unique
 integer with <CODE>2^(e-1) &#60;= abs(x) &#60; 2^e</CODE>.
 
 <DT><CODE>sintL float_radix (const <VAR>type</VAR>&#38; x)</CODE>
 <DD>
+<A NAME="IDX184"></A>
 Returns the base of the floating-point representation. This is always <CODE>2</CODE>.
 
 <DT><CODE><VAR>type</VAR> float_sign (const <VAR>type</VAR>&#38; x)</CODE>
 <DD>
+<A NAME="IDX185"></A>
 Returns the sign <CODE>s</CODE> of <CODE>x</CODE> as a float. The value is 1 for
 <CODE>x</CODE> &#62;= 0, -1 for <CODE>x</CODE> &#60; 0.
 
 <DT><CODE>uintL float_digits (const <VAR>type</VAR>&#38; x)</CODE>
 <DD>
+<A NAME="IDX186"></A>
 Returns the number of mantissa bits in the floating-point representation
 of <CODE>x</CODE>, including the hidden bit. The value only depends on the type
 of <CODE>x</CODE>, not on its value.
 
 <DT><CODE>uintL float_precision (const <VAR>type</VAR>&#38; x)</CODE>
 <DD>
+<A NAME="IDX187"></A>
 Returns the number of significant mantissa bits in the floating-point
 representation of <CODE>x</CODE>. Since denormalized numbers are not supported,
 this is the same as <CODE>float_digits(x)</CODE> if <CODE>x</CODE> is non-zero, and
@@ -1451,6 +1614,11 @@ this is the same as <CODE>float_digits(x)</CODE> if <CODE>x</CODE> is non-zero,
 
 <P>
 The complete internal representation of a float is encoded in the type
+<A NAME="IDX188"></A>
+<A NAME="IDX189"></A>
+<A NAME="IDX190"></A>
+<A NAME="IDX191"></A>
+<A NAME="IDX192"></A>
 <CODE>cl_decoded_float</CODE> (or <CODE>cl_decoded_sfloat</CODE>, <CODE>cl_decoded_ffloat</CODE>,
 <CODE>cl_decoded_dfloat</CODE>, <CODE>cl_decoded_lfloat</CODE>, respectively), defined by
 
@@ -1468,6 +1636,7 @@ and returned by the function
 
 <DT><CODE>cl_decoded_<VAR>type</VAR>float decode_float (const <VAR>type</VAR>&#38; x)</CODE>
 <DD>
+<A NAME="IDX193"></A>
 For <CODE>x</CODE> non-zero, this returns <CODE>(-1)^s</CODE>, <CODE>e</CODE>, <CODE>m</CODE> with
 <CODE>x = (-1)^s * 2^e * m</CODE> and <CODE>0.5 &#60;= m &#60; 1.0</CODE>. For <CODE>x</CODE> = 0,
 it returns <CODE>(-1)^s</CODE>=1, <CODE>e</CODE>=0, <CODE>m</CODE>=0.
@@ -1478,7 +1647,7 @@ it returns <CODE>(-1)^s</CODE>=1, <CODE>e</CODE>=0, <CODE>m</CODE>=0.
 A complete decoding in terms of integers is provided as type
 
 <PRE>
-struct cl_idecoded_float {
+<A NAME="IDX194"></A>struct cl_idecoded_float {
         cl_I mantissa; cl_I exponent; cl_I sign;
 };
 </PRE>
@@ -1491,6 +1660,7 @@ by the following function:
 
 <DT><CODE>cl_idecoded_float integer_decode_float (const <VAR>type</VAR>&#38; x)</CODE>
 <DD>
+<A NAME="IDX195"></A>
 For <CODE>x</CODE> non-zero, this returns <CODE>(-1)^s</CODE>, <CODE>e</CODE>, <CODE>m</CODE> with
 <CODE>x = (-1)^s * 2^e * m</CODE> and <CODE>m</CODE> an integer with <CODE>float_digits(x)</CODE>
 bits. For <CODE>x</CODE> = 0, it returns <CODE>(-1)^s</CODE>=1, <CODE>e</CODE>=0, <CODE>m</CODE>=0.
@@ -1506,6 +1676,7 @@ Some other function, implemented only for class <CODE>cl_F</CODE>:
 
 <DT><CODE>cl_F float_sign (const cl_F&#38; x, const cl_F&#38; y)</CODE>
 <DD>
+<A NAME="IDX196"></A>
 This returns a floating point number whose precision and absolute value
 is that of <CODE>y</CODE> and whose sign is that of <CODE>x</CODE>. If <CODE>x</CODE> is
 zero, it is treated as positive. Same for <CODE>y</CODE>.
@@ -1514,6 +1685,9 @@ zero, it is treated as positive. Same for <CODE>y</CODE>.
 
 
 <H2><A NAME="SEC38" HREF="cln_toc.html#TOC38">4.11 Conversion functions</A></H2>
+<P>
+<A NAME="IDX197"></A>
+
 
 
 
@@ -1527,6 +1701,7 @@ The type <CODE>cl_float_format_t</CODE> describes a floating-point format.
 
 <DT><CODE>cl_float_format_t cl_float_format (uintL n)</CODE>
 <DD>
+<A NAME="IDX198"></A>
 Returns the smallest float format which guarantees at least <CODE>n</CODE>
 decimal digits in the mantissa (after the decimal point).
 
@@ -1536,6 +1711,7 @@ Returns the floating point format of <CODE>x</CODE>.
 
 <DT><CODE>cl_float_format_t cl_default_float_format</CODE>
 <DD>
+<A NAME="IDX199"></A>
 Global variable: the default float format used when converting rational numbers
 to floats.
 </DL>
@@ -1551,6 +1727,7 @@ defines the following operations:
 
 <DT><CODE>cl_F cl_float (const <VAR>type</VAR>&#38;x, cl_float_format_t f)</CODE>
 <DD>
+<A NAME="IDX200"></A>
 Returns <CODE>x</CODE> as a float of format <CODE>f</CODE>.
 <DT><CODE>cl_F cl_float (const <VAR>type</VAR>&#38;x, const cl_F&#38; y)</CODE>
 <DD>
@@ -1573,28 +1750,34 @@ Every floating-point format has some characteristic numbers:
 
 <DT><CODE>cl_F most_positive_float (cl_float_format_t f)</CODE>
 <DD>
+<A NAME="IDX201"></A>
 Returns the largest (most positive) floating point number in float format <CODE>f</CODE>.
 
 <DT><CODE>cl_F most_negative_float (cl_float_format_t f)</CODE>
 <DD>
+<A NAME="IDX202"></A>
 Returns the smallest (most negative) floating point number in float format <CODE>f</CODE>.
 
 <DT><CODE>cl_F least_positive_float (cl_float_format_t f)</CODE>
 <DD>
+<A NAME="IDX203"></A>
 Returns the least positive floating point number (i.e. &#62; 0 but closest to 0)
 in float format <CODE>f</CODE>.
 
 <DT><CODE>cl_F least_negative_float (cl_float_format_t f)</CODE>
 <DD>
+<A NAME="IDX204"></A>
 Returns the least negative floating point number (i.e. &#60; 0 but closest to 0)
 in float format <CODE>f</CODE>.
 
 <DT><CODE>cl_F float_epsilon (cl_float_format_t f)</CODE>
 <DD>
+<A NAME="IDX205"></A>
 Returns the smallest floating point number e &#62; 0 such that <CODE>1+e != 1</CODE>.
 
 <DT><CODE>cl_F float_negative_epsilon (cl_float_format_t f)</CODE>
 <DD>
+<A NAME="IDX206"></A>
 Returns the smallest floating point number e &#62; 0 such that <CODE>1-e != 1</CODE>.
 </DL>
 
@@ -1611,6 +1794,7 @@ defines the following operation:
 
 <DT><CODE>cl_RA rational (const <VAR>type</VAR>&#38; x)</CODE>
 <DD>
+<A NAME="IDX207"></A>
 Returns the value of <CODE>x</CODE> as an exact number. If <CODE>x</CODE> is already
 an exact number, this is <CODE>x</CODE>. If <CODE>x</CODE> is a floating-point number,
 the value is a rational number whose denominator is a power of 2.
@@ -1625,6 +1809,7 @@ the function
 
 <DT><CODE>cl_RA rationalize (const cl_R&#38; x)</CODE>
 <DD>
+<A NAME="IDX208"></A>
 If <CODE>x</CODE> is a floating-point number, it actually represents an interval
 of real numbers, and this function returns the rational number with
 smallest denominator (and smallest numerator, in magnitude)
@@ -1666,6 +1851,7 @@ a complicated but deterministic way.
 
 <P>
 The global variable
+<A NAME="IDX209"></A>
 
 <PRE>
 cl_random_state cl_default_random_state
@@ -1682,12 +1868,14 @@ below are called without <CODE>cl_random_state</CODE> argument.
 <DD>
 <DT><CODE>uint32 random32 ()</CODE>
 <DD>
+<A NAME="IDX210"></A>
 Returns a random unsigned 32-bit number. All bits are equally random.
 
 <DT><CODE>cl_I random_I (cl_random_state&#38; randomstate, const cl_I&#38; n)</CODE>
 <DD>
 <DT><CODE>cl_I random_I (const cl_I&#38; n)</CODE>
 <DD>
+<A NAME="IDX211"></A>
 <CODE>n</CODE> must be an integer &#62; 0. This function returns a random integer <CODE>x</CODE>
 in the range <CODE>0 &#60;= x &#60; n</CODE>.
 
@@ -1695,6 +1883,7 @@ in the range <CODE>0 &#60;= x &#60; n</CODE>.
 <DD>
 <DT><CODE>cl_F random_F (const cl_F&#38; n)</CODE>
 <DD>
+<A NAME="IDX212"></A>
 <CODE>n</CODE> must be a float &#62; 0. This function returns a random floating-point
 number of the same format as <CODE>n</CODE> in the range <CODE>0 &#60;= x &#60; n</CODE>.
 
@@ -1702,6 +1891,7 @@ number of the same format as <CODE>n</CODE> in the range <CODE>0 &#60;= x &#60;
 <DD>
 <DT><CODE>cl_R random_R (const cl_R&#38; n)</CODE>
 <DD>
+<A NAME="IDX213"></A>
 Behaves like <CODE>random_I</CODE> if <CODE>n</CODE> is an integer and like <CODE>random_F</CODE>
 if <CODE>n</CODE> is a float.
 </DL>
@@ -1709,6 +1899,9 @@ if <CODE>n</CODE> is a float.
 
 
 <H2><A NAME="SEC42" HREF="cln_toc.html#TOC42">4.13 Obfuscating operators</A></H2>
+<P>
+<A NAME="IDX214"></A>
+
 
 <P>
 The modifying C/C++ operators <CODE>+=</CODE>, <CODE>-=</CODE>, <CODE>*=</CODE>, <CODE>/=</CODE>,
@@ -1723,6 +1916,7 @@ to get happy, then add
 </PRE>
 
 <P>
+<A NAME="IDX215"></A>
 to the beginning of your source files, before the inclusion of any CLN
 include files. This flag will enable the following operators:
 
@@ -1736,12 +1930,16 @@ For the classes <CODE>cl_N</CODE>, <CODE>cl_R</CODE>, <CODE>cl_RA</CODE>,
 
 <DT><CODE><VAR>type</VAR>&#38; operator += (<VAR>type</VAR>&#38;, const <VAR>type</VAR>&#38;)</CODE>
 <DD>
+<A NAME="IDX216"></A>
 <DT><CODE><VAR>type</VAR>&#38; operator -= (<VAR>type</VAR>&#38;, const <VAR>type</VAR>&#38;)</CODE>
 <DD>
+<A NAME="IDX217"></A>
 <DT><CODE><VAR>type</VAR>&#38; operator *= (<VAR>type</VAR>&#38;, const <VAR>type</VAR>&#38;)</CODE>
 <DD>
+<A NAME="IDX218"></A>
 <DT><CODE><VAR>type</VAR>&#38; operator /= (<VAR>type</VAR>&#38;, const <VAR>type</VAR>&#38;)</CODE>
 <DD>
+<A NAME="IDX219"></A>
 </DL>
 
 <P>
@@ -1758,14 +1956,19 @@ For the class <CODE>cl_I</CODE>:
 <DD>
 <DT><CODE><VAR>type</VAR>&#38; operator &#38;= (<VAR>type</VAR>&#38;, const <VAR>type</VAR>&#38;)</CODE>
 <DD>
+<A NAME="IDX220"></A>
 <DT><CODE><VAR>type</VAR>&#38; operator |= (<VAR>type</VAR>&#38;, const <VAR>type</VAR>&#38;)</CODE>
 <DD>
+<A NAME="IDX221"></A>
 <DT><CODE><VAR>type</VAR>&#38; operator ^= (<VAR>type</VAR>&#38;, const <VAR>type</VAR>&#38;)</CODE>
 <DD>
+<A NAME="IDX222"></A>
 <DT><CODE><VAR>type</VAR>&#38; operator &#60;&#60;= (<VAR>type</VAR>&#38;, const <VAR>type</VAR>&#38;)</CODE>
 <DD>
+<A NAME="IDX223"></A>
 <DT><CODE><VAR>type</VAR>&#38; operator &#62;&#62;= (<VAR>type</VAR>&#38;, const <VAR>type</VAR>&#38;)</CODE>
 <DD>
+<A NAME="IDX224"></A>
 </DL>
 
 <P>
@@ -1777,6 +1980,7 @@ For the classes <CODE>cl_N</CODE>, <CODE>cl_R</CODE>, <CODE>cl_RA</CODE>, <CODE>
 
 <DT><CODE><VAR>type</VAR>&#38; operator ++ (<VAR>type</VAR>&#38; x)</CODE>
 <DD>
+<A NAME="IDX225"></A>
 The prefix operator <CODE>++x</CODE>.
 
 <DT><CODE>void operator ++ (<VAR>type</VAR>&#38; x, int)</CODE>
@@ -1785,6 +1989,7 @@ The postfix operator <CODE>x++</CODE>.
 
 <DT><CODE><VAR>type</VAR>&#38; operator -- (<VAR>type</VAR>&#38; x)</CODE>
 <DD>
+<A NAME="IDX226"></A>
 The prefix operator <CODE>--x</CODE>.
 
 <DT><CODE>void operator -- (<VAR>type</VAR>&#38; x, int)</CODE>
index 4df2aed42b91e0805ef80cfe158a5350f58c5053..7f83961659f7328f552f88407be42e8c0df68ab1 100644 (file)
@@ -1,6 +1,6 @@
 <HTML>
 <HEAD>
-<!-- Created by texi2html 1.56k from cln.texi on 14 January 2000 -->
+<!-- Created by texi2html 1.56k from cln.texi on 4 May 2000 -->
 
 <TITLE>CLN, a Class Library for Numbers - 5. Input/Output</TITLE>
 </HEAD>
@@ -10,10 +10,16 @@ Go to the <A HREF="cln_1.html">first</A>, <A HREF="cln_4.html">previous</A>, <A
 
 
 <H1><A NAME="SEC43" HREF="cln_toc.html#TOC43">5. Input/Output</A></H1>
+<P>
+<A NAME="IDX227"></A>
+
 
 
 
 <H2><A NAME="SEC44" HREF="cln_toc.html#TOC44">5.1 Internal and printed representation</A></H2>
+<P>
+<A NAME="IDX228"></A>
+
 
 <P>
 All computations deal with the internal representations of the numbers.
@@ -27,8 +33,10 @@ Several external representations may denote the same number, for example,
 
 <P>
 Converting an internal to an external representation is called "printing",
+<A NAME="IDX229"></A>
 converting an external to an internal representation is called "reading".
-In CLN, is it always true that conversion of an internal to an external
+<A NAME="IDX230"></A>
+In CLN, it is always true that conversion of an internal to an external
 representation and then back to an internal representation will yield the
 same internal representation. Symbolically: <CODE>read(print(x)) == x</CODE>.
 This is called "print-read consistency". 
@@ -409,7 +417,7 @@ using this variable name. Default is <CODE>"x"</CODE>.
 
 <P>
 The global variable <CODE>cl_default_print_flags</CODE> contains the default values,
-used by the function <CODE>fprint</CODE>,
+used by the function <CODE>fprint</CODE>.
 
 
 <P><HR><P>
index 4d9413f282c1b82bce358948faa6cc05aeafa72e..4ccf7aa139c692a2860e44cc8637267739b4aab7 100644 (file)
@@ -1,6 +1,6 @@
 <HTML>
 <HEAD>
-<!-- Created by texi2html 1.56k from cln.texi on 14 January 2000 -->
+<!-- Created by texi2html 1.56k from cln.texi on 4 May 2000 -->
 
 <TITLE>CLN, a Class Library for Numbers - 6. Rings</TITLE>
 </HEAD>
index e065b2b96d2d64303fe824ae45d5d6d9ee0d04ac..007ae5a692289734b0cb2d669859b1fd69e9ccf5 100644 (file)
@@ -1,6 +1,6 @@
 <HTML>
 <HEAD>
-<!-- Created by texi2html 1.56k from cln.texi on 14 January 2000 -->
+<!-- Created by texi2html 1.56k from cln.texi on 4 May 2000 -->
 
 <TITLE>CLN, a Class Library for Numbers - 7. Modular integers</TITLE>
 </HEAD>
@@ -10,10 +10,16 @@ Go to the <A HREF="cln_1.html">first</A>, <A HREF="cln_6.html">previous</A>, <A
 
 
 <H1><A NAME="SEC48" HREF="cln_toc.html#TOC48">7. Modular integers</A></H1>
+<P>
+<A NAME="IDX231"></A>
+
 
 
 
 <H2><A NAME="SEC49" HREF="cln_toc.html#TOC49">7.1 Modular integer rings</A></H2>
+<P>
+<A NAME="IDX232"></A>
+
 
 <P>
 CLN implements modular integers, i.e. integers modulo a fixed integer N.
@@ -59,9 +65,11 @@ Modular integer rings are constructed using the function
 
 <DT><CODE>cl_modint_ring cl_find_modint_ring (const cl_I&#38; N)</CODE>
 <DD>
+<A NAME="IDX233"></A>
 This function returns the modular ring <SAMP>`Z/NZ'</SAMP>. It takes care
 of finding out about special cases of <CODE>N</CODE>, like powers of two
 and odd numbers for which Montgomery multiplication will be a win,
+<A NAME="IDX234"></A>
 and precomputes any necessary auxiliary data for computing modulo <CODE>N</CODE>.
 There is a cache table of rings, indexed by <CODE>N</CODE> (or, more precisely,
 by <CODE>abs(N)</CODE>). This ensures that the precomputation costs are reduced
@@ -76,8 +84,10 @@ Modular integer rings can be compared for equality:
 
 <DT><CODE>bool operator== (const cl_modint_ring&#38;, const cl_modint_ring&#38;)</CODE>
 <DD>
+<A NAME="IDX235"></A>
 <DT><CODE>bool operator!= (const cl_modint_ring&#38;, const cl_modint_ring&#38;)</CODE>
 <DD>
+<A NAME="IDX236"></A>
 These compare two modular integer rings for equality. Two different calls
 to <CODE>cl_find_modint_ring</CODE> with the same argument necessarily return the
 same ring because it is memoized in the cache table.
@@ -95,22 +105,27 @@ Given a modular integer ring <CODE>R</CODE>, the following members can be used.
 
 <DT><CODE>cl_I R-&#62;modulus</CODE>
 <DD>
+<A NAME="IDX237"></A>
 This is the ring's modulus, normalized to be nonnegative: <CODE>abs(N)</CODE>.
 
 <DT><CODE>cl_MI R-&#62;zero()</CODE>
 <DD>
+<A NAME="IDX238"></A>
 This returns <CODE>0 mod N</CODE>.
 
 <DT><CODE>cl_MI R-&#62;one()</CODE>
 <DD>
+<A NAME="IDX239"></A>
 This returns <CODE>1 mod N</CODE>.
 
 <DT><CODE>cl_MI R-&#62;canonhom (const cl_I&#38; x)</CODE>
 <DD>
+<A NAME="IDX240"></A>
 This returns <CODE>x mod N</CODE>.
 
 <DT><CODE>cl_I R-&#62;retract (const cl_MI&#38; x)</CODE>
 <DD>
+<A NAME="IDX241"></A>
 This is a partial inverse function to <CODE>R-&#62;canonhom</CODE>. It returns the
 standard representative (<CODE>&#62;=0</CODE>, <CODE>&#60;N</CODE>) of <CODE>x</CODE>.
 
@@ -118,6 +133,7 @@ standard representative (<CODE>&#62;=0</CODE>, <CODE>&#60;N</CODE>) of <CODE>x</
 <DD>
 <DT><CODE>cl_MI R-&#62;random()</CODE>
 <DD>
+<A NAME="IDX242"></A>
 This returns a random integer modulo <CODE>N</CODE>.
 </DL>
 
@@ -129,15 +145,18 @@ The following operations are defined on modular integers.
 
 <DT><CODE>cl_modint_ring x.ring ()</CODE>
 <DD>
+<A NAME="IDX243"></A>
 Returns the ring to which the modular integer <CODE>x</CODE> belongs.
 
 <DT><CODE>cl_MI operator+ (const cl_MI&#38;, const cl_MI&#38;)</CODE>
 <DD>
+<A NAME="IDX244"></A>
 Returns the sum of two modular integers. One of the arguments may also be
 a plain integer.
 
 <DT><CODE>cl_MI operator- (const cl_MI&#38;, const cl_MI&#38;)</CODE>
 <DD>
+<A NAME="IDX245"></A>
 Returns the difference of two modular integers. One of the arguments may also be
 a plain integer.
 
@@ -147,50 +166,61 @@ Returns the negative of a modular integer.
 
 <DT><CODE>cl_MI operator* (const cl_MI&#38;, const cl_MI&#38;)</CODE>
 <DD>
+<A NAME="IDX246"></A>
 Returns the product of two modular integers. One of the arguments may also be
 a plain integer.
 
 <DT><CODE>cl_MI square (const cl_MI&#38;)</CODE>
 <DD>
+<A NAME="IDX247"></A>
 Returns the square of a modular integer.
 
 <DT><CODE>cl_MI recip (const cl_MI&#38; x)</CODE>
 <DD>
+<A NAME="IDX248"></A>
 Returns the reciprocal <CODE>x^-1</CODE> of a modular integer <CODE>x</CODE>. <CODE>x</CODE>
 must be coprime to the modulus, otherwise an error message is issued.
 
 <DT><CODE>cl_MI div (const cl_MI&#38; x, const cl_MI&#38; y)</CODE>
 <DD>
+<A NAME="IDX249"></A>
 Returns the quotient <CODE>x*y^-1</CODE> of two modular integers <CODE>x</CODE>, <CODE>y</CODE>.
 <CODE>y</CODE> must be coprime to the modulus, otherwise an error message is issued.
 
 <DT><CODE>cl_MI expt_pos (const cl_MI&#38; x, const cl_I&#38; y)</CODE>
 <DD>
+<A NAME="IDX250"></A>
 <CODE>y</CODE> must be &#62; 0. Returns <CODE>x^y</CODE>.
 
 <DT><CODE>cl_MI expt (const cl_MI&#38; x, const cl_I&#38; y)</CODE>
 <DD>
+<A NAME="IDX251"></A>
 Returns <CODE>x^y</CODE>. If <CODE>y</CODE> is negative, <CODE>x</CODE> must be coprime to the
 modulus, else an error message is issued.
 
 <DT><CODE>cl_MI operator&#60;&#60; (const cl_MI&#38; x, const cl_I&#38; y)</CODE>
 <DD>
+<A NAME="IDX252"></A>
 Returns <CODE>x*2^y</CODE>.
 
 <DT><CODE>cl_MI operator&#62;&#62; (const cl_MI&#38; x, const cl_I&#38; y)</CODE>
 <DD>
+<A NAME="IDX253"></A>
 Returns <CODE>x*2^-y</CODE>. When <CODE>y</CODE> is positive, the modulus must be odd,
 or an error message is issued.
 
 <DT><CODE>bool operator== (const cl_MI&#38;, const cl_MI&#38;)</CODE>
 <DD>
+<A NAME="IDX254"></A>
 <DT><CODE>bool operator!= (const cl_MI&#38;, const cl_MI&#38;)</CODE>
 <DD>
+<A NAME="IDX255"></A>
 Compares two modular integers, belonging to the same modular integer ring,
 for equality.
 
 <DT><CODE>cl_boolean zerop (const cl_MI&#38; x)</CODE>
 <DD>
+<A NAME="IDX256"></A>
 Returns true if <CODE>x</CODE> is <CODE>0 mod N</CODE>.
 </DL>
 
@@ -203,8 +233,10 @@ input/output).
 
 <DT><CODE>void fprint (cl_ostream stream, const cl_MI&#38; x)</CODE>
 <DD>
+<A NAME="IDX257"></A>
 <DT><CODE>cl_ostream operator&#60;&#60; (cl_ostream stream, const cl_MI&#38; x)</CODE>
 <DD>
+<A NAME="IDX258"></A>
 Prints the modular integer <CODE>x</CODE> on the <CODE>stream</CODE>. The output may depend
 on the global printer settings in the variable <CODE>cl_default_print_flags</CODE>.
 </DL>
index a0381f61f536f24a3447f958f27d3a053651c5e0..3dd2018953d075d516c9140e2e65ef2048ba7d65 100644 (file)
@@ -1,6 +1,6 @@
 <HTML>
 <HEAD>
-<!-- Created by texi2html 1.56k from cln.texi on 14 January 2000 -->
+<!-- Created by texi2html 1.56k from cln.texi on 4 May 2000 -->
 
 <TITLE>CLN, a Class Library for Numbers - 8. Symbolic data types</TITLE>
 </HEAD>
@@ -10,6 +10,9 @@ Go to the <A HREF="cln_1.html">first</A>, <A HREF="cln_7.html">previous</A>, <A
 
 
 <H1><A NAME="SEC51" HREF="cln_toc.html#TOC51">8. Symbolic data types</A></H1>
+<P>
+<A NAME="IDX259"></A>
+
 
 <P>
 CLN implements two symbolic (non-numeric) data types: strings and symbols.
@@ -18,6 +21,9 @@ CLN implements two symbolic (non-numeric) data types: strings and symbols.
 
 
 <H2><A NAME="SEC52" HREF="cln_toc.html#TOC52">8.1 Strings</A></H2>
+<P>
+<A NAME="IDX260"></A>
+
 
 <P>
 The class
@@ -42,6 +48,7 @@ Strings are constructed through the following constructors:
 
 <DT><CODE>cl_string (const char * s)</CODE>
 <DD>
+<A NAME="IDX261"></A>
 Returns an immutable copy of the (zero-terminated) C string <CODE>s</CODE>.
 
 <DT><CODE>cl_string (const char * ptr, unsigned long len)</CODE>
@@ -62,17 +69,21 @@ Assignment from <CODE>cl_string</CODE> and <CODE>const char *</CODE>.
 
 <DT><CODE>s.length()</CODE>
 <DD>
+<A NAME="IDX262"></A>
 <DT><CODE>strlen(s)</CODE>
 <DD>
+<A NAME="IDX263"></A>
 Returns the length of the string <CODE>s</CODE>.
 
 <DT><CODE>s[i]</CODE>
 <DD>
+<A NAME="IDX264"></A>
 Returns the <CODE>i</CODE>th character of the string <CODE>s</CODE>.
 <CODE>i</CODE> must be in the range <CODE>0 &#60;= i &#60; s.length()</CODE>.
 
 <DT><CODE>bool equal (const cl_string&#38; s1, const cl_string&#38; s2)</CODE>
 <DD>
+<A NAME="IDX265"></A>
 Compares two strings for equality. One of the arguments may also be a
 plain <CODE>const char *</CODE>.
 </DL>
@@ -80,6 +91,9 @@ plain <CODE>const char *</CODE>.
 
 
 <H2><A NAME="SEC53" HREF="cln_toc.html#TOC53">8.2 Symbols</A></H2>
+<P>
+<A NAME="IDX266"></A>
+
 
 <P>
 Symbols are uniquified strings: all symbols with the same name are shared.
@@ -98,6 +112,7 @@ Symbols are constructed through the following constructor:
 
 <DT><CODE>cl_symbol (const cl_string&#38; s)</CODE>
 <DD>
+<A NAME="IDX267"></A>
 Looks up or creates a new symbol with a given name.
 </DL>
 
@@ -114,6 +129,7 @@ Conversion to <CODE>cl_string</CODE>: Returns the string which names the symbol
 
 <DT><CODE>bool equal (const cl_symbol&#38; sym1, const cl_symbol&#38; sym2)</CODE>
 <DD>
+<A NAME="IDX268"></A>
 Compares two symbols for equality. This is very fast.
 </DL>
 
index be510a213a939c777b9b49eabb27687073ea7932..08c8bfe7bf026affd682f9f177e30f7c60b36fed 100644 (file)
@@ -1,6 +1,6 @@
 <HTML>
 <HEAD>
-<!-- Created by texi2html 1.56k from cln.texi on 14 January 2000 -->
+<!-- Created by texi2html 1.56k from cln.texi on 4 May 2000 -->
 
 <TITLE>CLN, a Class Library for Numbers - 9. Univariate polynomials</TITLE>
 </HEAD>
@@ -10,6 +10,10 @@ Go to the <A HREF="cln_1.html">first</A>, <A HREF="cln_8.html">previous</A>, <A
 
 
 <H1><A NAME="SEC54" HREF="cln_toc.html#TOC54">9. Univariate polynomials</A></H1>
+<P>
+<A NAME="IDX269"></A>
+<A NAME="IDX270"></A>
+
 
 
 
@@ -121,6 +125,7 @@ return the same polynomial ring.
 
 <DT><CODE>cl_univpoly_complex_ring cl_find_univpoly_ring (const cl_complex_ring&#38; R)</CODE>
 <DD>
+<A NAME="IDX271"></A>
 <DT><CODE>cl_univpoly_complex_ring cl_find_univpoly_ring (const cl_complex_ring&#38; R, const cl_symbol&#38; varname)</CODE>
 <DD>
 <DT><CODE>cl_univpoly_real_ring cl_find_univpoly_ring (const cl_real_ring&#38; R)</CODE>
@@ -155,27 +160,33 @@ Given a univariate polynomial ring <CODE>R</CODE>, the following members can be
 
 <DT><CODE>cl_ring R-&#62;basering()</CODE>
 <DD>
+<A NAME="IDX272"></A>
 This returns the base ring, as passed to <SAMP>`cl_find_univpoly_ring'</SAMP>.
 
 <DT><CODE>cl_UP R-&#62;zero()</CODE>
 <DD>
+<A NAME="IDX273"></A>
 This returns <CODE>0 in R</CODE>, a polynomial of degree -1.
 
 <DT><CODE>cl_UP R-&#62;one()</CODE>
 <DD>
+<A NAME="IDX274"></A>
 This returns <CODE>1 in R</CODE>, a polynomial of degree &#60;= 0.
 
 <DT><CODE>cl_UP R-&#62;canonhom (const cl_I&#38; x)</CODE>
 <DD>
+<A NAME="IDX275"></A>
 This returns <CODE>x in R</CODE>, a polynomial of degree &#60;= 0.
 
 <DT><CODE>cl_UP R-&#62;monomial (const cl_ring_element&#38; x, uintL e)</CODE>
 <DD>
+<A NAME="IDX276"></A>
 This returns a sparse polynomial: <CODE>x * X^e</CODE>, where <CODE>X</CODE> is the
 indeterminate.
 
 <DT><CODE>cl_UP R-&#62;create (sintL degree)</CODE>
 <DD>
+<A NAME="IDX277"></A>
 Creates a new polynomial with a given degree. The zero polynomial has degree
 <CODE>-1</CODE>. After creating the polynomial, you should put in the coefficients,
 using the <CODE>set_coeff</CODE> member function, and then call the <CODE>finalize</CODE>
@@ -190,12 +201,14 @@ The following are the only destructive operations on univariate polynomials.
 
 <DT><CODE>void set_coeff (cl_UP&#38; x, uintL index, const cl_ring_element&#38; y)</CODE>
 <DD>
+<A NAME="IDX278"></A>
 This changes the coefficient of <CODE>X^index</CODE> in <CODE>x</CODE> to be <CODE>y</CODE>.
 After changing a polynomial and before applying any "normal" operation on it,
 you should call its <CODE>finalize</CODE> member function.
 
 <DT><CODE>void finalize (cl_UP&#38; x)</CODE>
 <DD>
+<A NAME="IDX279"></A>
 This function marks the endpoint of destructive modifications of a polynomial.
 It normalizes the internal representation so that subsequent computations have
 less overhead. Doing normal computations on unnormalized polynomials may
@@ -210,14 +223,17 @@ The following operations are defined on univariate polynomials.
 
 <DT><CODE>cl_univpoly_ring x.ring ()</CODE>
 <DD>
+<A NAME="IDX280"></A>
 Returns the ring to which the univariate polynomial <CODE>x</CODE> belongs.
 
 <DT><CODE>cl_UP operator+ (const cl_UP&#38;, const cl_UP&#38;)</CODE>
 <DD>
+<A NAME="IDX281"></A>
 Returns the sum of two univariate polynomials.
 
 <DT><CODE>cl_UP operator- (const cl_UP&#38;, const cl_UP&#38;)</CODE>
 <DD>
+<A NAME="IDX282"></A>
 Returns the difference of two univariate polynomials.
 
 <DT><CODE>cl_UP operator- (const cl_UP&#38;)</CODE>
@@ -226,44 +242,54 @@ Returns the negative of a univariate polynomial.
 
 <DT><CODE>cl_UP operator* (const cl_UP&#38;, const cl_UP&#38;)</CODE>
 <DD>
+<A NAME="IDX283"></A>
 Returns the product of two univariate polynomials. One of the arguments may
 also be a plain integer or an element of the base ring.
 
 <DT><CODE>cl_UP square (const cl_UP&#38;)</CODE>
 <DD>
+<A NAME="IDX284"></A>
 Returns the square of a univariate polynomial.
 
 <DT><CODE>cl_UP expt_pos (const cl_UP&#38; x, const cl_I&#38; y)</CODE>
 <DD>
+<A NAME="IDX285"></A>
 <CODE>y</CODE> must be &#62; 0. Returns <CODE>x^y</CODE>.
 
 <DT><CODE>bool operator== (const cl_UP&#38;, const cl_UP&#38;)</CODE>
 <DD>
+<A NAME="IDX286"></A>
 <DT><CODE>bool operator!= (const cl_UP&#38;, const cl_UP&#38;)</CODE>
 <DD>
+<A NAME="IDX287"></A>
 Compares two univariate polynomials, belonging to the same univariate
 polynomial ring, for equality.
 
 <DT><CODE>cl_boolean zerop (const cl_UP&#38; x)</CODE>
 <DD>
+<A NAME="IDX288"></A>
 Returns true if <CODE>x</CODE> is <CODE>0 in R</CODE>.
 
 <DT><CODE>sintL degree (const cl_UP&#38; x)</CODE>
 <DD>
+<A NAME="IDX289"></A>
 Returns the degree of the polynomial. The zero polynomial has degree <CODE>-1</CODE>.
 
 <DT><CODE>cl_ring_element coeff (const cl_UP&#38; x, uintL index)</CODE>
 <DD>
+<A NAME="IDX290"></A>
 Returns the coefficient of <CODE>X^index</CODE> in the polynomial <CODE>x</CODE>.
 
 <DT><CODE>cl_ring_element x (const cl_ring_element&#38; y)</CODE>
 <DD>
+<A NAME="IDX291"></A>
 Evaluation: If <CODE>x</CODE> is a polynomial and <CODE>y</CODE> belongs to the base ring,
 then <SAMP>`x(y)'</SAMP> returns the value of the substitution of <CODE>y</CODE> into
 <CODE>x</CODE>.
 
 <DT><CODE>cl_UP deriv (const cl_UP&#38; x)</CODE>
 <DD>
+<A NAME="IDX292"></A>
 Returns the derivative of the polynomial <CODE>x</CODE> with respect to the
 indeterminate <CODE>X</CODE>.
 </DL>
@@ -277,8 +303,10 @@ input/output).
 
 <DT><CODE>void fprint (cl_ostream stream, const cl_UP&#38; x)</CODE>
 <DD>
+<A NAME="IDX293"></A>
 <DT><CODE>cl_ostream operator&#60;&#60; (cl_ostream stream, const cl_UP&#38; x)</CODE>
 <DD>
+<A NAME="IDX294"></A>
 Prints the univariate polynomial <CODE>x</CODE> on the <CODE>stream</CODE>. The output may
 depend on the global printer settings in the variable
 <CODE>cl_default_print_flags</CODE>.
@@ -296,18 +324,26 @@ The following functions return special polynomials.
 
 <DT><CODE>cl_UP_I cl_tschebychev (sintL n)</CODE>
 <DD>
+<A NAME="IDX295"></A>
+<A NAME="IDX296"></A>
 Returns the n-th Tchebychev polynomial (n &#62;= 0).
 
 <DT><CODE>cl_UP_I cl_hermite (sintL n)</CODE>
 <DD>
+<A NAME="IDX297"></A>
+<A NAME="IDX298"></A>
 Returns the n-th Hermite polynomial (n &#62;= 0).
 
 <DT><CODE>cl_UP_RA cl_legendre (sintL n)</CODE>
 <DD>
+<A NAME="IDX299"></A>
+<A NAME="IDX300"></A>
 Returns the n-th Legendre polynomial (n &#62;= 0).
 
 <DT><CODE>cl_UP_I cl_laguerre (sintL n)</CODE>
 <DD>
+<A NAME="IDX301"></A>
+<A NAME="IDX302"></A>
 Returns the n-th Laguerre polynomial (n &#62;= 0).
 </DL>
 
index ecf7ce96f942200c019a5d3b563b29ebfbcd3de6..5dd74156ab84a41caa817e271f6d41f053d5c353 100644 (file)
@@ -1,6 +1,6 @@
 <HTML>
 <HEAD>
-<!-- Created by texi2html 1.56k from cln.texi on 14 January 2000 -->
+<!-- Created by texi2html 1.56k from cln.texi on 4 May 2000 -->
 
 <TITLE>CLN, a Class Library for Numbers - Table of Contents</TITLE>
 </HEAD>
 <LI><A NAME="TOC73" HREF="cln_13.html#SEC73">Index</A>
 </UL>
 <P><HR><P>
-This document was generated on 14 January 2000 using
+This document was generated on 4 May 2000 using
 <A HREF="http://wwwinfo.cern.ch/dis/texi2html/">texi2html</A>&nbsp;1.56k.
 </BODY>
 </HTML>