]> www.ginac.de Git - cln.git/commitdiff
* Argh, we are threshing CVS. Removed some non-sources.
authorRichard Kreckel <kreckel@ginac.de>
Mon, 28 Aug 2000 22:10:51 +0000 (22:10 +0000)
committerRichard Kreckel <kreckel@ginac.de>
Mon, 28 Aug 2000 22:10:51 +0000 (22:10 +0000)
17 files changed:
doc/cln.dvi [deleted file]
doc/cln.html [deleted file]
doc/cln.ps [deleted file]
doc/cln_1.html [deleted file]
doc/cln_10.html [deleted file]
doc/cln_11.html [deleted file]
doc/cln_12.html [deleted file]
doc/cln_13.html [deleted file]
doc/cln_2.html [deleted file]
doc/cln_3.html [deleted file]
doc/cln_4.html [deleted file]
doc/cln_5.html [deleted file]
doc/cln_6.html [deleted file]
doc/cln_7.html [deleted file]
doc/cln_8.html [deleted file]
doc/cln_9.html [deleted file]
doc/cln_toc.html [deleted file]

diff --git a/doc/cln.dvi b/doc/cln.dvi
deleted file mode 100644 (file)
index 78de3c1..0000000
Binary files a/doc/cln.dvi and /dev/null differ
diff --git a/doc/cln.html b/doc/cln.html
deleted file mode 100644 (file)
index 1c6aef9..0000000
+++ /dev/null
@@ -1,4898 +0,0 @@
-<HTML>
-<HEAD>
-<!-- Created by texi2html 1.56k from cln.texi on 28 August 2000 -->
-
-<TITLE>CLN, a Class Library for Numbers</TITLE>
-</HEAD>
-<BODY>
-<H1>CLN, a Class Library for Numbers</H1>
-<ADDRESS>by Bruno Haible</ADDRESS>
-<P>
-<P><HR><P>
-<H1>Table of Contents</H1>
-<UL>
-<LI><A NAME="TOC1" HREF="cln.html#SEC1">1. Introduction</A>
-<LI><A NAME="TOC2" HREF="cln.html#SEC2">2. Installation</A>
-<UL>
-<LI><A NAME="TOC3" HREF="cln.html#SEC3">2.1 Prerequisites</A>
-<UL>
-<LI><A NAME="TOC4" HREF="cln.html#SEC4">2.1.1 C++ compiler</A>
-<LI><A NAME="TOC5" HREF="cln.html#SEC5">2.1.2 Make utility</A>
-<LI><A NAME="TOC6" HREF="cln.html#SEC6">2.1.3 Sed utility</A>
-</UL>
-<LI><A NAME="TOC7" HREF="cln.html#SEC7">2.2 Building the library</A>
-<UL>
-<LI><A NAME="TOC8" HREF="cln.html#SEC8">2.2.1 Using the GNU MP Library</A>
-</UL>
-<LI><A NAME="TOC9" HREF="cln.html#SEC9">2.3 Installing the library</A>
-<LI><A NAME="TOC10" HREF="cln.html#SEC10">2.4 Cleaning up</A>
-</UL>
-<LI><A NAME="TOC11" HREF="cln.html#SEC11">3. Ordinary number types</A>
-<UL>
-<LI><A NAME="TOC12" HREF="cln.html#SEC12">3.1 Exact numbers</A>
-<LI><A NAME="TOC13" HREF="cln.html#SEC13">3.2 Floating-point numbers</A>
-<LI><A NAME="TOC14" HREF="cln.html#SEC14">3.3 Complex numbers</A>
-<LI><A NAME="TOC15" HREF="cln.html#SEC15">3.4 Conversions</A>
-</UL>
-<LI><A NAME="TOC16" HREF="cln.html#SEC16">4. Functions on numbers</A>
-<UL>
-<LI><A NAME="TOC17" HREF="cln.html#SEC17">4.1 Constructing numbers</A>
-<UL>
-<LI><A NAME="TOC18" HREF="cln.html#SEC18">4.1.1 Constructing integers</A>
-<LI><A NAME="TOC19" HREF="cln.html#SEC19">4.1.2 Constructing rational numbers</A>
-<LI><A NAME="TOC20" HREF="cln.html#SEC20">4.1.3 Constructing floating-point numbers</A>
-<LI><A NAME="TOC21" HREF="cln.html#SEC21">4.1.4 Constructing complex numbers</A>
-</UL>
-<LI><A NAME="TOC22" HREF="cln.html#SEC22">4.2 Elementary functions</A>
-<LI><A NAME="TOC23" HREF="cln.html#SEC23">4.3 Elementary rational functions</A>
-<LI><A NAME="TOC24" HREF="cln.html#SEC24">4.4 Elementary complex functions</A>
-<LI><A NAME="TOC25" HREF="cln.html#SEC25">4.5 Comparisons</A>
-<LI><A NAME="TOC26" HREF="cln.html#SEC26">4.6 Rounding functions</A>
-<LI><A NAME="TOC27" HREF="cln.html#SEC27">4.7 Roots</A>
-<LI><A NAME="TOC28" HREF="cln.html#SEC28">4.8 Transcendental functions</A>
-<UL>
-<LI><A NAME="TOC29" HREF="cln.html#SEC29">4.8.1 Exponential and logarithmic functions</A>
-<LI><A NAME="TOC30" HREF="cln.html#SEC30">4.8.2 Trigonometric functions</A>
-<LI><A NAME="TOC31" HREF="cln.html#SEC31">4.8.3 Hyperbolic functions</A>
-<LI><A NAME="TOC32" HREF="cln.html#SEC32">4.8.4 Euler gamma</A>
-<LI><A NAME="TOC33" HREF="cln.html#SEC33">4.8.5 Riemann zeta</A>
-</UL>
-<LI><A NAME="TOC34" HREF="cln.html#SEC34">4.9 Functions on integers</A>
-<UL>
-<LI><A NAME="TOC35" HREF="cln.html#SEC35">4.9.1 Logical functions</A>
-<LI><A NAME="TOC36" HREF="cln.html#SEC36">4.9.2 Number theoretic functions</A>
-<LI><A NAME="TOC37" HREF="cln.html#SEC37">4.9.3 Combinatorial functions</A>
-</UL>
-<LI><A NAME="TOC38" HREF="cln.html#SEC38">4.10 Functions on floating-point numbers</A>
-<LI><A NAME="TOC39" HREF="cln.html#SEC39">4.11 Conversion functions</A>
-<UL>
-<LI><A NAME="TOC40" HREF="cln.html#SEC40">4.11.1 Conversion to floating-point numbers</A>
-<LI><A NAME="TOC41" HREF="cln.html#SEC41">4.11.2 Conversion to rational numbers</A>
-</UL>
-<LI><A NAME="TOC42" HREF="cln.html#SEC42">4.12 Random number generators</A>
-<LI><A NAME="TOC43" HREF="cln.html#SEC43">4.13 Obfuscating operators</A>
-</UL>
-<LI><A NAME="TOC44" HREF="cln.html#SEC44">5. Input/Output</A>
-<UL>
-<LI><A NAME="TOC45" HREF="cln.html#SEC45">5.1 Internal and printed representation</A>
-<LI><A NAME="TOC46" HREF="cln.html#SEC46">5.2 Input functions</A>
-<LI><A NAME="TOC47" HREF="cln.html#SEC47">5.3 Output functions</A>
-</UL>
-<LI><A NAME="TOC48" HREF="cln.html#SEC48">6. Rings</A>
-<LI><A NAME="TOC49" HREF="cln.html#SEC49">7. Modular integers</A>
-<UL>
-<LI><A NAME="TOC50" HREF="cln.html#SEC50">7.1 Modular integer rings</A>
-<LI><A NAME="TOC51" HREF="cln.html#SEC51">7.2 Functions on modular integers</A>
-</UL>
-<LI><A NAME="TOC52" HREF="cln.html#SEC52">8. Symbolic data types</A>
-<UL>
-<LI><A NAME="TOC53" HREF="cln.html#SEC53">8.1 Strings</A>
-<LI><A NAME="TOC54" HREF="cln.html#SEC54">8.2 Symbols</A>
-</UL>
-<LI><A NAME="TOC55" HREF="cln.html#SEC55">9. Univariate polynomials</A>
-<UL>
-<LI><A NAME="TOC56" HREF="cln.html#SEC56">9.1 Univariate polynomial rings</A>
-<LI><A NAME="TOC57" HREF="cln.html#SEC57">9.2 Functions on univariate polynomials</A>
-<LI><A NAME="TOC58" HREF="cln.html#SEC58">9.3 Special polynomials</A>
-</UL>
-<LI><A NAME="TOC59" HREF="cln.html#SEC59">10. Internals</A>
-<UL>
-<LI><A NAME="TOC60" HREF="cln.html#SEC60">10.1 Why C++ ?</A>
-<LI><A NAME="TOC61" HREF="cln.html#SEC61">10.2 Memory efficiency</A>
-<LI><A NAME="TOC62" HREF="cln.html#SEC62">10.3 Speed efficiency</A>
-<LI><A NAME="TOC63" HREF="cln.html#SEC63">10.4 Garbage collection</A>
-</UL>
-<LI><A NAME="TOC64" HREF="cln.html#SEC64">11. Using the library</A>
-<UL>
-<LI><A NAME="TOC65" HREF="cln.html#SEC65">11.1 Compiler options</A>
-<LI><A NAME="TOC66" HREF="cln.html#SEC66">11.2 Compatibility to old CLN versions</A>
-<LI><A NAME="TOC67" HREF="cln.html#SEC67">11.3 Include files</A>
-<LI><A NAME="TOC68" HREF="cln.html#SEC68">11.4 An Example</A>
-<LI><A NAME="TOC69" HREF="cln.html#SEC69">11.5 Debugging support</A>
-</UL>
-<LI><A NAME="TOC70" HREF="cln.html#SEC70">12. Customizing</A>
-<UL>
-<LI><A NAME="TOC71" HREF="cln.html#SEC71">12.1 Error handling</A>
-<LI><A NAME="TOC72" HREF="cln.html#SEC72">12.2 Floating-point underflow</A>
-<LI><A NAME="TOC73" HREF="cln.html#SEC73">12.3 Customizing I/O</A>
-<LI><A NAME="TOC74" HREF="cln.html#SEC74">12.4 Customizing the memory allocator</A>
-</UL>
-<LI><A NAME="TOC75" HREF="cln.html#SEC75">Index</A>
-</UL>
-<P><HR><P>
-
-
-<H1><A NAME="SEC1" HREF="cln.html#TOC1">1. Introduction</A></H1>
-
-<P>
-CLN is a library for computations with all kinds of numbers.
-It has a rich set of number classes:
-
-
-
-<UL>
-<LI>
-
-Integers (with unlimited precision),
-
-<LI>
-
-Rational numbers,
-
-<LI>
-
-Floating-point numbers:
-
-
-<UL>
-<LI>
-
-Short float,
-<LI>
-
-Single float,
-<LI>
-
-Double float,
-<LI>
-
-Long float (with unlimited precision),
-</UL>
-
-<LI>
-
-Complex numbers,
-
-<LI>
-
-Modular integers (integers modulo a fixed integer),
-
-<LI>
-
-Univariate polynomials.
-</UL>
-
-<P>
-The subtypes of the complex numbers among these are exactly the
-types of numbers known to the Common Lisp language. Therefore
-<CODE>CLN</CODE> can be used for Common Lisp implementations, giving
-<SAMP>`CLN'</SAMP> another meaning: it becomes an abbreviation of
-"Common Lisp Numbers".
-
-
-<P>
-The CLN package implements
-
-
-
-<UL>
-<LI>
-
-Elementary functions (<CODE>+</CODE>, <CODE>-</CODE>, <CODE>*</CODE>, <CODE>/</CODE>, <CODE>sqrt</CODE>,
-comparisons, ...),
-
-<LI>
-
-Logical functions (logical <CODE>and</CODE>, <CODE>or</CODE>, <CODE>not</CODE>, ...),
-
-<LI>
-
-Transcendental functions (exponential, logarithmic, trigonometric, hyperbolic
-functions and their inverse functions).
-</UL>
-
-<P>
-CLN is a C++ library. Using C++ as an implementation language provides
-
-
-
-<UL>
-<LI>
-
-efficiency: it compiles to machine code,
-<LI>
-
-type safety: the C++ compiler knows about the number types and complains
-if, for example, you try to assign a float to an integer variable.
-<LI>
-
-algebraic syntax: You can use the <CODE>+</CODE>, <CODE>-</CODE>, <CODE>*</CODE>, <CODE>=</CODE>,
-<CODE>==</CODE>, ... operators as in C or C++.
-</UL>
-
-<P>
-CLN is memory efficient:
-
-
-
-<UL>
-<LI>
-
-Small integers and short floats are immediate, not heap allocated.
-<LI>
-
-Heap-allocated memory is reclaimed through an automatic, non-interruptive
-garbage collection.
-</UL>
-
-<P>
-CLN is speed efficient:
-
-
-
-<UL>
-<LI>
-
-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>
-
-<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
-for large numbers than the standard multiplication algorithm.
-<LI>
-
-For very large numbers (more than 12000 decimal digits), it uses
-Schönhage-Strassen
-<A NAME="IDX2"></A>
-multiplication, which is an asymptotically optimal multiplication
-algorithm, for multiplication, division and radix conversion.
-</UL>
-
-<P>
-CLN aims at being easily integrated into larger software packages:
-
-
-
-<UL>
-<LI>
-
-The garbage collection imposes no burden on the main application.
-<LI>
-
-The library provides hooks for memory allocation and exceptions.
-<LI>
-
-<A NAME="IDX3"></A>
-All non-macro identifiers are hidden in namespace <CODE>cln</CODE> in 
-order to avoid name clashes.
-</UL>
-
-
-
-<H1><A NAME="SEC2" HREF="cln.html#TOC2">2. Installation</A></H1>
-
-<P>
-This section describes how to install the CLN package on your system.
-
-
-
-
-<H2><A NAME="SEC3" HREF="cln.html#TOC3">2.1 Prerequisites</A></H2>
-
-
-
-<H3><A NAME="SEC4" HREF="cln.html#TOC4">2.1.1 C++ compiler</A></H3>
-
-<P>
-To build CLN, you need a C++ compiler.
-Actually, you need GNU <CODE>g++ 2.90</CODE> or newer, the EGCS compilers will
-do.
-I recommend GNU <CODE>g++ 2.95</CODE> or newer.
-
-
-<P>
-The following C++ features are used:
-classes, member functions, overloading of functions and operators,
-constructors and destructors, inline, const, multiple inheritance,
-templates and namespaces.
-
-
-<P>
-The following C++ features are not used:
-<CODE>new</CODE>, <CODE>delete</CODE>, virtual inheritance, exceptions.
-
-
-<P>
-CLN relies on semi-automatic ordering of initializations
-of static and global variables, a feature which I could
-implement for GNU g++ only.
-
-
-
-
-<H3><A NAME="SEC5" HREF="cln.html#TOC5">2.1.2 Make utility</A></H3>
-<P>
-<A NAME="IDX4"></A>
-
-
-<P>
-To build CLN, you also need to have GNU <CODE>make</CODE> installed.
-
-
-
-
-<H3><A NAME="SEC6" HREF="cln.html#TOC6">2.1.3 Sed utility</A></H3>
-<P>
-<A NAME="IDX5"></A>
-
-
-<P>
-To build CLN on HP-UX, you also need to have GNU <CODE>sed</CODE> installed.
-This is because the libtool script, which creates the CLN library, relies
-on <CODE>sed</CODE>, and the vendor's <CODE>sed</CODE> utility on these systems is too
-limited.
-
-
-
-
-<H2><A NAME="SEC7" HREF="cln.html#TOC7">2.2 Building the library</A></H2>
-
-<P>
-As with any autoconfiguring GNU software, installation is as easy as this:
-
-
-
-<PRE>
-$ ./configure
-$ make
-$ make check
-</PRE>
-
-<P>
-If on your system, <SAMP>`make'</SAMP> is not GNU <CODE>make</CODE>, you have to use
-<SAMP>`gmake'</SAMP> instead of <SAMP>`make'</SAMP> above.
-
-
-<P>
-The <CODE>configure</CODE> command checks out some features of your system and
-C++ compiler and builds the <CODE>Makefile</CODE>s. The <CODE>make</CODE> command
-builds the library. This step may take 4 hours on an average workstation.
-The <CODE>make check</CODE> runs some test to check that no important subroutine
-has been miscompiled.
-
-
-<P>
-The <CODE>configure</CODE> command accepts options. To get a summary of them, try
-
-
-
-<PRE>
-$ ./configure --help
-</PRE>
-
-<P>
-Some of the options are explained in detail in the <SAMP>`INSTALL.generic'</SAMP> file.
-
-
-<P>
-You can specify the C compiler, the C++ compiler and their options through
-the following environment variables when running <CODE>configure</CODE>:
-
-
-<DL COMPACT>
-
-<DT><CODE>CC</CODE>
-<DD>
-Specifies the C compiler.
-
-<DT><CODE>CFLAGS</CODE>
-<DD>
-Flags to be given to the C compiler when compiling programs (not when linking).
-
-<DT><CODE>CXX</CODE>
-<DD>
-Specifies the C++ compiler.
-
-<DT><CODE>CXXFLAGS</CODE>
-<DD>
-Flags to be given to the C++ compiler when compiling programs (not when linking).
-</DL>
-
-<P>
-Examples:
-
-
-
-<PRE>
-$ CC="gcc" CFLAGS="-O" CXX="g++" CXXFLAGS="-O" ./configure
-$ CC="gcc -V egcs-2.91.60" CFLAGS="-O -g" \
-  CXX="g++ -V egcs-2.91.60" CXXFLAGS="-O -g" ./configure
-$ CC="gcc -V 2.95.2" CFLAGS="-O2 -fno-exceptions" \
-  CXX="g++ -V 2.95.2" CFLAGS="-O2 -fno-exceptions" ./configure
-</PRE>
-
-<P>
-Note that for these environment variables to take effect, you have to set
-them (assuming a Bourne-compatible shell) on the same line as the
-<CODE>configure</CODE> command. If you made the settings in earlier shell
-commands, you have to <CODE>export</CODE> the environment variables before
-calling <CODE>configure</CODE>. In a <CODE>csh</CODE> shell, you have to use the
-<SAMP>`setenv'</SAMP> command for setting each of the environment variables.
-
-
-<P>
-Currently CLN works only with the GNU <CODE>g++</CODE> compiler, and only in
-optimizing mode. So you should specify at least <CODE>-O</CODE> in the CXXFLAGS,
-or no CXXFLAGS at all. (If CXXFLAGS is not set, CLN will use <CODE>-O</CODE>.)
-
-
-<P>
-If you use <CODE>g++</CODE> version 2.8.x or egcs-2.91.x (a.k.a. egcs-1.1) or
-gcc-2.95.x, I recommend adding <SAMP>`-fno-exceptions'</SAMP> to the CXXFLAGS.
-This will likely generate better code.
-
-
-<P>
-If you use <CODE>g++</CODE> version egcs-2.91.x (egcs-1.1) or gcc-2.95.x on Sparc,
-add either <SAMP>`-O'</SAMP>, <SAMP>`-O1'</SAMP> or <SAMP>`-O2 -fno-schedule-insns'</SAMP> to the 
-CXXFLAGS.  With full <SAMP>`-O2'</SAMP>, <CODE>g++</CODE> miscompiles the division routines.
-Also, if you have <CODE>g++</CODE> version egcs-1.1.1 or older on Sparc, you must
-specify <SAMP>`--disable-shared'</SAMP> because <CODE>g++</CODE> would miscompile parts of 
-the library.
-
-
-<P>
-By default, both a shared and a static library are built.  You can build
-CLN as a static (or shared) library only, by calling <CODE>configure</CODE> with
-the option <SAMP>`--disable-shared'</SAMP> (or <SAMP>`--disable-static'</SAMP>).  While
-shared libraries are usually more convenient to use, they may not work
-on all architectures.  Try disabling them if you run into linker
-problems.  Also, they are generally somewhat slower than static
-libraries so runtime-critical applications should be linked statically.
-
-
-
-
-<H3><A NAME="SEC8" HREF="cln.html#TOC8">2.2.1 Using the GNU MP Library</A></H3>
-<P>
-<A NAME="IDX6"></A>
-
-
-<P>
-Starting with version 1.1, CLN may be configured to make use of a
-preinstalled <CODE>gmp</CODE> library.  Please make sure that you have at
-least <CODE>gmp</CODE> version 3.0 installed since earlier versions are
-unsupported and likely not to work.  Enabling this feature by calling
-<CODE>configure</CODE> with the option <SAMP>`--with-gmp'</SAMP> is known to be quite
-a boost for CLN's performance.
-
-
-<P>
-If you have installed the <CODE>gmp</CODE> library and its header file in
-some place where your compiler cannot find it by default, you must help
-<CODE>configure</CODE> by setting <CODE>CPPFLAGS</CODE> and <CODE>LDFLAGS</CODE>.  Here is
-an example:
-
-
-
-<PRE>
-$ CC="gcc" CFLAGS="-O2" CXX="g++" CXXFLAGS="-O2 -fno-exceptions" \
-  CPPFLAGS="-I/opt/gmp/include" LDFLAGS="-L/opt/gmp/lib" ./configure --with-gmp
-</PRE>
-
-
-
-<H2><A NAME="SEC9" HREF="cln.html#TOC9">2.3 Installing the library</A></H2>
-<P>
-<A NAME="IDX7"></A>
-
-
-<P>
-As with any autoconfiguring GNU software, installation is as easy as this:
-
-
-
-<PRE>
-$ make install
-</PRE>
-
-<P>
-The <SAMP>`make install'</SAMP> command installs the library and the include files
-into public places (<TT>`/usr/local/lib/'</TT> and <TT>`/usr/local/include/'</TT>,
-if you haven't specified a <CODE>--prefix</CODE> option to <CODE>configure</CODE>).
-This step may require superuser privileges.
-
-
-<P>
-If you have already built the library and wish to install it, but didn't
-specify <CODE>--prefix=...</CODE> at configure time, just re-run
-<CODE>configure</CODE>, giving it the same options as the first time, plus
-the <CODE>--prefix=...</CODE> option.
-
-
-
-
-<H2><A NAME="SEC10" HREF="cln.html#TOC10">2.4 Cleaning up</A></H2>
-
-<P>
-You can remove system-dependent files generated by <CODE>make</CODE> through
-
-
-
-<PRE>
-$ make clean
-</PRE>
-
-<P>
-You can remove all files generated by <CODE>make</CODE>, thus reverting to a
-virgin distribution of CLN, through
-
-
-
-<PRE>
-$ make distclean
-</PRE>
-
-
-
-<H1><A NAME="SEC11" HREF="cln.html#TOC11">3. Ordinary number types</A></H1>
-
-<P>
-CLN implements the following class hierarchy:
-
-
-
-<PRE>
-                        Number
-                      cl_number
-                    &#60;cln/number.h&#62;
-                          |
-                          |
-                 Real or complex number
-                        cl_N
-                    &#60;cln/complex.h&#62;
-                          |
-                          |
-                     Real number
-                        cl_R
-                     &#60;cln/real.h&#62;
-                          |
-      +-------------------+-------------------+
-      |                                       |
-Rational number                     Floating-point number
-    cl_RA                                   cl_F
-&#60;cln/rational.h&#62;                         &#60;cln/float.h&#62;
-      |                                       |
-      |                +--------------+--------------+--------------+
-   Integer             |              |              |              |
-    cl_I          Short-Float    Single-Float   Double-Float    Long-Float
-&#60;cln/integer.h&#62;      cl_SF          cl_FF          cl_DF          cl_LF
-                 &#60;cln/sfloat.h&#62; &#60;cln/ffloat.h&#62; &#60;cln/dfloat.h&#62; &#60;cln/lfloat.h&#62;
-</PRE>
-
-<P>
-<A NAME="IDX8"></A>
-<A NAME="IDX9"></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
-checking instead.
-
-
-<P>
-<A NAME="IDX10"></A>
-<A NAME="IDX11"></A>
-<A NAME="IDX12"></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="IDX13"></A>
-The class <CODE>cl_R</CODE> comprises real numbers of different kinds. It is an
-abstract class.
-
-
-<P>
-<A NAME="IDX14"></A>
-<A NAME="IDX15"></A>
-<A NAME="IDX16"></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
-to integers.
-
-
-<P>
-<A NAME="IDX17"></A>
-The class <CODE>cl_F</CODE> implements floating-point approximations to real numbers.
-It is an abstract class.
-
-
-
-
-<H2><A NAME="SEC12" HREF="cln.html#TOC12">3.1 Exact numbers</A></H2>
-<P>
-<A NAME="IDX18"></A>
-
-
-<P>
-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
-representation. On exact numbers, the elementary operations (<CODE>+</CODE>,
-<CODE>-</CODE>, <CODE>*</CODE>, <CODE>/</CODE>, comparisons, ...) compute the completely
-correct result.
-
-
-<P>
-In CLN, the exact numbers are:
-
-
-
-<UL>
-<LI>
-
-rational numbers (including integers),
-<LI>
-
-complex numbers whose real and imaginary parts are both rational numbers.
-</UL>
-
-<P>
-Rational numbers are always normalized to the form
-<CODE><VAR>numerator</VAR>/<VAR>denominator</VAR></CODE> where the numerator and denominator
-are coprime integers and the denominator is positive. If the resulting
-denominator is <CODE>1</CODE>, the rational number is converted to an integer.
-
-
-<P>
-Small integers (typically in the range <CODE>-2^30</CODE>...<CODE>2^30-1</CODE>,
-for 32-bit machines) are especially efficient, because they consume no heap
-allocation. Otherwise the distinction between these immediate integers
-(called "fixnums") and heap allocated integers (called "bignums")
-is completely transparent.
-
-
-
-
-<H2><A NAME="SEC13" HREF="cln.html#TOC13">3.2 Floating-point numbers</A></H2>
-<P>
-<A NAME="IDX19"></A>
-
-
-<P>
-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
-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.
-
-
-<P>
-<A NAME="IDX20"></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
-<SAMP>`0.7'</SAMP>. Rounding errors like this one are inevitable when computing
-with floating-point numbers.
-
-
-<P>
-Nevertheless, CLN rounds the floating-point results of the operations <CODE>+</CODE>,
-<CODE>-</CODE>, <CODE>*</CODE>, <CODE>/</CODE>, <CODE>sqrt</CODE> according to the "round-to-even"
-rule: It first computes the exact mathematical result and then returns the
-floating-point number which is nearest to this. If two floating-point numbers
-are equally distant from the ideal result, the one with a <CODE>0</CODE> in its least
-significant mantissa bit is chosen.
-
-
-<P>
-Similarly, testing floating point numbers for equality <SAMP>`x == y'</SAMP>
-is gambling with random errors. Better check for <SAMP>`abs(x - y) &#60; epsilon'</SAMP>
-for some well-chosen <CODE>epsilon</CODE>.
-
-
-<P>
-Floating point numbers come in four flavors:
-
-
-
-<UL>
-<LI>
-
-<A NAME="IDX21"></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).
-They don't consume heap allocation.
-
-<LI>
-
-<A NAME="IDX22"></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).
-In CLN, they are represented as IEEE single-precision floating point numbers.
-This corresponds closely to the C/C++ type <SAMP>`float'</SAMP>.
-
-<LI>
-
-<A NAME="IDX23"></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).
-In CLN, they are represented as IEEE double-precision floating point numbers.
-This corresponds closely to the C/C++ type <SAMP>`double'</SAMP>.
-
-<LI>
-
-<A NAME="IDX24"></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.
-The precision of a long float is unlimited, but once created, a long float
-has a fixed precision. (No "lazy recomputation".)
-</UL>
-
-<P>
-Of course, computations with long floats are more expensive than those
-with smaller floating-point formats.
-
-
-<P>
-CLN does not implement features like NaNs, denormalized numbers and
-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.
-
-
-<P>
-<A NAME="IDX25"></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
-when you change the precision of some computation (say, from <CODE>cl_DF</CODE>
-to <CODE>cl_LF</CODE>), you don't have to change the code, only the precision
-of the initial values. Also, many transcendental functions have been
-declared as returning a <CODE>cl_F</CODE> when the argument is a <CODE>cl_F</CODE>,
-but such declarations are missing for the types <CODE>cl_SF</CODE>, <CODE>cl_FF</CODE>,
-<CODE>cl_DF</CODE>, <CODE>cl_LF</CODE>. (Such declarations would be wrong if
-the floating point contagion rule happened to change in the future.)
-
-
-
-
-<H2><A NAME="SEC14" HREF="cln.html#TOC14">3.3 Complex numbers</A></H2>
-<P>
-<A NAME="IDX26"></A>
-
-
-<P>
-Complex numbers, as implemented by the class <CODE>cl_N</CODE>, have a real
-part and an imaginary part, both real numbers. A complex number whose
-imaginary part is the exact number <CODE>0</CODE> is automatically converted
-to a real number.
-
-
-<P>
-Complex numbers can arise from real numbers alone, for example
-through application of <CODE>sqrt</CODE> or transcendental functions.
-
-
-
-
-<H2><A NAME="SEC15" HREF="cln.html#TOC15">3.4 Conversions</A></H2>
-<P>
-<A NAME="IDX27"></A>
-
-
-<P>
-Conversions from any class to any its superclasses ("base classes" in
-C++ terminology) is done automatically.
-
-
-<P>
-Conversions from the C built-in types <SAMP>`long'</SAMP> and <SAMP>`unsigned long'</SAMP>
-are provided for the classes <CODE>cl_I</CODE>, <CODE>cl_RA</CODE>, <CODE>cl_R</CODE>,
-<CODE>cl_N</CODE> and <CODE>cl_number</CODE>.
-
-
-<P>
-Conversions from the C built-in types <SAMP>`int'</SAMP> and <SAMP>`unsigned int'</SAMP>
-are provided for the classes <CODE>cl_I</CODE>, <CODE>cl_RA</CODE>, <CODE>cl_R</CODE>,
-<CODE>cl_N</CODE> and <CODE>cl_number</CODE>. However, these conversions emphasize
-efficiency. Their range is therefore limited:
-
-
-
-<UL>
-<LI>
-
-The conversion from <SAMP>`int'</SAMP> works only if the argument is &#60; 2^29 and &#62; -2^29.
-<LI>
-
-The conversion from <SAMP>`unsigned int'</SAMP> works only if the argument is &#60; 2^29.
-</UL>
-
-<P>
-In a declaration like <SAMP>`cl_I x = 10;'</SAMP> the C++ compiler is able to
-do the conversion of <CODE>10</CODE> from <SAMP>`int'</SAMP> to <SAMP>`cl_I'</SAMP> at compile time
-already. On the other hand, code like <SAMP>`cl_I x = 1000000000;'</SAMP> is
-in error.
-So, if you want to be sure that an <SAMP>`int'</SAMP> whose magnitude is not guaranteed
-to be &#60; 2^29 is correctly converted to a <SAMP>`cl_I'</SAMP>, first convert it to a
-<SAMP>`long'</SAMP>. Similarly, if a large <SAMP>`unsigned int'</SAMP> is to be converted to a
-<SAMP>`cl_I'</SAMP>, first convert it to an <SAMP>`unsigned long'</SAMP>.
-
-
-<P>
-Conversions from the C built-in type <SAMP>`float'</SAMP> are provided for the classes
-<CODE>cl_FF</CODE>, <CODE>cl_F</CODE>, <CODE>cl_R</CODE>, <CODE>cl_N</CODE> and <CODE>cl_number</CODE>.
-
-
-<P>
-Conversions from the C built-in type <SAMP>`double'</SAMP> are provided for the classes
-<CODE>cl_DF</CODE>, <CODE>cl_F</CODE>, <CODE>cl_R</CODE>, <CODE>cl_N</CODE> and <CODE>cl_number</CODE>.
-
-
-<P>
-Conversions from <SAMP>`const char *'</SAMP> are provided for the classes
-<CODE>cl_I</CODE>, <CODE>cl_RA</CODE>,
-<CODE>cl_SF</CODE>, <CODE>cl_FF</CODE>, <CODE>cl_DF</CODE>, <CODE>cl_LF</CODE>, <CODE>cl_F</CODE>,
-<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="IDX28"></A>
-
-<PRE>
-   cl_I order_of_rubiks_cube_group = "43252003274489856000";
-</PRE>
-
-<P>
-Note that this conversion is done at runtime, not at compile-time.
-
-
-<P>
-Conversions from <CODE>cl_I</CODE> to the C built-in types <SAMP>`int'</SAMP>,
-<SAMP>`unsigned int'</SAMP>, <SAMP>`long'</SAMP>, <SAMP>`unsigned long'</SAMP> are provided through
-the functions
-
-
-<DL COMPACT>
-
-<DT><CODE>int cl_I_to_int (const cl_I&#38; x)</CODE>
-<DD>
-<A NAME="IDX29"></A>
-<DT><CODE>unsigned int cl_I_to_uint (const cl_I&#38; x)</CODE>
-<DD>
-<A NAME="IDX30"></A>
-<DT><CODE>long cl_I_to_long (const cl_I&#38; x)</CODE>
-<DD>
-<A NAME="IDX31"></A>
-<DT><CODE>unsigned long cl_I_to_ulong (const cl_I&#38; x)</CODE>
-<DD>
-<A NAME="IDX32"></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>
-
-<P>
-Conversions from the classes <CODE>cl_I</CODE>, <CODE>cl_RA</CODE>,
-<CODE>cl_SF</CODE>, <CODE>cl_FF</CODE>, <CODE>cl_DF</CODE>, <CODE>cl_LF</CODE>, <CODE>cl_F</CODE> and
-<CODE>cl_R</CODE>
-to the C built-in types <SAMP>`float'</SAMP> and <SAMP>`double'</SAMP> are provided through
-the functions
-
-
-<DL COMPACT>
-
-<DT><CODE>float float_approx (const <VAR>type</VAR>&#38; x)</CODE>
-<DD>
-<A NAME="IDX33"></A>
-<DT><CODE>double double_approx (const <VAR>type</VAR>&#38; x)</CODE>
-<DD>
-<A NAME="IDX34"></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.
-</DL>
-
-<P>
-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="IDX35"></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="IDX36"></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.
-Example:
-
-
-
-<PRE>
-   cl_I x = ...;
-   if (!(x &#62;= 0)) abort();
-   cl_I ten_x = The(cl_I)(expt(10,x)); // If x &#62;= 0, 10^x is an integer.
-                // In general, it would be a rational number.
-</PRE>
-
-
-
-<H1><A NAME="SEC16" HREF="cln.html#TOC16">4. Functions on numbers</A></H1>
-
-<P>
-Each of the number classes declares its mathematical operations in the
-corresponding include file. For example, if your code operates with
-objects of type <CODE>cl_I</CODE>, it should <CODE>#include &#60;cln/integer.h&#62;</CODE>.
-
-
-
-
-<H2><A NAME="SEC17" HREF="cln.html#TOC17">4.1 Constructing numbers</A></H2>
-
-<P>
-Here is how to create number objects "from nothing".
-
-
-
-
-<H3><A NAME="SEC18" HREF="cln.html#TOC18">4.1.1 Constructing integers</A></H3>
-
-<P>
-<CODE>cl_I</CODE> objects are most easily constructed from C integers and from
-strings. See section <A HREF="cln.html#SEC15">3.4 Conversions</A>.
-
-
-
-
-<H3><A NAME="SEC19" HREF="cln.html#TOC19">4.1.2 Constructing rational numbers</A></H3>
-
-<P>
-<CODE>cl_RA</CODE> objects can be constructed from strings. The syntax
-for rational numbers is described in section <A HREF="cln.html#SEC45">5.1 Internal and printed representation</A>.
-Another standard way to produce a rational number is through application
-of <SAMP>`operator /'</SAMP> or <SAMP>`recip'</SAMP> on integers.
-
-
-
-
-<H3><A NAME="SEC20" HREF="cln.html#TOC20">4.1.3 Constructing floating-point numbers</A></H3>
-
-<P>
-<CODE>cl_F</CODE> objects with low precision are most easily constructed from
-C <SAMP>`float'</SAMP> and <SAMP>`double'</SAMP>. See section <A HREF="cln.html#SEC15">3.4 Conversions</A>.
-
-
-<P>
-To construct a <CODE>cl_F</CODE> with high precision, you can use the conversion
-from <SAMP>`const char *'</SAMP>, but you have to specify the desired precision
-within the string. (See section <A HREF="cln.html#SEC45">5.1 Internal and printed representation</A>.)
-Example:
-
-<PRE>
-   cl_F e = "0.271828182845904523536028747135266249775724709369996e+1_40";
-</PRE>
-
-<P>
-will set <SAMP>`e'</SAMP> to the given value, with a precision of 40 decimal digits.
-
-
-<P>
-The programmatic way to construct a <CODE>cl_F</CODE> with high precision is
-through the <CODE>cl_float</CODE> conversion function, see
-section <A HREF="cln.html#SEC40">4.11.1 Conversion to floating-point numbers</A>. For example, to compute
-<CODE>e</CODE> to 40 decimal places, first construct 1.0 to 40 decimal places
-and then apply the exponential function:
-
-<PRE>
-   cl_float_format_t precision = cl_float_format(40);
-   cl_F e = exp(cl_float(1,precision));
-</PRE>
-
-
-
-<H3><A NAME="SEC21" HREF="cln.html#TOC21">4.1.4 Constructing complex numbers</A></H3>
-
-<P>
-Non-real <CODE>cl_N</CODE> objects are normally constructed through the function
-
-<PRE>
-   cl_N complex (const cl_R&#38; realpart, const cl_R&#38; imagpart)
-</PRE>
-
-<P>
-See section <A HREF="cln.html#SEC24">4.4 Elementary complex functions</A>.
-
-
-
-
-<H2><A NAME="SEC22" HREF="cln.html#TOC22">4.2 Elementary functions</A></H2>
-
-<P>
-Each of the classes <CODE>cl_N</CODE>, <CODE>cl_R</CODE>, <CODE>cl_RA</CODE>, <CODE>cl_I</CODE>,
-<CODE>cl_F</CODE>, <CODE>cl_SF</CODE>, <CODE>cl_FF</CODE>, <CODE>cl_DF</CODE>, <CODE>cl_LF</CODE>
-defines the following operations:
-
-
-<DL COMPACT>
-
-<DT><CODE><VAR>type</VAR> operator + (const <VAR>type</VAR>&#38;, const <VAR>type</VAR>&#38;)</CODE>
-<DD>
-<A NAME="IDX37"></A>
-Addition.
-
-<DT><CODE><VAR>type</VAR> operator - (const <VAR>type</VAR>&#38;, const <VAR>type</VAR>&#38;)</CODE>
-<DD>
-<A NAME="IDX38"></A>
-Subtraction.
-
-<DT><CODE><VAR>type</VAR> operator - (const <VAR>type</VAR>&#38;)</CODE>
-<DD>
-Returns the negative of the argument.
-
-<DT><CODE><VAR>type</VAR> plus1 (const <VAR>type</VAR>&#38; x)</CODE>
-<DD>
-<A NAME="IDX39"></A>
-Returns <CODE>x + 1</CODE>.
-
-<DT><CODE><VAR>type</VAR> minus1 (const <VAR>type</VAR>&#38; x)</CODE>
-<DD>
-<A NAME="IDX40"></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="IDX41"></A>
-Multiplication.
-
-<DT><CODE><VAR>type</VAR> square (const <VAR>type</VAR>&#38; x)</CODE>
-<DD>
-<A NAME="IDX42"></A>
-Returns <CODE>x * x</CODE>.
-</DL>
-
-<P>
-Each of the classes <CODE>cl_N</CODE>, <CODE>cl_R</CODE>, <CODE>cl_RA</CODE>,
-<CODE>cl_F</CODE>, <CODE>cl_SF</CODE>, <CODE>cl_FF</CODE>, <CODE>cl_DF</CODE>, <CODE>cl_LF</CODE>
-defines the following operations:
-
-
-<DL COMPACT>
-
-<DT><CODE><VAR>type</VAR> operator / (const <VAR>type</VAR>&#38;, const <VAR>type</VAR>&#38;)</CODE>
-<DD>
-<A NAME="IDX43"></A>
-Division.
-
-<DT><CODE><VAR>type</VAR> recip (const <VAR>type</VAR>&#38;)</CODE>
-<DD>
-<A NAME="IDX44"></A>
-Returns the reciprocal of the argument.
-</DL>
-
-<P>
-The class <CODE>cl_I</CODE> doesn't define a <SAMP>`/'</SAMP> operation because
-in the C/C++ language this operator, applied to integral types,
-denotes the <SAMP>`floor'</SAMP> or <SAMP>`truncate'</SAMP> operation (which one of these,
-is implementation dependent). (See section <A HREF="cln.html#SEC26">4.6 Rounding functions</A>.)
-Instead, <CODE>cl_I</CODE> defines an "exact quotient" function:
-
-
-<DL COMPACT>
-
-<DT><CODE>cl_I exquo (const cl_I&#38; x, const cl_I&#38; y)</CODE>
-<DD>
-<A NAME="IDX45"></A>
-Checks that <CODE>y</CODE> divides <CODE>x</CODE>, and returns the quotient <CODE>x</CODE>/<CODE>y</CODE>.
-</DL>
-
-<P>
-The following exponentiation functions are defined:
-
-
-<DL COMPACT>
-
-<DT><CODE>cl_I expt_pos (const cl_I&#38; x, const cl_I&#38; y)</CODE>
-<DD>
-<A NAME="IDX46"></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="IDX47"></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>
-<DD>
-Returns <CODE>x^y</CODE>.
-</DL>
-
-<P>
-Each of the classes <CODE>cl_R</CODE>, <CODE>cl_RA</CODE>, <CODE>cl_I</CODE>,
-<CODE>cl_F</CODE>, <CODE>cl_SF</CODE>, <CODE>cl_FF</CODE>, <CODE>cl_DF</CODE>, <CODE>cl_LF</CODE>
-defines the following operation:
-
-
-<DL COMPACT>
-
-<DT><CODE><VAR>type</VAR> abs (const <VAR>type</VAR>&#38; x)</CODE>
-<DD>
-<A NAME="IDX48"></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>
-
-<P>
-The class <CODE>cl_N</CODE> implements this as follows:
-
-
-<DL COMPACT>
-
-<DT><CODE>cl_R abs (const cl_N x)</CODE>
-<DD>
-Returns the absolute value of <CODE>x</CODE>.
-</DL>
-
-<P>
-Each of the classes <CODE>cl_N</CODE>, <CODE>cl_R</CODE>, <CODE>cl_RA</CODE>, <CODE>cl_I</CODE>,
-<CODE>cl_F</CODE>, <CODE>cl_SF</CODE>, <CODE>cl_FF</CODE>, <CODE>cl_DF</CODE>, <CODE>cl_LF</CODE>
-defines the following operation:
-
-
-<DL COMPACT>
-
-<DT><CODE><VAR>type</VAR> signum (const <VAR>type</VAR>&#38; x)</CODE>
-<DD>
-<A NAME="IDX49"></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
-0 or 1 or -1.
-</DL>
-
-
-
-<H2><A NAME="SEC23" HREF="cln.html#TOC23">4.3 Elementary rational functions</A></H2>
-
-<P>
-Each of the classes <CODE>cl_RA</CODE>, <CODE>cl_I</CODE> defines the following operations:
-
-
-<DL COMPACT>
-
-<DT><CODE>cl_I numerator (const <VAR>type</VAR>&#38; x)</CODE>
-<DD>
-<A NAME="IDX50"></A>
-Returns the numerator of <CODE>x</CODE>.
-
-<DT><CODE>cl_I denominator (const <VAR>type</VAR>&#38; x)</CODE>
-<DD>
-<A NAME="IDX51"></A>
-Returns the denominator of <CODE>x</CODE>.
-</DL>
-
-<P>
-The numerator and denominator of a rational number are normalized in such
-a way that they have no factor in common and the denominator is positive.
-
-
-
-
-<H2><A NAME="SEC24" HREF="cln.html#TOC24">4.4 Elementary complex functions</A></H2>
-
-<P>
-The class <CODE>cl_N</CODE> defines the following operation:
-
-
-<DL COMPACT>
-
-<DT><CODE>cl_N complex (const cl_R&#38; a, const cl_R&#38; b)</CODE>
-<DD>
-<A NAME="IDX52"></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>
-
-<P>
-Each of the classes <CODE>cl_N</CODE>, <CODE>cl_R</CODE> defines the following operations:
-
-
-<DL COMPACT>
-
-<DT><CODE>cl_R realpart (const <VAR>type</VAR>&#38; x)</CODE>
-<DD>
-<A NAME="IDX53"></A>
-Returns the real part of <CODE>x</CODE>.
-
-<DT><CODE>cl_R imagpart (const <VAR>type</VAR>&#38; x)</CODE>
-<DD>
-<A NAME="IDX54"></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="IDX55"></A>
-Returns the complex conjugate of <CODE>x</CODE>.
-</DL>
-
-<P>
-We have the relations
-
-
-
-<UL>
-<LI>
-
-<CODE>x = complex(realpart(x), imagpart(x))</CODE>
-<LI>
-
-<CODE>conjugate(x) = complex(realpart(x), -imagpart(x))</CODE>
-</UL>
-
-
-
-<H2><A NAME="SEC25" HREF="cln.html#TOC25">4.5 Comparisons</A></H2>
-<P>
-<A NAME="IDX56"></A>
-
-
-<P>
-Each of the classes <CODE>cl_N</CODE>, <CODE>cl_R</CODE>, <CODE>cl_RA</CODE>, <CODE>cl_I</CODE>,
-<CODE>cl_F</CODE>, <CODE>cl_SF</CODE>, <CODE>cl_FF</CODE>, <CODE>cl_DF</CODE>, <CODE>cl_LF</CODE>
-defines the following operations:
-
-
-<DL COMPACT>
-
-<DT><CODE>bool operator == (const <VAR>type</VAR>&#38;, const <VAR>type</VAR>&#38;)</CODE>
-<DD>
-<A NAME="IDX57"></A>
-<DT><CODE>bool operator != (const <VAR>type</VAR>&#38;, const <VAR>type</VAR>&#38;)</CODE>
-<DD>
-<A NAME="IDX58"></A>
-Comparison, as in C and C++.
-
-<DT><CODE>uint32 equal_hashcode (const <VAR>type</VAR>&#38;)</CODE>
-<DD>
-<A NAME="IDX59"></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="IDX60"></A>
-Compare against zero: <CODE>x == 0</CODE>
-</DL>
-
-<P>
-Each of the classes <CODE>cl_R</CODE>, <CODE>cl_RA</CODE>, <CODE>cl_I</CODE>,
-<CODE>cl_F</CODE>, <CODE>cl_SF</CODE>, <CODE>cl_FF</CODE>, <CODE>cl_DF</CODE>, <CODE>cl_LF</CODE>
-defines the following operations:
-
-
-<DL COMPACT>
-
-<DT><CODE>cl_signean compare (const <VAR>type</VAR>&#38; x, const <VAR>type</VAR>&#38; y)</CODE>
-<DD>
-<A NAME="IDX61"></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="IDX62"></A>
-<DT><CODE>bool operator &#60; (const <VAR>type</VAR>&#38;, const <VAR>type</VAR>&#38;)</CODE>
-<DD>
-<A NAME="IDX63"></A>
-<DT><CODE>bool operator &#62;= (const <VAR>type</VAR>&#38;, const <VAR>type</VAR>&#38;)</CODE>
-<DD>
-<A NAME="IDX64"></A>
-<DT><CODE>bool operator &#62; (const <VAR>type</VAR>&#38;, const <VAR>type</VAR>&#38;)</CODE>
-<DD>
-<A NAME="IDX65"></A>
-Comparison, as in C and C++.
-
-<DT><CODE>cl_boolean minusp (const <VAR>type</VAR>&#38; x)</CODE>
-<DD>
-<A NAME="IDX66"></A>
-Compare against zero: <CODE>x &#60; 0</CODE>
-
-<DT><CODE>cl_boolean plusp (const <VAR>type</VAR>&#38; x)</CODE>
-<DD>
-<A NAME="IDX67"></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="IDX68"></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="IDX69"></A>
-Return the minimum of <CODE>x</CODE> and <CODE>y</CODE>.
-</DL>
-
-<P>
-When a floating point number and a rational number are compared, the float
-is first converted to a rational number using the function <CODE>rational</CODE>.
-Since a floating point number actually represents an interval of real numbers,
-the result might be surprising.
-For example, <CODE>(cl_F)(cl_R)"1/3" == (cl_R)"1/3"</CODE> returns false because
-there is no floating point number whose value is exactly <CODE>1/3</CODE>.
-
-
-
-
-<H2><A NAME="SEC26" HREF="cln.html#TOC26">4.6 Rounding functions</A></H2>
-<P>
-<A NAME="IDX70"></A>
-
-
-<P>
-When a real number is to be converted to an integer, there is no "best"
-rounding. The desired rounding function depends on the application.
-The Common Lisp and ISO Lisp standards offer four rounding functions:
-
-
-<DL COMPACT>
-
-<DT><CODE>floor(x)</CODE>
-<DD>
-This is the largest integer &#60;=<CODE>x</CODE>.
-
-<DT><CODE>ceiling(x)</CODE>
-<DD>
-This is the smallest integer &#62;=<CODE>x</CODE>.
-
-<DT><CODE>truncate(x)</CODE>
-<DD>
-Among the integers between 0 and <CODE>x</CODE> (inclusive) the one nearest to <CODE>x</CODE>.
-
-<DT><CODE>round(x)</CODE>
-<DD>
-The integer nearest to <CODE>x</CODE>. If <CODE>x</CODE> is exactly halfway between two
-integers, choose the even one.
-</DL>
-
-<P>
-These functions have different advantages:
-
-
-<P>
-<CODE>floor</CODE> and <CODE>ceiling</CODE> are translation invariant:
-<CODE>floor(x+n) = floor(x) + n</CODE> and <CODE>ceiling(x+n) = ceiling(x) + n</CODE>
-for every <CODE>x</CODE> and every integer <CODE>n</CODE>.
-
-
-<P>
-On the other hand, <CODE>truncate</CODE> and <CODE>round</CODE> are symmetric:
-<CODE>truncate(-x) = -truncate(x)</CODE> and <CODE>round(-x) = -round(x)</CODE>,
-and furthermore <CODE>round</CODE> is unbiased: on the "average", it rounds
-down exactly as often as it rounds up.
-
-
-<P>
-The functions are related like this:
-
-
-
-<UL>
-<LI>
-
-<CODE>ceiling(m/n) = floor((m+n-1)/n) = floor((m-1)/n)+1</CODE>
-for rational numbers <CODE>m/n</CODE> (<CODE>m</CODE>, <CODE>n</CODE> integers, <CODE>n</CODE>&#62;0), and
-<LI>
-
-<CODE>truncate(x) = sign(x) * floor(abs(x))</CODE>
-</UL>
-
-<P>
-Each of the classes <CODE>cl_R</CODE>, <CODE>cl_RA</CODE>,
-<CODE>cl_F</CODE>, <CODE>cl_SF</CODE>, <CODE>cl_FF</CODE>, <CODE>cl_DF</CODE>, <CODE>cl_LF</CODE>
-defines the following operations:
-
-
-<DL COMPACT>
-
-<DT><CODE>cl_I floor1 (const <VAR>type</VAR>&#38; x)</CODE>
-<DD>
-<A NAME="IDX71"></A>
-Returns <CODE>floor(x)</CODE>.
-<DT><CODE>cl_I ceiling1 (const <VAR>type</VAR>&#38; x)</CODE>
-<DD>
-<A NAME="IDX72"></A>
-Returns <CODE>ceiling(x)</CODE>.
-<DT><CODE>cl_I truncate1 (const <VAR>type</VAR>&#38; x)</CODE>
-<DD>
-<A NAME="IDX73"></A>
-Returns <CODE>truncate(x)</CODE>.
-<DT><CODE>cl_I round1 (const <VAR>type</VAR>&#38; x)</CODE>
-<DD>
-<A NAME="IDX74"></A>
-Returns <CODE>round(x)</CODE>.
-</DL>
-
-<P>
-Each of the classes <CODE>cl_R</CODE>, <CODE>cl_RA</CODE>, <CODE>cl_I</CODE>,
-<CODE>cl_F</CODE>, <CODE>cl_SF</CODE>, <CODE>cl_FF</CODE>, <CODE>cl_DF</CODE>, <CODE>cl_LF</CODE>
-defines the following operations:
-
-
-<DL COMPACT>
-
-<DT><CODE>cl_I floor1 (const <VAR>type</VAR>&#38; x, const <VAR>type</VAR>&#38; y)</CODE>
-<DD>
-Returns <CODE>floor(x/y)</CODE>.
-<DT><CODE>cl_I ceiling1 (const <VAR>type</VAR>&#38; x, const <VAR>type</VAR>&#38; y)</CODE>
-<DD>
-Returns <CODE>ceiling(x/y)</CODE>.
-<DT><CODE>cl_I truncate1 (const <VAR>type</VAR>&#38; x, const <VAR>type</VAR>&#38; y)</CODE>
-<DD>
-Returns <CODE>truncate(x/y)</CODE>.
-<DT><CODE>cl_I round1 (const <VAR>type</VAR>&#38; x, const <VAR>type</VAR>&#38; y)</CODE>
-<DD>
-Returns <CODE>round(x/y)</CODE>.
-</DL>
-
-<P>
-These functions are called <SAMP>`floor1'</SAMP>, ... here instead of
-<SAMP>`floor'</SAMP>, ..., because on some systems, system dependent include
-files define <SAMP>`floor'</SAMP> and <SAMP>`ceiling'</SAMP> as macros.
-
-
-<P>
-In many cases, one needs both the quotient and the remainder of a division.
-It is more efficient to compute both at the same time than to perform
-two divisions, one for quotient and the next one for the remainder.
-The following functions therefore return a structure containing both
-the quotient and the remainder. The suffix <SAMP>`2'</SAMP> indicates the number
-of "return values". The remainder is defined as follows:
-
-
-
-<UL>
-<LI>
-
-for the computation of <CODE>quotient = floor(x)</CODE>,
-<CODE>remainder = x - quotient</CODE>,
-<LI>
-
-for the computation of <CODE>quotient = floor(x,y)</CODE>,
-<CODE>remainder = x - quotient*y</CODE>,
-</UL>
-
-<P>
-and similarly for the other three operations.
-
-
-<P>
-Each of the classes <CODE>cl_R</CODE>, <CODE>cl_RA</CODE>,
-<CODE>cl_F</CODE>, <CODE>cl_SF</CODE>, <CODE>cl_FF</CODE>, <CODE>cl_DF</CODE>, <CODE>cl_LF</CODE>
-defines the following operations:
-
-
-<DL COMPACT>
-
-<DT><CODE>struct <VAR>type</VAR>_div_t { cl_I quotient; <VAR>type</VAR> remainder; };</CODE>
-<DD>
-<DT><CODE><VAR>type</VAR>_div_t floor2 (const <VAR>type</VAR>&#38; x)</CODE>
-<DD>
-<DT><CODE><VAR>type</VAR>_div_t ceiling2 (const <VAR>type</VAR>&#38; x)</CODE>
-<DD>
-<DT><CODE><VAR>type</VAR>_div_t truncate2 (const <VAR>type</VAR>&#38; x)</CODE>
-<DD>
-<DT><CODE><VAR>type</VAR>_div_t round2 (const <VAR>type</VAR>&#38; x)</CODE>
-<DD>
-</DL>
-
-<P>
-Each of the classes <CODE>cl_R</CODE>, <CODE>cl_RA</CODE>, <CODE>cl_I</CODE>,
-<CODE>cl_F</CODE>, <CODE>cl_SF</CODE>, <CODE>cl_FF</CODE>, <CODE>cl_DF</CODE>, <CODE>cl_LF</CODE>
-defines the following operations:
-
-
-<DL COMPACT>
-
-<DT><CODE>struct <VAR>type</VAR>_div_t { cl_I quotient; <VAR>type</VAR> remainder; };</CODE>
-<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="IDX75"></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="IDX76"></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="IDX77"></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="IDX78"></A>
-</DL>
-
-<P>
-Sometimes, one wants the quotient as a floating-point number (of the
-same format as the argument, if the argument is a float) instead of as
-an integer. The prefix <SAMP>`f'</SAMP> indicates this.
-
-
-<P>
-Each of the classes
-<CODE>cl_F</CODE>, <CODE>cl_SF</CODE>, <CODE>cl_FF</CODE>, <CODE>cl_DF</CODE>, <CODE>cl_LF</CODE>
-defines the following operations:
-
-
-<DL COMPACT>
-
-<DT><CODE><VAR>type</VAR> ffloor (const <VAR>type</VAR>&#38; x)</CODE>
-<DD>
-<A NAME="IDX79"></A>
-<DT><CODE><VAR>type</VAR> fceiling (const <VAR>type</VAR>&#38; x)</CODE>
-<DD>
-<A NAME="IDX80"></A>
-<DT><CODE><VAR>type</VAR> ftruncate (const <VAR>type</VAR>&#38; x)</CODE>
-<DD>
-<A NAME="IDX81"></A>
-<DT><CODE><VAR>type</VAR> fround (const <VAR>type</VAR>&#38; x)</CODE>
-<DD>
-<A NAME="IDX82"></A>
-</DL>
-
-<P>
-and similarly for class <CODE>cl_R</CODE>, but with return type <CODE>cl_F</CODE>.
-
-
-<P>
-The class <CODE>cl_R</CODE> defines the following operations:
-
-
-<DL COMPACT>
-
-<DT><CODE>cl_F ffloor (const <VAR>type</VAR>&#38; x, const <VAR>type</VAR>&#38; y)</CODE>
-<DD>
-<DT><CODE>cl_F fceiling (const <VAR>type</VAR>&#38; x, const <VAR>type</VAR>&#38; y)</CODE>
-<DD>
-<DT><CODE>cl_F ftruncate (const <VAR>type</VAR>&#38; x, const <VAR>type</VAR>&#38; y)</CODE>
-<DD>
-<DT><CODE>cl_F fround (const <VAR>type</VAR>&#38; x, const <VAR>type</VAR>&#38; y)</CODE>
-<DD>
-</DL>
-
-<P>
-These functions also exist in versions which return both the quotient
-and the remainder. The suffix <SAMP>`2'</SAMP> indicates this.
-
-
-<P>
-Each of the classes
-<CODE>cl_F</CODE>, <CODE>cl_SF</CODE>, <CODE>cl_FF</CODE>, <CODE>cl_DF</CODE>, <CODE>cl_LF</CODE>
-defines the following operations:
-<A NAME="IDX83"></A>
-<A NAME="IDX84"></A>
-<A NAME="IDX85"></A>
-<A NAME="IDX86"></A>
-<A NAME="IDX87"></A>
-
-
-<DL COMPACT>
-
-<DT><CODE>struct <VAR>type</VAR>_fdiv_t { <VAR>type</VAR> quotient; <VAR>type</VAR> remainder; };</CODE>
-<DD>
-<DT><CODE><VAR>type</VAR>_fdiv_t ffloor2 (const <VAR>type</VAR>&#38; x)</CODE>
-<DD>
-<A NAME="IDX88"></A>
-<DT><CODE><VAR>type</VAR>_fdiv_t fceiling2 (const <VAR>type</VAR>&#38; x)</CODE>
-<DD>
-<A NAME="IDX89"></A>
-<DT><CODE><VAR>type</VAR>_fdiv_t ftruncate2 (const <VAR>type</VAR>&#38; x)</CODE>
-<DD>
-<A NAME="IDX90"></A>
-<DT><CODE><VAR>type</VAR>_fdiv_t fround2 (const <VAR>type</VAR>&#38; x)</CODE>
-<DD>
-<A NAME="IDX91"></A>
-</DL>
-<P>
-and similarly for class <CODE>cl_R</CODE>, but with quotient type <CODE>cl_F</CODE>.
-<A NAME="IDX92"></A>
-
-
-<P>
-The class <CODE>cl_R</CODE> defines the following operations:
-
-
-<DL COMPACT>
-
-<DT><CODE>struct <VAR>type</VAR>_fdiv_t { cl_F quotient; cl_R remainder; };</CODE>
-<DD>
-<DT><CODE><VAR>type</VAR>_fdiv_t ffloor2 (const <VAR>type</VAR>&#38; x, const <VAR>type</VAR>&#38; y)</CODE>
-<DD>
-<DT><CODE><VAR>type</VAR>_fdiv_t fceiling2 (const <VAR>type</VAR>&#38; x, const <VAR>type</VAR>&#38; y)</CODE>
-<DD>
-<DT><CODE><VAR>type</VAR>_fdiv_t ftruncate2 (const <VAR>type</VAR>&#38; x, const <VAR>type</VAR>&#38; y)</CODE>
-<DD>
-<DT><CODE><VAR>type</VAR>_fdiv_t fround2 (const <VAR>type</VAR>&#38; x, const <VAR>type</VAR>&#38; y)</CODE>
-<DD>
-</DL>
-
-<P>
-Other applications need only the remainder of a division.
-The remainder of <SAMP>`floor'</SAMP> and <SAMP>`ffloor'</SAMP> is called <SAMP>`mod'</SAMP>
-(abbreviation of "modulo"). The remainder <SAMP>`truncate'</SAMP> and
-<SAMP>`ftruncate'</SAMP> is called <SAMP>`rem'</SAMP> (abbreviation of "remainder").
-
-
-
-<UL>
-<LI>
-
-<CODE>mod(x,y) = floor2(x,y).remainder = x - floor(x/y)*y</CODE>
-<LI>
-
-<CODE>rem(x,y) = truncate2(x,y).remainder = x - truncate(x/y)*y</CODE>
-</UL>
-
-<P>
-If <CODE>x</CODE> and <CODE>y</CODE> are both &#62;= 0, <CODE>mod(x,y) = rem(x,y) &#62;= 0</CODE>.
-In general, <CODE>mod(x,y)</CODE> has the sign of <CODE>y</CODE> or is zero,
-and <CODE>rem(x,y)</CODE> has the sign of <CODE>x</CODE> or is zero.
-
-
-<P>
-The classes <CODE>cl_R</CODE>, <CODE>cl_I</CODE> define the following operations:
-
-
-<DL COMPACT>
-
-<DT><CODE><VAR>type</VAR> mod (const <VAR>type</VAR>&#38; x, const <VAR>type</VAR>&#38; y)</CODE>
-<DD>
-<A NAME="IDX93"></A>
-<DT><CODE><VAR>type</VAR> rem (const <VAR>type</VAR>&#38; x, const <VAR>type</VAR>&#38; y)</CODE>
-<DD>
-<A NAME="IDX94"></A>
-</DL>
-
-
-
-<H2><A NAME="SEC27" HREF="cln.html#TOC27">4.7 Roots</A></H2>
-
-<P>
-Each of the classes <CODE>cl_R</CODE>,
-<CODE>cl_F</CODE>, <CODE>cl_SF</CODE>, <CODE>cl_FF</CODE>, <CODE>cl_DF</CODE>, <CODE>cl_LF</CODE>
-defines the following operation:
-
-
-<DL COMPACT>
-
-<DT><CODE><VAR>type</VAR> sqrt (const <VAR>type</VAR>&#38; x)</CODE>
-<DD>
-<A NAME="IDX95"></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
-floating-point approximation.
-</DL>
-
-<P>
-The classes <CODE>cl_RA</CODE>, <CODE>cl_I</CODE> define the following operation:
-
-
-<DL COMPACT>
-
-<DT><CODE>cl_boolean sqrtp (const <VAR>type</VAR>&#38; x, <VAR>type</VAR>* root)</CODE>
-<DD>
-<A NAME="IDX96"></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>
-
-<P>
-Furthermore, for integers, similarly:
-
-
-<DL COMPACT>
-
-<DT><CODE>cl_boolean isqrt (const <VAR>type</VAR>&#38; x, <VAR>type</VAR>* root)</CODE>
-<DD>
-<A NAME="IDX97"></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>.
-</DL>
-
-<P>
-For <CODE>n</CODE>th roots, the classes <CODE>cl_RA</CODE>, <CODE>cl_I</CODE>
-define the following operation:
-
-
-<DL COMPACT>
-
-<DT><CODE>cl_boolean rootp (const <VAR>type</VAR>&#38; x, const cl_I&#38; n, <VAR>type</VAR>* root)</CODE>
-<DD>
-<A NAME="IDX98"></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
-false.
-</DL>
-
-<P>
-The only square root function which accepts negative numbers is the one
-for class <CODE>cl_N</CODE>:
-
-
-<DL COMPACT>
-
-<DT><CODE>cl_N sqrt (const cl_N&#38; z)</CODE>
-<DD>
-<A NAME="IDX99"></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
-right half plane <CODE>realpart(sqrt(z)) &#62;= 0</CODE>
-including the positive imaginary axis and 0, but excluding
-the negative imaginary axis.
-The result is an exact number only if <CODE>z</CODE> is an exact number.
-</DL>
-
-
-
-<H2><A NAME="SEC28" HREF="cln.html#TOC28">4.8 Transcendental functions</A></H2>
-<P>
-<A NAME="IDX100"></A>
-
-
-<P>
-The transcendental functions return an exact result if the argument
-is exact and the result is exact as well. Otherwise they must return
-inexact numbers even if the argument is exact.
-For example, <CODE>cos(0) = 1</CODE> returns the rational number <CODE>1</CODE>.
-
-
-
-
-<H3><A NAME="SEC29" HREF="cln.html#TOC29">4.8.1 Exponential and logarithmic functions</A></H3>
-
-<DL COMPACT>
-
-<DT><CODE>cl_R exp (const cl_R&#38; x)</CODE>
-<DD>
-<A NAME="IDX101"></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
-<CODE>e</CODE> is the base of the natural logarithms. The range of the result
-is the entire complex plane excluding 0.
-
-<DT><CODE>cl_R ln (const cl_R&#38; x)</CODE>
-<DD>
-<A NAME="IDX102"></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="IDX103"></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
-<CODE>-pi &#60; imagpart(log(x)) &#60;= pi</CODE>.
-
-<DT><CODE>cl_R phase (const cl_N&#38; x)</CODE>
-<DD>
-<A NAME="IDX104"></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>.
-The range of the result is the interval <CODE>-pi &#60; phase(x) &#60;= pi</CODE>.
-The result will be an exact number only if <CODE>zerop(x)</CODE> or
-if <CODE>x</CODE> is real and positive.
-
-<DT><CODE>cl_R log (const cl_R&#38; a, const cl_R&#38; b)</CODE>
-<DD>
-<CODE>a</CODE> and <CODE>b</CODE> must be &#62; 0. Returns the logarithm of <CODE>a</CODE> with
-respect to base <CODE>b</CODE>. <CODE>log(a,b) = ln(a)/ln(b)</CODE>.
-The result can be exact only if <CODE>a = 1</CODE> or if <CODE>a</CODE> and <CODE>b</CODE>
-are both rational.
-
-<DT><CODE>cl_N log (const cl_N&#38; a, const cl_N&#38; b)</CODE>
-<DD>
-Returns the logarithm of <CODE>a</CODE> with respect to base <CODE>b</CODE>.
-<CODE>log(a,b) = log(a)/log(b)</CODE>.
-
-<DT><CODE>cl_N expt (const cl_N&#38; x, const cl_N&#38; y)</CODE>
-<DD>
-<A NAME="IDX105"></A>
-Exponentiation: Returns <CODE>x^y = exp(y*log(x))</CODE>.
-</DL>
-
-<P>
-The constant e = exp(1) = 2.71828... is returned by the following functions:
-
-
-<DL COMPACT>
-
-<DT><CODE>cl_F exp1 (cl_float_format_t f)</CODE>
-<DD>
-<A NAME="IDX106"></A>
-Returns e as a float of format <CODE>f</CODE>.
-
-<DT><CODE>cl_F exp1 (const cl_F&#38; y)</CODE>
-<DD>
-Returns e in the float format of <CODE>y</CODE>.
-
-<DT><CODE>cl_F exp1 (void)</CODE>
-<DD>
-Returns e as a float of format <CODE>default_float_format</CODE>.
-</DL>
-
-
-
-<H3><A NAME="SEC30" HREF="cln.html#TOC30">4.8.2 Trigonometric functions</A></H3>
-
-<DL COMPACT>
-
-<DT><CODE>cl_R sin (const cl_R&#38; x)</CODE>
-<DD>
-<A NAME="IDX107"></A>
-Returns <CODE>sin(x)</CODE>. The range of the result is the interval
-<CODE>-1 &#60;= sin(x) &#60;= 1</CODE>.
-
-<DT><CODE>cl_N sin (const cl_N&#38; z)</CODE>
-<DD>
-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="IDX108"></A>
-Returns <CODE>cos(x)</CODE>. The range of the result is the interval
-<CODE>-1 &#60;= cos(x) &#60;= 1</CODE>.
-
-<DT><CODE>cl_N cos (const cl_N&#38; x)</CODE>
-<DD>
-Returns <CODE>cos(z)</CODE>. The range of the result is the entire complex plane.
-
-<DT><CODE>struct cos_sin_t { cl_R cos; cl_R sin; };</CODE>
-<DD>
-<A NAME="IDX109"></A>
-<DT><CODE>cos_sin_t 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="IDX110"></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="IDX111"></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="IDX112"></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="IDX113"></A>
-<A NAME="IDX114"></A>
-<DT><CODE>cl_N asin (const cl_N&#38; z)</CODE>
-<DD>
-Returns <CODE>arcsin(z)</CODE>. This is defined as
-<CODE>arcsin(z) = log(iz+sqrt(1-z^2))/i</CODE> and satisfies
-<CODE>arcsin(-z) = -arcsin(z)</CODE>.
-The range of the result is the strip in the complex domain
-<CODE>-pi/2 &#60;= realpart(arcsin(z)) &#60;= pi/2</CODE>, excluding the numbers
-with <CODE>realpart = -pi/2</CODE> and <CODE>imagpart &#60; 0</CODE> and the numbers
-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="IDX115"></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>.
-The range of the result is the strip in the complex domain
-<CODE>0 &#60;= realpart(arcsin(z)) &#60;= pi</CODE>, excluding the numbers
-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="IDX116"></A>
-<A NAME="IDX117"></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
-<CODE>x+iy</CODE>. This is <CODE>atan(y/x)</CODE> if <CODE>x&#62;0</CODE>. The range of
-the result is the interval <CODE>-pi &#60; atan(x,y) &#60;= pi</CODE>. The result will
-be an exact number only if <CODE>x &#62; 0</CODE> and <CODE>y</CODE> is the exact <CODE>0</CODE>.
-WARNING: In Common Lisp, this function is called as <CODE>(atan y x)</CODE>,
-with reversed order of arguments.
-
-<DT><CODE>cl_R atan (const cl_R&#38; x)</CODE>
-<DD>
-Returns <CODE>arctan(x)</CODE>. This is the same as <CODE>atan(1,x)</CODE>. The range
-of the result is the interval <CODE>-pi/2 &#60; atan(x) &#60; pi/2</CODE>. The result
-will be an exact number only if <CODE>x</CODE> is the exact <CODE>0</CODE>.
-
-<DT><CODE>cl_N atan (const cl_N&#38; z)</CODE>
-<DD>
-Returns <CODE>arctan(z)</CODE>. This is defined as
-<CODE>arctan(z) = (log(1+iz)-log(1-iz)) / 2i</CODE> and satisfies
-<CODE>arctan(-z) = -arctan(z)</CODE>. The range of the result is
-the strip in the complex domain
-<CODE>-pi/2 &#60;= realpart(arctan(z)) &#60;= pi/2</CODE>, excluding the numbers
-with <CODE>realpart = -pi/2</CODE> and <CODE>imagpart &#62;= 0</CODE> and the numbers
-with <CODE>realpart = pi/2</CODE> and <CODE>imagpart &#60;= 0</CODE>.
-
-</DL>
-
-<P>
-<A NAME="IDX118"></A>
-<A NAME="IDX119"></A>
-Archimedes' constant pi = 3.14... is returned by the following functions:
-
-
-<DL COMPACT>
-
-<DT><CODE>cl_F pi (cl_float_format_t f)</CODE>
-<DD>
-<A NAME="IDX120"></A>
-Returns pi as a float of format <CODE>f</CODE>.
-
-<DT><CODE>cl_F pi (const cl_F&#38; y)</CODE>
-<DD>
-Returns pi in the float format of <CODE>y</CODE>.
-
-<DT><CODE>cl_F pi (void)</CODE>
-<DD>
-Returns pi as a float of format <CODE>default_float_format</CODE>.
-</DL>
-
-
-
-<H3><A NAME="SEC31" HREF="cln.html#TOC31">4.8.3 Hyperbolic functions</A></H3>
-
-<DL COMPACT>
-
-<DT><CODE>cl_R sinh (const cl_R&#38; x)</CODE>
-<DD>
-<A NAME="IDX121"></A>
-Returns <CODE>sinh(x)</CODE>.
-
-<DT><CODE>cl_N sinh (const cl_N&#38; z)</CODE>
-<DD>
-Returns <CODE>sinh(z)</CODE>. The range of the result is the entire complex plane.
-
-<DT><CODE>cl_R cosh (const cl_R&#38; x)</CODE>
-<DD>
-<A NAME="IDX122"></A>
-Returns <CODE>cosh(x)</CODE>. The range of the result is the interval
-<CODE>cosh(x) &#62;= 1</CODE>.
-
-<DT><CODE>cl_N cosh (const cl_N&#38; z)</CODE>
-<DD>
-Returns <CODE>cosh(z)</CODE>. The range of the result is the entire complex plane.
-
-<DT><CODE>struct cosh_sinh_t { cl_R cosh; cl_R sinh; };</CODE>
-<DD>
-<A NAME="IDX123"></A>
-<DT><CODE>cosh_sinh_t cosh_sinh (const cl_R&#38; x)</CODE>
-<DD>
-<A NAME="IDX124"></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="IDX125"></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="IDX126"></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>.
-The range of the result is the strip in the complex domain
-<CODE>-pi/2 &#60;= imagpart(arsinh(z)) &#60;= pi/2</CODE>, excluding the numbers
-with <CODE>imagpart = -pi/2</CODE> and <CODE>realpart &#62; 0</CODE> and the numbers
-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="IDX127"></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
-<CODE>-pi &#60; imagpart(arcosh(z)) &#60;= pi, realpart(arcosh(z)) &#62;= 0</CODE>,
-excluding the numbers with <CODE>realpart = 0</CODE> and <CODE>-pi &#60; imagpart &#60; 0</CODE>.
-
-<DT><CODE>cl_N atanh (const cl_N&#38; z)</CODE>
-<DD>
-<A NAME="IDX128"></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
-the strip in the complex domain
-<CODE>-pi/2 &#60;= imagpart(artanh(z)) &#60;= pi/2</CODE>, excluding the numbers
-with <CODE>imagpart = -pi/2</CODE> and <CODE>realpart &#60;= 0</CODE> and the numbers
-with <CODE>imagpart = pi/2</CODE> and <CODE>realpart &#62;= 0</CODE>.
-</DL>
-
-
-
-<H3><A NAME="SEC32" HREF="cln.html#TOC32">4.8.4 Euler gamma</A></H3>
-<P>
-<A NAME="IDX129"></A>
-
-
-<P>
-Euler's constant C = 0.577... is returned by the following functions:
-
-
-<DL COMPACT>
-
-<DT><CODE>cl_F eulerconst (cl_float_format_t f)</CODE>
-<DD>
-<A NAME="IDX130"></A>
-Returns Euler's constant as a float of format <CODE>f</CODE>.
-
-<DT><CODE>cl_F eulerconst (const cl_F&#38; y)</CODE>
-<DD>
-Returns Euler's constant in the float format of <CODE>y</CODE>.
-
-<DT><CODE>cl_F eulerconst (void)</CODE>
-<DD>
-Returns Euler's constant as a float of format <CODE>default_float_format</CODE>.
-</DL>
-
-<P>
-Catalan's constant G = 0.915... is returned by the following functions:
-<A NAME="IDX131"></A>
-
-
-<DL COMPACT>
-
-<DT><CODE>cl_F catalanconst (cl_float_format_t f)</CODE>
-<DD>
-<A NAME="IDX132"></A>
-Returns Catalan's constant as a float of format <CODE>f</CODE>.
-
-<DT><CODE>cl_F catalanconst (const cl_F&#38; y)</CODE>
-<DD>
-Returns Catalan's constant in the float format of <CODE>y</CODE>.
-
-<DT><CODE>cl_F catalanconst (void)</CODE>
-<DD>
-Returns Catalan's constant as a float of format <CODE>default_float_format</CODE>.
-</DL>
-
-
-
-<H3><A NAME="SEC33" HREF="cln.html#TOC33">4.8.5 Riemann zeta</A></H3>
-<P>
-<A NAME="IDX133"></A>
-
-
-<P>
-Riemann's zeta function at an integral point <CODE>s&#62;1</CODE> is returned by the
-following functions:
-
-
-<DL COMPACT>
-
-<DT><CODE>cl_F zeta (int s, cl_float_format_t f)</CODE>
-<DD>
-<A NAME="IDX134"></A>
-Returns Riemann's zeta function at <CODE>s</CODE> as a float of format <CODE>f</CODE>.
-
-<DT><CODE>cl_F zeta (int s, const cl_F&#38; y)</CODE>
-<DD>
-Returns Riemann's zeta function at <CODE>s</CODE> in the float format of <CODE>y</CODE>.
-
-<DT><CODE>cl_F zeta (int s)</CODE>
-<DD>
-Returns Riemann's zeta function at <CODE>s</CODE> as a float of format
-<CODE>default_float_format</CODE>.
-</DL>
-
-
-
-<H2><A NAME="SEC34" HREF="cln.html#TOC34">4.9 Functions on integers</A></H2>
-
-
-
-<H3><A NAME="SEC35" HREF="cln.html#TOC35">4.9.1 Logical functions</A></H3>
-
-<P>
-Integers, when viewed as in two's complement notation, can be thought as
-infinite bit strings where the bits' values eventually are constant.
-For example,
-
-<PRE>
-    17 = ......00010001
-    -6 = ......11111010
-</PRE>
-
-<P>
-The logical operations view integers as such bit strings and operate
-on each of the bit positions in parallel.
-
-
-<DL COMPACT>
-
-<DT><CODE>cl_I lognot (const cl_I&#38; x)</CODE>
-<DD>
-<A NAME="IDX135"></A>
-<DT><CODE>cl_I operator ~ (const cl_I&#38; x)</CODE>
-<DD>
-<A NAME="IDX136"></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="IDX137"></A>
-<DT><CODE>cl_I operator &#38; (const cl_I&#38; x, const cl_I&#38; y)</CODE>
-<DD>
-<A NAME="IDX138"></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="IDX139"></A>
-<DT><CODE>cl_I operator | (const cl_I&#38; x, const cl_I&#38; y)</CODE>
-<DD>
-<A NAME="IDX140"></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="IDX141"></A>
-<DT><CODE>cl_I operator ^ (const cl_I&#38; x, const cl_I&#38; y)</CODE>
-<DD>
-<A NAME="IDX142"></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="IDX143"></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="IDX144"></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="IDX145"></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="IDX146"></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="IDX147"></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="IDX148"></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="IDX149"></A>
-Logical or, complementing the second argument, like <CODE>x | ~y</CODE> in C.
-</DL>
-
-<P>
-These operations are all available though the function
-<DL COMPACT>
-
-<DT><CODE>cl_I boole (cl_boole op, const cl_I&#38; x, const cl_I&#38; y)</CODE>
-<DD>
-<A NAME="IDX150"></A>
-</DL>
-<P>
-where <CODE>op</CODE> must have one of the 16 values (each one stands for a function
-which combines two bits into one bit): <CODE>boole_clr</CODE>, <CODE>boole_set</CODE>,
-<CODE>boole_1</CODE>, <CODE>boole_2</CODE>, <CODE>boole_c1</CODE>, <CODE>boole_c2</CODE>,
-<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="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>
-<A NAME="IDX158"></A>
-<A NAME="IDX159"></A>
-<A NAME="IDX160"></A>
-<A NAME="IDX161"></A>
-<A NAME="IDX162"></A>
-<A NAME="IDX163"></A>
-<A NAME="IDX164"></A>
-<A NAME="IDX165"></A>
-
-
-<P>
-Other functions that view integers as bit strings:
-
-
-<DL COMPACT>
-
-<DT><CODE>cl_boolean logtest (const cl_I&#38; x, const cl_I&#38; y)</CODE>
-<DD>
-<A NAME="IDX166"></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="IDX167"></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="IDX168"></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>
-
-<P>
-The following functions operate on intervals of bits in integers. 
-The type
-
-<PRE>
-struct cl_byte { uintL size; uintL position; };
-</PRE>
-
-<P>
-<A NAME="IDX169"></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>.
-
-
-<DL COMPACT>
-
-<DT><CODE>cl_I ldb (const cl_I&#38; n, const cl_byte&#38; b)</CODE>
-<DD>
-<A NAME="IDX170"></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="IDX171"></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="IDX172"></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.
-</DL>
-
-<P>
-The functions <CODE>ldb</CODE> and <CODE>dpb</CODE> implicitly shift. The following
-functions are their counterparts without shifting:
-
-
-<DL COMPACT>
-
-<DT><CODE>cl_I mask_field (const cl_I&#38; n, const cl_byte&#38; b)</CODE>
-<DD>
-<A NAME="IDX173"></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="IDX174"></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>
-
-<P>
-The following relations hold:
-
-
-
-<UL>
-<LI>
-
-<CODE>ldb (n, b) = mask_field(n, b) &#62;&#62; b.position</CODE>,
-<LI>
-
-<CODE>dpb (newbyte, n, b) = deposit_field (newbyte &#60;&#60; b.position, n, b)</CODE>,
-<LI>
-
-<CODE>deposit_field(newbyte,n,b) = n ^ mask_field(n,b) ^ mask_field(new_byte,b)</CODE>.
-</UL>
-
-<P>
-The following operations on integers as bit strings are efficient shortcuts
-for common arithmetic operations:
-
-
-<DL COMPACT>
-
-<DT><CODE>cl_boolean oddp (const cl_I&#38; x)</CODE>
-<DD>
-<A NAME="IDX175"></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="IDX176"></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="IDX177"></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="IDX178"></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="IDX179"></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="IDX180"></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
-2^(n-1) &#60;= x &#60; 2^n.
-
-<DT><CODE>uintL ord2 (const cl_I&#38; x)</CODE>
-<DD>
-<A NAME="IDX181"></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="IDX182"></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>.)
-</DL>
-
-
-
-<H3><A NAME="SEC36" HREF="cln.html#TOC36">4.9.2 Number theoretic functions</A></H3>
-
-<DL COMPACT>
-
-<DT><CODE>uint32 gcd (uint32 a, uint32 b)</CODE>
-<DD>
-<A NAME="IDX183"></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>,
-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="IDX184"></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>:
-<CODE>u</CODE> and <CODE>v</CODE> with <CODE>u*a+v*b = g</CODE>, <CODE>g</CODE> &#62;= 0.
-<CODE>u</CODE> and <CODE>v</CODE> will be normalized to be of smallest possible absolute
-value, in the following sense: If <CODE>a</CODE> and <CODE>b</CODE> are non-zero, and
-<CODE>abs(a) != abs(b)</CODE>, <CODE>u</CODE> and <CODE>v</CODE> will satisfy the inequalities
-<CODE>abs(u) &#60;= abs(b)/(2*g)</CODE>, <CODE>abs(v) &#60;= abs(a)/(2*g)</CODE>.
-
-<DT><CODE>cl_I lcm (const cl_I&#38; a, const cl_I&#38; b)</CODE>
-<DD>
-<A NAME="IDX185"></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="IDX186"></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
-rational number, this function returns true and sets *l = log(a,b), else
-it returns false.
-</DL>
-
-
-
-<H3><A NAME="SEC37" HREF="cln.html#TOC37">4.9.3 Combinatorial functions</A></H3>
-
-<DL COMPACT>
-
-<DT><CODE>cl_I factorial (uintL n)</CODE>
-<DD>
-<A NAME="IDX187"></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="IDX188"></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="IDX189"></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>!
-for 0 &#60;= k &#60;= n, 0 else.
-</DL>
-
-
-
-<H2><A NAME="SEC38" HREF="cln.html#TOC38">4.10 Functions on floating-point numbers</A></H2>
-
-<P>
-Recall that a floating-point number consists of a sign <CODE>s</CODE>, an
-exponent <CODE>e</CODE> and a mantissa <CODE>m</CODE>. The value of the number is
-<CODE>(-1)^s * 2^e * m</CODE>.
-
-
-<P>
-Each of the classes
-<CODE>cl_F</CODE>, <CODE>cl_SF</CODE>, <CODE>cl_FF</CODE>, <CODE>cl_DF</CODE>, <CODE>cl_LF</CODE>
-defines the following operations.
-
-
-<DL COMPACT>
-
-<DT><CODE><VAR>type</VAR> scale_float (const <VAR>type</VAR>&#38; x, sintL delta)</CODE>
-<DD>
-<A NAME="IDX190"></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
-because it copies <CODE>x</CODE> and modifies the exponent.
-</DL>
-
-<P>
-The following functions provide an abstract interface to the underlying
-representation of floating-point numbers.
-
-
-<DL COMPACT>
-
-<DT><CODE>sintL float_exponent (const <VAR>type</VAR>&#38; x)</CODE>
-<DD>
-<A NAME="IDX191"></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="IDX192"></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="IDX193"></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="IDX194"></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="IDX195"></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
-0 if <CODE>x</CODE> = 0.
-</DL>
-
-<P>
-The complete internal representation of a float is encoded in the type
-<A NAME="IDX196"></A>
-<A NAME="IDX197"></A>
-<A NAME="IDX198"></A>
-<A NAME="IDX199"></A>
-<A NAME="IDX200"></A>
-<CODE>decoded_float</CODE> (or <CODE>decoded_sfloat</CODE>, <CODE>decoded_ffloat</CODE>,
-<CODE>decoded_dfloat</CODE>, <CODE>decoded_lfloat</CODE>, respectively), defined by
-
-<PRE>
-struct decoded_<VAR>type</VAR>float {
-        <VAR>type</VAR> mantissa; cl_I exponent; <VAR>type</VAR> sign;
-};
-</PRE>
-
-<P>
-and returned by the function
-
-
-<DL COMPACT>
-
-<DT><CODE>decoded_<VAR>type</VAR>float decode_float (const <VAR>type</VAR>&#38; x)</CODE>
-<DD>
-<A NAME="IDX201"></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.
-<CODE>e</CODE> is the same as returned by the function <CODE>float_exponent</CODE>.
-</DL>
-
-<P>
-A complete decoding in terms of integers is provided as type
-<A NAME="IDX202"></A>
-
-<PRE>
-struct cl_idecoded_float {
-        cl_I mantissa; cl_I exponent; cl_I sign;
-};
-</PRE>
-
-<P>
-by the following function:
-
-
-<DL COMPACT>
-
-<DT><CODE>cl_idecoded_float integer_decode_float (const <VAR>type</VAR>&#38; x)</CODE>
-<DD>
-<A NAME="IDX203"></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.
-WARNING: The exponent <CODE>e</CODE> is not the same as the one returned by
-the functions <CODE>decode_float</CODE> and <CODE>float_exponent</CODE>.
-</DL>
-
-<P>
-Some other function, implemented only for class <CODE>cl_F</CODE>:
-
-
-<DL COMPACT>
-
-<DT><CODE>cl_F float_sign (const cl_F&#38; x, const cl_F&#38; y)</CODE>
-<DD>
-<A NAME="IDX204"></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>.
-</DL>
-
-
-
-<H2><A NAME="SEC39" HREF="cln.html#TOC39">4.11 Conversion functions</A></H2>
-<P>
-<A NAME="IDX205"></A>
-
-
-
-
-<H3><A NAME="SEC40" HREF="cln.html#TOC40">4.11.1 Conversion to floating-point numbers</A></H3>
-
-<P>
-The type <CODE>cl_float_format_t</CODE> describes a floating-point format.
-<A NAME="IDX206"></A>
-
-
-<DL COMPACT>
-
-<DT><CODE>cl_float_format_t cl_float_format (uintL n)</CODE>
-<DD>
-<A NAME="IDX207"></A>
-Returns the smallest float format which guarantees at least <CODE>n</CODE>
-decimal digits in the mantissa (after the decimal point).
-
-<DT><CODE>cl_float_format_t cl_float_format (const cl_F&#38; x)</CODE>
-<DD>
-Returns the floating point format of <CODE>x</CODE>.
-
-<DT><CODE>cl_float_format_t default_float_format</CODE>
-<DD>
-<A NAME="IDX208"></A>
-Global variable: the default float format used when converting rational numbers
-to floats.
-</DL>
-
-<P>
-To convert a real number to a float, each of the types
-<CODE>cl_R</CODE>, <CODE>cl_F</CODE>, <CODE>cl_I</CODE>, <CODE>cl_RA</CODE>,
-<CODE>int</CODE>, <CODE>unsigned int</CODE>, <CODE>float</CODE>, <CODE>double</CODE>
-defines the following operations:
-
-
-<DL COMPACT>
-
-<DT><CODE>cl_F cl_float (const <VAR>type</VAR>&#38;x, cl_float_format_t f)</CODE>
-<DD>
-<A NAME="IDX209"></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>
-Returns <CODE>x</CODE> in the float format of <CODE>y</CODE>.
-<DT><CODE>cl_F cl_float (const <VAR>type</VAR>&#38;x)</CODE>
-<DD>
-Returns <CODE>x</CODE> as a float of format <CODE>default_float_format</CODE> if
-it is an exact number, or <CODE>x</CODE> itself if it is already a float.
-</DL>
-
-<P>
-Of course, converting a number to a float can lose precision.
-
-
-<P>
-Every floating-point format has some characteristic numbers:
-
-
-<DL COMPACT>
-
-<DT><CODE>cl_F most_positive_float (cl_float_format_t f)</CODE>
-<DD>
-<A NAME="IDX210"></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="IDX211"></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="IDX212"></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="IDX213"></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="IDX214"></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="IDX215"></A>
-Returns the smallest floating point number e &#62; 0 such that <CODE>1-e != 1</CODE>.
-</DL>
-
-
-
-<H3><A NAME="SEC41" HREF="cln.html#TOC41">4.11.2 Conversion to rational numbers</A></H3>
-
-<P>
-Each of the classes <CODE>cl_R</CODE>, <CODE>cl_RA</CODE>, <CODE>cl_F</CODE>
-defines the following operation:
-
-
-<DL COMPACT>
-
-<DT><CODE>cl_RA rational (const <VAR>type</VAR>&#38; x)</CODE>
-<DD>
-<A NAME="IDX216"></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.
-</DL>
-
-<P>
-In order to convert back, say, <CODE>(cl_F)(cl_R)"1/3"</CODE> to <CODE>1/3</CODE>, there is
-the function
-
-
-<DL COMPACT>
-
-<DT><CODE>cl_RA rationalize (const cl_R&#38; x)</CODE>
-<DD>
-<A NAME="IDX217"></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)
-which lies in this interval.
-If <CODE>x</CODE> is already an exact number, this function returns <CODE>x</CODE>.
-</DL>
-
-<P>
-If <CODE>x</CODE> is any float, one has
-
-
-
-<UL>
-<LI>
-
-<CODE>cl_float(rational(x),x) = x</CODE>
-<LI>
-
-<CODE>cl_float(rationalize(x),x) = x</CODE>
-</UL>
-
-
-
-<H2><A NAME="SEC42" HREF="cln.html#TOC42">4.12 Random number generators</A></H2>
-
-<P>
-A random generator is a machine which produces (pseudo-)random numbers.
-The include file <CODE>&#60;cln/random.h&#62;</CODE> defines a class <CODE>random_state</CODE>
-which contains the state of a random generator. If you make a copy
-of the random number generator, the original one and the copy will produce
-the same sequence of random numbers.
-
-
-<P>
-The following functions return (pseudo-)random numbers in different formats.
-Calling one of these modifies the state of the random number generator in
-a complicated but deterministic way.
-
-
-<P>
-The global variable
-<A NAME="IDX218"></A>
-<A NAME="IDX219"></A>
-
-<PRE>
-random_state default_random_state
-</PRE>
-
-<P>
-contains a default random number generator. It is used when the functions
-below are called without <CODE>random_state</CODE> argument.
-
-
-<DL COMPACT>
-
-<DT><CODE>uint32 random32 (random_state&#38; randomstate)</CODE>
-<DD>
-<DT><CODE>uint32 random32 ()</CODE>
-<DD>
-<A NAME="IDX220"></A>
-Returns a random unsigned 32-bit number. All bits are equally random.
-
-<DT><CODE>cl_I random_I (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="IDX221"></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>.
-
-<DT><CODE>cl_F random_F (random_state&#38; randomstate, const cl_F&#38; n)</CODE>
-<DD>
-<DT><CODE>cl_F random_F (const cl_F&#38; n)</CODE>
-<DD>
-<A NAME="IDX222"></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>.
-
-<DT><CODE>cl_R random_R (random_state&#38; randomstate, const cl_R&#38; n)</CODE>
-<DD>
-<DT><CODE>cl_R random_R (const cl_R&#38; n)</CODE>
-<DD>
-<A NAME="IDX223"></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>
-
-
-
-<H2><A NAME="SEC43" HREF="cln.html#TOC43">4.13 Obfuscating operators</A></H2>
-<P>
-<A NAME="IDX224"></A>
-
-
-<P>
-The modifying C/C++ operators <CODE>+=</CODE>, <CODE>-=</CODE>, <CODE>*=</CODE>, <CODE>/=</CODE>,
-<CODE>&#38;=</CODE>, <CODE>|=</CODE>, <CODE>^=</CODE>, <CODE>&#60;&#60;=</CODE>, <CODE>&#62;&#62;=</CODE>
-are not available by default because their
-use tends to make programs unreadable. It is trivial to get away without
-them. However, if you feel that you absolutely need these operators
-to get happy, then add
-
-<PRE>
-#define WANT_OBFUSCATING_OPERATORS
-</PRE>
-
-<P>
-<A NAME="IDX225"></A>
-to the beginning of your source files, before the inclusion of any CLN
-include files. This flag will enable the following operators:
-
-
-<P>
-For the classes <CODE>cl_N</CODE>, <CODE>cl_R</CODE>, <CODE>cl_RA</CODE>,
-<CODE>cl_F</CODE>, <CODE>cl_SF</CODE>, <CODE>cl_FF</CODE>, <CODE>cl_DF</CODE>, <CODE>cl_LF</CODE>:
-
-
-<DL COMPACT>
-
-<DT><CODE><VAR>type</VAR>&#38; operator += (<VAR>type</VAR>&#38;, const <VAR>type</VAR>&#38;)</CODE>
-<DD>
-<A NAME="IDX226"></A>
-<DT><CODE><VAR>type</VAR>&#38; operator -= (<VAR>type</VAR>&#38;, const <VAR>type</VAR>&#38;)</CODE>
-<DD>
-<A NAME="IDX227"></A>
-<DT><CODE><VAR>type</VAR>&#38; operator *= (<VAR>type</VAR>&#38;, const <VAR>type</VAR>&#38;)</CODE>
-<DD>
-<A NAME="IDX228"></A>
-<DT><CODE><VAR>type</VAR>&#38; operator /= (<VAR>type</VAR>&#38;, const <VAR>type</VAR>&#38;)</CODE>
-<DD>
-<A NAME="IDX229"></A>
-</DL>
-
-<P>
-For the class <CODE>cl_I</CODE>:
-
-
-<DL COMPACT>
-
-<DT><CODE><VAR>type</VAR>&#38; operator += (<VAR>type</VAR>&#38;, const <VAR>type</VAR>&#38;)</CODE>
-<DD>
-<DT><CODE><VAR>type</VAR>&#38; operator -= (<VAR>type</VAR>&#38;, const <VAR>type</VAR>&#38;)</CODE>
-<DD>
-<DT><CODE><VAR>type</VAR>&#38; operator *= (<VAR>type</VAR>&#38;, const <VAR>type</VAR>&#38;)</CODE>
-<DD>
-<DT><CODE><VAR>type</VAR>&#38; operator &#38;= (<VAR>type</VAR>&#38;, const <VAR>type</VAR>&#38;)</CODE>
-<DD>
-<A NAME="IDX230"></A>
-<DT><CODE><VAR>type</VAR>&#38; operator |= (<VAR>type</VAR>&#38;, const <VAR>type</VAR>&#38;)</CODE>
-<DD>
-<A NAME="IDX231"></A>
-<DT><CODE><VAR>type</VAR>&#38; operator ^= (<VAR>type</VAR>&#38;, const <VAR>type</VAR>&#38;)</CODE>
-<DD>
-<A NAME="IDX232"></A>
-<DT><CODE><VAR>type</VAR>&#38; operator &#60;&#60;= (<VAR>type</VAR>&#38;, const <VAR>type</VAR>&#38;)</CODE>
-<DD>
-<A NAME="IDX233"></A>
-<DT><CODE><VAR>type</VAR>&#38; operator &#62;&#62;= (<VAR>type</VAR>&#38;, const <VAR>type</VAR>&#38;)</CODE>
-<DD>
-<A NAME="IDX234"></A>
-</DL>
-
-<P>
-For the classes <CODE>cl_N</CODE>, <CODE>cl_R</CODE>, <CODE>cl_RA</CODE>, <CODE>cl_I</CODE>,
-<CODE>cl_F</CODE>, <CODE>cl_SF</CODE>, <CODE>cl_FF</CODE>, <CODE>cl_DF</CODE>, <CODE>cl_LF</CODE>:
-
-
-<DL COMPACT>
-
-<DT><CODE><VAR>type</VAR>&#38; operator ++ (<VAR>type</VAR>&#38; x)</CODE>
-<DD>
-<A NAME="IDX235"></A>
-The prefix operator <CODE>++x</CODE>.
-
-<DT><CODE>void operator ++ (<VAR>type</VAR>&#38; x, int)</CODE>
-<DD>
-The postfix operator <CODE>x++</CODE>.
-
-<DT><CODE><VAR>type</VAR>&#38; operator -- (<VAR>type</VAR>&#38; x)</CODE>
-<DD>
-<A NAME="IDX236"></A>
-The prefix operator <CODE>--x</CODE>.
-
-<DT><CODE>void operator -- (<VAR>type</VAR>&#38; x, int)</CODE>
-<DD>
-The postfix operator <CODE>x--</CODE>.
-</DL>
-
-<P>
-Note that by using these obfuscating operators, you wouldn't gain efficiency:
-In CLN <SAMP>`x += y;'</SAMP> is exactly the same as  <SAMP>`x = x+y;'</SAMP>, not more
-efficient.
-
-
-
-
-<H1><A NAME="SEC44" HREF="cln.html#TOC44">5. Input/Output</A></H1>
-<P>
-<A NAME="IDX237"></A>
-
-
-
-
-<H2><A NAME="SEC45" HREF="cln.html#TOC45">5.1 Internal and printed representation</A></H2>
-<P>
-<A NAME="IDX238"></A>
-
-
-<P>
-All computations deal with the internal representations of the numbers.
-
-
-<P>
-Every number has an external representation as a sequence of ASCII characters.
-Several external representations may denote the same number, for example,
-"20.0" and "20.000".
-
-
-<P>
-Converting an internal to an external representation is called "printing",
-<A NAME="IDX239"></A>
-converting an external to an internal representation is called "reading".
-<A NAME="IDX240"></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". 
-
-
-<P>
-Different types of numbers have different external representations (case
-is insignificant):
-
-
-<DL COMPACT>
-
-<DT>Integers
-<DD>
-External representation: <VAR>sign</VAR>{<VAR>digit</VAR>}+. The reader also accepts the
-Common Lisp syntaxes <VAR>sign</VAR>{<VAR>digit</VAR>}+<CODE>.</CODE> with a trailing dot
-for decimal integers
-and the <CODE>#<VAR>n</VAR>R</CODE>, <CODE>#b</CODE>, <CODE>#o</CODE>, <CODE>#x</CODE> prefixes.
-
-<DT>Rational numbers
-<DD>
-External representation: <VAR>sign</VAR>{<VAR>digit</VAR>}+<CODE>/</CODE>{<VAR>digit</VAR>}+.
-The <CODE>#<VAR>n</VAR>R</CODE>, <CODE>#b</CODE>, <CODE>#o</CODE>, <CODE>#x</CODE> prefixes are allowed
-here as well.
-
-<DT>Floating-point numbers
-<DD>
-External representation: <VAR>sign</VAR>{<VAR>digit</VAR>}*<VAR>exponent</VAR> or
-<VAR>sign</VAR>{<VAR>digit</VAR>}*<CODE>.</CODE>{<VAR>digit</VAR>}*<VAR>exponent</VAR> or
-<VAR>sign</VAR>{<VAR>digit</VAR>}*<CODE>.</CODE>{<VAR>digit</VAR>}+. A precision specifier
-of the form _<VAR>prec</VAR> may be appended. There must be at least
-one digit in the non-exponent part. The exponent has the syntax
-<VAR>expmarker</VAR> <VAR>expsign</VAR> {<VAR>digit</VAR>}+.
-The exponent marker is
-
-
-<UL>
-<LI>
-
-<SAMP>`s'</SAMP> for short-floats,
-<LI>
-
-<SAMP>`f'</SAMP> for single-floats,
-<LI>
-
-<SAMP>`d'</SAMP> for double-floats,
-<LI>
-
-<SAMP>`L'</SAMP> for long-floats,
-</UL>
-
-or <SAMP>`e'</SAMP>, which denotes a default float format. The precision specifying
-suffix has the syntax _<VAR>prec</VAR> where <VAR>prec</VAR> denotes the number of
-valid mantissa digits (in decimal, excluding leading zeroes), cf. also
-function <SAMP>`cl_float_format'</SAMP>.
-
-<DT>Complex numbers
-<DD>
-External representation:
-
-<UL>
-<LI>
-
-In algebraic notation: <CODE><VAR>realpart</VAR>+<VAR>imagpart</VAR>i</CODE>. Of course,
-if <VAR>imagpart</VAR> is negative, its printed representation begins with
-a <SAMP>`-'</SAMP>, and the <SAMP>`+'</SAMP> between <VAR>realpart</VAR> and <VAR>imagpart</VAR>
-may be omitted. Note that this notation cannot be used when the <VAR>imagpart</VAR>
-is rational and the rational number's base is &#62;18, because the <SAMP>`i'</SAMP>
-is then read as a digit.
-<LI>
-
-In Common Lisp notation: <CODE>#C(<VAR>realpart</VAR> <VAR>imagpart</VAR>)</CODE>.
-</UL>
-
-</DL>
-
-
-
-<H2><A NAME="SEC46" HREF="cln.html#TOC46">5.2 Input functions</A></H2>
-
-<P>
-Including <CODE>&#60;cln/io.h&#62;</CODE> defines a type <CODE>cl_istream</CODE>, which is
-the type of the first argument to all input functions. <CODE>cl_istream</CODE>
-is the same as <CODE>std::istream&#38;</CODE>.
-
-
-<P>
-The variable
-
-<UL>
-<LI>
-
-<CODE>cl_istream stdin</CODE>
-</UL>
-
-<P>
-contains the standard input stream.
-
-
-<P>
-These are the simple input functions:
-
-
-<DL COMPACT>
-
-<DT><CODE>int freadchar (cl_istream stream)</CODE>
-<DD>
-Reads a character from <CODE>stream</CODE>. Returns <CODE>cl_EOF</CODE> (not a <SAMP>`char'</SAMP>!)
-if the end of stream was encountered or an error occurred.
-
-<DT><CODE>int funreadchar (cl_istream stream, int c)</CODE>
-<DD>
-Puts back <CODE>c</CODE> onto <CODE>stream</CODE>. <CODE>c</CODE> must be the result of the
-last <CODE>freadchar</CODE> operation on <CODE>stream</CODE>.
-</DL>
-
-<P>
-Each of the classes <CODE>cl_N</CODE>, <CODE>cl_R</CODE>, <CODE>cl_RA</CODE>, <CODE>cl_I</CODE>,
-<CODE>cl_F</CODE>, <CODE>cl_SF</CODE>, <CODE>cl_FF</CODE>, <CODE>cl_DF</CODE>, <CODE>cl_LF</CODE>
-defines, in <CODE>&#60;cln/<VAR>type</VAR>_io.h&#62;</CODE>, the following input function:
-
-
-<DL COMPACT>
-
-<DT><CODE>cl_istream operator&#62;&#62; (cl_istream stream, <VAR>type</VAR>&#38; result)</CODE>
-<DD>
-Reads a number from <CODE>stream</CODE> and stores it in the <CODE>result</CODE>.
-</DL>
-
-<P>
-The most flexible input functions, defined in <CODE>&#60;cln/<VAR>type</VAR>_io.h&#62;</CODE>,
-are the following:
-
-
-<DL COMPACT>
-
-<DT><CODE>cl_N read_complex (cl_istream stream, const cl_read_flags&#38; flags)</CODE>
-<DD>
-<DT><CODE>cl_R read_real (cl_istream stream, const cl_read_flags&#38; flags)</CODE>
-<DD>
-<DT><CODE>cl_F read_float (cl_istream stream, const cl_read_flags&#38; flags)</CODE>
-<DD>
-<DT><CODE>cl_RA read_rational (cl_istream stream, const cl_read_flags&#38; flags)</CODE>
-<DD>
-<DT><CODE>cl_I read_integer (cl_istream stream, const cl_read_flags&#38; flags)</CODE>
-<DD>
-Reads a number from <CODE>stream</CODE>. The <CODE>flags</CODE> are parameters which
-affect the input syntax. Whitespace before the number is silently skipped.
-
-<DT><CODE>cl_N read_complex (const cl_read_flags&#38; flags, const char * string, const char * string_limit, const char * * end_of_parse)</CODE>
-<DD>
-<DT><CODE>cl_R read_real (const cl_read_flags&#38; flags, const char * string, const char * string_limit, const char * * end_of_parse)</CODE>
-<DD>
-<DT><CODE>cl_F read_float (const cl_read_flags&#38; flags, const char * string, const char * string_limit, const char * * end_of_parse)</CODE>
-<DD>
-<DT><CODE>cl_RA read_rational (const cl_read_flags&#38; flags, const char * string, const char * string_limit, const char * * end_of_parse)</CODE>
-<DD>
-<DT><CODE>cl_I read_integer (const cl_read_flags&#38; flags, const char * string, const char * string_limit, const char * * end_of_parse)</CODE>
-<DD>
-Reads a number from a string in memory. The <CODE>flags</CODE> are parameters which
-affect the input syntax. The string starts at <CODE>string</CODE> and ends at
-<CODE>string_limit</CODE> (exclusive limit). <CODE>string_limit</CODE> may also be
-<CODE>NULL</CODE>, denoting the entire string, i.e. equivalent to
-<CODE>string_limit = string + strlen(string)</CODE>. If <CODE>end_of_parse</CODE> is
-<CODE>NULL</CODE>, the string in memory must contain exactly one number and nothing
-more, else a fatal error will be signalled. If <CODE>end_of_parse</CODE>
-is not <CODE>NULL</CODE>, <CODE>*end_of_parse</CODE> will be assigned a pointer past
-the last parsed character (i.e. <CODE>string_limit</CODE> if nothing came after
-the number). Whitespace is not allowed.
-</DL>
-
-<P>
-The structure <CODE>cl_read_flags</CODE> contains the following fields:
-
-
-<DL COMPACT>
-
-<DT><CODE>cl_read_syntax_t syntax</CODE>
-<DD>
-The possible results of the read operation. Possible values are
-<CODE>syntax_number</CODE>, <CODE>syntax_real</CODE>, <CODE>syntax_rational</CODE>,
-<CODE>syntax_integer</CODE>, <CODE>syntax_float</CODE>, <CODE>syntax_sfloat</CODE>,
-<CODE>syntax_ffloat</CODE>, <CODE>syntax_dfloat</CODE>, <CODE>syntax_lfloat</CODE>.
-
-<DT><CODE>cl_read_lsyntax_t lsyntax</CODE>
-<DD>
-Specifies the language-dependent syntax variant for the read operation.
-Possible values are
-
-<DL COMPACT>
-
-<DT><CODE>lsyntax_standard</CODE>
-<DD>
-accept standard algebraic notation only, no complex numbers,
-<DT><CODE>lsyntax_algebraic</CODE>
-<DD>
-accept the algebraic notation <CODE><VAR>x</VAR>+<VAR>y</VAR>i</CODE> for complex numbers,
-<DT><CODE>lsyntax_commonlisp</CODE>
-<DD>
-accept the <CODE>#b</CODE>, <CODE>#o</CODE>, <CODE>#x</CODE> syntaxes for binary, octal,
-hexadecimal numbers,
-<CODE>#<VAR>base</VAR>R</CODE> for rational numbers in a given base,
-<CODE>#c(<VAR>realpart</VAR> <VAR>imagpart</VAR>)</CODE> for complex numbers,
-<DT><CODE>lsyntax_all</CODE>
-<DD>
-accept all of these extensions.
-</DL>
-
-<DT><CODE>unsigned int rational_base</CODE>
-<DD>
-The base in which rational numbers are read.
-
-<DT><CODE>cl_float_format_t float_flags.default_float_format</CODE>
-<DD>
-The float format used when reading floats with exponent marker <SAMP>`e'</SAMP>.
-
-<DT><CODE>cl_float_format_t float_flags.default_lfloat_format</CODE>
-<DD>
-The float format used when reading floats with exponent marker <SAMP>`l'</SAMP>.
-
-<DT><CODE>cl_boolean float_flags.mantissa_dependent_float_format</CODE>
-<DD>
-When this flag is true, floats specified with more digits than corresponding
-to the exponent marker they contain, but without <VAR>_nnn</VAR> suffix, will get a
-precision corresponding to their number of significant digits.
-</DL>
-
-
-
-<H2><A NAME="SEC47" HREF="cln.html#TOC47">5.3 Output functions</A></H2>
-
-<P>
-Including <CODE>&#60;cln/io.h&#62;</CODE> defines a type <CODE>cl_ostream</CODE>, which is
-the type of the first argument to all output functions. <CODE>cl_ostream</CODE>
-is the same as <CODE>std::ostream&#38;</CODE>.
-
-
-<P>
-The variable
-
-<UL>
-<LI>
-
-<CODE>cl_ostream stdout</CODE>
-</UL>
-
-<P>
-contains the standard output stream.
-
-
-<P>
-The variable
-
-<UL>
-<LI>
-
-<CODE>cl_ostream stderr</CODE>
-</UL>
-
-<P>
-contains the standard error output stream.
-
-
-<P>
-These are the simple output functions:
-
-
-<DL COMPACT>
-
-<DT><CODE>void fprintchar (cl_ostream stream, char c)</CODE>
-<DD>
-Prints the character <CODE>x</CODE> literally on the <CODE>stream</CODE>.
-
-<DT><CODE>void fprint (cl_ostream stream, const char * string)</CODE>
-<DD>
-Prints the <CODE>string</CODE> literally on the <CODE>stream</CODE>.
-
-<DT><CODE>void fprintdecimal (cl_ostream stream, int x)</CODE>
-<DD>
-<DT><CODE>void fprintdecimal (cl_ostream stream, const cl_I&#38; x)</CODE>
-<DD>
-Prints the integer <CODE>x</CODE> in decimal on the <CODE>stream</CODE>.
-
-<DT><CODE>void fprintbinary (cl_ostream stream, const cl_I&#38; x)</CODE>
-<DD>
-Prints the integer <CODE>x</CODE> in binary (base 2, without prefix)
-on the <CODE>stream</CODE>.
-
-<DT><CODE>void fprintoctal (cl_ostream stream, const cl_I&#38; x)</CODE>
-<DD>
-Prints the integer <CODE>x</CODE> in octal (base 8, without prefix)
-on the <CODE>stream</CODE>.
-
-<DT><CODE>void fprinthexadecimal (cl_ostream stream, const cl_I&#38; x)</CODE>
-<DD>
-Prints the integer <CODE>x</CODE> in hexadecimal (base 16, without prefix)
-on the <CODE>stream</CODE>.
-</DL>
-
-<P>
-Each of the classes <CODE>cl_N</CODE>, <CODE>cl_R</CODE>, <CODE>cl_RA</CODE>, <CODE>cl_I</CODE>,
-<CODE>cl_F</CODE>, <CODE>cl_SF</CODE>, <CODE>cl_FF</CODE>, <CODE>cl_DF</CODE>, <CODE>cl_LF</CODE>
-defines, in <CODE>&#60;cln/<VAR>type</VAR>_io.h&#62;</CODE>, the following output functions:
-
-
-<DL COMPACT>
-
-<DT><CODE>void fprint (cl_ostream stream, const <VAR>type</VAR>&#38; x)</CODE>
-<DD>
-<DT><CODE>cl_ostream operator&#60;&#60; (cl_ostream stream, const <VAR>type</VAR>&#38; x)</CODE>
-<DD>
-Prints the number <CODE>x</CODE> on the <CODE>stream</CODE>. The output may depend
-on the global printer settings in the variable <CODE>default_print_flags</CODE>.
-The <CODE>ostream</CODE> flags and settings (flags, width and locale) are
-ignored.
-</DL>
-
-<P>
-The most flexible output function, defined in <CODE>&#60;cln/<VAR>type</VAR>_io.h&#62;</CODE>,
-are the following:
-
-<PRE>
-void print_complex  (cl_ostream stream, const cl_print_flags&#38; flags,
-                     const cl_N&#38; z);
-void print_real     (cl_ostream stream, const cl_print_flags&#38; flags,
-                     const cl_R&#38; z);
-void print_float    (cl_ostream stream, const cl_print_flags&#38; flags,
-                     const cl_F&#38; z);
-void print_rational (cl_ostream stream, const cl_print_flags&#38; flags,
-                     const cl_RA&#38; z);
-void print_integer  (cl_ostream stream, const cl_print_flags&#38; flags,
-                     const cl_I&#38; z);
-</PRE>
-
-<P>
-Prints the number <CODE>x</CODE> on the <CODE>stream</CODE>. The <CODE>flags</CODE> are
-parameters which affect the output.
-
-
-<P>
-The structure type <CODE>cl_print_flags</CODE> contains the following fields:
-
-
-<DL COMPACT>
-
-<DT><CODE>unsigned int rational_base</CODE>
-<DD>
-The base in which rational numbers are printed. Default is <CODE>10</CODE>.
-
-<DT><CODE>cl_boolean rational_readably</CODE>
-<DD>
-If this flag is true, rational numbers are printed with radix specifiers in
-Common Lisp syntax (<CODE>#<VAR>n</VAR>R</CODE> or <CODE>#b</CODE> or <CODE>#o</CODE> or <CODE>#x</CODE>
-prefixes, trailing dot). Default is false.
-
-<DT><CODE>cl_boolean float_readably</CODE>
-<DD>
-If this flag is true, type specific exponent markers have precedence over 'E'.
-Default is false.
-
-<DT><CODE>cl_float_format_t default_float_format</CODE>
-<DD>
-Floating point numbers of this format will be printed using the 'E' exponent
-marker. Default is <CODE>cl_float_format_ffloat</CODE>.
-
-<DT><CODE>cl_boolean complex_readably</CODE>
-<DD>
-If this flag is true, complex numbers will be printed using the Common Lisp
-syntax <CODE>#C(<VAR>realpart</VAR> <VAR>imagpart</VAR>)</CODE>. Default is false.
-
-<DT><CODE>cl_string univpoly_varname</CODE>
-<DD>
-Univariate polynomials with no explicit indeterminate name will be printed
-using this variable name. Default is <CODE>"x"</CODE>.
-</DL>
-
-<P>
-The global variable <CODE>default_print_flags</CODE> contains the default values,
-used by the function <CODE>fprint</CODE>.
-
-
-
-
-<H1><A NAME="SEC48" HREF="cln.html#TOC48">6. Rings</A></H1>
-
-<P>
-CLN has a class of abstract rings.
-
-
-
-<PRE>
-                         Ring
-                       cl_ring
-                     &#60;cln/ring.h&#62;
-</PRE>
-
-<P>
-Rings can be compared for equality:
-
-
-<DL COMPACT>
-
-<DT><CODE>bool operator== (const cl_ring&#38;, const cl_ring&#38;)</CODE>
-<DD>
-<DT><CODE>bool operator!= (const cl_ring&#38;, const cl_ring&#38;)</CODE>
-<DD>
-These compare two rings for equality.
-</DL>
-
-<P>
-Given a ring <CODE>R</CODE>, the following members can be used.
-
-
-<DL COMPACT>
-
-<DT><CODE>void R-&#62;fprint (cl_ostream stream, const cl_ring_element&#38; x)</CODE>
-<DD>
-<A NAME="IDX241"></A>
-<DT><CODE>cl_boolean R-&#62;equal (const cl_ring_element&#38; x, const cl_ring_element&#38; y)</CODE>
-<DD>
-<A NAME="IDX242"></A>
-<DT><CODE>cl_ring_element R-&#62;zero ()</CODE>
-<DD>
-<A NAME="IDX243"></A>
-<DT><CODE>cl_boolean R-&#62;zerop (const cl_ring_element&#38; x)</CODE>
-<DD>
-<A NAME="IDX244"></A>
-<DT><CODE>cl_ring_element R-&#62;plus (const cl_ring_element&#38; x, const cl_ring_element&#38; y)</CODE>
-<DD>
-<A NAME="IDX245"></A>
-<DT><CODE>cl_ring_element R-&#62;minus (const cl_ring_element&#38; x, const cl_ring_element&#38; y)</CODE>
-<DD>
-<A NAME="IDX246"></A>
-<DT><CODE>cl_ring_element R-&#62;uminus (const cl_ring_element&#38; x)</CODE>
-<DD>
-<A NAME="IDX247"></A>
-<DT><CODE>cl_ring_element R-&#62;one ()</CODE>
-<DD>
-<A NAME="IDX248"></A>
-<DT><CODE>cl_ring_element R-&#62;canonhom (const cl_I&#38; x)</CODE>
-<DD>
-<A NAME="IDX249"></A>
-<DT><CODE>cl_ring_element R-&#62;mul (const cl_ring_element&#38; x, const cl_ring_element&#38; y)</CODE>
-<DD>
-<A NAME="IDX250"></A>
-<DT><CODE>cl_ring_element R-&#62;square (const cl_ring_element&#38; x)</CODE>
-<DD>
-<A NAME="IDX251"></A>
-<DT><CODE>cl_ring_element R-&#62;expt_pos (const cl_ring_element&#38; x, const cl_I&#38; y)</CODE>
-<DD>
-<A NAME="IDX252"></A>
-</DL>
-
-<P>
-The following rings are built-in.
-
-
-<DL COMPACT>
-
-<DT><CODE>cl_null_ring cl_0_ring</CODE>
-<DD>
-The null ring, containing only zero.
-
-<DT><CODE>cl_complex_ring cl_C_ring</CODE>
-<DD>
-The ring of complex numbers. This corresponds to the type <CODE>cl_N</CODE>.
-
-<DT><CODE>cl_real_ring cl_R_ring</CODE>
-<DD>
-The ring of real numbers. This corresponds to the type <CODE>cl_R</CODE>.
-
-<DT><CODE>cl_rational_ring cl_RA_ring</CODE>
-<DD>
-The ring of rational numbers. This corresponds to the type <CODE>cl_RA</CODE>.
-
-<DT><CODE>cl_integer_ring cl_I_ring</CODE>
-<DD>
-The ring of integers. This corresponds to the type <CODE>cl_I</CODE>.
-</DL>
-
-<P>
-Type tests can be performed for any of <CODE>cl_C_ring</CODE>, <CODE>cl_R_ring</CODE>,
-<CODE>cl_RA_ring</CODE>, <CODE>cl_I_ring</CODE>:
-
-
-<DL COMPACT>
-
-<DT><CODE>cl_boolean instanceof (const cl_number&#38; x, const cl_number_ring&#38; R)</CODE>
-<DD>
-<A NAME="IDX253"></A>
-Tests whether the given number is an element of the number ring R.
-</DL>
-
-
-
-<H1><A NAME="SEC49" HREF="cln.html#TOC49">7. Modular integers</A></H1>
-<P>
-<A NAME="IDX254"></A>
-
-
-
-
-<H2><A NAME="SEC50" HREF="cln.html#TOC50">7.1 Modular integer rings</A></H2>
-<P>
-<A NAME="IDX255"></A>
-
-
-<P>
-CLN implements modular integers, i.e. integers modulo a fixed integer N.
-The modulus is explicitly part of every modular integer. CLN doesn't
-allow you to (accidentally) mix elements of different modular rings,
-e.g. <CODE>(3 mod 4) + (2 mod 5)</CODE> will result in a runtime error.
-(Ideally one would imagine a generic data type <CODE>cl_MI(N)</CODE>, but C++
-doesn't have generic types. So one has to live with runtime checks.)
-
-
-<P>
-The class of modular integer rings is
-
-
-
-<PRE>
-                         Ring
-                       cl_ring
-                     &#60;cln/ring.h&#62;
-                          |
-                          |
-                 Modular integer ring
-                    cl_modint_ring
-                  &#60;cln/modinteger.h&#62;
-</PRE>
-
-<P>
-<A NAME="IDX256"></A>
-
-
-<P>
-and the class of all modular integers (elements of modular integer rings) is
-
-
-
-<PRE>
-                    Modular integer
-                         cl_MI
-                   &#60;cln/modinteger.h&#62;
-</PRE>
-
-<P>
-Modular integer rings are constructed using the function
-
-
-<DL COMPACT>
-
-<DT><CODE>cl_modint_ring find_modint_ring (const cl_I&#38; N)</CODE>
-<DD>
-<A NAME="IDX257"></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="IDX258"></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
-to a minimum.
-</DL>
-
-<P>
-Modular integer rings can be compared for equality:
-
-
-<DL COMPACT>
-
-<DT><CODE>bool operator== (const cl_modint_ring&#38;, const cl_modint_ring&#38;)</CODE>
-<DD>
-<A NAME="IDX259"></A>
-<DT><CODE>bool operator!= (const cl_modint_ring&#38;, const cl_modint_ring&#38;)</CODE>
-<DD>
-<A NAME="IDX260"></A>
-These compare two modular integer rings for equality. Two different calls
-to <CODE>find_modint_ring</CODE> with the same argument necessarily return the
-same ring because it is memoized in the cache table.
-</DL>
-
-
-
-<H2><A NAME="SEC51" HREF="cln.html#TOC51">7.2 Functions on modular integers</A></H2>
-
-<P>
-Given a modular integer ring <CODE>R</CODE>, the following members can be used.
-
-
-<DL COMPACT>
-
-<DT><CODE>cl_I R-&#62;modulus</CODE>
-<DD>
-<A NAME="IDX261"></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="IDX262"></A>
-This returns <CODE>0 mod N</CODE>.
-
-<DT><CODE>cl_MI R-&#62;one()</CODE>
-<DD>
-<A NAME="IDX263"></A>
-This returns <CODE>1 mod N</CODE>.
-
-<DT><CODE>cl_MI R-&#62;canonhom (const cl_I&#38; x)</CODE>
-<DD>
-<A NAME="IDX264"></A>
-This returns <CODE>x mod N</CODE>.
-
-<DT><CODE>cl_I R-&#62;retract (const cl_MI&#38; x)</CODE>
-<DD>
-<A NAME="IDX265"></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>.
-
-<DT><CODE>cl_MI R-&#62;random(random_state&#38; randomstate)</CODE>
-<DD>
-<DT><CODE>cl_MI R-&#62;random()</CODE>
-<DD>
-<A NAME="IDX266"></A>
-This returns a random integer modulo <CODE>N</CODE>.
-</DL>
-
-<P>
-The following operations are defined on modular integers.
-
-
-<DL COMPACT>
-
-<DT><CODE>cl_modint_ring x.ring ()</CODE>
-<DD>
-<A NAME="IDX267"></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="IDX268"></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="IDX269"></A>
-Returns the difference of two modular integers. One of the arguments may also
-be a plain integer.
-
-<DT><CODE>cl_MI operator- (const cl_MI&#38;)</CODE>
-<DD>
-Returns the negative of a modular integer.
-
-<DT><CODE>cl_MI operator* (const cl_MI&#38;, const cl_MI&#38;)</CODE>
-<DD>
-<A NAME="IDX270"></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="IDX271"></A>
-Returns the square of a modular integer.
-
-<DT><CODE>cl_MI recip (const cl_MI&#38; x)</CODE>
-<DD>
-<A NAME="IDX272"></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="IDX273"></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="IDX274"></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="IDX275"></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="IDX276"></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="IDX277"></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="IDX278"></A>
-<DT><CODE>bool operator!= (const cl_MI&#38;, const cl_MI&#38;)</CODE>
-<DD>
-<A NAME="IDX279"></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="IDX280"></A>
-Returns true if <CODE>x</CODE> is <CODE>0 mod N</CODE>.
-</DL>
-
-<P>
-The following output functions are defined (see also the chapter on
-input/output).
-
-
-<DL COMPACT>
-
-<DT><CODE>void fprint (cl_ostream stream, const cl_MI&#38; x)</CODE>
-<DD>
-<A NAME="IDX281"></A>
-<DT><CODE>cl_ostream operator&#60;&#60; (cl_ostream stream, const cl_MI&#38; x)</CODE>
-<DD>
-<A NAME="IDX282"></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>default_print_flags</CODE>.
-</DL>
-
-
-
-<H1><A NAME="SEC52" HREF="cln.html#TOC52">8. Symbolic data types</A></H1>
-<P>
-<A NAME="IDX283"></A>
-
-
-<P>
-CLN implements two symbolic (non-numeric) data types: strings and symbols.
-
-
-
-
-<H2><A NAME="SEC53" HREF="cln.html#TOC53">8.1 Strings</A></H2>
-<P>
-<A NAME="IDX284"></A>
-<A NAME="IDX285"></A>
-
-
-<P>
-The class
-
-
-
-<PRE>
-                      String
-                     cl_string
-                   &#60;cln/string.h&#62;
-</PRE>
-
-<P>
-implements immutable strings.
-
-
-<P>
-Strings are constructed through the following constructors:
-
-
-<DL COMPACT>
-
-<DT><CODE>cl_string (const char * s)</CODE>
-<DD>
-Returns an immutable copy of the (zero-terminated) C string <CODE>s</CODE>.
-
-<DT><CODE>cl_string (const char * ptr, unsigned long len)</CODE>
-<DD>
-Returns an immutable copy of the <CODE>len</CODE> characters at
-<CODE>ptr[0]</CODE>, ..., <CODE>ptr[len-1]</CODE>. NUL characters are allowed.
-</DL>
-
-<P>
-The following functions are available on strings:
-
-
-<DL COMPACT>
-
-<DT><CODE>operator =</CODE>
-<DD>
-Assignment from <CODE>cl_string</CODE> and <CODE>const char *</CODE>.
-
-<DT><CODE>s.length()</CODE>
-<DD>
-<A NAME="IDX286"></A>
-<DT><CODE>strlen(s)</CODE>
-<DD>
-<A NAME="IDX287"></A>
-Returns the length of the string <CODE>s</CODE>.
-
-<DT><CODE>s[i]</CODE>
-<DD>
-<A NAME="IDX288"></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="IDX289"></A>
-Compares two strings for equality. One of the arguments may also be a
-plain <CODE>const char *</CODE>.
-</DL>
-
-
-
-<H2><A NAME="SEC54" HREF="cln.html#TOC54">8.2 Symbols</A></H2>
-<P>
-<A NAME="IDX290"></A>
-<A NAME="IDX291"></A>
-
-
-<P>
-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
-comparison), whereas comparison of two strings must in the worst case walk
-both strings until their end.
-Symbols are used, for example, as tags for properties, as names of variables
-in polynomial rings, etc.
-
-
-<P>
-Symbols are constructed through the following constructor:
-
-
-<DL COMPACT>
-
-<DT><CODE>cl_symbol (const cl_string&#38; s)</CODE>
-<DD>
-Looks up or creates a new symbol with a given name.
-</DL>
-
-<P>
-The following operations are available on symbols:
-
-
-<DL COMPACT>
-
-<DT><CODE>cl_string (const cl_symbol&#38; sym)</CODE>
-<DD>
-Conversion to <CODE>cl_string</CODE>: Returns the string which names the symbol
-<CODE>sym</CODE>.
-
-<DT><CODE>bool equal (const cl_symbol&#38; sym1, const cl_symbol&#38; sym2)</CODE>
-<DD>
-<A NAME="IDX292"></A>
-Compares two symbols for equality. This is very fast.
-</DL>
-
-
-
-<H1><A NAME="SEC55" HREF="cln.html#TOC55">9. Univariate polynomials</A></H1>
-<P>
-<A NAME="IDX293"></A>
-<A NAME="IDX294"></A>
-
-
-
-
-<H2><A NAME="SEC56" HREF="cln.html#TOC56">9.1 Univariate polynomial rings</A></H2>
-
-<P>
-CLN implements univariate polynomials (polynomials in one variable) over an
-arbitrary ring. The indeterminate variable may be either unnamed (and will be
-printed according to <CODE>default_print_flags.univpoly_varname</CODE>, which
-defaults to <SAMP>`x'</SAMP>) or carry a given name. The base ring and the
-indeterminate are explicitly part of every polynomial. CLN doesn't allow you to
-(accidentally) mix elements of different polynomial rings, e.g.
-<CODE>(a^2+1) * (b^3-1)</CODE> will result in a runtime error. (Ideally this should
-return a multivariate polynomial, but they are not yet implemented in CLN.)
-
-
-<P>
-The classes of univariate polynomial rings are
-
-
-
-<PRE>
-                           Ring
-                         cl_ring
-                       &#60;cln/ring.h&#62;
-                            |
-                            |
-                 Univariate polynomial ring
-                      cl_univpoly_ring
-                      &#60;cln/univpoly.h&#62;
-                            |
-           +----------------+-------------------+
-           |                |                   |
- Complex polynomial ring    |    Modular integer polynomial ring
- cl_univpoly_complex_ring   |        cl_univpoly_modint_ring
- &#60;cln/univpoly_complex.h&#62;   |        &#60;cln/univpoly_modint.h&#62;
-                            |
-           +----------------+
-           |                |
-   Real polynomial ring     |
-   cl_univpoly_real_ring    |
-   &#60;cln/univpoly_real.h&#62;    |
-                            |
-           +----------------+
-           |                |
- Rational polynomial ring   |
- cl_univpoly_rational_ring  |
- &#60;cln/univpoly_rational.h&#62;  |
-                            |
-           +----------------+
-           |
- Integer polynomial ring
- cl_univpoly_integer_ring
- &#60;cln/univpoly_integer.h&#62;
-</PRE>
-
-<P>
-and the corresponding classes of univariate polynomials are
-
-
-
-<PRE>
-                   Univariate polynomial
-                          cl_UP
-                      &#60;cln/univpoly.h&#62;
-                            |
-           +----------------+-------------------+
-           |                |                   |
-   Complex polynomial       |      Modular integer polynomial
-        cl_UP_N             |                cl_UP_MI
- &#60;cln/univpoly_complex.h&#62;   |        &#60;cln/univpoly_modint.h&#62;
-                            |
-           +----------------+
-           |                |
-     Real polynomial        |
-        cl_UP_R             |
-  &#60;cln/univpoly_real.h&#62;     |
-                            |
-           +----------------+
-           |                |
-   Rational polynomial      |
-        cl_UP_RA            |
- &#60;cln/univpoly_rational.h&#62;  |
-                            |
-           +----------------+
-           |
-   Integer polynomial
-        cl_UP_I
- &#60;cln/univpoly_integer.h&#62;
-</PRE>
-
-<P>
-Univariate polynomial rings are constructed using the functions
-
-
-<DL COMPACT>
-
-<DT><CODE>cl_univpoly_ring find_univpoly_ring (const cl_ring&#38; R)</CODE>
-<DD>
-<DT><CODE>cl_univpoly_ring find_univpoly_ring (const cl_ring&#38; R, const cl_symbol&#38; varname)</CODE>
-<DD>
-This function returns the polynomial ring <SAMP>`R[X]'</SAMP>, unnamed or named.
-<CODE>R</CODE> may be an arbitrary ring. This function takes care of finding out
-about special cases of <CODE>R</CODE>, such as the rings of complex numbers,
-real numbers, rational numbers, integers, or modular integer rings.
-There is a cache table of rings, indexed by <CODE>R</CODE> and <CODE>varname</CODE>.
-This ensures that two calls of this function with the same arguments will
-return the same polynomial ring.
-
-<DT><CODE>cl_univpoly_complex_ring find_univpoly_ring (const cl_complex_ring&#38; R)</CODE>
-<DD>
-<A NAME="IDX295"></A>
-<DT><CODE>cl_univpoly_complex_ring find_univpoly_ring (const cl_complex_ring&#38; R, const cl_symbol&#38; varname)</CODE>
-<DD>
-<DT><CODE>cl_univpoly_real_ring find_univpoly_ring (const cl_real_ring&#38; R)</CODE>
-<DD>
-<DT><CODE>cl_univpoly_real_ring find_univpoly_ring (const cl_real_ring&#38; R, const cl_symbol&#38; varname)</CODE>
-<DD>
-<DT><CODE>cl_univpoly_rational_ring find_univpoly_ring (const cl_rational_ring&#38; R)</CODE>
-<DD>
-<DT><CODE>cl_univpoly_rational_ring find_univpoly_ring (const cl_rational_ring&#38; R, const cl_symbol&#38; varname)</CODE>
-<DD>
-<DT><CODE>cl_univpoly_integer_ring find_univpoly_ring (const cl_integer_ring&#38; R)</CODE>
-<DD>
-<DT><CODE>cl_univpoly_integer_ring find_univpoly_ring (const cl_integer_ring&#38; R, const cl_symbol&#38; varname)</CODE>
-<DD>
-<DT><CODE>cl_univpoly_modint_ring find_univpoly_ring (const cl_modint_ring&#38; R)</CODE>
-<DD>
-<DT><CODE>cl_univpoly_modint_ring find_univpoly_ring (const cl_modint_ring&#38; R, const cl_symbol&#38; varname)</CODE>
-<DD>
-These functions are equivalent to the general <CODE>find_univpoly_ring</CODE>,
-only the return type is more specific, according to the base ring's type.
-</DL>
-
-
-
-<H2><A NAME="SEC57" HREF="cln.html#TOC57">9.2 Functions on univariate polynomials</A></H2>
-
-<P>
-Given a univariate polynomial ring <CODE>R</CODE>, the following members can be used.
-
-
-<DL COMPACT>
-
-<DT><CODE>cl_ring R-&#62;basering()</CODE>
-<DD>
-<A NAME="IDX296"></A>
-This returns the base ring, as passed to <SAMP>`find_univpoly_ring'</SAMP>.
-
-<DT><CODE>cl_UP R-&#62;zero()</CODE>
-<DD>
-<A NAME="IDX297"></A>
-This returns <CODE>0 in R</CODE>, a polynomial of degree -1.
-
-<DT><CODE>cl_UP R-&#62;one()</CODE>
-<DD>
-<A NAME="IDX298"></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="IDX299"></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="IDX300"></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="IDX301"></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>
-member function.
-</DL>
-
-<P>
-The following are the only destructive operations on univariate polynomials.
-
-
-<DL COMPACT>
-
-<DT><CODE>void set_coeff (cl_UP&#38; x, uintL index, const cl_ring_element&#38; y)</CODE>
-<DD>
-<A NAME="IDX302"></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="IDX303"></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
-produce wrong results or crash the program.
-</DL>
-
-<P>
-The following operations are defined on univariate polynomials.
-
-
-<DL COMPACT>
-
-<DT><CODE>cl_univpoly_ring x.ring ()</CODE>
-<DD>
-<A NAME="IDX304"></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="IDX305"></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="IDX306"></A>
-Returns the difference of two univariate polynomials.
-
-<DT><CODE>cl_UP operator- (const cl_UP&#38;)</CODE>
-<DD>
-Returns the negative of a univariate polynomial.
-
-<DT><CODE>cl_UP operator* (const cl_UP&#38;, const cl_UP&#38;)</CODE>
-<DD>
-<A NAME="IDX307"></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="IDX308"></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="IDX309"></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="IDX310"></A>
-<DT><CODE>bool operator!= (const cl_UP&#38;, const cl_UP&#38;)</CODE>
-<DD>
-<A NAME="IDX311"></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="IDX312"></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="IDX313"></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="IDX314"></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="IDX315"></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="IDX316"></A>
-Returns the derivative of the polynomial <CODE>x</CODE> with respect to the
-indeterminate <CODE>X</CODE>.
-</DL>
-
-<P>
-The following output functions are defined (see also the chapter on
-input/output).
-
-
-<DL COMPACT>
-
-<DT><CODE>void fprint (cl_ostream stream, const cl_UP&#38; x)</CODE>
-<DD>
-<A NAME="IDX317"></A>
-<DT><CODE>cl_ostream operator&#60;&#60; (cl_ostream stream, const cl_UP&#38; x)</CODE>
-<DD>
-<A NAME="IDX318"></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>default_print_flags</CODE>.
-</DL>
-
-
-
-<H2><A NAME="SEC58" HREF="cln.html#TOC58">9.3 Special polynomials</A></H2>
-
-<P>
-The following functions return special polynomials.
-
-
-<DL COMPACT>
-
-<DT><CODE>cl_UP_I tschebychev (sintL n)</CODE>
-<DD>
-<A NAME="IDX319"></A>
-<A NAME="IDX320"></A>
-Returns the n-th Chebyshev polynomial (n &#62;= 0).
-
-<DT><CODE>cl_UP_I hermite (sintL n)</CODE>
-<DD>
-<A NAME="IDX321"></A>
-<A NAME="IDX322"></A>
-Returns the n-th Hermite polynomial (n &#62;= 0).
-
-<DT><CODE>cl_UP_RA legendre (sintL n)</CODE>
-<DD>
-<A NAME="IDX323"></A>
-<A NAME="IDX324"></A>
-Returns the n-th Legendre polynomial (n &#62;= 0).
-
-<DT><CODE>cl_UP_I laguerre (sintL n)</CODE>
-<DD>
-<A NAME="IDX325"></A>
-<A NAME="IDX326"></A>
-Returns the n-th Laguerre polynomial (n &#62;= 0).
-</DL>
-
-<P>
-Information how to derive the differential equation satisfied by each
-of these polynomials from their definition can be found in the
-<CODE>doc/polynomial/</CODE> directory.
-
-
-
-
-<H1><A NAME="SEC59" HREF="cln.html#TOC59">10. Internals</A></H1>
-
-
-
-<H2><A NAME="SEC60" HREF="cln.html#TOC60">10.1 Why C++ ?</A></H2>
-<P>
-<A NAME="IDX327"></A>
-
-
-<P>
-Using C++ as an implementation language provides
-
-
-
-<UL>
-<LI>
-
-Efficiency: It compiles to machine code.
-
-<LI>
-
-<A NAME="IDX328"></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.
-
-<LI>
-
-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>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.
-
-<LI>
-
-Algebraic syntax: The elementary operations <CODE>+</CODE>, <CODE>-</CODE>, <CODE>*</CODE>,
-<CODE>=</CODE>, <CODE>==</CODE>, ... can be used in infix notation, which is more
-convenient than Lisp notation <SAMP>`(+ x y)'</SAMP> or C notation <SAMP>`add(x,y,&#38;z)'</SAMP>.
-</UL>
-
-<P>
-With these language features, there is no need for two separate languages,
-one for the implementation of the library and one in which the library's users
-can program. This means that a prototype implementation of an algorithm
-can be integrated into the library immediately after it has been tested and
-debugged. No need to rewrite it in a low-level language after having prototyped
-in a high-level language.
-
-
-
-
-<H2><A NAME="SEC61" HREF="cln.html#TOC61">10.2 Memory efficiency</A></H2>
-
-<P>
-In order to save memory allocations, CLN implements:
-
-
-
-<UL>
-<LI>
-
-Object sharing: An operation like <CODE>x+0</CODE> returns <CODE>x</CODE> without copying
-it.
-<LI>
-
-<A NAME="IDX329"></A>
-<A NAME="IDX330"></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.
-<LI>
-
-Small integers are represented as immediate values instead of pointers
-to heap allocated storage. This means that integers <CODE>&#62; -2^29</CODE>,
-<CODE>&#60; 2^29</CODE> don't consume heap memory, unless they were explicitly allocated
-on the heap.
-</UL>
-
-
-
-<H2><A NAME="SEC62" HREF="cln.html#TOC62">10.3 Speed efficiency</A></H2>
-
-<P>
-Speed efficiency is obtained by the combination of the following tricks
-and algorithms:
-
-
-
-<UL>
-<LI>
-
-Small integers, being represented as immediate values, don't require
-memory access, just a couple of instructions for each elementary operation.
-<LI>
-
-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 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>
-algorithm, the Karatsuba multiplication, which is an
-<CODE>O(N^1.6)</CODE>
-algorithm.
-<LI>
-
-For very large numbers (more than 12000 decimal digits), CLN uses
-Schönhage-Strassen
-<A NAME="IDX331"></A>
-multiplication, which is an asymptotically optimal multiplication 
-algorithm.
-<LI>
-
-These fast multiplication algorithms also give improvements in the speed
-of division and radix conversion.
-</UL>
-
-
-
-<H2><A NAME="SEC63" HREF="cln.html#TOC63">10.4 Garbage collection</A></H2>
-<P>
-<A NAME="IDX332"></A>
-
-
-<P>
-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
-number objects, only the objects' reference count are manipulated.
-
-
-<P>
-Memory occupied by number objects are automatically reclaimed as soon as
-their reference count drops to zero.
-
-
-<P>
-For number rings, another strategy is implemented: There is a cache of,
-for example, the modular integer rings. A modular integer ring is destroyed
-only if its reference count dropped to zero and the cache is about to be
-resized. The effect of this strategy is that recently used rings remain
-cached, whereas undue memory consumption through cached rings is avoided.
-
-
-
-
-<H1><A NAME="SEC64" HREF="cln.html#TOC64">11. Using the library</A></H1>
-
-<P>
-For the following discussion, we will assume that you have installed
-the CLN source in <CODE>$CLN_DIR</CODE> and built it in <CODE>$CLN_TARGETDIR</CODE>.
-For example, for me it's <CODE>CLN_DIR="$HOME/cln"</CODE> and
-<CODE>CLN_TARGETDIR="$HOME/cln/linuxelf"</CODE>. You might define these as
-environment variables, or directly substitute the appropriate values.
-
-
-
-
-<H2><A NAME="SEC65" HREF="cln.html#TOC65">11.1 Compiler options</A></H2>
-<P>
-<A NAME="IDX333"></A>
-
-
-<P>
-Until you have installed CLN in a public place, the following options are
-needed:
-
-
-<P>
-When you compile CLN application code, add the flags
-
-<PRE>
-   -I$CLN_DIR/include -I$CLN_TARGETDIR/include
-</PRE>
-
-<P>
-to the C++ compiler's command line (<CODE>make</CODE> variable CFLAGS or CXXFLAGS).
-When you link CLN application code to form an executable, add the flags
-
-<PRE>
-   $CLN_TARGETDIR/src/libcln.a
-</PRE>
-
-<P>
-to the C/C++ compiler's command line (<CODE>make</CODE> variable LIBS).
-
-
-<P>
-If you did a <CODE>make install</CODE>, the include files are installed in a
-public directory (normally <CODE>/usr/local/include</CODE>), hence you don't
-need special flags for compiling. The library has been installed to a
-public directory as well (normally <CODE>/usr/local/lib</CODE>), hence when
-linking a CLN application it is sufficient to give the flag <CODE>-lcln</CODE>.
-
-
-
-
-<H2><A NAME="SEC66" HREF="cln.html#TOC66">11.2 Compatibility to old CLN versions</A></H2>
-<P>
-<A NAME="IDX334"></A>
-<A NAME="IDX335"></A>
-
-
-<P>
-As of CLN version 1.1 all non-macro identifiers were hidden in namespace
-<CODE>cln</CODE> in order to avoid potential name clashes with other C++
-libraries. If you have an old application, you will have to manually
-port it to the new scheme. The following principles will help during
-the transition:
-
-<UL>
-<LI>
-
-All headers are now in a separate subdirectory. Instead of including
-<CODE>cl_</CODE><VAR>something</VAR><CODE>.h</CODE>, include
-<CODE>cln/</CODE><VAR>something</VAR><CODE>.h</CODE> now.
-<LI>
-
-All public identifiers (typenames and functions) have lost their
-<CODE>cl_</CODE> prefix.  Exceptions are all the typenames of number types,
-(cl_N, cl_I, cl_MI, ...), rings, symbolic types (cl_string,
-cl_symbol) and polynomials (cl_UP_<VAR>type</VAR>).  (This is because their
-names would not be mnemonic enough once the namespace <CODE>cln</CODE> is
-imported. Even in a namespace we favor <CODE>cl_N</CODE> over <CODE>N</CODE>.)
-<LI>
-
-All public <EM>functions</EM> that had by a <CODE>cl_</CODE> in their name still
-carry that <CODE>cl_</CODE> if it is intrinsic part of a typename (as in
-<CODE>cl_I_to_int ()</CODE>).
-</UL>
-
-<P>
-When developing other libraries, please keep in mind not to import the
-namespace <CODE>cln</CODE> in one of your public header files by saying
-<CODE>using namespace cln;</CODE>. This would propagate to other applications
-and can cause name clashes there.
-
-
-
-
-<H2><A NAME="SEC67" HREF="cln.html#TOC67">11.3 Include files</A></H2>
-<P>
-<A NAME="IDX336"></A>
-<A NAME="IDX337"></A>
-
-
-<P>
-Here is a summary of the include files and their contents.
-
-
-<DL COMPACT>
-
-<DT><CODE>&#60;cln/object.h&#62;</CODE>
-<DD>
-General definitions, reference counting, garbage collection.
-<DT><CODE>&#60;cln/number.h&#62;</CODE>
-<DD>
-The class cl_number.
-<DT><CODE>&#60;cln/complex.h&#62;</CODE>
-<DD>
-Functions for class cl_N, the complex numbers.
-<DT><CODE>&#60;cln/real.h&#62;</CODE>
-<DD>
-Functions for class cl_R, the real numbers.
-<DT><CODE>&#60;cln/float.h&#62;</CODE>
-<DD>
-Functions for class cl_F, the floats.
-<DT><CODE>&#60;cln/sfloat.h&#62;</CODE>
-<DD>
-Functions for class cl_SF, the short-floats.
-<DT><CODE>&#60;cln/ffloat.h&#62;</CODE>
-<DD>
-Functions for class cl_FF, the single-floats.
-<DT><CODE>&#60;cln/dfloat.h&#62;</CODE>
-<DD>
-Functions for class cl_DF, the double-floats.
-<DT><CODE>&#60;cln/lfloat.h&#62;</CODE>
-<DD>
-Functions for class cl_LF, the long-floats.
-<DT><CODE>&#60;cln/rational.h&#62;</CODE>
-<DD>
-Functions for class cl_RA, the rational numbers.
-<DT><CODE>&#60;cln/integer.h&#62;</CODE>
-<DD>
-Functions for class cl_I, the integers.
-<DT><CODE>&#60;cln/io.h&#62;</CODE>
-<DD>
-Input/Output.
-<DT><CODE>&#60;cln/complex_io.h&#62;</CODE>
-<DD>
-Input/Output for class cl_N, the complex numbers.
-<DT><CODE>&#60;cln/real_io.h&#62;</CODE>
-<DD>
-Input/Output for class cl_R, the real numbers.
-<DT><CODE>&#60;cln/float_io.h&#62;</CODE>
-<DD>
-Input/Output for class cl_F, the floats.
-<DT><CODE>&#60;cln/sfloat_io.h&#62;</CODE>
-<DD>
-Input/Output for class cl_SF, the short-floats.
-<DT><CODE>&#60;cln/ffloat_io.h&#62;</CODE>
-<DD>
-Input/Output for class cl_FF, the single-floats.
-<DT><CODE>&#60;cln/dfloat_io.h&#62;</CODE>
-<DD>
-Input/Output for class cl_DF, the double-floats.
-<DT><CODE>&#60;cln/lfloat_io.h&#62;</CODE>
-<DD>
-Input/Output for class cl_LF, the long-floats.
-<DT><CODE>&#60;cln/rational_io.h&#62;</CODE>
-<DD>
-Input/Output for class cl_RA, the rational numbers.
-<DT><CODE>&#60;cln/integer_io.h&#62;</CODE>
-<DD>
-Input/Output for class cl_I, the integers.
-<DT><CODE>&#60;cln/input.h&#62;</CODE>
-<DD>
-Flags for customizing input operations.
-<DT><CODE>&#60;cln/output.h&#62;</CODE>
-<DD>
-Flags for customizing output operations.
-<DT><CODE>&#60;cln/malloc.h&#62;</CODE>
-<DD>
-<CODE>malloc_hook</CODE>, <CODE>free_hook</CODE>.
-<DT><CODE>&#60;cln/abort.h&#62;</CODE>
-<DD>
-<CODE>cl_abort</CODE>.
-<DT><CODE>&#60;cln/condition.h&#62;</CODE>
-<DD>
-Conditions/exceptions.
-<DT><CODE>&#60;cln/string.h&#62;</CODE>
-<DD>
-Strings.
-<DT><CODE>&#60;cln/symbol.h&#62;</CODE>
-<DD>
-Symbols.
-<DT><CODE>&#60;cln/proplist.h&#62;</CODE>
-<DD>
-Property lists.
-<DT><CODE>&#60;cln/ring.h&#62;</CODE>
-<DD>
-General rings.
-<DT><CODE>&#60;cln/null_ring.h&#62;</CODE>
-<DD>
-The null ring.
-<DT><CODE>&#60;cln/complex_ring.h&#62;</CODE>
-<DD>
-The ring of complex numbers.
-<DT><CODE>&#60;cln/real_ring.h&#62;</CODE>
-<DD>
-The ring of real numbers.
-<DT><CODE>&#60;cln/rational_ring.h&#62;</CODE>
-<DD>
-The ring of rational numbers.
-<DT><CODE>&#60;cln/integer_ring.h&#62;</CODE>
-<DD>
-The ring of integers.
-<DT><CODE>&#60;cln/numtheory.h&#62;</CODE>
-<DD>
-Number threory functions.
-<DT><CODE>&#60;cln/modinteger.h&#62;</CODE>
-<DD>
-Modular integers.
-<DT><CODE>&#60;cln/V.h&#62;</CODE>
-<DD>
-Vectors.
-<DT><CODE>&#60;cln/GV.h&#62;</CODE>
-<DD>
-General vectors.
-<DT><CODE>&#60;cln/GV_number.h&#62;</CODE>
-<DD>
-General vectors over cl_number.
-<DT><CODE>&#60;cln/GV_complex.h&#62;</CODE>
-<DD>
-General vectors over cl_N.
-<DT><CODE>&#60;cln/GV_real.h&#62;</CODE>
-<DD>
-General vectors over cl_R.
-<DT><CODE>&#60;cln/GV_rational.h&#62;</CODE>
-<DD>
-General vectors over cl_RA.
-<DT><CODE>&#60;cln/GV_integer.h&#62;</CODE>
-<DD>
-General vectors over cl_I.
-<DT><CODE>&#60;cln/GV_modinteger.h&#62;</CODE>
-<DD>
-General vectors of modular integers.
-<DT><CODE>&#60;cln/SV.h&#62;</CODE>
-<DD>
-Simple vectors.
-<DT><CODE>&#60;cln/SV_number.h&#62;</CODE>
-<DD>
-Simple vectors over cl_number.
-<DT><CODE>&#60;cln/SV_complex.h&#62;</CODE>
-<DD>
-Simple vectors over cl_N.
-<DT><CODE>&#60;cln/SV_real.h&#62;</CODE>
-<DD>
-Simple vectors over cl_R.
-<DT><CODE>&#60;cln/SV_rational.h&#62;</CODE>
-<DD>
-Simple vectors over cl_RA.
-<DT><CODE>&#60;cln/SV_integer.h&#62;</CODE>
-<DD>
-Simple vectors over cl_I.
-<DT><CODE>&#60;cln/SV_ringelt.h&#62;</CODE>
-<DD>
-Simple vectors of general ring elements.
-<DT><CODE>&#60;cln/univpoly.h&#62;</CODE>
-<DD>
-Univariate polynomials.
-<DT><CODE>&#60;cln/univpoly_integer.h&#62;</CODE>
-<DD>
-Univariate polynomials over the integers.
-<DT><CODE>&#60;cln/univpoly_rational.h&#62;</CODE>
-<DD>
-Univariate polynomials over the rational numbers.
-<DT><CODE>&#60;cln/univpoly_real.h&#62;</CODE>
-<DD>
-Univariate polynomials over the real numbers.
-<DT><CODE>&#60;cln/univpoly_complex.h&#62;</CODE>
-<DD>
-Univariate polynomials over the complex numbers.
-<DT><CODE>&#60;cln/univpoly_modint.h&#62;</CODE>
-<DD>
-Univariate polynomials over modular integer rings.
-<DT><CODE>&#60;cln/timing.h&#62;</CODE>
-<DD>
-Timing facilities.
-<DT><CODE>&#60;cln/cln.h&#62;</CODE>
-<DD>
-Includes all of the above.
-</DL>
-
-
-
-<H2><A NAME="SEC68" HREF="cln.html#TOC68">11.4 An Example</A></H2>
-
-<P>
-A function which computes the nth Fibonacci number can be written as follows.
-<A NAME="IDX338"></A>
-
-
-
-<PRE>
-#include &#60;cln/integer.h&#62;
-#include &#60;cln/real.h&#62;
-using namespace cln;
-
-// Returns F_n, computed as the nearest integer to
-// ((1+sqrt(5))/2)^n/sqrt(5). Assume n&#62;=0.
-const cl_I fibonacci (int n)
-{
-        // Need a precision of ((1+sqrt(5))/2)^-n.
-        cl_float_format_t prec = cl_float_format((int)(0.208987641*n+5));
-        cl_R sqrt5 = sqrt(cl_float(5,prec));
-        cl_R phi = (1+sqrt5)/2;
-        return round1( expt(phi,n)/sqrt5 );
-}
-</PRE>
-
-<P>
-Let's explain what is going on in detail.
-
-
-<P>
-The include file <CODE>&#60;cln/integer.h&#62;</CODE> is necessary because the type
-<CODE>cl_I</CODE> is used in the function, and the include file <CODE>&#60;cln/real.h&#62;</CODE>
-is needed for the type <CODE>cl_R</CODE> and the floating point number functions.
-The order of the include files does not matter.  In order not to write out
-<CODE>cln::</CODE><VAR>foo</VAR> we can safely import the whole namespace <CODE>cln</CODE>.
-
-
-<P>
-Then comes the function declaration. The argument is an <CODE>int</CODE>, the
-result an integer. The return type is defined as <SAMP>`const cl_I'</SAMP>, not
-simply <SAMP>`cl_I'</SAMP>, because that allows the compiler to detect typos like
-<SAMP>`fibonacci(n) = 100'</SAMP>. It would be possible to declare the return
-type as <CODE>const cl_R</CODE> (real number) or even <CODE>const cl_N</CODE> (complex
-number). We use the most specialized possible return type because functions
-which call <SAMP>`fibonacci'</SAMP> will be able to profit from the compiler's type
-analysis: Adding two integers is slightly more efficient than adding the
-same objects declared as complex numbers, because it needs less type
-dispatch. Also, when linking to CLN as a non-shared library, this minimizes
-the size of the resulting executable program.
-
-
-<P>
-The result will be computed as expt(phi,n)/sqrt(5), rounded to the nearest
-integer. In order to get a correct result, the absolute error should be less
-than 1/2, i.e. the relative error should be less than sqrt(5)/(2*expt(phi,n)).
-To this end, the first line computes a floating point precision for sqrt(5)
-and phi.
-
-
-<P>
-Then sqrt(5) is computed by first converting the integer 5 to a floating point
-number and than taking the square root. The converse, first taking the square
-root of 5, and then converting to the desired precision, would not work in
-CLN: The square root would be computed to a default precision (normally
-single-float precision), and the following conversion could not help about
-the lacking accuracy. This is because CLN is not a symbolic computer algebra
-system and does not represent sqrt(5) in a non-numeric way.
-
-
-<P>
-The type <CODE>cl_R</CODE> for sqrt5 and, in the following line, phi is the only
-possible choice. You cannot write <CODE>cl_F</CODE> because the C++ compiler can
-only infer that <CODE>cl_float(5,prec)</CODE> is a real number. You cannot write
-<CODE>cl_N</CODE> because a <SAMP>`round1'</SAMP> does not exist for general complex
-numbers.
-
-
-<P>
-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.
-
-
-<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="SEC69" HREF="cln.html#TOC69">11.5 Debugging support</A></H2>
-<P>
-<A NAME="IDX339"></A>
-
-
-<P>
-When debugging a CLN application with GNU <CODE>gdb</CODE>, two facilities are
-available from the library:
-
-
-
-<UL>
-<LI>The library does type checks, range checks, consistency checks at
-
-many places. When one of these fails, the function <CODE>cl_abort()</CODE> is
-called. Its default implementation is to perform an <CODE>exit(1)</CODE>, so
-you won't have a core dump. But for debugging, it is best to set a
-breakpoint at this function:
-
-<PRE>
-(gdb) break cl_abort
-</PRE>
-
-When this breakpoint is hit, look at the stack's backtrace:
-
-<PRE>
-(gdb) where
-</PRE>
-
-<LI>The debugger's normal <CODE>print</CODE> command doesn't know about
-
-CLN's types and therefore prints mostly useless hexadecimal addresses.
-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="IDX340"></A>
-
-<PRE>
-#define CL_DEBUG
-#include &#60;cln/string.h&#62;
-</PRE>
-
-Now, if you have in your program a variable <CODE>cl_string s</CODE>, and
-inspect it under <CODE>gdb</CODE>, the output may look like this:
-
-<PRE>
-(gdb) print s
-$7 = {&#60;cl_gcpointer&#62; = { = {pointer = 0x8055b60, heappointer = 0x8055b60,
-  word = 134568800}}, }
-(gdb) call cl_print(s)
-(cl_string) ""
-$8 = 134568800
-</PRE>
-
-Note that the output of <CODE>cl_print</CODE> goes to the program's error output,
-not to gdb's standard output.
-
-Note, however, that the above facility does not work with all CLN types,
-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="IDX341"></A>
-
-<PRE>
-(gdb) print s
-$7 = {&#60;cl_gcpointer&#62; = { = {pointer = 0x8055b60, heappointer = 0x8055b60,
-  word = 134568800}}, }
-(gdb) call s.debug_print()
-(cl_string) ""
-(gdb) define cprint
-&#62;call ($1).debug_print()
-&#62;end
-(gdb) cprint s
-(cl_string) ""
-</PRE>
-
-Unfortunately, this feature does not seem to work under all circumstances.
-</UL>
-
-
-
-<H1><A NAME="SEC70" HREF="cln.html#TOC70">12. Customizing</A></H1>
-<P>
-<A NAME="IDX342"></A>
-
-
-
-
-<H2><A NAME="SEC71" HREF="cln.html#TOC71">12.1 Error handling</A></H2>
-
-<P>
-When a fatal error occurs, an error message is output to the standard error
-output stream, and the function <CODE>cl_abort</CODE> is called. The default
-version of this function (provided in the library) terminates the application.
-To catch such a fatal error, you need to define the function <CODE>cl_abort</CODE>
-yourself, with the prototype
-
-<PRE>
-#include &#60;cln/abort.h&#62;
-void cl_abort (void);
-</PRE>
-
-<P>
-<A NAME="IDX343"></A>
-This function must not return control to its caller.
-
-
-
-
-<H2><A NAME="SEC72" HREF="cln.html#TOC72">12.2 Floating-point underflow</A></H2>
-<P>
-<A NAME="IDX344"></A>
-
-
-<P>
-Floating point underflow denotes the situation when a floating-point number
-is to be created which is so close to <CODE>0</CODE> that its exponent is too
-low to be represented internally. By default, this causes a fatal error.
-If you set the global variable
-
-<PRE>
-cl_boolean cl_inhibit_floating_point_underflow
-</PRE>
-
-<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>.
-
-
-
-
-<H2><A NAME="SEC73" HREF="cln.html#TOC73">12.3 Customizing I/O</A></H2>
-
-<P>
-The output of the function <CODE>fprint</CODE> may be customized by changing the
-value of the global variable <CODE>default_print_flags</CODE>.
-<A NAME="IDX345"></A>
-
-
-
-
-<H2><A NAME="SEC74" HREF="cln.html#TOC74">12.4 Customizing the memory allocator</A></H2>
-
-<P>
-Every memory allocation of CLN is done through the function pointer
-<CODE>malloc_hook</CODE>. Freeing of this memory is done through the function
-pointer <CODE>free_hook</CODE>. The default versions of these functions,
-provided in the library, call <CODE>malloc</CODE> and <CODE>free</CODE> and check
-the <CODE>malloc</CODE> result against <CODE>NULL</CODE>.
-If you want to provide another memory allocator, you need to define
-the variables <CODE>malloc_hook</CODE> and <CODE>free_hook</CODE> yourself,
-like this:
-
-<PRE>
-#include &#60;cln/malloc.h&#62;
-namespace cln {
-        void* (*malloc_hook) (size_t size) = ...;
-        void (*free_hook) (void* ptr)      = ...;
-}
-</PRE>
-
-<P>
-<A NAME="IDX346"></A>
-<A NAME="IDX347"></A>
-The <CODE>cl_malloc_hook</CODE> function must not return a <CODE>NULL</CODE> pointer.
-
-
-<P>
-It is not possible to change the memory allocator at runtime, because
-it is already called at program startup by the constructors of some
-global variables.
-
-
-
-
-<H1><A NAME="SEC75" HREF="cln.html#TOC75">Index</A></H1>
-
-<P>
-Jump to:
-<P>
-
-
-<P><HR><P>
-This document was generated on 28 August 2000 using
-<A HREF="http://wwwinfo.cern.ch/dis/texi2html/">texi2html</A>&nbsp;1.56k.
-</BODY>
-</HTML>
diff --git a/doc/cln.ps b/doc/cln.ps
deleted file mode 100644 (file)
index 47e22a0..0000000
+++ /dev/null
@@ -1,5902 +0,0 @@
-%!PS-Adobe-2.0
-%%Creator: dvips(k) 5.86 Copyright 1999 Radical Eye Software
-%%Title: cln.dvi
-%%Pages: 60
-%%PageOrder: Ascend
-%%BoundingBox: 0 0 596 842
-%%EndComments
-%DVIPSWebPage: (www.radicaleye.com)
-%DVIPSCommandLine: /usr/local/teTeX/bin/ix86-linux-libc6/dvips -D600 -o
-%+ cln.ps cln.dvi
-%DVIPSParameters: dpi=600, compressed
-%DVIPSSource:  TeX output 2000.08.28:2345
-%%BeginProcSet: texc.pro
-%!
-/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
-N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72
-mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0
-0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{
-landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize
-mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[
-matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round
-exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{
-statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0]
-N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin
-/FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array
-/BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2
-array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N
-df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A
-definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get
-}B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub}
-B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr
-1 add N}if}B/id 0 N/rw 0 N/rc 0 N/gp 0 N/cp 0 N/G 0 N/CharBuilder{save 3
-1 roll S A/base get 2 index get S/BitMaps get S get/Cd X pop/ctr 0 N Cdx
-0 Cx Cy Ch sub Cx Cw add Cy setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx
-sub Cy .1 sub]/id Ci N/rw Cw 7 add 8 idiv string N/rc 0 N/gp 0 N/cp 0 N{
-rc 0 ne{rc 1 sub/rc X rw}{G}ifelse}imagemask restore}B/G{{id gp get/gp
-gp 1 add N A 18 mod S 18 idiv pl S get exec}loop}B/adv{cp add/cp X}B
-/chg{rw cp id gp 4 index getinterval putinterval A gp add/gp X adv}B/nd{
-/cp 0 N rw exit}B/lsh{rw cp 2 copy get A 0 eq{pop 1}{A 255 eq{pop 254}{
-A A add 255 and S 1 and or}ifelse}ifelse put 1 adv}B/rsh{rw cp 2 copy
-get A 0 eq{pop 128}{A 255 eq{pop 127}{A 2 idiv S 128 and or}ifelse}
-ifelse put 1 adv}B/clr{rw cp 2 index string putinterval adv}B/set{rw cp
-fillstr 0 4 index getinterval putinterval adv}B/fillstr 18 string 0 1 17
-{2 copy 255 put pop}for N/pl[{adv 1 chg}{adv 1 chg nd}{1 add chg}{1 add
-chg nd}{adv lsh}{adv lsh nd}{adv rsh}{adv rsh nd}{1 add adv}{/rc X nd}{
-1 add set}{1 add clr}{adv 2 chg}{adv 2 chg nd}{pop nd}]A{bind pop}
-forall N/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn
-/BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put
-}if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{
-bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A
-mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{
-SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{
-userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X
-1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4
-index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N
-/p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{
-/Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT)
-(LaserWriter 16/600)]{A length product length le{A length product exch 0
-exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse
-end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask
-grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot}
-imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round
-exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto
-fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p
-delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M}
-B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{
-p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S
-rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end
-
-%%EndProcSet
-TeXDict begin 39158280 55380996 1000 600 600 (cln.dvi)
-@start
-%DVIPSBitmapFont: Fa cmbxti10 14.4 1
-/Fa 1 47 df<13FCEA03FF481380121F4813C0A25AA2B5FCA31480A26C13005B6C5AEA1F
-F0EA07C0121271912B>46 D E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fb cmr9 9 54
-/Fb 54 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<EB7F803803FFF0380F80
-FC381C003E001F7F486C6C7E81A26C486C7E120EC7FCA4EB01FF131FEBFF873803F807EA
-07E0EA0F80EA1F00123E127E16C05AA3140FA2007E131BA26C903871F180390FC1E1FF26
-07FF8013003900FE003C22237DA126>97 D<EA03F012FFA212071203AFEC3F80ECFFE090
-38F3C0F89038F7003C01FC7F497FED07804914C0ED03E0A216F01501A216F8A816F0A215
-0316E0A2ED07C06D1480ED0F0001EC131E01C65B90388381F8903801FFE0C76CC7FC2535
-7EB32B>I<EB0FF0EB3FFE9038F80F803901E001C03803C0073907800FE0EA0F005A48EB
-07C0003EEB0380007E90C7FCA2127CA212FCA8127C127EA2003E1430A26C14607E6D13C0
-3907C001803903E003003800F81EEB7FFCEB0FE01C237DA122>I<153FEC0FFFA2EC007F
-81AFEB07F0EB3FFCEBFC0F3901E003BF4848C6B4FC48487F48C7FC4880123EA2127E127C
-A212FCA8127CA2127E123EA27E6C5C6C6C5B3903C001BF3A01E0033F802600F81E13FCEB
-3FFCD90FE0130026357DB32B>I<EB0FE0EB7FFCEBF83E3801E00F3903C0078039078003
-C0390F0001E05A003E14F01400127E007C14F8A212FCA2B6FCA200FCC8FCA5127C127EA2
-003E1418121E001F14307E6C6C13606C6C13C03901E001803900FC0F00EB3FFEEB07F01D
-237EA122>I<EB01FCEB07FEEB1F0790383E0F8090387C1FC013F8A20001EB0F809038F0
-0700000390C7FCACB512F0A2D803F0C7FCB3A9487E387FFFE0A21A357FB417>I<151F90
-391FC07F8090397FF1E3C09038F07B833903C01E039039800E01800007010FC7FC000F80
-EB00074880A66C5CEB800F000791C7FC0003130E6D5AEBF07838067FF0380E1FC090C9FC
-A5EA0F80EBFFFE6CEBFFC06C14F06C80000780390F0001FE001EEB007F48141F007C1580
-48140FA5007CEC1F00A26C143E6C5C390FC001F83903F007E0C6B51280D91FFCC7FC2233
-7EA126>I<EA03F012FFA212071203AFEC1FC0EC7FF09038F1E0F89038F3807C9038F600
-7E01FC133E153F5BA35BB3A2486CEB7F80B538C7FFFCA226347EB32B>I<EA0780EA0FC0
-EA1FE0A4EA0FC0EA0780C7FCAAEA07E012FFA2120F1207B3A8EA0FF0B5FCA210337EB215
->I<EA03F012FFA212071203B0913803FFE0A20200130015FC15F05D4A5A4AC7FC14065C
-14385C14F0EBF1F813F3EBFEFCEBFC7EEBF03E80816E7E1407816E7E1401816E7E818148
-6C1480B500C313F0A224347EB329>107 D<EA07E012FFA2120F1207B3B3A9EA0FF0B5FC
-A210347EB315>I<2703F01FE013FF00FF90267FF80313C0913AE07C0703E03C07F3803E
-1C01F02803F7003F387F01F690381F300001FC02E07F495CA3495CB3A2486C496C487EB5
-3BC7FFFE3FFFF0A23C217EA041>I<3903F01FC000FFEB7FF09038F1E0F83907F3807C39
-03F6007E01FC133E153F5BA35BB3A2486CEB7F80B538C7FFFCA226217EA02B>I<EB07F0
-EB3FFE9038F80F803901E003C048486C7E48486C7E48C7127848147C001E143C003E143E
-A24880A300FC1580A8007C1500A2007E5C003E143EA26C5CA26C6C5B6C6C485A6C6C485A
-3900F80F80D93FFEC7FCEB07F021237EA126>I<3903F03F8000FFEBFFE09038F3C0F839
-07F7003CD803FC7F497F168049EB07C016E0150316F0A2150116F8A816F01503A216E015
-0716C06DEB0F80ED1F006D131E01F6137C9038F381F89038F1FFE0D9F07FC7FC91C8FCAB
-487EB512C0A225307EA02B>I<3803E07C00FF13FF9038E18F803907E31FC0EA03E613EC
-EC0F809038F8070091C7FCA35BB3487EB512E0A21A217FA01E>114
-D<EBFF06000713CE380F00FE001C133E48131E48130EA200F01306A37E6C90C7FCEA7F80
-13FC383FFFC06C7F6C13F86C7FC67FEB0FFF1300EC3F800040130F12C014077EA36C1400
-6C5B140E00FE5B38E7807838C1FFE038C07F8019237EA11E>I<1330A51370A313F0A212
-0112031207121FB512FEA23803F000B01403A81201EBF8061200140CEB7E1CEB1FF8EB07
-E0182F7FAD1E>I<D803F0133F00FFEB0FFFA20007EB007F000380B3A35DA212015D9038
-F801BF00000103138090397E073FFCEB1FFCD907F8130026227EA02B>I<B5EBFFF0A2D8
-0FF0EB3FC06C48EB0F00150E6C6C130CA26D131C00011418A26C6C5BA26D1370017E1360
-137F6D5BA290381F8180A214C3010F90C7FCA2EB07E6A214FE6D5AA26D5AA36D5AA21460
-24217E9F29>I<B53A1FFF81FFF0A23C0FF803FC003F806C486C48EB1F0000030100141E
-170C816C6C017C5BA26D017E1338000002FE1330A290267E01FF5B159F168090263F030F
-5BA216C0903A1F8607C180A202C613E390260FCC0390C7FCA2D907FC13F6ECF80116FE6D
-486C5AA36D481378A36D48133034217F9F37>I<B53801FFF8A23A07FC007F800003EC7E
-000001143800005C017E1360017F13E090383F81C090381F8380D90FC3C7FCEB07E614FE
-6D5A6D5A6D7E80805B9038039F809038071FC09038060FE0EB0C0790381C03F0496C7E01
-707FEB6000D801E0137E0003147FD80FF0EBFF8026FFFC0313FCA226207F9F29>I<3A7F
-FF807FF8A23A07F8001FE00003EC0F80ED070000011406A26C6C5BA26D131C017E1318A2
-6D5BA2EC8070011F1360ECC0E0010F5BA2903807E180A214F3010390C7FC14FBEB01FEA2
-6D5AA31478A21430A25CA214E05CA2495A1278D8FC03C8FCA21306130EEA701CEA7838EA
-1FF0EA0FC025307F9F29>I<003FB512F0A290380007E0003CEB0FC00038131F0030EB3F
-8000701400147E006013FE5C495A1303C6485A5C495A131F495A91C7FC017E133013FE48
-5A5B485A000714705B48481360001F14E0485AEB0003007E130FB6FCA21C207E9F22>I<
-001C1370003E13F8387F01FC00FF13FEA2007F13FC383E00F8001C1370170879B226>
-127 D E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fc cmti9 9 1
-/Fc 1 47 df<121C123E127F12FFA212FE127C12380808778718>46
-D E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fd cmtt9 9 63
-/Fd 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: Fe cmti10 10.95 9
-/Fe 9 118 df<120FEA1F80EA3FC0127F12FFA3EA7F801300123C0A0A77891C>46
-D<EC1FC0ECFFF0903803F038903807C00C90381F000E013E130749131F49133F0001147F
-485A49137E0007147C484813381500121F5B123FA248C8FCA412FEA65A1502007C140712
-7E150E003E141C15786C14F06CEB03E03907800F803903E07E003801FFF838003FC02029
-77A72A>99 D<167C4BB4FC923803C38092380781C0ED0F03ED1F0FA2ED3E1FA292387E0F
-80EE070093C7FC5DA54A5AA54A5AA30103B512F0825E90260007E0C7FCA44A5AA54A5AA5
-4AC8FCA5147EA55CA5495AA5495AA45C1307A25CA2130F001C5B127E91C9FCEAFE1F131E
-12FC485AEA70386C5AEA1FE0EA0F802A5383BF1C>102 D<14E0EB01F0EB03F8A214F014
-E0EB01C090C7FCAE13F8EA03FCEA070EEA0E0F001C138012181238EA301F1270A2126038
-E03F00A2137E12C012005BA3485AA3485AA2485AA21430380FC070A3381F80E0A214C013
-01A2EB03801400EA0F06130EEA07F8EA01F0153E78BC1C>105 D<D803E0137F3A07F003
-FFC03A0C380781E03A1C3C1E00F026383E387F5CD93FE07F00705BA25C4848C7FCA2137E
-A24848495A1200A34848495AA34B5A485AA24B5AA24848156092381F80E0A3484890383F
-01C0A21780ED3E03485AEE07001606ED1E0E48C75B6CEC0FF8000EEC03E02B2978A733>
-110 D<EC1FC0ECFFF8903803F07C903807C01E90381F000F013E148049EB07C05B120148
-4814E05B1207485A16F0121F5B123F16E048C7120FA400FEEC1FC0A3ED3F80A216004814
-7EA2007C5C007E5C4A5A003E13035D6C495A6C011FC7FC3807803E3803C0F86CB45A3800
-3F80242977A72E>I<EC7F80903801FFE0903807C0F090380F0038011E131C49130C017C
-130E0178133E01F8137EA20001147C15781510150013FEEBFFC014FC6C13FF6D13806D13
-C06D13E07F010013F0140F14071403A2121C003E1301127F00FEEB03E0A24814C0481307
-006014800070EB0F000030131E001C5B380F01F83807FFE0C690C7FC1F297AA725>115
-D<EB01C0EB03E014F0EB07E0A4EB0FC0A4EB1F80A4EB3F00A3007FB5FCB6FC7E38007E00
-A25BA4485AA4485AA4485AA4485AA4381F800C141CA21438EA3F0014301470146014E0EB
-01C0001F1380EB0300EA0F0EEA07FCEA01F0183A78B81E>I<13F8D803FC1438D8070E14
-7CD80E0F14FC001C7F121800384A5AEA301F1270A200604A5A38E03F00A2137E00C04A5A
-12005BA24B5A485AA34848495AA4484890383F01801603A392387E0700A315FE0003150E
-EC01BE00019038033E1C9038F0061E2600F81C5B90393FF80FF090390FE003E0292978A7
-31>I E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Ff cmmi10 10.95 2
-/Ff 2 80 df<49B592B512F082A290C76D913807FE00DA01BFED01F0705D039F6F5AA291
-26031FF04A5A150F82150702066D4AC7FC1503A26F7E020C16068281834A017F5CA2707E
-A24A6E5B161F83160F4A6E5B1607A2834A01035C8316018349486D5CA21880177F49C8EB
-C180173F18E1171F010604E3C8FCEF0FF3A218FB49ED07FEA21703A2496F5AA301381500
-6001FC1678EA03FE267FFFF01538B56C15304A15104C3E7DBD49>78
-D<EE3FF00303B5FC92391FC03FC092397E0007E0DA01F8EB01F8DA07E06D7E4A48147E02
-3FC87E027EED1F804A16C0D903F8150F494816E0495A4948ED07F0A2494816F849C9FC5B
-48481603A2484817FCA2485A000F17075B121FA25B123F19F84848160FA44848EE1FF0A3
-F03FE0A390CAEA7FC0A2F0FF80A219004D5A1703604D5A6C7E4D5A4D5A003F5F4D5A6C6C
-4BC7FC17FE6C6C4A5A4C5A6C6CEC07E06C6CEC1FC06C6C4A5A6C6C02FEC8FC90393F8003
-F890390FE01FE00103B5C9FC9038007FF03E427BBF45>I E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fg cmtt12 14.4 1
-/Fg 1 44 df<157815FC4A7EB3A2003FB812E04817F0B912F8A46C17F06C17E0C7D801FE
-C8FCB3A26E5A157835347CBE3E>43 D E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fh cmsy7 7 1
-/Fh 1 1 df<B712FEA327037A8F34>0 D E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fi cmr7 7 5
-/Fi 5 55 df<1238127C12FEA6127CAA1238AA12101200A51238127C12FEA3127C123807
-297BA813>33 D<1306130C13181330136013E0EA01C0EA0380A2EA07005A120E121EA212
-1C123CA35AA512F85AAB7E1278A57EA3121C121EA2120E120F7EEA0380A2EA01C0EA00E0
-136013301318130C13060F3B7AAB1A>40 D<12C012607E7E7E120E7EEA0380A2EA01C013
-E0120013F0A213701378A3133CA5133E131EAB133E133CA51378A3137013F0A213E01201
-13C0EA0380A2EA0700120E120C5A5A5A5A0F3B7DAB1A>I<13381378EA01F8121F12FE12
-E01200B3AB487EB512F8A215267BA521>49 D<EB0FE0EB3FF8EBF81C3801E0063803801F
-48485A5A121EA248131E91C7FC127C12781304EB3FC038F8FFF038F98078497E00FA7F12
-FE487FA2481480A41278A46C1400A2001C131E121E000E5B6C5B3803C0F03801FFC06C6C
-C7FC19277DA521>54 D E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fj cmmi7 7 3
-/Fj 3 111 df<1238127C12FEA3127C123807077A8614>58 D<1378EA07FC5BEA0078A3
-5BA4485AA43903C00780EC1FC0EC3860EC60E0380780C1EB8103138290388401C0D80F18
-C7FC5B13E07FEA1FFE381E3F80EB07C06D7EEA3C011560A30078EBC0C01303903801C180
-A200F0EBE300EB00FE0060133C1B297CA723>107 D<3907C01FC0390FE07FE03918F0E0
-F03930718078EB7B00D8607E1338017C133C01781338D8C0F813785B1200A248485BA34A
-5AEA03C01660EC03C0A23A07800780C0A2ED8180ED8300390F000386EC01FC00066D5A23
-1B7D9929>110 D E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fk cmex10 10 2
-/Fk 2 2 df<1430147014E0EB01C0EB0380A2EB0700130E131E131C133C5BA25BA2485A
-A212035B1207A2485AA348C7FCA45A123EA3127EA5127CA212FCB3A2127CA2127EA5123E
-A3123F7EA46C7EA36C7EA212037F1201A26C7EA21378A27F131C131E130E7FEB0380A2EB
-01C0EB00E0147014301462738226>0 D<124012E012707E7EA27E7E7F12037F6C7EA26C
-7EA21378A2137C133C133EA27FA3EB0F80A414C01307A314E0A51303A214F0B3A214E0A2
-1307A514C0A3130F1480A4EB1F00A3133EA2133C137C1378A25BA2485AA2485A5B120790
-C7FC120E5AA25A5A5A124014627C8226>I E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fl cmsl10 10.95 22
-/Fl 22 122 df<EC7FC0903803FFF890380F807E90381C001F01306D7E01786D7E13FC6D
-800001140382A26C5A137890C7FC4B5AA3EC01FF147F903803FF0790391FF00FC0EB7F80
-EBFE00EA03F8485A485A4848495A485A17C048C7FCA2153F00FEED0180157FA2007F14DF
-9139019F03006CEB031F3A1F800E0F86260FE03C13FC3A03FFF007F83A007FC003E02A2A
-7CA82D>97 D<133FEA1FFFA3C6FC7F137EA65BA6485AA5EC0FF03903F03FFE9138F01F80
-9039F3C007C09039F70003E001FC6D7E498048486D7EA249147EA2167FA2485AA31780A2
-170048485CA54B5A48C7FC5EA24B5AA24B5A485D4B5A4B5AD87D8091C7FC0079147ED878
-C05B39F06003F039E0380FC026C01FFFC8FC380007F8294076BE33>I<EC1FE0ECFFFC90
-3803F01F90390FC0038049C712C0017EEB03E04913074848130F0003141F5B12074848EB
-0FC0ED0780484890C7FC123FA25B127FA348C9FCAA6C5C5D7E15066C7E5D6C6C5B000714
-706C6C485A3900F80F80D97FFEC7FCEB0FF0232A7AA828>I<EE03F0ED01FFA3ED000F16
-0717E0A6EE0FC0A6EE1F80A5EC0FE09139FFF83F00903803F81E90380FC00790391F0001
-BF133E01FC6DB4FC4848147E485A12075B120F485A5E123F5B127FA348C7485AA64B5AA3
-7EA36C4A5A150F6C7E000F141F6D13370007ECE7F03B01E001CFFF803900F80F0FEB3FFE
-D90FF0EBC0002C407ABE33>I<EC3FE0903801FFF8903807E07E90380F801F90393F000F
-80017E14C0491307484814E0485A0007EC03F05B120F485AA2123F5BA2007F140790B6FC
-16E048C9FCA97E168015017EED03006C7E000F14066C6C131C6C6C5B6C6C13E03900FC07
-C0D93FFFC7FCEB07F8242A7BA828>I<ED0FE0ED7FF8EDF81C913803E03E913807C07E91
-380F80FF4A5A4A13FE143E027E137C4A1300A3495AA6495AA60007B512F8A3260007E0C7
-FCA3495AA6495AA649C8FCA6137EA65BA5EA03FE387FFFFCB5FCA228407DBF1C>I<177C
-913907F803FE91393FFE0F8F9139FC0F9C1F903901F007F0903A03E003E01ED907C0EBF0
-0C90260F80011300011F80133F14004980A301FE495AA3017E5C15075E013E5C013F495A
-6D49C7FCEC803E903837C0FC903861FFF09038607F8001E0C9FC5B1201A47F7F6CB512F8
-EDFF806D14E06D8090B67E3A03E0000FFCD80F80EB00FE48C8127E003E81123C007C815A
-A4163EA25E00785D007C4A5A6C4A5A6CEC0FC0D807C0013FC7FC3903F801FC39007FFFF0
-010F90C8FC303D7FA82D>I<147EEB3FFEA3130113005CA6495AA6495AA5ED0FF0903907
-E07FFCEDF03E9138E1801F9139E7000F8014EE02F814C0EB0FD814F05CA25CA2011FEC1F
-805CA549C7EA3F00A6017E147EA6495CA400011401486C497EB500F0B512F0A32C3F7CBE
-33>I<147814FCEB01FE130314FFEB07FE130314FCEB01F8EB00F01400ACEB07F03801FF
-E0A3EA001F130FA214C0A6EB1F80A6EB3F00A6137EA65BA5EA03FE387FFFE0A2B5FC183E
-7DBD19>I<147EEB3FFEA3130113005CA6495AA6495AA6494890B5FC17FE5D9238007FE0
-EE3F00163C49485B16E04B5A4BC7FC1506151C90381F80305DEC81C0EC83E0EC87F0149F
-90383F31F81461ECC0FCEC807C90383E007E153E49133F8182150F826F7E5B6F7EA26F7E
-00014A7E486C497EB539E01FFFF017E05D303F7EBE30>107 D<147EEB1FFE133FA21301
-130014FCA6EB01F8A6EB03F0A6EB07E0A6EB0FC0A6EB1F80A6EB3F00A6137EA65BA5EA03
-FE387FFFF0A2B5FC173F7DBE19>I<902707E00FF0EB07F82803FFC03FFEEB1FFFDBF01F
-9038780F80913CC1C00F80E007C03E001FC30007C18003E0D90FC6ECC30002CC02E614F0
-4A14EC02B014F802E05CA24A5CA2011F020FEC07E04A5CA549C74848EB0FC0A6017E4AC7
-EA1F80A649027EEC3F00A4000103FE5C486C496CECFF80B5D8F07FD9F83F13FCA346287C
-A74D>I<903907E00FF03A03FFC07FFCEDF03E9138C1801F3B001FC7000F80EB0FCE02D8
-14C0149814B014E0A25CA2011FEC1F805CA549C7EA3F00A6017E147EA6495CA400011401
-486C497EB500F0B512F0A32C287CA733>I<EC0FF0ECFFFE903903F01F8090390FC007C0
-49C66C7E013E6D7E01FC6D7E48488049147C0003157E485A000F157F5B121FA2485AA200
-7F1680A2170048C85AA54B5AA25E5A6C4A5A7E4B5A5E6C140F6C6C5C4B5A6C6C013EC7FC
-6C6C5B6C6C485A3900FC0FE090383FFF80D90FF8C8FC292A7BA82D>I<9138FE03FC903A
-7FFC0FFF8092383C07E09238F001F0903A03FDC000F86DB4C77E4A147E4A147F834A1580
-A218C0171F495AA318E0A218C04948143FA5EF7F80495A18005F5F16015F011F4A5A4C5A
-5F6E495A4C5A02B049C7FCD93F1813FC91380E03F0913807FFC0DA01FEC8FC91CAFCA213
-7EA65BA41201487EB512F0A3333A80A733>I<903907E01F803A03FFC07FE09138C1E1F0
-ECC3833A001FC607F8EB0FCC16F014989138B003E0ED018002E0C7FCA25C131FA25CA449
-C8FCA6137EA65BA41201487EB512FCA325287EA724>114 D<9138FF80800107EBE1C090
-391F0073800138131F49130F491307485A000314034914001207A37F150201F090C7FC13
-FC3803FFE06C13FE6C6D7E6D13E06D7F010F7F01007F140FEC01FE0010EB007E0038143E
-A3151EA2151C0078143C127C15385D007E14F0007F495A39F38003C026E1E01FC7FC38C0
-7FFCEB1FE0222A7DA824>I<1303A45B1306A2130EA2131EA25BA2137C13FC1201120700
-1FB512C0B6FCA2D801F8C7FCA3485AA6485AA6485AA51403381F8006A65C1300A26D5AA2
-000F5B6C6C5A3803E1C06CB45AD8007EC7FC1A3978B723>I<D801FCEB01FCB448EBFFF8
-A30007140700031403A24914F0A64848EB07E0A64848EB0FC0A64848EB1F80A4153FA290
-C7EA7F00A25DA2EC01BF3A0F80033F80000790380E7FFC3803E03C3801FFF03A003FC07E
-00262976A733>I<B539C003FFF05D17E02707FC000113006C48EB00FC4914786D147000
-0115605EA26D495A0000140393C7FC15067F017E5BA25D1538017F13306D5BA25D148090
-381F8180148392C8FC14C6130F14CCA214D8EB07F85CA25C5C13035CA22C2878A630>I<
-48B539803FFFC0A2150026000FFC90381FF800D903F8EB0FC094C7FC0101140E6D6C5B6E
-5B027E5B027F5B6E485A91381F838003C3C8FCEC0FC615ECEC07F86E5A811401811403EC
-067EEC0C7F4A7E02387FEC701F4A6C7ED901C07F9038038007D907007F010E1303496D7E
-013C8013FCD807FE49B4FCB5010F13F85DA232277FA630>120 D<90B539C003FFF05E18
-E0902707FC000113006D48EB00FC4A14706D7E17605F16016E5C01004AC7FCA216068002
-7E5B161C1618027F5B805EA26F5AEC1F815E0383C8FC15C3EC0FC615CE15CC15F814075D
-A25D14035D5DA292C9FCA21406140E140C5CA25C1218007E5B00FE5BA2495A4848CAFCEA
-F806EA600CEA7838EA3FF0EA0FC0343A80A630>I E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fm cmtt12 13.14 1
-/Fm 1 44 df<EC03C04A7E4A7EB2003FB712F84816FCB812FEA46C16FC6C16F8C7D80FF0
-C7FCB26E5A6E5A2F307CB838>43 D E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fn cmbx12 13.14 45
-/Fn 45 123 df<923803FFF0037FEBFE7C0203B612FC141F91397FFE001FDAFFE0133F01
-030180137F4990C7FC495A4A14FF4948147F495AA24A143F017F151FAFB9FCA526007FF0
-C7121FB3B3A2003FB5D8E00FB512F8A53D4D7ECC44>13 D<B7FCAA200A7F9C29>45
-D<EA07E0EA0FF0EA3FFCA2EA7FFEB5FCA6EA7FFEEA3FFCA2EA0FF0EA07E01010778F22>
-I<15F014011407141F147FEB03FF137FB6FCA313FC1380C7FCB3B3B2007FB712E0A52B47
-77C63D>49 D<EC7FF00107B5FC011F14E0017F14F848B612FE4801007FD807F0011F13C0
-48486D13E0D81F80010313F048C7FC6F13F8D87FE06D13FC6D147F6D15FE12FF6D143F17
-FFA46C5AA26C5AEA0FC0C9FC17FE167F17FCA2EEFFF8A217F05D4B13E017C04B13804B13
-005E4B5A4B5AED7FE04B5A4A5B4BC7FC4A5A4A5A4A5ADA1FC0131F4A5A4AC7FC14FE4948
-143E495AEB07E0495A4948147E49C8FC017E15FE90B7FC4816FC5A5A5A5A5A5AA2B812F8
-A430477AC63D>I<EC3FFE49B512E0010F14FC013F14FF90267FE00F7F2701FE000313E0
-D803F86D7F497F000782D80FFC6E7E7F7F488280A46C90C7FCA26C485D6C5AD800F04A5A
-90C8FC5F5D5F4B5B4B5B4B90C7FCED1FFC4AB45A49B512E093C8FC16E016FC90C7EA1FFF
-030313C06F7F6F7F707E83707E83A2701380A318C0A2EA07C0EA1FF0487E487EA2487E18
-80A34C13005B007F5E49147F6C485D01C04A5A001F5CD80FF8495B2707FF801F13C06C90
-B65AC64BC7FC013F14F8010714C09026007FFCC8FC32487BC63D>I<EE07E0160FA2161F
-163F167F16FFA25D5D5DA25D5D5DA2157D15FDEC01F915F1EC03E11407EC0FC1EC1F8115
-01143F147E14FC14F8EB01F01303EB07E014C0EB0F80131FEB3F00133E5B13FC485A485A
-5B1207485A485A90C7FC123E127E5AB912FCA5C80003EBE000AD023FB612FCA536487DC7
-3D>I<000316E001C0140301FC141F9039FFC003FF91B612C0178017005E5E5E5E16C05E
-4BC7FC15F001E7138001E0C9FCABEC1FFC91B512C001E314F001EF14FC9039FFE00FFE91
-390003FF8001FC6D13C001F06D13E04915F049147F17F8C9FC17FC163F17FEA317FFA3EA
-0F80EA3FE0487E7F12FF7FA217FE5BA2EE7FFC6C5A01C015F86CC8FCEEFFF06C6C5B6D15
-E06C6C010713C0D807F84913806CB490387FFE006C90B55A6C6C14F0011F14C0010749C7
-FC010013E030487AC63D>I<EC1FFE91B512F0010714FC011F14FF90263FE0037F49C7EA
-7FE001FCEC1FF04848140F48486E7E000782491403120F707EA2121FA27F7F7F7F6D6C49
-5A14E06C6D495A14FC02FF495A6C6E485A9238E03FC06C9138F8FF8092B5C7FC6C15FC6C
-15F07F6D80010F14FE01036E7E4981011F814981D9FFCF80480103804848C6804848133F
-48486D7F48481307484801011480814848143F040F13C0824848808282A2177FA318807F
-127FEFFF006C7E5F6C6C4A5A6D1403D80FFEEC0FF86C6C6CEB3FF06C9039F001FFE0C690
-B612806D92C7FC011F14FC010314E09026003FFEC8FC32487BC63D>56
-D<EC1FFC49B512C0010714F0011F14FC90393FF807FE903AFFE001FF8048496C7F48496D
-7E4890C7FC48486E7E83001F151F003F825B007F82A2160F8312FFA21880A618C0A3007F
-5DA3123FA26D5C121F000F5DA26C6C91B5FC6C90388001EF6C9038C003CF6CEBE0076DB5
-128F011F020F1380010713FC010013F0EC010091C7FC18005EA3D803F85D487E486C5D16
-3F486C5DA24C5AA2494A5A4B5B6C485D494990C7FCD807E0EB0FFE6D495AD803FEEBFFF8
-6CB612E06C5D013F91C8FC010F13F80101138032487BC63D>I<DC1FFFEC01C00303B500
-F01303033F02FE13074AB7EA800F0207EEE01F021F903AFC003FF03F027F01C0903807FC
-7F4A48C73801FEFF010301F8EC007F4901E0814949150F4990C97E494882494882495A48
-844A177F4849173F5A4A171F5A5C48190FA291CBFC481907A35AA24995C7FCA212FFAD12
-7FA27FF207C07EA37E80F20F807E807E6EEF1F007E6C6D173E6E177E6C197C6D6C17FC6D
-6C4C5A6D6C4C5A6D01C04B5A6D6D4B5A6D01F8ED3F80010001FE03FFC7FC91267FFFC0EB
-03FE021F01FCEB3FF8020790B65A020116C0DA003F4AC8FC030314F8DB001F13804A4D79
-CB59>67 D<BB12C0A486D8000F01C0C77E18071801F0007F193F191F190F1907861903A3
-1901A3EF0F80A2737EA497C7FC171FA2173F177F17FF160392B6FCA5EDC0031600177F17
-3F171FA2050FEC0F80A3F21F00A494C8FC621A3EA21A7EA31AFE6219011903A21907190F
-F13FF819FF1803183FBBFCA262A3494A7CC951>69 D<DC1FFFEC01C00303B500F0130303
-3F02FE13074AB7EA800F0207EEE01F021F903AFC003FF03F027F01C0903807FC7F4A48C7
-3801FEFF010301F8EC007F4901E0814949150F4990C97E494882494882495A48844A177F
-4849173F5A4A171F5A5C48190FA291CBFC481907A35AA24995C8FCA212FFAD127F0507B7
-12C07FA27EA294C7000FEBC0006C7FA37E807E807E6C7F806C7F137F6D7E6D6C7E6D6D5D
-6D7F6D01F85D010001FE92B5FC91267FFFC0EB03FC021F01FE90381FF87F020790B6EAF0
-3F0201EEC00FDA003FED0003030302FC1300DB001F018091C7FC524D79CB60>71
-D<B700F890B712FCA5D8001F0180C8000FEBC000B3AA92B9FCA50380C8120FB3AEB700F8
-90B712FCA5564B7BCA60>I<B712FEA5D8001F0180C9FCB3B3A4193EA4197E197CA519FC
-A31801A2F003F8A21807180F181F183F187FEF01FF1707173FBA12F0A53F4B7BCA4A>76
-D<B600C095B612806F5FA26F5FA2D8001F09FCC7FC6FEF07BFA2DABFFCEF0F3FA2DA9FFE
-171EA2028F183C81A202876D1678A202836D16F0A202816DED01E0A302806DED03C0A26F
-6CED0780A26F6CED0F00A26F6C151EA36F6C5DA26F6D5CA26F6D5CA26F6D495AA36F6D49
-5AA2706C495AA2706C49C7FCA3706C131EA2706C5BA2706D5AA2706D5AA370EBE1E0A270
-EBF3C0A271B45AA27190C8FCA3715AA2715AA2496C6E5AB600F04CB71280A2715AA2715A
-694B7BCA74>I<B600C092B612FCA2818181D8001F6D9239001FE000745A81818202BF7F
-149F82028F7F02877F148302817F8202807F6F7F816F7F836F7F6F7F81836F7F6F7F707F
-8284707F707F707F8284707F707F8371138019C07113E07113F0837113F819FC7113FE71
-13FF841A8F7213CF7213EF7213FF84A284848485A285858585A2858585496C177FB612F8
-1A3F1A1F1A0FA2564B7BCA60>I<B912C018FCF0FF8019F085D8001F90C7000713FE9438
-007FFF061F13807213C07213E07213F0841AF8A27213FCA31AFEA81AFCA34E13F8A21AF0
-604E13E04E13C04E1380067F1300943807FFFC92B75A19E096C7FC18F80380CAFCB3ABB7
-12F8A5474B7BCA54>80 D<B9FC18F8F0FF8019E019F8D8000F902680000713FE9439007F
-FF80061F7F06077F727F727FA2727F86A2197F86A86219FF62A24E5B624E5B4E5B061F5B
-067F90C8FC943807FFFC92B712F0198006FCC9FC18FF922680001F13C005077F050113F8
-717F727E183F727EA2868486A786A71C3E8684A28474137C726D13FCB700F86D6D13F896
-397FFF03F07313FF070F14C007011480CD380FFE00574C7CCA5C>82
-D<DA3FF8EB01C00103B5EA8003010FECF007013FECFC0F90B6EAFE1F489039E007FFBF48
-90C7EA7FFFD807FC141F484814074848804980003F81177F4848153FA2171FA200FF160F
-A37F17077FA27F6D92C7FC6CB4FC14C014FC6CEBFFC015FC6CECFFE016FC6C15FF6C16C0
-6C16F06C826C826D81011F81010716801301D9003F15C01401DA001F14E01501DB001F13
-F01607827013F882177F0078163F12F8A2171FA37E18F0A27EA26CEE3FE07F18C001E015
-7F6DEDFF806D4A130001FE5CD9FFC0495AD97FFEEB3FFCD8FE1FB612F0D8FC075DD8F801
-158026F0003F49C7FC48010113E0354D79CB44>I<003FBB12C0A5DA80019038F8001FD9
-F800160148487113E001C0183F49181F90C7170FA2007E1907A3007C1903A500FC1AF048
-1901A5C894C7FCB3B3A749B812F8A54C4A7CC955>I<B700F0023FB512F8A5D8001F0180
-C9380FE000745AB3B3AD6D4E5AA2817F50C7FC7F6F163E6D187E6F167C6D18FC6E6C4B5A
-6E6CED07F06EB44B5A6E6DEC3FC06E01E0ECFF80020101FE011F90C8FC6E6CB612FC031F
-15F0030715C003004AC9FC040713E0554C7CCA5E>I<ECFFF8010FEBFF80013F14F090B6
-12FC489038801FFE3B03FC0007FF80486C6D7F6D6D7F486D7E707EA283163F6C90C77FA2
-6C5AEA00F890C8FCA4ED1FFF020FB5FC91B6FC1307013FEBC03F9038FFFC004813F00007
-13C04890C7FC485A485AA2485AA2485AA4167FA26C6C14FF16EF6C6C13016D903803CFFF
-6C6CD90F8F13FE6C9038C07F0700039038FFFE03C6ECF801013F9038E0003F010390C9FC
-37337CB13C>97 D<EB7FC0B5FCA512037EB3A2ED07FE92383FFFE002C1B512F802C714FE
-913ACFF807FF809126FFC0017F92C7EA7FF002FC6E7E4A141F4A814A6E7EA2717E1980A3
-7113C0A419E0AA19C0A44D1380A21900A24D5A804D5A6E4A5A6E4A5A02BE4A5A91261F80
-015B9027FE0FF00F5B496CB548C7FCD9F80114F8496C6C13C0C8D80FFCC8FC3B4D7CCB44
->I<913807FF80027F13F80103B512FE010FECFF804948C613C0D97FF0EB1FE04948EB3F
-F04849137F4849EBFFF84890C7FCA2485A121F49EC7FF0123FEE3FE0EE0F80484891C7FC
-A312FFAB127FA27FA2123FA2001F163E7F120F6D157C6C6D14FC6C16F86C6DEB01F06C01
-F013076D6CEB0FE06DB4EB7F80010F90B51200010314FCD9007F13F0020790C7FC2F337C
-B137>I<EF1FF0EE3FFFA51600177FB3A2EC07FE91387FFFC00103B512F0010F14FC9039
-3FFE00FFD97FF0EB3FFF4948130F48497F48497F4890C77E484880A2485AA2123FA2485A
-A412FFAA127FA46C7EA3121F6C7E5E6C6C5C6C5D6E5B6C6D497F26007FF0017FEBFFE090
-393FFC03FE010FB512F8010314E00100148091260FFC00EBC0003B4D7CCB44>I<EC07FF
-027F13F00103B512FC010F14FF90263FFC037F90267FF0007FD9FFC0EB3FE048496D7E48
-90C76C7E5A48486E7EA248486E7EA2003F82A2484880A21880A212FFA290B8FCA401F8CA
-FCA5127FA36C7EA3001FEE0F807F120F6C6CED1F006E5C6C167E6C01E05C6C6D495AD93F
-FCEB07F0903A1FFF803FE0010790B55A010192C7FCD9003F13F80203138031337DB138>
-I<ED7FE0913807FFF8021F13FE027F7FDAFFE013800103010113C0EB07FE49484813E014
-F8131F14F0133F4A6C13C0137F9238007F00163E93C7FCADB77EA526007FF0C8FCB3B3A2
-003FB512F8A52B4D7DCC26>I<DA3FF8EB0FE00103B538807FF8010F9138E1FFFC013F14
-FB903B7FF01FFFF3FE2701FF800313034A7E48486DEB81FC000716C1EFC0F8484891387F
-E000A2001F82A8000F5EA26C6C4A5AA200035E6C6C4990C7FC6E5A6C9038F01FFC91B55A
-D801EF14E0D803C314809026C03FF8C8FC000790CAFCA57F7F13FC90B612F8EEFFC06C16
-F017FC6C16FF18806C17C06D16E048B812F01207D81FF8C7000713F8D83FE0EC007F4915
-1F007FEE0FFC5B00FF1607A56C6CED0FF8A26C6CED1FF06D153F6C6CED7FE06C6CEDFFC0
-6CB46C01071380000101F090383FFE006C6CB612F8011F15E0010392C7FCD9001F13E037
-487DB03D>I<EB7FC0B5FCA512037EB3A24BB47E030F13F0033F13FC4B13FF9126C1FE07
-7F9138C3F0039126C7C0017F1580DACF008002DE7F02DC8114F8A25CA35CB3AAB6D8C07F
-EBFFE0A53B4C7BCB44>I<13FC487E3807FF80A2487F487FA66C5B6C5BA2D801FEC7FC6C
-5A90C8FCACEB7FC0B5FCA512037EB3B3B61280A5194D7BCC22>I<EB7FC0B5FCA512037E
-B3A393383FFFFEA5DC03FEC7FC5FEE07F0EE1FE04C5A4C5A04FEC8FCED03FC4B5A4B5AED
-1FC0ED7F804BC9FC14C102C37F14CF02DF7F91B57E825C4A6C7E4A6C7E02E07FECC01F6F
-7E6F7F836F7F816F7F83707E163F707E707E848284B6D8803FEBFF80A5394C7CCB41>
-107 D<EB7FC0B5FCA512037EB3B3B3AAB61280A5194C7BCB22>I<D97FC0D9FFC0EC3FF0
-B5010701F8903801FFFE031F01FE01076D7E037F9026FF801F14E0DBFE039026C03F807F
-9126C3F0019138FC007F00039026C7C000D9E1F06D7E6C4A5D02CFC7D9F3C08002DE9126
-7FF780131F02DC93C7FC02F803FE81A24A5DA34A5DB3AAB6D8C03FB5D8F00FB512FCA55E
-317BB067>I<903A7FC001FF80B5010F13F0033F13FC4B13FF9126C1FE077F9138C3F003
-00039026C7C0017F6C1480DACF008002DE7F02DC8114F8A25CA35CB3AAB6D8C07FEBFFE0
-A53B317BB044>I<913807FF80027F13F80103B6FC010F15C090261FFE017F903A7FF000
-3FF8D9FFC0EB0FFC48496D7E4890C76C7E4817804980000F17C048486E13E0A2003F17F0
-49157FA2007F17F8A400FF17FCAB007F17F8A36C6CEDFFF0A3001F17E06D5C000F17C06C
-6C4A13806C17006C6D495A6C01E0EB1FFC6D6C495A903A3FFE01FFF0010FB612C0010392
-C7FCD9007F13F80207138036337DB13D>I<90397FC007FEB590383FFFE002C1B512F802
-C714FE913ACFF80FFF809126FFC0037F000391C713F06C01FC6E7E4A143F4A814A6E7E17
-0F84198083A219C0A283A219E0AA19C05FA31980A24D1300A24D5A804D5A6E4A5A6E4A5A
-6E495B6E6C485B9126EFF01F5B02E7B548C7FC02E114F8DAE07F13C0DB0FFCC8FC92CAFC
-AFB612C0A53B467CB044>I<9039FF801FC0B5EB7FF8913881FFFE02837FDA87E11380EC
-8F830003D99F0713C06C139E14BC14B814F84A6C1380A26F13009138E0007C93C7FCA35C
-B3A8B612E0A52A317CB032>114 D<D907FF1370017FEBE1F048B512FB000714FF380FFC
-00D81FE0133F49130F4848130748C71203A3481401A27FA27F01F090C7FC13FE387FFFF0
-ECFF806C14F015FC6C14FF6C15806C15C06C15E0C615F0013F14F81307D9003F13FC1401
-9138003FFE150F0078140700F81403A26C1401A36C15FCA27E6DEB03F87F6DEB07F06DEB
-1FE001FEEB7FC048B61280D8FC3FEBFE00D8F00F13F8D8E00113C027337CB130>I<14F8
-A61301A41303A21307A2130FA2131F133F137F13FF1203000F90B512F0B7FCA426007FF8
-C7FCB3A6167CAA013F14F880131FED01F090380FFE03903907FF07E06DEBFFC06D148090
-39007FFE00EC0FF826467EC430>I<D97FE0EC3FF0B5EC7FFFA5000315016C81B3AB5EA3
-5E7EEE077F160F6D6C011E7F6D6C013CEBFFE09138FE01F8010FB512F06D14E001011480
-9027001FFE00EBC0003B327BB044>I<B66C90B512C0A5000101E0C73807F0006E5D6C5F
-6E140F017F5E80171F013F93C7FC6E5C011F153E6E147E6D157C6F13FC6D5DEDC001A26D
-01E05B16036D5DEDF0076D5DEDF80F027F5CEDFC1F023F91C8FC15FE5E021F133EEDFF7E
-6E137C16FC6E5BA26E5BA36E5BA26E5BA26F5AA26FC9FCA23A317DAF41>I<B6D88007B5
-12C0A526007FFCC7387F8000013F037EC7FC6E14FE6D6C495A6D6D485A6D6D485A6D01E0
-5B4C5A6D6D485A6DEBF83F6E6C48C8FC91383FFEFE6E6C5A5E6E5B6E5B806E7FA26E7F82
-824A7F5C4A80DA0FE77FDA1FC37FDA3F817F4AC67F147E4A6D7E49486D7E01036E7E4948
-6D7F49487F49488149486D7F017F6E7FB500F8011FEBFFF0A53C307EAF41>120
-D<007FB500C090387FFFE0A5C601F0C73803F8006E5D017F5E6E1407013F5E6E140F011F
-5E6E141FA26D6D91C7FC5F6D153E6F137E6D157C6F13FC6D5DEDF0016D5DEDF803027F5C
-15FC1607DA3FFE5B160F021F5CEDFF1F6E91C8FC16BF6E13BE16FE6E5BA36E5BA26E5BA2
-6F5AA26F5AA26F5AA393C9FC5D153E157E157CD81F8013FC486C5B387FE001D8FFF05B14
-035D14074A5A49485A007F49CAFCEBC07E383F81FC6CB45A6C5B6C13C0C648CBFC3B467E
-AF41>I<001FB712FCA4DA000113F801F84913F001E04913E05B494913C04B138048C748
-1300A24B5A4B5A003E495B5E5C4A5B4A5BC75C5C4A90C7FC4A5A4A5AA2495B4949137C49
-5B5D5B495B4990C712F85C137F495A48491301485BA248491303484913074849130F161F
-4890C7EA7FF04848EB03FFB8FCA42E307DAF37>I E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fo cmbx12 17.28 42
-/Fo 42 123 df<19F0F001F819FC1803A2180719F8180F19F0A2181F19E0183F19C0A218
-7F198018FF1900A25F60170360A2170760170F60A2171F60173F60A2177F60A217FF95C7
-FC5E5FA216035F16075FA2160F5F161F5FA2163F5F167F5FA216FF94C8FC5D5EA215035E
-15075EA2150F5E151F5EA2153F5E157F5EA215FF93C9FC5C5DA214035D14075DA2140F5D
-141F5DA2143F5D147F5DA214FF92CAFC5B5CA213035C13075CA2130F5CA2131F5C133F5C
-A2137F5C13FF91CBFCA25A5B12035BA212075B120F5BA2121F5B123F5BA2127F5B12FF90
-CCFCA25A127E123C3E9077EB51>47 D<ED0FFF4AB512F8020F14FF023F15C091B712F049
-D9FC037F01079039E0007FFE490180EB1FFF4990C76C7F49486E7F49486E7F49486E7FA2
-48496E7F48844A157F4884A248496F7EA3481980A34819C0A24A81A24819E0A7B518F0B3
-A86C19E0A76C19C06E5DA36C1980A36C1900A26E5D6C60A26C606E15FF6C606C6D4A5B6E
-5C017F5F6D6C4A5B6D6C4A5B6D01C0013F90C7FC6D6D495A6D9039FC03FFFC010090B612
-F0023F15C0020F92C8FC020114F8DA001F138044607ADD51>I<16F04B7E1507151F153F
-EC01FF1407147F010FB5FCB7FCA41487EBF007C7FCB3B3B3B3007FB91280A6395E74DD51
->I<EDFFF8021FEBFFC091B612F8010315FE010F6F7E013F16E090267FFC0114F89027FF
-C0003F7F4890C7000F7FD803FC02037F48486E148048486E14C048486F13E0496F13F0EA
-3FF801FE6F13F8486C816E16FC80B56F13FE80A219FF83A36C5BA26C5BA26C90C8FCEA07
-FCD800E04B13FE90C9FCA219FC5FA219F85F19F04D13E0A24D13C0198094B512004C5B60
-4C5B4C5B4C5B604C90C7FC4C5A4C5A4C5A4B13E04B5B4B5B4CC8FC4B5A4B5AED3FE04B48
-143F4B5A4A90C8FC4A5ADA07F8157E4A5A4A5A4A5A4A5A02FEC912FE495A495A4948ED01
-FC4948150749B8FC5B5B90B9FC5A4818F85A5A5A5A5AA2BAFC19F0A4405E78DD51>I<ED
-7FFE0207B512F0023F14FF91B712C0010316F0010FD9C00F13FC90271FFC00037FD93FE0
-01007FD97F806E7F49C86C7F4848836D6F7F4813C06E82486D8080486D82A4805CA27E61
-4A5C6C5B6C495E6C6C5A011EC85A90C95C615F6194B5C7FC604C5B4C5B4C5B041F13C04C
-5B922607FFFEC8FC020FB512F817E094C9FC17F817FF91C7001F13C0040313F804007F71
-B4FC717F7113E085717FA2717F85A285831A80A31AC0EA03FCEA0FFF487F487FA2487FA2
-B57E1A80A44D14005C6C605C4D5B6C90C8FC494B5BD81FF05F6C6C5DD807FE4B5B6C6C6C
-91B55A6C01F0010391C7FC6C9026FF801F5B013F90B612F86D16E00107168001004BC8FC
-021F14F0020049C9FC426079DD51>I<F01F804E7E187F18FFA25F5F5F5FA25F5F5FA294
-B5FC5E5E5EA25E5EEE3FBFEE7F3FA216FEED01FCED03F8ED07F0A2ED0FE0ED1FC0ED3F80
-16005D15FE4A5A4A5AA24A5A4A5A4A5A4A5AA24AC7FC14FE495A5C1303495A495A495A5C
-133F49C8FC13FE485AA2485A485A485A5B121F485A48C9FC12FEBCFCA6CA6CEBC000B103
-7FB8FCA6485E7CDD51>I<01C0EE01C0D801F0160701FE163FD9FFE0EC03FFDAFF8090B5
-FC92B71280190060606060606095C7FC5F17F817E017804CC8FC16F0D9FC3F90C9FC91CB
-FCAEED3FFE0203B512E0020F14FC023F14FF91B712C001FDD9E00F13F09027FFFE00037F
-02F801007F02E06EB4FC02808091C86C13804917C04917E049816C4817F090C914F8A371
-13FCA219FEA419FFA3EA03F0EA0FFC487E487E487FA2B57EA319FEA35C19FC6C90C85A49
-17F85BD83FF017F001805D001F18E07F6C6C4B13C06D4B13806C6C92B51200D803FE4A5B
-6C6C6C495B6C01E0010F5BD97FFE017F13E0011FB75A6D93C7FC010315FC010015E0023F
-91C8FC020313E0406078DD51>I<EE1FFE4BB512E0031F14F8037F14FE4AB7FC0207D9F8
-017F021F9039C0003FC04A48C76C7EDAFFFC140F4901F06E7E4949143F4949ECFFF84949
-5B4990C75A49834A5C495A13FF5C5A5A4A6E5B5A715B48705B4AED3F8095C8FC5AA35AA2
-5C923801FFC048020713FC031FEBFF80037F14E092B67E9126C1FC0113FCB53AC3F0007F
-FEDAC7C0EB1FFF4B6D7F02CFC76C7F02CE6E7F02DE8202DC6E7F14F885855C717FA25C1A
-80A44A17C0A37EA77EA46C6D1780A37E1A007EA24D5B6C7F617E6C6D4A5B616D6C4A5B6D
-7E6D6C4A5B6D6D495B6D01E0017F90C7FC6D9039F803FFFC6D90B65A6D6C15E0021F5D02
-0792C8FC020114F8DA001F90C9FC426079DD51>I<EA07E0120F7F13FCEBFFFC91B912F8
-A45A1AF01AE0A21AC01A801A00614860A261616101E0C9EA3FC001805F48CA127F4EC7FC
-4D5A007E4C5A4D5A60170F4D5A484C5A4D5A4DC8FC5FC912014C5A4C5A4C5AA24C5A163F
-5F4C5A16FFA24B90C9FC5D5E1507A24B5A151FA2153F5E157FA315FF5E5CA35CA35CA25E
-5CA45CA75CAC6E5B6E5B6E90CAFC6E5A6E5A456377E051>I<ED1FFF0203B512F8021F14
-FF027F15C049B712F049D9E00313FC010F90C76C7ED91FF8EC1FFF49486E7F494802037F
-4A6E7F495A48707FA24890C96C7EA25A727EA35A80A28080806E4B5A14FE8003C04A5A6C
-14F06F495B03FE5D6C6E6C5ADCE0075B6C6F4890C7FC9338FC1FFE6C9238FF7FF86D4B5A
-18C06D93C8FC6D5D6D6F7E6D82010116F06D16FC023F818491B87E010383010F6D819026
-1FFE1F8190267FF80F819026FFF003814849C6FC4849013F8048497F4890C70007801601
-48486E6C14804981003F160F170348486F14C0717E8448488284A284A284A21A80A36C7E
-1A00A26D4C5A123F6D5F001F170F6D4C5A6C6D4B5A6C6D157F6C01F04B5A6C6D02035B6C
-01FF020F5B6D9027E001FFFEC7FC011F90B65A6D16F0010316C0D9007F92C8FC020F14F8
-DA007F90C9FC426079DD51>I<ED3FFE0203B512E0021F14FC027F14FF49B712C00107D9
-F8077F49D9C00013F84990C76C7ED97FFE6E7E49486E7E48496E7F4849808548496E7F5A
-717F5A85485B855AA28583B5FC85A41A80A71AC0A26C5EA47E5FA26C7F5F7EA26C160E6C
-6D141E6C161C6C6D143C6D6C5C6D6C14F8903A1FFF8003F06D9038E00FE06D90B5481480
-01015D6D6C495A020F13F8020013E092C8FC1A00A25F61A361137F3801FFC0486D4A5B48
-7F61487F4D5BA24D5B615F4A93C7FC6C4C5A4A4A5A4A14FF6C90C7485B01FC4A5B6C6C02
-0F13C06D6C013F5B6CD9F801B5C8FC6DB612FC011F15F06D15C0010392C9FC010014F802
-0F90CAFC426079DD51>I<942601FFFEED03C0057FD9FFF014070407B600FE140F043F6F
-6C131F4BB800E0133F030705F8137F031F9127F0007FFE13FF037F49C73807FF014AB500
-E0020013C302070280ED3FE74A49C96CB5FC4A01F81607027F01E08291B54882494A8249
-49CB7E49498449498449864949845D49498490B5855D48874891CDFC1D7F485BA2481C3F
-5CA25A1D1F5C5AA34899C7FCA25CA4B5FCAE7EA480A27EA2F50FC07E80A27EA2806CF41F
-80A26C7F1D3F6C6E1A007E6F197E7F6D6D616F18016D6D616D1A036D6D4E5A6D6D4E5A6D
-6D6C4D5A6D6E173F6E6D4D5A021F01F84C48C7FC6E01FEEE07FC6E6D6C4B5A020102F0ED
-7FF06E6C01FE913803FFC0031FD9FFF0013F5B030791B648C8FC030117F8DB003F16E004
-0793C9FCDC007F14F8050149CAFC626677E375>67 D<BD12E0A41CF0A2D8000102C0C712
-07F1003F1A0F1A031A001B7F1B3FF31FF81B0FA21B07A21B03A21B011CFCA31B00A419FC
-A21C7EA41C00A21801A31803A21807180F183FEF01FF93B6FCA6EEC001EF003F180F1807
-1803A21801A31800A896C9FCB3A5B912F8A657617AE065>70 D<B912E0A6C702E0C7FCB3
-B3B3B3AEB912E0A633627CE13C>73 D<B700C0083FB612F070627097B7FCA37061D80001
-0DF8C7FC70F103EFA202FD6DF107CFA202FC6DF10F8FA36F6DF01F0FA26F6D183EA26F6D
-187CA26F6D18F8A36F6DEF01F0A26F6DEF03E0A26F6DEF07C0A26F6DEF0F80A3706DEE1F
-00A2706D163EA2706D5EA2706D5EA3706D4B5AA2706D4B5AA2706D4B5AA2706D4B5AA371
-6D4AC7FCA2716D143EA2716D5CA2716D5CA3716D495AA2716D495AA2716D495AA2716D49
-5AA3726D48C8FCA272EBC03EA2726D5AA2726D5AA372EBF9F0A272EBFFE0A2725CA2725C
-A37390C9FCA2735AA2735A90381FFFC0B700F86E480207B812F0A3735AA2735A8C627AE1
-99>77 D<94381FFFE00407B67E043F15F04BB712FE030FEEFFC0033FD9FC0014F092B500
-C0010F13FC020349C7000113FF4A01F86E6C7F021F01E0031F13E04A496F7F4A90C90003
-7F4A48707F0103497013FF4949717FA24949717F4949717F4949717F49874B8390B58648
-91CB6C7FA24849727FA2481D804A84481DC0A348497313E0A3481DF0A448497313F8A5B5
-1CFCB06C1DF8A26E61A46C1DF0A36E96B5FC6C1DE0A36C6D4E14C0A26C1D806E606C1D00
-A26C6E4D5BA26C6E4D5BA26D6D4D5B6D6D4D5B6D636F5F6D6D94B55A6D6D4C5C6D6D4C91
-C7FC6D6E4B5B6D6E4B5B023F01F0033F13F06E6D4B5B6E01FE4AB55A0203D9FFC0010F91
-C8FC020002FC90B512FC033F90B712F0030F17C0030394C9FCDB007F15F804071580DC00
-1F01E0CAFC666677E379>79 D<BA12F8F1FFE01AFEF2FFC01BF01BFED800010280C76C7F
-070314C0070014F0083F7F080F7F747F747F8986897480A3757FA389A865A398B55AA265
-62655091C9FC64505B081F5B505B97B55A07071480077F49CAFC93B812F81BC050CBFCA2
-747E932680000314E0DE007F13F8071F7F07077F737F7380738088747FA2747FA3747FA9
-88A91F0FF71F808886A21F3F746E1400A2746E5B74167EB96E6E13FE759038F801FC7590
-38FE07F8090F90B55A755D09005DCF001F91C7FC9938007FFC71647AE178>82
-D<DB7FFCEC01E0020FB500E01303027F14FC49B713070107EEC00F49EEF01F013FD9C003
-EBF83FD97FFCC7383FFC7FD9FFF00207B5FC4849140148496E7E48498191C97E48488249
-82001F8384484882197F127F193FA2191F12FFA2190F7FA27F19077F8080806C6D93C7FC
-14FCECFF806C14F8EDFF8016FC6CEDFFC017FE6CEEFFC06C17F818FE6C836C18C06C846D
-17F86D836D8313076D8301001880023F17C0140F020017E0150FDB007F15F01607DC003F
-14F81703DD007F13FC848418077213FEA2007C8300FC83A2197FA3193F7EA21AFCA27EA2
-7F1AF86D177F1AF07F6DEFFFE07F6D4C13C07F6D6C4B138002E04B130002F84B5A02FEED
-3FFC9026CFFFE0ECFFF8018301FF01075B010091B65A48013F168048010F4BC7FC480101
-15F8DA003F14C048020001FCC8FC476677E35A>I<001FBEFCA64849C79126E0000F1480
-02E0180091C8171F498601F81A0349864986A2491B7FA2491B3F007F1DC090C9181FA400
-7E1C0FA600FE1DE0481C07A5CA95C7FCB3B3B3A3021FBAFCA663617AE070>I<B96C023F
-B612FEA6D8000102C0CA0007EBF000E2007FC7FCB3B3B3AA6D6365A28280525AA26E1903
-70606E1907656E6D170F6E6270171F6E4F5A6E6D4D5A6E6D4DC8FC6F6D4B5A6F01E0ED07
-FC6F6DED1FF86F01FCED7FF00303D9FF80903803FFE06F02F8017F5B6F6C90B7C9FC041F
-5E040716F8040016C0050F4ACAFCDD003F13C06F647AE17C>I<913803FFF8027FEBFFC0
-0103B612F8010F15FE013F6F7E90277FFC003F13E0D9FFC001077F4801F06D7F486F7F6E
-6D7F48707E6E6E7FA2717FA2856C5B836C4982A238007FC0011FC8FC90C9FCA7043FB5FC
-031FB6FC0203B7FC143F91B5EAF00F0107EBFE00011F13F0017F13C090B5C7FC00035B48
-13F8485B5C5A485B5C5AA2B5C8FCA45FA36C6D143B177B17736C6D14F36C6DD901E37F6E
-D907C313FF6C01FCD91F8114FE000301FFD9FF0114FF6C9138FFFE006C6C4A7F011F02F0
-131F010302C0010313FE9026001FFCCAFC48437BC14E>97 D<903807FF80B6FCA6C6FC7F
-7FB3A8EFFFF0040FEBFF80043F14F00381B612FC038315FF92268FFE0080DBBFF0010F13
-E0DBFF8001037F93C76C7F03FC6E7F4B6F7E4B6F7E4B6F13805D7313C01BE0A27313F0A2
-1BF8A37313FCA51BFEAC1BFCA41BF861A21BF0A24F13E0A21BC0616F17804F13006F5D6F
-4B5A6F4A5B4A6C4A5B9126FC7F804913E09126F81FE0011F5B9127F00FFC01B55A4A6CB6
-48C7FCDAC00115F84A6C6C14C091C7001F49C8FC90C8000113E04F657BE35A>I<92380F
-FFE092B6FC020715E0023F15F891B712FE499039FE001FFF010701F0010113804901C001
-0713C0494915E0017F90C75A4A16F049485C485B485B5A5C487013E0A248496E13C0A248
-04011300EF007C95C7FC485BA5B5FCAC7EA3807EA36C7F19FC7E806CEF01F8806CEF03F0
-6C6D15076E16E06C6D150F6D6DEC1FC06D6DEC3F806D6DECFF00010701FCEB03FE6D9039
-FF801FFC010091B512F0023F15C0020F92C7FC020014F8030F13803E437BC148>I<F17F
-F8050FB5FCA6EF000F8484B3A8ED0FFF92B512F0020714FE023FECFF8391B712C3010391
-38007FF34901F0EB07FB011F01C00101B5FC49497F4990C87E4948814849814A81484981
-5A5C5A5C5AA25AA25C5AA4B5FCAC7EA56C7FA37EA26C7FA27E6C6D5D606C6D5D6C6D5D6D
-6C92B5FC6D6C4A806D6D0107806D01E0D91FF7EBFFFE010301FEEBFFC76D90B612876D6C
-ECFE07020F14F8020314C09127001FFE00ECC0004F657BE35A>I<92380FFFC04AB512FC
-020FECFF80023F15E091B712F80103D9FE017F499039F0003FFE4901C0EB0FFF4990C76C
-7F49486E7F49486E7F49486E7F48844849157F48844A153F48845A4A151F855AA3485B72
-1380A3B5FCA391B9FCA31A000280CBFCA67EA3807EA37E6E160F6CF01F80A26C6D163F6C
-19006E5E6C6D16FE6C606D6C15016D6C6CEC07F86D6D4A5A6D01F0EC3FE0010301FC49B4
-5A6D9026FFC01F90C7FC6D6C90B55A021F15F8020715E0020092C8FC030713F041437CC1
-4A>I<EE3FFC0307B5FC033F14C092B612F0020315F8020F9038F03FFC4AEB807F913A7F
-FE00FFFE4A5A4B4813FF4913F04913E0A24913C0A2496E13FEA24949EB7FFCEF3FF8EF1F
-F0EF038094C7FCB0B812C0A6D8001F01C0C8FCB3B3B0007FB612FCA638657CE431>I<F1
-07F0DB7FFCEC3FFC020FB500E090B5FC023FECF80349B7000F148049D9E00FEB9FF1010F
-D98003D9FF8113C04948C7EBFC014948EC7FF84948EC3FFC01FF04FE148048496E6C7E1B
-0048F0803C4A6E91C7FC4884A34884A86C60A36C606E5C6C95C8FCA26C6D4A5A017F5E6D
-6C4A5A6D6C4A5A90270FFF80035B49D9E00F1380013D90B6C9FCD9783F14F8020F14E090
-27F8007FFCCAFC92CCFCA21201A47F7FA26D7E14E091B7FC18FC6CEFFF8019F06D17FC85
-6D717E6D8486010784131F017F8448BAFC000701C0C70001804890C9120F484804017F48
-48EE007F49173F007F727E5B00FF84A76C6C4D5AA26C6C4D5AA26C6C4D5A6C6C4D5A6C01
-C003035B6C6D4B5BC601F8031F90C7FC6DB4EDFFFE011F01F8011F13F8010390B712C001
-0094C8FC020F15F0DA003F01FCC9FC4A607CC151>I<903807FF80B6FCA6C6FC7F7FB3A8
-EF0FFF94B512F0040314FC040F14FF4C8193267FC03F7F9326FE001F7FDB81F86D7FDB83
-E07FDB87C06D7F5E038FC780159E039C8015BC03B88215F0A35DA35DB3B3B7D8F007B712
-80A651647BE35A>I<EB0FE0EB3FF8497E497E487F4880A24880A76C5CA26C91C7FC6C5B
-6D5A6D5AEB0FE090C9FCAF903807FF80007FB5FCA6C6FC7F7FB3B3AEB712C0A622657BE4
-2C>I<903807FF80B6FCA6C6FC7F7FB3B3B3B3ADB712E0A623647BE32C>108
-D<902607FF80D90FFFEE7FF8B691B500F00207B57E040302FC021F14E0040F02FF027F14
-F84C6F90B67E93267FC03F9027C003FE017F9326FE001F9027E007F0007FC6DA81F86D90
-26F00FC06D7F6DD983E06D4AC77E6DD987C06DD9F83E6E7F4C163C038FC76E4882039E5F
-039C6E4A8003BC16FD03B8DCFFC08203F05FA34B94C8FCA34B5EB3B3B7D8F007B7D8803F
-B612FCA67E417BC087>I<902607FF80EB0FFFB691B512F0040314FC040F14FF4C819326
-7FC03F7F9326FE001F7FC6DA81F86D7F6DD983E07F6DD987C06D7F5E038FC780159E039C
-8015BC03B88215F0A35DA35DB3B3B7D8F007B71280A651417BC05A>I<923807FFE092B6
-FC020715E0021F15F8027F15FE494848C66C6C7E010701F0010F13E04901C001037F4990
-C87F49486F7E49486F7E49486F7E48496F13804819C04A814819E04819F04A814819F8A3
-48496F13FCA34819FEA4B518FFAD6C19FEA46C6D4B13FCA36C19F8A26C6D4B13F0A26C6D
-4B13E06C19C06E5D6C19806C6D4B13006D6C4B5A6D6C4B5A6D01C001035B010701F0010F
-13E06D01FE017F5B010090B7C7FC023F15FC020715E0020092C8FC030713E048437CC151
->I<902607FF80EBFFF0B6010FEBFF80043F14F00381B612FC038315FF92268FFE0080DB
-BFF0011F13E0C6DAFF806D7F6D91C700037F6D01FC6E7F4B6E7F4B824B6F13804B811BC0
-7313E0A27313F0A21BF885A21BFCA385A21BFEAC1BFC61A31BF8A2611BF0A24F13E0A21B
-C0616F4B13801B006F92B5FC6F4A5B6F4A5B6F4A5B6F6C011F13E0DBDFE0495B9226CFFC
-03B55A03C7B648C7FC03C115F8DBC07F14C0041F49C8FC040113E093CBFCB3A3B712F0A6
-4F5D7BC05A>I<D90FFFEB07F8B6EB3FFF4C13C04BB512F04B14F8923907F87FFCED0FE0
-C6923880FFFE6D495A6DD91E0113FF153CA21578A2DB700013FE15F04BEB7FFCA2EF1FF0
-EF07C04B90C7FCA55DB3B0B712F8A638417BC042>114 D<DA3FFFEB07800103B5EAF00F
-011FECFE3F017F91B5FC90B8FC0003EBE0004848C7121FD80FF81407484814014980003F
-167F5B007F163FA2171F12FFA27FA27F01FC92C7FC13FF14C06C13FEECFFF8EDFFC06C15
-F816FF6C16C06C826C16F86C826C826C82013F1680010F16C01303D9007F15E01403DA00
-0F14F0ED007F160F040313F8007C8100FC81177F6C163FA2171F7EA218F07F7FEF3FE07F
-6D16C06D157F6DEDFF8001FF4A130002C0EB07FE02F8EB7FFC019FB65A010715E0D8FC01
-1580486C6C01FCC7FC48010713C035437BC140>I<EC07E0A6140FA5141FA3143FA2147F
-A214FF5BA25B5B5B5B137F48B5FC000F91B512FEB8FCA5D8001F01E0C8FCB3AFEF0FC0AC
-6D1680171F816D16005F6D6D133E6F137E6D6D5B6D9038FF03F86E13FF021F14E002075C
-020191C7FC9138001FFC325C7DDA3F>I<902607FFC0ED3FFEB60207B5FCA6C6EE00076D
-826D82B3B3A260A360A2606D160E181E606D6D147C4E7F6D6D4948806D6DD907E0ECFF80
-6D01FEEB3FC06D90B65A023F5D020F14FC020314F0DA001F018002F0C7FC51427BC05A>
-I<B700C00103B512FCA6C66C01C0C8381FFE006D6DED07F0A26D6D5E190F6D6D5E191F6D
-606F153F6D95C7FC6F5DA26D6D157E19FE6D6E5C18016E5E7013036E5E701307A26E6D5C
-180F6E6D5C181F6E6D5C183F6E93C8FC705BA26E6D13FEA26E6E5A17816FEBC1F817C36F
-5C17E76F5C17FFA26F5CA26F5CA26F91C9FCA26F5BA36F5BA2705AA2705AA2705AA2705A
-4E417DBF55>I<007FB600C0017FB512F8A6D8001F01F8C70003EBE0006D040090C7FC6D
-6D4A5A6D6D4A5A6D6D4A5A70495A6D4C5A6E7F6E6D495A6E6D495A7049C8FC6E4A5A6E6D
-485A6E6D485A6E13FFEF8FF06EEC9FE06FEBFFC06F5C6F91C9FC5F6F5B816F7F6F7F8481
-707F8493B57E4B805D4B80DB0FF37FDB1FE17F04C080153F4B486C7F4B486C7F4A486D7F
-4A486D7F4A5A4B6D7F020F6E7F4A486D7F4A486D804A5A4AC86C7F49486F7F4A6F7F0103
-707FEB3FFFB600F049B7FCA650407EBF55>120 D<B700C00103B512FCA6D8003F01C0C8
-381FFE006FED07F0A26D6D5E190F6D6D5E191F6D6D5E193F6D95C7FC6F5D6D177E6F15FE
-A26D6E495AA26E6D5C18036E6D5C18076E5E70130F6E5E70131FA26E6D495AA26E6D91C8
-FC606E6D137E18FE6E5D17816F5C17C3A26FEBE7F0A26FEBF7E017FF6F5CA26F5CA26F91
-C9FCA36F5BA26F5BA2705AA2705AA2705AA35FA25F163F94CAFC5E167E16FED807E05CD8
-1FF81301487E486C495AA2B5495AA24B5A5E151F4B5A6C4849CBFC15FEEBFC01393FF807
-FC391FF03FF06CB55A6C5C6C91CCFCC613FCEB1FE04E5D7DBF55>I<0007B912E019F0A4
-02FCC714E04801C016C091C7481480495C491700494A5B494A5B5E495E4C5B494A5B93B5
-FC604B5C001F4A91C7FC495B5F4B5B4B5B5DC85C4B5B92B55A5C5F4A91C8FC5C4A5B5E4A
-5B5C4CEB03F04A5B91B55A5B5E4991C7FC494914074917E05D495B495B49160F5D90B55A
-484A141F5A92C8123F4849157F484915FF485E4A14074849021F13C0484BB5FCBAFCA47E
-3C407CBF48>I E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fp cmtt10 10.95 86
-/Fp 86 127 df<121C127FA2EAFF80B2EA7F00B1123EC7FCA9121C127FA2EAFF80A3EA7F
-00A2121C09396DB830>33 D<003C131E00FEEB3F80A26C137FA248133FB3007E1400007C
-7F003C131E191B75B830>I<903903800380496C487E496C487EA8011F131F02C05BA400
-3FB612FE4881B81280A36C16006C5D3A003F803F80017F137F020090C7FCA9495B495B00
-3FB612FE4881B81280A36C16006C5D2701FC01FCC7FCA30003130301F85BA86C486C5A6C
-486C5A29387DB730>I<147814FCA5EB03FF011F13E090B512FC4880000780481580261F
-FCFC13C001F0EB3FE0D83FC0130FD87F80EB07F001001303007E15F812FE5A1507A3ED03
-F07E007E91C7FC127FEA3F8013E0EA1FF8EA0FFF7E6CEBFF80C614F0013F7F010F13FE01
-007F168002FC13C0153FED0FE0ED07F0A21503007E15F81501B4FCA35A1503A2007E15F0
-007F1407ED0FE0D83FC0131FD81FE0EB7FC09039FCFDFF806CB612006C5C6C5CC614F001
-3F13C0D903FEC7FCEB00FCA6147825477BBE30>I<EB07C0EB1FF0497E497E13FF803801
-FC7EEBF83EEBF03F00037F13E0A55CA2143E91387E1FFF9026F0FE3F1380000113FC13F1
-EBF3F89026F7F01F130001FFEB07C06C13E0ECC00F02805BEC001F4892C7FC5B00035C48
-6C133E5A48EB807ED83FCF137C90388FC0FCD87F075B007E13E101035B00FE13F338FC01
-FB6DB45AA26E5A023F13079238800F80A26CEB7FC0007E9038FFE01FD87F0113F0018790
-38FC3F00263FFFF9B5FC6C01F15B14E06C9038C03FFC6C9038001FF8D800F8EB03E0293A
-7DB830>38 D<141E147F14FF5BEB03FEEB07F8EB0FF0EB1FE0EB3FC0EB7F80EBFF005B48
-5A485A5B12075B120F5B121F5B123F90C7FCA25A127EA412FE5AAB7E127EA4127F7EA27F
-121F7F120F7F12077F12037F6C7E6C7E7FEB7F80EB3FC0EB1FE0EB0FF0EB07F8EB03FEEB
-01FF7F147F141E184771BE30>40 D<127812FE7E7F6C7EEA1FE06C7E6C7E6C7E6C7E6C7E
-7FEB3F80EB1FC0130F14E0130714F0130314F8130114FC1300A214FE147EA4147F143FAB
-147F147EA414FE14FCA2130114F8130314F0130714E0130F14C0131FEB3F80EB7F005B48
-5A485A485A485A485AEA7FC0485A90C7FC5A1278184778BE30>I<14E0497EA70030EC01
-80007CEC07C000FFEC1FE00181133F01E113FF267FF9F313C0261FFDF713000007B512FC
-000114F06C5C013F1380D90FFEC7FC90383FFF8090B512E04880000714FC391FFDF7FF26
-7FF9F313C026FFE1F013E00181133F0101131F007CEC07C00030EC0180000091C7FCA76D
-5A23277AAE30>I<141C143E147FAF003FB612FE4881B81280A36C16006C5DC76CC8FCAF
-143E141C29297DAF30>I<EA07C0EA0FF0EA1FF8123F13FCA213FEA2121F120F1207EA00
-7E13FE13FC1201A2EA07F8EA0FF0123FEAFFE013C01380EA7E0012380F18708A30>I<00
-3FB612E04815F0B712F8A36C15F06C15E025077B9E30>I<120EEA3F80EA7FC0EAFFE0A5
-EA7FC0EA3F80EA0E000B0B6E8A30>I<16E0ED01F0ED03F8A2150716F0150F16E0151F16
-C0153F1680A2157F16005D5D14015D14035D14075D140F5D141F5DA2143F5D147F92C7FC
-5C5C13015C13035C13075C130F5C131F5CA2133F5C137F91C8FC5B5B12015B12035B1207
-5B120F5BA2121F5B123F5B127F90C9FC5A5AA2127C123825477BBE30>I<EB01FCEB07FF
-011F13C0497F497F90B57E48EB07FC3903FC01FE48486C7E497F4848EB3F8049131F001F
-15C049130F003F15E090C71207A2007EEC03F0A548EC01F8AD6C1403007E15F0A3007F14
-07A26C15E06D130FA2001F15C06D131F6C6CEB3F80A26C6CEB7F006D5B6C6C485A3901FF
-07FC6CEBFFF86D5B6D5B6D5B010790C7FCEB01FC253A7BB830>I<EB0380497EA2130FA2
-131F133FA2137FEA01FF5A127FB5FCA213CF138FEA7C0F1200B3B0007FB512F8A2B612FC
-A26C14F8A21E3976B830>I<EB07FC90383FFF8090B512F00003804814FE4880261FF807
-1380EBE000D83F80EB3FC048C7EA1FE0007E140FED07F000FE1403A26C15F81501A2127E
-A21218C8FCA2150316F0150716E0150F16C0151FED3F80ED7F005D4A5A4A5A4A5A4A5A4A
-5AEC7FC04A5A4990C7FC495AEB07F8495AEB3FE0495A495A4890C8FCD803FC14F04848EB
-01F8EA1FF0485A48B6FCB7FCA46C15F025397BB830>I<EB03FF011F13E090B512F84814
-FE4880481580260FFC0013C001F0133FD81FC0EB0FE06D130716F01503A26C5A6C5AC8FC
-150716E0A2150FED1FC0153FEDFF8002071300903807FFFE495B5D8115FF6D148090C713
-C0ED1FE0ED0FF0ED07F8150116FC150016FE167EA21218127EB4FCA216FE16FC481401A2
-007FEC07F86DEB0FF0D83FE0131FD81FFCEBFFE06CB612C06C15806C1500C614FC011F13
-E0010390C7FC273A7CB830>I<EC03FC4A7E140FA2141FEC3FBE153E147F147E14FEEB01
-FC14F81303EB07F014E0130F14C0131FEB3F8014005B13FE5B12015B1203485A5B120F48
-5A5B123F90C7FC5A12FEB8FC1780A46C1600C8003EC7FCAA91383FFFFE4A7FA46E5B2939
-7DB830>I<000FB612804815C0A416800180C8FCAEEB81FF018F13E001BF13F890B57E81
-81D9FE0113809039F0007FC049131F49EB0FE04913076CC713F0C81203A216F81501A412
-3C127EB4FC150316F015074815E0007E140F007FEC1FC06D137FD83FE0EBFF80261FF807
-13006CB55A6C5C6C5C6C14E0D8003F1380D907F8C7FC25397BB730>I<EC0FF0ECFFFE01
-037F010F14804914C04914E090387FF00F9039FF8007F048EB000FEA03FC5B485A4848EB
-07E0ED03C0484890C7FC5B123F90C9FCA25A127E903803FF80011F13F0D8FE7F7F48B512
-FE00FD80B7FCD9FC00138001F0EB3FC001C0131F49EB0FE090C7EA07F0A248140316F815
-01A3127EA4127F6C14036D14F0A2001F14076DEB0FE06C6C131F6DEB3FC06C6CEB7F803A
-03FE01FF006CB6FC6C5C6D13F86D5B010F13C0D901FEC7FC253A7BB830>I<1278B712FC
-16FEA416FC00FCC7EA03F8ED07F0ED0FE00078EC1FC0C8EA3F80ED7F00157E15FE4A5A5D
-4A5A14075D140F5D4A5AA24AC7FCA2147EA214FE5C13015CA213035CA213075CA3130F5C
-A5131F5CA96DC8FCA2273A7CB830>I<49B4FC011F13F0017F13FC90B57E0003ECFF8048
-15C04848C613E0D81FF8EB3FF001E0130F4848EB07F849130348C7EA01FC007E1400A500
-7F14016C15F86D13036C6CEB07F06C6CEB0FE0D807F8EB3FC03A03FF01FF806C90B51200
-6C6C13FC011F13F0497F90B512FE48802607FE0013C0D80FF0EB1FE04848EB0FF0D83F80
-EB03F890C712014815FC007E140000FE15FE48157EA66C15FE007E15FC007F14016C6CEB
-03F86D13076C6CEB0FF001F8133FD80FFEEBFFE06CB612C06C1580C6ECFE006D5B011F13
-F0010190C7FC273A7CB830>I<EB01FC90381FFF80017F13E090B512F8488048803807FE
-03390FF800FFD81FE0EB7F804848133F49EB1FC048C7120F007E15E0150712FE4815F015
-03A416F8A37E127E007F1407A26C6C130F6C6C131F6D137F390FF801FF6CB6FC15FD6C14
-F9C614F36D13C390390FFE03F090C7FCA2150716E0150F16C0151F121E003FEC3F80486C
-EB7F005D4A5A4A5AEB000F393FC03FF890B55A6C5C6C14806C91C7FC000113F838003FC0
-253A7BB830>I<120EEA3F80EA7FC0EAFFE0A5EA7FC0EA3F80EA0E00C7FCB1120EEA3F80
-EA7FC0EAFFE0A5EA7FC0EA3F80EA0E000B276EA630>I<EA0380EA0FE0EA1FF0EA3FF8A5
-EA1FF0EA0FE0EA0380C7FCB1EA0780EA0FE0EA1FF0123F13F8A4121F120F120712011203
-13F0A21207EA0FE0121FEA7FC0EAFF8013005A127C12380D3470A630>I<16E0ED01F0ED
-07F8150F153FEDFFF04A13E0020713C04A1300EC3FFEEC7FF8903801FFE0495B010F90C7
-FC495AEB7FF8495A000313C0485BD81FFEC8FC485AEA7FF0485A138013E06C7EEA3FFC6C
-7E3807FF806C7FC613F06D7EEB1FFE6D7E010313C06D7F9038007FF8EC3FFEEC0FFF6E13
-C0020113E06E13F0ED3FF8150F1507ED01F0ED00E0252F7BB230>I<003FB612FE4881B8
-1280A36C16006C5DCBFCA7003FB612FE4881B81280A36C16006C5D29157DA530>I<1238
-127CB4FC7F13E0EA7FF86C7E6CB4FC00077F6C13E0C67FEB3FFC6D7E903807FF806D7F01
-0013F06E7EEC1FFE6E7E020313C06E13E09138007FF0ED3FF8150F153FED7FF0913801FF
-E04A13C0020F13004A5AEC7FF84A5A010313C0495BD91FFEC7FC495AEBFFF000035B4813
-80001F90C8FCEA3FFC485AEAFFE0138090C9FC127C1238252F7BB230>I<EC1FE0ECFFF8
-010313FE010F7F4914804914C090397FE01FE09038FF800F3A01FE0007F0484813039039
-F801F9F83907E007FF000F131F494813FCEA1F80495A48EBFF0F003EEBFC03903901F801
-FE007EEBF000EA7C034A137EA2EAFC0712F84A133EA86E137E12FCD87C03147CA26E13FC
-D87E0114F8003EEBF801903900FC03F0003FEBFF0F6C90387FFFE06D6C13C0EA0FC06D6C
-13800007903807FE003903F801F86DC7127C6C6C14FE3900FF800390387FE00F6DB512FC
-6D14F86D14E0010314C00100EBFE00EC1FF0273A7CB830>64 D<EC3F804A7EA44A7EA214
-FBA201017FA214F1A201037FA414E001077FA490380FC07EA4011F137F4A7EA449486C7E
-A4498091B5FCA490B67EA29038FC0007A2000181491303A3000381491301A2D87FFF9038
-1FFFC06E5AB515E0A26C16C04A7E2B397EB830>I<007FB512F0B612FE6F7E82826C813A
-03F0001FF815076F7E1501150082167EA516FE5E15015E15074B5AED7FE090B65A5E4BC7
-FC6F7E16E0829039F0000FF8ED03FCED00FE167E167F82A2EE1F80A6163F17005EA2ED01
-FE1503ED0FFC007FB65AB7FC16E05E93C7FC6C14FC29387EB730>I<91383F801C903901
-FFF03E0107EBFC7E011F13FE4913FF4914FE9038FFC07F48EB001F4848130F4913074848
-1303484813015B48481300A2485A167E90C8FC5A127E163C160012FEA25AAA7EA2127EA2
-163C007F157E7E7FA26C7E16FE6C6C14FC6D13016C6C14F86C6C13036DEB07F06C6C130F
-6C9038C03FE06DB512C06D14806D1400010713FC010113F09038003F80273A7CB830>I<
-007FB512E015FCB67E6F7E6C81823A03F0007FF0ED1FF815076F7E6F7E1500167FA2EE3F
-80A2161F17C0A2160FA317E01607AB160F17C0A3161F1780163FA2EE7F00A216FE15014B
-5A1507ED1FF8ED7FF0007FB65A5EB75A93C7FC6C14FC15E02B387FB730>I<007FB612FE
-B8FCA47ED803F0C7123FA8161E93C7FCA4157815FCA490B5FCA6EBF000A4157892C8FCA5
-EE0780EE0FC0A9007FB7FCB8FCA46C16802A387DB730>I<007FB7128017C0B8FCA27EA2
-D801F8C7120FA8EE078093C7FCA5151E153FA490B6FCA69038F8003FA4151E92C8FCAE38
-7FFFF080B5FCA27E5C2A387EB730>I<027F1370903903FFC0F8010F13F1013F13FD4913
-FF90B6FC4813C0EC003FD803FC131F4848130F5B484813075B001F14035B123F90C71201
-A25A127E6F5A93C7FC12FE5AA992B5FC17805C7E007E7F1700ED01F8127F6C1403A27F12
-1F6D1307120F7F6C6C130F6D131F6C6C133F6CB4137FEC80FF6C90B5FC6D13FD6D13F901
-0F13F10103EBC0F0D9007EC8FC293A7DB830>I<3B7FFF803FFFC0B56C4813E0A46C496C
-13C03B03F00001F800B290B6FCA69038F00001B3A23B7FFF803FFFC0B56C4813E0A46C49
-6C13C02B387EB730>I<007FB512FEB7FCA46C14FE390007E000B3B3A8007FB512FEB7FC
-A46C14FE203878B730>I<387FFFF8B5FC80A25C7ED801F8C9FCB3B0160FEE1F80A9007F
-B7FCB8FCA46C160029387DB730>76 D<D87FF0EC7FF06D14FF00FF16F86D5B007F16F0A2
-D807DE903803DF00A301DF130701CF149FA2EC800FA201C7141FECC01FA201C3131EECE0
-3EA201C1133CECF07CA39038C0F8F8A3EC78F0147DA2EC3DE0143FA2EC1FC0A2EC0F80EC
-070091C7FCADD87FFC903801FFF0A2486C4913F8A26C486D13F0A22D387FB730>I<D87F
-F890381FFFC0486C4913E0A27FA26C6C6D13C0D803EF903800F800A28013E7A28013E380
-A213E180A213E080A2147CA380A2141E141FA2801580A2EC07C0A3EC03E0A2140115F0A2
-140015F8A21578157C153CA2153E151EA2D87FFF131FB5EA800FA21507A26C496C5A2B38
-7EB730>I<90383FFFE048B512FC000714FF4815804815C04815E09038F0007F01C0131F
-4848EB0FF090C71207A2007E1403A300FE15F8481401B3A96C1403A2007E15F0A3007F14
-07A26D130F6C6CEB1FE001F813FF90B6FC6C15C06C15806C1500000114FCD8003F13E025
-3A7BB830>I<007FB512E0B612FC15FF16C016E06C15F03903F0003FED0FF8ED03FC1501
-ED00FEA2167E167F163FA6167F167E16FEA2ED01FC1503ED0FF8ED3FF090B6FC16E016C0
-160015FC15E001F0C8FCB0387FFF80B57EA46C5B28387DB730>I<007FB5FCB612E015F8
-15FE816C812603F0017F6E6C7E151F6F7E15071503821501A515035E1507150F4B5A157F
-4A485A90B65A93C7FC5D5D8181D9F0017FEC007FED1FC0150F821507A917F0EEE1F8A316
-F13A7FFF8003F3B500C0EBFFF0A26F13E0816C49EB7FC0C9EA1F002D397EB730>82
-D<90390FF801C090397FFF03E048B512C34814F74814FF5A381FF007383FE00190388000
-7F48C7123F007E141F12FE48140FA21507A46CEC03C0007E91C7FC127F6C7E13E0EA1FF8
-6CB47E6C13F86CEBFF806C14F0D8003F13FC01077F9038007FFF020713809138007FC015
-3FED0FE0ED07F01503A216F80078140112FCA56C140316F06C14077F6DEB0FE001F0EB3F
-C001FE13FF90B61280160000FD5CD8F87F13F8011F13E0D870011380253A7BB830>I<00
-7FB712C0B812E0A53AFC001F8007A80078ED03C0C791C7FCB3B1010FB5FC4980A46D91C7
-FC2B387EB730>I<3B7FFF800FFFF0B56C4813F8A46C496C13F0D803F0C7EA7E00B3B16D
-14FE00015DA26D1301A26C6C495AA2017F495A90393FC01FE0ECF07F6DB55A6D5C6D91C7
-FC6D5B010013F8EC1FC02D397FB730>I<D87FFE90380FFFC0B54913E0A46C486D13C0D8
-07E0903800FC00A26D130100035DA36D130300015DA36D130700005DA36D130F017E5CA3
-017F131F6D5CA3EC803F011F91C7FCA490380FC07EA46D6C5AA4903803F1F8A401015B14
-FBA301005B14FFA36E5AA36E5A2B397EB730>I<D87FF8ECFFF0486C4913F8A46C486D13
-F0001FC8EA07C06C6CEC0F80A76D141F00071600A73A03E01FC03EEC3FE0A4EC7DF0A300
-01153C01F0147CECF8F8A59038F1F07C00001578A201F914F8A2ECE03CA201FB133E017B
-5CECC01EA4017F131FEC800FA2013F5CA2EC0007011E6D5A2D397FB730>I<3A3FFF807F
-FE92B5FC487FA26C5B6F5A3A00FC001FC06D5C017E133F017F91C7FC6D5BEC807E011F13
-FE6E5AEB0FE15DEB07F35DEB03FF5D7F6D5BA26E5AA26EC8FCA24A7EA24A7EA2497FA290
-3803FBF014F3903807F1F814E190380FE0FC14C0011F137EEC807F013F7F02007F49131F
-017E8001FE130F49800001140749801503D87FFF90381FFFC05DB5008014E0A26C010014
-C0812B387EB730>I<003FB612FC4815FEA416FC007EC71201ED03F8ED07F0A2ED0FE0ED
-1FC0A2ED3F80003CEC7F00C8FC15FE4A5A5D14034A5A4A5AA24A5A4A5AA24AC7FC14FEA2
-495A495AA2495A495AA2495A495A91C8FC5B13FE4848143C167E485A485AA2485A485AA2
-485A48C8FC90B612FEB7FCA46C15FC27387CB730>90 D<007FB5FCB61280A4150000FCC8
-FCB3B3B3A5B6FC1580A46C140019476DBE30>I<1238127C12FEA27E7E7F123F7F121F7F
-120FA27F12077F12037F12017F12007F7F80133F80131FA280130F801307801303801301
-801300808081143F81141FA281140F81140781140381140181140081811680153FA216C0
-151F16E0150F16F0150716F81503A2ED01F0ED00E025477BBE30>I<007FB5FCB61280A4
-7EC7121FB3B3B3A5007FB5FCB6FCA46C140019477DBE30>I<1307EB1FC0497EEBFFF800
-0313FE000FEBFF80D81FFD13C0D87FF813F039FFE03FF8EB800FEB0007007CEB01F00070
-EB00701D0D77B730>I<003FB612E04815F0B712F8A36C15F06C15E025077B7D30>I<EB3F
-F03801FFFE0007EBFFC04880488048809038C00FFCEC03FE1400157F6C487F0006C77FC8
-121FA4EC1FFF0103B5FC133F90B6FC1203000FEBFC1F381FFE00EA3FF013C048C7FC12FE
-5AA4153F7E007F14FF6D5A263FE00FEBFF806CB712C0A26C14EF6C14870001D9FC001380
-26003FE090C7FC2A2A7BA830>97 D<EA7FF87F12FFA2127FA21200AAEC03F8EC1FFF027F
-13C091B57E90B612F8A29138F80FFC9138E003FE4AC67E4A7F91C7EA3F8049141F17C049
-140FA217E0A21607A7160FA26D15C0161FA26DEC3F80167F6EEBFF006E485AECE0039138
-F80FFC91B55A01FD5C01FC5C6E13809026781FFEC7FC90380007F02B397FB730>I<49B4
-7E010F13F0013F13FC497F48B6FC4815803907FE007F13F8485A485A49EB3F004848130C
-90C9FC5A127EA212FE5AA87E127EA2127FED07806C6CEB0FC07F6C6C131F6C6C148001FC
-133F6CB4EBFF006C90B5FC6C5C6C5C013F13F0010F13C0D901FEC7FC222A79A830>I<91
-3803FFC0825CA280A2EC0007AAEB01FC90380FFF87013F13E790B512F74814FF5A3807FE
-03380FF80049137F4848133F4848131F49130F48C7FC1507127E12FEA25AA77E150F127E
-A2007F141F7E6D133F6C6C137F6D13FF380FF8012607FE07EBFFC06CB7FC6C02F713E06C
-14E76D01C713C0011F1303D903F8C8FC2B397DB730>I<EB01FE90380FFFC0013F13F090
-B57E488048803907FE01FFD9F80013804848133F4848EB1FC049130F484814E090C71207
-5A127E16F000FE14035AB7FCA516E000FCC9FC7E127E127FA26C6CEB01E06DEB03F0121F
-01F013076C6CEB0FE0D807FE131F3A03FF807FC06C90B512806C15006D5B011F5B010713
-F0010090C7FC242A7BA830>I<157F913803FFE0020F13F0143F4A13F8A2ECFF07EB01FE
-9138FC03F0903903F800C04A1300A8007FB612C0B712E0A46C15C0260003F0C7FCB3A900
-3FB6FCA2481580A26C1500A225397DB830>I<D903FC137F903A0FFF03FFC0013F13CF90
-B712E05A5AD9FE07EB07C03B07F801FE0380D9F00090C7FC4848137F497F001F8149131F
-A66D133F000F92C7FC6D5B6C6C13FEEBF8013903FE07FC90B55A5A5D4814C0018F90C8FC
-EB83FC0180C9FCA27F12077F6CB512F015FF4815E0488148813A3FC0000FFC49EB00FE00
-7EC8127F007C8100FC81178048150FA46C151F007EED3F00007F5D6C6C14FE01E01303D8
-1FFEEB3FFC6CB65A6C5D000115C06C6C91C7FC011F13FC010113C02B3E7DA730>I<EA7F
-F87F12FFA2127FA21200AAEC03F8EC1FFF027F7F91B57E01FD8090B6FC9138F80FF0ECE0
-074A6C7E1480EC0001A25BA25BB3A23B7FFFF83FFFF05DB500FC14F8A26C01F814F0812D
-387FB730>I<EB01C0EB07F0A2497EA36D5AA2EB01C090C9FCA9383FFFF0487FA47EEA00
-01B3A9007FB6128016C0B7FCA27E1680223979B830>I<EC01C0EC07F0A2EC0FF8A3EC07
-F0A2EC01C091C7FCA990387FFFF090B512F8A47FEB0001B3B3A5140315F0007E130715E0
-B4130FEC1FC0147F90B512806C14005C6C5B000F13F0000113801D4E7CB830>I<EA7FF0
-487EA4127F1200AB0203B512805C17C0A21780809139001FC0004B5A03FFC7FC4A5A4A5A
-4A5AEC0FE04A5A4A5A4AC8FC5C01F97F01FB7F90B57E14E7ECC3F0EC81F8EC00FC5B4913
-7E497F6F7EA26F7E6F7E6F7EA23B7FFFF01FFFE0B56C5A17F0A217E06C497E2C387EB730
->I<387FFFF0B57EA47EEA0001B3B3A8007FB612E0B712F0A46C15E024387AB730>I<9039
-01F001F03A7F8FFC0FFC3AFFDFFE1FFE90B5487E92B51280A23A7FFE1FFE1F3B07FC0FFC
-0FC001F813F89039F007F00701E013E0A401C013C0B3A23B7FFC1FFC1FFC3BFFFE3FFE3F
-FEA43B7FFC1FFC1FFC2F2880A730>I<EC03F8397FF81FFFD9FC7F7F00FF90B57E01FD80
-6CB6FC9138F80FF0C6EBE0074A6C7E1480EC0001A25BA25BB3A23B7FFFF83FFFF05DB500
-FC14F8A26C01F814F0812D287FA730>I<EB01FC90380FFF80013F13E090B512F8488048
-803907FE03FF260FF800138049137FD81FC0EB1FC0A24848EB0FE090C712074815F0007E
-1403A200FE15F8481401A86C1403007E15F0A2007F1407A26C6CEB0FE06D131F6C6CEB3F
-C06D137F6C6CEBFF802607FE0313006CB55A6C5C6C5C013F13E0010F1380D903FEC7FC25
-2A7BA830>I<EC03F8397FF81FFFD9FC7F13C000FF90B57E90B612F87E9138F80FFCC690
-38E003FE4AC67E4A7F91C7EA3F8049141F17C049140FA217E0A21607A7160FA26D15C016
-1FA26DEC3F80167F6EEBFF006E485AECE0039138F80FFC91B55A01FD5C01FC5C6E1380DA
-1FFEC7FCEC07F091C9FCAD387FFFF8A2B57EA26C5BA22B3C7FA730>I<903901FC01E090
-390FFF83F0013F13E390B512F34814FB4814FF481301380FF80049133F4848131F484813
-0F5B48C71207A2127E150312FE5AA77E1507127E127F150F6C7E151F6C6C133F6D137FD8
-0FF813FF3807FE036CB6FC6C14FB6C14F36D13C3011F1303EB03F890C7FCAD4AB512E04A
-14F0A46E14E02C3C7CA730>I<ED0FF0D87FFFEB7FFEB50081B5FC1487028F1480149F6C
-9038BFF07F39001FFFC09238003F004A130C4A90C7FC5C5C5CA25CA45CAF007FB512FCB6
-FC81A25D7E29287DA730>I<90381FFC0E90B5129F000714FF5A5A5A387FE007EB800100
-FEC77E5A81A37E007F141E01C090C7FCEA3FF8381FFFE06C13FF000314C0C614F0010F13
-FC9038007FFEEC03FFEC007F0078EC3F8000FC141FED0FC0A27EA27E151F01C0EB3F806D
-137F9039F803FF0090B6FC5D5D00F814F0013F13C0267007FEC7FC222A79A830>I<EB07
-80497EAA007FB612E0B712F0A46C15E026000FC0C7FCB2167816FCA5ECE001ED03F89038
-07F0079138FC0FF06DB512E07F16C06D1400EC3FFCEC07F026337EB130>I<D87FF8EBFF
-F06D8000FF5BA2007F7FA200001401B3A41503A21507150F6D131F903A7F807FFFF091B6
-FC6D15F8A26D01F913F0010713E0010090C8FC2D287FA630>I<3B7FFF803FFFC0B56C48
-13E0A46C496C13C03B01F00001F000A26D130300005DA2017C495AA36D495AA36D49C7FC
-A390380F803EA36D6C5AA2ECE0FC01035BA214F101015BA214FB01005BA214FF6E5AA302
-1FC8FC2B277EA630>I<3B7FFF800FFFF06E5AB515F8A26C16F04A7ED807C0C7EA1F00A2
-6D5C0003153EA56D147E0001157CEC0FC0EC1FE0EC3FF0A32600F87F5BEC7DF8147CA214
-FC01786D5AA290387CF87C137D157D14F0013DEB3DE0013F133FA2ECE01FA2011F5C6D48
-6C5A2D277FA630>I<263FFFC0B5FC48168014E1A214C06C16003A007E001F806D49C7FC
-EB1F80157E6D6C5A6D6C5AEB03F1903801F3F0ECFFE06D5B147F6E5A92C8FCA2814A7E4A
-7EEB01F3ECF1F0903803E0F849487E010F137C49487EEC003F496D7E017E6D7E4913073B
-7FFF803FFF806E4813C0B5FCA27E4A6C13802A277EA630>I<3B7FFF803FFFC06E4813E0
-B5FCA27E4A6C13C03B01F80001F000120015036D5C137C4B5A7FA2013F495A7FA26E48C7
-FC130F14C00107133EA214E001035BA2EB01F05DA2EB00F85D1479147D5D143FA26E5AA3
-6E5AA2141F92C8FCA25C143EA2147E147C120F486C5AEA3FC113C3EB07F0495A13FF6C5B
-5C6C90C9FCEA07FCEA01F02B3C7EA630>I<003FB612FC4815FEA416FC007EC7EA07F8ED
-0FF0ED1FE0ED3FC0ED7F80003CECFF00C7485AEC07FC4A5A4A5A4A5A4A5A4A5A4990C7FC
-495A495A495A495A495A495A49C7121E4848143F485A485A485A485A485A48B7FCB8FCA4
-6C15FE28277DA630>I<ED1FF0EDFFF814075C143F16F091387FE00092C7FC14FE5CB3A2
-1301495A130F383FFFF0485BB55A91C8FC14C06C7F6C7F38000FF813036D7E1300B3A280
-147F15E091383FFFF016F8140F801400ED1FF025477BBE30>I<1238127C12FEB3B3B3AD
-127C123807476CBE30>I<EA7FC0EAFFFCEBFF808014F07E38001FF813036D7E1300B3A2
-80147F15C091383FFFE06E13F06E13F81403140F4A13F04A13E091387FC00092C7FC14FE
-5CB3A21301495A131F387FFFF0B5FC14C05C01FCC8FCEA7FC025477BBE30>I<01781338
-D803FE137C3907FF80FE001F13C148EBE7FC4813FF01CF13F8D8FF0713F0486C13C0D87C
-0013800038EB3C001F0B78B730>I E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fq cmsy10 10.95 3
-/Fq 3 16 df<007FB812F8B912FCA26C17F83604789847>0 D<EE3FFC0307B512E0033F
-14FC92B7FC0203D9E00713C0DA0FFCC7EA3FF0DA1FE0EC07F8DA3F80EC01FC02FEC9127F
-D901F8EE1F804948707E4948707ED90F80EE01F049CB7E013E187C49840178181E01F818
-1F4848F00F804848F007C049180300071AE0491801000F1AF090CDFC481AF8001E1A78A2
-003E1A7C003C1A3CA2007C1A3E00781A1EA300F81A1F481A0FAD6C1A1F00781A1EA3007C
-1A3E003C1A3CA2003E1A7C001E1A78A2001F1AF86C1AF06D180100071AE06D180300031A
-C06D18076C6CF00F806C6CF01F000178181E017C183E6D606D606D6C4C5AD907E0EE07E0
-6D6C4C5A6D6C4C5AD900FE047FC7FCDA3F80EC01FCDA1FE0EC07F8DA0FFCEC3FF0913B03
-FFE007FFC0020090B6C8FC033F14FC030714E09226003FFCC9FC50557BC05B>13
-D<EB07F8EB3FFF90B512C0488048804880488048804880A2481580A3B712C0A86C1580A3
-6C1500A26C5C6C5C6C5C6C5C6C5C6C5C013F90C7FCEB07F822227BA72D>15
-D E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fr cmr10 10.95 81
-/Fr 81 128 df<DA03FFEB0FE0021F9038C07FF8913AFE00F1F81CD901F890383BE03ED9
-07E090387FC07F49489038FF80FF49485AD93F005C013E167E017E163C6F48130049147E
-AEB91280A3D800FCC7007EC7FCB3AE486C14FF277FFFF83F13FFA338407FBF35>11
-D<EC03FC91383FFF809138FE03C0903901F00060D907E07FD90F8013F84948487E491303
-133E137EA2496D5A6F5A93C7FCABED01FCB7FCA33900FC000315011500B3AC486C497E3B
-7FFFF87FFFF8A32D407EBF33>I<EC03FE91383FFFDC9138FE01FCEB01F0903807E003EB
-0F80EB1F005B133E017E1301017C130013FCAEB7FCA3D800FCC7FCB3AE486C497E3B7FFF
-F87FFFF8A32D407EBF33>I<DA03FEEB01FE913B1FFF801FFFC0913BFE01E07F01E0903C
-01F00070F80030D907E0D91BF07FD90F80D97FC0137C011F4A4813FE4948481401013E15
-00137EA2496D486D5A047E147896C7FCAB19FEBAFCA3D800FCC7387E00011800197EB3AC
-486C02FF14FF277FFFF83FD9FC3F13FCA346407EBF4C>I<121E123FEA7F80EAFFC0A7EA
-7F80AAEA3F00AA121EAB120CA5C7FCA9121E123FEA7F80EAFFC0A4EA7F80EA3F00121E0A
-4179C019>33 D<001E130F003FEB1F80397F803FC039FFC07FE0A201E013F0A2007F133F
-393F601FB0001EEB0F3000001300A5491360A3484813C0A23903000180A20006EB0300A2
-481306485B485B002013101C1C7DBE2D>I<121E123FEA7F80EAFFC0A213E0A2127FEA3F
-60121E1200A513C0A3EA0180A2EA0300A21206A25A5A5A12200B1C79BE19>39
-D<1430147014E0EB01C0EB0380EB0700130EA25B5B1378137013F05B1201485AA2485AA3
-48C7FCA35A121EA2123EA2123CA2127CA5127812F8B21278127CA5123CA2123EA2121EA2
-121F7EA36C7EA36C7EA26C7E12007F1370137813387F7FA27FEB0380EB01C0EB00E01470
-1430145A77C323>I<7E7E7E12707E7E7EA27E6C7E7F12017F12007F1378A27FA37FA313
-1F7FA21480A21307A214C0A5130314E0B214C01307A51480A2130FA21400A25B131EA35B
-A35BA25B5B12015B12035B48C7FC120EA25A5A5A5A5A5A135A7AC323>I<EB03C0A2805C
-A600F0140F00FC143F00FE147F00FF14FF393FC3C3FC390FE187F03903F18FC03900FDBF
-00EB3FFCEB0FF0EB03C0EB0FF0EB3FFCEBFDBF3903F18FC0390FE187F0393FC3C3FC39FF
-03C0FF00FE147F00FC143F00F0140F00001400A6805CA220277AC32D>I<121E123FEA7F
-80EAFFC0A213E0A2127FEA3F60121E1200A513C0A3EA0180A2EA0300A21206A25A5A5A12
-200B1C798919>44 D<B512FEA517057F951E>I<121E123FEA7F80EAFFC0A4EA7F80EA3F
-00121E0A0A798919>I<ED0180ED03C0A215071680A2150F1600A25D151EA2153E153CA2
-157C157815F85DA214015DA214035DA214075DA2140F92C7FCA25C141EA2143E143CA214
-7C1478A214F85CA213015C13035CA213075CA2130F91C8FCA25B131EA2133E133CA2137C
-1378A213F85BA212015BA212035BA212075B120F90C9FCA25A121EA2123E123CA2127C12
-78A212F85AA21260225B7BC32D>I<EB01FE90380FFFC090383F03F090387C00F849137C
-48487F48487F4848EB0F80A2000F15C04848EB07E0A3003F15F0A290C712034815F8A648
-15FCB3A26C15F8A56C6CEB07F0A3001F15E0A36C6CEB0FC0A26C6CEB1F80000315006C6C
-133E6C6C5B017C5B90383F03F090380FFFC0D901FEC7FC263F7DBC2D>I<14C013031307
-131F137FEA07FFB5FC139FEAF81F1200B3B3ACEB7FF0B612F8A31D3D78BC2D>I<EB07FC
-90383FFF8090B512E03901F01FF039038003FC48486C7E000C6D7E48EC7F8012380030EC
-3FC012700060EC1FE0A212FE6C15F07F150FA36CC7FC003E141F121CC813E0A3ED3FC0A2
-ED7F8016005D5D4A5A5D4A5A4A5A4A5A5D4AC7FC143E5C14F0495A5C495A49C8FC010E14
-305B5B5B4914605B485A48C8FC000615E0000FB6FC5A5A4815C0B7FCA3243D7CBC2D>I<
-EB07FC90383FFF809038F80FE03901C003F848C66C7E00066D7E48147F481580EA1F8048
-6C14C06D133FA46C5A6C48137F6CC71380C8FCA216005D5D5D4A5A5D4A5AEC0FC0023FC7
-FCEB1FFCECFF809038000FE0EC03F0EC01FC6E7E157F1680153F16C0A2ED1FE0A216F0A2
-120C123F487E487EA316E05B153F6CC713C012606CEC7F80003815006C14FE6C495A3907
-C003F83903F80FF0C6B55A013F1380D907FCC7FC243F7CBC2D>I<150EA2151E153EA215
-7E15FEA214011403157E1406140E140C141814381430146014E014C0EB01801303140013
-06130E130C5B133813305B13E05B485A120390C7FC1206120E120C5A123812305A12E0B8
-FCA3C8EAFE00AC4A7E49B6FCA3283E7EBD2D>I<00021403D807C0130F01F813FE90B55A
-5D5D5D158092C7FC38063FF890C9FCADEB01FE90380FFF8090383E03E090387001F09038
-C00078D80780137C90C77E153F0002EC1F80C8FC16C0A2ED0FE0A316F0A4123E127F5A7F
-A290C713E0A248141F006015C0A2007015800030143F003815000018147E000E5C6C495A
-3903C003F03901F00FE06CB55A013F90C7FCEB07F8243F7CBC2D>I<EC1FE0ECFFF89038
-03F01C903807800690381F0003013EEB018049130F49EB1FC04848133FA2485A120749EB
-1F80000FEC0F0092C7FC485AA2123FA348C9FCA2EB01FE903807FF8090380E03E039FF18
-00F049137849137C8149133FED1F80A24914C0150F16E0A290C7FC16F0A47EA57E7F16E0
-A2121FED1FC0120F6D14800007EC3F007F0003147E6C6C137C6C6C485A90387E07F09038
-3FFFC0010F5BD903FCC7FC243F7CBC2D>I<12301238123E003FB612FCA316F84815F0A2
-16E00070C812C00060EC0180A2ED030015065A5D5DA2C85A5D15E05D4A5A140392C7FC14
-06A2140E5CA2143C14381478A214F85CA21301A21303A3495AA4130FA6131FA96D5A6D5A
-26407BBD2D>I<EB03FC90381FFF8090383C03E09038E000F04848133C48C77E4880120E
-ED07805AED03C0A2123CA3123EA2003FEC07807FD81FE014006D5B6C6C131E01FE131C6C
-6C5B6CEBC0F06CEBE1E06CEBFF806D48C7FC6D7E010F7F15E0497F017813FC9038E03FFE
-48486C7E3803800748486C1380000E010013C0001E147F48EC1FE00038140F00781407ED
-03F0481401A31500A416E01278ED01C07EED03807E6CEC07006C6C131ED803E0137C3901
-FC03F039007FFFE0011F1380D903FCC7FC243F7CBC2D>I<EB03FCEB1FFF90383E07C090
-38F801E048486C7E484813784848137C000F805B001F80123F168048C7FC16C0A248140F
-16E0A616F0A47E151FA27E7F001F143FA26C7E0007146F6C6C13CF12013900F0018F9039
-7C070FE0EB1FFEEB07F890C7FCA2ED1FC0A31680A2ED3F00120F486C133E486C137E157C
-15FC5D49485A6C48485A0018495A000E495A2607C07FC7FC3803FFFC6C5B38003FC0243F
-7CBC2D>I<121E123FEA7F80EAFFC0A4EA7F80EA3F00121EC7FCB3121E123FEA7F80EAFF
-C0A4EA7F80EA3F00121E0A2779A619>I<007FB912E0BA12F0A26C18E0CDFCAE007FB912
-E0BA12F0A26C18E03C167BA147>61 D<EB1FF890B5FC3903E01FC039070007F0000CEB01
-F84814FC4813004814FE127C00FE14FF7EA4127E003C14FEC7120115FC140315F8EC07E0
-EC0FC0EC1F801500143E143C5C147014F05C495AA35C1303A291C7FCA990C8FCA9EB0780
-497E497E497EA46D5A6D5A6D5A20407BBF2B>63 D<1507A34B7EA34B7EA24B7EA34B7E15
-6FA2EDEFF815C7A291380187FC1583A291380303FE1501A291380600FFA34A6D7EA34A6D
-7EA34A6D7EA20270800260130FA202E0804A1307A201018191B6FCA2498191C71201A201
-068182A2496F7EA3496F7EA3496F7EA21370717E13F0486C82D80FFEED3FFCB500E0010F
-B512F8A33D417DC044>65 D<B712FCEEFF8017F00001903980000FF86C6CC7EA03FEEE00
-FFEF7F80EF3FC018E0171F18F0170F18F8A31707170FA318F0171F18E0173F18C0EF7F80
-EFFF00EE03FCEE0FF8EE7FE091B6C7FC17E091C7EA03FCEE00FEEF7F80EF3FC0EF1FE0EF
-0FF018F8170718FC1703A218FEA718FC1707A2EF0FF8EF1FF0A2EF3FE0EFFFC04C138048
-486C90380FFE00B85A17E094C7FC373E7DBD40>I<DB3FF01306913803FFFE020F9038FF
-800E913A3FF007E01E9139FF8000F0D901FCC7EA383ED907F0EC0C7E494814064948EC03
-FE4948140149C9FC13FE4848167E0003173E5B4848161E120FA24848160EA2123F5B1806
-127FA349160012FFAC127F7F1806A2123FA27F121F180C6C7EA2000717186C7E6D163800
-0117306C6C1660137F6D6C15C06D6CEC01806D6CEC03006D6C140ED901FC5C6DB46C13F8
-91393FF007F0020FB512C0020391C7FC9138003FF037427BBF42>I<B712FCEEFF8017E0
-00019039C0001FF86C6C48EB03FEEE00FFEF3F80717E717E717E717E717EA2717E848419
-80183F19C0A3F01FE0A519F0AB19E0A4183F19C0A21980187FA2190018FEA24D5A4D5A17
-074D5A4D5A4D5A05FFC7FCEE03FE48486CEB1FF8B85A178004FCC8FC3C3E7DBD45>I<B9
-12E0A3000101C0C7FC6C6C48141FEF07F01703170117001870A31830A418181618A41800
-A21638A2167816F8150391B5FCA3EC8003150016781638A21618A21806A3180C93C7FCA4
-181C1818A21838A21878A218F0170117031707171F48486CEB01FFB912E0A3373E7DBD3E
->I<B91280A300019038C000036C6C48EB003FEF1FC017071703A21701A31700A41860A2
-1630A31800A31670A216F01501150791B5FCA3EC8007150115001670A21630A693C8FCAF
-3801FFE0B612F0A3333E7DBD3B>I<DB3FF0130C913803FFFE021F9038FF801C913A7FE0
-0FC03C9139FF0001E0D903FC903800787CD907F0EC1CFC4948140ED91F80140749C81203
-49150113FE484815004848167CA24848163C120FA24848161CA2123F5B180C127FA25B95
-C7FC12FFAB041FB512F0127FA26D9139000FFE00EF03FC123FA27F121FA26C7EA212076C
-7E7F12016C7E137F6D6C14076D7E6D6C140C6D6CEC1C7CD903FC1438D900FFECF03C913A
-7FF007E01C021FB5EA800C020349C8FC9138003FF03C427BBF47>I<B6D8C01FB512F8A3
-000101E0C7383FFC0026007F80EC0FF0B3A691B7FCA30280C7120FB3A92601FFE0EC3FFC
-B6D8C01FB512F8A33D3E7DBD44>I<B612F0A3C6EBF000EB3FC0B3B3B2EBFFF0B612F0A3
-1C3E7EBD21>I<B600C090381FFFFCA3000101E0C70007138026007F80913801FC0018F0
-6018804DC7FC17065F5F5F5F5F4C5A4CC8FC16065E5E5E5E5E4B5A15074B7E4B7E153FED
-6FF0EDCFF8EC818791388303FC02867FEC8C0191389800FF02B08002E0137F4A6D7E4A80
-161F707E831607707E831601707E84177F717E717E84170F717E841703844D7E2601FFE0
-4A13C0B600C090B6FCA3403E7DBD47>75 D<B612F8A3000101E0C9FC38007F80B3B0EF01
-80A517031800A45FA35FA25F5F5F17FE160348486C133FB8FCA3313E7DBD39>I<B56C93
-387FFFC06E93B5FCA20001F1E00026006FE0923801BF80A3D967F0ED033FA2D963F81506
-A3D961FC150CA3D960FE1518A2027F1530A36E6C1460A26E6C14C0A36E6CEB0180A36E6C
-EB0300A26E6C1306A36E6C5BA36E6C5BA2037F5BA36F6C5AA36F6C5AA292380FE180A3DB
-07F3C7FCA2ED03FEA36F5AA213F0486C6D5AD807FEEFFFE0B500F00170017FEBFFC0A34A
-3E7CBD53>I<B56C91387FFFF880A2C66C6C020313006EEC00FC016F1678D967F8153080
-1363EB61FE8001607F147F6E7E81141F6E7E8114076E7E8114016E7E82157F6F7E82151F
-6F7E826F7E15036F7E8281EE7F8017C0163FEE1FE017F0160FEE07F817FC1603EE01FE17
-FF82EF7FB018F0173F171F170FA217071703A201F01501486C1500EA07FEB500F0157018
-30A23D3E7DBD44>I<ED7FE0913807FFFE91391FC03F8091397E0007E0D901F8EB01F8D9
-07F0EB00FED90FC0143F49486E7E49C86C7E017E6F7E01FE8248486F7E49150100038348
-486F7EA24848167FA2001F1880A24848EE3FC0A3007F18E049161FA300FF18F0AC007F18
-E06D163FA4003F18C06D167F001F1880A26D16FF000F1800A26C6C4B5A00035F6D150300
-015F6C6C4B5A017F4B5A6D6C4A5A6D6C4A5A6D6C4AC7FC6D6C14FED901F8EB01F8D9007E
-EB07E091391FC03F80912607FFFEC8FC9138007FE03C427BBF47>I<B712F8EEFF8017E0
-00019039C0001FF86C6C48EB03FC707EEE007FEF3F8018C0EF1FE0A218F0170F18F8A818
-F0171F18E0A2EF3FC01880EF7F00EE01FEEE07FCEE3FF091B612C04CC7FC0280C9FCB3A7
-3801FFE0B612C0A3353E7DBD3E>I<B712C016FCEEFF8000019039C0007FE06C6C48EB0F
-F0EE03FC707E707E717E717EA284171F84A760173F6060177F4DC7FCEE01FC4C5AEE0FE0
-EEFF8091B500FCC8FC5E91388000FFEE3F80EE0FE0707E707E707EA283160083A684A619
-06A2EF7FC0A2053F130C3801FFE0B600C0EB1FE0050F1318943803F870CA3801FFE09438
-003F803F407DBD43>82 D<D907FC131890381FFF80017FEBE0383A01FC03F0783903F000
-7CD807C0EB1EF84848130748C712031501123E15005A1678A200FC1538A46C1518A37E6C
-6C14007F6C7E13F86CB47E14F86CEBFF806C14F06C14FC6C14FF6C6C14806D14C0010714
-E0D9007F13F0020713F8EC007FED0FFC1507ED01FEA21500167F124012C0163FA47EA216
-3E7E167E6C157C7E16F8B4EC01F0D8FB8014E0D8F9E0EB03C0D8F0F8EB0F8090397F803F
-0039E01FFFFED8C00713F89038007FC028427BBF33>I<003FB91280A3903AE0007FE000
-90C76C48131F007EEF0FC0007C17070078170300701701A300601700A5481860A5C81600
-B3B14B7E4B7E0107B612FEA33B3D7DBC42>I<B600C090387FFFF8A3000101E0C7000313
-0026007F80EC00FC18781830B3B3A4013F5EA280011F16E060130F6E4A5A010715036D6C
-92C7FC6E14060101150E6D6C5C027F147891391F8001F091390FF00FC00203B55A020049
-C8FCED1FF03D407DBD44>I<B6913807FFFEA3000301E0020013E0C60180ED3F80F01F00
-017F160E180C6E151C013F1618A26D6C5DA280010F5EA26E15E001075EA26D6C4A5AA280
-01014BC7FCA26E5C6D150681027F5CA26F131C023F1418A26F1338021F143081020F5CA2
-6F13E002075CA26E6C485AA215FE020149C8FCA26F5A6E1306A2ED7F8CA216CCED3FD8A2
-16F86F5AA26F5AA36F5AA36F5AA23F407EBD44>I<B500FE017FB5D88003B5FCA3000301
-C0010101E0C7EA7FF86C90C849EC0FC07148EC07806C1B00716C806E60017F1906717E6E
-180E013F190C4D7E80011F614D7E17676D6C60EFE7FC17C36D6C6084EE01816D6C60A24C
-C67E6D6C4D5AA20406EB7F806E17036D96C7FC4CEB3FC003805E027F17064CEB1FE003C0
-160E023F170C4CEB0FF015E0021F5F047014F804601307DA0FF05E04E014FC4C1303DA07
-F85E19FEDBF9801301DA03FD5EA203FFC812FF6E5FA24B157F020094C8FCA24B81A2037C
-153E0378151EA20338151C0330150C58407EBD5D>I<007FB5D8C003B512E0A3C66C48C7
-387FFC00D93FF8EC1FE06D48EC0F806D6C92C7FC170E6D6C140C6D6C5C17386D6C14306D
-6D5B17E06E6C5B023F495AEDE003DA1FF090C8FC020F1306EDF80E6E6C5A1618913803FE
-386E6C5A16606E13E06F5AA26F7E6F7EA26F7E4B7EA2ED33FEED71FF156103C07F020113
-7F03807F4A486C7E5C02066D7E4A6D7E141C02186D7E4A6D7E147002606D7E4A6D7F1301
-4A6E7E49C86C7E5B01066F7E010E6F7E133F496C812607FFC0EC3FFFB500F80103B512FE
-A33F3E7EBD44>I<B66C49B51280A3000101F0C8383FF8006C6C48ED1FC0013F70C7FC18
-0E6D6C150C181C6D6C15186D6C153818306D6C5D6E15E06D5E6D6D1301606E6C49C8FC6E
-6C5B17066E6C130E170C6E6C5B6E7E5F6E6C13706F13606E14E06E6D5AEE8180ED7FC3DB
-3FE3C9FC16E7ED1FF616FC150F6F5AB3A4ED1FFC020FB512FCA3413E7FBD44>I<EAFFFC
-A4EAF000B3B3B3B3ABEAFFFCA40E5B77C319>91 D<6D1340000114C039030001800006EB
-0300481306A2485BA2485BA2485BA3485BA500CFEB678039DF806FC039FFC07FE001E013
-F0A2007F133FA2393FC01FE0391F800FC0390F0007801C1C73BE2D>I<EAFFFCA4EA003C
-B3B3B3B3ABEAFFFCA40E5B7FC319>I<13801201EA030012065AA25AA25AA25AA35AA512
-CFEADF80EAFFC013E0A2127FA2EA3FC0EA1F80EA0F000B1C7ABE19>96
-D<EB0FF8EB7FFE3901F01F8039038003E039060001F0390F8000F86D7F486C137C157EA2
-816C5A6C5AC8FCA4EC0FFF0103B5FC90381FFC3FEB7F803801FC00EA03F0485A485A485A
-123F48C7FCEE018012FEA3157FA3007F14DFEC019F3B3F80038F83003A1FC0070FC73A07
-F01C07FE3A01FFF803FC3A003FE001F0292A7DA82D>I<EA01F812FFA3120712031201B1
-EC07F8EC3FFF9138780FC09138C003E09039F98001F001FBC77E01FE147C498049143F17
-80161F17C0A2EE0FE0A317F0A917E0A2161F17C0A21780163F6D1500167E01F6147C5E01
-E3495A9039C1C007E09039C0F01F809026803FFEC7FCC7EA0FF02C407DBE33>I<49B4FC
-010F13E090383F00F8017C131C4913064848131F48485B0007EC7F80485A121F5B003FEC
-3F00151E007F91C7FC90C9FCA35AA97EA27F123F16C0121F6DEB0180120F6C6CEB0300A2
-6C6C13066C6C5BD8007C133890383F01F090380FFFC0D901FEC7FC222A7DA828>I<ED03
-F815FFA3150715031501B114FF010713C190381F80F190387E003901F8130D4848130748
-5A0007140348481301121F5B123FA2127F90C7FCA25AA97EA36C7EA2121F7F000F140312
-076C6C13076C6CEB0DFC6C6CEB19FE017C903871FFF090383F01E190380FFF81903A01FE
-01F8002C407DBE33>I<EB01FE90380FFFC090383F03F090387C00F801F0137C00038049
-133F48487F000F1580485AED0FC0123FA248C713E0A35AA290B6FCA290C9FCA67EA27F12
-3F1660121F6D14C0120F6C6CEB018012036C6CEB03006C6C130E017E5B90381F80F09038
-07FFE0010090C7FC232A7EA828>I<EC1FC0ECFFF0903803F038903807C07C90380F80FE
-EB1F01133F133E90387E00FC1578491300AFB6FCA3D800FCC7FCB3AE487E387FFFFEA31F
-407EBF1C>I<167C903903F801FF90391FFF0787903A7E0FCE0F809038F803F83901F001
-F03B03E000F8070000076EC7FCA24848137EA2001F147FA6000F147EA26C6C5BA200035C
-6C6C485A6D485A39037E0FC0D91FFFC8FC380703F80006CAFCA2120EA2120F7E7F7F6CB5
-12F015FE6C6E7E6C15E00003813A07C0001FF848C7EA03FC001E140048157E007C153E00
-78153F00F881A50078151E007C153E6C5D001E15786C5DD807C0EB03E0D803F0EB0FC0D8
-00FE017FC7FC90383FFFFC010313C0293D7EA82D>I<EA01F812FFA3120712031201B1EC
-03F8EC1FFF91383C0F8091386007C04A6C7ED9F9807FEBFB0001FE1301825BA35BB3A648
-6C497EB500F0B512F0A32C3F7CBE33>I<EA01E0487E487E487EA46C5A6C5A6C5AC8FCAC
-EA01F8127FA3120712031201B3AC487EB512E0A3133E7DBD19>I<14F0EB01F8EB03FCEB
-07FEA4EB03FCEB01F8EB00F01400AC14FE137FA313011300147EB3B3A6123C007E137CB4
-13FC14F8A2EB01F0007E13E0383803C0381E0780380FFF00EA01FC175184BD1C>I<EA01
-F812FFA3120712031201B292387FFF80A392381FF800ED0FE01680030EC7FC5D5D15605D
-4A5A4AC8FC140E5C143E147FECDF80EBF98F9038FB0FC09038FE07E0EBFC0301F07F6E7E
-140081157E8181826F7E1507826F7E82486CEB07FEB539E03FFFE0A32B3F7EBE30>I<EA
-01F812FFA3120712031201B3B3B1487EB512F0A3143F7DBE19>I<2703F003FCEB01FE00
-FF903B0FFF8007FFC0913B3C0FC01E07E0913B7003E03801F00007903BC001F06000F826
-03F1806D487F2601F300EBF98001F6D900FBC7127C04FF147E01FC5CA3495CB3A6486C49
-6C14FFB528F07FFFF83F13FCA346287CA74D>I<3903F003F800FFEB1FFF91383C0F8091
-386007C00007496C7E2603F1807F3801F30001F613018213FCA35BB3A6486C497EB500F0
-B512F0A32C287CA733>I<14FF010713E090381F81F890387E007E01F8131F4848EB0F80
-4848EB07C04848EB03E0000F15F04848EB01F8A2003F15FCA248C812FEA44815FFA96C15
-FEA36C6CEB01FCA3001F15F86C6CEB03F0A26C6CEB07E06C6CEB0FC06C6CEB1F80D8007E
-EB7E0090383F81FC90380FFFF0010090C7FC282A7EA82D>I<3901F807F800FFEB3FFF91
-38781FC09138C007E03A07F98001F02603FB007FD801FE6D7E49147E49147FEE3F80A2EE
-1FC0A217E0A2160F17F0A917E0161FA217C0A2EE3F80A26DEC7F00167E6D5C4B5A01FB49
-5A9039F9C007E09039F8F01F80DA3FFEC7FCEC0FF091C9FCAD487EB512F0A32C3A7DA733
->I<02FF13180107EBC03890381F80E090397E0030784913184848130C4848EB06F8485A
-000F1403485AA248481301A2127FA290C7FC5AA97E7FA2123FA26C7E15036C7E00071407
-6C7E6C6C130D00001419017E137190383F81E190380FFF81903801FE0190C7FCAD4B7E92
-B512F0A32C3A7DA730>I<3903F007E000FFEB1FF0EC7878ECE0FC3907F181FE12033801
-F3019038F600FCA2153001FC1300A35BB3A5487EB512FCA31F287EA724>I<90387FC060
-3901FFF8E03807C03D380E0007481303481301481300A212F01560A27EA27E007F140013
-C0EA3FFE381FFFE06C13FC6C7F6C7FC61480010F13C09038007FE0EC0FF00040130300C0
-EB01F814007E1578A37E15707E15E07E6CEB01C000F3EB038039E1E01F0038C0FFFCEB1F
-E01D2A7DA824>I<1318A61338A41378A213F8A2120112031207001FB512C0B6FCA2D801
-F8C7FCB3A21560A9000014C07F137CEC0180133E90381F8700EB07FEEB01F81B397EB723
->I<D801F8EB03F800FF14FFA3000714070003140300011401B3A61503A300001407A201
-7CEB0DFCED19FE6D903831FFF090381F80E1903807FFC10100903801F8002C297CA733>
-I<B539C007FFE0A32707FC000113006C48EB007C0001157816707F00001560A2017E5CA2
-017F13016D5CA26D6C48C7FCA26E5A010F1306A26D6C5AA2ECF01C01031318A26D6C5AA2
-ECFC7001001360A2EC7EC0A2147F6E5AA26EC8FCA3140EA22B287EA630>I<B53BC3FFFE
-01FFF8A33D0FFC001FE0007FC0D803F06D48EB1F800307EC0E007F00016F130CA26D161C
-00004A6C1318150D017E5EED1DF815186D5EED307CA2D91F80017E5BED603EA2D90FC090
-383F0180EDC01FA2D907E00283C7FC9138E1800F02F11487010315C69138F3000702FB14
-CE6DB414EC4A1303010015F8A24A1301027C5C02781300A202385C023014603D287EA642
->I<3B7FFFC00FFFE0A3000390390007FE00C648EB03F0017E6D5A6DEB03801480011F49
-C7FC90380FC00E903807E00C6E5A903803F83801015B6D6C5AEC7EC0EC7F80143F141F6E
-7E81141FEC3BF0EC71F8ECE1FC14C0903801807E01037FD907007F01066D7E49130F496D
-7E01386D7E017880EA01F8D80FFCEB07FEB590381FFFF8A32D277FA630>I<B539C007FF
-E0A32707FC000113006C48EB007C0001157816706C6C1460A27F017E5CA26D495AA2EC80
-03011F91C7FCA290380FC006A2ECE00E0107130CA26D6C5AA2ECF8380101133014FC0100
-5BA2EC7EC0A2147F6E5AA26EC8FCA3140EA2140CA2141C1418A25CA2147000381360007C
-13E000FE5B13015C49C9FCEA7C07EA700EEA383CEA1FF8EA07E02B3A7EA630>I<001FB6
-1280A29039E0003F0090C7127E001E14FE001C495A5D0018495A003813075D0030495A14
-1F4A5A92C7FC147EC712FE495A5C495A13075C495A011FEB0180EB3F801400137E13FE48
-5A491303485A000715005B48485B001F5C485A90C7123F007E49B4FCB7FCA221277EA628
->I<001C130E007EEB1F80007F133F39FF807FC0A3397F003F80007E131F001CEB0E001A
-0977BD2D>127 D E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fs cmbx12 14.4 62
-/Fs 62 123 df<EEFFF8031F13FF92B612C0020315F0020F9038C00FF8913A3FFC0001FC
-DAFFF06D7E4901C0EB03FF49495B4990C7487F4A5C130F495AA25C133FA27190C7FCA271
-5AEF01F894C9FCA90403B512C0BAFCA526003FFCC7120783B3B3A6003FB5D8FC03B612C0
-A542547DD34B>12 D<EEFFFC031F9038FFCFC092B7FC1407021FEBC00791383FFC00DAFF
-F05B4913C049495B4990C7FC495AA2495A835C013F1503B0BAFCA526003FFCC71203B3B3
-A7003FB5D8FC03B612C0A542547DD34B>I<DC7FFC913807FFC0031FB56C90B512F892B6
-D8E00714FE0203DBF01F6E7E020F903DC00FFC7FFE007FC091273FFC0001B500E0EB0FE0
-DAFFF06D02806D7E4901C0010349C7EA1FF849494949143F4990C748494A7E4A4C14FF01
-0F5D49485EA24A5E133F83765A8371705A71EE0FC099C8FCA998381FFFFEBEFCA526003F
-FCC7000101E0C7123F1C1FB3B3A6003FB5D8FC01B6D8E01FB512FEA567547DD370>I<B7
-12F0AB240B7F9F2D>45 D<EA03E0EA0FF8487E487E487EA2B51280A56C1300A26C5A6C5A
-6C5AEA03E01111769025>I<EF01C0EF03E0EF07F0A2170F18E0A2171F18C0173F1880A2
-177F18005F5FA216015F16035FA216075F160F5FA2161F5F163F5FA2167F94C7FC5E5EA2
-15015E15035EA215075E150F5EA2151F5E153F5EA2157F93C8FC5D5DA214015D14035DA2
-14075DA2140F5D141F5DA2143F5D147F92C9FCA25C5C13015CA213035C13075CA2130F5C
-131F5CA2133F5C137F91CAFCA25B5B12015BA212035B12075BA2120F5B121F5BA2123F5B
-127F90CBFCA25A5AA2127C1238347879D943>I<913803FFC0023F13FC91B6FC010315C0
-010F010013F0D91FFCEB3FF8D93FF0EB0FFC49486D7E49486D7E48496D13804817C091C8
-FC4817E04817F049157FA2001F17F8A2003F17FCA249153FA2007F17FEA600FF17FFB3A5
-007F17FEA6003F17FC6D157FA3001F17F8A3000F17F06D15FF6C17E0A26C6D4913C06C6D
-491380A26C6D491300D97FF8EB1FFED91FFCEB3FF8903A0FFF81FFF06D90B55A01011580
-D9003F01FCC7FC020313C0384F7BCD43>I<157815FC14031407141F14FF130F0007B5FC
-B6FCA2147F13F0EAF800C7FCB3B3B3A6007FB712FEA52F4E76CD43>I<EC1FFC49B512E0
-010F14FC013F14FF90B712C048D9803F7F2703FC00077FD807F06D13FC484801007F4848
-147F48488101E06E1380D87FF8806D16C06D8000FF17E07FA27013F0A36C5AA26C5AA2EA
-0FF0D803C05CC914E0A34C13C0A218805E18004C5A5F16FF5F4B5B4B5B4B5B94C7FC4B5A
-4B5A4B5AED7FE05E4B5A4A90C8FCEC03FC4A5A4A48EB01F04A5A4A5A4A5A02FEC7EA03E0
-495A495A495A5C4948140749C8FC013E150F017FB7FC90B812C05A5A5A5A5A5A5AA2B912
-80A4344E79CD43>I<91380FFF8091B512FC010314FF010F15C090263FF00313F09026FF
-800013FC4848C76C7ED803F86E7E4980D807FC168001FF16C0487F82486D15E0A3805CA2
-7E4A4913C07E6C90C7FCD800FC168090C85A18005F167F4C5A5F4B13E04B5B030F5BDB7F
-FEC7FC91B512F816C016FCEEFF80DA000713E0030013F8707E70B4FC7013807013C018E0
-7013F0A218F88218FCA318FEEA01C0EA0FF8487E487E487EA2B57E18FCA44C13F86C90C7
-FC18F0495C6C4816E001F04A13C06C484A1380D80FF84A1300D807FE4A5A2703FFF0035B
-C690B612F0013F15C0010F92C7FC010114F8D9001F1380374F7ACD43>I<177C17FEA216
-0116031607160FA2161F163F167FA216FF5D5DA25D5DED1FBFED3F3F153E157C15FCEC01
-F815F0EC03E01407EC0FC01580EC1F005C147E147C5C1301495A495A5C495A131F49C7FC
-133E5B13FC485A5B485A1207485A485A90C8FC123E127E5ABA12C0A5C96C48C7FCAF020F
-B712C0A53A4F7CCE43>I<0003160ED807E0153E01FCEC03FED9FFE0137F91B65A5F5F5F
-5F5F94C7FC5E16F85E16C04BC8FC15F801E090C9FC91CAFCABEC0FFF027F13F001E3B512
-FC01E714FF9026FFF80713C0DAC0017F49C713F8496E7E01F0143F496E7E49816C5AC914
-8018C082A218E0A318F0A3EA07C0EA1FF0487E487EA2487EA318E0A25B18C06C485C4916
-8013C0003EC81400003F5D6C6C5D6C6C4A5A6D4A5AD807F8495B6C6C01075B2701FFC03F
-5B6C90B6C7FC013F14FC010F14F0010314809026007FF8C8FC344F79CD43>I<ED0FFE92
-B512C0020714F0021F14FC91397FFC01FE9139FFE0007F01030180131F4990C7EA0F80D9
-0FFCEC3FC0494814FF013F5C49484913E0495A48495BA25A485B7013C05A91C76C138070
-130048163C94C7FC5AA25BA2127F1508EDFFF8020313FF020F14C000FF498091393E007F
-F84AEB1FFC02706D7E02F06D7E6D4815804A6D13C0A24A15E0A27013F091C7FC18F8A349
-16FCA3127FA6123FA37F6C17F8A27E18F0A26C4B13E0806C17C06C7F4C13806C6D491300
-6D6C495AD93FFC495A6DB4EBFFF8010790B512E06D5D010092C7FC023F13FC020313C036
-4F7ACD43>I<121F7F7FEBFF8091B81280A448180060A26060606060A2485F0180C86CC7
-FC007EC912FE5F007C15014C5A4C5A4C5A4C5A485E163F4CC8FC16FEC8485A5E15034B5A
-150F5E4B5A153FA24B5AA24BC9FCA25C5C5D1407A34A5AA2141FA3143FA34A5AA414FFA6
-5BAB6D5B6E5A6E5A6E5A395279D043>I<913807FFC0027F13FC49B67E010715E090261F
-FC007FD93FC0EB3FFC4948EB0FFE49C76C7E48488048486E138082484816C0A2000FEE7F
-E0A3121F7FA27F7F6E15C002E014FF8002FC15806C01FF5BDBC00313006F485A6C02F85B
-9238FE0FF86C9138FF3FF06CEDFFE017806C4BC7FC7F6D6E7E010F15E06D81010115FC49
-81010F81013F1680EB7FC32601FF8015C048496C14E04848131F4848010714F0497F001F
-020014F84848143F160F48486E13FC1601824848157F173F171FA2170FA318F8A26C7E18
-F0171F6C6C16E0A26C6CED3FC06DED7F806C6C15FF6C6C6C4913006C01E0EB0FFE6C01FC
-EB7FF86C6CB65A011F15C0010792C7FC010014F8020F1380364F7ACD43>I<913807FF80
-027F13F00103B512FC010F14FF90261FFE0113C0903A7FF8007FE0D9FFE06D7E48496D7E
-48496D7E486F7E4890C77FA2486F1380A2484816C0A2007F17E0A28200FF17F0A418F8A6
-18FCA2127F5EA3123F5E6C7EA26C5DA26C6D5B6C153D6C6D13396C6D13F990397FF801F1
-011FB512E16D02C113F8010314019038007FFCEC00401500A218F05EA218E013F0EA03FC
-486C16C0486C5C1880487F18005E5F91C7485A4C5A6C48147F495DD807F049485A4B5B6C
-6C010F5B6CB4D93FFEC7FC6C90B55A6D14F0011F14C0010749C8FC010013E0364F7ACD43
->I<EC7FFF0107B512F0013F14FE90B77E0003D9800713E02707F800017FD80FE06D6C7E
-D81F806E7E48C87F01C0141FD87FF0817F00FF17807FA56C5A18006C485CD80FC05DC912
-7F5F4C5A4B5B4B5B4B13804B90C7FCED1FFC5EED3FE04B5A5E4BC8FC5D4A5AA24A5A5DA2
-4A5AA25DA2140F5DAB91CAFCAAEC1FC04A7E4A7E4A7E497F497FA76D5B6D5B6E5A6E5A6E
-5A315479D340>63 D<171F4D7E4D7EA24D7EA34C7FA24C7FA34C7FA34C7FA24C7FA34C80
-83047F80167E8304FE804C7E03018116F8830303814C7E03078116E083030F814C7E031F
-81168083033F8293C77E4B82157E8403FE824B800201835D840203834B800207835D844A
-B87EA24A83A3DA3F80C88092C97E4A84A2027E8202FE844A82010185A24A820103854A82
-010785A24A82010F855C011F717FEBFFFCB600F8020FB712E0A55B547BD366>65
-D<BA12C019FEF1FFC01AF01AFCD8000701F0C7000313FFDE007F7F737F070F7F737F8785
-87858785A287A84F5BA263616361634F5B4F5B077F90C7FC4E485A060713F892B812E097
-C8FC861AF003F0C7000313FE9539003FFF80070F13E0737F07017F87737F747E1C807413
-C0A27413E0A31CF0A386A362A31CE0A2621CC0A250138097B5FC1C004F5B19074F5B073F
-13F04EB55ABC128098C7FC1AF81AC007F8C8FC54527CD160>I<932601FFF8EC01C0047F
-D9FF8013030303B600F01307031F03FC131F92B8133F0203DAE001EBC07F020F01FCC738
-3FF0FF023F01E0EC07F94A01806EB5FC4A48C9FC010301F8824949824949824949824949
-824990CA7E4948835C48854849187FA24849183FA2485B1B1F5AA24849180FA45A4A95C7
-FCA3B5FCAE7EA3806CF207C0A46C7FA26C1A0F1C806C7FA26C6DF01F00A26C6D183E7E6E
-606D6C18FC6D6D4C5A6D6D4C5A6D6D16076D6D4C5A6D6D4C5A010001FE4C5A6E6C6C03FF
-C7FC6E01E0EC03FC020F01FCEC1FF80203903AFFE001FFE0020091B61280031F4BC8FC03
-0315F8DB007F14C0040101FCC9FC525479D261>I<BA7E19FCF1FF801AF01AFCD8000701
-F0C7000F13FF060014C0071F7F070713F807017F737F747E747F747F86747F747F888688
-8688A2757EA31D8087A21DC0A51DE0A387A963A31DC0A51D80A2631D00A3515AA2646264
-505B6264505B505B5090C7FCF2FFFE4F5B07075B071F5B96B512C0060F91C8FCBB5A1AF0
-1AC007FCC9FC19805B527CD167>I<BC1280A5D8000701F8C7000114C0F0001F19071901
-851A7F1A3F1A1FA2F20FE0A21A07A31A03A318F81BF01A01A497C7FC1701A31703170717
-0F177F92B6FCA59238F8007F170F170717031701A317001B3EA31B7CA395C8FCA21BFCA2
-1BF8A21A01A31A031BF01A071A0FA21A1F1A3FF27FE0F101FF1907191F0603B5FCBCFCA2
-1BC0A34F517CD058>I<BB12FEA5D8000701F8C700077FF0007F191F190785858586861B
-80A21A1FA31A0FA41BC006F81307A497C7FCA31701A317031707170F177F92B6FCA59238
-F8007F170F170717031701A31700A795C9FCB3B812F8A54A517CD055>I<932601FFF8EC
-01C0047FD9FF8013030303B600F01307031F03FC131F92B8133F0203DAE001EBC07F020F
-01FCC7383FF0FF023F01E0EC07F94A01806EB5FC4A48C9FC010301F88249498249498249
-49824949824990CA7E4948835C48854849187FA24849183FA2485B1B1F5AA24849180FA4
-5A4A95C8FCA3B5FCAE6C057FB712E0A280A27E95C7003FEBC000A36C7FA27E807EA26C7F
-A26C7F7E806D7E6D7F6D7F6D7F6D6D5E6D13FC01006D93B5FC6E6C6C5C6E01E0EC07FB02
-0F01FCEC1FF10203D9FFE0EBFFE0020091B6EAC03F031FEE001F030303FC1307DB007F02
-E01301040101FCCAFC5B5479D26A>I<B8D8C003B8FCA5D8000701F8C9001FEBE000B3AE
-92BAFCA503F8C9121FB3B1B8D8C003B8FCA560527CD169>I<B812C0A5D8000701F8C7FC
-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
-A2485AA45EA25E6C6C141D163D6C6C02797F6C6C02F113F86C9026C003E0EBFFE06C9027
-F01FC07F13F06C90B5487EC64A487E011F01F8010713E0010001E090C8FC3C387CB641>
-97 D<EB3FF0B5FCA51203C6FCB3A4EEFFE0030F13FE033F6D7E92B612E09126F1FE0013
-F8DAF7F0EB1FFEDAFFC06D7E4B01037F92C76C7F4A824A6E7F4A157F85727EA285A3727E
-A41A80AB1A00A44E5AA261A24E5AA24E5A6E5E6E5C6E4A5B6F495BDACFC04948C7FCDA87
-F0EB3FFC913A03FC01FFF049C6B65A49013F91C8FC49010F13FC90C70001138041547BD2
-4B>I<913801FFF8021FEBFF8091B612E0010315F8010F9038800FFE4948C77ED93FF813
-03D9FFF0491380485B4A4913C0485B5A4890C7FCA2486F13805B003F6F1300EE00FC94C7
-FC485AA412FFAB127FA27FA2123FA2001FEE03E07F7E6EEC07C07E6EEC0F806C6D141F6C
-EE3F006C6D147ED97FFC5CD91FFEEB03F8903A0FFFC01FF0010390B55A01001580021F01
-FCC7FC020113E033387CB63C>I<4DB47E0407B5FCA5EE001F1707B3A4EDFFC0021F13FC
-91B6FC010315C7010F9038C01FE7903A1FFE0003F7D93FF86DB5FCD9FFF06D7E48498048
-49805C48824890C8FCA2485AA2123FA2485AA412FFAB127FA46C7EA3121FA26C7E6C5E6E
-5C6C7F6C5E6C6D49B5FCD97FF84914E06D6CD90FEFEBFF80903A0FFF807FCF010390B512
-0F010014FE023F13F00203018049C7FC41547CD24B>I<913803FFC0023F13FC49B6FC01
-0715C04901817F903A3FFC003FF0D97FF06D7E4948EB07FC48498048496D7E5A91C76C13
-805A486F13C05B003F17E0A2177F485A18F0A312FFA390B8FCA318E001FCCAFCA5127FA3
-7F123FA2001F17E06DED01F07E17036C6D15E06C16076C6DEC0FC06C6DEC1F806D6CEC3F
-006D6C14FED91FFEEB03FC903A0FFFC03FF8010390B55A010015C0021F49C7FC020113F0
-34387CB63D>I<ED1FF84AB5FC020F14C0023F14E09139FFF81FF0499038C03FF849EB80
-7F49010013FC494813FF5C495AA2133F4AEB7FF8017FEC3FF0EE1FE0EE0FC093C7FCAEB7
-12E0A526007FF8C8FCB3B3A7007FB512FEA52E547CD329>I<DA1FFF147F91B539E003FF
-C00107DAFC0F13E0011FECFF3F90263FFC079038FF1FF09026FFE00013F84849EB7FF04A
-133F4890C7D81FF813E0489338FC0FC0F0038048486E6CC7FCA3001F82A7000F5EA36C6C
-4A5AA26C5E6C6D495A6E137F6C6D495A90267FFC07138090B7C8FCD801E714FC01E014E0
-2603C01F90C9FC91CBFC1207A37FA27F7F13FE90B7FC6C16F017FE717E6C17E0846C836D
-826D8248B9FC12074848C71201D81FF8DA001F1380484815074848817113C0484881A66C
-6C4B1380A26C6C4B1300A26C6C4B5AD80FFEED1FFC6C6C4B5A6C01C0ECFFF0C601FC010F
-13C0013FB7C7FC010F15FC010115E0D9000F01FCC8FC3C4F7CB543>I<EB3FF0B5FCA512
-03C6FCB3A4EE1FFC93B57E030314E0030F14F892391FC07FFC92393E001FFE5D03F06D7E
-ECF1E0DAF3C0814B7F02F7C7FC02FF825CA25CA35CB3ADB6D8F807B612C0A542537BD24B
->I<137F497E487F487F487F487FA76C5B6C5B6C5B6C5B6DC7FC90C8FCADEB3FF0B5FCA5
-12017EB3B3A6B612E0A51B547BD325>I<EB3FF0B5FCA512017EB3B3B3B1B612F0A51C53
-7BD225>108 D<D93FF0D91FFCEDFFE0B591B56C010713FC030302E0011F13FF030F02F8
-017F14C092271FC07FFCD9FE037F922A3E001FFE01F0007F00034A4B5AC602F090270FFF
-07806D7EDAF1E04BC7FCDAF3C0039E814B6D019C143F02F7C714B802FF04F8814A5EA24A
-5EA34A5EB3ADB6D8F807B6D8C03FB512FEA567367BB570>I<D93FF0EB1FFCB591B57E03
-0314E0030F14F892391FC07FFC92393E001FFE00035CC602F06D7EECF1E0DAF3C0814B7F
-02F7C7FC02FF825CA25CA35CB3ADB6D8F807B612C0A542367BB54B>I<913801FFE0021F
-13FE91B612C0010315F0010F9038807FFC903A1FFC000FFED97FF0903803FF8049486D7F
-48496D7F48496E7EA24890C86C7E488349151F001F83A2003F834981A2007F1880A400FF
-18C0AC007F1880A36C6C4B1300A3001F5FA26C6C4B5AA26C6D4A5A6C5F6C6D4A5A6C6D49
-5B6D6C495BD93FFC010F90C7FC903A0FFF807FFC6D90B55A010015C0023F91C8FC020113
-E03A387CB643>I<D93FF0EBFFE0B5010F13FE033F6D7E92B612E09126F1FE0113F8913A
-F7F0003FFE0003D9FFC06D7EC64A01077F92C76C7F4A824A6E7F4A8085727EA285183FA2
-85A284A21A80AB1A0060A361A24E5AA24E5AA24D5B6E5E6E5C6E4A5B6F495B6F4948C7FC
-03F0EB7FFC913AFBFC03FFF002F8B65A033F91C8FC030F13FC0301138092CBFCB1B612F8
-A5414D7BB54B>I<DBFFC0EB0780021F01F8130F027F01FE131F0103B61280499039E03F
-C03F011F90390007E07FD93FFCEB03F0D9FFF8903801F8FF4849EB00F94849147F4A805A
-484980A24890C87EA2485A83127FA35B12FFAB127FA27FA2123FA26C7E5FA26C6D5C7E6E
-5C6C6D5C6C93B5FC6C6D5BD97FFC5B6D6CEB0FEF903A0FFFC07F8F010390B5120F010014
-FC023F13F00201138091C8FCB1040FB61280A5414D7CB547>I<90397FE001FCB590380F
-FF80033F13E04B13F09238FE1FF89139E1F03FFC0003EBE3E0C69138C07FFEECE7801500
-14EF14EE02FEEB3FFC5CEE1FF8EE07E04A90C7FCA55CB3AAB612FCA52F367CB537>I<90
-3901FFE007011FEBFC1F017FEBFF7F48B7FC3907FE001FD80FF01307D81FC01301497F00
-3F8148C87EA34881A27FA27F01F091C7FC13FC387FFFC014FEECFFF06C14FEEDFFC06C81
-6C15F86C810001816C81013F1580010715C01300020714E0EC001F1503030013F0007815
-7F00F8153F161F7E160FA27E17E07EA26DEC1FC07F6DEC3F806DEC7F0001FCEB01FE9039
-FF800FFC013FB55AD8FC1F14E0D8F803148027E0007FF8C7FC2C387CB635>I<143EA614
-7EA414FEA21301A313031307A2130F131F133F13FF5A000F90B6FCB8FCA426003FFEC8FC
-B3A9EE07C0AB011FEC0F80807FEE1F006D1380EDC03E6D6D5A0100EBFFF86E5B021F5B02
-0190C7FC2A4D7ECB34>I<D93FF8913801FFC0B50207B5FCA50003ED001FC61607B3AF5F
-A35F017F5D173B177B6D6C14F3011FDA01E313F06ED907C3EBFFC0903A0FFF801F830103
-90B512036D14FED9003F13F8020301C091C7FC42377BB54B>I<B600F00107B5FCA50001
-01F8C8EA7FC06C6DED3F00A2017F163E6E157E013F167C6E15FC6D5E6F13016D5E811703
-6D5E6F13076D5E6F130F6D5E6F131F6D93C7FC815F6E6C133E177E023F147C6F13FC6E5C
-16816E5C16C3A26EEBE3E016E76E5C16FF6E5CA26E91C8FCA26F5AA36F5AA26F5AA26F5A
-A26F5A6F5A40367DB447>I<B6D8E07FB5D8C003B512C0A5000101F0C701F0C7381FF800
-6E027FED07E06C715DA26E023F150F017F705DA26E181F013F4B6C92C7FC6E606D70143E
-94B5FC6F177E6D4A6E137C03C001F315FC6D715B160303E001E114016D020702E05B03F0
-13C06D71485A160F03F8D9807F13076D05F85B93381F003F03FC160F027F4902FC5BDBFE
-3E011F131F023F04FE90C8FC167EDBFF7C010F5B6E01FCECFF3E4C6D137E6E5FA24C7F6E
-5F4C7F6E5FA24C7F6E5F4C147FA26E5F93C8123F6F5EA2033E6FC9FC5A367DB461>I<00
-7FB500F090387FFFFEA5C66C48C7000F90C7FC6D6CEC03F86D6D495A6D6D495A6D4B5A6F
-495A6D6D91C8FC6D6D137E6D6D5B91387FFE014C5A6E6C485A6EEB8FE06EEBCFC06EEBFF
-806E91C9FCA26E5B6E5B6F7E6F7EA26F7F834B7F4B7F92B5FCDA01FD7F03F87F4A486C7E
-4A486C7E020F7FDA1FC0804A486C7F4A486C7F02FE6D7F4A6D7F495A49486D7F01076F7E
-49486E7E49486E7FEBFFF0B500FE49B612C0A542357EB447>I<B600F00107B5FCA5C601
-F8C8EA7FC06EED3F00A26D6C153E187E013F167C6E15FC6D5E6F13016D5E6F13036D5E81
-17076D6D5C170F6D6D5C171F6D93C7FC6F5B027F143E6F137E023F147C6F13FCA26E6D5A
-16816EEBC1F016C36E5C16E76E5C16FF6E5CA26E91C8FCA36F5AA26F5AA26F5AA26F5AA2
-6F5AA35E150F5E151F93C9FC5DD81FC0133E486C137E486C137C486C13FC5D14015D1403
-4A5A6C48485A49485A263FC07FCAFCEB81FE6CB45A6C13F000035BC690CBFC404D7DB447
->I<001FB8FC1880A3912680007F130001FCC75B01F014FF49495B49495B495D5D48C748
-5B4B5B5F5D003E4A90C7FC4B5A5E5C4A5B5EC75A4A5B4A5B5E5C4A90C8FC4A5A5D5B4949
-EB0F80495B5D5B495B4B131F4916004990C7FC495A4A5C5A485B48495C5C485E48495B48
-49130791C7485A4815FFB8FCA37E31357CB43C>I E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Ft cmbx12 20.736 16
-/Ft 16 122 df<13FF000313C04813F0487F487F487F5A801580B6FCA215C0A315E0A27E
-A37E7E7E6C13F76C13E7C61387EB0007A2140F15C0A3141FA21580143FA215005C147E14
-FEA2495AA2495A495AA2495A495A133F495A49C7FC485A485A485A485A6C5A6C5A6C5A1B
-3A729836>44 D<96267FFFE01670063FB616F80503B700E01401053F04FC14034CB91407
-040706C0130F043F06F0131F93B626FE000F01FC133F030303809026007FFE137F030F02
-FCC8390FFF80FF4B02E0030313C1037F91CA13E392B500FCEF3FF7020302F071B5FC4A4A
-17074A0280834A91CB7E4A01FC844A498591B54885494A854988494A85495C93CD7E4988
-495B49885D90B51C7F5D481E3F485CA21F1F485CA2481E0F5D5AA21F075D5AA2F703F09C
-C7FC5AA392D1FCA2B6FCB27EA281A37EA3F701F06CF603F881A37E816C1E0720F06C80A3
-6C6E1B0F6C1FE06F1B1F7F6F1CC06D1D3F6D6DF37F807F70F2FF006D6E626D6E19016D52
-5A6D6E4F5A6E6D190F6E01FE4F5A6E6D4F5A6E6E4E5A6E02E04D485A6E6E4D90C7FC0200
-02FCEF0FFE6F01FFEF3FFC031F02E0EEFFF06F02FC03075B0303DAFFC0023F1380030003
-FE0107B5C8FC043F91B712FC040718F0040118C0DC003F94C9FC050316F8DD003F1580DE
-007F01F0CAFC757A75F78C>67 D<BBFCA7C7003F0280CCFCB3B3B3ABF503F8A41D071EF0
-A51D0FA41EE01D1FA31D3FA21D7FA3F5FFC064A26464A264646499B51280631B071B1F1B
-7F0803B6FC1A3FBFFCA21E00A565767AF574>76 D<B800C00503B812C083838383A283C7
-003F6E94C7003F01FCC7FC7206011380727290C8FC84A2848403DF8003CF8003C78015C3
-03C1818503C0817080708082708085708070817081827180867180718071808371808771
-817181728084728087728072807281847281887380738073808573808873817381738186
-7480897480748074808674818A7481758075808775808A7580758175818776808B768076
-807680887691B5FCA28888898989A28989898989A28A8A8A8A8AA28A8A8A8B8B4A7E010F
-B587B800F0858B8B8BA28B207E8A767AF597>78 D<92383FFFF8020FB612E0027F15FC01
-03B87E010F17E04983499026E0007F13FCD97FFCC7000F7F496C02037F486D6E806F6D6C
-7F86486E6E7F727F86848684866C5CA26C91C86C806D5A6D5A6D5AEB03C090CAFCA80507
-B6FC041FB7FC0303B8FC157F0203B9FC021FECFE0391B612800103ECF800010F14C04991
-C7FC017F13FC90B512F04814C0485C4891C8FC485B485BA2485BA2485BA2B5FC5CA360A3
-60806C5FA26C6D153E6E5D6C05FC806C01FFDA03F8806C6ED90FF014FC6C02E090263FE0
-7FEBFFFC6C9128FC03FFC03F14FE6C91B61280013F4B487E010F4B1307010303F01301D9
-003F0280D9001F13FC020101F8CBFC57507ACE5E>97 D<903801FFFCB6FCA7C67E131F7F
-B3AEF0FFFC050FEBFFE0057F14FE4CB77E040716E0041F16F84CD9007F13FEDCFFF00107
-7F03FD01C001018092B5C86C7F04FC6F7F04F06F7F4C6F7F4C6F7F4C6F7F93C9804B7014
-80A27414C0A21DE0A27513F0A21DF8A37513FCA51DFEAF1DFCA45113F8A31DF0A398B512
-E0A21DC0501480A26F4C1400705F62704B5B705F70033F5BDBF7F84B5BDBE3FE92B55A92
-26C1FF80010391C7FC038001E0011F5B9226007FFC90B55A4A011FB712F04A6D16C04A01
-0393C8FC4A010015F84A021F14C090C9000301F0C9FC5F797AF76C>I<EE3FFF0307B512
-F8033F14FF4AB712E0020716F8021F16FE027FD9F8037F49B526C0007F7F4991C76C13E0
-4901FC020F7F49498049496E7F49496E7F49496E7F90B55A48727E92C9FC48721380485B
-1BC048841BE0485BA27313F05AA25C5AA21BF885A2B5FCA391BAFCA41BF002F8CCFCA67E
-A3807EA47E806CF101F0F203F86C7F1A076C6E17F06C190F6F17E06C6E161F6D6DEE3FC0
-6D6D167F6D6DEEFF806D6D030313006D6D6C4A5A6D02E0EC1FFC6D02F8EC7FF86D913AFF
-8007FFF0023F91B65A020F178002034CC7FC020016F8031F15C003014AC8FCDB000F13C0
-4D507BCE58>101 D<EF7FFC041FB57E93B612E0030715F8031F81037F8192B538E01FFF
-0203DA003F13804A01FC4913C04A4990B5FC4A13E04A494814E05C168091B5FC491400A2
-5D496F14C0A272138049496E1300725AF007F895C8FCB3A2B912C0A7D8000749CAFCB3B3
-B3A9007FB712FCA743797AF83B>I<EB01FCEB07FF011F13C0497F497F90B57EA24880A2
-4880A76C5CA26C5CA26D5B6D5B6D5B010790C8FCEB01FC90CAFCB2903801FFFC007FB5FC
-A7C67E131F7FB3B3B3A7B81280A7297979F835>105 D<903801FFFCB6FCA7C67E131F7F
-B3B3B3B3B3ADB812C0A72A7879F735>108 D<902601FFF891260FFFE093383FFF80B692
-B500FE0303B512F805036E6C020F14FE050F03E0023F6E7E053F03F891B712E04D6F4982
-9426FFF01F6D49D9C07F7F4CD900076D902707FC001F7FC66CDA07FC01019126801FF001
-077F011FDA0FF0EF3FC06DDA1FC06D6E48C76C7F4DDCE07E83043EC86C02F8804CEFE1F0
-04FC05F3844C60DBF9F06FD9F7C0804C6003FB06FF844C95C9FC15FF4C5FA393C95CA44B
-60B3B3A7B8D8E003B8D8800FB712FEA7974E79CDA2>I<93381FFFE00303B6FC031F15E0
-92B712FC020316FF020F17C0023FD9FC0014F091B500C0010F13FC4991C700037F4901FC
-02007F010F496F13C049496F7F49496F7F4B8149496F7F90B5C96C7F4886A24849707F48
-1B80A248497014C0A2481BE0A348497113F0A3481BF8A5B51AFCAE6C1BF8A46C1BF06E94
-B5FCA36C1BE0A26C6D4C14C0A26C1B806E5E6C1B006C6E4B5BA26C6E4B5B6D6D4B5B6D6D
-4B5B6D6D4B5B6D6D92B55A6D01FF02035C6D02C0010F91C7FC010002FC90B512FC6E90B7
-5A021F17E00207178002014CC8FCDA003F15F0030392C9FCDB001F13E056507BCE61>
-111 D<902601FFF8EB07FEB691383FFFC094B512F04C800407804C8093391FFC3FFF9326
-3FE07F1380C66C0380B512C0011F4A5A6DDAFC0114E0A2EDF9F816F015FB16E015FF4C6C
-14C0A24C6D1380721300725A93C76C5AF001E095C8FCA25DA55DB3B3A4B812F8A7434E7A
-CD4F>114 D<912603FFFCEB0780027F9039FFE00FC00103B6EAF83F010FEDFEFF013F92
-B5FC49EB00072601FFF01300480180141F4890C81207D80FFC8183484881123F49167F12
-7F183FA300FF171F7FA27F7F6DEE0F8002C092C7FC14F014FE6CEBFFF0EDFF8016FE6CED
-FFE017FC6C16FF6C17C0846C17F86C836C836C6C826D17806D17C0010717E01301D9003F
-16F0020716F8EC001F030015FC1607EE007F171F050713FE007C160100FE82187F7E183F
-A2181F7FA26D17FCA27FA26DEE3FF87F19F06D167F6D17E06D6C15FF6E020313C002F04A
-138002FC023F1300913AFFC003FFFE01E790B65A01C316F0010016C048013F92C7FC4801
-0714F80070D9007F90C8FC3F507ACE4C>I<DAFFFE933803FFF8B60303B6FCA7C66CEE00
-01011F717E6D84B3B3A962A497B5FCA3616D5FA2F107DF6D6D150FF11F9F6DEF3F1F7002
-7E806DDC01FC14FF6E01E0D907F8EDFF806E01FEEB3FF06E90B612E06E16C00203168002
-00EDFE00031F14F80300028003C0C7FC614F79CD6C>117 D<B8037FB512F8A7D8001F49
-C90003EBF8009738007FC06D6D60A26D6E94C7FC636D6E5E1A016D6E5E1A036D6E5E1A07
-A26E6D4B5AA26E6D5E1A1F6E6D5E1A3F6E6D5E1A7F6E6E92C8FC62A26E6E495AA26E6E5C
-19036E6E5C19076F6D5C190F6F6D5C191FA26F6D495AA26F6D495AA26F028090C9FC616F
-6E5A18C16FECE1FC18E3A26FECF7F8A270EBFFF0A2705CA2705CA2705CA37091CAFCA270
-5BA2705BA2705BA2715AA2715AA360A260177F95CBFC5F5F16015F1603EA03F0D80FFC4A
-5A487E486C4A5A487F4C5AB57E4C5AA24C5A4CCCFC4B5AEC80036C4A5A4A485A6CEC3FF0
-01FCEBFFE0001F01075B6CB65A6C4ACDFC6C5CC614F0013F13C0D907FCCEFC5D6F7CCC66
->121 D E
-%EndDVIPSBitmapFont
-end
-%%EndProlog
-%%BeginSetup
-%%Feature: *Resolution 600dpi
-TeXDict begin
-%%PaperSize: A4
-
-%%EndSetup
-%%Page: 1 1
-1 0 bop -30 1318 a Ft(CLN,)65 b(a)g(Class)h(Library)g(for)e(Num)-5
-b(b)5 b(ers)p -30 1418 3961 34 v -30 5068 a Fs(b)l(y)45
-b(Bruno)f(Haible)p -30 5141 3961 17 v eop
-%%Page: 2 2
-2 1 bop -30 4017 a Fr(Cop)m(yrigh)m(t)422 4014 y(c)397
-4017 y Fq(\015)30 b Fr(Bruno)g(Haible)h(1995,)i(1996,)f(1997,)g(1998,)h
-(1999,)f(2000.)-30 4371 y(Published)21 b(b)m(y)i(Bruno)f(Haible,)k
-Fp(<haible@clisp.cons.org>)16 b Fr(and)23 b(Ric)m(hard)f(Krec)m(k)m
-(el,)27 b Fp(<kreckel@ginac.de>)p Fr(.)-30 4505 y(P)m(ermission)h(is)h
-(gran)m(ted)h(to)g(mak)m(e)f(and)g(distribute)f(v)m(erbatim)h(copies)h
-(of)f(this)g(man)m(ual)g(pro)m(vided)f(the)i(cop)m(yrigh)m(t)-30
-4615 y(notice)i(and)d(this)i(p)s(ermission)d(notice)k(are)e(preserv)m
-(ed)g(on)h(all)g(copies.)-30 4749 y(P)m(ermission)g(is)i(gran)m(ted)g
-(to)g(cop)m(y)g(and)e(distribute)h(mo)s(di\014ed)e(v)m(ersions)j(of)f
-(this)h(man)m(ual)e(under)g(the)h(conditions)-30 4859
-y(for)d(v)m(erbatim)g(cop)m(ying,)i(pro)m(vided)e(that)h(the)f(en)m
-(tire)i(resulting)e(deriv)m(ed)g(w)m(ork)h(is)f(distributed)g(under)e
-(the)j(terms)-30 4969 y(of)h(a)f(p)s(ermission)f(notice)i(iden)m(tical)
-h(to)g(this)e(one.)-30 5103 y(P)m(ermission)23 b(is)i(gran)m(ted)g(to)g
-(cop)m(y)g(and)e(distribute)h(translations)h(of)g(this)f(man)m(ual)g
-(in)m(to)h(another)f(language,)j(under)-30 5213 y(the)37
-b(ab)s(o)m(v)m(e)i(conditions)f(for)f(mo)s(di\014ed)e(v)m(ersions,)k
-(except)f(that)g(this)f(p)s(ermission)f(notice)i(ma)m(y)f(b)s(e)g
-(stated)h(in)f(a)-30 5322 y(translation)31 b(appro)m(v)m(ed)g(b)m(y)f
-(the)h(author.)p eop
-%%Page: 1 3
-1 2 bop -30 -116 a Fr(Chapter)30 b(1:)41 b(In)m(tro)s(duction)2952
-b(1)-30 299 y Fo(1)80 b(In)l(tro)t(duction)-30 524 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:)45 656 y Fq(\017)60 b Fr(In)m(tegers)31
-b(\(with)g(unlimited)e(precision\),)45 789 y Fq(\017)60
-b Fr(Rational)32 b(n)m(um)m(b)s(ers,)45 922 y Fq(\017)60
-b Fr(Floating-p)s(oin)m(t)33 b(n)m(um)m(b)s(ers:)199
-1054 y Fq(\000)60 b Fr(Short)30 b(\015oat,)199 1187 y
-Fq(\000)60 b Fr(Single)31 b(\015oat,)199 1320 y Fq(\000)60
-b Fr(Double)31 b(\015oat,)199 1452 y Fq(\000)60 b Fr(Long)31
-b(\015oat)g(\(with)f(unlimited)f(precision\),)45 1585
-y Fq(\017)60 b Fr(Complex)29 b(n)m(um)m(b)s(ers,)45 1718
-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\),)45 1850 y Fq(\017)60
-b Fr(Univ)-5 b(ariate)32 b(p)s(olynomials.)-30 2006 y(The)g(subt)m(yp)s
-(es)f(of)h(the)h(complex)f(n)m(um)m(b)s(ers)d(among)j(these)h(are)f
-(exactly)i(the)f(t)m(yp)s(es)f(of)g(n)m(um)m(b)s(ers)e(kno)m(wn)i(to)h
-(the)-30 2116 y(Common)26 b(Lisp)h(language.)42 b(Therefore)28
-b Fp(CLN)f Fr(can)i(b)s(e)e(used)h(for)g(Common)d(Lisp)j(implemen)m
-(tations,)g(giving)h(`)p Fp(CLN)p Fr(')-30 2225 y(another)i(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".)-30 2358 y(The)g(CLN)g(pac)m(k)-5 b(age)32
-b(implemen)m(ts)45 2491 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,)35
-b(.)23 b(.)f(.)11 b(\),)45 2623 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(,)35 b(.)23 b(.)f(.)11 b(\),)45 2756 y Fq(\017)60
-b Fr(T)-8 b(ranscenden)m(tal)48 b(functions)e(\(exp)s(onen)m(tial,)53
-b(logarithmic,)f(trigonometric,)g(h)m(yp)s(erb)s(olic)46
-b(functions)h(and)150 2866 y(their)30 b(in)m(v)m(erse)i(functions\).)
--30 3021 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)45 3154 y Fq(\017)60 b Fr(e\016ciency:)42
-b(it)31 b(compiles)f(to)h(mac)m(hine)f(co)s(de,)45 3287
-y Fq(\017)60 b Fr(t)m(yp)s(e)37 b(safet)m(y:)55 b(the)38
-b(C)p Fp(++)e Fr(compiler)g(kno)m(ws)h(ab)s(out)g(the)g(n)m(um)m(b)s
-(er)e(t)m(yp)s(es)i(and)f(complains)g(if,)j(for)e(example,)150
-3396 y(y)m(ou)31 b(try)f(to)h(assign)g(a)g(\015oat)g(to)g(an)f(in)m
-(teger)i(v)-5 b(ariable.)45 3529 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(,)k(.)22 b(.)h(.)41 b(op)s(erators)31 b(as)f(in)h(C)e(or)i(C)p
-Fp(++)p Fr(.)-30 3685 y(CLN)f(is)g(memory)f(e\016cien)m(t:)45
-3817 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.)45 3950
-y Fq(\017)60 b Fr(Heap-allo)s(cated)30 b(memory)25 b(is)i(reclaimed)g
-(through)f(an)h(automatic,)h(non-in)m(terruptiv)m(e)g(garbage)g
-(collection.)-30 4106 y(CLN)i(is)g(sp)s(eed)g(e\016cien)m(t:)45
-4238 y Fq(\017)60 b Fr(The)31 b(k)m(ernel)h(of)f(CLN)g(has)g(b)s(een)g
-(written)g(in)g(assem)m(bly)g(language)i(for)e(some)g(CPUs)f(\()p
-Fp(i386)p Fr(,)h Fp(m68k)p Fr(,)g Fp(sparc)p Fr(,)150
-4348 y Fp(mips)p Fr(,)e Fp(arm)p Fr(\).)45 4481 y Fq(\017)60
-b Fr(On)38 b(all)h(CPUs,)h(CLN)e(ma)m(y)g(b)s(e)g(con\014gured)g(to)h
-(use)f(the)g(sup)s(ere\016cien)m(t)h(lo)m(w-lev)m(el)i(routines)d(from)
-f(GNU)150 4590 y(GMP)31 b(v)m(ersion)g(3.)45 4723 y Fq(\017)60
-b Fr(It)21 b(uses)g(Karatsuba)g(m)m(ultiplication,)j(whic)m(h)c(is)i
-(signi\014can)m(tly)g(faster)f(for)g(large)h(n)m(um)m(b)s(ers)d(than)i
-(the)g(standard)150 4832 y(m)m(ultiplication)31 b(algorithm.)45
-4965 y Fq(\017)60 b Fr(F)-8 b(or)61 b(v)m(ery)f(large)h(n)m(um)m(b)s
-(ers)d(\(more)h(than)h(12000)i(decimal)e(digits\),)69
-b(it)60 b(uses)g(Sc)m(h\177)-45 b(onhage-Strassen)150
-5075 y(m)m(ultiplication,)33 b(whic)m(h)e(is)g(an)g(asymptotically)i
-(optimal)e(m)m(ultiplication)h(algorithm,)g(for)f(m)m(ultiplication,)
-150 5184 y(division)f(and)g(radix)g(con)m(v)m(ersion.)-30
-5340 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:)p eop
-%%Page: 2 4
-2 3 bop -30 -116 a Fr(Chapter)30 b(1:)41 b(In)m(tro)s(duction)2952
-b(2)45 299 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.)45
-433 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.)45 568 y
-Fq(\017)60 b Fr(All)31 b(non-macro)f(iden)m(ti\014ers)g(are)h(hidden)e
-(in)h(namespace)g Fp(cln)g Fr(in)g(order)f(to)j(a)m(v)m(oid)f(name)f
-(clashes.)p eop
-%%Page: 3 5
-3 4 bop -30 -116 a Fr(Chapter)30 b(2:)41 b(Installation)2999
-b(3)-30 299 y Fo(2)80 b(Installation)-30 526 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.)-30 779 y Fs(2.1)68
-b(Prerequisites)-30 1057 y Fn(2.1.1)63 b(C)p Fm(++)40
-b Fn(compiler)-30 1248 y Fr(T)-8 b(o)36 b(build)e(CLN,)g(y)m(ou)i(need)
-f(a)g(C)p Fp(++)f Fr(compiler.)54 b(Actually)-8 b(,)39
-b(y)m(ou)c(need)g(GNU)h Fp(g++)29 b(2.90)34 b Fr(or)h(new)m(er,)h(the)g
-(EGCS)-30 1358 y(compilers)30 b(will)h(do.)40 b(I)30
-b(recommend)e(GNU)j Fp(g++)f(2.95)f Fr(or)h(new)m(er.)-30
-1491 y(The)h(follo)m(wing)j(C)p Fp(++)d Fr(features)h(are)g(used:)43
-b(classes,)33 b(mem)m(b)s(er)c(functions,)k(o)m(v)m(erloading)h(of)e
-(functions)f(and)g(op)s(er-)-30 1600 y(ators,)g(constructors)g(and)f
-(destructors,)g(inline,)h(const,)g(m)m(ultiple)f(inheritance,)h
-(templates)g(and)f(namespaces.)-30 1733 y(The)g(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.)-30
-1866 y(CLN)23 b(relies)h(on)g(semi-automatic)f(ordering)h(of)f
-(initializations)j(of)e(static)h(and)e(global)i(v)-5
-b(ariables,)25 b(a)f(feature)g(whic)m(h)-30 1976 y(I)30
-b(could)h(implemen)m(t)e(for)h(GNU)h(g)p Fp(++)f Fr(only)-8
-b(.)-30 2196 y Fn(2.1.2)63 b(Mak)m(e)40 b(utilit)m(y)-30
-2387 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.)-30 2607 y Fn(2.1.3)63
-b(Sed)41 b(utilit)m(y)-30 2798 y Fr(T)-8 b(o)39 b(build)e(CLN)h(on)g
-(HP-UX,)h(y)m(ou)g(also)g(need)f(to)h(ha)m(v)m(e)g(GNU)g
-Fp(sed)e Fr(installed.)66 b(This)37 b(is)h(b)s(ecause)h(the)f(libto)s
-(ol)-30 2907 y(script,)29 b(whic)m(h)g(creates)h(the)e(CLN)h(library)-8
-b(,)29 b(relies)g(on)g Fp(sed)p Fr(,)f(and)g(the)h(v)m(endor's)g
-Fp(sed)f Fr(utilit)m(y)i(on)e(these)h(systems)f(is)-30
-3017 y(to)s(o)j(limited.)-30 3270 y Fs(2.2)68 b(Building)45
-b(the)g(library)-30 3461 y Fr(As)30 b(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:)210 3589 y Fp($)47 b(./configure)210 3692
-y($)g(make)210 3796 y($)g(make)g(check)-30 3929 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.)
--30 4062 y(The)39 b Fp(configure)d Fr(command)h(c)m(hec)m(ks)k(out)e
-(some)g(features)g(of)h(y)m(our)f(system)f(and)h(C)p
-Fp(++)f Fr(compiler)h(and)f(builds)-30 4172 y(the)i Fp(Makefile)p
-Fr(s.)66 b(The)39 b Fp(make)f Fr(command)g(builds)g(the)i(library)-8
-b(.)68 b(This)39 b(step)h(ma)m(y)f(tak)m(e)i(4)f(hours)e(on)i(an)f(a)m
-(v)m(er-)-30 4281 y(age)d(w)m(orkstation.)57 b(The)35
-b Fp(make)29 b(check)34 b Fr(runs)f(some)i(test)h(to)g(c)m(hec)m(k)g
-(that)g(no)f(imp)s(ortan)m(t)g(subroutine)f(has)h(b)s(een)-30
-4391 y(miscompiled.)-30 4524 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)210 4651 y Fp($)47 b(./configure)e(--help)-30
-4784 y Fr(Some)29 b(of)i(the)g(options)f(are)h(explained)g(in)f(detail)
-h(in)f(the)h(`)p Fp(INSTALL.generic)p Fr(')26 b(\014le.)-30
-4917 y(Y)-8 b(ou)21 b(can)g(sp)s(ecify)f(the)g(C)g(compiler,)i(the)f(C)
-p Fp(++)e Fr(compiler)h(and)g(their)g(options)h(through)f(the)g(follo)m
-(wing)i(en)m(vironmen)m(t)-30 5027 y(v)-5 b(ariables)31
-b(when)e(running)g Fp(configure)p Fr(:)-30 5183 y Fp(CC)384
-b Fr(Sp)s(eci\014es)30 b(the)g(C)g(compiler.)-30 5340
-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\).)p
-eop
-%%Page: 4 6
-4 5 bop -30 -116 a Fr(Chapter)30 b(2:)41 b(Installation)2999
-b(4)-30 299 y Fp(CXX)336 b Fr(Sp)s(eci\014es)30 b(the)g(C)p
-Fp(++)g Fr(compiler.)-30 452 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\).)-30
-604 y(Examples:)210 730 y Fp($)47 b(CC="gcc")f(CFLAGS="-O")f(CXX="g++")
-g(CXXFLAGS="-O")f(./configure)210 834 y($)j(CC="gcc)f(-V)h
-(egcs-2.91.60")e(CFLAGS="-O)g(-g")i(\\)305 937 y(CXX="g++)f(-V)h
-(egcs-2.91.60")d(CXXFLAGS="-O)h(-g")i(./configure)210
-1041 y($)g(CC="gcc)f(-V)h(2.95.2")f(CFLAGS="-O2)f(-fno-exceptions")e
-(\\)305 1145 y(CXX="g++)j(-V)h(2.95.2")f(CFLAGS="-O2)f
-(-fno-exceptions")e(./configure)-30 1276 y Fr(Note)32
-b(that)g(for)e(these)i(en)m(vironmen)m(t)e(v)-5 b(ariables)32
-b(to)f(tak)m(e)i(e\013ect,)g(y)m(ou)e(ha)m(v)m(e)h(to)f(set)h(them)e
-(\(assuming)g(a)h(Bourne-)-30 1386 y(compatible)i(shell\))g(on)g(the)g
-(same)f(line)h(as)g(the)g Fp(configure)d Fr(command.)46
-b(If)32 b(y)m(ou)h(made)f(the)h(settings)h(in)e(earlier)-30
-1495 y(shell)g(commands,)e(y)m(ou)i(ha)m(v)m(e)h(to)g
-Fp(export)d Fr(the)i(en)m(vironmen)m(t)f(v)-5 b(ariables)33
-b(b)s(efore)e(calling)i Fp(configure)p Fr(.)43 b(In)31
-b(a)h Fp(csh)-30 1605 y Fr(shell,)f(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.)-30 1736
-y(Curren)m(tly)25 b(CLN)g(w)m(orks)h(only)g(with)f(the)h(GNU)g
-Fp(g++)f Fr(compiler,)i(and)e(only)g(in)h(optimizing)g(mo)s(de.)37
-b(So)26 b(y)m(ou)g(should)-30 1846 y(sp)s(ecify)33 b(at)i(least)g
-Fp(-O)e Fr(in)h(the)g(CXXFLA)m(GS,)g(or)g(no)g(CXXFLA)m(GS)g(at)h(all.)
-52 b(\(If)34 b(CXXFLA)m(GS)g(is)g(not)g(set,)h(CLN)-30
-1955 y(will)c(use)f Fp(-O)p Fr(.\))-30 2086 y(If)44 b(y)m(ou)h(use)f
-Fp(g++)g Fr(v)m(ersion)h(2.8.x)h(or)e(egcs-2.91.x)k(\(a.k.a.)85
-b(egcs-1.1\))47 b(or)e(gcc-2.95.x,)52 b(I)44 b(recommend)e(adding)-30
-2196 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.)-30
-2327 y(If)37 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)e(gcc-2.95.x)i(on)d(Sparc,)i(add)e(either)g(`)p
-Fp(-O)p Fr(',)i(`)p Fp(-O1)p Fr(')e(or)h(`)p Fp(-O2)-30
-2437 y(-fno-schedule-insns)p Fr(')26 b(to)32 b(the)f(CXXFLA)m(GS.)h
-(With)g(full)f(`)p Fp(-O2)p Fr(',)g Fp(g++)f Fr(miscompiles)g(the)i
-(division)f(routines.)-30 2546 y(Also,)41 b(if)e(y)m(ou)g(ha)m(v)m(e)g
-Fp(g++)f Fr(v)m(ersion)h(egcs-1.1.1)j(or)c(older)h(on)f(Sparc,)j(y)m
-(ou)d(m)m(ust)g(sp)s(ecify)g(`)p Fp(--disable-shared)p
-Fr(')-30 2656 y(b)s(ecause)30 b Fp(g++)g Fr(w)m(ould)g(miscompile)f
-(parts)h(of)h(the)f(library)-8 b(.)-30 2787 y(By)32 b(default,)g(b)s
-(oth)f(a)h(shared)e(and)h(a)h(static)h(library)e(are)h(built.)44
-b(Y)-8 b(ou)32 b(can)g(build)f(CLN)g(as)g(a)h(static)h(\(or)f(shared\))
--30 2897 y(library)k(only)-8 b(,)38 b(b)m(y)f(calling)g
-Fp(configure)d Fr(with)i(the)h(option)f(`)p Fp(--disable-shared)p
-Fr(')d(\(or)j(`)p Fp(--disable-static)p Fr('\).)-30 3006
-y(While)f(shared)e(libraries)g(are)i(usually)e(more)g(con)m(v)m(enien)m
-(t)j(to)e(use,)h(they)f(ma)m(y)f(not)h(w)m(ork)g(on)g(all)g(arc)m
-(hitectures.)-30 3116 y(T)-8 b(ry)32 b(disabling)g(them)g(if)g(y)m(ou)h
-(run)d(in)m(to)k(link)m(er)e(problems.)45 b(Also,)34
-b(they)f(are)f(generally)i(somewhat)e(slo)m(w)m(er)h(than)-30
-3225 y(static)f(libraries)e(so)h(run)m(time-critical)h(applications)f
-(should)e(b)s(e)h(link)m(ed)h(statically)-8 b(.)-30 3440
-y Fn(2.2.1)63 b(Using)42 b(the)f(GNU)g(MP)h(Library)-30
-3629 y Fr(Starting)32 b(with)f(v)m(ersion)g(1.1,)i(CLN)e(ma)m(y)g(b)s
-(e)f(con\014gured)h(to)h(mak)m(e)f(use)g(of)g(a)h(preinstalled)f
-Fp(gmp)g Fr(library)-8 b(.)43 b(Please)-30 3738 y(mak)m(e)d(sure)f
-(that)h(y)m(ou)g(ha)m(v)m(e)h(at)f(least)h Fp(gmp)e Fr(v)m(ersion)h
-(3.0)h(installed)f(since)g(earlier)h(v)m(ersions)f(are)g(unsupp)s
-(orted)-30 3848 y(and)30 b(lik)m(ely)i(not)f(to)h(w)m(ork.)41
-b(Enabling)31 b(this)f(feature)h(b)m(y)g(calling)h Fp(configure)c
-Fr(with)j(the)f(option)i(`)p Fp(--with-gmp)p Fr(')c(is)-30
-3958 y(kno)m(wn)i(to)h(b)s(e)f(quite)h(a)f(b)s(o)s(ost)g(for)g(CLN's)g
-(p)s(erformance.)-30 4089 y(If)35 b(y)m(ou)g(ha)m(v)m(e)i(installed)f
-(the)f Fp(gmp)f Fr(library)h(and)f(its)i(header)f(\014le)g(in)g(some)g
-(place)h(where)e(y)m(our)i(compiler)e(cannot)-30 4198
-y(\014nd)27 b(it)j(b)m(y)f(default,)h(y)m(ou)f(m)m(ust)f(help)h
-Fp(configure)d Fr(b)m(y)j(setting)h Fp(CPPFLAGS)d Fr(and)h
-Fp(LDFLAGS)p Fr(.)38 b(Here)30 b(is)f(an)g(example:)210
-4324 y Fp($)47 b(CC="gcc")f(CFLAGS="-O2")e(CXX="g++")i(CXXFLAGS="-O2)e
-(-fno-exceptions")f(\\)305 4428 y(CPPFLAGS="-I/opt/gmp/inclu)o(de")e
-(LDFLAGS="-L/opt/gmp/lib")g(./configure)k(--with-gmp)-30
-4675 y Fs(2.3)68 b(Installing)47 b(the)e(library)-30
-4864 y Fr(As)30 b(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:)210
-4990 y Fp($)47 b(make)g(install)-30 5121 y Fr(The)66
-b(`)p Fp(make)30 b(install)p Fr(')65 b(command)f(installs)k(the)f
-(library)f(and)h(the)g(include)f(\014les)h(in)m(to)h(public)e(places)
--30 5230 y(\(`)p Fp(/usr/local/lib/)p Fr(')41 b(and)j(`)p
-Fp(/usr/local/include/)p Fr(',)f(if)i(y)m(ou)g(ha)m(v)m(en't)g(sp)s
-(eci\014ed)f(a)h Fp(--prefix)d Fr(option)j(to)-30 5340
-y Fp(configure)p Fr(\).)39 b(This)29 b(step)i(ma)m(y)f(require)g(sup)s
-(eruser)e(privileges.)p eop
-%%Page: 5 7
-5 6 bop -30 -116 a Fr(Chapter)30 b(2:)41 b(Installation)2999
-b(5)-30 299 y(If)42 b(y)m(ou)g(ha)m(v)m(e)i(already)f(built)f(the)g
-(library)g(and)g(wish)f(to)i(install)g(it,)j(but)c(didn't)f(sp)s(ecify)
-h Fp(--prefix=...)d Fr(at)-30 408 y(con\014gure)j(time,)k(just)c
-(re-run)f Fp(configure)p Fr(,)i(giving)h(it)f(the)g(same)f(options)g
-(as)h(the)g(\014rst)f(time,)j(plus)d(the)h Fp(--)-30
-518 y(prefix=...)28 b Fr(option.)-30 775 y Fs(2.4)68
-b(Cleaning)46 b(up)-30 968 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
-Fp(make)f Fr(through)210 1097 y Fp($)47 b(make)g(clean)-30
-1231 y Fr(Y)-8 b(ou)31 b(can)g(remo)m(v)m(e)f(all)i(\014les)e
-(generated)h(b)m(y)g Fp(make)p Fr(,)e(th)m(us)h(rev)m(erting)h(to)h(a)e
-(virgin)h(distribution)e(of)i(CLN,)f(through)210 1360
-y Fp($)47 b(make)g(distclean)p eop
-%%Page: 6 8
-6 7 bop -30 -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)2517 b(6)-30 299 y Fo(3)80
-b(Ordinary)55 b(n)l(um)l(b)t(er)c(t)l(yp)t(es)-30 539
-y Fr(CLN)30 b(implemen)m(ts)f(the)h(follo)m(wing)i(class)f(hierarc)m(h)
-m(y:)1355 670 y Fp(Number)1260 773 y(cl_number)1165 877
-y(<cln/number.h>)1451 981 y(|)1451 1085 y(|)1021 1189
-y(Real)47 b(or)g(complex)f(number)1355 1292 y(cl_N)1165
-1396 y(<cln/complex.h>)1451 1500 y(|)1451 1604 y(|)1212
-1707 y(Real)h(number)1355 1811 y(cl_R)1212 1915 y(<cln/real.h>)1451
-2019 y(|)496 2123 y(+-------------------+-----)o(---)o(----)o(----)o
-(---)o(+)496 2226 y(|)1861 b(|)210 2330 y(Rational)46
-b(number)1000 b(Floating-point)44 b(number)401 2434 y(cl_RA)1669
-b(cl_F)210 2538 y(<cln/rational.h>)1189 b(<cln/float.h>)496
-2641 y(|)1861 b(|)496 2745 y(|)764 b(+--------------+-------)o(----)o
-(---+)o(---)o(----)o(----)o(---)o(+)353 2849 y(Integer)619
-b(|)668 b(|)g(|)f(|)401 2953 y(cl_I)476 b(Short-Float)188
-b(Single-Float)140 b(Double-Float)188 b(Long-Float)210
-3057 y(<cln/integer.h>)282 b(cl_SF)476 b(cl_FF)g(cl_DF)g(cl_LF)1021
-3160 y(<cln/sfloat.h>)44 b(<cln/ffloat.h>)g(<cln/dfloat.h>)g
-(<cln/lfloat.h>)-30 3297 y Fr(The)28 b(base)h(class)h
-Fp(cl_number)c Fr(is)j(an)g(abstract)g(base)g(class.)41
-b(It)29 b(is)g(not)g(useful)f(to)i(declare)f(a)h(v)-5
-b(ariable)29 b(of)g(this)g(t)m(yp)s(e)-30 3406 y(except)g(if)f(y)m(ou)g
-(w)m(an)m(t)h(to)g(completely)f(disable)g(compile-time)g(t)m(yp)s(e)h
-(c)m(hec)m(king)g(and)f(use)f(run-time)g(t)m(yp)s(e)h(c)m(hec)m(king)
--30 3516 y(instead.)-30 3653 y(The)h(class)i Fp(cl_N)d
-Fr(comprises)h(real)h(and)f(complex)g(n)m(um)m(b)s(ers.)39
-b(There)29 b(is)g(no)h(sp)s(ecial)g(class)h(for)e(complex)g(n)m(um)m(b)
-s(ers)-30 3762 y(since)i(complex)f(n)m(um)m(b)s(ers)e(with)i(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.)-30 3899 y(The)f(class)h 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.)-30 4035 y(The)37
-b(class)g Fp(cl_RA)f Fr(comprises)g(exact)j(real)f(n)m(um)m(b)s(ers:)51
-b(rational)39 b(n)m(um)m(b)s(ers,)d(including)h(in)m(tegers.)62
-b(There)37 b(is)g(no)-30 4145 y(sp)s(ecial)31 b(class)f(for)g(non-in)m
-(tegral)i(rational)f(n)m(um)m(b)s(ers)d(since)i(rational)h(n)m(um)m(b)s
-(ers)d(with)i(denominator)f Fp(1)h Fr(are)g(auto-)-30
-4254 y(matically)h(con)m(v)m(erted)h(to)f(in)m(tegers.)-30
-4391 y(The)f(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.)-30 4653 y Fs(3.1)68
-b(Exact)46 b(n)l(um)l(b)t(ers)-30 4848 y Fr(Some)24 b(n)m(um)m(b)s(ers)
-f(are)j(represen)m(ted)g(as)f(exact)i(n)m(um)m(b)s(ers:)36
-b(there)26 b(is)f(no)h(loss)f(of)h(information)f(when)f(suc)m(h)h(a)h
-(n)m(um)m(b)s(er)-30 4957 y(is)43 b(con)m(v)m(erted)i(from)d(its)h
-(mathematical)h(v)-5 b(alue)44 b(to)g(its)f(in)m(ternal)h(represen)m
-(tation.)80 b(On)43 b(exact)i(n)m(um)m(b)s(ers,)f(the)-30
-5067 y(elemen)m(tary)31 b(op)s(erations)g(\()p Fp(+)p
-Fr(,)f Fp(-)p Fr(,)g Fp(*)p Fr(,)h Fp(/)p Fr(,)f(comparisons,)35
-b(.)23 b(.)f(.)11 b(\))31 b(compute)e(the)i(completely)g(correct)h
-(result.)-30 5203 y(In)e(CLN,)g(the)g(exact)i(n)m(um)m(b)s(ers)c(are:)
-45 5340 y Fq(\017)60 b Fr(rational)32 b(n)m(um)m(b)s(ers)c(\(including)
-i(in)m(tegers\),)p eop
-%%Page: 7 9
-7 8 bop -30 -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)2517 b(7)45 299 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.)-30
-463 y(Rational)g(n)m(um)m(b)s(ers)27 b(are)k(alw)m(a)m(ys)h(normalized)
-e(to)g(the)h(form)e Fl(n)m(umerator)7 b Fp(/)p Fl(denominator)34
-b Fr(where)29 b(the)i(n)m(umerator)-30 573 y(and)c(denominator)h(are)g
-(coprime)f(in)m(tegers)j(and)d(the)h(denominator)g(is)g(p)s(ositiv)m
-(e.)41 b(If)27 b(the)i(resulting)f(denominator)-30 682
-y(is)i 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.)-30 820 y(Small)g(in)m(tegers)i(\(t)m
-(ypically)h(in)d(the)h(range)g Fp(-2^30)6 b Fr(.)20 b(.)j(.)11
-b Fp(2^30-1)p Fr(,)30 b(for)i(32-bit)h(mac)m(hines\))e(are)h(esp)s
-(ecially)h(e\016cien)m(t,)-30 930 y(b)s(ecause)e(they)g(consume)f(no)h
-(heap)g(allo)s(cation.)45 b(Otherwise)31 b(the)g(distinction)h(b)s(et)m
-(w)m(een)g(these)g(immediate)e(in)m(te-)-30 1039 y(gers)h(\(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.)-30
-1305 y Fs(3.2)68 b(Floating-p)t(oin)l(t)46 b(n)l(um)l(b)t(ers)-30
-1501 y Fr(Not)41 b(all)f(real)h(n)m(um)m(b)s(ers)c(can)j(b)s(e)f
-(represen)m(ted)h(exactly)-8 b(.)71 b(\(There)40 b(is)g(an)g(easy)g
-(mathematical)g(pro)s(of)f(for)h(this:)-30 1611 y(Only)34
-b(a)i(coun)m(table)g(set)f(of)g(n)m(um)m(b)s(ers)e(can)i(b)s(e)f
-(stored)h(exactly)i(in)d(a)i(computer,)f(ev)m(en)g(if)g(one)g(assumes)f
-(that)h(it)-30 1720 y(has)f(unlimited)g(storage.)54 b(But)35
-b(there)g(are)g(uncoun)m(tably)f(man)m(y)g(real)h(n)m(um)m(b)s(ers.\))
-51 b(So)34 b(some)g(appro)m(ximation)h(is)-30 1830 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.)-30
-1968 y(The)e(elemen)m(tary)i(op)s(erations)f(\()p Fp(+)p
-Fr(,)h Fp(-)p Fr(,)f Fp(*)p Fr(,)g Fp(/)p Fr(,)35 b(.)22
-b(.)h(.)11 b(\))29 b(only)g(return)f(appro)m(ximate)h(results.)40
-b(F)-8 b(or)30 b(example,)f(the)g(v)-5 b(alue)-30 2077
-y(of)36 b(the)g(expression)f Fp(\(cl_F\))29 b(0.3)g(+)i(\(cl_F\))d(0.4)
-35 b Fr(prin)m(ts)g(as)h(`)p Fp(0.70000005)p Fr(',)f(not)h(as)g(`)p
-Fp(0.7)p Fr('.)57 b(Rounding)34 b(errors)-30 2187 y(lik)m(e)e(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.)-30 2325 y(Nev)m(ertheless,)46
-b(CLN)40 b(rounds)g(the)h(\015oating-p)s(oin)m(t)h(results)f(of)h(the)f
-(op)s(erations)g Fp(+)p Fr(,)j Fp(-)p Fr(,)g Fp(*)p Fr(,)f
-Fp(/)p Fr(,)h Fp(sqrt)c Fr(according)-30 2434 y(to)c(the)f
-(\\round-to-ev)m(en")h(rule:)50 b(It)35 b(\014rst)f(computes)g(the)h
-(exact)h(mathematical)f(result)g(and)g(then)f(returns)g(the)-30
-2544 y(\015oating-p)s(oin)m(t)26 b(n)m(um)m(b)s(er)c(whic)m(h)j(is)f
-(nearest)h(to)h(this.)38 b(If)25 b(t)m(w)m(o)h(\015oating-p)s(oin)m(t)g
-(n)m(um)m(b)s(ers)c(are)j(equally)g(distan)m(t)g(from)-30
-2653 y(the)31 b(ideal)g(result,)f(the)h(one)g(with)f(a)g
-Fp(0)g Fr(in)g(its)h(least)h(signi\014can)m(t)f(man)m(tissa)f(bit)h(is)
-f(c)m(hosen.)-30 2791 y(Similarly)-8 b(,)26 b(testing)h(\015oating)f(p)
-s(oin)m(t)f(n)m(um)m(b)s(ers)e(for)i(equalit)m(y)i(`)p
-Fp(x)j(==)g(y)p Fr(')25 b(is)g(gam)m(bling)h(with)f(random)e(errors.)38
-b(Better)-30 2901 y(c)m(hec)m(k)32 b(for)e(`)p Fp(abs\(x)f(-)h(y\))g(<)
-g(epsilon)p Fr(')f(for)h(some)g(w)m(ell-c)m(hosen)i Fp(epsilon)p
-Fr(.)-30 3039 y(Floating)g(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:)45 3176 y Fq(\017)60 b Fr(Short)28
-b(\015oats,)i(t)m(yp)s(e)g Fp(cl_SF)p Fr(.)38 b(They)29
-b(ha)m(v)m(e)h(1)f(sign)g(bit,)h(8)f(exp)s(onen)m(t)g(bits)g
-(\(including)g(the)g(exp)s(onen)m(t's)g(sign\),)150 3286
-y(and)h(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.)45
-3422 y Fq(\017)60 b Fr(Single)43 b(\015oats,)k(t)m(yp)s(e)c
-Fp(cl_FF)p Fr(.)78 b(They)42 b(ha)m(v)m(e)i(1)g(sign)f(bit,)j(8)e(exp)s
-(onen)m(t)f(bits)g(\(including)g(the)g(exp)s(onen)m(t's)150
-3532 y(sign\),)29 b(and)e(24)i(man)m(tissa)e(bits)h(\(including)g(the)g
-(\\hidden")f(bit\).)40 b(In)27 b(CLN,)h(they)g(are)g(represen)m(ted)g
-(as)g(IEEE)150 3641 y(single-precision)k(\015oating)f(p)s(oin)m(t)f(n)m
-(um)m(b)s(ers.)39 b(This)29 b(corresp)s(onds)g(closely)j(to)f(the)g
-(C/C)p Fp(++)e Fr(t)m(yp)s(e)i(`)p Fp(float)p Fr('.)45
-3777 y Fq(\017)60 b Fr(Double)38 b(\015oats,)i(t)m(yp)s(e)e
-Fp(cl_DF)p Fr(.)61 b(They)37 b(ha)m(v)m(e)i(1)f(sign)f(bit,)j(11)e(exp)
-s(onen)m(t)g(bits)g(\(including)f(the)h(exp)s(onen)m(t's)150
-3887 y(sign\),)29 b(and)e(53)i(man)m(tissa)e(bits)h(\(including)g(the)g
-(\\hidden")f(bit\).)40 b(In)27 b(CLN,)h(they)g(are)g(represen)m(ted)g
-(as)g(IEEE)150 3997 y(double-precision)i(\015oating)i(p)s(oin)m(t)e(n)m
-(um)m(b)s(ers.)38 b(This)30 b(corresp)s(onds)f(closely)j(to)f(the)g
-(C/C)p Fp(++)e Fr(t)m(yp)s(e)i(`)p Fp(double)p Fr('.)45
-4133 y Fq(\017)60 b Fr(Long)27 b(\015oats,)i(t)m(yp)s(e)e
-Fp(cl_LF)p Fr(.)38 b(They)27 b(ha)m(v)m(e)h(1)g(sign)f(bit,)h(32)g(exp)
-s(onen)m(t)f(bits)g(\(including)g(the)g(exp)s(onen)m(t's)g(sign\),)150
-4242 y(and)k(n)g(man)m(tissa)g(bits)h(\(including)f(the)h(\\hidden")f
-(bit\),)i(where)e(n)g Fp(>)p Fr(=)g(64.)45 b(The)31 b(precision)g(of)h
-(a)g(long)g(\015oat)150 4352 y(is)e(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".\))-30 4516 y(Of)f(course,)i
-(computations)e(with)h(long)g(\015oats)h(are)f(more)f(exp)s(ensiv)m(e)h
-(than)f(those)i(with)e(smaller)h(\015oating-p)s(oin)m(t)-30
-4626 y(formats.)-30 4764 y(CLN)44 b(do)s(es)g(not)h(implemen)m(t)f
-(features)g(lik)m(e)i(NaNs,)j(denormalized)44 b(n)m(um)m(b)s(ers)f(and)
-h(gradual)g(under\015o)m(w.)82 b(If)-30 4873 y(the)36
-b(exp)s(onen)m(t)f(range)h(of)f(some)g(\015oating-p)s(oin)m(t)i(t)m(yp)
-s(e)e(is)h(to)s(o)g(limited)f(for)g(y)m(our)g(application,)j(c)m(ho)s
-(ose)f(another)-30 4983 y(\015oating-p)s(oin)m(t)32 b(t)m(yp)s(e)e
-(with)g(larger)h(exp)s(onen)m(t)g(range.)-30 5121 y(As)37
-b(a)g(user)e(of)i(CLN,)g(y)m(ou)g(can)g(forget)g(ab)s(out)f(the)h
-(di\013erences)g(b)s(et)m(w)m(een)g(the)g(four)f(\015oating-p)s(oin)m
-(t)i(t)m(yp)s(es)f(and)-30 5230 y(just)i(declare)h(all)g(y)m(our)g
-(\015oating-p)s(oin)m(t)g(v)-5 b(ariables)40 b(as)g(b)s(eing)f(of)g(t)m
-(yp)s(e)h Fp(cl_F)p Fr(.)66 b(This)39 b(has)g(the)g(adv)-5
-b(an)m(tage)41 b(that)-30 5340 y(when)30 b(y)m(ou)i(c)m(hange)h(the)f
-(precision)f(of)h(some)f(computation)g(\(sa)m(y)-8 b(,)34
-b(from)c Fp(cl_DF)g Fr(to)i Fp(cl_LF)p Fr(\),)f(y)m(ou)h(don't)f(ha)m
-(v)m(e)i(to)p eop
-%%Page: 8 10
-8 9 bop -30 -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)2517 b(8)-30 299 y(c)m(hange)34
-b(the)g(co)s(de,)g(only)f(the)g(precision)h(of)f(the)g(initial)i(v)-5
-b(alues.)49 b(Also,)35 b(man)m(y)d(transcenden)m(tal)i(functions)f(ha)m
-(v)m(e)-30 408 y(b)s(een)f(declared)i(as)f(returning)f(a)h
-Fp(cl_F)f Fr(when)g(the)h(argumen)m(t)f(is)h(a)g Fp(cl_F)p
-Fr(,)g(but)f(suc)m(h)g(declarations)j(are)e(missing)-30
-518 y(for)f(the)h(t)m(yp)s(es)g Fp(cl_SF)p Fr(,)f Fp(cl_FF)p
-Fr(,)g Fp(cl_DF)p Fr(,)g Fp(cl_LF)p Fr(.)45 b(\(Suc)m(h)33
-b(declarations)h(w)m(ould)e(b)s(e)g(wrong)g(if)h(the)f(\015oating)i(p)s
-(oin)m(t)-30 628 y(con)m(tagion)f(rule)d(happ)s(ened)e(to)j(c)m(hange)h
-(in)e(the)h(future.\))-30 941 y Fs(3.3)68 b(Complex)46
-b(n)l(um)l(b)t(ers)-30 1156 y Fr(Complex)29 b(n)m(um)m(b)s(ers,)f(as)j
-(implemen)m(ted)e(b)m(y)h(the)g(class)h Fp(cl_N)p Fr(,)e(ha)m(v)m(e)j
-(a)f(real)f(part)h(and)e(an)h(imaginary)g(part,)h(b)s(oth)-30
-1266 y(real)42 b(n)m(um)m(b)s(ers.)70 b(A)41 b(complex)g(n)m(um)m(b)s
-(er)e(whose)i(imaginary)f(part)h(is)h(the)f(exact)h(n)m(um)m(b)s(er)d
-Fp(0)i Fr(is)g(automatically)-30 1375 y(con)m(v)m(erted)32
-b(to)f(a)g(real)g(n)m(um)m(b)s(er.)-30 1532 y(Complex)36
-b(n)m(um)m(b)s(ers)f(can)i(arise)h(from)d(real)j(n)m(um)m(b)s(ers)d
-(alone,)40 b(for)d(example)g(through)f(application)j(of)e
-Fp(sqrt)f Fr(or)-30 1642 y(transcenden)m(tal)31 b(functions.)-30
-1955 y Fs(3.4)68 b(Con)l(v)l(ersions)-30 2170 y Fr(Con)m(v)m(ersions)46
-b(from)e(an)m(y)h(class)i(to)f(an)m(y)f(its)h(sup)s(erclasses)f
-(\(\\base)h(classes")h(in)e(C)p Fp(++)g Fr(terminology\))h(is)f(done)
--30 2280 y(automatically)-8 b(.)-30 2437 y(Con)m(v)m(ersions)28
-b(from)f(the)h(C)f(built-in)h(t)m(yp)s(es)g(`)p Fp(long)p
-Fr(')f(and)h(`)p Fp(unsigned)g(long)p Fr(')f(are)i(pro)m(vided)e(for)h
-(the)g(classes)h Fp(cl_I)p Fr(,)-30 2546 y Fp(cl_RA)p
-Fr(,)g Fp(cl_R)p Fr(,)h Fp(cl_N)f Fr(and)h Fp(cl_number)p
-Fr(.)-30 2703 y(Con)m(v)m(ersions)35 b(from)e(the)i(C)g(built-in)f(t)m
-(yp)s(es)h(`)p Fp(int)p Fr(')f(and)h(`)p Fp(unsigned)28
-b(int)p Fr(')34 b(are)h(pro)m(vided)g(for)f(the)h(classes)h
-Fp(cl_I)p Fr(,)-30 2813 y Fp(cl_RA)p Fr(,)30 b Fp(cl_R)p
-Fr(,)h Fp(cl_N)e Fr(and)i Fp(cl_number)p Fr(.)40 b(Ho)m(w)m(ev)m(er,)34
-b(these)e(con)m(v)m(ersions)g(emphasize)f(e\016ciency)-8
-b(.)44 b(Their)30 b(range)i(is)-30 2922 y(therefore)f(limited:)19
-3079 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.)19 3225 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.)-30 3418 y(In)j(a)h(declaration)i
-(lik)m(e)f(`)p Fp(cl_I)29 b(x)h(=)g(10;)p Fr(')j(the)h(C)p
-Fp(++)f Fr(compiler)g(is)h(able)h(to)f(do)g(the)g(con)m(v)m(ersion)h
-(of)f Fp(10)f Fr(from)f(`)p Fp(int)p Fr(')-30 3528 y(to)f(`)p
-Fp(cl_I)p Fr(')f(at)i(compile)e(time)g(already)-8 b(.)43
-b(On)30 b(the)g(other)h(hand,)f(co)s(de)h(lik)m(e)h(`)p
-Fp(cl_I)d(x)h(=)g(1000000000;)p Fr(')e(is)j(in)f(error.)-30
-3637 y(So,)f(if)f(y)m(ou)g(w)m(an)m(t)h(to)g(b)s(e)e(sure)g(that)i(an)f
-(`)p Fp(int)p Fr(')f(whose)h(magnitude)f(is)h(not)h(guaran)m(teed)g(to)
-f(b)s(e)g Fp(<)f Fr(2)p Fp(^)p Fr(29)i(is)g(correctly)-30
-3747 y(con)m(v)m(erted)45 b(to)f(a)g(`)p Fp(cl_I)p Fr(',)i(\014rst)c
-(con)m(v)m(ert)j(it)f(to)g(a)g(`)p Fp(long)p Fr('.)79
-b(Similarly)-8 b(,)47 b(if)c(a)h(large)g(`)p Fp(unsigned)28
-b(int)p Fr(')43 b(is)g(to)i(b)s(e)-30 3856 y(con)m(v)m(erted)32
-b(to)f(a)g(`)p Fp(cl_I)p Fr(',)f(\014rst)f(con)m(v)m(ert)j(it)f(to)g
-(an)g(`)p Fp(unsigned)d(long)p Fr('.)-30 4013 y(Con)m(v)m(ersions)34
-b(from)e(the)i(C)g(built-in)f(t)m(yp)s(e)h(`)p Fp(float)p
-Fr(')f(are)h(pro)m(vided)f(for)h(the)g(classes)g Fp(cl_FF)p
-Fr(,)g Fp(cl_F)p Fr(,)f Fp(cl_R)p Fr(,)h Fp(cl_N)-30
-4123 y Fr(and)c Fp(cl_number)p Fr(.)-30 4280 y(Con)m(v)m(ersions)h
-(from)e(the)i(C)f(built-in)h(t)m(yp)s(e)g(`)p Fp(double)p
-Fr(')e(are)i(pro)m(vided)g(for)f(the)h(classes)h Fp(cl_DF)p
-Fr(,)d Fp(cl_F)p Fr(,)h Fp(cl_R)p Fr(,)g Fp(cl_N)-30
-4389 y Fr(and)g Fp(cl_number)p Fr(.)-30 4546 y(Con)m(v)m(ersions)40
-b(from)e(`)p Fp(const)29 b(char)g(*)p Fr(')40 b(are)g(pro)m(vided)f
-(for)g(the)h(classes)g Fp(cl_I)p Fr(,)h Fp(cl_RA)p Fr(,)g
-Fp(cl_SF)p Fr(,)f Fp(cl_FF)p Fr(,)h Fp(cl_DF)p Fr(,)-30
-4656 y Fp(cl_LF)p Fr(,)26 b Fp(cl_F)p Fr(,)h Fp(cl_R)p
-Fr(,)g Fp(cl_N)p Fr(.)38 b(The)27 b(easiest)h(w)m(a)m(y)g(to)g(sp)s
-(ecify)e(a)i(v)-5 b(alue)27 b(whic)m(h)g(is)g(outside)g(of)g(the)g
-(range)h(of)f(the)g(C)p Fp(++)-30 4765 y Fr(built-in)j(t)m(yp)s(es)h
-(is)f(therefore)h(to)g(sp)s(ecify)f(it)h(as)g(a)f(string,)h(lik)m(e)h
-(this:)353 4917 y Fp(cl_I)47 b(order_of_rubiks_cube_gro)o(up)41
-b(=)48 b("43252003274489856000";)-30 5073 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.)-30 5230 y(Con)m(v)m(ersions)37 b(from)e
-Fp(cl_I)h Fr(to)h(the)g(C)f(built-in)h(t)m(yp)s(es)f(`)p
-Fp(int)p Fr(',)i(`)p Fp(unsigned)29 b(int)p Fr(',)38
-b(`)p Fp(long)p Fr(',)f(`)p Fp(unsigned)29 b(long)p Fr(')36
-b(are)-30 5340 y(pro)m(vided)30 b(through)g(the)g(functions)p
-eop
-%%Page: 9 11
-9 10 bop -30 -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)2517 b(9)-30 299 y Fp(int)29
-b(cl_I_to_int)f(\(const)g(cl_I&)h(x\))-30 408 y(unsigned)f(int)i
-(cl_I_to_uint)d(\(const)h(cl_I&)h(x\))-30 518 y(long)g(cl_I_to_long)e
-(\(const)i(cl_I&)g(x\))-30 628 y(unsigned)f(long)h(cl_I_to_ulong)e
-(\(const)i(cl_I&)g(x\))450 737 y Fr(Returns)d Fp(x)g
-Fr(as)h(elemen)m(t)h(of)f(the)g(C)f(t)m(yp)s(e)h Fl(ct)m(yp)s(e)p
-Fr(.)40 b(If)27 b Fp(x)f Fr(is)h(not)g(represen)m(table)g(in)g(the)g
-(range)g(of)g Fl(ct)m(yp)s(e)p Fr(,)450 847 y(a)k(run)m(time)e(error)h
-(o)s(ccurs.)-30 1006 y(Con)m(v)m(ersions)38 b(from)f(the)h(classes)h
-Fp(cl_I)p Fr(,)g Fp(cl_RA)p Fr(,)g Fp(cl_SF)p Fr(,)f
-Fp(cl_FF)p Fr(,)h Fp(cl_DF)p Fr(,)g Fp(cl_LF)p Fr(,)f
-Fp(cl_F)f Fr(and)h Fp(cl_R)e Fr(to)j(the)f(C)-30 1116
-y(built-in)30 b(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)-30
-1275 y Fp(float)e(float_approx)e(\(const)i Fl(t)m(yp)s(e)5
-b Fp(&)30 b(x\))-30 1385 y(double)f(double_approx)d(\(const)j
-Fl(t)m(yp)s(e)5 b Fp(&)30 b(x\))450 1494 y Fr(Returns)f(an)h(appro)m
-(ximation)f(of)h Fp(x)g Fr(of)g(C)f(t)m(yp)s(e)h Fl(ct)m(yp)s(e)p
-Fr(.)41 b(If)29 b Fp(abs\(x\))f Fr(is)i(to)s(o)h(close)g(to)f(0)g
-(\(under\015o)m(w\),)450 1604 y(0)h(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.)-30
-1763 y(Con)m(v)m(ersions)k(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
-Fp(++)g Fr(terminology\))h(are)g(not)-30 1873 y(pro)m(vided.)40
-b(Instead,)29 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)29 b(b)s(elongs)f(to)h(a)g(certain)g(sub)s(class,)f(and)g
-(return)f(it)-30 1983 y(as)f(elemen)m(t)h(of)f(that)h(class,)h(using)d
-(the)h(`)p Fp(As)p Fr(')g(and)g(`)p Fp(The)p Fr(')f(macros.)39
-b Fp(As\()p Fl(t)m(yp)s(e)5 b Fp(\)\()p Fl(v)-5 b(alue)5
-b Fp(\))25 b Fr(c)m(hec)m(ks)j(that)e Fl(v)-5 b(alue)32
-b Fr(b)s(elongs)-30 2092 y(to)d Fl(t)m(yp)s(e)k Fr(and)28
-b(returns)f(it)i(as)f(suc)m(h.)40 b Fp(The\()p Fl(t)m(yp)s(e)5
-b Fp(\)\()p Fl(v)-5 b(alue)5 b Fp(\))27 b Fr(assumes)g(that)i
-Fl(v)-5 b(alue)33 b Fr(b)s(elongs)28 b(to)h Fl(t)m(yp)s(e)34
-b Fr(and)27 b(returns)g(it)-30 2202 y(as)k(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:)353
-2330 y Fp(cl_I)47 b(x)g(=)h(...)o(;)353 2434 y(if)f(\(!\(x)g(>=)g
-(0\)\))g(abort\(\);)353 2538 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.)974 2642 y(//)f(In)g(general,)f(it)h(would)f(be)h
-(a)h(rational)d(number.)p eop
-%%Page: 10 12
-10 11 bop -30 -116 a Fr(Chapter)30 b(4:)41 b(F)-8 b(unctions)31
-b(on)f(n)m(um)m(b)s(ers)2523 b(10)-30 299 y Fo(4)80 b(F)-13
-b(unctions)53 b(on)g(n)l(um)l(b)t(ers)-30 600 y Fr(Eac)m(h)36
-b(of)g(the)g(n)m(um)m(b)s(er)d(classes)k(declares)f(its)g(mathematical)
-g(op)s(erations)g(in)f(the)h(corresp)s(onding)e(include)i(\014le.)-30
-709 y(F)-8 b(or)27 b(example,)g(if)f(y)m(our)g(co)s(de)h(op)s(erates)g
-(with)f(ob)5 b(jects)27 b(of)f(t)m(yp)s(e)g Fp(cl_I)p
-Fr(,)h(it)f(should)g Fp(#include)i(<cln/integer.h>)p
-Fr(.)-30 1022 y Fs(4.1)68 b(Constructing)45 b(n)l(um)l(b)t(ers)-30
-1237 y Fr(Here)31 b(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".)-30 1505 y Fn(4.1.1)63
-b(Constructing)41 b(in)m(tegers)-30 1720 y Fp(cl_I)28
-b Fr(ob)5 b(jects)30 b(are)f(most)g(easily)h(constructed)f(from)f(C)g
-(in)m(tegers)i(and)f(from)f(strings.)40 b(See)29 b(Section)h(3.4)g
-([Con)m(v)m(er-)-30 1830 y(sions],)h(page)g(8.)-30 2098
-y Fn(4.1.2)63 b(Constructing)41 b(rational)g(n)m(um)m(b)s(ers)-30
-2313 y Fp(cl_RA)e Fr(ob)5 b(jects)41 b(can)g(b)s(e)f(constructed)h
-(from)e(strings.)71 b(The)40 b(syn)m(tax)h(for)f(rational)i(n)m(um)m(b)
-s(ers)c(is)j(describ)s(ed)e(in)-30 2423 y(Section)44
-b(5.1)g([In)m(ternal)g(and)f(prin)m(ted)g(represen)m(tation],)48
-b(page)c(28.)80 b(Another)44 b(standard)e(w)m(a)m(y)i(to)g(pro)s(duce)f
-(a)-30 2532 y(rational)32 b(n)m(um)m(b)s(er)c(is)i(through)g
-(application)h(of)g(`)p Fp(operator)d(/)p Fr(')j(or)f(`)p
-Fp(recip)p Fr(')f(on)i(in)m(tegers.)-30 2801 y Fn(4.1.3)63
-b(Constructing)41 b(\015oating-p)s(oin)m(t)h(n)m(um)m(b)s(ers)-30
-3016 y Fp(cl_F)h Fr(ob)5 b(jects)45 b(with)f(lo)m(w)h(precision)f(are)g
-(most)g(easily)h(constructed)g(from)d(C)i(`)p Fp(float)p
-Fr(')f(and)h(`)p Fp(double)p Fr('.)81 b(See)-30 3125
-y(Section)31 b(3.4)h([Con)m(v)m(ersions],)f(page)g(8.)-30
-3282 y(T)-8 b(o)34 b(construct)h(a)f Fp(cl_F)e Fr(with)i(high)g
-(precision,)h(y)m(ou)f(can)g(use)g(the)g(con)m(v)m(ersion)h(from)d(`)p
-Fp(const)d(char)h(*)p Fr(',)k(but)g(y)m(ou)-30 3392 y(ha)m(v)m(e)e(to)f
-(sp)s(ecify)f(the)h(desired)f(precision)h(within)f(the)h(string.)41
-b(\(See)32 b(Section)f(5.1)h([In)m(ternal)f(and)f(prin)m(ted)g(repre-)
--30 3501 y(sen)m(tation],)i(page)g(28.\))41 b(Example:)353
-3652 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(";)-30
-3809 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.)-30
-3966 y(The)e(programmatic)g(w)m(a)m(y)h(to)h(construct)f(a)g
-Fp(cl_F)e Fr(with)i(high)f(precision)h(is)f(through)g(the)h
-Fp(cl_float)e Fr(con)m(v)m(ersion)-30 4075 y(function,)c(see)e(Section)
-h(4.11.1)h([Con)m(v)m(ersion)f(to)f(\015oating-p)s(oin)m(t)i(n)m(um)m
-(b)s(ers],)d(page)i(25.)39 b(F)-8 b(or)22 b(example,)i(to)f(compute)-30
-4185 y Fp(e)43 b Fr(to)h(40)g(decimal)f(places,)k(\014rst)c(construct)g
-(1.0)h(to)g(40)g(decimal)f(places)h(and)f(then)g(apply)g(the)g(exp)s
-(onen)m(tial)-30 4294 y(function:)353 4445 y Fp(cl_float_format_t)g
-(precision)j(=)h(cl_float_format\(40\);)353 4549 y(cl_F)g(e)g(=)h
-(exp\(cl_float\(1,precisio)o(n\)\);)-30 4818 y Fn(4.1.4)63
-b(Constructing)41 b(complex)f(n)m(um)m(b)s(ers)-30 5032
-y Fr(Non-real)31 b Fp(cl_N)f Fr(ob)5 b(jects)31 b(are)g(normally)e
-(constructed)i(through)e(the)i(function)353 5183 y Fp(cl_N)47
-b(complex)f(\(const)g(cl_R&)g(realpart,)f(const)i(cl_R&)f(imagpart\))
--30 5340 y Fr(See)31 b(Section)g(4.4)g([Elemen)m(tary)g(complex)f
-(functions],)g(page)h(12.)p eop
-%%Page: 11 13
-11 12 bop -30 -116 a Fr(Chapter)30 b(4:)41 b(F)-8 b(unctions)31
-b(on)f(n)m(um)m(b)s(ers)2523 b(11)-30 299 y Fs(4.2)68
-b(Elemen)l(tary)47 b(functions)-30 491 y Fr(Eac)m(h)27
-b(of)f(the)h(classes)g Fp(cl_N)p Fr(,)f Fp(cl_R)p Fr(,)g
-Fp(cl_RA)p Fr(,)g Fp(cl_I)p Fr(,)g Fp(cl_F)p Fr(,)g Fp(cl_SF)p
-Fr(,)g Fp(cl_FF)p Fr(,)g Fp(cl_DF)p Fr(,)g Fp(cl_LF)f
-Fr(de\014nes)g(the)h(follo)m(wing)-30 601 y(op)s(erations:)-30
-760 y Fl(t)m(yp)s(e)36 b Fp(operator)28 b(+)i(\(const)e
-Fl(t)m(yp)s(e)5 b Fp(&,)31 b(const)d Fl(t)m(yp)s(e)5
-b Fp(&\))450 870 y Fr(Addition.)-30 1029 y Fl(t)m(yp)s(e)36
-b Fp(operator)28 b(-)i(\(const)e Fl(t)m(yp)s(e)5 b Fp(&,)31
-b(const)d Fl(t)m(yp)s(e)5 b Fp(&\))450 1139 y Fr(Subtraction.)-30
-1298 y Fl(t)m(yp)s(e)36 b Fp(operator)28 b(-)i(\(const)e
-Fl(t)m(yp)s(e)5 b Fp(&\))450 1407 y Fr(Returns)29 b(the)i(negativ)m(e)i
-(of)d(the)h(argumen)m(t.)-30 1567 y Fl(t)m(yp)s(e)36
-b Fp(plus1)29 b(\(const)f Fl(t)m(yp)s(e)5 b Fp(&)31 b(x\))450
-1676 y Fr(Returns)e Fp(x)h(+)h(1)p Fr(.)-30 1835 y Fl(t)m(yp)s(e)36
-b Fp(minus1)28 b(\(const)h Fl(t)m(yp)s(e)5 b Fp(&)30
-b(x\))450 1945 y Fr(Returns)f Fp(x)h(-)h(1)p Fr(.)-30
-2104 y Fl(t)m(yp)s(e)36 b Fp(operator)28 b(*)i(\(const)e
-Fl(t)m(yp)s(e)5 b Fp(&,)31 b(const)d Fl(t)m(yp)s(e)5
-b Fp(&\))450 2214 y Fr(Multiplication.)-30 2373 y Fl(t)m(yp)s(e)36
-b Fp(square)28 b(\(const)h Fl(t)m(yp)s(e)5 b Fp(&)30
-b(x\))450 2483 y Fr(Returns)f Fp(x)h(*)h(x)p Fr(.)-30
-2642 y(Eac)m(h)43 b(of)g(the)f(classes)i Fp(cl_N)p Fr(,)h
-Fp(cl_R)p Fr(,)f Fp(cl_RA)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)d
-Fr(de\014nes)h(the)g(follo)m(wing)-30 2751 y(op)s(erations:)-30
-2911 y Fl(t)m(yp)s(e)36 b Fp(operator)28 b(/)i(\(const)e
-Fl(t)m(yp)s(e)5 b Fp(&,)31 b(const)d Fl(t)m(yp)s(e)5
-b Fp(&\))450 3020 y Fr(Division.)-30 3179 y Fl(t)m(yp)s(e)36
-b Fp(recip)29 b(\(const)f Fl(t)m(yp)s(e)5 b Fp(&\))450
-3289 y Fr(Returns)29 b(the)i(recipro)s(cal)g(of)g(the)f(argumen)m(t.)
--30 3448 y(The)h(class)h Fp(cl_I)d Fr(do)s(esn't)i(de\014ne)g(a)g(`)p
-Fp(/)p Fr(')h(op)s(eration)f(b)s(ecause)g(in)g(the)g(C/C)p
-Fp(++)g Fr(language)h(this)f(op)s(erator,)h(applied)-30
-3558 y(to)j(in)m(tegral)h(t)m(yp)s(es,)g(denotes)f(the)g(`)p
-Fp(floor)p Fr(')e(or)h(`)p Fp(truncate)p Fr(')f(op)s(eration)i(\(whic)m
-(h)g(one)f(of)h(these,)h(is)f(implemen)m(ta-)-30 3667
-y(tion)g(dep)s(enden)m(t\).)51 b(\(See)35 b(Section)g(4.6)g([Rounding)f
-(functions],)h(page)g(13.\))53 b(Instead,)36 b Fp(cl_I)d
-Fr(de\014nes)g(an)h(\\exact)-30 3777 y(quotien)m(t")e(function:)-30
-3936 y Fp(cl_I)d(exquo)g(\(const)g(cl_I&)g(x,)h(const)e(cl_I&)h(y\))450
-4046 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(.)-30 4205 y(The)e(follo)m(wing)i(exp)s(onen)m(tiation)f
-(functions)f(are)h(de\014ned:)-30 4364 y Fp(cl_I)e(expt_pos)f(\(const)h
-(cl_I&)g(x,)h(const)f(cl_I&)g(y\))-30 4474 y(cl_RA)g(expt_pos)f
-(\(const)h(cl_RA&)f(x,)i(const)f(cl_I&)g(y\))450 4583
-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(.)-30 4742 y Fp(cl_RA)f(expt)g(\(const)g(cl_RA&)f(x,)i
-(const)f(cl_I&)g(y\))-30 4852 y(cl_R)g(expt)g(\(const)g(cl_R&)g(x,)h
-(const)f(cl_I&)g(y\))-30 4962 y(cl_N)g(expt)g(\(const)g(cl_N&)g(x,)h
-(const)f(cl_I&)g(y\))450 5071 y Fr(Returns)g Fp(x^y)p
-Fr(.)-30 5230 y(Eac)m(h)43 b(of)g(the)f(classes)i Fp(cl_R)p
-Fr(,)h Fp(cl_RA)p Fr(,)f 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)d Fr(de\014nes)h(the)g(follo)m(wing)-30 5340
-y(op)s(eration:)p eop
-%%Page: 12 14
-12 13 bop -30 -116 a Fr(Chapter)30 b(4:)41 b(F)-8 b(unctions)31
-b(on)f(n)m(um)m(b)s(ers)2523 b(12)-30 299 y Fl(t)m(yp)s(e)36
-b Fp(abs)29 b(\(const)g Fl(t)m(yp)s(e)5 b Fp(&)30 b(x\))450
-408 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(.)-30
-588 y(The)g(class)h Fp(cl_N)e Fr(implemen)m(ts)g(this)h(as)h(follo)m
-(ws:)-30 767 y Fp(cl_R)e(abs)h(\(const)e(cl_N)i(x\))450
-877 y Fr(Returns)f(the)i(absolute)g(v)-5 b(alue)31 b(of)f
-Fp(x)p Fr(.)-30 1057 y(Eac)m(h)d(of)f(the)h(classes)g
-Fp(cl_N)p Fr(,)f Fp(cl_R)p Fr(,)g Fp(cl_RA)p Fr(,)g Fp(cl_I)p
-Fr(,)g Fp(cl_F)p Fr(,)g Fp(cl_SF)p Fr(,)g Fp(cl_FF)p
-Fr(,)g Fp(cl_DF)p Fr(,)g Fp(cl_LF)f Fr(de\014nes)g(the)h(follo)m(wing)
--30 1166 y(op)s(eration:)-30 1346 y Fl(t)m(yp)s(e)36
-b Fp(signum)28 b(\(const)h Fl(t)m(yp)s(e)5 b Fp(&)30
-b(x\))450 1455 y Fr(Returns)f(the)h(sign)g(of)g Fp(x)p
-Fr(,)g(in)f(the)i(same)e(n)m(um)m(b)s(er)e(format)j(as)g
-Fp(x)p Fr(.)40 b(This)29 b(is)h(de\014ned)f(as)h Fp(x)g(/)g(abs\(x\))e
-Fr(if)450 1565 y Fp(x)i Fr(is)g(non-zero,)i(and)d Fp(x)h
-Fr(if)h Fp(x)f Fr(is)g(zero.)42 b(If)30 b Fp(x)g Fr(is)g(real,)h(the)g
-(v)-5 b(alue)31 b(is)f(either)h(0)g(or)f(1)h(or)f(-1.)-30
-1856 y Fs(4.3)68 b(Elemen)l(tary)47 b(rational)f(functions)-30
-2062 y Fr(Eac)m(h)31 b(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:)-30
-2241 y Fp(cl_I)d(numerator)f(\(const)h Fl(t)m(yp)s(e)5
-b Fp(&)30 b(x\))450 2351 y Fr(Returns)f(the)i(n)m(umerator)e(of)i
-Fp(x)p Fr(.)-30 2524 y Fp(cl_I)e(denominator)f(\(const)g
-Fl(t)m(yp)s(e)5 b Fp(&)31 b(x\))450 2633 y Fr(Returns)e(the)i
-(denominator)f(of)g Fp(x)p Fr(.)-30 2813 y(The)g(n)m(umerator)g(and)g
-(denominator)g(of)h(a)g(rational)h(n)m(um)m(b)s(er)c(are)k(normalized)e
-(in)g(suc)m(h)h(a)g(w)m(a)m(y)g(that)h(they)f(ha)m(v)m(e)-30
-2922 y(no)f(factor)i(in)e(common)e(and)i(the)h(denominator)e(is)i(p)s
-(ositiv)m(e.)-30 3213 y Fs(4.4)68 b(Elemen)l(tary)47
-b(complex)e(functions)-30 3419 y Fr(The)30 b(class)h
-Fp(cl_N)e Fr(de\014nes)h(the)g(follo)m(wing)i(op)s(eration:)-30
-3599 y Fp(cl_N)d(complex)g(\(const)f(cl_R&)h(a,)h(const)f(cl_R&)g(b\))
-450 3708 y Fr(Returns)35 b(the)h(complex)g(n)m(um)m(b)s(er)e
-Fp(a+bi)p Fr(,)i(that)h(is,)g(the)f(complex)g(n)m(um)m(b)s(er)e(with)h
-(real)i(part)f Fp(a)g Fr(and)450 3818 y(imaginary)30
-b(part)g Fp(b)p Fr(.)-30 3997 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:)-30 4177 y Fp(cl_R)d(realpart)f(\(const)h
-Fl(t)m(yp)s(e)5 b Fp(&)30 b(x\))450 4286 y Fr(Returns)f(the)i(real)g
-(part)f(of)h Fp(x)p Fr(.)-30 4459 y Fp(cl_R)e(imagpart)f(\(const)h
-Fl(t)m(yp)s(e)5 b Fp(&)30 b(x\))450 4569 y Fr(Returns)f(the)i
-(imaginary)f(part)g(of)h Fp(x)p Fr(.)-30 4742 y Fl(t)m(yp)s(e)36
-b Fp(conjugate)27 b(\(const)i Fl(t)m(yp)s(e)5 b Fp(&)31
-b(x\))450 4851 y Fr(Returns)e(the)i(complex)f(conjugate)i(of)e
-Fp(x)p Fr(.)-30 5031 y(W)-8 b(e)32 b(ha)m(v)m(e)f(the)g(relations)150
-5179 y Fp(x)f(=)g(complex\(realpart\(x\),)25 b(imagpart\(x\)\))150
-5320 y(conjugate\(x\))i(=)j(complex\(realpart\(x\),)25
-b(-imagpart\(x\)\))p eop
-%%Page: 13 15
-13 14 bop -30 -116 a Fr(Chapter)30 b(4:)41 b(F)-8 b(unctions)31
-b(on)f(n)m(um)m(b)s(ers)2523 b(13)-30 299 y Fs(4.5)68
-b(Comparisons)-30 489 y Fr(Eac)m(h)27 b(of)f(the)h(classes)g
-Fp(cl_N)p Fr(,)f Fp(cl_R)p Fr(,)g Fp(cl_RA)p Fr(,)g Fp(cl_I)p
-Fr(,)g Fp(cl_F)p Fr(,)g Fp(cl_SF)p Fr(,)g Fp(cl_FF)p
-Fr(,)g Fp(cl_DF)p Fr(,)g Fp(cl_LF)f Fr(de\014nes)g(the)h(follo)m(wing)
--30 598 y(op)s(erations:)-30 752 y Fp(bool)j(operator)f(==)i(\(const)f
-Fl(t)m(yp)s(e)5 b Fp(&,)30 b(const)f Fl(t)m(yp)s(e)5
-b Fp(&\))-30 862 y(bool)29 b(operator)f(!=)i(\(const)f
-Fl(t)m(yp)s(e)5 b Fp(&,)30 b(const)f Fl(t)m(yp)s(e)5
-b Fp(&\))450 971 y Fr(Comparison,)29 b(as)i(in)f(C)g(and)f(C)p
-Fp(++)p Fr(.)-30 1125 y Fp(uint32)g(equal_hashcode)d(\(const)j
-Fl(t)m(yp)s(e)5 b Fp(&\))450 1235 y Fr(Returns)35 b(a)h(32-bit)h(hash)e
-(co)s(de)h(that)g(is)g(the)g(same)f(for)h(an)m(y)g(t)m(w)m(o)h(n)m(um)m
-(b)s(ers)c(whic)m(h)i(are)i(the)f(same)450 1345 y(according)24
-b(to)h Fp(==)p Fr(.)38 b(This)22 b(hash)h(co)s(de)h(dep)s(ends)e(on)h
-(the)h(n)m(um)m(b)s(er's)d(v)-5 b(alue,)26 b(not)d(its)h(t)m(yp)s(e)g
-(or)g(precision.)-30 1499 y Fp(cl_boolean)k(zerop)h(\(const)f
-Fl(t)m(yp)s(e)5 b Fp(&)31 b(x\))450 1608 y Fr(Compare)e(against)j
-(zero:)41 b Fp(x)30 b(==)g(0)-30 1762 y Fr(Eac)m(h)43
-b(of)g(the)f(classes)i Fp(cl_R)p Fr(,)h Fp(cl_RA)p Fr(,)f
-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)d Fr(de\014nes)h(the)g(follo)m(wing)
--30 1872 y(op)s(erations:)-30 2026 y Fp(cl_signean)28
-b(compare)g(\(const)h Fl(t)m(yp)s(e)5 b Fp(&)30 b(x,)g(const)f
-Fl(t)m(yp)s(e)5 b Fp(&)30 b(y\))450 2135 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(.)-30 2289 y Fp(bool)f(operator)f(<=)i(\(const)
-f Fl(t)m(yp)s(e)5 b Fp(&,)30 b(const)f Fl(t)m(yp)s(e)5
-b Fp(&\))-30 2399 y(bool)29 b(operator)f(<)i(\(const)f
-Fl(t)m(yp)s(e)5 b Fp(&,)30 b(const)f Fl(t)m(yp)s(e)5
-b Fp(&\))-30 2508 y(bool)29 b(operator)f(>=)i(\(const)f
-Fl(t)m(yp)s(e)5 b Fp(&,)30 b(const)f Fl(t)m(yp)s(e)5
-b Fp(&\))-30 2618 y(bool)29 b(operator)f(>)i(\(const)f
-Fl(t)m(yp)s(e)5 b Fp(&,)30 b(const)f Fl(t)m(yp)s(e)5
-b Fp(&\))450 2727 y Fr(Comparison,)29 b(as)i(in)f(C)g(and)f(C)p
-Fp(++)p Fr(.)-30 2881 y Fp(cl_boolean)f(minusp)g(\(const)h
-Fl(t)m(yp)s(e)5 b Fp(&)30 b(x\))450 2991 y Fr(Compare)f(against)j
-(zero:)41 b Fp(x)30 b(<)g(0)-30 3145 y(cl_boolean)e(plusp)h(\(const)f
-Fl(t)m(yp)s(e)5 b Fp(&)31 b(x\))450 3255 y Fr(Compare)e(against)j
-(zero:)41 b Fp(x)30 b(>)g(0)-30 3408 y Fl(t)m(yp)s(e)36
-b Fp(max)29 b(\(const)g Fl(t)m(yp)s(e)5 b Fp(&)30 b(x,)g(const)f
-Fl(t)m(yp)s(e)5 b Fp(&)30 b(y\))450 3518 y Fr(Return)g(the)g(maxim)m
-(um)d(of)k Fp(x)f Fr(and)g Fp(y)p Fr(.)-30 3672 y Fl(t)m(yp)s(e)36
-b Fp(min)29 b(\(const)g Fl(t)m(yp)s(e)5 b Fp(&)30 b(x,)g(const)f
-Fl(t)m(yp)s(e)5 b Fp(&)30 b(y\))450 3782 y Fr(Return)g(the)g(minim)m
-(um)d(of)j Fp(x)g Fr(and)g Fp(y)p Fr(.)-30 3936 y(When)35
-b(a)g(\015oating)h(p)s(oin)m(t)f(n)m(um)m(b)s(er)d(and)i(a)i(rational)g
-(n)m(um)m(b)s(er)c(are)k(compared,)f(the)g(\015oat)h(is)f(\014rst)f
-(con)m(v)m(erted)i(to)-30 4045 y(a)f(rational)h(n)m(um)m(b)s(er)c
-(using)i(the)h(function)f Fp(rational)p Fr(.)51 b(Since)35
-b(a)g(\015oating)g(p)s(oin)m(t)g(n)m(um)m(b)s(er)d(actually)k(represen)
-m(ts)-30 4155 y(an)h(in)m(terv)-5 b(al)39 b(of)e(real)h(n)m(um)m(b)s
-(ers,)f(the)h(result)f(migh)m(t)g(b)s(e)g(surprising.)60
-b(F)-8 b(or)38 b(example,)h Fp(\(cl_F\)\(cl_R\)"1/3")26
-b(==)-30 4264 y(\(cl_R\)"1/3")h 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 Fp(1/3)p Fr(.)-30 4513
-y Fs(4.6)68 b(Rounding)45 b(functions)-30 4703 y Fr(When)40
-b(a)g(real)h(n)m(um)m(b)s(er)d(is)i(to)h(b)s(e)f(con)m(v)m(erted)h(to)g
-(an)f(in)m(teger,)45 b(there)40 b(is)g(no)g(\\b)s(est")h(rounding.)69
-b(The)39 b(desired)-30 4813 y(rounding)27 b(function)g(dep)s(ends)f(on)
-i(the)g(application.)41 b(The)28 b(Common)d(Lisp)i(and)g(ISO)g(Lisp)g
-(standards)g(o\013er)i(four)-30 4923 y(rounding)g(functions:)-30
-5076 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(.)-30 5230 y Fp(ceiling\(x\))450
-5340 y Fr(This)e(is)g(the)h(smallest)f(in)m(teger)i Fp(>)p
-Fr(=)p Fp(x)p Fr(.)p eop
-%%Page: 14 16
-14 15 bop -30 -116 a Fr(Chapter)30 b(4:)41 b(F)-8 b(unctions)31
-b(on)f(n)m(um)m(b)s(ers)2523 b(14)-30 299 y Fp(truncate\(x\))450
-408 y Fr(Among)30 b(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(.)-30 566 y Fp(round\(x\))96 b Fr(The)32 b(in)m(teger)i
-(nearest)g(to)f Fp(x)p Fr(.)48 b(If)32 b Fp(x)g Fr(is)h(exactly)i
-(halfw)m(a)m(y)e(b)s(et)m(w)m(een)h(t)m(w)m(o)g(in)m(tegers,)h(c)m(ho)s
-(ose)e(the)g(ev)m(en)450 676 y(one.)-30 833 y(These)d(functions)g(ha)m
-(v)m(e)i(di\013eren)m(t)e(adv)-5 b(an)m(tages:)-30 967
-y Fp(floor)44 b Fr(and)i Fp(ceiling)e Fr(are)i(translation)h(in)m(v)-5
-b(arian)m(t:)73 b Fp(floor\(x+n\))27 b(=)j(floor\(x\))e(+)i(n)46
-b Fr(and)f Fp(ceiling\(x+n\))27 b(=)-30 1076 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(.)-30 1210 y(On)51 b(the)h(other)h(hand,)j
-Fp(truncate)50 b Fr(and)h Fp(round)g Fr(are)h(symmetric:)83
-b Fp(truncate\(-x\))27 b(=)j(-truncate\(x\))49 b Fr(and)-30
-1319 y Fp(round\(-x\))28 b(=)i(-round\(x\))p Fr(,)44
-b(and)f(furthermore)e Fp(round)g Fr(is)j(un)m(biased:)65
-b(on)44 b(the)f(\\a)m(v)m(erage",)50 b(it)44 b(rounds)d(do)m(wn)-30
-1429 y(exactly)32 b(as)f(often)g(as)f(it)h(rounds)e(up.)-30
-1563 y(The)h(functions)g(are)h(related)g(lik)m(e)h(this:)150
-1696 y Fp(ceiling\(m/n\))27 b(=)j(floor\(\(m+n-1\)/n\))c(=)k
-(floor\(\(m-1\)/n\)+1)f Fr(for)j(rational)j(n)m(um)m(b)s(ers)30
-b Fp(m/n)i Fr(\()p Fp(m)p Fr(,)i Fp(n)f Fr(in)m(te-)150
-1806 y(gers,)e Fp(n>)p Fr(0\),)g(and)150 1939 y Fp(truncate\(x\))c(=)j
-(sign\(x\))f(*)h(floor\(abs\(x\)\))-30 2097 y Fr(Eac)m(h)f(of)f(the)g
-(classes)h Fp(cl_R)p Fr(,)e Fp(cl_RA)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(,)g Fp(cl_LF)g Fr(de\014nes)g(the)h(follo)m(wing)h(op)s(erations:)
--30 2254 y Fp(cl_I)g(floor1)g(\(const)g Fl(t)m(yp)s(e)5
-b Fp(&)30 b(x\))450 2364 y Fr(Returns)f Fp(floor\(x\))p
-Fr(.)-30 2521 y Fp(cl_I)g(ceiling1)f(\(const)h Fl(t)m(yp)s(e)5
-b Fp(&)30 b(x\))450 2631 y Fr(Returns)f Fp(ceiling\(x\))p
-Fr(.)-30 2789 y Fp(cl_I)g(truncate1)f(\(const)h Fl(t)m(yp)s(e)5
-b Fp(&)30 b(x\))450 2898 y Fr(Returns)f Fp(truncate\(x\))p
-Fr(.)-30 3056 y Fp(cl_I)g(round1)g(\(const)g Fl(t)m(yp)s(e)5
-b Fp(&)30 b(x\))450 3165 y Fr(Returns)f Fp(round\(x\))p
-Fr(.)-30 3323 y(Eac)m(h)43 b(of)g(the)f(classes)i Fp(cl_R)p
-Fr(,)h Fp(cl_RA)p Fr(,)f 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)d Fr(de\014nes)h(the)g(follo)m(wing)-30 3432
-y(op)s(erations:)-30 3590 y Fp(cl_I)29 b(floor1)g(\(const)g
-Fl(t)m(yp)s(e)5 b Fp(&)30 b(x,)g(const)f Fl(t)m(yp)s(e)5
-b Fp(&)30 b(y\))450 3700 y Fr(Returns)f Fp(floor\(x/y\))p
-Fr(.)-30 3857 y Fp(cl_I)g(ceiling1)f(\(const)h Fl(t)m(yp)s(e)5
-b Fp(&)30 b(x,)g(const)f Fl(t)m(yp)s(e)5 b Fp(&)30 b(y\))450
-3967 y Fr(Returns)f Fp(ceiling\(x/y\))p Fr(.)-30 4124
-y Fp(cl_I)g(truncate1)f(\(const)h Fl(t)m(yp)s(e)5 b Fp(&)30
-b(x,)g(const)f Fl(t)m(yp)s(e)5 b Fp(&)30 b(y\))450 4234
-y Fr(Returns)f Fp(truncate\(x/y\))p Fr(.)-30 4391 y Fp(cl_I)g(round1)g
-(\(const)g Fl(t)m(yp)s(e)5 b Fp(&)30 b(x,)g(const)f Fl(t)m(yp)s(e)5
-b Fp(&)30 b(y\))450 4501 y Fr(Returns)f Fp(round\(x/y\))p
-Fr(.)-30 4658 y(These)41 b(functions)g(are)h(called)h(`)p
-Fp(floor1)p Fr(',)48 b(.)23 b(.)f(.)52 b(here)42 b(instead)f(of)h(`)p
-Fp(floor)p Fr(',)49 b(.)22 b(.)h(.)11 b(,)44 b(b)s(ecause)e(on)f(some)g
-(systems,)-30 4768 y(system)30 b(dep)s(enden)m(t)f(include)h(\014les)g
-(de\014ne)g(`)p Fp(floor)p Fr(')f(and)h(`)p Fp(ceiling)p
-Fr(')f(as)i(macros.)-30 4902 y(In)h(man)m(y)g(cases,)j(one)e(needs)g(b)
-s(oth)f(the)h(quotien)m(t)i(and)d(the)h(remainder)e(of)j(a)f(division.)
-49 b(It)33 b(is)g(more)f(e\016cien)m(t)i(to)-30 5011
-y(compute)h(b)s(oth)h(at)h(the)f(same)g(time)f(than)h(to)h(p)s(erform)d
-(t)m(w)m(o)j(divisions,)h(one)e(for)g(quotien)m(t)i(and)d(the)h(next)h
-(one)-30 5121 y(for)28 b(the)g(remainder.)38 b(The)27
-b(follo)m(wing)j(functions)d(therefore)i(return)d(a)j(structure)e(con)m
-(taining)i(b)s(oth)f(the)g(quotien)m(t)-30 5230 y(and)g(the)g
-(remainder.)38 b(The)28 b(su\016x)f(`)p Fp(2)p Fr(')h(indicates)h(the)g
-(n)m(um)m(b)s(er)c(of)k(\\return)e(v)-5 b(alues".)41
-b(The)27 b(remainder)g(is)h(de\014ned)-30 5340 y(as)j(follo)m(ws:)p
-eop
-%%Page: 15 17
-15 16 bop -30 -116 a Fr(Chapter)30 b(4:)41 b(F)-8 b(unctions)31
-b(on)f(n)m(um)m(b)s(ers)2523 b(15)45 299 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(,)45
-441 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(,)-30 624 y(and)g(similarly)g(for)g(the)g(other)h
-(three)g(op)s(erations.)-30 774 y(Eac)m(h)e(of)f(the)g(classes)h
-Fp(cl_R)p Fr(,)e Fp(cl_RA)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(,)g Fp(cl_LF)g
-Fr(de\014nes)g(the)h(follo)m(wing)h(op)s(erations:)-30
-957 y Fp(struct)g Fl(t)m(yp)s(e)5 b Fp(_div_t)29 b({)h(cl_I)f
-(quotient;)f Fl(t)m(yp)s(e)35 b Fp(remainder;)28 b(};)-30
-1066 y Fl(t)m(yp)s(e)5 b Fp(_div_t)29 b(floor2)g(\(const)f
-Fl(t)m(yp)s(e)5 b Fp(&)31 b(x\))-30 1176 y Fl(t)m(yp)s(e)5
-b Fp(_div_t)29 b(ceiling2)f(\(const)h Fl(t)m(yp)s(e)5
-b Fp(&)30 b(x\))-30 1286 y Fl(t)m(yp)s(e)5 b Fp(_div_t)29
-b(truncate2)f(\(const)h Fl(t)m(yp)s(e)5 b Fp(&)30 b(x\))-30
-1395 y Fl(t)m(yp)s(e)5 b Fp(_div_t)29 b(round2)g(\(const)f
-Fl(t)m(yp)s(e)5 b Fp(&)31 b(x\))-30 1545 y Fr(Eac)m(h)43
-b(of)g(the)f(classes)i Fp(cl_R)p Fr(,)h Fp(cl_RA)p Fr(,)f
-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)d Fr(de\014nes)h(the)g(follo)m(wing)
--30 1655 y(op)s(erations:)-30 1838 y Fp(struct)29 b Fl(t)m(yp)s(e)5
-b Fp(_div_t)29 b({)h(cl_I)f(quotient;)f Fl(t)m(yp)s(e)35
-b Fp(remainder;)28 b(};)-30 1947 y Fl(t)m(yp)s(e)5 b
-Fp(_div_t)29 b(floor2)g(\(const)f Fl(t)m(yp)s(e)5 b Fp(&)31
-b(x,)e(const)g Fl(t)m(yp)s(e)5 b Fp(&)31 b(y\))-30 2057
-y Fl(t)m(yp)s(e)5 b Fp(_div_t)29 b(ceiling2)f(\(const)h
-Fl(t)m(yp)s(e)5 b Fp(&)30 b(x,)g(const)f Fl(t)m(yp)s(e)5
-b Fp(&)30 b(y\))-30 2166 y Fl(t)m(yp)s(e)5 b Fp(_div_t)29
-b(truncate2)f(\(const)h Fl(t)m(yp)s(e)5 b Fp(&)30 b(x,)g(const)f
-Fl(t)m(yp)s(e)5 b Fp(&)30 b(y\))-30 2276 y Fl(t)m(yp)s(e)5
-b Fp(_div_t)29 b(round2)g(\(const)f Fl(t)m(yp)s(e)5 b
-Fp(&)31 b(x,)e(const)g Fl(t)m(yp)s(e)5 b Fp(&)31 b(y\))-30
-2426 y Fr(Sometimes,)d(one)g(w)m(an)m(ts)h(the)f(quotien)m(t)h(as)g(a)f
-(\015oating-p)s(oin)m(t)i(n)m(um)m(b)s(er)c(\(of)i(the)h(same)e(format)
-h(as)g(the)g(argumen)m(t,)-30 2536 y(if)i(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 Fp(f)p Fr(')g(indicates)h(this.)-30
-2686 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:)-30
-2868 y Fl(t)m(yp)s(e)36 b Fp(ffloor)28 b(\(const)h Fl(t)m(yp)s(e)5
-b Fp(&)30 b(x\))-30 2978 y Fl(t)m(yp)s(e)36 b Fp(fceiling)28
-b(\(const)g Fl(t)m(yp)s(e)5 b Fp(&)31 b(x\))-30 3088
-y Fl(t)m(yp)s(e)36 b Fp(ftruncate)27 b(\(const)i Fl(t)m(yp)s(e)5
-b Fp(&)31 b(x\))-30 3197 y Fl(t)m(yp)s(e)36 b Fp(fround)28
-b(\(const)h Fl(t)m(yp)s(e)5 b Fp(&)30 b(x\))-30 3347
-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(.)-30 3497 y(The)f(class)h
-Fp(cl_R)e Fr(de\014nes)h(the)g(follo)m(wing)i(op)s(erations:)-30
-3680 y Fp(cl_F)d(ffloor)g(\(const)g Fl(t)m(yp)s(e)5 b
-Fp(&)30 b(x,)g(const)f Fl(t)m(yp)s(e)5 b Fp(&)30 b(y\))-30
-3790 y(cl_F)f(fceiling)f(\(const)h Fl(t)m(yp)s(e)5 b
-Fp(&)30 b(x,)g(const)f Fl(t)m(yp)s(e)5 b Fp(&)30 b(y\))-30
-3899 y(cl_F)f(ftruncate)f(\(const)h Fl(t)m(yp)s(e)5 b
-Fp(&)30 b(x,)g(const)f Fl(t)m(yp)s(e)5 b Fp(&)30 b(y\))-30
-4009 y(cl_F)f(fround)g(\(const)g Fl(t)m(yp)s(e)5 b Fp(&)30
-b(x,)g(const)f Fl(t)m(yp)s(e)5 b Fp(&)30 b(y\))-30 4159
-y Fr(These)g(functions)f(also)i(exist)g(in)e(v)m(ersions)h(whic)m(h)g
-(return)f(b)s(oth)g(the)h(quotien)m(t)h(and)e(the)i(remainder.)39
-b(The)29 b(su\016x)-30 4269 y(`)p Fp(2)p Fr(')i(indicates)g(this.)-30
-4419 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:)-30
-4601 y Fp(struct)e Fl(t)m(yp)s(e)5 b Fp(_fdiv_t)28 b({)i
-Fl(t)m(yp)s(e)36 b Fp(quotient;)28 b Fl(t)m(yp)s(e)36
-b Fp(remainder;)27 b(};)-30 4711 y Fl(t)m(yp)s(e)5 b
-Fp(_fdiv_t)29 b(ffloor2)f(\(const)h Fl(t)m(yp)s(e)5 b
-Fp(&)30 b(x\))-30 4821 y Fl(t)m(yp)s(e)5 b Fp(_fdiv_t)29
-b(fceiling2)f(\(const)g Fl(t)m(yp)s(e)5 b Fp(&)31 b(x\))-30
-4930 y Fl(t)m(yp)s(e)5 b Fp(_fdiv_t)29 b(ftruncate2)e(\(const)i
-Fl(t)m(yp)s(e)5 b Fp(&)30 b(x\))-30 5040 y Fl(t)m(yp)s(e)5
-b Fp(_fdiv_t)29 b(fround2)f(\(const)h Fl(t)m(yp)s(e)5
-b Fp(&)30 b(x\))-30 5190 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(.)-30 5340 y(The)g(class)h Fp(cl_R)e Fr(de\014nes)h(the)g
-(follo)m(wing)i(op)s(erations:)p eop
-%%Page: 16 18
-16 17 bop -30 -116 a Fr(Chapter)30 b(4:)41 b(F)-8 b(unctions)31
-b(on)f(n)m(um)m(b)s(ers)2523 b(16)-30 299 y Fp(struct)29
-b Fl(t)m(yp)s(e)5 b Fp(_fdiv_t)28 b({)i(cl_F)g(quotient;)d(cl_R)j
-(remainder;)d(};)-30 408 y Fl(t)m(yp)s(e)5 b Fp(_fdiv_t)29
-b(ffloor2)f(\(const)h Fl(t)m(yp)s(e)5 b Fp(&)30 b(x,)g(const)f
-Fl(t)m(yp)s(e)5 b Fp(&)30 b(y\))-30 518 y Fl(t)m(yp)s(e)5
-b Fp(_fdiv_t)29 b(fceiling2)f(\(const)g Fl(t)m(yp)s(e)5
-b Fp(&)31 b(x,)e(const)g Fl(t)m(yp)s(e)5 b Fp(&)31 b(y\))-30
-628 y Fl(t)m(yp)s(e)5 b Fp(_fdiv_t)29 b(ftruncate2)e(\(const)i
-Fl(t)m(yp)s(e)5 b Fp(&)30 b(x,)g(const)f Fl(t)m(yp)s(e)5
-b Fp(&)30 b(y\))-30 737 y Fl(t)m(yp)s(e)5 b Fp(_fdiv_t)29
-b(fround2)f(\(const)h Fl(t)m(yp)s(e)5 b Fp(&)30 b(x,)g(const)f
-Fl(t)m(yp)s(e)5 b Fp(&)30 b(y\))-30 868 y Fr(Other)g(applications)h
-(need)f(only)g(the)h(remainder)e(of)h(a)h(division.)40
-b(The)30 b(remainder)f(of)h(`)p Fp(floor)p Fr(')f(and)h(`)p
-Fp(ffloor)p Fr(')f(is)-30 978 y(called)k(`)p Fp(mod)p
-Fr(')e(\(abbreviation)h(of)g(\\mo)s(dulo"\).)43 b(The)31
-b(remainder)f(`)p Fp(truncate)p Fr(')g(and)h(`)p Fp(ftruncate)p
-Fr(')e(is)j(called)g(`)p Fp(rem)p Fr(')-30 1087 y(\(abbreviation)f(of)g
-(\\remainder"\).)45 1218 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)45
-1349 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)-30 1501 y Fr(If)j
-Fp(x)f Fr(and)h Fp(y)f Fr(are)i(b)s(oth)e Fp(>)p Fr(=)g(0,)j
-Fp(mod\(x,y\))28 b(=)i(rem\(x,y\))e(>=)i(0)p Fr(.)48
-b(In)32 b(general,)j Fp(mod\(x,y\))c Fr(has)i(the)g(sign)g(of)g
-Fp(y)g Fr(or)g(is)-30 1611 y(zero,)e(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.)-30
-1742 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:)-30 1894 y Fl(t)m(yp)s(e)k
-Fp(mod)29 b(\(const)g Fl(t)m(yp)s(e)5 b Fp(&)30 b(x,)g(const)f
-Fl(t)m(yp)s(e)5 b Fp(&)30 b(y\))-30 2004 y Fl(t)m(yp)s(e)36
-b Fp(rem)29 b(\(const)g Fl(t)m(yp)s(e)5 b Fp(&)30 b(x,)g(const)f
-Fl(t)m(yp)s(e)5 b Fp(&)30 b(y\))-30 2229 y Fs(4.7)68
-b(Ro)t(ots)-30 2418 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:)-30 2570 y Fl(t)m(yp)s(e)k Fp(sqrt)29
-b(\(const)g Fl(t)m(yp)s(e)5 b Fp(&)30 b(x\))450 2680
-y(x)e Fr(m)m(ust)g(b)s(e)g Fp(>)p Fr(=)h(0.)40 b(This)28
-b(function)h(returns)e(the)i(square)g(ro)s(ot)g(of)g
-Fp(x)p Fr(,)g(normalized)f(to)i(b)s(e)e Fp(>)p Fr(=)g(0.)41
-b(If)28 b Fp(x)450 2789 y 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)h(rational)h(n)m
-(um)m(b)s(er,)d(else)j(it)f(will)g(return)450 2899 y(a)j(\015oating-p)s
-(oin)m(t)g(appro)m(ximation.)-30 3051 y(The)f(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:)-30 3203 y Fp(cl_boolean)c(sqrtp)h(\(const)f
-Fl(t)m(yp)s(e)5 b Fp(&)31 b(x,)e Fl(t)m(yp)s(e)5 b Fp(*)31
-b(root\))450 3313 y Fr(This)e(tests)i(whether)e Fp(x)g
-Fr(is)h(a)h(p)s(erfect)e(square.)41 b(If)29 b(so,)i(it)f(returns)f
-(true)g(and)h(the)g(exact)h(square)f(ro)s(ot)450 3423
-y(in)g Fp(*root)p Fr(,)f(else)i(it)g(returns)f(false.)-30
-3575 y(F)-8 b(urthermore,)30 b(for)g(in)m(tegers,)i(similarly:)-30
-3727 y Fp(cl_boolean)c(isqrt)h(\(const)f Fl(t)m(yp)s(e)5
-b Fp(&)31 b(x,)e Fl(t)m(yp)s(e)5 b Fp(*)31 b(root\))450
-3837 y(x)j Fr(should)g(b)s(e)f Fp(>)p Fr(=)h(0.)53 b(This)34
-b(function)g(sets)h Fp(*root)e Fr(to)i Fp(floor\(sqrt\(x\)\))c
-Fr(and)j(returns)f(the)i(same)450 3946 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(.)-30
-4098 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:)-30 4251 y Fp(cl_boolean)c(rootp)h(\(const)f
-Fl(t)m(yp)s(e)5 b Fp(&)31 b(x,)e(const)g(cl_I&)g(n,)h
-Fl(t)m(yp)s(e)5 b Fp(*)30 b(root\))450 4360 y(x)38 b
-Fr(m)m(ust)g(b)s(e)f Fp(>)p Fr(=)h(0.)66 b Fp(n)38 b
-Fr(m)m(ust)f(b)s(e)h Fp(>)g Fr(0.)66 b(This)37 b(tests)j(whether)e
-Fp(x)g Fr(is)g(an)h Fp(n)p Fr(th)f(p)s(o)m(w)m(er)g(of)h(a)g(rational)
-450 4470 y(n)m(um)m(b)s(er.)f(If)30 b(so,)h(it)g(returns)e(true)h(and)g
-(the)h(exact)h(ro)s(ot)e(in)g Fp(*root)p Fr(,)g(else)h(it)g(returns)e
-(false.)-30 4622 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 Fp(cl_N)p Fr(:)-30 4774 y Fp(cl_N)e(sqrt)g(\(const)g(cl_N&)g
-(z\))450 4884 y Fr(Returns)44 b(the)h(square)f(ro)s(ot)h(of)g
-Fp(z)p Fr(,)j(as)d(de\014ned)f(b)m(y)g(the)h(form)m(ula)f
-Fp(sqrt\(z\))28 b(=)i(exp\(log\(z\)/2\))p Fr(.)450 4994
-y(Con)m(v)m(ersion)j(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(.)47 b(The)450 5103 y(range)25 b(of)f(the)h(result)f(is)g(the)h(righ)
-m(t)g(half)f(plane)g Fp(realpart\(sqrt\(z\)\))i(>=)k(0)24
-b Fr(including)f(the)i(p)s(ositiv)m(e)450 5213 y(imaginary)k(axis)h
-(and)f(0,)h(but)f(excluding)g(the)h(negativ)m(e)i(imaginary)d(axis.)40
-b(The)29 b(result)h(is)f(an)g(exact)450 5322 y(n)m(um)m(b)s(er)f(only)j
-(if)f Fp(z)g Fr(is)g(an)h(exact)g(n)m(um)m(b)s(er.)p
-eop
-%%Page: 17 19
-17 18 bop -30 -116 a Fr(Chapter)30 b(4:)41 b(F)-8 b(unctions)31
-b(on)f(n)m(um)m(b)s(ers)2523 b(17)-30 299 y Fs(4.8)68
-b(T)-11 b(ranscenden)l(tal)45 b(functions)-30 495 y Fr(The)30
-b(transcenden)m(tal)i(functions)f(return)f(an)g(exact)j(result)e(if)f
-(the)i(argumen)m(t)e(is)h(exact)h(and)f(the)g(result)f(is)h(exact)-30
-605 y(as)j(w)m(ell.)54 b(Otherwise)34 b(they)g(m)m(ust)f(return)g
-(inexact)j(n)m(um)m(b)s(ers)c(ev)m(en)j(if)f(the)g(argumen)m(t)g(is)g
-(exact.)54 b(F)-8 b(or)35 b(example,)-30 714 y Fp(cos\(0\))29
-b(=)h(1)g Fr(returns)f(the)h(rational)i(n)m(um)m(b)s(er)c
-Fp(1)p Fr(.)-30 946 y Fn(4.8.1)63 b(Exp)s(onen)m(tial)40
-b(and)h(logarithmic)g(functions)-30 1169 y Fp(cl_R)29
-b(exp)h(\(const)e(cl_R&)h(x\))-30 1278 y(cl_N)g(exp)h(\(const)e(cl_N&)h
-(x\))450 1388 y Fr(Returns)35 b(the)i(exp)s(onen)m(tial)g(function)f
-(of)g Fp(x)p Fr(.)58 b(This)36 b(is)g Fp(e^x)f Fr(where)h
-Fp(e)g Fr(is)g(the)h(base)f(of)g(the)h(natural)450 1498
-y(logarithms.)k(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.)-30 1661 y Fp(cl_R)e(ln)h
-(\(const)f(cl_R&)g(x\))450 1770 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.)
--30 1933 y Fp(cl_N)f(log)h(\(const)e(cl_N&)h(x\))450
-2043 y Fr(Returns)g(the)g(\(natural\))h(logarithm)g(of)f(x.)41
-b(If)29 b Fp(x)g Fr(is)g(real)h(and)f(p)s(ositiv)m(e,)i(this)e(is)h
-Fp(ln\(x\))p Fr(.)39 b(In)29 b(general,)450 2153 y Fp(log\(x\))g(=)h
-(log\(abs\(x\)\))d(+)j(i*phase\(x\))p Fr(.)35 b(The)21
-b(range)i(of)f(the)g(result)f(is)h(the)g(strip)g(in)f(the)h(complex)450
-2262 y(plane)30 b Fp(-pi)g(<)g(imagpart\(log\(x\)\))c(<=)k(pi)p
-Fr(.)-30 2425 y Fp(cl_R)f(phase)g(\(const)g(cl_N&)g(x\))450
-2535 y Fr(Returns)41 b(the)i(angle)h(part)e(of)g Fp(x)g
-Fr(in)h(its)f(p)s(olar)g(represen)m(tation)i(as)f(a)f(complex)g(n)m(um)
-m(b)s(er.)75 b(That)450 2644 y(is,)41 b Fp(phase\(x\))29
-b(=)h(atan\(realpart\(x\),imagpa)o(rt\()o(x\)\))p Fr(.)60
-b(This)38 b(is)h(also)h(the)f(imaginary)g(part)g(of)450
-2754 y Fp(log\(x\))p Fr(.)52 b(The)35 b(range)g(of)g(the)g(result)g(is)
-g(the)g(in)m(terv)-5 b(al)36 b Fp(-pi)29 b(<)h(phase\(x\))e(<=)i(pi)p
-Fr(.)54 b(The)34 b(result)h(will)450 2864 y(b)s(e)30
-b(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.)-30
-3027 y Fp(cl_R)f(log)h(\(const)e(cl_R&)h(a,)h(const)f(cl_R&)g(b\))450
-3136 y(a)35 b Fr(and)g Fp(b)g Fr(m)m(ust)f(b)s(e)h Fp(>)g
-Fr(0.)56 b(Returns)35 b(the)g(logarithm)h(of)f Fp(a)g
-Fr(with)h(resp)s(ect)f(to)h(base)g Fp(b)p Fr(.)55 b Fp(log\(a,b\))28
-b(=)450 3246 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.)-30
-3409 y Fp(cl_N)f(log)h(\(const)e(cl_N&)h(a,)h(const)f(cl_N&)g(b\))450
-3518 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(.)-30 3682 y Fp(cl_N)f(expt)g(\(const)g(cl_N&)g
-(x,)h(const)f(cl_N&)g(y\))450 3791 y Fr(Exp)s(onen)m(tiation:)42
-b(Returns)29 b Fp(x^y)g(=)h(exp\(y*log\(x\)\))p Fr(.)-30
-3956 y(The)g(constan)m(t)i(e)e(=)g(exp\(1\))i(=)e(2.71828)6
-b(.)24 b(.)f(.)41 b(is)31 b(returned)e(b)m(y)h(the)h(follo)m(wing)h
-(functions:)-30 4121 y Fp(cl_F)d(exp1)g(\(cl_float_format_t)d(f\))450
-4231 y Fr(Returns)j(e)i(as)g(a)g(\015oat)g(of)f(format)g
-Fp(f)p Fr(.)-30 4394 y Fp(cl_F)f(exp1)g(\(const)g(cl_F&)g(y\))450
-4503 y Fr(Returns)g(e)i(in)f(the)h(\015oat)g(format)f(of)g
-Fp(y)p Fr(.)-30 4666 y Fp(cl_F)f(exp1)g(\(void\))450
-4776 y Fr(Returns)g(e)i(as)g(a)g(\015oat)g(of)f(format)g
-Fp(default_float_format)p Fr(.)-30 5007 y Fn(4.8.2)63
-b(T)-10 b(rigonometric)41 b(functions)-30 5230 y Fp(cl_R)29
-b(sin)h(\(const)e(cl_R&)h(x\))450 5340 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 Fp(-1)e(<=)f(sin\(x\))g(<=)h(1)p
-Fr(.)p eop
-%%Page: 18 20
-18 19 bop -30 -116 a Fr(Chapter)30 b(4:)41 b(F)-8 b(unctions)31
-b(on)f(n)m(um)m(b)s(ers)2523 b(18)-30 299 y Fp(cl_N)29
-b(sin)h(\(const)e(cl_N&)h(z\))450 408 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.)-30 562 y Fp(cl_R)f(cos)h(\(const)e
-(cl_R&)h(x\))450 671 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 Fp(-1)e(<=)f(cos\(x\))g(<=)h(1)p Fr(.)-30 825
-y Fp(cl_N)f(cos)h(\(const)e(cl_N&)h(x\))450 934 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.)-30 1088 y Fp(struct)f(cos_sin_t)f({)i
-(cl_R)f(cos;)g(cl_R)g(sin;)g(};)-30 1198 y(cos_sin_t)f(cos_sin)g
-(\(const)h(cl_R&)g(x\))450 1307 y Fr(Returns)20 b(b)s(oth)h
-Fp(sin\(x\))f Fr(and)h Fp(cos\(x\))p Fr(.)36 b(This)20
-b(is)i(more)e(e\016cien)m(t)j(than)e(computing)g(them)f(separately)-8
-b(.)450 1417 y(The)30 b(relation)h Fp(cos^2)e(+)h(sin^2)f(=)h(1)g
-Fr(will)h(hold)f(only)h(appro)m(ximately)-8 b(.)-30 1570
-y Fp(cl_R)29 b(tan)h(\(const)e(cl_R&)h(x\))-30 1680 y(cl_N)g(tan)h
-(\(const)e(cl_N&)h(x\))450 1789 y Fr(Returns)g Fp(tan\(x\))g(=)h
-(sin\(x\)/cos\(x\))p Fr(.)-30 1943 y Fp(cl_N)f(cis)h(\(const)e(cl_R&)h
-(x\))-30 2052 y(cl_N)g(cis)h(\(const)e(cl_N&)h(x\))450
-2162 y Fr(Returns)35 b Fp(exp\(i*x\))p Fr(.)54 b(The)35
-b(name)f(`)p Fp(cis)p Fr(')h(means)g(\\cos)i Fp(+)e Fr(i)h(sin",)h(b)s
-(ecause)e Fp(e^\(i*x\))29 b(=)h(cos\(x\))e(+)450 2271
-y(i*sin\(x\))p Fr(.)-30 2425 y Fp(cl_N)h(asin)g(\(const)g(cl_N&)g(z\))
-450 2534 y Fr(Returns)j Fp(arcsin\(z\))p Fr(.)44 b(This)32
-b(is)h(de\014ned)e(as)i Fp(arcsin\(z\))27 b(=)j
-(log\(iz+sqrt\(1-z^2\)\)/i)d Fr(and)32 b(sat-)450 2644
-y(is\014es)d Fp(arcsin\(-z\))e(=)j(-arcsin\(z\))p Fr(.)37
-b(The)29 b(range)g(of)g(the)g(result)f(is)h(the)g(strip)f(in)g(the)h
-(complex)g(do-)450 2754 y(main)34 b Fp(-pi/2)29 b(<=)h
-(realpart\(arcsin\(z\)\))25 b(<=)30 b(pi/2)p Fr(,)35
-b(excluding)g(the)h(n)m(um)m(b)s(ers)c(with)j Fp(realpart)450
-2863 y(=)30 b(-pi/2)f Fr(and)h Fp(imagpart)e(<)i(0)g
-Fr(and)g(the)g(n)m(um)m(b)s(ers)e(with)i Fp(realpart)e(=)i(pi/2)g
-Fr(and)f Fp(imagpart)f(>)j(0)p Fr(.)-30 3017 y Fp(cl_N)e(acos)g
-(\(const)g(cl_N&)g(z\))450 3126 y Fr(Returns)101 b Fp(arccos\(z\))p
-Fr(.)252 b(This)101 b(is)h(de\014ned)e(as)i Fp(arccos\(z\))28
-b(=)i(pi/2)f(-)h(arcsin\(z\))e(=)450 3236 y(log\(z+i*sqrt\(1-z^2\)\)/i)
-53 b Fr(and)58 b(satis\014es)h Fp(arccos\(-z\))28 b(=)i(pi)g(-)g
-(arccos\(z\))p Fr(.)123 b(The)59 b(range)450 3345 y(of)48
-b(the)g(result)g(is)g(the)h(strip)e(in)h(the)g(complex)g(domain)f
-Fp(0)30 b(<=)f(realpart\(arcsin\(z\)\))d(<=)j(pi)p Fr(,)450
-3455 y(excluding)46 b(the)g(n)m(um)m(b)s(ers)d(with)i
-Fp(realpart)28 b(=)i(0)46 b Fr(and)f Fp(imagpart)28 b(<)i(0)45
-b Fr(and)g(the)h(n)m(um)m(b)s(ers)d(with)450 3565 y Fp(realpart)28
-b(=)i(pi)g Fr(and)g Fp(imagpart)e(>)i(0)p Fr(.)-30 3718
-y Fp(cl_R)f(atan)g(\(const)g(cl_R&)g(x,)h(const)f(cl_R&)g(y\))450
-3828 y Fr(Returns)41 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 Fp(x+iy)p
-Fr(.)75 b(This)42 b(is)450 3937 y Fp(atan\(y/x\))31 b
-Fr(if)i Fp(x>0)p Fr(.)49 b(The)33 b(range)h(of)f(the)h(result)f(is)h
-(the)g(in)m(terv)-5 b(al)34 b Fp(-pi)c(<)g(atan\(x,y\))d(<=)j(pi)p
-Fr(.)49 b(The)450 4047 y(result)23 b(will)g(b)s(e)f(an)g(exact)i(n)m
-(um)m(b)s(er)d(only)i(if)f Fp(x)30 b(>)g(0)23 b Fr(and)f
-Fp(y)g Fr(is)h(the)g(exact)h Fp(0)p Fr(.)38 b(W)-10 b(ARNING:)23
-b(In)f(Common)450 4156 y(Lisp,)30 b(this)g(function)g(is)h(called)g(as)
-g Fp(\(atan)e(y)h(x\))p Fr(,)g(with)g(rev)m(ersed)h(order)e(of)i
-(argumen)m(ts.)-30 4310 y Fp(cl_R)e(atan)g(\(const)g(cl_R&)g(x\))450
-4419 y Fr(Returns)40 b Fp(arctan\(x\))p Fr(.)68 b(This)40
-b(is)h(the)g(same)f(as)g Fp(atan\(1,x\))p Fr(.)69 b(The)40
-b(range)h(of)g(the)g(result)f(is)h(the)450 4529 y(in)m(terv)-5
-b(al)38 b Fp(-pi/2)29 b(<)h(atan\(x\))e(<)i(pi/2)p Fr(.)59
-b(The)36 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 Fp(x)f Fr(is)h(the)450 4639 y(exact)32 b Fp(0)p
-Fr(.)-30 4792 y Fp(cl_N)d(atan)g(\(const)g(cl_N&)g(z\))450
-4902 y Fr(Returns)51 b Fp(arctan\(z\))p Fr(.)102 b(This)52
-b(is)f(de\014ned)g(as)h Fp(arctan\(z\))28 b(=)i
-(\(log\(1+iz\)-log\(1-iz\)\))25 b(/)30 b(2i)450 5011
-y Fr(and)44 b(satis\014es)h Fp(arctan\(-z\))28 b(=)i(-arctan\(z\))p
-Fr(.)80 b(The)44 b(range)h(of)g(the)g(result)f(is)h(the)f(strip)g(in)h
-(the)450 5121 y(complex)28 b(domain)g Fp(-pi/2)h(<=)g
-(realpart\(arctan\(z\)\))d(<=)j(pi/2)p Fr(,)f(excluding)h(the)g(n)m(um)
-m(b)s(ers)d(with)450 5230 y Fp(realpart)i(=)i(-pi/2)49
-b Fr(and)i Fp(imagpart)28 b(>=)i(0)50 b Fr(and)g(the)h(n)m(um)m(b)s
-(ers)d(with)j Fp(realpart)28 b(=)i(pi/2)50 b Fr(and)450
-5340 y Fp(imagpart)28 b(<=)i(0)p Fr(.)p eop
-%%Page: 19 21
-19 20 bop -30 -116 a Fr(Chapter)30 b(4:)41 b(F)-8 b(unctions)31
-b(on)f(n)m(um)m(b)s(ers)2523 b(19)-30 299 y(Arc)m(himedes')30
-b(constan)m(t)i(pi)e(=)g(3.14)6 b(.)23 b(.)f(.)42 b(is)30
-b(returned)g(b)m(y)g(the)g(follo)m(wing)i(functions:)-30
-469 y Fp(cl_F)d(pi)h(\(cl_float_format_t)25 b(f\))450
-578 y Fr(Returns)k(pi)i(as)f(a)h(\015oat)g(of)f(format)g
-Fp(f)p Fr(.)-30 745 y Fp(cl_F)f(pi)h(\(const)f(cl_F&)g(y\))450
-855 y Fr(Returns)g(pi)i(in)f(the)g(\015oat)h(format)f(of)g
-Fp(y)p Fr(.)-30 1021 y Fp(cl_F)f(pi)h(\(void\))450 1131
-y Fr(Returns)f(pi)i(as)f(a)h(\015oat)g(of)f(format)g
-Fp(default_float_format)p Fr(.)-30 1369 y Fn(4.8.3)63
-b(Hyp)s(erb)s(olic)42 b(functions)-30 1597 y Fp(cl_R)29
-b(sinh)g(\(const)g(cl_R&)g(x\))450 1707 y Fr(Returns)g
-Fp(sinh\(x\))p Fr(.)-30 1873 y Fp(cl_N)g(sinh)g(\(const)g(cl_N&)g(z\))
-450 1983 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.)
--30 2149 y Fp(cl_R)e(cosh)g(\(const)g(cl_R&)g(x\))450
-2259 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(.)-30 2425 y Fp(cl_N)f(cosh)g(\(const)g(cl_N&)g(z\))450
-2535 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.)-30
-2701 y Fp(struct)e(cosh_sinh_t)e({)j(cl_R)f(cosh;)g(cl_R)g(sinh;)g(};)
--30 2811 y(cosh_sinh_t)e(cosh_sinh)h(\(const)h(cl_R&)g(x\))450
-2921 y Fr(Returns)i(b)s(oth)g Fp(sinh\(x\))f Fr(and)h
-Fp(cosh\(x\))p Fr(.)43 b(This)31 b(is)h(more)f(e\016cien)m(t)i(than)f
-(computing)f(them)f(sepa-)450 3030 y(rately)-8 b(.)42
-b(The)30 b(relation)i Fp(cosh^2)c(-)i(sinh^2)f(=)h(1)g
-Fr(will)h(hold)f(only)g(appro)m(ximately)-8 b(.)-30 3197
-y Fp(cl_R)29 b(tanh)g(\(const)g(cl_R&)g(x\))-30 3306
-y(cl_N)g(tanh)g(\(const)g(cl_N&)g(x\))450 3416 y Fr(Returns)g
-Fp(tanh\(x\))g(=)h(sinh\(x\)/cosh\(x\))p Fr(.)-30 3582
-y Fp(cl_N)f(asinh)g(\(const)g(cl_N&)g(z\))450 3692 y
-Fr(Returns)h Fp(arsinh\(z\))p Fr(.)40 b(This)31 b(is)g(de\014ned)f(as)h
-Fp(arsinh\(z\))d(=)i(log\(z+sqrt\(1+z^2\)\))c Fr(and)k(satis\014es)450
-3802 y Fp(arsinh\(-z\))e(=)i(-arsinh\(z\))p Fr(.)36 b(The)26
-b(range)h(of)g(the)g(result)f(is)h(the)g(strip)f(in)g(the)h(complex)f
-(domain)f Fp(-)450 3911 y(pi/2)k(<=)h(imagpart\(arsinh\(z\)\))25
-b(<=)30 b(pi/2)p Fr(,)22 b(excluding)g(the)g(n)m(um)m(b)s(ers)d(with)i
-Fp(imagpart)28 b(=)i(-pi/2)450 4021 y Fr(and)g Fp(realpart)e(>)i(0)g
-Fr(and)g(the)g(n)m(um)m(b)s(ers)e(with)i Fp(imagpart)e(=)i(pi/2)g
-Fr(and)f Fp(realpart)g(<)h(0)p Fr(.)-30 4187 y Fp(cl_N)f(acosh)g
-(\(const)g(cl_N&)g(z\))450 4297 y Fr(Returns)35 b Fp(arcosh\(z\))p
-Fr(.)53 b(This)35 b(is)h(de\014ned)e(as)i Fp(arcosh\(z\))28
-b(=)i(2*log\(sqrt\(\(z+1\)/2\)+sqr)o(t\(\(z)o(-)450 4406
-y(1\)/2\)\))p Fr(.)114 b(The)55 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(<)450 4516 y(imagpart\(arcosh\(z\)\))c(<=)30 b(pi,)f
-(realpart\(arcosh\(z\)\))c(>=)30 b(0)p Fr(,)99 b(excluding)85
-b(the)g(n)m(um)m(b)s(ers)450 4626 y(with)30 b Fp(realpart)e(=)i(0)g
-Fr(and)g Fp(-pi)f(<)i(imagpart)d(<)i(0)p Fr(.)-30 4792
-y Fp(cl_N)f(atanh)g(\(const)g(cl_N&)g(z\))450 4902 y
-Fr(Returns)24 b Fp(artanh\(z\))p Fr(.)37 b(This)24 b(is)h(de\014ned)f
-(as)h Fp(artanh\(z\))j(=)i(\(log\(1+z\)-log\(1-z\)\))25
-b(/)30 b(2)25 b Fr(and)f(sat-)450 5011 y(is\014es)29
-b Fp(artanh\(-z\))e(=)j(-artanh\(z\))p Fr(.)37 b(The)29
-b(range)g(of)g(the)g(result)f(is)h(the)g(strip)f(in)g(the)h(complex)g
-(do-)450 5121 y(main)34 b Fp(-pi/2)29 b(<=)h(imagpart\(artanh\(z\)\))25
-b(<=)30 b(pi/2)p Fr(,)35 b(excluding)g(the)h(n)m(um)m(b)s(ers)c(with)j
-Fp(imagpart)450 5230 y(=)30 b(-pi/2)j Fr(and)h Fp(realpart)28
-b(<=)i(0)k Fr(and)g(the)h(n)m(um)m(b)s(ers)d(with)i Fp(imagpart)28
-b(=)i(pi/2)k Fr(and)f Fp(realpart)c(>=)450 5340 y(0)p
-Fr(.)p eop
-%%Page: 20 22
-20 21 bop -30 -116 a Fr(Chapter)30 b(4:)41 b(F)-8 b(unctions)31
-b(on)f(n)m(um)m(b)s(ers)2523 b(20)-30 299 y Fn(4.8.4)63
-b(Euler)40 b(gamma)-30 498 y Fr(Euler's)30 b(constan)m(t)i(C)e(=)g
-(0.577)6 b(.)24 b(.)e(.)41 b(is)31 b(returned)e(b)m(y)h(the)h(follo)m
-(wing)h(functions:)-30 666 y Fp(cl_F)d(eulerconst)f
-(\(cl_float_format_t)d(f\))450 776 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(.)-30
-942 y Fp(cl_F)f(eulerconst)f(\(const)g(cl_F&)h(y\))450
-1051 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(.)-30 1217 y Fp(cl_F)f(eulerconst)f(\(void\))
-450 1326 y Fr(Returns)h(Euler's)i(constan)m(t)g(as)g(a)g(\015oat)g(of)f
-(format)g Fp(default_float_format)p Fr(.)-30 1495 y(Catalan's)i
-(constan)m(t)f(G)g(=)f(0.915)6 b(.)24 b(.)e(.)42 b(is)30
-b(returned)f(b)m(y)h(the)h(follo)m(wing)h(functions:)-30
-1664 y Fp(cl_F)d(catalanconst)e(\(cl_float_format_t)f(f\))450
-1773 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(.)-30 1939 y Fp(cl_F)g(catalanconst)e(\(const)i
-(cl_F&)g(y\))450 2048 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(.)-30 2214 y
-Fp(cl_F)e(catalanconst)e(\(void\))450 2324 y Fr(Returns)i(Catalan's)j
-(constan)m(t)g(as)e(a)h(\015oat)g(of)g(format)e Fp
-(default_float_format)p Fr(.)-30 2560 y Fn(4.8.5)63 b(Riemann)39
-b(zeta)-30 2759 y Fr(Riemann's)29 b(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:)-30 2927 y Fp(cl_F)d(zeta)g(\(int)h(s,)f
-(cl_float_format_t)d(f\))450 3037 y Fr(Returns)j(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(.)-30 3203 y Fp(cl_F)g(zeta)g(\(int)h(s,)f(const)g(cl_F&)g
-(y\))450 3312 y Fr(Returns)g(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(.)-30
-3478 y Fp(cl_F)e(zeta)g(\(int)h(s\))450 3587 y Fr(Returns)f(Riemann's)h
-(zeta)i(function)e(at)h Fp(s)f Fr(as)g(a)h(\015oat)g(of)g(format)e
-Fp(default_float_format)p Fr(.)-30 3860 y Fs(4.9)68 b(F)-11
-b(unctions)44 b(on)h(in)l(tegers)-30 4155 y Fn(4.9.1)63
-b(Logical)40 b(functions)-30 4354 y Fr(In)m(tegers,)31
-b(when)d(view)m(ed)j(as)f(in)f(t)m(w)m(o's)i(complemen)m(t)e(notation,)
-i(can)f(b)s(e)f(though)m(t)h(as)g(in\014nite)f(bit)h(strings)f(where)
--30 4463 y(the)i(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,)401 4598 y
-Fp(17)47 b(=)h(......00010001)401 4702 y(-6)f(=)h(......11111010)-30
-4843 y Fr(The)33 b(logical)j(op)s(erations)e(view)g(in)m(tegers)h(as)f
-(suc)m(h)f(bit)h(strings)f(and)h(op)s(erate)g(on)f(eac)m(h)i(of)f(the)g
-(bit)g(p)s(ositions)f(in)-30 4952 y(parallel.)-30 5121
-y Fp(cl_I)c(lognot)g(\(const)g(cl_I&)f(x\))-30 5230 y(cl_I)h(operator)f
-(~)i(\(const)f(cl_I&)g(x\))450 5340 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(.)p eop
-%%Page: 21 23
-21 22 bop -30 -116 a Fr(Chapter)30 b(4:)41 b(F)-8 b(unctions)31
-b(on)f(n)m(um)m(b)s(ers)2523 b(21)-30 299 y Fp(cl_I)29
-b(logand)g(\(const)g(cl_I&)f(x,)i(const)f(cl_I&)g(y\))-30
-408 y(cl_I)g(operator)f(&)i(\(const)f(cl_I&)g(x,)h(const)f(cl_I&)g(y\))
-450 518 y Fr(Logical)j(and,)e(lik)m(e)i Fp(x)e(&)g(y)g
-Fr(in)g(C.)-30 673 y Fp(cl_I)f(logior)g(\(const)g(cl_I&)f(x,)i(const)f
-(cl_I&)g(y\))-30 783 y(cl_I)g(operator)f(|)i(\(const)f(cl_I&)g(x,)h
-(const)f(cl_I&)g(y\))450 892 y Fr(Logical)j(\(inclusiv)m(e\))g(or,)f
-(lik)m(e)h Fp(x)e(|)g(y)g Fr(in)g(C.)-30 1047 y Fp(cl_I)f(logxor)g
-(\(const)g(cl_I&)f(x,)i(const)f(cl_I&)g(y\))-30 1157
-y(cl_I)g(operator)f(^)i(\(const)f(cl_I&)g(x,)h(const)f(cl_I&)g(y\))450
-1267 y Fr(Exclusiv)m(e)i(or,)g(lik)m(e)h Fp(x)e(^)g(y)g
-Fr(in)g(C.)-30 1422 y Fp(cl_I)f(logeqv)g(\(const)g(cl_I&)f(x,)i(const)f
-(cl_I&)g(y\))450 1531 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.)-30 1686 y
-Fp(cl_I)f(lognand)g(\(const)f(cl_I&)h(x,)h(const)f(cl_I&)g(y\))450
-1796 y Fr(Bit)m(wise)j(not)f(and,)f(lik)m(e)h Fp(~\(x)f(&)g(y\))g
-Fr(in)g(C.)-30 1951 y Fp(cl_I)f(lognor)g(\(const)g(cl_I&)f(x,)i(const)f
-(cl_I&)g(y\))450 2060 y Fr(Bit)m(wise)j(not)f(or,)f(lik)m(e)i
-Fp(~\(x)d(|)h(y\))g Fr(in)g(C.)-30 2216 y Fp(cl_I)f(logandc1)f(\(const)
-h(cl_I&)g(x,)h(const)f(cl_I&)g(y\))450 2325 y Fr(Logical)j(and,)e
-(complemen)m(ting)g(the)h(\014rst)e(argumen)m(t,)h(lik)m(e)i
-Fp(~x)e(&)g(y)g Fr(in)g(C.)-30 2480 y Fp(cl_I)f(logandc2)f(\(const)h
-(cl_I&)g(x,)h(const)f(cl_I&)g(y\))450 2590 y Fr(Logical)j(and,)e
-(complemen)m(ting)g(the)h(second)f(argumen)m(t,)g(lik)m(e)i
-Fp(x)e(&)g(~y)g Fr(in)g(C.)-30 2745 y Fp(cl_I)f(logorc1)g(\(const)f
-(cl_I&)h(x,)h(const)f(cl_I&)g(y\))450 2854 y Fr(Logical)j(or,)f
-(complemen)m(ting)f(the)g(\014rst)g(argumen)m(t,)g(lik)m(e)i
-Fp(~x)d(|)i(y)f Fr(in)g(C.)-30 3009 y Fp(cl_I)f(logorc2)g(\(const)f
-(cl_I&)h(x,)h(const)f(cl_I&)g(y\))450 3119 y Fr(Logical)j(or,)f
-(complemen)m(ting)f(the)g(second)h(argumen)m(t,)f(lik)m(e)i
-Fp(x)e(|)g(~y)f Fr(in)h(C.)-30 3274 y(These)g(op)s(erations)h(are)g
-(all)g(a)m(v)-5 b(ailable)33 b(though)d(the)g(function)-30
-3429 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\))-30 3561 y Fr(where)35 b Fp(op)f Fr(m)m(ust)g(ha)m(v)m(e)
-j(one)e(of)g(the)h(16)g(v)-5 b(alues)35 b(\(eac)m(h)i(one)e(stands)g
-(for)g(a)g(function)g(whic)m(h)g(com)m(bines)g(t)m(w)m(o)h(bits)-30
-3671 y(in)m(to)31 b(one)g(bit\):)42 b Fp(boole_clr)p
-Fr(,)28 b Fp(boole_set)p Fr(,)g Fp(boole_1)p Fr(,)h Fp(boole_2)p
-Fr(,)f Fp(boole_c1)p Fr(,)h Fp(boole_c2)p Fr(,)f Fp(boole_and)p
-Fr(,)h Fp(boole_)-30 3781 y(ior)p Fr(,)45 b Fp(boole_xor)p
-Fr(,)f Fp(boole_eqv)p Fr(,)g Fp(boole_nand)p Fr(,)f Fp(boole_nor)p
-Fr(,)h Fp(boole_andc1)p Fr(,)f Fp(boole_andc2)p Fr(,)g
-Fp(boole_orc1)p Fr(,)-30 3890 y Fp(boole_orc2)p Fr(.)-30
-4023 y(Other)30 b(functions)g(that)h(view)f(in)m(tegers)i(as)f(bit)f
-(strings:)-30 4178 y Fp(cl_boolean)e(logtest)g(\(const)h(cl_I&)g(x,)g
-(const)g(cl_I&)g(y\))450 4287 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(.)-30 4442 y
-Fp(cl_boolean)e(logbitp)g(\(const)h(cl_I&)g(n,)g(const)g(cl_I&)g(x\))
-450 4552 y Fr(Returns)g(true)i(if)f(the)h Fp(n)p Fr(th)e(bit)i(\(from)e
-(the)i(righ)m(t\))g(of)f Fp(x)h Fr(is)f(set.)41 b(Bit)32
-b(0)e(is)h(the)f(least)i(signi\014can)m(t)f(bit.)-30
-4707 y Fp(uintL)e(logcount)f(\(const)h(cl_I&)g(x\))450
-4816 y Fr(Returns)g(the)h(n)m(um)m(b)s(er)d(of)j(one)h(bits)e(in)h
-Fp(x)p Fr(,)g(if)f Fp(x)h(>)p Fr(=)f(0,)i(or)e(the)h(n)m(um)m(b)s(er)e
-(of)i(zero)h(bits)e(in)h Fp(x)p Fr(,)g(if)f Fp(x)h(<)f
-Fr(0.)-30 4972 y(The)h(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)210 5098 y Fp(struct)46 b(cl_byte)g({)h(uintL)g
-(size;)f(uintL)g(position;)g(};)-30 5230 y Fr(represen)m(ts)41
-b(the)h(bit)f(in)m(terv)-5 b(al)43 b(con)m(taining)g(the)e(bits)g
-Fp(position)6 b Fr(.)20 b(.)i(.)12 b Fp(position+size-1)37
-b Fr(of)k(an)g(in)m(teger.)75 b(The)-30 5340 y(constructor)31
-b Fp(cl_byte\(size,position\))24 b Fr(constructs)31 b(a)f
-Fp(cl_byte)p Fr(.)p eop
-%%Page: 22 24
-22 23 bop -30 -116 a Fr(Chapter)30 b(4:)41 b(F)-8 b(unctions)31
-b(on)f(n)m(um)m(b)s(ers)2523 b(22)-30 299 y Fp(cl_I)29
-b(ldb)h(\(const)e(cl_I&)h(n,)h(const)f(cl_byte&)f(b\))450
-408 y Fr(extracts)k(the)e(bits)g(of)h Fp(n)f Fr(describ)s(ed)f(b)m(y)h
-(the)h(bit)f(in)m(terv)-5 b(al)32 b Fp(b)e Fr(and)g(returns)f(them)g
-(as)i(a)f(nonnegativ)m(e)450 518 y(in)m(teger)i(with)e
-Fp(b.size)e Fr(bits.)-30 670 y Fp(cl_boolean)g(ldb_test)g(\(const)g
-(cl_I&)h(n,)h(const)f(cl_byte&)f(b\))450 780 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 Fp(b)f Fr(is)h(set)g(in)f Fp(n)p Fr(.)-30 932
-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\))450 1041 y Fr(Returns)j Fp(n)p
-Fr(,)h(with)f(the)h(bits)f(describ)s(ed)g(b)m(y)g(the)h(bit)g(in)m
-(terv)-5 b(al)32 b Fp(b)g Fr(replaced)g(b)m(y)f Fp(newbyte)p
-Fr(.)43 b(Only)31 b(the)450 1151 y(lo)m(w)m(est)h Fp(b.size)d
-Fr(bits)h(of)h Fp(newbyte)d Fr(are)j(relev)-5 b(an)m(t.)-30
-1303 y(The)33 b(functions)f Fp(ldb)h Fr(and)f Fp(dpb)g
-Fr(implicitly)i(shift.)49 b(The)32 b(follo)m(wing)j(functions)e(are)g
-(their)g(coun)m(terparts)h(without)-30 1412 y(shifting:)-30
-1564 y Fp(cl_I)29 b(mask_field)f(\(const)g(cl_I&)h(n,)h(const)f
-(cl_byte&)f(b\))450 1674 y Fr(returns)35 b(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)37 b Fp(b)e Fr(copied)i(from)d(the)i(corre-)450
-1784 y(sp)s(onding)29 b(bits)h(in)g Fp(n)p Fr(,)g(the)h(other)g(bits)f
-(zero.)-30 1936 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\))450 2045
-y Fr(returns)e(an)h(in)m(teger)h(where)f(the)g(bits)g(describ)s(ed)f(b)
-m(y)h(the)h(bit)f(in)m(terv)-5 b(al)28 b Fp(b)f Fr(come)g(from)e
-Fp(newbyte)h Fr(and)450 2155 y(the)31 b(other)f(bits)g(come)h(from)e
-Fp(n)p Fr(.)-30 2307 y(The)h(follo)m(wing)i(relations)f(hold:)150
-2438 y Fp(ldb)e(\(n,)h(b\))g(=)g(mask_field\(n,)d(b\))i(>>)h
-(b.position)p Fr(,)150 2568 y Fp(dpb)f(\(newbyte,)f(n,)i(b\))g(=)g
-(deposit_field)d(\(newbyte)h(<<)h(b.position,)f(n,)i(b\))p
-Fr(,)150 2699 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
-Fr(.)-30 2851 y(The)41 b(follo)m(wing)h(op)s(erations)g(on)f(in)m
-(tegers)i(as)e(bit)h(strings)f(are)g(e\016cien)m(t)i(shortcuts)e(for)g
-(common)f(arithmetic)-30 2961 y(op)s(erations:)-30 3113
-y Fp(cl_boolean)28 b(oddp)h(\(const)f(cl_I&)h(x\))450
-3222 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(.)-30 3374 y Fp(cl_boolean)e(evenp)h
-(\(const)f(cl_I&)h(x\))450 3484 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(.)-30 3636 y Fp(cl_I)f(operator)f(<<)i(\(const)f(cl_I&)g(x,)g(const)
-g(cl_I&)g(n\))450 3746 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(.)-30 3898 y Fp(cl_I)f(operator)f(>>)i(\(const)f
-(cl_I&)g(x,)g(const)g(cl_I&)g(n\))450 4007 y Fr(Shifts)e
-Fp(x)g Fr(b)m(y)h Fp(n)f Fr(bits)h(to)g(the)g(righ)m(t.)41
-b Fp(n)27 b Fr(should)g(b)s(e)g Fp(>)p Fr(=0.)40 b(Bits)28
-b(shifted)g(out)g(to)g(the)g(righ)m(t)g(are)g(thro)m(wn)450
-4117 y(a)m(w)m(a)m(y)-8 b(.)43 b(Equiv)-5 b(alen)m(t)31
-b(to)g Fp(floor\(x)e(/)h(expt\(2,n\)\))p Fr(.)-30 4269
-y Fp(cl_I)f(ash)h(\(const)e(cl_I&)h(x,)h(const)f(cl_I&)g(y\))450
-4378 y Fr(Shifts)37 b Fp(x)g Fr(b)m(y)h Fp(y)f Fr(bits)h(to)g(the)g
-(left)h(\(if)f Fp(y>)p Fr(=0\))f(or)h(b)m(y)g Fp(-y)f
-Fr(bits)g(to)i(the)f(righ)m(t)g(\(if)g Fp(y<)p Fr(=0\).)63
-b(In)37 b(other)450 4488 y(w)m(ords,)30 b(this)g(returns)g
-Fp(floor\(x)e(*)i(expt\(2,y\)\))p Fr(.)-30 4640 y Fp(uintL)f
-(integer_length)d(\(const)j(cl_I&)g(x\))450 4750 y Fr(Returns)44
-b(the)i(n)m(um)m(b)s(er)d(of)j(bits)f(\(excluding)h(the)g(sign)f(bit\))
-h(needed)f(to)h(represen)m(t)f Fp(x)g Fr(in)g(t)m(w)m(o's)450
-4859 y(complemen)m(t)31 b(notation.)45 b(This)30 b(is)i(the)g(smallest)
-f(n)g Fp(>)p Fr(=)g(0)h(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.)44
-b(If)31 b(x)g Fp(>)g Fr(0,)450 4969 y(this)f(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.)-30 5121
-y Fp(uintL)f(ord2)g(\(const)g(cl_I&)g(x\))450 5230 y(x)e
-Fr(m)m(ust)f(b)s(e)h(non-zero.)40 b(This)27 b(function)g(returns)f(the)
-i(n)m(um)m(b)s(er)d(of)j(0)g(bits)f(at)h(the)g(righ)m(t)g(of)f
-Fp(x)g Fr(in)g(t)m(w)m(o's)450 5340 y(complemen)m(t)j(notation.)42
-b(This)29 b(is)i(the)f(largest)i(n)e Fp(>)p Fr(=)f(0)i(suc)m(h)f(that)h
-(2)p Fp(^)p Fr(n)f(divides)g Fp(x)p Fr(.)p eop
-%%Page: 23 25
-23 24 bop -30 -116 a Fr(Chapter)30 b(4:)41 b(F)-8 b(unctions)31
-b(on)f(n)m(um)m(b)s(ers)2523 b(23)-30 299 y Fp(uintL)29
-b(power2p)f(\(const)h(cl_I&)g(x\))450 408 y(x)f Fr(m)m(ust)e(b)s(e)i
-Fp(>)f Fr(0.)41 b(This)27 b(function)g(c)m(hec)m(ks)j(whether)d
-Fp(x)h Fr(is)g(a)g(p)s(o)m(w)m(er)g(of)g(2.)40 b(If)28
-b Fp(x)f Fr(=)h(2)p Fp(^)p Fr(\(n-1\),)i(it)e(returns)450
-518 y(n.)40 b(Else)31 b(it)g(returns)e(0.)41 b(\(See)31
-b(also)g(the)g(function)f Fp(logp)p Fr(.\))-30 736 y
-Fn(4.9.2)63 b(Num)m(b)s(er)40 b(theoretic)h(functions)-30
-949 y Fp(uint32)29 b(gcd)g(\(uint32)g(a,)g(uint32)g(b\))-30
-1058 y(cl_I)g(gcd)h(\(const)e(cl_I&)h(a,)h(const)f(cl_I&)g(b\))450
-1168 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.)-30 1323 y Fp(cl_I)g(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\))450 1433
-y Fr(This)34 b(function)h(\(\\extended)h(gcd"\))g(returns)e(the)h
-(greatest)i(common)d(divisor)h Fp(g)f Fr(of)i Fp(a)e
-Fr(and)h Fp(b)g Fr(and)450 1542 y(at)30 b(the)g(same)f(time)g(the)h
-(represen)m(tation)g(of)g Fp(g)f Fr(as)h(an)g(in)m(tegral)h(linear)f
-(com)m(bination)g(of)f Fp(a)g Fr(and)g Fp(b)p Fr(:)40
-b Fp(u)450 1652 y Fr(and)32 b Fp(v)g Fr(with)g Fp(u*a+v*b)d(=)h(g)p
-Fr(,)j Fp(g)f(>)p Fr(=)g(0.)48 b Fp(u)32 b Fr(and)g Fp(v)g
-Fr(will)h(b)s(e)f(normalized)g(to)h(b)s(e)f(of)h(smallest)f(p)s
-(ossible)450 1761 y(absolute)d(v)-5 b(alue,)29 b(in)e(the)h(follo)m
-(wing)h(sense:)40 b(If)27 b Fp(a)h Fr(and)f Fp(b)g Fr(are)i(non-zero,)g
-(and)e Fp(abs\(a\))i(!=)g(abs\(b\))p Fr(,)e Fp(u)450
-1871 y Fr(and)j Fp(v)g Fr(will)h(satisfy)f(the)h(inequalities)h
-Fp(abs\(u\))c(<=)i(abs\(b\)/\(2*g\))p Fr(,)d Fp(abs\(v\))i(<=)h
-(abs\(a\)/\(2*g\))p Fr(.)-30 2026 y Fp(cl_I)f(lcm)h(\(const)e(cl_I&)h
-(a,)h(const)f(cl_I&)g(b\))450 2136 y Fr(This)h(function)g(returns)f
-(the)h(least)i(common)d(m)m(ultiple)h(of)g Fp(a)g Fr(and)g
-Fp(b)p Fr(,)g(normalized)g(to)h(b)s(e)f Fp(>)p Fr(=)g(0.)-30
-2291 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\))-30 2400 y(cl_boolean)g(logp)h(\(const)f(cl_RA&)h
-(a,)h(const)f(cl_RA&)f(b,)i(cl_RA*)f(l\))450 2510 y(a)38
-b Fr(m)m(ust)g(b)s(e)f Fp(>)i Fr(0.)65 b Fp(b)38 b Fr(m)m(ust)f(b)s(e)h
-Fp(>)p Fr(0)h(and)f(!=)g(1.)66 b(If)38 b(log\(a,b\))i(is)f(rational)g
-(n)m(um)m(b)s(er,)g(this)f(function)450 2619 y(returns)29
-b(true)h(and)g(sets)h(*l)g(=)f(log\(a,b\),)j(else)e(it)g(returns)e
-(false.)-30 2837 y Fn(4.9.3)63 b(Com)m(binatorial)40
-b(functions)-30 3050 y Fp(cl_I)29 b(factorial)f(\(uintL)h(n\))450
-3160 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*...)n(*n)p Fr(.)-30 3315
-y Fp(cl_I)f(doublefactorial)d(\(uintL)j(n\))450 3425
-y(n)48 b Fr(m)m(ust)e(b)s(e)i(a)g(small)f(in)m(teger)j
-Fp(>)p Fr(=)d(0.)94 b(This)47 b(function)h(returns)e(the)i
-(doublefactorial)i Fp(n)p Fr(!!)93 b(=)450 3534 y Fp(1*3*...)n(*n)30
-b Fr(or)g Fp(n)p Fr(!!)41 b(=)30 b Fp(2*4*...)n(*n)p
-Fr(,)g(resp)s(ectiv)m(ely)-8 b(.)-30 3689 y Fp(cl_I)29
-b(binomial)f(\(uintL)h(n,)h(uintL)f(k\))450 3799 y(n)40
-b Fr(and)g Fp(k)g Fr(m)m(ust)g(b)s(e)f(small)h(in)m(tegers)i
-Fp(>)p Fr(=)e(0.)71 b(This)40 b(function)g(returns)g(the)g(binomial)g
-(co)s(e\016cien)m(t)450 3839 y Fk(\000)488 3868 y Fj(n)490
-3940 y(k)529 3839 y Fk(\001)592 3908 y Fr(=)798 3873
-y Fj(n)p Fi(!)p 698 3888 261 4 v 698 3940 a Fj(n)p Fi(!\()p
-Fj(n)p Fh(\000)p Fj(k)q Fi(\)!)999 3908 y Fr(for)30 b(0)h
-Fp(<)p Fr(=)e(k)i Fp(<)p Fr(=)e(n,)h(0)h(else.)-30 4159
-y Fs(4.10)68 b(F)-11 b(unctions)44 b(on)h(\015oating-p)t(oin)l(t)h(n)l
-(um)l(b)t(ers)-30 4350 y Fr(Recall)31 b(that)f(a)f(\015oating-p)s(oin)m
-(t)i(n)m(um)m(b)s(er)c(consists)j(of)f(a)h(sign)f Fp(s)p
-Fr(,)h(an)f(exp)s(onen)m(t)g Fp(e)g Fr(and)g(a)g(man)m(tissa)h
-Fp(m)p Fr(.)40 b(The)28 b(v)-5 b(alue)-30 4459 y(of)31
-b(the)f(n)m(um)m(b)s(er)e(is)j Fp(\(-1\)^s)d(*)i(2^e)g(*)g(m)p
-Fr(.)-30 4592 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.)
--30 4747 y Fl(t)m(yp)s(e)36 b Fp(scale_float)27 b(\(const)i
-Fl(t)m(yp)s(e)5 b Fp(&)30 b(x,)g(sintL)f(delta\))-30
-4856 y Fl(t)m(yp)s(e)36 b Fp(scale_float)27 b(\(const)i
-Fl(t)m(yp)s(e)5 b Fp(&)30 b(x,)g(const)f(cl_I&)g(delta\))450
-4966 y Fr(Returns)40 b Fp(x*2^delta)p Fr(.)70 b(This)40
-b(is)h(more)f(e\016cien)m(t)j(than)d(an)h(explicit)i(m)m(ultiplication)
-e(b)s(ecause)g(it)450 5075 y(copies)31 b Fp(x)f Fr(and)g(mo)s(di\014es)
-f(the)h(exp)s(onen)m(t.)-30 5230 y(The)36 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-)-30 5340 y(p)s(oin)m(t)30
-b(n)m(um)m(b)s(ers.)p eop
-%%Page: 24 26
-24 25 bop -30 -116 a Fr(Chapter)30 b(4:)41 b(F)-8 b(unctions)31
-b(on)f(n)m(um)m(b)s(ers)2523 b(24)-30 299 y Fp(sintL)29
-b(float_exponent)d(\(const)j Fl(t)m(yp)s(e)5 b Fp(&)30
-b(x\))450 408 y Fr(Returns)j(the)g(exp)s(onen)m(t)h Fp(e)f
-Fr(of)h Fp(x)p Fr(.)50 b(F)-8 b(or)34 b Fp(x)c(=)g(0.0)p
-Fr(,)k(this)f(is)h(0.)50 b(F)-8 b(or)35 b Fp(x)e Fr(non-zero,)i(this)f
-(is)f(the)h(unique)450 518 y(in)m(teger)e(with)e Fp(2^\(e-1\))e(<=)i
-(abs\(x\))f(<)h(2^e)p Fr(.)-30 701 y Fp(sintL)f(float_radix)e(\(const)i
-Fl(t)m(yp)s(e)5 b Fp(&)30 b(x\))450 811 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 Fp(2)p Fr(.)-30 994 y
-Fl(t)m(yp)s(e)k Fp(float_sign)27 b(\(const)i Fl(t)m(yp)s(e)5
-b Fp(&)30 b(x\))450 1103 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.)-30 1287 y Fp(uintL)f(float_digits)e(\(const)i
-Fl(t)m(yp)s(e)5 b Fp(&)30 b(x\))450 1396 y Fr(Returns)f(the)h(n)m(um)m
-(b)s(er)e(of)i(man)m(tissa)g(bits)g(in)g(the)g(\015oating-p)s(oin)m(t)h
-(represen)m(tation)g(of)f Fp(x)p Fr(,)g(including)450
-1506 y(the)h(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 Fp(x)p
-Fr(,)f(not)h(on)f(its)h(v)-5 b(alue.)-30 1689 y Fp(uintL)29
-b(float_precision)d(\(const)j Fl(t)m(yp)s(e)5 b Fp(&)30
-b(x\))450 1798 y Fr(Returns)c(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 Fp(x)p Fr(.)450 1908 y(Since)j
-(denormalized)e(n)m(um)m(b)s(ers)g(are)h(not)h(supp)s(orted,)e(this)i
-(is)f(the)h(same)f(as)h Fp(float_digits\(x\))25 b Fr(if)450
-2018 y Fp(x)30 b Fr(is)g(non-zero,)i(and)d(0)i(if)f Fp(x)h
-Fr(=)f(0.)-30 2213 y(The)f(complete)g(in)m(ternal)h(represen)m(tation)h
-(of)e(a)g(\015oat)h(is)g(enco)s(ded)e(in)h(the)h(t)m(yp)s(e)f
-Fp(decoded_float)d Fr(\(or)j Fp(decoded_)-30 2322 y(sfloat)p
-Fr(,)g Fp(decoded_ffloat)p Fr(,)e Fp(decoded_dfloat)p
-Fr(,)f Fp(decoded_lfloat)p Fr(,)h(resp)s(ectiv)m(ely\),)32
-b(de\014ned)e(b)m(y)210 2475 y Fp(struct)46 b(decoded_)p
-Fl(t)m(yp)s(e)5 b Fp(float)45 b({)592 2578 y Fl(t)m(yp)s(e)53
-b Fp(mantissa;)45 b(cl_I)i(exponent;)e Fl(t)m(yp)s(e)53
-b Fp(sign;)210 2682 y(};)-30 2840 y Fr(and)30 b(returned)f(b)m(y)h(the)
-h(function)-30 3035 y Fp(decoded_)p Fl(t)m(yp)s(e)5 b
-Fp(float)27 b(decode_float)g(\(const)i Fl(t)m(yp)s(e)5
-b Fp(&)30 b(x\))450 3145 y Fr(F)-8 b(or)26 b Fp(x)e Fr(non-zero,)j
-(this)d(returns)g Fp(\(-1\)^s)p Fr(,)h Fp(e)p Fr(,)g
-Fp(m)g Fr(with)f Fp(x)30 b(=)g(\(-1\)^s)f(*)h(2^e)g(*)g(m)24
-b Fr(and)g Fp(0.5)30 b(<=)g(m)g(<)g(1.0)p Fr(.)450 3255
-y(F)-8 b(or)35 b Fp(x)f Fr(=)h(0,)h(it)f(returns)e Fp(\(-1\)^s)p
-Fr(=1,)h Fp(e)p Fr(=0,)i Fp(m)p Fr(=0.)53 b Fp(e)34 b
-Fr(is)g(the)h(same)f(as)h(returned)e(b)m(y)i(the)f(function)450
-3364 y Fp(float_exponent)p Fr(.)-30 3559 y(A)c(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)210
-3712 y Fp(struct)46 b(cl_idecoded_float)d({)592 3815
-y(cl_I)j(mantissa;)g(cl_I)g(exponent;)g(cl_I)g(sign;)210
-3919 y(};)-30 4077 y Fr(b)m(y)30 b(the)h(follo)m(wing)h(function:)-30
-4272 y Fp(cl_idecoded_float)26 b(integer_decode_float)e(\(const)29
-b Fl(t)m(yp)s(e)5 b Fp(&)31 b(x\))450 4382 y Fr(F)-8
-b(or)38 b Fp(x)e Fr(non-zero,)k(this)d(returns)f Fp(\(-1\)^s)p
-Fr(,)h Fp(e)p Fr(,)h Fp(m)f Fr(with)g Fp(x)30 b(=)g(\(-1\)^s)e(*)i(2^e)
-g(*)g(m)37 b Fr(and)f Fp(m)h Fr(an)g(in)m(teger)450 4491
-y(with)e Fp(float_digits\(x\))30 b Fr(bits.)54 b(F)-8
-b(or)36 b Fp(x)e Fr(=)h(0,)h(it)g(returns)d Fp(\(-1\)^s)p
-Fr(=1,)i Fp(e)p Fr(=0,)h Fp(m)p Fr(=0.)54 b(W)-10 b(ARNING:)450
-4601 y(The)27 b(exp)s(onen)m(t)h Fp(e)f Fr(is)h(not)f(the)h(same)f(as)h
-(the)g(one)g(returned)e(b)m(y)h(the)h(functions)f Fp(decode_float)e
-Fr(and)450 4711 y Fp(float_exponent)p Fr(.)-30 4906 y(Some)k(other)i
-(function,)f(implemen)m(ted)f(only)i(for)f(class)h Fp(cl_F)p
-Fr(:)-30 5101 y Fp(cl_F)e(float_sign)f(\(const)g(cl_F&)h(x,)h(const)f
-(cl_F&)g(y\))450 5210 y Fr(This)d(returns)g(a)i(\015oating)g(p)s(oin)m
-(t)f(n)m(um)m(b)s(er)e(whose)h(precision)i(and)e(absolute)i(v)-5
-b(alue)28 b(is)f(that)h(of)f Fp(y)g Fr(and)450 5320 y(whose)j(sign)h
-(is)f(that)h(of)f Fp(x)p Fr(.)41 b(If)30 b Fp(x)g Fr(is)g(zero,)i(it)f
-(is)f(treated)h(as)g(p)s(ositiv)m(e.)42 b(Same)29 b(for)h
-Fp(y)p Fr(.)p eop
-%%Page: 25 27
-25 26 bop -30 -116 a Fr(Chapter)30 b(4:)41 b(F)-8 b(unctions)31
-b(on)f(n)m(um)m(b)s(ers)2523 b(25)-30 299 y Fs(4.11)68
-b(Con)l(v)l(ersion)46 b(functions)-30 612 y Fn(4.11.1)63
-b(Con)m(v)m(ersion)41 b(to)g(\015oating-p)s(oin)m(t)h(n)m(um)m(b)s(ers)
--30 821 y Fr(The)30 b(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.)-30
-1003 y Fp(cl_float_format_t)26 b(cl_float_format)g(\(uintL)j(n\))450
-1113 y Fr(Returns)45 b(the)g(smallest)h(\015oat)g(format)f(whic)m(h)h
-(guaran)m(tees)g(at)h(least)g Fp(n)e Fr(decimal)g(digits)h(in)g(the)450
-1222 y(man)m(tissa)30 b(\(after)i(the)e(decimal)g(p)s(oin)m(t\).)-30
-1397 y Fp(cl_float_format_t)c(cl_float_format)g(\(const)j(cl_F&)f(x\))
-450 1507 y Fr(Returns)h(the)i(\015oating)g(p)s(oin)m(t)g(format)e(of)i
-Fp(x)p Fr(.)-30 1682 y Fp(cl_float_format_t)26 b(default_float_format)
-450 1792 y Fr(Global)d(v)-5 b(ariable:)37 b(the)23 b(default)f(\015oat)
-g(format)g(used)f(when)g(con)m(v)m(erting)j(rational)f(n)m(um)m(b)s
-(ers)c(to)k(\015oats.)-30 1974 y(T)-8 b(o)30 b(con)m(v)m(ert)h(a)f
-(real)g(n)m(um)m(b)s(er)d(to)j(a)g(\015oat,)g(eac)m(h)h(of)e(the)h(t)m
-(yp)s(es)f Fp(cl_R)p Fr(,)g Fp(cl_F)p Fr(,)f Fp(cl_I)p
-Fr(,)h Fp(cl_RA)p Fr(,)g Fp(int)p Fr(,)f Fp(unsigned)h(int)p
-Fr(,)-30 2084 y Fp(float)p Fr(,)g Fp(double)g Fr(de\014nes)g(the)i
-(follo)m(wing)h(op)s(erations:)-30 2267 y Fp(cl_F)d(cl_float)f(\(const)
-h Fl(t)m(yp)s(e)5 b Fp(&x,)30 b(cl_float_format_t)25
-b(f\))450 2376 y Fr(Returns)k Fp(x)h Fr(as)h(a)g(\015oat)g(of)f(format)
-g Fp(f)p Fr(.)-30 2551 y Fp(cl_F)f(cl_float)f(\(const)h
-Fl(t)m(yp)s(e)5 b Fp(&x,)30 b(const)f(cl_F&)g(y\))450
-2661 y Fr(Returns)g Fp(x)h Fr(in)h(the)f(\015oat)h(format)f(of)g
-Fp(y)p Fr(.)-30 2836 y Fp(cl_F)f(cl_float)f(\(const)h
-Fl(t)m(yp)s(e)5 b Fp(&x\))450 2945 y Fr(Returns)24 b
-Fp(x)g Fr(as)h(a)g(\015oat)h(of)f(format)f Fp(default_float_format)19
-b Fr(if)24 b(it)i(is)e(an)h(exact)h(n)m(um)m(b)s(er,)e(or)h
-Fp(x)f Fr(itself)450 3055 y(if)30 b(it)h(is)g(already)g(a)f(\015oat.)
--30 3238 y(Of)g(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.)-30 3388 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:)-30 3571 y Fp(cl_F)c(most_positive_float)c
-(\(cl_float_format_t)h(f\))450 3680 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 Fp(f)p Fr(.)-30 3855 y
-Fp(cl_F)f(most_negative_float)c(\(cl_float_format_t)h(f\))450
-3965 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
-Fp(f)p Fr(.)-30 4140 y Fp(cl_F)f(least_positive_float)c
-(\(cl_float_format_t)g(f\))450 4249 y Fr(Returns)g(the)h(least)h(p)s
-(ositiv)m(e)g(\015oating)g(p)s(oin)m(t)e(n)m(um)m(b)s(er)f(\(i.e.)40
-b Fp(>)26 b Fr(0)g(but)f(closest)i(to)g(0\))g(in)e(\015oat)i(format)450
-4359 y Fp(f)p Fr(.)-30 4534 y Fp(cl_F)i(least_negative_float)c
-(\(cl_float_format_t)g(f\))450 4644 y Fr(Returns)e(the)i(least)h
-(negativ)m(e)g(\015oating)g(p)s(oin)m(t)e(n)m(um)m(b)s(er)e(\(i.e.)40
-b Fp(<)24 b Fr(0)h(but)e(closest)j(to)f(0\))g(in)g(\015oat)g(format)450
-4753 y Fp(f)p Fr(.)-30 4928 y Fp(cl_F)k(float_epsilon)e
-(\(cl_float_format_t)e(f\))450 5038 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(.)-30 5213
-y Fp(cl_F)f(float_negative_epsilon)24 b(\(cl_float_format_t)i(f\))450
-5322 y Fr(Returns)j(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(.)p eop
-%%Page: 26 28
-26 27 bop -30 -116 a Fr(Chapter)30 b(4:)41 b(F)-8 b(unctions)31
-b(on)f(n)m(um)m(b)s(ers)2523 b(26)-30 299 y Fn(4.11.2)63
-b(Con)m(v)m(ersion)41 b(to)g(rational)g(n)m(um)m(b)s(ers)-30
-488 y Fr(Eac)m(h)31 b(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:)-30 639 y Fp(cl_RA)d(rational)f(\(const)h
-Fl(t)m(yp)s(e)5 b Fp(&)30 b(x\))450 749 y Fr(Returns)j(the)h(v)-5
-b(alue)35 b(of)f Fp(x)f Fr(as)h(an)g(exact)i(n)m(um)m(b)s(er.)49
-b(If)33 b Fp(x)h Fr(is)g(already)g(an)g(exact)h(n)m(um)m(b)s(er,)e
-(this)h(is)g Fp(x)p Fr(.)450 858 y(If)g Fp(x)g Fr(is)g(a)g
-(\015oating-p)s(oin)m(t)i(n)m(um)m(b)s(er,)d(the)h(v)-5
-b(alue)35 b(is)f(a)h(rational)g(n)m(um)m(b)s(er)d(whose)i(denominator)f
-(is)i(a)450 968 y(p)s(o)m(w)m(er)30 b(of)h(2.)-30 1119
-y(In)f(order)g(to)h(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)-30 1271 y Fp(cl_RA)e(rationalize)e
-(\(const)i(cl_R&)g(x\))450 1380 y Fr(If)36 b Fp(x)f Fr(is)h(a)h
-(\015oating-p)s(oin)m(t)g(n)m(um)m(b)s(er,)f(it)g(actually)i(represen)m
-(ts)e(an)g(in)m(terv)-5 b(al)37 b(of)f(real)h(n)m(um)m(b)s(ers,)f(and)
-450 1490 y(this)d(function)g(returns)e(the)i(rational)i(n)m(um)m(b)s
-(er)30 b(with)j(smallest)g(denominator)f(\(and)h(smallest)g(n)m(u-)450
-1600 y(merator,)e(in)f(magnitude\))g(whic)m(h)g(lies)i(in)e(this)h(in)m
-(terv)-5 b(al.)42 b(If)30 b Fp(x)h Fr(is)f(already)i(an)e(exact)i(n)m
-(um)m(b)s(er,)d(this)450 1709 y(function)h(returns)f
-Fp(x)p Fr(.)-30 1861 y(If)h Fp(x)g Fr(is)g(an)m(y)h(\015oat,)g(one)g
-(has)150 1991 y Fp(cl_float\(rational\(x\),x\))24 b(=)30
-b(x)150 2122 y(cl_float\(rationalize\(x\),)o(x\))24 b(=)30
-b(x)-30 2367 y Fs(4.12)68 b(Random)46 b(n)l(um)l(b)t(er)e(generators)
--30 2556 y Fr(A)j(random)e(generator)j(is)f(a)h(mac)m(hine)e(whic)m(h)h
-(pro)s(duces)e(\(pseudo-\)random)h(n)m(um)m(b)s(ers.)88
-b(The)46 b(include)h(\014le)-30 2666 y Fp(<cln/random.h>)40
-b Fr(de\014nes)j(a)h(class)h Fp(random_state)c Fr(whic)m(h)i(con)m
-(tains)j(the)e(state)h(of)f(a)g(random)f(generator.)-30
-2775 y(If)29 b(y)m(ou)g(mak)m(e)g(a)g(cop)m(y)h(of)f(the)h(random)d(n)m
-(um)m(b)s(er)g(generator,)j(the)g(original)g(one)f(and)f(the)i(cop)m(y)
-f(will)h(pro)s(duce)e(the)-30 2885 y(same)i(sequence)h(of)f(random)f(n)
-m(um)m(b)s(ers.)-30 3015 y(The)j(follo)m(wing)i(functions)d(return)h
-(\(pseudo-\)random)e(n)m(um)m(b)s(ers)g(in)i(di\013eren)m(t)h(formats.)
-45 b(Calling)33 b(one)g(of)f(these)-30 3125 y(mo)s(di\014es)d(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(.)-30
-3255 y(The)30 b(global)i(v)-5 b(ariable)210 3380 y Fp(random_state)44
-b(default_random_state)-30 3511 y Fr(con)m(tains)29 b(a)f(default)f
-(random)f(n)m(um)m(b)s(er)f(generator.)41 b(It)28 b(is)f(used)g(when)g
-(the)g(functions)h(b)s(elo)m(w)f(are)h(called)h(without)-30
-3620 y Fp(random_state)e Fr(argumen)m(t.)-30 3772 y Fp(uint32)i
-(random32)f(\(random_state&)e(randomstate\))-30 3881
-y(uint32)j(random32)f(\(\))450 3991 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.)-30 4143 y Fp(cl_I)e(random_I)f(\(random_state&)f
-(randomstate,)g(const)i(cl_I&)g(n\))-30 4252 y(cl_I)g(random_I)f
-(\(const)h(cl_I&)g(n\))450 4362 y(n)i Fr(m)m(ust)e(b)s(e)h(an)h(in)m
-(teger)h Fp(>)f Fr(0.)42 b(This)31 b(function)f(returns)g(a)h(random)e
-(in)m(teger)j Fp(x)f Fr(in)f(the)h(range)g Fp(0)g(<=)e(x)450
-4471 y(<)h(n)p Fr(.)-30 4623 y Fp(cl_F)f(random_F)f(\(random_state&)f
-(randomstate,)g(const)i(cl_F&)g(n\))-30 4732 y(cl_F)g(random_F)f
-(\(const)h(cl_F&)g(n\))450 4842 y(n)d Fr(m)m(ust)f(b)s(e)h(a)h(\015oat)
-g Fp(>)f Fr(0.)40 b(This)26 b(function)g(returns)f(a)i(random)d
-(\015oating-p)s(oin)m(t)k(n)m(um)m(b)s(er)c(of)j(the)g(same)450
-4952 y(format)j(as)g Fp(n)g Fr(in)g(the)h(range)g Fp(0)f(<=)f(x)i(<)f
-(n)p Fr(.)-30 5103 y Fp(cl_R)f(random_R)f(\(random_state&)f
-(randomstate,)g(const)i(cl_R&)g(n\))-30 5213 y(cl_R)g(random_R)f
-(\(const)h(cl_R&)g(n\))450 5322 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.)p eop
-%%Page: 27 29
-27 28 bop -30 -116 a Fr(Chapter)30 b(4:)41 b(F)-8 b(unctions)31
-b(on)f(n)m(um)m(b)s(ers)2523 b(27)-30 299 y Fs(4.13)68
-b(Obfuscating)46 b(op)t(erators)-30 491 y Fr(The)36 b(mo)s(difying)g
-(C/C)p Fp(++)g Fr(op)s(erators)h Fp(+=)p Fr(,)h Fp(-=)p
-Fr(,)g Fp(*=)p Fr(,)g Fp(/=)p Fr(,)g Fp(&=)p Fr(,)g Fp(|=)p
-Fr(,)g Fp(^=)p Fr(,)h Fp(<<=)p Fr(,)e Fp(>>=)f Fr(are)i(not)f(a)m(v)-5
-b(ailable)39 b(b)m(y)e(default)-30 601 y(b)s(ecause)45
-b(their)f(use)g(tends)h(to)g(mak)m(e)g(programs)e(unreadable.)83
-b(It)44 b(is)h(trivial)h(to)f(get)h(a)m(w)m(a)m(y)g(without)f(them.)-30
-711 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)210 839 y Fp(#define)46 b(WANT_OBFUSCATING_OPERATO)
-o(RS)-30 974 y Fr(to)37 b(the)g(b)s(eginning)f(of)h(y)m(our)g(source)g
-(\014les,)h(b)s(efore)f(the)g(inclusion)f(of)h(an)m(y)g(CLN)f(include)h
-(\014les.)60 b(This)36 b(\015ag)h(will)-30 1083 y(enable)31
-b(the)f(follo)m(wing)i(op)s(erators:)-30 1218 y(F)-8
-b(or)31 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_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(:)-30 1377 y Fl(t)m(yp)s(e)5 b Fp(&)30 b(operator)e(+=)i(\()p
-Fl(t)m(yp)s(e)5 b Fp(&,)30 b(const)f Fl(t)m(yp)s(e)5
-b Fp(&\))-30 1487 y Fl(t)m(yp)s(e)g Fp(&)30 b(operator)e(-=)i(\()p
-Fl(t)m(yp)s(e)5 b Fp(&,)30 b(const)f Fl(t)m(yp)s(e)5
-b Fp(&\))-30 1597 y Fl(t)m(yp)s(e)g Fp(&)30 b(operator)e(*=)i(\()p
-Fl(t)m(yp)s(e)5 b Fp(&,)30 b(const)f Fl(t)m(yp)s(e)5
-b Fp(&\))-30 1706 y Fl(t)m(yp)s(e)g Fp(&)30 b(operator)e(/=)i(\()p
-Fl(t)m(yp)s(e)5 b Fp(&,)30 b(const)f Fl(t)m(yp)s(e)5
-b Fp(&\))-30 1841 y Fr(F)-8 b(or)31 b(the)g(class)g Fp(cl_I)p
-Fr(:)-30 2000 y Fl(t)m(yp)s(e)5 b Fp(&)30 b(operator)e(+=)i(\()p
-Fl(t)m(yp)s(e)5 b Fp(&,)30 b(const)f Fl(t)m(yp)s(e)5
-b Fp(&\))-30 2110 y Fl(t)m(yp)s(e)g Fp(&)30 b(operator)e(-=)i(\()p
-Fl(t)m(yp)s(e)5 b Fp(&,)30 b(const)f Fl(t)m(yp)s(e)5
-b Fp(&\))-30 2219 y Fl(t)m(yp)s(e)g Fp(&)30 b(operator)e(*=)i(\()p
-Fl(t)m(yp)s(e)5 b Fp(&,)30 b(const)f Fl(t)m(yp)s(e)5
-b Fp(&\))-30 2329 y Fl(t)m(yp)s(e)g Fp(&)30 b(operator)e(&=)i(\()p
-Fl(t)m(yp)s(e)5 b Fp(&,)30 b(const)f Fl(t)m(yp)s(e)5
-b Fp(&\))-30 2438 y Fl(t)m(yp)s(e)g Fp(&)30 b(operator)e(|=)i(\()p
-Fl(t)m(yp)s(e)5 b Fp(&,)30 b(const)f Fl(t)m(yp)s(e)5
-b Fp(&\))-30 2548 y Fl(t)m(yp)s(e)g Fp(&)30 b(operator)e(^=)i(\()p
-Fl(t)m(yp)s(e)5 b Fp(&,)30 b(const)f Fl(t)m(yp)s(e)5
-b Fp(&\))-30 2658 y Fl(t)m(yp)s(e)g Fp(&)30 b(operator)e(<<=)i(\()p
-Fl(t)m(yp)s(e)5 b Fp(&,)30 b(const)f Fl(t)m(yp)s(e)5
-b Fp(&\))-30 2767 y Fl(t)m(yp)s(e)g Fp(&)30 b(operator)e(>>=)i(\()p
-Fl(t)m(yp)s(e)5 b Fp(&,)30 b(const)f Fl(t)m(yp)s(e)5
-b Fp(&\))-30 2902 y Fr(F)-8 b(or)31 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(:)-30 3061 y Fl(t)m(yp)s(e)5
-b Fp(&)30 b(operator)e(++)i(\()p Fl(t)m(yp)s(e)5 b Fp(&)30
-b(x\))450 3171 y Fr(The)g(pre\014x)f(op)s(erator)i Fp(++x)p
-Fr(.)-30 3330 y Fp(void)e(operator)f(++)i(\()p Fl(t)m(yp)s(e)5
-b Fp(&)30 b(x,)g(int\))450 3440 y Fr(The)g(p)s(ost\014x)f(op)s(erator)i
-Fp(x++)p Fr(.)-30 3599 y Fl(t)m(yp)s(e)5 b Fp(&)30 b(operator)e(--)i
-(\()p Fl(t)m(yp)s(e)5 b Fp(&)30 b(x\))450 3709 y Fr(The)g(pre\014x)f
-(op)s(erator)i Fp(--x)p Fr(.)-30 3868 y Fp(void)e(operator)f(--)i(\()p
-Fl(t)m(yp)s(e)5 b Fp(&)30 b(x,)g(int\))450 3978 y Fr(The)g(p)s
-(ost\014x)f(op)s(erator)i Fp(x--)p Fr(.)-30 4137 y(Note)37
-b(that)g(b)m(y)f(using)g(these)h(obfuscating)f(op)s(erators,)i(y)m(ou)f
-(w)m(ouldn't)f(gain)h(e\016ciency:)53 b(In)35 b(CLN)h(`)p
-Fp(x)30 b(+=)g(y;)p Fr(')36 b(is)-30 4247 y(exactly)c(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: 28 30
-28 29 bop -30 -116 a Fr(Chapter)30 b(5:)41 b(Input/Output)2844
-b(28)-30 299 y Fo(5)80 b(Input/Output)-30 758 y Fs(5.1)68
-b(In)l(ternal)46 b(and)f(prin)l(ted)g(represen)l(tation)-30
-973 y Fr(All)31 b(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.)-30
-1130 y(Ev)m(ery)36 b(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.)58
-b(Sev)m(eral)37 b(external)-30 1239 y(represen)m(tations)31
-b(ma)m(y)f(denote)h(the)g(same)f(n)m(um)m(b)s(er,)e(for)i(example,)g
-Fp(")p Fr(20.0)p Fp(")i Fr(and)d Fp(")p Fr(20.000)p Fp(")p
-Fr(.)-30 1397 y(Con)m(v)m(erting)34 b(an)f(in)m(ternal)h(to)g(an)e
-(external)i(represen)m(tation)h(is)e(called)h(\\prin)m(ting",)h(con)m
-(v)m(erting)f(an)f(external)h(to)-30 1506 y(an)24 b(in)m(ternal)h
-(represen)m(tation)g(is)f(called)h(\\reading".)40 b(In)24
-b(CLN,)f(it)i(is)f(alw)m(a)m(ys)i(true)e(that)h(con)m(v)m(ersion)g(of)f
-(an)g(in)m(ternal)-30 1616 y(to)j(an)e(external)i(represen)m(tation)g
-(and)e(then)h(bac)m(k)g(to)h(an)e(in)m(ternal)i(represen)m(tation)g
-(will)f(yield)g(the)g(same)f(in)m(ternal)-30 1725 y(represen)m(tation.)
-42 b(Sym)m(b)s(olically:)f Fp(read\(print\(x\)\))26 b(==)k(x)p
-Fr(.)40 b(This)30 b(is)g(called)i(\\prin)m(t-read)e(consistency".)-30
-1882 y(Di\013eren)m(t)i(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\):)-30 2076 y(In)m(tegers)167 b(External)35
-b(represen)m(tation:)50 b Fl(sign)p Fp({)p Fl(digit)r
-Fp(}+)p Fr(.)j(The)34 b(reader)g(also)h(accepts)h(the)f(Common)d(Lisp)h
-(syn-)450 2185 y(taxes)43 b Fl(sign)p Fp({)p Fl(digit)r
-Fp(}+.)g Fr(with)f(a)h(trailing)g(dot)g(for)f(decimal)g(in)m(tegers)i
-(and)e(the)h Fp(#)p Fl(n)p Fp(R)p Fr(,)h Fp(#b)p Fr(,)h
-Fp(#o)p Fr(,)h Fp(#x)450 2295 y Fr(pre\014xes.)-30 2477
-y(Rational)32 b(n)m(um)m(b)s(ers)450 2586 y(External)26
-b(represen)m(tation:)39 b Fl(sign)p Fp({)p Fl(digit)r
-Fp(}+/{)p Fl(digit)r Fp(}+)p Fr(.)g(The)25 b Fp(#)p Fl(n)p
-Fp(R)p Fr(,)h Fp(#b)p Fr(,)g Fp(#o)p Fr(,)g Fp(#x)f Fr(pre\014xes)g
-(are)h(allo)m(w)m(ed)450 2696 y(here)k(as)h(w)m(ell.)-30
-2878 y(Floating-p)s(oin)m(t)i(n)m(um)m(b)s(ers)450 2988
-y(External)58 b(represen)m(tation:)96 b Fl(sign)p Fp({)p
-Fl(digit)r Fp(})p Fr(*)p Fl(exp)s(onen)m(t)60 b Fr(or)d
-Fl(sign)p Fp({)p Fl(digit)r Fp(})p Fr(*)p Fp(.{)p Fl(digit)r
-Fp(})p Fr(*)p Fl(exp)s(onen)m(t)k Fr(or)450 3097 y Fl(sign)p
-Fp({)p Fl(digit)r Fp(})p Fr(*)p Fp(.{)p Fl(digit)r Fp(}+)p
-Fr(.)45 b(A)31 b(precision)h(sp)s(eci\014er)f(of)h(the)f(form)p
-2693 3097 28 4 v 63 w Fl(prec)37 b Fr(ma)m(y)31 b(b)s(e)g(app)s(ended.)
-42 b(There)450 3207 y(m)m(ust)g(b)s(e)h(at)h(least)h(one)e(digit)h(in)f
-(the)h(non-exp)s(onen)m(t)f(part.)80 b(The)42 b(exp)s(onen)m(t)i(has)f
-(the)g(syn)m(tax)450 3316 y Fl(expmark)m(er)36 b(expsign)30
-b Fp({)p Fl(digit)r Fp(}+)p Fr(.)41 b(The)30 b(exp)s(onen)m(t)g(mark)m
-(er)g(is)630 3462 y(`)p Fp(s)p Fr(')h(for)f(short-\015oats,)630
-3608 y(`)p Fp(f)p Fr(')h(for)f(single-\015oats,)630 3754
-y(`)p Fp(d)p Fr(')h(for)f(double-\015oats,)630 3900 y(`)p
-Fp(L)p Fr(')h(for)f(long-\015oats,)450 4082 y(or)23 b(`)p
-Fp(e)p Fr(',)h(whic)m(h)f(denotes)g(a)g(default)f(\015oat)i(format.)37
-b(The)22 b(precision)h(sp)s(ecifying)g(su\016x)e(has)i(the)f(syn)m(tax)
-p 450 4191 V 477 4191 a Fl(prec)48 b Fr(where)41 b Fl(prec)48
-b Fr(denotes)42 b(the)g(n)m(um)m(b)s(er)e(of)i(v)-5 b(alid)43
-b(man)m(tissa)f(digits)g(\(in)h(decimal,)i(excluding)450
-4301 y(leading)31 b(zero)s(es\),)h(cf.)41 b(also)31 b(function)f(`)p
-Fp(cl_float_format)p Fr('.)-30 4483 y(Complex)f(n)m(um)m(b)s(ers)450
-4592 y(External)i(represen)m(tation:)630 4738 y(In)36
-b(algebraic)j(notation:)54 b Fl(realpart)r Fp(+)p Fl(imagpart)r
-Fp(i)p Fr(.)60 b(Of)37 b(course,)h(if)f Fl(imagpart)i
-Fr(is)e(negativ)m(e,)k(its)630 4848 y(prin)m(ted)28 b(represen)m
-(tation)i(b)s(egins)e(with)g(a)h(`)p Fp(-)p Fr(',)g(and)f(the)g(`)p
-Fp(+)p Fr(')h(b)s(et)m(w)m(een)g Fl(realpart)i Fr(and)d
-Fl(imagpart)630 4957 y Fr(ma)m(y)41 b(b)s(e)h(omitted.)75
-b(Note)43 b(that)g(this)e(notation)j(cannot)e(b)s(e)f(used)g(when)g
-(the)h Fl(imagpart)i Fr(is)630 5067 y(rational)c(and)e(the)i(rational)g
-(n)m(um)m(b)s(er's)c(base)j(is)g Fp(>)p Fr(18,)j(b)s(ecause)d(the)g(`)p
-Fp(i)p Fr(')g(is)g(then)g(read)f(as)i(a)630 5177 y(digit.)630
-5322 y(In)30 b(Common)e(Lisp)h(notation:)42 b Fp(#C\()p
-Fl(realpart)32 b(imagpart)r Fp(\))p Fr(.)p eop
-%%Page: 29 31
-29 30 bop -30 -116 a Fr(Chapter)30 b(5:)41 b(Input/Output)2844
-b(29)-30 299 y Fs(5.2)68 b(Input)44 b(functions)-30 486
-y Fr(Including)25 b Fp(<cln/io.h>)d Fr(de\014nes)j(a)h(t)m(yp)s(e)f
-Fp(cl_istream)p Fr(,)f(whic)m(h)i(is)f(the)h(t)m(yp)s(e)f(of)h(the)g
-(\014rst)e(argumen)m(t)h(to)i(all)f(input)-30 595 y(functions.)40
-b Fp(cl_istream)28 b Fr(is)i(the)h(same)f(as)g Fp(std::istream&)p
-Fr(.)-30 724 y(The)g(v)-5 b(ariable)150 852 y Fp(cl_istream)28
-b(stdin)-30 1000 y Fr(con)m(tains)k(the)e(standard)g(input)f(stream.)
--30 1129 y(These)h(are)h(the)f(simple)g(input)f(functions:)-30
-1276 y Fp(int)g(freadchar)f(\(cl_istream)g(stream\))450
-1386 y Fr(Reads)37 b(a)f(c)m(haracter)j(from)c Fp(stream)p
-Fr(.)57 b(Returns)35 b Fp(cl_EOF)g Fr(\(not)i(a)g(`)p
-Fp(char)p Fr('!\))59 b(if)36 b(the)h(end)f(of)h(stream)450
-1495 y(w)m(as)31 b(encoun)m(tered)g(or)f(an)g(error)g(o)s(ccurred.)-30
-1643 y Fp(int)f(funreadchar)f(\(cl_istream)f(stream,)h(int)i(c\))450
-1753 y Fr(Puts)41 b(bac)m(k)h Fp(c)f Fr(on)m(to)i Fp(stream)p
-Fr(.)72 b Fp(c)41 b Fr(m)m(ust)f(b)s(e)h(the)h(result)f(of)g(the)h
-(last)g Fp(freadchar)d Fr(op)s(eration)j(on)450 1862
-y Fp(stream)p Fr(.)-30 2010 y(Eac)m(h)53 b(of)f(the)g(classes)i
-Fp(cl_N)p Fr(,)i Fp(cl_R)p Fr(,)h 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)50 b Fr(de\014nes,)57
-b(in)-30 2119 y Fp(<cln/)p Fl(t)m(yp)s(e)5 b Fp(_io.h>)p
-Fr(,)28 b(the)i(follo)m(wing)i(input)e(function:)-30
-2267 y Fp(cl_istream)e(operator>>)f(\(cl_istream)g(stream,)i
-Fl(t)m(yp)s(e)5 b Fp(&)30 b(result\))450 2377 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(.)-30 2524 y(The)f(most)g(\015exible)g(input)g
-(functions,)g(de\014ned)f(in)h Fp(<cln/)p Fl(t)m(yp)s(e)5
-b Fp(_io.h>)p Fr(,)28 b(are)j(the)f(follo)m(wing:)-30
-2672 y Fp(cl_N)f(read_complex)e(\(cl_istream)h(stream,)g(const)h
-(cl_read_flags&)d(flags\))-30 2781 y(cl_R)j(read_real)f(\(cl_istream)f
-(stream,)i(const)g(cl_read_flags&)d(flags\))-30 2891
-y(cl_F)j(read_float)f(\(cl_istream)f(stream,)h(const)h(cl_read_flags&)e
-(flags\))-30 3001 y(cl_RA)i(read_rational)e(\(cl_istream)g(stream,)h
-(const)h(cl_read_flags&)e(flags\))-30 3110 y(cl_I)i(read_integer)e
-(\(cl_istream)h(stream,)g(const)h(cl_read_flags&)d(flags\))450
-3220 y Fr(Reads)i(a)g(n)m(um)m(b)s(er)e(from)g Fp(stream)p
-Fr(.)38 b(The)27 b Fp(flags)g Fr(are)h(parameters)f(whic)m(h)h
-(a\013ect)h(the)f(input)f(syn)m(tax.)450 3329 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.)
--30 3477 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(*)-30 3587
-y(string_limit,)e(const)i(char)g(*)h(*)g(end_of_parse\))-30
-3696 y(cl_R)f(read_real)f(\(const)h(cl_read_flags&)d(flags,)j(const)g
-(char)g(*)h(string,)e(const)h(char)h(*)-30 3806 y(string_limit,)d
-(const)i(char)g(*)h(*)g(end_of_parse\))-30 3915 y(cl_F)f(read_float)f
-(\(const)g(cl_read_flags&)f(flags,)i(const)g(char)g(*)h(string,)e
-(const)h(char)g(*)-30 4025 y(string_limit,)e(const)i(char)g(*)h(*)g
-(end_of_parse\))-30 4134 y(cl_RA)f(read_rational)e(\(const)h
-(cl_read_flags&)f(flags,)h(const)h(char)h(*)g(string,)e(const)h(char)g
-(*)-30 4244 y(string_limit,)e(const)i(char)g(*)h(*)g(end_of_parse\))-30
-4354 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(*)-30 4463 y(string_limit,)e
-(const)i(char)g(*)h(*)g(end_of_parse\))450 4573 y Fr(Reads)k(a)h(n)m
-(um)m(b)s(er)d(from)g(a)j(string)f(in)g(memory)-8 b(.)50
-b(The)34 b Fp(flags)e Fr(are)j(parameters)e(whic)m(h)h(a\013ect)i(the)
-450 4682 y(input)31 b(syn)m(tax.)46 b(The)31 b(string)h(starts)g(at)h
-Fp(string)d Fr(and)i(ends)f(at)h Fp(string_limit)d Fr(\(exclusiv)m(e)34
-b(limit\).)450 4792 y Fp(string_limit)29 b Fr(ma)m(y)i(also)i(b)s(e)f
-Fp(NULL)p Fr(,)f(denoting)i(the)f(en)m(tire)h(string,)g(i.e.)47
-b(equiv)-5 b(alen)m(t)33 b(to)g Fp(string_)450 4902 y(limit)c(=)h
-(string)f(+)h(strlen\(string\))p Fr(.)75 b(If)42 b Fp(end_of_parse)e
-Fr(is)j Fp(NULL)p Fr(,)j(the)d(string)g(in)g(memory)450
-5011 y(m)m(ust)30 b(con)m(tain)j(exactly)g(one)f(n)m(um)m(b)s(er)d(and)
-i(nothing)g(more,)g(else)i(a)f(fatal)g(error)f(will)h(b)s(e)f
-(signalled.)450 5121 y(If)37 b Fp(end_of_parse)d Fr(is)k(not)g
-Fp(NULL)p Fr(,)g Fp(*end_of_parse)c Fr(will)k(b)s(e)f(assigned)h(a)g(p)
-s(oin)m(ter)g(past)f(the)h(last)450 5230 y(parsed)32
-b(c)m(haracter)h(\(i.e.)48 b Fp(string_limit)29 b Fr(if)j(nothing)g
-(came)g(after)h(the)g(n)m(um)m(b)s(er\).)44 b(Whitespace)34
-b(is)450 5340 y(not)d(allo)m(w)m(ed.)p eop
-%%Page: 30 32
-30 31 bop -30 -116 a Fr(Chapter)30 b(5:)41 b(Input/Output)2844
-b(30)-30 299 y(The)30 b(structure)g Fp(cl_read_flags)d
-Fr(con)m(tains)k(the)g(follo)m(wing)g(\014elds:)-30 461
-y Fp(cl_read_syntax_t)26 b(syntax)450 570 y Fr(The)i(p)s(ossible)f
-(results)h(of)g(the)h(read)f(op)s(eration.)40 b(P)m(ossible)29
-b(v)-5 b(alues)28 b(are)h Fp(syntax_number)p Fr(,)c Fp(syntax_)450
-680 y(real)p Fr(,)49 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_)450 789 y(ffloat)p Fr(,)29 b Fp(syntax_dfloat)p
-Fr(,)e Fp(syntax_lfloat)p Fr(.)-30 950 y Fp(cl_read_lsyntax_t)f
-(lsyntax)450 1060 y Fr(Sp)s(eci\014es)31 b(the)g(language-dep)s(enden)m
-(t)h(syn)m(tax)g(v)-5 b(arian)m(t)32 b(for)f(the)h(read)f(op)s
-(eration.)43 b(P)m(ossible)33 b(v)-5 b(alues)450 1169
-y(are)450 1330 y Fp(lsyntax_standard)930 1440 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,)450 1601 y Fp(lsyntax_algebraic)930 1710
-y Fr(accept)i(the)e(algebraic)i(notation)g Fl(x)6 b Fp(+)p
-Fl(y)i Fp(i)30 b Fr(for)g(complex)g(n)m(um)m(b)s(ers,)450
-1871 y Fp(lsyntax_commonlisp)930 1981 y Fr(accept)49
-b(the)g Fp(#b)p Fr(,)j Fp(#o)p Fr(,)g Fp(#x)47 b Fr(syn)m(taxes)i(for)f
-(binary)-8 b(,)52 b(o)s(ctal,)i(hexadecimal)48 b(n)m(um)m(b)s(ers,)930
-2090 y Fp(#)p Fl(base)5 b Fp(R)25 b Fr(for)f(rational)i(n)m(um)m(b)s
-(ers)d(in)h(a)i(giv)m(en)g(base,)g Fp(#c\()p Fl(realpart)32
-b(imagpart)r Fp(\))24 b Fr(for)h(com-)930 2200 y(plex)30
-b(n)m(um)m(b)s(ers,)450 2361 y Fp(lsyntax_all)930 2471
-y Fr(accept)i(all)f(of)g(these)f(extensions.)-30 2631
-y Fp(unsigned)e(int)i(rational_base)450 2741 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.)-30
-2902 y Fp(cl_float_format_t)26 b(float_flags.default_flo)o(at_f)o(orm)o
-(at)450 3012 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('.)-30 3172 y Fp(cl_float_format_t)c(float_flags.default_lfl)o(oat_)
-o(for)o(mat)450 3282 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(l)p Fr('.)-30 3443 y Fp(cl_boolean)e(float_flags.mantissa_de)o(pen)o
-(dent)o(_flo)o(at_)o(form)o(at)450 3553 y Fr(When)h(this)g(\015ag)h(is)
-f(true,)g(\015oats)h(sp)s(eci\014ed)e(with)h(more)g(digits)g(than)g
-(corresp)s(onding)g(to)g(the)h(exp)s(o-)450 3662 y(nen)m(t)g(mark)m(er)
-e(they)i(con)m(tain,)h(but)e(without)p 2018 3662 28 4
-v 62 w Fl(nnn)e Fr(su\016x,)i(will)h(get)h(a)e(precision)h(corresp)s
-(onding)e(to)450 3772 y(their)i(n)m(um)m(b)s(er)e(of)j(signi\014can)m
-(t)g(digits.)-30 4033 y Fs(5.3)68 b(Output)45 b(functions)-30
-4227 y Fr(Including)40 b Fp(<cln/io.h>)f Fr(de\014nes)h(a)i(t)m(yp)s(e)
-f Fp(cl_ostream)p Fr(,)g(whic)m(h)g(is)h(the)f(t)m(yp)s(e)g(of)h(the)f
-(\014rst)f(argumen)m(t)h(to)h(all)-30 4337 y(output)30
-b(functions.)40 b Fp(cl_ostream)28 b Fr(is)i(the)h(same)f(as)g
-Fp(std::ostream&)p Fr(.)-30 4473 y(The)g(v)-5 b(ariable)150
-4609 y Fp(cl_ostream)28 b(stdout)-30 4770 y Fr(con)m(tains)k(the)e
-(standard)g(output)g(stream.)-30 4906 y(The)g(v)-5 b(ariable)150
-5042 y Fp(cl_ostream)28 b(stderr)-30 5204 y Fr(con)m(tains)k(the)e
-(standard)g(error)g(output)g(stream.)-30 5340 y(These)g(are)h(the)f
-(simple)g(output)g(functions:)p eop
-%%Page: 31 33
-31 32 bop -30 -116 a Fr(Chapter)30 b(5:)41 b(Input/Output)2844
-b(31)-30 299 y Fp(void)29 b(fprintchar)f(\(cl_ostream)f(stream,)h(char)
-i(c\))450 408 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(.)-30 574 y
-Fp(void)e(fprint)g(\(cl_ostream)e(stream,)i(const)f(char)i(*)g
-(string\))450 683 y Fr(Prin)m(ts)g(the)h Fp(string)d
-Fr(literally)33 b(on)d(the)g Fp(stream)p Fr(.)-30 848
-y Fp(void)f(fprintdecimal)e(\(cl_ostream)g(stream,)i(int)g(x\))-30
-958 y(void)g(fprintdecimal)e(\(cl_ostream)g(stream,)i(const)g(cl_I&)g
-(x\))450 1068 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(.)-30 1233
-y Fp(void)e(fprintbinary)e(\(cl_ostream)h(stream,)g(const)h(cl_I&)g
-(x\))450 1342 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(.)-30 1508 y Fp(void)e(fprintoctal)f(\(cl_ostream)f
-(stream,)h(const)h(cl_I&)g(x\))450 1617 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(.)-30 1782 y Fp(void)f(fprinthexadecimal)d
-(\(cl_ostream)h(stream,)i(const)f(cl_I&)h(x\))450 1892
-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(.)-30 2060 y(Eac)m(h)53 b(of)f(the)g(classes)i Fp(cl_N)p
-Fr(,)i Fp(cl_R)p Fr(,)h 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)50 b Fr(de\014nes,)57 b(in)-30
-2170 y Fp(<cln/)p Fl(t)m(yp)s(e)5 b Fp(_io.h>)p Fr(,)28
-b(the)i(follo)m(wing)i(output)e(functions:)-30 2338 y
-Fp(void)f(fprint)g(\(cl_ostream)e(stream,)i(const)f Fl(t)m(yp)s(e)5
-b Fp(&)31 b(x\))-30 2447 y(cl_ostream)d(operator<<)f(\(cl_ostream)g
-(stream,)i(const)g Fl(t)m(yp)s(e)5 b Fp(&)30 b(x\))450
-2557 y Fr(Prin)m(ts)42 b(the)g(n)m(um)m(b)s(er)e Fp(x)i
-Fr(on)g(the)g Fp(stream)p Fr(.)75 b(The)41 b(output)h(ma)m(y)g(dep)s
-(end)e(on)i(the)h(global)g(prin)m(ter)450 2667 y(settings)36
-b(in)g(the)f(v)-5 b(ariable)37 b Fp(default_print_flags)p
-Fr(.)51 b(The)35 b Fp(ostream)e Fr(\015ags)j(and)f(settings)h
-(\(\015ags,)450 2776 y(width)30 b(and)f(lo)s(cale\))k(are)e(ignored.)
--30 2944 y(The)f(most)g(\015exible)g(output)g(function,)g(de\014ned)g
-(in)g Fp(<cln/)p Fl(t)m(yp)s(e)5 b Fp(_io.h>)p Fr(,)28
-b(are)i(the)h(follo)m(wing:)210 3079 y Fp(void)47 b(print_complex)92
-b(\(cl_ostream)44 b(stream,)i(const)g(cl_print_flags&)e(flags,)1212
-3183 y(const)j(cl_N&)f(z\);)210 3286 y(void)h(print_real)236
-b(\(cl_ostream)44 b(stream,)i(const)g(cl_print_flags&)e(flags,)1212
-3390 y(const)j(cl_R&)f(z\);)210 3494 y(void)h(print_float)188
-b(\(cl_ostream)44 b(stream,)i(const)g(cl_print_flags&)e(flags,)1212
-3598 y(const)j(cl_F&)f(z\);)210 3702 y(void)h(print_rational)d
-(\(cl_ostream)g(stream,)i(const)g(cl_print_flags&)e(flags,)1212
-3805 y(const)j(cl_RA&)f(z\);)210 3909 y(void)h(print_integer)92
-b(\(cl_ostream)44 b(stream,)i(const)g(cl_print_flags&)e(flags,)1212
-4013 y(const)j(cl_I&)f(z\);)-30 4153 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.)-30 4293 y(The)f(structure)g(t)m(yp)s(e)g
-Fp(cl_print_flags)d Fr(con)m(tains)k(the)g(follo)m(wing)h(\014elds:)-30
-4462 y Fp(unsigned)c(int)i(rational_base)450 4571 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 Fp(10)p Fr(.)-30 4736 y Fp(cl_boolean)e
-(rational_readably)450 4846 y Fr(If)34 b(this)h(\015ag)h(is)f(true,)h
-(rational)g(n)m(um)m(b)s(ers)c(are)k(prin)m(ted)e(with)h(radix)f(sp)s
-(eci\014ers)h(in)f(Common)f(Lisp)450 4956 y(syn)m(tax)e(\()p
-Fp(#)p Fl(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.)-30 5121 y Fp(cl_boolean)e(float_readably)
-450 5230 y Fr(If)34 b(this)g(\015ag)h(is)f(true,)i(t)m(yp)s(e)e(sp)s
-(eci\014c)g(exp)s(onen)m(t)h(mark)m(ers)e(ha)m(v)m(e)j(precedence)f(o)m
-(v)m(er)g('E'.)g(Default)h(is)450 5340 y(false.)p eop
-%%Page: 32 34
-32 33 bop -30 -116 a Fr(Chapter)30 b(5:)41 b(Input/Output)2844
-b(32)-30 299 y Fp(cl_float_format_t)26 b(default_float_format)450
-408 y Fr(Floating)40 b(p)s(oin)m(t)d(n)m(um)m(b)s(ers)e(of)j(this)f
-(format)g(will)h(b)s(e)f(prin)m(ted)g(using)g(the)h('E')g(exp)s(onen)m
-(t)f(mark)m(er.)450 518 y(Default)31 b(is)g Fp(cl_float_format_ffloat)p
-Fr(.)-30 677 y Fp(cl_boolean)d(complex_readably)450 787
-y Fr(If)41 b(this)g(\015ag)g(is)h(true,)i(complex)c(n)m(um)m(b)s(ers)f
-(will)j(b)s(e)e(prin)m(ted)h(using)g(the)g(Common)e(Lisp)h(syn)m(tax)
-450 897 y Fp(#C\()p Fl(realpart)32 b(imagpart)r Fp(\))p
-Fr(.)40 b(Default)32 b(is)e(false.)-30 1056 y Fp(cl_string)e
-(univpoly_varname)450 1166 y Fr(Univ)-5 b(ariate)37 b(p)s(olynomials)d
-(with)i(no)f(explicit)i(indeterminate)e(name)f(will)i(b)s(e)f(prin)m
-(ted)g(using)g(this)450 1275 y(v)-5 b(ariable)31 b(name.)40
-b(Default)31 b(is)g Fp("x")p Fr(.)-30 1435 y(The)26 b(global)i(v)-5
-b(ariable)27 b Fp(default_print_flags)21 b Fr(con)m(tains)28
-b(the)f(default)f(v)-5 b(alues,)28 b(used)e(b)m(y)g(the)h(function)f
-Fp(fprint)p Fr(.)p eop
-%%Page: 33 35
-33 34 bop -30 -116 a Fr(Chapter)30 b(6:)41 b(Rings)3180
-b(33)-30 299 y Fo(6)80 b(Rings)-30 533 y Fr(CLN)30 b(has)g(a)h(class)g
-(of)g(abstract)g(rings.)1403 662 y Fp(Ring)1308 765 y(cl_ring)1212
-869 y(<cln/ring.h>)-30 1004 y Fr(Rings)f(can)h(b)s(e)f(compared)f(for)h
-(equalit)m(y:)-30 1163 y Fp(bool)f(operator==)f(\(const)g(cl_ring&,)g
-(const)h(cl_ring&\))-30 1273 y(bool)g(operator!=)f(\(const)g(cl_ring&,)
-g(const)h(cl_ring&\))450 1382 y Fr(These)h(compare)g(t)m(w)m(o)i(rings)
-e(for)g(equalit)m(y)-8 b(.)-30 1542 y(Giv)m(en)31 b(a)g(ring)f
-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.)-30 1701 y Fp(void)f(R->fprint)f(\(cl_ostream)f(stream,)i(const)
-g(cl_ring_element&)d(x\))-30 1811 y(cl_boolean)i(R->equal)g(\(const)g
-(cl_ring_element&)e(x,)k(const)f(cl_ring_element&)d(y\))-30
-1920 y(cl_ring_element)g(R->zero)j(\(\))-30 2030 y(cl_boolean)f
-(R->zerop)g(\(const)g(cl_ring_element&)e(x\))-30 2139
-y(cl_ring_element)g(R->plus)j(\(const)f(cl_ring_element&)e(x,)k(const)f
-(cl_ring_element&)d(y\))-30 2249 y(cl_ring_element)g(R->minus)i
-(\(const)h(cl_ring_element&)d(x,)k(const)f(cl_ring_element&)d(y\))-30
-2359 y(cl_ring_element)g(R->uminus)i(\(const)h(cl_ring_element&)d(x\))
--30 2468 y(cl_ring_element)g(R->one)j(\(\))-30 2578 y(cl_ring_element)d
-(R->canonhom)h(\(const)i(cl_I&)g(x\))-30 2687 y(cl_ring_element)d
-(R->mul)j(\(const)g(cl_ring_element&)c(x,)30 b(const)f
-(cl_ring_element&)d(y\))-30 2797 y(cl_ring_element)g(R->square)i
-(\(const)h(cl_ring_element&)d(x\))-30 2907 y(cl_ring_element)g
-(R->expt_pos)h(\(const)i(cl_ring_element&)d(x,)k(const)f(cl_I&)g(y\))
--30 3041 y Fr(The)h(follo)m(wing)i(rings)e(are)g(built-in.)-30
-3200 y Fp(cl_null_ring)d(cl_0_ring)450 3310 y Fr(The)j(n)m(ull)g(ring,)
-h(con)m(taining)g(only)g(zero.)-30 3469 y Fp(cl_complex_ring)26
-b(cl_C_ring)450 3579 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
-Fp(cl_N)p Fr(.)-30 3738 y Fp(cl_real_ring)c(cl_R_ring)450
-3848 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
-Fp(cl_R)p Fr(.)-30 4007 y Fp(cl_rational_ring)26 b(cl_RA_ring)450
-4117 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
-Fp(cl_RA)p Fr(.)-30 4276 y Fp(cl_integer_ring)c(cl_I_ring)450
-4386 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(.)-30 4545 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(:)-30 4705 y
-Fp(cl_boolean)g(instanceof)f(\(const)i(cl_number&)e(x,)j(const)f
-(cl_number_ring&)d(R\))450 4814 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: 34 36
-34 35 bop -30 -116 a Fr(Chapter)30 b(7:)41 b(Mo)s(dular)30
-b(in)m(tegers)2730 b(34)-30 299 y Fo(7)80 b(Mo)t(dular)55
-b(in)l(tegers)-30 657 y Fs(7.1)68 b(Mo)t(dular)45 b(in)l(teger)h(rings)
--30 850 y Fr(CLN)29 b(implemen)m(ts)f(mo)s(dular)f(in)m(tegers,)k(i.e.)
-41 b(in)m(tegers)31 b(mo)s(dulo)c(a)j(\014xed)e(in)m(teger)j(N.)f(The)e
-(mo)s(dulus)f(is)i(explicitly)-30 960 y(part)37 b(of)h(ev)m(ery)g(mo)s
-(dular)e(in)m(teger.)63 b(CLN)37 b(do)s(esn't)g(allo)m(w)i(y)m(ou)f(to)
-g(\(acciden)m(tally\))j(mix)36 b(elemen)m(ts)i(of)f(di\013eren)m(t)-30
-1069 y(mo)s(dular)25 b(rings,)j(e.g.)41 b Fp(\(3)30 b(mod)f(4\))h(+)g
-(\(2)g(mod)f(5\))e Fr(will)h(result)f(in)g(a)h(run)m(time)e(error.)40
-b(\(Ideally)28 b(one)g(w)m(ould)f(imagine)-30 1179 y(a)k(generic)h
-(data)f(t)m(yp)s(e)g Fp(cl_MI\(N\))p Fr(,)e(but)h(C)p
-Fp(++)g Fr(do)s(esn't)h(ha)m(v)m(e)h(generic)g(t)m(yp)s(es.)42
-b(So)30 b(one)h(has)g(to)h(liv)m(e)g(with)e(run)m(time)-30
-1288 y(c)m(hec)m(ks.\))-30 1423 y(The)g(class)h(of)g(mo)s(dular)d(in)m
-(teger)k(rings)e(is)1403 1552 y Fp(Ring)1308 1656 y(cl_ring)1212
-1760 y(<cln/ring.h>)1451 1863 y(|)1451 1967 y(|)1021
-2071 y(Modular)46 b(integer)g(ring)1165 2175 y(cl_modint_ring)1069
-2279 y(<cln/modinteger.h>)-30 2413 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)1165 2542 y Fp(Modular)45 b(integer)1403
-2646 y(cl_MI)1117 2750 y(<cln/modinteger.h>)-30 2885
-y Fr(Mo)s(dular)30 b(in)m(teger)i(rings)e(are)g(constructed)h(using)f
-(the)h(function)-30 3044 y Fp(cl_modint_ring)26 b(find_modint_ring)g
-(\(const)j(cl_I&)g(N\))450 3154 y Fr(This)f(function)g(returns)f(the)h
-(mo)s(dular)e(ring)j(`)p Fp(Z/NZ)p Fr('.)39 b(It)28 b(tak)m(es)i(care)f
-(of)g(\014nding)e(out)h(ab)s(out)g(sp)s(ecial)450 3264
-y(cases)e(of)e Fp(N)p Fr(,)i(lik)m(e)g(p)s(o)m(w)m(ers)f(of)g(t)m(w)m
-(o)h(and)e(o)s(dd)f(n)m(um)m(b)s(ers)g(for)h(whic)m(h)h(Mon)m(tgomery)g
-(m)m(ultiplication)h(will)450 3373 y(b)s(e)g(a)h(win,)g(and)f
-(precomputes)f(an)m(y)i(necessary)g(auxiliary)h(data)f(for)f(computing)
-g(mo)s(dulo)f Fp(N)p Fr(.)39 b(There)450 3483 y(is)27
-b(a)h(cac)m(he)g(table)g(of)g(rings,)f(indexed)g(b)m(y)g
-Fp(N)g Fr(\(or,)h(more)e(precisely)-8 b(,)29 b(b)m(y)f
-Fp(abs\(N\))p Fr(\).)38 b(This)26 b(ensures)g(that)450
-3592 y(the)31 b(precomputation)e(costs)j(are)e(reduced)g(to)h(a)g
-(minim)m(um.)-30 3752 y(Mo)s(dular)f(in)m(teger)i(rings)e(can)g(b)s(e)g
-(compared)f(for)i(equalit)m(y:)-30 3912 y Fp(bool)e(operator==)f
-(\(const)g(cl_modint_ring&,)e(const)j(cl_modint_ring&\))-30
-4022 y(bool)g(operator!=)f(\(const)g(cl_modint_ring&,)e(const)j
-(cl_modint_ring&\))450 4131 y Fr(These)42 b(compare)g(t)m(w)m(o)i(mo)s
-(dular)c(in)m(teger)k(rings)e(for)g(equalit)m(y)-8 b(.)78
-b(Tw)m(o)43 b(di\013eren)m(t)g(calls)g(to)g Fp(find_)450
-4241 y(modint_ring)c 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)450
-4350 y(memoized)29 b(in)h(the)h(cac)m(he)h(table.)-30
-4608 y Fs(7.2)68 b(F)-11 b(unctions)44 b(on)h(mo)t(dular)g(in)l(tegers)
--30 4801 y Fr(Giv)m(en)31 b(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.)
--30 4961 y Fp(cl_I)f(R->modulus)450 5071 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(.)-30 5230 y Fp(cl_MI)29 b(R->zero\(\))450
-5340 y Fr(This)h(returns)f Fp(0)h(mod)f(N)p Fr(.)p eop
-%%Page: 35 37
-35 36 bop -30 -116 a Fr(Chapter)30 b(7:)41 b(Mo)s(dular)30
-b(in)m(tegers)2730 b(35)-30 299 y Fp(cl_MI)29 b(R->one\(\))450
-408 y Fr(This)h(returns)f Fp(1)h(mod)f(N)p Fr(.)-30 576
-y Fp(cl_MI)g(R->canonhom)e(\(const)i(cl_I&)g(x\))450
-686 y Fr(This)h(returns)f Fp(x)h(mod)f(N)p Fr(.)-30 853
-y Fp(cl_I)g(R->retract)f(\(const)g(cl_MI&)h(x\))450 963
-y Fr(This)c(is)h(a)h(partial)f(in)m(v)m(erse)h(function)f(to)h
-Fp(R->canonhom)p Fr(.)36 b(It)26 b(returns)f(the)h(standard)f(represen)
-m(tativ)m(e)450 1072 y(\()p Fp(>=0)p Fr(,)30 b Fp(<N)p
-Fr(\))g(of)h Fp(x)p Fr(.)-30 1240 y Fp(cl_MI)e
-(R->random\(random_state&)24 b(randomstate\))-30 1349
-y(cl_MI)29 b(R->random\(\))450 1459 y Fr(This)h(returns)f(a)h(random)f
-(in)m(teger)j(mo)s(dulo)d Fp(N)p Fr(.)-30 1630 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.)-30
-1802 y Fp(cl_modint_ring)e(x.ring)j(\(\))450 1912 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.)-30 2079 y Fp(cl_MI)f(operator+)f(\(const)g
-(cl_MI&,)h(const)g(cl_MI&\))450 2189 y Fr(Returns)36
-b(the)h(sum)d(of)j(t)m(w)m(o)h(mo)s(dular)d(in)m(tegers.)60
-b(One)37 b(of)f(the)h(argumen)m(ts)f(ma)m(y)g(also)i(b)s(e)e(a)h(plain)
-450 2298 y(in)m(teger.)-30 2466 y Fp(cl_MI)29 b(operator-)f(\(const)g
-(cl_MI&,)h(const)g(cl_MI&\))450 2575 y Fr(Returns)37
-b(the)h(di\013erence)g(of)g(t)m(w)m(o)h(mo)s(dular)d(in)m(tegers.)65
-b(One)37 b(of)h(the)g(argumen)m(ts)f(ma)m(y)h(also)g(b)s(e)g(a)450
-2685 y(plain)30 b(in)m(teger.)-30 2852 y Fp(cl_MI)f(operator-)f
-(\(const)g(cl_MI&\))450 2962 y Fr(Returns)h(the)i(negativ)m(e)i(of)d(a)
-h(mo)s(dular)d(in)m(teger.)-30 3130 y Fp(cl_MI)h(operator*)f(\(const)g
-(cl_MI&,)h(const)g(cl_MI&\))450 3239 y Fr(Returns)e(the)g(pro)s(duct)f
-(of)i(t)m(w)m(o)h(mo)s(dular)c(in)m(tegers.)41 b(One)27
-b(of)h(the)f(argumen)m(ts)g(ma)m(y)g(also)h(b)s(e)f(a)h(plain)450
-3349 y(in)m(teger.)-30 3516 y Fp(cl_MI)h(square)g(\(const)f(cl_MI&\))
-450 3626 y Fr(Returns)h(the)i(square)f(of)h(a)f(mo)s(dular)f(in)m
-(teger.)-30 3793 y Fp(cl_MI)g(recip)g(\(const)g(cl_MI&)f(x\))450
-3903 y Fr(Returns)g(the)i(recipro)s(cal)g Fp(x^-1)e Fr(of)i(a)f(mo)s
-(dular)f(in)m(teger)i Fp(x)p Fr(.)40 b Fp(x)29 b Fr(m)m(ust)g(b)s(e)f
-(coprime)h(to)h(the)f(mo)s(dulus,)450 4012 y(otherwise)i(an)f(error)g
-(message)h(is)f(issued.)-30 4180 y Fp(cl_MI)f(div)g(\(const)g(cl_MI&)g
-(x,)h(const)e(cl_MI&)h(y\))450 4290 y Fr(Returns)36 b(the)g(quotien)m
-(t)i Fp(x*y^-1)d Fr(of)h(t)m(w)m(o)i(mo)s(dular)c(in)m(tegers)k
-Fp(x)p Fr(,)g Fp(y)p Fr(.)59 b Fp(y)36 b Fr(m)m(ust)f(b)s(e)h(coprime)g
-(to)h(the)450 4399 y(mo)s(dulus,)28 b(otherwise)j(an)f(error)g(message)
-g(is)h(issued.)-30 4567 y Fp(cl_MI)e(expt_pos)f(\(const)h(cl_MI&)f(x,)i
-(const)f(cl_I&)g(y\))450 4676 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(.)-30 4844
-y Fp(cl_MI)f(expt)g(\(const)g(cl_MI&)f(x,)i(const)f(cl_I&)g(y\))450
-4953 y Fr(Returns)h Fp(x^y)p Fr(.)42 b(If)30 b Fp(y)h
-Fr(is)g(negativ)m(e,)i Fp(x)e Fr(m)m(ust)f(b)s(e)g(coprime)g(to)i(the)f
-(mo)s(dulus,)e(else)i(an)g(error)g(message)450 5063 y(is)f(issued.)-30
-5230 y Fp(cl_MI)f(operator<<)f(\(const)g(cl_MI&)h(x,)h(const)f(cl_I&)f
-(y\))450 5340 y Fr(Returns)h Fp(x*2^y)p Fr(.)p eop
-%%Page: 36 38
-36 37 bop -30 -116 a Fr(Chapter)30 b(7:)41 b(Mo)s(dular)30
-b(in)m(tegers)2730 b(36)-30 299 y Fp(cl_MI)29 b(operator>>)f(\(const)g
-(cl_MI&)h(x,)h(const)f(cl_I&)f(y\))450 408 y Fr(Returns)k
-Fp(x*2^-y)p Fr(.)45 b(When)33 b Fp(y)f Fr(is)g(p)s(ositiv)m(e,)j(the)e
-(mo)s(dulus)c(m)m(ust)j(b)s(e)g(o)s(dd,)g(or)h(an)f(error)g(message)h
-(is)450 518 y(issued.)-30 677 y Fp(bool)c(operator==)f(\(const)g
-(cl_MI&,)h(const)g(cl_MI&\))-30 787 y(bool)g(operator!=)f(\(const)g
-(cl_MI&,)h(const)g(cl_MI&\))450 897 y Fr(Compares)21
-b(t)m(w)m(o)j(mo)s(dular)c(in)m(tegers,)25 b(b)s(elonging)e(to)g(the)f
-(same)g(mo)s(dular)e(in)m(teger)k(ring,)g(for)e(equalit)m(y)-8
-b(.)-30 1056 y Fp(cl_boolean)28 b(zerop)h(\(const)f(cl_MI&)h(x\))450
-1166 y Fr(Returns)g(true)i(if)f Fp(x)g Fr(is)g Fp(0)g(mod)g(N)p
-Fr(.)-30 1325 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\).)-30
-1484 y Fp(void)f(fprint)g(\(cl_ostream)e(stream,)i(const)f(cl_MI&)h
-(x\))-30 1594 y(cl_ostream)f(operator<<)f(\(cl_ostream)g(stream,)i
-(const)g(cl_MI&)f(x\))450 1704 y Fr(Prin)m(ts)40 b(the)h(mo)s(dular)d
-(in)m(teger)k Fp(x)d Fr(on)i(the)f Fp(stream)p Fr(.)69
-b(The)40 b(output)g(ma)m(y)f(dep)s(end)g(on)h(the)h(global)450
-1813 y(prin)m(ter)30 b(settings)h(in)f(the)h(v)-5 b(ariable)31
-b Fp(default_print_flags)p Fr(.)p eop
-%%Page: 37 39
-37 38 bop -30 -116 a Fr(Chapter)30 b(8:)41 b(Sym)m(b)s(olic)29
-b(data)i(t)m(yp)s(es)2596 b(37)-30 299 y Fo(8)80 b(Sym)l(b)t(olic)54
-b(data)g(t)l(yp)t(es)-30 513 y Fr(CLN)30 b(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.)-30 758 y Fs(8.1)68
-b(Strings)-30 946 y Fr(The)30 b(class)1260 1071 y Fp(String)1212
-1175 y(cl_string)1117 1278 y(<cln/string.h>)-30 1409
-y Fr(implemen)m(ts)f(imm)m(utable)g(strings.)-30 1539
-y(Strings)h(are)h(constructed)f(through)g(the)h(follo)m(wing)g
-(constructors:)-30 1691 y Fp(cl_string)d(\(const)h(char)g(*)h(s\))450
-1800 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(.)-30 1951
-y Fp(cl_string)e(\(const)h(char)g(*)h(ptr,)f(unsigned)f(long)h(len\))
-450 2061 y Fr(Returns)36 b(an)h(imm)m(utable)f(cop)m(y)i(of)f(the)g
-Fp(len)f Fr(c)m(haracters)j(at)e Fp(ptr[0])p Fr(,)43
-b(.)22 b(.)h(.)11 b(,)39 b Fp(ptr[len-1])p Fr(.)58 b(NUL)450
-2171 y(c)m(haracters)32 b(are)f(allo)m(w)m(ed.)-30 2322
-y(The)f(follo)m(wing)i(functions)e(are)g(a)m(v)-5 b(ailable)33
-b(on)d(strings:)-30 2473 y Fp(operator)e(=)450 2583 y
-Fr(Assignmen)m(t)i(from)f Fp(cl_string)f Fr(and)h Fp(const)g(char)h(*)p
-Fr(.)-30 2734 y Fp(s.length\(\))-30 2844 y(strlen\(s\))450
-2953 y Fr(Returns)f(the)i(length)g(of)f(the)h(string)f
-Fp(s)p Fr(.)-30 3104 y Fp(s[i])288 b Fr(Returns)28 b(the)i
-Fp(i)p Fr(th)f(c)m(haracter)i(of)e(the)g(string)h Fp(s)p
-Fr(.)40 b Fp(i)29 b Fr(m)m(ust)f(b)s(e)h(in)g(the)g(range)h
-Fp(0)g(<=)f(i)h(<)g(s.length\(\))p Fr(.)-30 3256 y Fp(bool)f(equal)g
-(\(const)g(cl_string&)e(s1,)j(const)f(cl_string&)e(s2\))450
-3365 y Fr(Compares)38 b(t)m(w)m(o)i(strings)f(for)f(equalit)m(y)-8
-b(.)69 b(One)38 b(of)h(the)g(argumen)m(ts)g(ma)m(y)f(also)i(b)s(e)e(a)i
-(plain)e Fp(const)450 3475 y(char)29 b(*)p Fr(.)-30 3720
-y Fs(8.2)68 b(Sym)l(b)t(ols)-30 3908 y Fr(Sym)m(b)s(ols)31
-b(are)i(uniqui\014ed)d(strings:)45 b(all)34 b(sym)m(b)s(ols)d(with)h
-(the)g(same)g(name)g(are)h(shared.)46 b(This)32 b(means)f(that)i(com-)
--30 4018 y(parison)38 b(of)g(t)m(w)m(o)i(sym)m(b)s(ols)d(is)h(fast)h
-(\(e\013ectiv)m(ely)j(just)37 b(a)i(p)s(oin)m(ter)f(comparison\),)i
-(whereas)f(comparison)e(of)i(t)m(w)m(o)-30 4128 y(strings)32
-b(m)m(ust)f(in)g(the)i(w)m(orst)f(case)h(w)m(alk)g(b)s(oth)e(strings)h
-(un)m(til)g(their)g(end.)45 b(Sym)m(b)s(ols)30 b(are)j(used,)f(for)f
-(example,)i(as)-30 4237 y(tags)e(for)g(prop)s(erties,)f(as)g(names)f
-(of)i(v)-5 b(ariables)31 b(in)f(p)s(olynomial)g(rings,)g(etc.)-30
-4368 y(Sym)m(b)s(ols)f(are)h(constructed)h(through)f(the)g(follo)m
-(wing)i(constructor:)-30 4519 y Fp(cl_symbol)c(\(const)h(cl_string&)e
-(s\))450 4629 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.)-30 4780 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:)-30
-4931 y Fp(cl_string)e(\(const)h(cl_symbol&)e(sym\))450
-5041 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
-Fp(sym)p Fr(.)-30 5192 y Fp(bool)g(equal)g(\(const)g(cl_symbol&)e
-(sym1,)i(const)g(cl_symbol&)f(sym2\))450 5301 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: 38 40
-38 39 bop -30 -116 a Fr(Chapter)30 b(9:)41 b(Univ)-5
-b(ariate)32 b(p)s(olynomials)2483 b(38)-30 299 y Fo(9)80
-b(Univ)-9 b(ariate)56 b(p)t(olynomials)-30 652 y Fs(9.1)68
-b(Univ)-7 b(ariate)47 b(p)t(olynomial)f(rings)-30 844
-y Fr(CLN)33 b(implemen)m(ts)f(univ)-5 b(ariate)35 b(p)s(olynomials)e
-(\(p)s(olynomials)g(in)g(one)h(v)-5 b(ariable\))35 b(o)m(v)m(er)g(an)f
-(arbitrary)f(ring.)50 b(The)-30 953 y(indeterminate)34
-b(v)-5 b(ariable)36 b(ma)m(y)e(b)s(e)h(either)g(unnamed)d(\(and)j(will)
-g(b)s(e)f(prin)m(ted)h(according)g(to)h Fp(default_print_)-30
-1063 y(flags.univpoly_varname)p Fr(,)h(whic)m(h)j(defaults)g(to)h(`)p
-Fp(x)p Fr('\))g(or)f(carry)h(a)f(giv)m(en)h(name.)70
-b(The)40 b(base)g(ring)g(and)g(the)-30 1172 y(indeterminate)31
-b(are)h(explicitly)g(part)f(of)h(ev)m(ery)g(p)s(olynomial.)42
-b(CLN)31 b(do)s(esn't)g(allo)m(w)i(y)m(ou)e(to)h(\(acciden)m(tally\))j
-(mix)-30 1282 y(elemen)m(ts)23 b(of)g(di\013eren)m(t)h(p)s(olynomial)e
-(rings,)i(e.g.)40 b Fp(\(a^2+1\))28 b(*)i(\(b^3-1\))21
-b Fr(will)i(result)g(in)g(a)g(run)m(time)f(error.)38
-b(\(Ideally)-30 1391 y(this)30 b(should)g(return)f(a)i(m)m(ultiv)-5
-b(ariate)31 b(p)s(olynomial,)f(but)g(they)g(are)h(not)g(y)m(et)g
-(implemen)m(ted)e(in)h(CLN.\))-30 1525 y(The)g(classes)h(of)g(univ)-5
-b(ariate)31 b(p)s(olynomial)f(rings)f(are)1499 1653 y
-Fp(Ring)1403 1757 y(cl_ring)1308 1861 y(<cln/ring.h>)1546
-1965 y(|)1546 2068 y(|)1021 2172 y(Univariate)45 b(polynomial)g(ring)
-1260 2276 y(cl_univpoly_ring)1260 2380 y(<cln/univpoly.h>)1546
-2484 y(|)735 2587 y(+----------------+------)o(----)o(----)o(---)o(--+)
-735 2691 y(|)763 b(|)907 b(|)258 2795 y(Complex)46 b(polynomial)f(ring)
-189 b(|)i(Modular)46 b(integer)g(polynomial)f(ring)258
-2899 y(cl_univpoly_complex_rin)o(g)137 b(|)382 b
-(cl_univpoly_modint_ring)258 3002 y(<cln/univpoly_complex.h)o(>)137
-b(|)382 b(<cln/univpoly_modint.h>)1546 3106 y(|)735 3210
-y(+----------------+)735 3314 y(|)763 b(|)353 3418 y(Real)47
-b(polynomial)e(ring)237 b(|)353 3521 y(cl_univpoly_real_ring)185
-b(|)353 3625 y(<cln/univpoly_real.h>)g(|)1546 3729 y(|)735
-3833 y(+----------------+)735 3936 y(|)763 b(|)258 4040
-y(Rational)45 b(polynomial)g(ring)142 b(|)258 4144 y
-(cl_univpoly_rational_ri)o(ng)89 b(|)258 4248 y
-(<cln/univpoly_rational.)o(h>)g(|)1546 4352 y(|)735 4455
-y(+----------------+)735 4559 y(|)258 4663 y(Integer)46
-b(polynomial)f(ring)258 4767 y(cl_univpoly_integer_rin)o(g)258
-4870 y(<cln/univpoly_integer.h)o(>)-30 5004 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)1117 5132 y Fp(Univariate)45 b(polynomial)1451
-5236 y(cl_UP)1260 5340 y(<cln/univpoly.h>)p eop
-%%Page: 39 41
-39 40 bop -30 -116 a Fr(Chapter)30 b(9:)41 b(Univ)-5
-b(ariate)32 b(p)s(olynomials)2483 b(39)1546 299 y Fp(|)735
-403 y(+----------------+------)o(----)o(----)o(---)o(--+)735
-506 y(|)763 b(|)907 b(|)353 610 y(Complex)46 b(polynomial)331
-b(|)286 b(Modular)46 b(integer)g(polynomial)592 714 y(cl_UP_N)618
-b(|)764 b(cl_UP_MI)258 818 y(<cln/univpoly_complex.h)o(>)137
-b(|)382 b(<cln/univpoly_modint.h>)1546 922 y(|)735 1025
-y(+----------------+)735 1129 y(|)763 b(|)449 1233 y(Real)46
-b(polynomial)379 b(|)592 1337 y(cl_UP_R)618 b(|)305 1440
-y(<cln/univpoly_real.h>)233 b(|)1546 1544 y(|)735 1648
-y(+----------------+)735 1752 y(|)763 b(|)353 1856 y(Rational)46
-b(polynomial)283 b(|)592 1959 y(cl_UP_RA)570 b(|)258
-2063 y(<cln/univpoly_rational.)o(h>)89 b(|)1546 2167
-y(|)735 2271 y(+----------------+)735 2374 y(|)353 2478
-y(Integer)46 b(polynomial)592 2582 y(cl_UP_I)258 2686
-y(<cln/univpoly_integer.h)o(>)-30 3545 y Fr(Univ)-5 b(ariate)32
-b(p)s(olynomial)d(rings)h(are)h(constructed)g(using)f(the)g(functions)
--30 4792 y Fp(cl_univpoly_ring)c(find_univpoly_ring)f(\(const)k
-(cl_ring&)f(R\))-30 4902 y(cl_univpoly_ring)e(find_univpoly_ring)f
-(\(const)k(cl_ring&)f(R,)i(const)f(cl_symbol&)e(varname\))450
-5011 y Fr(This)40 b(function)h(returns)f(the)h(p)s(olynomial)g(ring)g
-(`)p Fp(R[X])p Fr(',)i(unnamed)c(or)i(named.)71 b Fp(R)41
-b Fr(ma)m(y)g(b)s(e)f(an)450 5121 y(arbitrary)f(ring.)68
-b(This)39 b(function)g(tak)m(es)i(care)f(of)g(\014nding)e(out)h(ab)s
-(out)h(sp)s(ecial)g(cases)g(of)g Fp(R)p Fr(,)h(suc)m(h)450
-5230 y(as)33 b(the)g(rings)g(of)g(complex)f(n)m(um)m(b)s(ers,)g(real)h
-(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)450 5340 y(in)m(teger)i(rings.)48 b(There)33
-b(is)g(a)h(cac)m(he)g(table)g(of)g(rings,)f(indexed)g(b)m(y)g
-Fp(R)g Fr(and)f Fp(varname)p Fr(.)48 b(This)32 b(ensures)p
-eop
-%%Page: 40 42
-40 41 bop -30 -116 a Fr(Chapter)30 b(9:)41 b(Univ)-5
-b(ariate)32 b(p)s(olynomials)2483 b(40)450 299 y(that)28
-b(t)m(w)m(o)i(calls)f(of)e(this)h(function)g(with)f(the)h(same)f
-(argumen)m(ts)h(will)g(return)e(the)i(same)g(p)s(olynomial)450
-408 y(ring.)-30 547 y Fp(cl_univpoly_complex_ring)c(find_univpoly_ring)
-h(\(const)k(cl_complex_ring&)d(R\))-30 657 y(cl_univpoly_complex_ring)e
-(find_univpoly_ring)h(\(const)k(cl_complex_ring&)d(R,)j(const)-30
-766 y(cl_symbol&)f(varname\))-30 876 y(cl_univpoly_real_ring)d
-(find_univpoly_ring)g(\(const)k(cl_real_ring&)d(R\))-30
-986 y(cl_univpoly_real_ring)f(find_univpoly_ring)g(\(const)k
-(cl_real_ring&)d(R,)k(const)f(cl_symbol&)-30 1095 y(varname\))-30
-1205 y(cl_univpoly_rational_rin)o(g)24 b(find_univpoly_ring)i(\(const)j
-(cl_rational_ring&)c(R\))-30 1314 y(cl_univpoly_rational_rin)o(g)f
-(find_univpoly_ring)i(\(const)j(cl_rational_ring&)c(R,)30
-b(const)-30 1424 y(cl_symbol&)e(varname\))-30 1533 y
-(cl_univpoly_integer_ring)c(find_univpoly_ring)h(\(const)k
-(cl_integer_ring&)d(R\))-30 1643 y(cl_univpoly_integer_ring)e
-(find_univpoly_ring)h(\(const)k(cl_integer_ring&)d(R,)j(const)-30
-1753 y(cl_symbol&)f(varname\))-30 1862 y(cl_univpoly_modint_ring)c
-(find_univpoly_ring)h(\(const)k(cl_modint_ring&)d(R\))-30
-1972 y(cl_univpoly_modint_ring)e(find_univpoly_ring)h(\(const)k
-(cl_modint_ring&)d(R,)k(const)f(cl_symbol&)-30 2081 y(varname\))450
-2191 y Fr(These)24 b(functions)g(are)h(equiv)-5 b(alen)m(t)26
-b(to)g(the)e(general)i Fp(find_univpoly_ring)p Fr(,)21
-b(only)k(the)f(return)g(t)m(yp)s(e)450 2301 y(is)30 b(more)g(sp)s
-(eci\014c,)g(according)i(to)f(the)f(base)h(ring's)f(t)m(yp)s(e.)-30
-2579 y Fs(9.2)68 b(F)-11 b(unctions)44 b(on)h(univ)-7
-b(ariate)46 b(p)t(olynomials)-30 2780 y Fr(Giv)m(en)31
-b(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.)-30
-2952 y Fp(cl_ring)e(R->basering\(\))450 3061 y Fr(This)i(returns)f(the)
-h(base)h(ring,)f(as)h(passed)f(to)h(`)p Fp(find_univpoly_ring)p
-Fr('.)-30 3229 y Fp(cl_UP)e(R->zero\(\))450 3339 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.)-30
-3506 y Fp(cl_UP)e(R->one\(\))450 3616 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.)-30 3784 y Fp(cl_UP)f(R->canonhom)e(\(const)i(cl_I&)g
-(x\))450 3893 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.)-30 4061
-y Fp(cl_UP)f(R->monomial)e(\(const)i(cl_ring_element&)d(x,)k(uintL)f
-(e\))450 4171 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.)-30 4339 y Fp(cl_UP)f(R->create)f(\(sintL)g(degree\))
-450 4448 y Fr(Creates)d(a)f(new)f(p)s(olynomial)g(with)h(a)g(giv)m(en)h
-(degree.)39 b(The)24 b(zero)g(p)s(olynomial)g(has)f(degree)i
-Fp(-1)p Fr(.)38 b(After)450 4558 y(creating)26 b(the)f(p)s(olynomial,)g
-(y)m(ou)g(should)e(put)h(in)g(the)h(co)s(e\016cien)m(ts,)j(using)c(the)
-h Fp(set_coeff)d Fr(mem)m(b)s(er)450 4667 y(function,)30
-b(and)g(then)g(call)i(the)e Fp(finalize)f Fr(mem)m(b)s(er)e(function.)
--30 4839 y(The)j(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.)-30
-5011 y Fp(void)e(set_coeff)f(\(cl_UP&)g(x,)i(uintL)f(index,)g(const)g
-(cl_ring_element&)d(y\))450 5121 y Fr(This)32 b(c)m(hanges)i(the)f(co)s
-(e\016cien)m(t)i(of)e Fp(X^index)e Fr(in)i Fp(x)g Fr(to)g(b)s(e)g
-Fp(y)p Fr(.)48 b(After)33 b(c)m(hanging)h(a)f(p)s(olynomial)g(and)450
-5230 y(b)s(efore)40 b(applying)h(an)m(y)g Fp(")p Fr(normal)p
-Fp(")e Fr(op)s(eration)i(on)g(it,)j(y)m(ou)d(should)f(call)i(its)f
-Fp(finalize)e Fr(mem)m(b)s(er)450 5340 y(function.)p
-eop
-%%Page: 41 43
-41 42 bop -30 -116 a Fr(Chapter)30 b(9:)41 b(Univ)-5
-b(ariate)32 b(p)s(olynomials)2483 b(41)-30 299 y Fp(void)29
-b(finalize)f(\(cl_UP&)h(x\))450 408 y Fr(This)j(function)h(marks)f(the)
-h(endp)s(oin)m(t)f(of)i(destructiv)m(e)g(mo)s(di\014cations)e(of)h(a)h
-(p)s(olynomial.)48 b(It)33 b(nor-)450 518 y(malizes)c(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)e(o)m(v)m(erhead.)450 628 y(Doing)f(normal)e
-(computations)g(on)h(unnormalized)f(p)s(olynomials)g(ma)m(y)g(pro)s
-(duce)g(wrong)g(results)h(or)450 737 y(crash)k(the)h(program.)-30
-887 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.)-30 1036 y Fp(cl_univpoly_ring)26
-b(x.ring)j(\(\))450 1146 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.)-30
-1295 y Fp(cl_UP)f(operator+)f(\(const)g(cl_UP&,)h(const)g(cl_UP&\))450
-1405 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.)-30 1554 y Fp(cl_UP)e(operator-)f
-(\(const)g(cl_UP&,)h(const)g(cl_UP&\))450 1664 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.)-30 1813 y Fp(cl_UP)e(operator-)f(\(const)g(cl_UP&\))
-450 1923 y Fr(Returns)h(the)i(negativ)m(e)i(of)d(a)h(univ)-5
-b(ariate)31 b(p)s(olynomial.)-30 2072 y Fp(cl_UP)e(operator*)f(\(const)
-g(cl_UP&,)h(const)g(cl_UP&\))450 2182 y Fr(Returns)i(the)i(pro)s(duct)d
-(of)j(t)m(w)m(o)g(univ)-5 b(ariate)33 b(p)s(olynomials.)45
-b(One)32 b(of)g(the)g(argumen)m(ts)g(ma)m(y)f(also)j(b)s(e)450
-2291 y(a)d(plain)f(in)m(teger)i(or)e(an)g(elemen)m(t)h(of)g(the)f(base)
-h(ring.)-30 2441 y Fp(cl_UP)e(square)g(\(const)f(cl_UP&\))450
-2550 y Fr(Returns)h(the)i(square)f(of)h(a)f(univ)-5 b(ariate)31
-b(p)s(olynomial.)-30 2700 y Fp(cl_UP)e(expt_pos)f(\(const)h(cl_UP&)f
-(x,)i(const)f(cl_I&)g(y\))450 2809 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(.)-30 2959
-y Fp(bool)f(operator==)f(\(const)g(cl_UP&,)h(const)g(cl_UP&\))-30
-3068 y(bool)g(operator!=)f(\(const)g(cl_UP&,)h(const)g(cl_UP&\))450
-3178 y Fr(Compares)23 b(t)m(w)m(o)i(univ)-5 b(ariate)25
-b(p)s(olynomials,)g(b)s(elonging)g(to)g(the)f(same)g(univ)-5
-b(ariate)24 b(p)s(olynomial)g(ring,)450 3288 y(for)30
-b(equalit)m(y)-8 b(.)-30 3437 y Fp(cl_boolean)28 b(zerop)h(\(const)f
-(cl_UP&)h(x\))450 3547 y Fr(Returns)g(true)i(if)f Fp(x)g
-Fr(is)g Fp(0)g(in)g(R)p Fr(.)-30 3696 y Fp(sintL)f(degree)g(\(const)f
-(cl_UP&)h(x\))450 3806 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
-Fp(-1)p Fr(.)-30 3955 y Fp(cl_ring_element)26 b(coeff)j(\(const)g
-(cl_UP&)f(x,)i(uintL)f(index\))450 4065 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(.)-30 4214 y Fp(cl_ring_element)c(x)k(\(const)f
-(cl_ring_element&)d(y\))450 4324 y Fr(Ev)-5 b(aluation:)42
-b(If)29 b Fp(x)h Fr(is)h(a)f(p)s(olynomial)g(and)f Fp(y)h
-Fr(b)s(elongs)g(to)h(the)g(base)f(ring,)g(then)g(`)p
-Fp(x\(y\))p Fr(')g(returns)f(the)450 4433 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(.)-30 4583 y Fp(cl_UP)e(deriv)g(\(const)g(cl_UP&)f(x\))450
-4692 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(.)-30 4842 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\).)-30
-4991 y Fp(void)f(fprint)g(\(cl_ostream)e(stream,)i(const)f(cl_UP&)h
-(x\))-30 5101 y(cl_ostream)f(operator<<)f(\(cl_ostream)g(stream,)i
-(const)g(cl_UP&)f(x\))450 5210 y Fr(Prin)m(ts)d(the)f(univ)-5
-b(ariate)26 b(p)s(olynomial)e Fp(x)g Fr(on)h(the)f Fp(stream)p
-Fr(.)38 b(The)24 b(output)g(ma)m(y)g(dep)s(end)f(on)i(the)g(global)450
-5320 y(prin)m(ter)30 b(settings)h(in)f(the)h(v)-5 b(ariable)31
-b Fp(default_print_flags)p Fr(.)p eop
-%%Page: 42 44
-42 43 bop -30 -116 a Fr(Chapter)30 b(9:)41 b(Univ)-5
-b(ariate)32 b(p)s(olynomials)2483 b(42)-30 299 y Fs(9.3)68
-b(Sp)t(ecial)45 b(p)t(olynomials)-30 491 y Fr(The)30
-b(follo)m(wing)i(functions)e(return)f(sp)s(ecial)i(p)s(olynomials.)-30
-651 y Fp(cl_UP_I)d(tschebychev)g(\(sintL)g(n\))450 760
-y Fr(Returns)h(the)i(n-th)f(Cheb)m(yshev)g(p)s(olynomial)f(\(n)h
-Fp(>)p Fr(=)g(0\).)-30 920 y Fp(cl_UP_I)e(hermite)h(\(sintL)f(n\))450
-1029 y Fr(Returns)h(the)i(n-th)f(Hermite)g(p)s(olynomial)g(\(n)g
-Fp(>)p Fr(=)g(0\).)-30 1189 y Fp(cl_UP_RA)e(legendre)g(\(sintL)h(n\))
-450 1298 y Fr(Returns)g(the)i(n-th)f(Legendre)g(p)s(olynomial)g(\(n)g
-Fp(>)p Fr(=)g(0\).)-30 1458 y Fp(cl_UP_I)e(laguerre)h(\(sintL)f(n\))450
-1567 y Fr(Returns)h(the)i(n-th)f(Laguerre)h(p)s(olynomial)e(\(n)h
-Fp(>)p Fr(=)g(0\).)-30 1727 y(Information)e(ho)m(w)h(to)h(deriv)m(e)g
-(the)g(di\013eren)m(tial)g(equation)h(satis\014ed)e(b)m(y)g(eac)m(h)h
-(of)g(these)g(p)s(olynomials)e(from)g(their)-30 1836
-y(de\014nition)i(can)h(b)s(e)e(found)g(in)i(the)f Fp(doc/polynomial/)c
-Fr(directory)-8 b(.)p eop
-%%Page: 43 45
-43 44 bop -30 -116 a Fr(Chapter)30 b(10:)41 b(In)m(ternals)3010
-b(43)-30 299 y Fo(10)80 b(In)l(ternals)-30 651 y Fs(10.1)68
-b(Wh)l(y)45 b(C)p Fg(++)f Fs(?)-30 843 y Fr(Using)31
-b(C)p Fp(++)e Fr(as)i(an)f(implemen)m(tation)g(language)i(pro)m(vides)
-45 977 y Fq(\017)60 b Fr(E\016ciency:)41 b(It)31 b(compiles)f(to)h(mac)
-m(hine)f(co)s(de.)45 1111 y Fq(\017)60 b Fr(P)m(ortabilit)m(y:)49
-b(It)33 b(runs)f(on)h(all)h(platforms)f(supp)s(orting)e(a)j(C)p
-Fp(++)e Fr(compiler.)50 b(Because)34 b(of)g(the)f(a)m(v)-5
-b(ailabilit)m(y)37 b(of)150 1220 y(GNU)j(C)p Fp(++)p
-Fr(,)h(this)f(includes)f(all)h(curren)m(tly)g(used)e(32-bit)j(and)e
-(64-bit)i(platforms,)g(indep)s(enden)m(tly)d(of)i(the)150
-1330 y(qualit)m(y)32 b(of)e(the)h(v)m(endor's)f(C)p Fp(++)f
-Fr(compiler.)45 1464 y Fq(\017)60 b Fr(T)m(yp)s(e)30
-b(safet)m(y:)43 b(The)30 b(C)p Fp(++)g Fr(compilers)g(kno)m(ws)g(ab)s
-(out)h(the)f(n)m(um)m(b)s(er)f(t)m(yp)s(es)h(and)h(complains)f(if,)h
-(for)f(example,)150 1573 y(y)m(ou)44 b(try)f(to)i(assign)f(a)g(\015oat)
-g(to)g(an)g(in)m(teger)h(v)-5 b(ariable.)81 b(Ho)m(w)m(ev)m(er,)50
-b(a)44 b(dra)m(wbac)m(k)g(is)f(that)h(C)p Fp(++)f Fr(do)s(esn't)150
-1683 y(kno)m(w)33 b(ab)s(out)h(generic)g(t)m(yp)s(es,)g(hence)g(a)g
-(restriction)g(lik)m(e)h(that)f Fp(operator+)28 b(\(const)g(cl_MI&,)h
-(const)g(cl_)150 1792 y(MI&\))j 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)150 1902 y(compile-time)c(information.)45
-2036 y Fq(\017)60 b Fr(Algebraic)37 b(syn)m(tax:)52 b(The)35
-b(elemen)m(tary)h(op)s(erations)g Fp(+)p Fr(,)g Fp(-)p
-Fr(,)h Fp(*)p Fr(,)g Fp(=)p Fr(,)g Fp(==)p Fr(,)f(...)57
-b(can)36 b(b)s(e)f(used)f(in)i(in\014x)e(notation,)150
-2145 y(whic)m(h)c(is)h(more)e(con)m(v)m(enien)m(t)k(than)d(Lisp)f
-(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('.)-30 2303 y(With)24 b(these)f(language)h
-(features,)i(there)d(is)g(no)g(need)g(for)f(t)m(w)m(o)j(separate)f
-(languages,)i(one)d(for)g(the)g(implemen)m(tation)-30
-2413 y(of)44 b(the)g(library)f(and)g(one)h(in)g(whic)m(h)f(the)h
-(library's)g(users)f(can)h(program.)79 b(This)43 b(means)g(that)h(a)g
-(protot)m(yp)s(e)-30 2523 y(implemen)m(tation)c(of)g(an)g(algorithm)g
-(can)h(b)s(e)f(in)m(tegrated)h(in)m(to)h(the)e(library)g(immediately)f
-(after)i(it)g(has)f(b)s(een)-30 2632 y(tested)g(and)e(debugged.)65
-b(No)39 b(need)g(to)g(rewrite)g(it)h(in)e(a)h(lo)m(w-lev)m(el)j
-(language)e(after)f(ha)m(ving)g(protot)m(yp)s(ed)g(in)g(a)-30
-2742 y(high-lev)m(el)32 b(language.)-30 2997 y Fs(10.2)68
-b(Memory)45 b(e\016ciency)-30 3189 y Fr(In)30 b(order)g(to)h(sa)m(v)m
-(e)h(memory)c(allo)s(cations,)33 b(CLN)d(implemen)m(ts:)45
-3323 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.)45 3457 y Fq(\017)60 b
-Fr(Garbage)29 b(collection:)42 b(A)28 b(reference)h(coun)m(ting)g(mec)m
-(hanism)d(mak)m(es)i(sure)f(that)i(an)m(y)f(n)m(um)m(b)s(er)d(ob)5
-b(ject's)29 b(stor-)150 3566 y(age)j(is)e(freed)g(immediately)g(when)f
-(the)i(last)g(reference)g(to)g(the)f(ob)5 b(ject)32 b(is)e(gone.)45
-3700 y Fq(\017)60 b Fr(Small)35 b(in)m(tegers)h(are)g(represen)m(ted)f
-(as)h(immediate)e(v)-5 b(alues)36 b(instead)g(of)f(p)s(oin)m(ters)h(to)
-g(heap)f(allo)s(cated)i(stor-)150 3810 y(age.)51 b(This)33
-b(means)f(that)i(in)m(tegers)g Fp(>)d(-2^29)p Fr(,)h
-Fp(<)f(2^29)h Fr(don't)h(consume)f(heap)h(memory)-8 b(,)33
-b(unless)g(they)g(w)m(ere)150 3919 y(explicitly)f(allo)s(cated)g(on)f
-(the)f(heap.)-30 4174 y Fs(10.3)68 b(Sp)t(eed)45 b(e\016ciency)-30
-4366 y Fr(Sp)s(eed)29 b(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:)45 4500 y Fq(\017)60 b Fr(Small)43 b(in)m(tegers,)49
-b(b)s(eing)43 b(represen)m(ted)h(as)g(immediate)f(v)-5
-b(alues,)48 b(don't)43 b(require)h(memory)e(access,)48
-b(just)c(a)150 4610 y(couple)31 b(of)f(instructions)h(for)f(eac)m(h)h
-(elemen)m(tary)g(op)s(eration.)45 4744 y Fq(\017)60 b
-Fr(The)31 b(k)m(ernel)h(of)f(CLN)g(has)g(b)s(een)g(written)g(in)g
-(assem)m(bly)g(language)i(for)e(some)g(CPUs)f(\()p Fp(i386)p
-Fr(,)h Fp(m68k)p Fr(,)g Fp(sparc)p Fr(,)150 4853 y Fp(mips)p
-Fr(,)e Fp(arm)p Fr(\).)45 4987 y Fq(\017)60 b Fr(On)38
-b(all)h(CPUs,)h(CLN)e(ma)m(y)g(b)s(e)g(con\014gured)g(to)h(use)f(the)g
-(sup)s(ere\016cien)m(t)h(lo)m(w-lev)m(el)i(routines)d(from)f(GNU)150
-5097 y(GMP)31 b(v)m(ersion)g(3.)45 5230 y Fq(\017)60
-b Fr(F)-8 b(or)32 b(large)g(n)m(um)m(b)s(ers,)e(CLN)g(uses,)i(instead)f
-(of)h(the)f(standard)f Fp(O\(N^2\))g Fr(algorithm,)i(the)f(Karatsuba)g
-(m)m(ulti-)150 5340 y(plication,)h(whic)m(h)e(is)h(an)f
-Ff(O)s Fr(\()p Ff(N)1217 5307 y Fi(1)p Fj(:)p Fi(6)1307
-5340 y Fr(\))h(algorithm.)p eop
-%%Page: 44 46
-44 45 bop -30 -116 a Fr(Chapter)30 b(10:)41 b(In)m(ternals)3010
-b(44)45 299 y Fq(\017)60 b Fr(F)-8 b(or)50 b(v)m(ery)g(large)g(n)m(um)m
-(b)s(ers)d(\(more)i(than)g(12000)j(decimal)d(digits\),)55
-b(CLN)49 b(uses)g(Sc)m(h\177)-45 b(onhage-Strassen)150
-408 y(m)m(ultiplication,)32 b(whic)m(h)e(is)g(an)g(asymptotically)i
-(optimal)e(m)m(ultiplication)i(algorithm.)45 543 y Fq(\017)60
-b Fr(These)32 b(fast)g(m)m(ultiplication)i(algorithms)e(also)h(giv)m(e)
-g(impro)m(v)m(emen)m(ts)f(in)g(the)g(sp)s(eed)f(of)i(division)f(and)f
-(radix)150 653 y(con)m(v)m(ersion.)-30 910 y Fs(10.4)68
-b(Garbage)46 b(collection)-30 1103 y Fr(All)33 b(the)g(n)m(um)m(b)s(er)
-d(classes)j(are)g(reference)g(coun)m(t)g(classes:)46
-b(They)31 b(only)i(con)m(tain)h(a)f(p)s(oin)m(ter)f(to)h(an)f(ob)5
-b(ject)34 b(in)e(the)-30 1212 y(heap.)40 b(Up)s(on)27
-b(construction,)j(assignmen)m(t)e(and)g(destruction)h(of)f(n)m(um)m(b)s
-(er)e(ob)5 b(jects,)30 b(only)f(the)f(ob)5 b(jects')29
-b(reference)-30 1322 y(coun)m(t)i(are)g(manipulated.)-30
-1456 y(Memory)k(o)s(ccupied)h(b)m(y)f(n)m(um)m(b)s(er)f(ob)5
-b(jects)36 b(are)h(automatically)g(reclaimed)f(as)g(so)s(on)f(as)h
-(their)g(reference)g(coun)m(t)-30 1566 y(drops)29 b(to)i(zero.)-30
-1700 y(F)-8 b(or)34 b(n)m(um)m(b)s(er)e(rings,)i(another)g(strategy)h
-(is)f(implemen)m(ted:)46 b(There)33 b(is)h(a)g(cac)m(he)h(of,)g(for)f
-(example,)g(the)g(mo)s(dular)-30 1810 y(in)m(teger)29
-b(rings.)39 b(A)27 b(mo)s(dular)f(in)m(teger)j(ring)e(is)g(destro)m(y)m
-(ed)h(only)g(if)f(its)h(reference)g(coun)m(t)g(dropp)s(ed)d(to)j(zero)g
-(and)f(the)-30 1919 y(cac)m(he)36 b(is)f(ab)s(out)f(to)h(b)s(e)f
-(resized.)54 b(The)34 b(e\013ect)i(of)e(this)h(strategy)h(is)e(that)h
-(recen)m(tly)h(used)e(rings)g(remain)g(cac)m(hed,)-30
-2029 y(whereas)c(undue)f(memory)f(consumption)h(through)h(cac)m(hed)h
-(rings)f(is)h(a)m(v)m(oided.)p eop
-%%Page: 45 47
-45 46 bop -30 -116 a Fr(Chapter)30 b(11:)41 b(Using)31
-b(the)f(library)2681 b(45)-30 299 y Fo(11)80 b(Using)54
-b(the)f(library)-30 542 y Fr(F)-8 b(or)47 b(the)g(follo)m(wing)g
-(discussion,)j(w)m(e)d(will)g(assume)e(that)h(y)m(ou)h(ha)m(v)m(e)h
-(installed)f(the)f(CLN)g(source)g(in)g Fp($CLN_)-30 652
-y(DIR)41 b Fr(and)g(built)h(it)g(in)g Fp($CLN_TARGETDIR)p
-Fr(.)71 b(F)-8 b(or)43 b(example,)h(for)e(me)f(it's)h
-Fp(CLN_DIR="$HOME/cln")37 b Fr(and)k Fp(CLN_)-30 762
-y(TARGETDIR="$HOME/cln/lin)o(uxel)o(f")p Fr(.)53 b(Y)-8
-b(ou)38 b(migh)m(t)e(de\014ne)g(these)h(as)g(en)m(vironmen)m(t)f(v)-5
-b(ariables,)40 b(or)c(directly)-30 871 y(substitute)30
-b(the)h(appropriate)f(v)-5 b(alues.)-30 1136 y Fs(11.1)68
-b(Compiler)46 b(options)-30 1332 y Fr(Un)m(til)31 b(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:)-30 1470 y(When)f(y)m(ou)h(compile)f(CLN)g
-(application)i(co)s(de,)f(add)e(the)i(\015ags)353 1601
-y Fp(-I$CLN_DIR/include)43 b(-I$CLN_TARGETDIR/include)-30
-1739 y Fr(to)29 b(the)g(C)p Fp(++)e Fr(compiler's)h(command)f(line)h
-(\()p Fp(make)g Fr(v)-5 b(ariable)29 b(CFLA)m(GS)g(or)f(CXXFLA)m(GS\).)
-i(When)e(y)m(ou)h(link)f(CLN)-30 1849 y(application)k(co)s(de)e(to)h
-(form)e(an)i(executable,)h(add)e(the)g(\015ags)353 1980
-y Fp($CLN_TARGETDIR/src/libcln)o(.a)-30 2118 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\).)-30 2256 y(If)62 b(y)m(ou)h(did)f(a)h
-Fp(make)29 b(install)p Fr(,)69 b(the)62 b(include)h(\014les)f(are)h
-(installed)g(in)g(a)f(public)g(directory)h(\(normally)-30
-2365 y Fp(/usr/local/include)p Fr(\),)45 b(hence)g(y)m(ou)h(don't)g
-(need)f(sp)s(ecial)h(\015ags)g(for)f(compiling.)85 b(The)45
-b(library)g(has)h(b)s(een)-30 2475 y(installed)i(to)g(a)f(public)f
-(directory)i(as)f(w)m(ell)h(\(normally)f Fp(/usr/local/lib)p
-Fr(\),)h(hence)f(when)f(linking)h(a)g(CLN)-30 2584 y(application)32
-b(it)f(is)f(su\016cien)m(t)h(to)g(giv)m(e)h(the)e(\015ag)h
-Fp(-lcln)p Fr(.)-30 2850 y Fs(11.2)68 b(Compatibilit)l(y)48
-b(to)d(old)g(CLN)g(v)l(ersions)-30 3045 y Fr(As)39 b(of)h(CLN)f(v)m
-(ersion)h(1.1)h(all)f(non-macro)f(iden)m(ti\014ers)g(w)m(ere)h(hidden)e
-(in)h(namespace)h Fp(cln)e Fr(in)h(order)g(to)h(a)m(v)m(oid)-30
-3155 y(p)s(oten)m(tial)f(name)e(clashes)h(with)f(other)h(C)p
-Fp(++)e Fr(libraries.)62 b(If)37 b(y)m(ou)h(ha)m(v)m(e)h(an)e(old)h
-(application,)j(y)m(ou)d(will)f(ha)m(v)m(e)i(to)-30 3264
-y(man)m(ually)30 b(p)s(ort)g(it)h(to)g(the)f(new)g(sc)m(heme.)41
-b(The)29 b(follo)m(wing)j(principles)e(will)h(help)f(during)f(the)i
-(transition:)45 3402 y Fq(\017)60 b Fr(All)35 b(headers)f(are)h(no)m(w)
-f(in)g(a)h(separate)h(sub)s(directory)-8 b(.)52 b(Instead)34
-b(of)h(including)f Fp(cl_)p Fl(something)8 b Fp(.h)p
-Fr(,)33 b(include)150 3512 y Fp(cln/)p Fl(something)8
-b Fp(.h)28 b Fr(no)m(w.)45 3648 y Fq(\017)60 b Fr(All)25
-b(public)e(iden)m(ti\014ers)i(\(t)m(yp)s(enames)e(and)h(functions\))g
-(ha)m(v)m(e)h(lost)g(their)g Fp(cl_)e Fr(pre\014x.)37
-b(Exceptions)25 b(are)g(all)g(the)150 3757 y(t)m(yp)s(enames)j(of)i(n)m
-(um)m(b)s(er)d(t)m(yp)s(es,)j(\(cl)p 1404 3757 28 4 v
-34 w(N,)f(cl)p 1625 3757 V 34 w(I,)g(cl)p 1811 3757 V
-33 w(MI,)36 b(.)22 b(.)g(.)11 b(\),)30 b(rings,)g(sym)m(b)s(olic)f(t)m
-(yp)s(es)g(\(cl)p 3204 3757 V 34 w(string,)g(cl)p 3585
-3757 V 34 w(sym)m(b)s(ol\))150 3867 y(and)36 b(p)s(olynomials)g(\(cl)p
-950 3867 V 33 w(UP)p 1113 3867 V 33 w Fl(t)m(yp)s(e)5
-b Fr(\).)60 b(\(This)36 b(is)h(b)s(ecause)f(their)h(names)f(w)m(ould)g
-(not)h(b)s(e)f(mnemonic)e(enough)150 3977 y(once)d(the)g(namespace)f
-Fp(cln)f Fr(is)i(imp)s(orted.)39 b(Ev)m(en)30 b(in)g(a)h(namespace)f(w)
-m(e)h(fa)m(v)m(or)g Fp(cl_N)f Fr(o)m(v)m(er)h Fp(N)p
-Fr(.\))45 4113 y Fq(\017)60 b Fr(All)30 b(public)e Fe(functions)37
-b Fr(that)29 b(had)g(b)m(y)g(a)g Fp(cl_)f Fr(in)h(their)g(name)f(still)
-i(carry)e(that)i Fp(cl_)e Fr(if)h(it)h(is)f(in)m(trinsic)g(part)g(of)
-150 4222 y(a)i(t)m(yp)s(ename)e(\(as)i(in)f Fp(cl_I_to_int)e(\(\))p
-Fr(\).)-30 4386 y(When)d(dev)m(eloping)h(other)f(libraries,)h(please)g
-(k)m(eep)f(in)g(mind)e(not)i(to)g(imp)s(ort)f(the)h(namespace)f
-Fp(cln)g Fr(in)h(one)g(of)g(y)m(our)-30 4496 y(public)e(header)g
-(\014les)h(b)m(y)g(sa)m(ying)g Fp(using)29 b(namespace)f(cln;)p
-Fr(.)37 b(This)23 b(w)m(ould)h(propagate)g(to)h(other)f(applications)h
-(and)-30 4605 y(can)31 b(cause)g(name)e(clashes)i(there.)-30
-4871 y Fs(11.3)68 b(Include)45 b(\014les)-30 5066 y Fr(Here)31
-b(is)f(a)h(summary)c(of)k(the)f(include)h(\014les)f(and)g(their)g(con)m
-(ten)m(ts.)-30 5230 y Fp(<cln/object.h>)450 5340 y Fr(General)h
-(de\014nitions,)f(reference)h(coun)m(ting,)h(garbage)f(collection.)p
-eop
-%%Page: 46 48
-46 47 bop -30 -116 a Fr(Chapter)30 b(11:)41 b(Using)31
-b(the)f(library)2681 b(46)-30 299 y Fp(<cln/number.h>)450
-408 y Fr(The)30 b(class)h(cl)p 920 408 28 4 v 33 w(n)m(um)m(b)s(er.)-30
-573 y Fp(<cln/complex.h>)450 682 y Fr(F)-8 b(unctions)31
-b(for)f(class)h(cl)p 1288 682 V 34 w(N,)f(the)h(complex)f(n)m(um)m(b)s
-(ers.)-30 847 y Fp(<cln/real.h>)450 956 y Fr(F)-8 b(unctions)31
-b(for)f(class)h(cl)p 1288 956 V 34 w(R,)f(the)h(real)g(n)m(um)m(b)s
-(ers.)-30 1121 y Fp(<cln/float.h>)450 1230 y Fr(F)-8
-b(unctions)31 b(for)f(class)h(cl)p 1288 1230 V 34 w(F,)f(the)h
-(\015oats.)-30 1395 y Fp(<cln/sfloat.h>)450 1504 y Fr(F)-8
-b(unctions)31 b(for)f(class)h(cl)p 1288 1504 V 34 w(SF,)f(the)h
-(short-\015oats.)-30 1669 y Fp(<cln/ffloat.h>)450 1778
-y Fr(F)-8 b(unctions)31 b(for)f(class)h(cl)p 1288 1778
-V 34 w(FF,)g(the)f(single-\015oats.)-30 1943 y Fp(<cln/dfloat.h>)450
-2052 y Fr(F)-8 b(unctions)31 b(for)f(class)h(cl)p 1288
-2052 V 34 w(DF,)g(the)f(double-\015oats.)-30 2217 y Fp(<cln/lfloat.h>)
-450 2326 y Fr(F)-8 b(unctions)31 b(for)f(class)h(cl)p
-1288 2326 V 34 w(LF,)f(the)h(long-\015oats.)-30 2491
-y Fp(<cln/rational.h>)450 2600 y Fr(F)-8 b(unctions)31
-b(for)f(class)h(cl)p 1288 2600 V 34 w(RA,)f(the)h(rational)g(n)m(um)m
-(b)s(ers.)-30 2765 y Fp(<cln/integer.h>)450 2874 y Fr(F)-8
-b(unctions)31 b(for)f(class)h(cl)p 1288 2874 V 34 w(I,)f(the)h(in)m
-(tegers.)-30 3039 y Fp(<cln/io.h>)450 3148 y Fr(Input/Output.)-30
-3313 y Fp(<cln/complex_io.h>)450 3422 y Fr(Input/Output)d(for)j(class)g
-(cl)p 1461 3422 V 33 w(N,)g(the)f(complex)g(n)m(um)m(b)s(ers.)-30
-3587 y Fp(<cln/real_io.h>)450 3696 y Fr(Input/Output)e(for)j(class)g
-(cl)p 1461 3696 V 33 w(R,)g(the)f(real)h(n)m(um)m(b)s(ers.)-30
-3861 y Fp(<cln/float_io.h>)450 3970 y Fr(Input/Output)d(for)j(class)g
-(cl)p 1461 3970 V 33 w(F,)g(the)g(\015oats.)-30 4134
-y Fp(<cln/sfloat_io.h>)450 4244 y Fr(Input/Output)d(for)j(class)g(cl)p
-1461 4244 V 33 w(SF,)f(the)h(short-\015oats.)-30 4408
-y Fp(<cln/ffloat_io.h>)450 4518 y Fr(Input/Output)d(for)j(class)g(cl)p
-1461 4518 V 33 w(FF,)g(the)g(single-\015oats.)-30 4682
-y Fp(<cln/dfloat_io.h>)450 4792 y Fr(Input/Output)d(for)j(class)g(cl)p
-1461 4792 V 33 w(DF,)g(the)g(double-\015oats.)-30 4956
-y Fp(<cln/lfloat_io.h>)450 5066 y Fr(Input/Output)d(for)j(class)g(cl)p
-1461 5066 V 33 w(LF,)g(the)f(long-\015oats.)-30 5230
-y Fp(<cln/rational_io.h>)450 5340 y Fr(Input/Output)e(for)j(class)g(cl)
-p 1461 5340 V 33 w(RA,)g(the)f(rational)i(n)m(um)m(b)s(ers.)p
-eop
-%%Page: 47 49
-47 48 bop -30 -116 a Fr(Chapter)30 b(11:)41 b(Using)31
-b(the)f(library)2681 b(47)-30 299 y Fp(<cln/integer_io.h>)450
-408 y Fr(Input/Output)28 b(for)j(class)g(cl)p 1461 408
-28 4 v 33 w(I,)f(the)h(in)m(tegers.)-30 573 y Fp(<cln/input.h>)450
-682 y Fr(Flags)h(for)e(customizing)g(input)g(op)s(erations.)-30
-847 y Fp(<cln/output.h>)450 956 y Fr(Flags)i(for)e(customizing)g
-(output)g(op)s(erations.)-30 1121 y Fp(<cln/malloc.h>)450
-1230 y(malloc_hook)p Fr(,)e Fp(free_hook)p Fr(.)-30 1395
-y Fp(<cln/abort.h>)450 1504 y(cl_abort)p Fr(.)-30 1669
-y Fp(<cln/condition.h>)450 1778 y Fr(Conditions/exceptions.)-30
-1943 y Fp(<cln/string.h>)450 2052 y Fr(Strings.)-30 2217
-y Fp(<cln/symbol.h>)450 2326 y Fr(Sym)m(b)s(ols.)-30
-2491 y Fp(<cln/proplist.h>)450 2600 y Fr(Prop)s(ert)m(y)i(lists.)-30
-2765 y Fp(<cln/ring.h>)450 2874 y Fr(General)h(rings.)-30
-3039 y Fp(<cln/null_ring.h>)450 3148 y Fr(The)f(n)m(ull)g(ring.)-30
-3313 y Fp(<cln/complex_ring.h>)450 3422 y Fr(The)g(ring)g(of)h(complex)
-f(n)m(um)m(b)s(ers.)-30 3587 y Fp(<cln/real_ring.h>)450
-3696 y Fr(The)g(ring)g(of)h(real)g(n)m(um)m(b)s(ers.)-30
-3861 y Fp(<cln/rational_ring.h>)450 3970 y Fr(The)f(ring)g(of)h
-(rational)g(n)m(um)m(b)s(ers.)-30 4134 y Fp(<cln/integer_ring.h>)450
-4244 y Fr(The)f(ring)g(of)h(in)m(tegers.)-30 4408 y Fp
-(<cln/numtheory.h>)450 4518 y Fr(Num)m(b)s(er)d(threory)i(functions.)
--30 4682 y Fp(<cln/modinteger.h>)450 4792 y Fr(Mo)s(dular)g(in)m
-(tegers.)-30 4956 y Fp(<cln/V.h>)450 5066 y Fr(V)-8 b(ectors.)-30
-5230 y Fp(<cln/GV.h>)450 5340 y Fr(General)31 b(v)m(ectors.)p
-eop
-%%Page: 48 50
-48 49 bop -30 -116 a Fr(Chapter)30 b(11:)41 b(Using)31
-b(the)f(library)2681 b(48)-30 299 y Fp(<cln/GV_number.h>)450
-408 y Fr(General)31 b(v)m(ectors)h(o)m(v)m(er)g(cl)p
-1363 408 28 4 v 33 w(n)m(um)m(b)s(er.)-30 573 y Fp(<cln/GV_complex.h>)
-450 682 y Fr(General)f(v)m(ectors)h(o)m(v)m(er)g(cl)p
-1363 682 V 33 w(N.)-30 847 y Fp(<cln/GV_real.h>)450 956
-y Fr(General)f(v)m(ectors)h(o)m(v)m(er)g(cl)p 1363 956
-V 33 w(R.)-30 1121 y Fp(<cln/GV_rational.h>)450 1230
-y Fr(General)f(v)m(ectors)h(o)m(v)m(er)g(cl)p 1363 1230
-V 33 w(RA.)-30 1395 y Fp(<cln/GV_integer.h>)450 1504
-y Fr(General)f(v)m(ectors)h(o)m(v)m(er)g(cl)p 1363 1504
-V 33 w(I.)-30 1669 y Fp(<cln/GV_modinteger.h>)450 1778
-y Fr(General)f(v)m(ectors)h(of)f(mo)s(dular)d(in)m(tegers.)-30
-1943 y Fp(<cln/SV.h>)450 2052 y Fr(Simple)h(v)m(ectors.)-30
-2217 y Fp(<cln/SV_number.h>)450 2326 y Fr(Simple)g(v)m(ectors)j(o)m(v)m
-(er)g(cl)p 1322 2326 V 33 w(n)m(um)m(b)s(er.)-30 2491
-y Fp(<cln/SV_complex.h>)450 2600 y Fr(Simple)d(v)m(ectors)j(o)m(v)m(er)
-g(cl)p 1322 2600 V 33 w(N.)-30 2765 y Fp(<cln/SV_real.h>)450
-2874 y Fr(Simple)d(v)m(ectors)j(o)m(v)m(er)g(cl)p 1322
-2874 V 33 w(R.)-30 3039 y Fp(<cln/SV_rational.h>)450
-3148 y Fr(Simple)d(v)m(ectors)j(o)m(v)m(er)g(cl)p 1322
-3148 V 33 w(RA.)-30 3313 y Fp(<cln/SV_integer.h>)450
-3422 y Fr(Simple)d(v)m(ectors)j(o)m(v)m(er)g(cl)p 1322
-3422 V 33 w(I.)-30 3587 y Fp(<cln/SV_ringelt.h>)450 3696
-y Fr(Simple)d(v)m(ectors)j(of)e(general)i(ring)e(elemen)m(ts.)-30
-3861 y Fp(<cln/univpoly.h>)450 3970 y Fr(Univ)-5 b(ariate)32
-b(p)s(olynomials.)-30 4134 y Fp(<cln/univpoly_integer.h>)450
-4244 y Fr(Univ)-5 b(ariate)32 b(p)s(olynomials)d(o)m(v)m(er)j(the)f(in)
-m(tegers.)-30 4408 y Fp(<cln/univpoly_rational.h)o(>)450
-4518 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.)-30 4682 y Fp(<cln/univpoly_real.h>)450
-4792 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.)-30 4956 y Fp(<cln/univpoly_complex.h>)450
-5066 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.)-30 5230 y Fp(<cln/univpoly_modint.h>)450
-5340 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.)p eop
-%%Page: 49 51
-49 50 bop -30 -116 a Fr(Chapter)30 b(11:)41 b(Using)31
-b(the)f(library)2681 b(49)-30 299 y Fp(<cln/timing.h>)450
-408 y Fr(Timing)29 b(facilities.)-30 576 y Fp(<cln/cln.h>)450
-686 y Fr(Includes)h(all)h(of)f(the)h(ab)s(o)m(v)m(e.)-30
-965 y Fs(11.4)68 b(An)44 b(Example)-30 1166 y Fr(A)30
-b(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.)210
-1303 y Fp(#include)46 b(<cln/integer.h>)210 1407 y(#include)g
-(<cln/real.h>)210 1511 y(using)g(namespace)g(cln;)210
-1718 y(//)h(Returns)f(F_n,)h(computed)e(as)i(the)g(nearest)f(integer)g
-(to)210 1822 y(//)h(\(\(1+sqrt\(5\)\)/2\)^n/sqrt\(5\))o(.)42
-b(Assume)k(n>=0.)210 1926 y(const)g(cl_I)h(fibonacci)e(\(int)i(n\))210
-2030 y({)592 2133 y(//)g(Need)g(a)g(precision)e(of)j
-(\(\(1+sqrt\(5\)\)/2\)^-n.)592 2237 y(cl_float_format_t)43
-b(prec)k(=)g(cl_float_format\(\(int\)\(0.)o(2089)o(8764)o(1*n)o(+5\)\))
-o(;)592 2341 y(cl_R)f(sqrt5)h(=)g(sqrt\(cl_float\(5,prec\)\);)592
-2445 y(cl_R)f(phi)h(=)h(\(1+sqrt5\)/2;)592 2548 y(return)e(round1\()g
-(expt\(phi,n\)/sqrt5)d(\);)210 2652 y(})-30 2795 y Fr(Let's)31
-b(explain)g(what)f(is)g(going)i(on)e(in)g(detail.)-30
-2938 y(The)k(include)h(\014le)f Fp(<cln/integer.h>)d
-Fr(is)j(necessary)h(b)s(ecause)g(the)g(t)m(yp)s(e)g Fp(cl_I)e
-Fr(is)i(used)f(in)g(the)h(function,)h(and)-30 3048 y(the)31
-b(include)g(\014le)g Fp(<cln/real.h>)c Fr(is)k(needed)g(for)f(the)i(t)m
-(yp)s(e)f Fp(cl_R)e Fr(and)i(the)g(\015oating)h(p)s(oin)m(t)f(n)m(um)m
-(b)s(er)d(functions.)-30 3157 y(The)37 b(order)g(of)h(the)f(include)h
-(\014les)f(do)s(es)g(not)h(matter.)62 b(In)37 b(order)g(not)h(to)g
-(write)g(out)g Fp(cln::)p Fl(fo)s(o)i Fr(w)m(e)e(can)g(safely)-30
-3267 y(imp)s(ort)29 b(the)h(whole)h(namespace)f Fp(cln)p
-Fr(.)-30 3410 y(Then)23 b(comes)i(the)f(function)h(declaration.)40
-b(The)24 b(argumen)m(t)g(is)g(an)h Fp(int)p Fr(,)g(the)f(result)h(an)f
-(in)m(teger.)40 b(The)24 b(return)g(t)m(yp)s(e)-30 3520
-y(is)33 b(de\014ned)e(as)i(`)p Fp(const)c(cl_I)p Fr(',)j(not)h(simply)e
-(`)p Fp(cl_I)p Fr(',)i(b)s(ecause)f(that)h(allo)m(ws)h(the)f(compiler)f
-(to)h(detect)h(t)m(yp)s(os)f(lik)m(e)-30 3629 y(`)p Fp(fibonacci\(n\))
-27 b(=)j(100)p Fr('.)40 b(It)29 b(w)m(ould)f(b)s(e)h(p)s(ossible)f(to)i
-(declare)f(the)h(return)d(t)m(yp)s(e)i(as)g Fp(const)g(cl_R)f
-Fr(\(real)i(n)m(um)m(b)s(er\))-30 3739 y(or)36 b(ev)m(en)g
-Fp(const)29 b(cl_N)35 b Fr(\(complex)h(n)m(um)m(b)s(er\).)55
-b(W)-8 b(e)37 b(use)f(the)g(most)f(sp)s(ecialized)i(p)s(ossible)e
-(return)g(t)m(yp)s(e)h(b)s(ecause)-30 3848 y(functions)26
-b(whic)m(h)g(call)h(`)p Fp(fibonacci)p Fr(')d(will)j(b)s(e)e(able)i(to)
-g(pro\014t)f(from)e(the)j(compiler's)f(t)m(yp)s(e)g(analysis:)39
-b(Adding)26 b(t)m(w)m(o)-30 3958 y(in)m(tegers)g(is)e(sligh)m(tly)i
-(more)e(e\016cien)m(t)i(than)e(adding)g(the)h(same)f(ob)5
-b(jects)25 b(declared)g(as)g(complex)f(n)m(um)m(b)s(ers,)g(b)s(ecause)
--30 4068 y(it)34 b(needs)f(less)h(t)m(yp)s(e)f(dispatc)m(h.)51
-b(Also,)35 b(when)d(linking)i(to)g(CLN)f(as)h(a)g(non-shared)e(library)
--8 b(,)35 b(this)e(minimizes)f(the)-30 4177 y(size)f(of)g(the)f
-(resulting)h(executable)h(program.)-30 4320 y(The)f(result)g(will)h(b)s
-(e)f(computed)f(as)i(expt\(phi,n\)/sqrt\(5\),)h(rounded)d(to)j(the)e
-(nearest)h(in)m(teger.)46 b(In)31 b(order)g(to)h(get)-30
-4430 y(a)c(correct)h(result,)g(the)f(absolute)h(error)e(should)g(b)s(e)
-g(less)i(than)e(1/2,)j(i.e.)41 b(the)28 b(relativ)m(e)i(error)e(should)
-f(b)s(e)g(less)h(than)-30 4539 y(sqrt\(5\)/\(2*expt\(phi,n\)\).)65
-b(T)-8 b(o)38 b(this)g(end,)h(the)e(\014rst)g(line)h(computes)f(a)h
-(\015oating)g(p)s(oin)m(t)g(precision)g(for)f(sqrt\(5\))-30
-4649 y(and)30 b(phi.)-30 4792 y(Then)41 b(sqrt\(5\))h(is)g(computed)e
-(b)m(y)i(\014rst)e(con)m(v)m(erting)k(the)e(in)m(teger)h(5)f(to)g(a)g
-(\015oating)g(p)s(oin)m(t)g(n)m(um)m(b)s(er)d(and)i(than)-30
-4902 y(taking)i(the)f(square)g(ro)s(ot.)76 b(The)42 b(con)m(v)m(erse,)k
-(\014rst)c(taking)h(the)f(square)g(ro)s(ot)g(of)g(5,)k(and)c(then)f
-(con)m(v)m(erting)j(to)-30 5011 y(the)c(desired)f(precision,)j(w)m
-(ould)e(not)g(w)m(ork)f(in)h(CLN:)f(The)g(square)h(ro)s(ot)g(w)m(ould)f
-(b)s(e)g(computed)f(to)j(a)f(default)-30 5121 y(precision)g(\(normally)
-f(single-\015oat)j(precision\),)h(and)c(the)h(follo)m(wing)i(con)m(v)m
-(ersion)f(could)f(not)g(help)f(ab)s(out)h(the)-30 5230
-y(lac)m(king)h(accuracy)-8 b(.)68 b(This)39 b(is)g(b)s(ecause)g(CLN)g
-(is)g(not)g(a)g(sym)m(b)s(olic)g(computer)f(algebra)i(system)e(and)h
-(do)s(es)g(not)-30 5340 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(.)p eop
-%%Page: 50 52
-50 51 bop -30 -116 a Fr(Chapter)30 b(11:)41 b(Using)31
-b(the)f(library)2681 b(50)-30 299 y(The)29 b(t)m(yp)s(e)i
-Fp(cl_R)d Fr(for)i(sqrt5)g(and,)g(in)g(the)g(follo)m(wing)h(line,)g
-(phi)e(is)h(the)h(only)f(p)s(ossible)f(c)m(hoice.)43
-b(Y)-8 b(ou)30 b(cannot)h(write)-30 408 y Fp(cl_F)26
-b Fr(b)s(ecause)h(the)g(C)p Fp(++)g Fr(compiler)f(can)i(only)f(infer)g
-(that)g Fp(cl_float\(5,prec\))c Fr(is)k(a)h(real)f(n)m(um)m(b)s(er.)38
-b(Y)-8 b(ou)27 b(cannot)-30 518 y(write)k 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.)-30 651 y(When)21 b(the)g(function)g
-(returns,)h(all)g(the)f(lo)s(cal)h(v)-5 b(ariables)22
-b(in)f(the)g(function)g(are)g(automatically)i(reclaimed)e(\(garbage)-30
-761 y(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.)-30 894 y(The)d(\014le)h
-Fp(fibonacci.cc)c Fr(in)j(the)h(sub)s(directory)e Fp(examples)f
-Fr(con)m(tains)k(this)f(implemen)m(tation)f(together)i(with)e(an)-30
-1003 y(ev)m(en)j(faster)g(algorithm.)-30 1257 y Fs(11.5)68
-b(Debugging)46 b(supp)t(ort)-30 1448 y Fr(When)30 b(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:)45
-1581 y Fq(\017)60 b Fr(The)36 b(library)g(do)s(es)g(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)f
-(man)m(y)f(places.)60 b(When)36 b(one)h(of)150 1691 y(these)44
-b(fails,)j(the)c(function)g Fp(cl_abort\(\))e Fr(is)i(called.)81
-b(Its)43 b(default)g(implemen)m(tation)g(is)g(to)h(p)s(erform)d(an)150
-1800 y Fp(exit\(1\))p Fr(,)32 b(so)i(y)m(ou)g(w)m(on't)g(ha)m(v)m(e)h
-(a)f(core)g(dump.)47 b(But)34 b(for)f(debugging,)h(it)g(is)g(b)s(est)f
-(to)h(set)g(a)g(breakp)s(oin)m(t)f(at)150 1910 y(this)d(function:)390
-2037 y Fp(\(gdb\))46 b(break)h(cl_abort)150 2170 y Fr(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:)390 2298 y Fp(\(gdb\))46 b(where)45
-2431 y Fq(\017)60 b Fr(The)32 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)150 2540 y(mostly)j(useless)g
-(hexadecimal)h(addresses.)58 b(CLN)35 b(o\013ers)i(a)g(function)f
-Fp(cl_print)p Fr(,)f(callable)k(from)34 b(the)j(de-)150
-2650 y(bugger,)29 b(for)f(prin)m(ting)g(n)m(um)m(b)s(er)d(ob)5
-b(jects.)41 b(In)28 b(order)f(to)i(get)g(this)f(function,)h(y)m(ou)f
-(ha)m(v)m(e)i(to)f(de\014ne)e(the)h(macro)150 2760 y(`)p
-Fp(CL_DEBUG)p Fr(')21 b(and)h(then)g(include)g(all)i(the)f(header)f
-(\014les)h(for)f(whic)m(h)g(y)m(ou)h(w)m(an)m(t)h Fp(cl_print)c
-Fr(debugging)i(supp)s(ort.)150 2869 y(F)-8 b(or)31 b(example:)390
-2996 y Fp(#define)46 b(CL_DEBUG)390 3100 y(#include)g(<cln/string.h>)
-150 3233 y Fr(No)m(w,)30 b(if)e(y)m(ou)g(ha)m(v)m(e)i(in)d(y)m(our)h
-(program)f(a)i(v)-5 b(ariable)29 b Fp(cl_string)f(s)p
-Fr(,)g(and)g(insp)s(ect)g(it)g(under)f Fp(gdb)p Fr(,)h(the)g(output)150
-3343 y(ma)m(y)i(lo)s(ok)h(lik)m(e)h(this:)390 3470 y
-Fp(\(gdb\))46 b(print)h(s)390 3574 y($7)g(=)h({<cl_gcpointer>)43
-b(=)48 b({)f(=)h({pointer)d(=)j(0x8055b60,)d(heappointer)f(=)k
-(0x8055b60,)485 3678 y(word)f(=)h(134568800}},)c(})390
-3782 y(\(gdb\))i(call)h(cl_print\(s\))390 3885 y(\(cl_string\))e("")390
-3989 y($8)i(=)h(134568800)150 4122 y Fr(Note)38 b(that)f(the)g(output)f
-(of)h Fp(cl_print)d Fr(go)s(es)j(to)g(the)g(program's)f(error)g
-(output,)i(not)e(to)i(gdb's)e(standard)150 4232 y(output.)150
-4365 y(Note,)43 b(ho)m(w)m(ev)m(er,)f(that)d(the)g(ab)s(o)m(v)m(e)i
-(facilit)m(y)f(do)s(es)f(not)g(w)m(ork)g(with)f(all)i(CLN)f(t)m(yp)s
-(es,)i(only)e(with)f(n)m(um)m(b)s(er)150 4475 y(ob)5
-b(jects)27 b(and)e(similar.)38 b(Therefore)26 b(CLN)f(o\013ers)i(a)f
-(mem)m(b)s(er)d(function)j Fp(debug_print\(\))c Fr(on)j(all)i(CLN)f(t)m
-(yp)s(es.)150 4584 y(The)h(same)g(macro)g(`)p Fp(CL_DEBUG)p
-Fr(')f(is)h(needed)h(for)f(this)g(mem)m(b)s(er)e(function)i(to)i(b)s(e)
-e(implemen)m(ted.)38 b(Under)27 b Fp(gdb)p Fr(,)150 4694
-y(y)m(ou)k(call)g(it)g(lik)m(e)h(this:)390 4821 y Fp(\(gdb\))46
-b(print)h(s)390 4925 y($7)g(=)h({<cl_gcpointer>)43 b(=)48
-b({)f(=)h({pointer)d(=)j(0x8055b60,)d(heappointer)f(=)k(0x8055b60,)485
-5029 y(word)f(=)h(134568800}},)c(})390 5132 y(\(gdb\))i(call)h
-(s.debug_print\(\))390 5236 y(\(cl_string\))e("")390
-5340 y(\(gdb\))h(define)g(cprint)p eop
-%%Page: 51 53
-51 52 bop -30 -116 a Fr(Chapter)30 b(11:)41 b(Using)31
-b(the)f(library)2681 b(51)390 299 y Fp(>call)46 b
-(\($1\).debug_print\(\))390 403 y(>end)390 506 y(\(gdb\))g(cprint)g(s)
-390 610 y(\(cl_string\))f("")150 745 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: 52 54
-52 53 bop -30 -116 a Fr(Chapter)30 b(12:)41 b(Customizing)2863
-b(52)-30 299 y Fo(12)80 b(Customizing)-30 656 y Fs(12.1)68
-b(Error)46 b(handling)-30 848 y Fr(When)30 b(a)h(fatal)g(error)f(o)s
-(ccurs,)g(an)g(error)g(message)g(is)g(output)g(to)h(the)f(standard)g
-(error)g(output)f(stream,)h(and)g(the)-30 958 y(function)c
-Fp(cl_abort)e Fr(is)i(called.)41 b(The)26 b(default)g(v)m(ersion)h(of)g
-(this)f(function)g(\(pro)m(vided)g(in)g(the)h(library\))f(terminates)
--30 1068 y(the)i(application.)41 b(T)-8 b(o)29 b(catc)m(h)h(suc)m(h)d
-(a)i(fatal)g(error,)f(y)m(ou)h(need)e(to)i(de\014ne)f(the)g(function)f
-Fp(cl_abort)f Fr(y)m(ourself,)j(with)-30 1177 y(the)i(protot)m(yp)s(e)
-210 1306 y Fp(#include)46 b(<cln/abort.h>)210 1410 y(void)h(cl_abort)e
-(\(void\);)-30 1544 y Fr(This)30 b(function)g(m)m(ust)f(not)i(return)e
-(con)m(trol)j(to)f(its)f(caller.)-30 1802 y Fs(12.2)68
-b(Floating-p)t(oin)l(t)47 b(under\015o)l(w)-30 1994 y
-Fr(Floating)32 b(p)s(oin)m(t)e(under\015o)m(w)e(denotes)j(the)f
-(situation)h(when)e(a)h(\015oating-p)s(oin)m(t)h(n)m(um)m(b)s(er)d(is)i
-(to)h(b)s(e)e(created)i(whic)m(h)-30 2104 y(is)k(so)g(close)g(to)h
-Fp(0)e Fr(that)h(its)g(exp)s(onen)m(t)g(is)g(to)s(o)g(lo)m(w)g(to)h(b)s
-(e)e(represen)m(ted)g(in)m(ternally)-8 b(.)55 b(By)35
-b(default,)h(this)f(causes)g(a)-30 2213 y(fatal)d(error.)40
-b(If)30 b(y)m(ou)h(set)f(the)h(global)h(v)-5 b(ariable)210
-2342 y Fp(cl_boolean)45 b(cl_inhibit_floating_poin)o(t_un)o(derf)o(low)
--30 2477 y Fr(to)40 b Fp(cl_true)p Fr(,)f(the)g(error)g(will)g(b)s(e)f
-(inhibited,)j(and)d(a)h(\015oating-p)s(oin)m(t)i(zero)e(will)h(b)s(e)e
-(generated)i(instead.)66 b(The)-30 2586 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(.)-30 2844 y Fs(12.3)68
-b(Customizing)46 b(I/O)-30 3036 y Fr(The)31 b(output)g(of)g(the)g
-(function)g Fp(fprint)f Fr(ma)m(y)h(b)s(e)f(customized)h(b)m(y)g(c)m
-(hanging)i(the)e(v)-5 b(alue)32 b(of)f(the)h(global)g(v)-5
-b(ariable)-30 3146 y Fp(default_print_flags)p Fr(.)-30
-3403 y Fs(12.4)68 b(Customizing)46 b(the)f(memory)h(allo)t(cator)-30
-3596 y Fr(Ev)m(ery)28 b(memory)e(allo)s(cation)k(of)e(CLN)g(is)g(done)f
-(through)g(the)h(function)g(p)s(oin)m(ter)g Fp(malloc_hook)p
-Fr(.)37 b(F)-8 b(reeing)29 b(of)f(this)-30 3705 y(memory)33
-b(is)j(done)f(through)g(the)g(function)g(p)s(oin)m(ter)h
-Fp(free_hook)p Fr(.)53 b(The)35 b(default)g(v)m(ersions)h(of)f(these)h
-(functions,)-30 3815 y(pro)m(vided)27 b(in)h(the)f(library)-8
-b(,)29 b(call)g 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(.)39
-b(If)27 b(y)m(ou)h(w)m(an)m(t)-30 3924 y(to)i(pro)m(vide)f(another)h
-(memory)d(allo)s(cator,)32 b(y)m(ou)e(need)f(to)h(de\014ne)e(the)i(v)-5
-b(ariables)30 b Fp(malloc_hook)c Fr(and)i Fp(free_hook)-30
-4034 y Fr(y)m(ourself,)j(lik)m(e)h(this:)210 4163 y Fp(#include)46
-b(<cln/malloc.h>)210 4267 y(namespace)f(cln)i({)592 4370
-y(void*)f(\(*malloc_hook\))e(\(size_t)i(size\))g(=)i(...)o(;)592
-4474 y(void)e(\(*free_hook\))f(\(void*)h(ptr\))285 b(=)48
-b(...)o(;)210 4578 y(})-30 4712 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.)-30 4847 y(It)e(is)f(not)h(p)s(ossible)f(to)h(c)m
-(hange)h(the)e(memory)f(allo)s(cator)j(at)f(run)m(time,)f(b)s(ecause)h
-(it)g(is)f(already)h(called)h(at)f(program)-30 4956 y(startup)i(b)m(y)g
-(the)h(constructors)f(of)h(some)f(global)h(v)-5 b(ariables.)p
-eop
-%%Page: 53 55
-53 54 bop -30 -116 a Fr(Index)3646 b(53)-30 299 y Fo(Index)-30
-614 y Fs(A)-30 737 y Fd(abs)26 b(\(\))12 b Fc(.)h(.)f(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)38 b Fb(12)-30 829 y(abstract)26 b(class)g Fc(.)12
-b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)50 b Fb(6)-30 921 y Fd(acos)27 b(\(\))10 b Fc(.)j(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)36 b Fb(18)-30 1013 y Fd(acosh)27 b(\(\))9 b Fc(.)j(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)35 b Fb(19)-30 1105 y(adv)n(o)r(cacy)24 b Fc(.)12
-b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)f(.)g(.)50 b Fb(43)-30 1197 y(Arc)n(himedes')25
-b(constan)n(t)17 b Fc(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)43
-b Fb(19)-30 1289 y Fd(As\(\)\(\))6 b Fc(.)14 b(.)e(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)32 b Fb(9)-30 1381 y Fd(ash)26 b(\(\))12 b Fc(.)h(.)f(.)h(.)f(.)
-g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)38 b Fb(22)-30 1473 y Fd(asin)8 b Fc(.)13
-b(.)g(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)34 b Fb(18)-30 1565
-y Fd(asin)27 b(\(\))10 b Fc(.)j(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)36
-b Fb(18)-30 1657 y Fd(asinh)27 b(\(\))9 b Fc(.)j(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)35
-b Fb(19)-30 1749 y Fd(atan)8 b Fc(.)13 b(.)g(.)f(.)g(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)34 b Fb(18)-30 1841 y Fd(atan)27 b(\(\))10 b Fc(.)j(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)36 b Fb(18)-30 1933 y Fd(atanh)27 b(\(\))9 b Fc(.)j(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)35 b Fb(19)-30 2180 y Fs(B)-30 2303 y Fd(basering)27
-b(\(\))d Fc(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)49 b Fb(40)-30 2395 y Fd(binomial)27
-b(\(\))d Fc(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)49 b Fb(23)-30 2487 y Fd(boole)27
-b(\(\))9 b Fc(.)j(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)35 b Fb(21)-30 2579
-y Fd(boole_1)23 b Fc(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)48 b Fb(21)-30
-2671 y Fd(boole_2)23 b Fc(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)48
-b Fb(21)-30 2763 y Fd(boole_and)21 b Fc(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)45
-b Fb(21)-30 2855 y Fd(boole_andc1)16 b Fc(.)f(.)d(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)42 b
-Fb(21)-30 2947 y Fd(boole_andc2)16 b Fc(.)f(.)d(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)42 b Fb(21)-30
-3039 y Fd(boole_c1)22 b Fc(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)46 b
-Fb(21)-30 3131 y Fd(boole_c2)22 b Fc(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)46
-b Fb(21)-30 3222 y Fd(boole_clr)21 b Fc(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)45
-b Fb(21)-30 3314 y Fd(boole_eqv)21 b Fc(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)45
-b Fb(21)-30 3406 y Fd(boole_nand)17 b Fc(.)e(.)d(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)43
-b Fb(21)-30 3498 y Fd(boole_nor)21 b Fc(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)45
-b Fb(21)-30 3590 y Fd(boole_orc1)17 b Fc(.)e(.)d(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)43
-b Fb(21)-30 3682 y Fd(boole_orc2)17 b Fc(.)e(.)d(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)43
-b Fb(21)-30 3774 y Fd(boole_set)21 b Fc(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)45
-b Fb(21)-30 3866 y Fd(boole_xor)21 b Fc(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)45
-b Fb(21)-30 4114 y Fs(C)-30 4236 y Fd(canonhom)27 b(\(\))8
-b Fc(.)13 b(.)g(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)34
-b Fb(33,)26 b(35,)h(40)-30 4328 y(Catalan's)h(constan)n(t)10
-b Fc(.)i(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)36
-b Fb(20)-30 4420 y Fd(catalanconst)28 b(\(\))17 b Fc(.)c(.)f(.)h(.)f(.)
-g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)43 b Fb(20)-30
-4512 y Fd(ceiling1)27 b(\(\))d Fc(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)49 b Fb(14)-30
-4604 y Fd(ceiling2)27 b(\(\))d Fc(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)49 b Fb(15)-30
-4696 y(Cheb)n(yshev)25 b(p)r(olynomial)16 b Fc(.)c(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)
-h(.)f(.)g(.)h(.)42 b Fb(42)-30 4788 y Fd(cis)26 b(\(\))12
-b Fc(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)38 b Fb(18)-30 4880
-y Fd(cl_abort)27 b(\(\))d Fc(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)49 b Fb(52)-30 4972
-y Fd(cl_byte)23 b Fc(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)48 b Fb(21)-30
-5064 y Fd(CL_DEBUG)22 b Fc(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)46 b
-Fb(50)-30 5156 y Fd(cl_DF)8 b Fc(.)13 b(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)33 b Fb(7)-30 5248 y Fd(cl_DF_fdiv_t)15 b Fc(.)g(.)d(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)40 b
-Fb(15)-30 5340 y Fd(cl_F)22 b Fc(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)
-g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)47
-b Fb(6,)26 b(7)2032 614 y Fd(cl_F_fdiv_t)16 b Fc(.)f(.)d(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)42
-b Fb(15)2032 707 y Fd(cl_FF)8 b Fc(.)13 b(.)g(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h
-(.)f(.)34 b Fb(7)2032 799 y Fd(cl_FF_fdiv_t)15 b Fc(.)g(.)d(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)40
-b Fb(15)2032 891 y Fd(cl_float)28 b(\(\))23 b Fc(.)12
-b(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)48 b Fb(25)2032 984 y Fd(cl_float_format)29 b(\(\))13
-b Fc(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)38
-b Fb(25)2032 1076 y Fd(cl_float_format_t)7 b Fc(.)17
-b(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)33
-b Fb(25)2032 1168 y Fd(cl_I_to_int)28 b(\(\))20 b Fc(.)13
-b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)46
-b Fb(9)2032 1261 y Fd(cl_I_to_long)29 b(\(\))18 b Fc(.)12
-b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)44
-b Fb(9)2032 1353 y Fd(cl_I_to_uint)29 b(\(\))18 b Fc(.)12
-b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)44
-b Fb(9)2032 1445 y Fd(cl_I_to_ulong)29 b(\(\))17 b Fc(.)12
-b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)43
-b Fb(9)2032 1538 y Fd(cl_idecoded_float)7 b Fc(.)17 b(.)12
-b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)33 b Fb(24)2032
-1630 y Fd(cl_LF)8 b Fc(.)13 b(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)34
-b Fb(7)2032 1722 y Fd(cl_LF_fdiv_t)15 b Fc(.)g(.)d(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)40 b Fb(15)2032
-1815 y Fd(cl_modint_ring)12 b Fc(.)j(.)e(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)37 b Fb(34)2032 1907 y Fd(cl_N)9
-b Fc(.)k(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)35 b Fb(6)2032
-1999 y Fd(cl_number)22 b Fc(.)13 b(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)46 b
-Fb(6)2032 2092 y Fd(cl_R)9 b Fc(.)k(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)35 b Fb(6)2032 2184 y Fd(cl_R_fdiv_t)16 b Fc(.)f(.)d(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)
-g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)42
-b Fb(15)2032 2276 y Fd(cl_RA)8 b Fc(.)13 b(.)g(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h
-(.)f(.)34 b Fb(6)2032 2369 y Fd(cl_SF)8 b Fc(.)13 b(.)g(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)g(.)h(.)f(.)34 b Fb(7)2032 2461 y Fd(cl_SF_fdiv_t)15
-b Fc(.)g(.)d(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g
-(.)h(.)40 b Fb(15)2032 2553 y Fd(cl_string)21 b Fc(.)12
-b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)45 b Fb(37)2032 2646 y Fd(cl_symbol)21 b
-Fc(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)45 b Fb(37)2032 2738 y Fd(coeff)27
-b(\(\))9 b Fc(.)k(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)35 b Fb(41)2032 2830
-y Fd(compare)27 b(\(\))6 b Fc(.)13 b(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)32 b Fb(13)2032
-2923 y(comparison)24 b Fc(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)49 b Fb(13)2032
-3015 y(compatibilit)n(y)10 b Fc(.)i(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)36 b Fb(45)2032 3107
-y(compiler)26 b(options)9 b Fc(.)j(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)34 b Fb(45)2032 3200 y Fd(complex)27
-b(\(\))6 b Fc(.)13 b(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)32 b Fb(12)2032 3292 y(complex)25
-b(n)n(um)n(b)r(er)20 b Fc(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)47 b Fb(6,)27 b(8)2032 3384 y Fd(conjugate)h(\(\))22
-b Fc(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)47 b Fb(12)2032 3477 y(con)n(v)n(ersion)15 b
-Fc(.)e(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)41 b Fb(8,)26 b(25)2032 3569 y Fd(cos)h(\(\))12
-b Fc(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)38 b Fb(18)2032 3661
-y Fd(cos_sin)27 b(\(\))6 b Fc(.)13 b(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)32 b Fb(18)2032
-3754 y Fd(cos_sin_t)21 b Fc(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)45 b Fb(18)2032
-3846 y Fd(cosh)27 b(\(\))10 b Fc(.)j(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)36
-b Fb(19)2032 3938 y Fd(cosh_sinh)28 b(\(\))22 b Fc(.)12
-b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-47 b Fb(19)2032 4031 y Fd(cosh_sinh_t)16 b Fc(.)f(.)d(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)
-g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)42
-b Fb(19)2032 4123 y Fd(create)27 b(\(\))8 b Fc(.)13 b(.)f(.)g(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)33
-b Fb(40)2032 4215 y(customizing)15 b Fc(.)e(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)41 b
-Fb(52)2032 4478 y Fs(D)2032 4601 y Fd(debug_print)28
-b(\(\))18 b Fc(.)c(.)e(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)44 b Fb(50)2032 4694 y(debugging)7 b Fc(.)12
-b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)32 b Fb(50)2032 4786 y Fd(decode_float)d(\(\))17
-b Fc(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)43
-b Fb(24)2032 4878 y Fd(decoded_dfloat)12 b Fc(.)j(.)e(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)37 b Fb(24)2032
-4971 y Fd(decoded_ffloat)12 b Fc(.)j(.)e(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)37 b Fb(24)2032 5063 y Fd(decoded_float)13
-b Fc(.)j(.)c(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)39 b Fb(24)2032 5155 y Fd(decoded_lfloat)12 b Fc(.)j(.)e(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)
-g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)37 b Fb(24)2032
-5248 y Fd(decoded_sfloat)12 b Fc(.)j(.)e(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)37 b Fb(24)2032 5340 y Fd
-(default_float_format)26 b Fc(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)47
-b Fb(25)p eop
-%%Page: 54 56
-54 55 bop -30 -116 a Fr(Index)3646 b(54)-30 299 y Fd
-(default_print_flags)27 b Fc(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-48 b Fb(52)-30 391 y Fd(default_random_state)26 b Fc(.)12
-b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)47 b Fb(26)-30 483
-y Fd(degree)27 b(\(\))8 b Fc(.)k(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)33 b Fb(41)-30
-575 y Fd(denominator)28 b(\(\))18 b Fc(.)13 b(.)g(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)44 b Fb(12)-30 667
-y Fd(deposit_field)29 b(\(\))16 b Fc(.)c(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)41 b Fb(22)-30 759 y Fd(deriv)27
-b(\(\))9 b Fc(.)j(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)35 b Fb(41)-30 851
-y Fd(div)26 b(\(\))12 b Fc(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)38
-b Fb(35)-30 943 y Fd(double_approx)29 b(\(\))17 b Fc(.)12
-b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)42
-b Fb(9)-30 1035 y Fd(doublefactorial)29 b(\(\))13 b Fc(.)f(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)39 b Fb(23)-30 1127 y
-Fd(dpb)26 b(\(\))12 b Fc(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)38
-b Fb(22)-30 1389 y Fs(E)-30 1512 y Fd(equal)27 b(\(\))20
-b Fc(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)45 b Fb(33,)27 b(37)-30 1604 y Fd(equal_hashcode)i(\(\))14
-b Fc(.)f(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)40
-b Fb(13)-30 1696 y(Euler's)27 b(constan)n(t)15 b Fc(.)d(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)41 b Fb(20)-30
-1788 y Fd(eulerconst)28 b(\(\))20 b Fc(.)13 b(.)f(.)g(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)46 b Fb(20)-30
-1880 y Fd(evenp)27 b(\(\))9 b Fc(.)j(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)35
-b Fb(22)-30 1972 y(exact)26 b(n)n(um)n(b)r(er)20 b Fc(.)13
-b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)48 b Fb(6)-30 2064 y Fd(exp)26 b(\(\))12 b Fc(.)h(.)f(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)38 b Fb(17)-30 2156 y Fd(exp1)27 b(\(\))10
-b Fc(.)j(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)36 b Fb(17)-30 2248 y
-Fd(expt)27 b(\(\))14 b Fc(.)e(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)g(.)h(.)f(.)g(.)h(.)40 b Fb(11,)26 b(17,)h(35)-30
-2340 y Fd(expt_pos)g(\(\))20 b Fc(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)45 b Fb(11,)27 b(33,)f(35,)h(41)-30 2432 y Fd(exquo)g(\(\))9
-b Fc(.)j(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)35 b Fb(11)-30 2694 y Fs(F)-30
-2817 y Fd(factorial)28 b(\(\))21 b Fc(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)47 b Fb(23)-30
-2909 y Fd(fceiling)27 b(\(\))d Fc(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)49 b Fb(15)-30
-3001 y Fd(fceiling2)28 b(\(\))21 b Fc(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)47 b Fb(15)-30
-3093 y Fd(ffloor)27 b(\(\))8 b Fc(.)k(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)33
-b Fb(15)-30 3185 y Fd(ffloor2)27 b(\(\))6 b Fc(.)13 b(.)f(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)32
-b Fb(15)-30 3277 y(Fib)r(onacci)27 b(n)n(um)n(b)r(er)18
-b Fc(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)46
-b Fb(49)-30 3369 y Fd(finalize)27 b(\(\))d Fc(.)12 b(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)49
-b Fb(41)-30 3461 y Fd(find_modint_ring)29 b(\(\))11 b
-Fc(.)i(.)g(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)37 b Fb(34)-30
-3553 y Fd(find_univpoly_ring)30 b(\(\))8 b Fc(.)13 b(.)f(.)g(.)h(.)f(.)
-g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h
-(.)f(.)g(.)h(.)34 b Fb(40)-30 3645 y Fd(float_approx)28
-b(\(\))18 b Fc(.)13 b(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)44 b Fb(9)-30 3737 y Fd(float_digits)28 b(\(\))17
-b Fc(.)c(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)43
-b Fb(24)-30 3829 y Fd(float_epsilon)29 b(\(\))16 b Fc(.)c(.)g(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)41 b Fb(25)-30
-3921 y Fd(float_exponent)29 b(\(\))14 b Fc(.)f(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)f(.)g(.)h(.)f(.)40 b Fb(24)-30 4013 y Fd
-(float_negative_epsilon)31 b(\(\))21 b Fc(.)12 b(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)47
-b Fb(25)-30 4105 y Fd(float_precision)29 b(\(\))13 b
-Fc(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)39
-b Fb(24)-30 4197 y Fd(float_radix)28 b(\(\))18 b Fc(.)13
-b(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)44
-b Fb(24)-30 4289 y Fd(float_sign)28 b(\(\))20 b Fc(.)13
-b(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)46
-b Fb(24)-30 4381 y(\015oating-p)r(oin)n(t)26 b(n)n(um)n(b)r(er)12
-b Fc(.)e(.)j(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)38
-b Fb(7)-30 4473 y Fd(floor1)27 b(\(\))8 b Fc(.)k(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)33
-b Fb(14)-30 4565 y Fd(floor2)27 b(\(\))8 b Fc(.)k(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)33
-b Fb(15)-30 4657 y Fd(fprint)27 b(\(\))11 b Fc(.)i(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)37 b Fb(33,)26 b(36,)h(41)-30
-4749 y Fd(free_hook)h(\(\))21 b Fc(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)47 b Fb(52)-30
-4841 y Fd(fround)27 b(\(\))8 b Fc(.)k(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)33
-b Fb(15)-30 4933 y Fd(fround2)27 b(\(\))6 b Fc(.)13 b(.)f(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)32
-b Fb(15)-30 5024 y Fd(ftruncate)c(\(\))21 b Fc(.)13 b(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)47
-b Fb(15)2032 299 y Fd(ftruncate2)28 b(\(\))20 b Fc(.)13
-b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)46
-b Fb(15)2032 545 y Fs(G)2032 667 y Fb(garbage)27 b(collection)14
-b Fc(.)h(.)d(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)40 b
-Fb(43,)27 b(44)2032 759 y Fd(gcd)g(\(\))12 b Fc(.)g(.)h(.)f(.)g(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)38 b Fb(23)2032 851 y(GMP)8 b Fc(.)13 b(.)g(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)33 b Fb(1,)27 b(4)2032 1110 y Fs(H)2032 1232 y Fb(header)f(\014les)7
-b Fc(.)13 b(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)33 b Fb(45)2032 1324 y Fd(hermite)27
-b(\(\))6 b Fc(.)13 b(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)32 b Fb(42)2032 1416 y(Hermite)25
-b(p)r(olynomial)7 b Fc(.)12 b(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)32 b Fb(42)2032 1675 y Fs(I)2032 1797 y Fd(imagpart)c(\(\))23
-b Fc(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)48 b Fb(12)2032 1889 y(include)26 b(\014les)17
-b Fc(.)c(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)43 b Fb(45)2032 1980 y(Input/Output)14
-b Fc(.)c(.)i(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h
-(.)f(.)40 b Fb(28)2032 2072 y(installation)9 b Fc(.)14
-b(.)e(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)f(.)g(.)35 b Fb(4)2032 2164 y Fd(instanceof)28
-b(\(\))20 b Fc(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)
-g(.)h(.)f(.)g(.)46 b Fb(33)2032 2256 y(in)n(teger)10
-b Fc(.)j(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)36 b Fb(6)2032
-2347 y Fd(integer_decode_float)30 b(\(\))24 b Fc(.)13
-b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)g(.)h(.)f(.)g(.)h(.)49 b Fb(24)2032 2439 y Fd(integer_length)29
-b(\(\))14 b Fc(.)f(.)f(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)40
-b Fb(22)2032 2531 y Fd(isqrt)27 b(\(\))9 b Fc(.)k(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)35
-b Fb(16)2032 2792 y Fs(L)2032 2914 y Fd(laguerre)28 b(\(\))23
-b Fc(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)48 b Fb(42)2032 3006 y(Laguerre)27 b(p)r(olynomial)13
-b Fc(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)38
-b Fb(42)2032 3098 y Fd(lcm)27 b(\(\))12 b Fc(.)g(.)h(.)f(.)g(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)38 b Fb(23)2032 3190 y Fd(ldb)27 b(\(\))12 b Fc(.)g(.)h(.)f(.)g(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)38 b Fb(22)2032 3281 y Fd(ldb_test)28 b(\(\))23
-b Fc(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)48 b Fb(22)2032 3373 y Fd(least_negative_float)30
-b(\(\))24 b Fc(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)49 b Fb(25)2032
-3465 y Fd(least_positive_float)30 b(\(\))24 b Fc(.)13
-b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)g(.)h(.)f(.)g(.)h(.)49 b Fb(25)2032 3557 y(Legende)26
-b(p)r(olynomial)e Fc(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-49 b Fb(42)2032 3648 y Fd(legendre)28 b(\(\))23 b Fc(.)12
-b(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)48 b Fb(42)2032 3740 y Fd(length)27 b(\(\))8 b Fc(.)13
-b(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)
-h(.)f(.)g(.)h(.)33 b Fb(37)2032 3832 y Fd(ln)26 b(\(\))13
-b Fc(.)g(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)39 b Fb(17)2032
-3924 y Fd(log)27 b(\(\))12 b Fc(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)38
-b Fb(17)2032 4015 y Fd(logand)27 b(\(\))8 b Fc(.)13 b(.)f(.)g(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)33
-b Fb(21)2032 4107 y Fd(logandc1)28 b(\(\))23 b Fc(.)12
-b(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)48 b Fb(21)2032 4199 y Fd(logandc2)28 b(\(\))23 b
-Fc(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)48 b Fb(21)2032 4291 y Fd(logbitp)27 b(\(\))6
-b Fc(.)13 b(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)32 b Fb(21)2032 4382 y Fd(logcount)c(\(\))23
-b Fc(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)48 b Fb(21)2032 4474 y Fd(logeqv)27 b(\(\))8
-b Fc(.)13 b(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)g(.)h(.)f(.)g(.)h(.)33 b Fb(21)2032 4566 y Fd(logior)27
-b(\(\))8 b Fc(.)13 b(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)33 b Fb(21)2032 4658
-y Fd(lognand)27 b(\(\))6 b Fc(.)13 b(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)32 b Fb(21)2032
-4749 y Fd(lognor)27 b(\(\))8 b Fc(.)13 b(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)33
-b Fb(21)2032 4841 y Fd(lognot)27 b(\(\))8 b Fc(.)13 b(.)f(.)g(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)33
-b Fb(20)2032 4933 y Fd(logorc1)27 b(\(\))6 b Fc(.)13
-b(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)32 b Fb(21)2032 5024 y Fd(logorc2)27 b(\(\))6
-b Fc(.)13 b(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)32 b Fb(21)p eop
-%%Page: 55 57
-55 56 bop -30 -116 a Fr(Index)3646 b(55)-30 299 y Fd(logp)27
-b(\(\))10 b Fc(.)j(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)36 b Fb(23)-30
-391 y Fd(logtest)27 b(\(\))6 b Fc(.)13 b(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)32
-b Fb(21)-30 483 y Fd(logxor)27 b(\(\))8 b Fc(.)k(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)33
-b Fb(21)-30 747 y Fs(M)-30 870 y Fd(make)9 b Fc(.)k(.)g(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)35 b Fb(3)-30 962 y Fd(malloc_hook)28
-b(\(\))18 b Fc(.)13 b(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)44 b Fb(52)-30 1054 y Fd(mask_field)28 b(\(\))20
-b Fc(.)13 b(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)46 b Fb(22)-30 1147 y Fd(max)26 b(\(\))12 b Fc(.)h(.)f(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)38 b Fb(13)-30 1239 y Fd(min)26 b(\(\))12
-b Fc(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)38 b Fb(13)-30 1331
-y Fd(minus)27 b(\(\))9 b Fc(.)j(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)35 b
-Fb(33)-30 1423 y Fd(minus1)27 b(\(\))8 b Fc(.)k(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)33
-b Fb(11)-30 1515 y Fd(minusp)27 b(\(\))8 b Fc(.)k(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)33
-b Fb(13)-30 1607 y Fd(mod)26 b(\(\))12 b Fc(.)h(.)f(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)38 b Fb(16)-30 1700 y(mo)r(difying)26 b(op)r(erators)c
-Fc(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)47
-b Fb(27)-30 1792 y(mo)r(dular)25 b(in)n(teger)20 b Fc(.)12
-b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)45
-b Fb(34)-30 1884 y Fd(modulus)23 b Fc(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)48
-b Fb(34)-30 1976 y Fd(monomial)27 b(\(\))d Fc(.)12 b(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)49
-b Fb(40)-30 2068 y(Mon)n(tgomery)25 b(m)n(ultiplication)9
-b Fc(.)k(.)f(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)f(.)35 b Fb(34)-30 2161 y Fd
-(most_negative_float)30 b(\(\))7 b Fc(.)13 b(.)f(.)g(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)33 b Fb(25)-30 2253 y Fd(most_positive_float)d(\(\))7
-b Fc(.)13 b(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)33 b Fb(25)-30
-2345 y Fd(mul)26 b(\(\))12 b Fc(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)38
-b Fb(33)-30 2594 y Fs(N)-30 2717 y Fb(namespace)10 b
-Fc(.)i(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)
-h(.)f(.)36 b Fb(2,)26 b(45)-30 2809 y Fd(numerator)i(\(\))21
-b Fc(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)47 b Fb(12)-30 3058 y Fs(O)-30 3181 y Fd(oddp)27
-b(\(\))10 b Fc(.)j(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)36 b Fb(22)-30
-3273 y Fd(one)26 b(\(\))15 b Fc(.)e(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)42 b Fb(33,)26 b(35,)h(40)-30
-3365 y Fd(operator)g(!=)f(\(\))c Fc(.)13 b(.)f(.)g(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)47
-b Fb(13,)27 b(34,)f(36,)h(41)-30 3457 y Fd(operator)g(&)f(\(\))9
-b Fc(.)k(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)34 b Fb(21)-30 3550 y Fd(operator)27 b(&=)f(\(\))7
-b Fc(.)13 b(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)33 b Fb(27)-30 3642 y Fd(operator)27 b(\(\))f(\(\))7
-b Fc(.)13 b(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)33 b Fb(41)-30 3734 y Fd(operator)27 b(*)f(\(\))12
-b Fc(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)38 b
-Fb(11,)26 b(35,)h(41)-30 3826 y Fd(operator)g(*=)f(\(\))7
-b Fc(.)13 b(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)33 b Fb(27)-30 3918 y Fd(operator)27 b(-)f(\(\))12
-b Fc(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)38 b
-Fb(11,)26 b(35,)h(41)-30 4010 y Fd(operator)g(--)f(\(\))7
-b Fc(.)13 b(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)33 b Fb(27)-30 4103 y Fd(operator)27 b(-=)f(\(\))7
-b Fc(.)13 b(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)33 b Fb(27)-30 4195 y Fd(operator)27 b(/)f(\(\))9
-b Fc(.)k(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)34 b Fb(11)-30 4287 y Fd(operator)27 b(/=)f(\(\))7
-b Fc(.)13 b(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)33 b Fb(27)-30 4379 y Fd(operator)27 b(==)f(\(\))c
-Fc(.)13 b(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)47 b Fb(13,)27 b(34,)f(36,)h(41)-30
-4471 y Fd(operator)g([])f(\(\))7 b Fc(.)13 b(.)g(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)33 b Fb(37)-30
-4564 y Fd(operator)27 b(|)f(\(\))9 b Fc(.)k(.)f(.)g(.)h(.)f(.)g(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)34 b Fb(21)-30
-4656 y Fd(operator)27 b(|=)f(\(\))7 b Fc(.)13 b(.)g(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)33 b Fb(27)-30
-4748 y Fd(operator)27 b(~)f(\(\))9 b Fc(.)k(.)f(.)g(.)h(.)f(.)g(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)34 b Fb(20)-30
-4840 y Fd(operator)27 b(+)f(\(\))12 b Fc(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)38 b Fb(11,)26 b(35,)h(41)-30 4932 y Fd(operator)g(+=)f
-(\(\))7 b Fc(.)13 b(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)f(.)33 b Fb(27)-30 5024 y Fd(operator)27 b(++)f(\(\))7
-b Fc(.)13 b(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)33 b Fb(27)2032 299 y Fd(operator)28 b(>)d(\(\))9
-b Fc(.)k(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)34 b Fb(13)2032 391 y Fd(operator)28 b(>=)e(\(\))7
-b Fc(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)33 b Fb(13)2032 483 y Fd(operator)28 b(>>)e(\(\))18
-b Fc(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)43
-b Fb(22,)27 b(36)2032 576 y Fd(operator)h(>>=)e(\(\))e
-Fc(.)13 b(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)50
-b Fb(27)2032 668 y Fd(operator)28 b(^)d(\(\))9 b Fc(.)k(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)34
-b Fb(21)2032 760 y Fd(operator)28 b(^=)e(\(\))7 b Fc(.)13
-b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)33
-b Fb(27)2032 853 y Fd(operator)28 b(<)d(\(\))9 b Fc(.)k(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)34
-b Fb(13)2032 945 y Fd(operator)28 b(<=)e(\(\))7 b Fc(.)13
-b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)33
-b Fb(13)2032 1037 y Fd(operator)28 b(<<)e(\(\))21 b Fc(.)13
-b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)47 b Fb(22,)27 b(35,)f(36,)h(41)2032
-1129 y Fd(operator)h(<<=)e(\(\))e Fc(.)13 b(.)f(.)g(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)g(.)50 b Fb(27)2032 1222 y Fd(ord2)27
-b(\(\))10 b Fc(.)j(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)36 b Fb(22)2032
-1471 y Fs(P)2032 1594 y Fd(phase)27 b(\(\))9 b Fc(.)k(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)35 b Fb(17)2032 1686 y(pi)18 b Fc(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)44 b Fb(19)2032 1779 y Fd(pi)26 b(\(\))13
-b Fc(.)g(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)39 b Fb(19)2032
-1871 y Fd(plus)27 b(\(\))10 b Fc(.)j(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)36
-b Fb(33)2032 1963 y Fd(plus1)27 b(\(\))9 b Fc(.)k(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)35
-b Fb(11)2032 2055 y Fd(plusp)27 b(\(\))9 b Fc(.)k(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)35
-b Fb(13)2032 2148 y(p)r(olynomial)10 b Fc(.)j(.)f(.)g(.)h(.)f(.)g(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)36
-b Fb(38)2032 2240 y(p)r(ortabilit)n(y)17 b Fc(.)c(.)f(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)43
-b Fb(43)2032 2332 y Fd(power2p)27 b(\(\))6 b Fc(.)13
-b(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)32 b Fb(23)2032 2425 y(prin)n(ting)8 b Fc(.)k(.)g(.)h(.)f
-(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f
-(.)g(.)h(.)33 b Fb(28)2032 2686 y Fs(R)2032 2810 y Fd(random)27
-b(\(\))8 b Fc(.)13 b(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)33 b Fb(35)2032 2902
-y Fd(random_F)28 b(\(\))23 b Fc(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)48 b Fb(26)2032
-2994 y Fd(random_I)28 b(\(\))23 b Fc(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)48 b Fb(26)2032
-3087 y Fd(random_R)28 b(\(\))23 b Fc(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)48 b Fb(26)2032
-3179 y Fd(random_state)15 b Fc(.)g(.)d(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)40 b Fb(26)2032 3271
-y Fd(random32)28 b(\(\))23 b Fc(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)48 b Fb(26)2032
-3364 y Fd(rational)28 b(\(\))23 b Fc(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)48 b Fb(26)2032
-3456 y(rational)27 b(n)n(um)n(b)r(er)17 b Fc(.)11 b(.)h(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)44 b Fb(6)2032
-3548 y Fd(rationalize)28 b(\(\))18 b Fc(.)c(.)e(.)g(.)h(.)f(.)g(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)44 b Fb(26)2032 3640
-y(reading)17 b Fc(.)c(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)43 b Fb(28)2032
-3733 y(real)27 b(n)n(um)n(b)r(er)13 b Fc(.)d(.)i(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)39
-b Fb(6)2032 3825 y Fd(realpart)28 b(\(\))23 b Fc(.)12
-b(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)48 b Fb(12)2032 3917 y Fd(recip)27 b(\(\))20 b Fc(.)13
-b(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)
-h(.)45 b Fb(11,)27 b(35)2032 4009 y(reference)g(coun)n(ting)17
-b Fc(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)43
-b Fb(43)2032 4102 y Fd(rem)27 b(\(\))12 b Fc(.)g(.)h(.)f(.)g(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)38 b Fb(16)2032 4194 y(represen)n(tation)12 b Fc(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)37
-b Fb(28)2032 4286 y Fd(retract)27 b(\(\))6 b Fc(.)13
-b(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)32 b Fb(35)2032 4379 y(Riemann's)25 b(zeta)11
-b Fc(.)i(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)37 b Fb(20)2032 4471 y(ring)21 b Fc(.)12 b(.)h(.)f(.)g(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)46 b Fb(34)2032 4563 y Fd(ring)27 b(\(\))21
-b Fc(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)f(.)g(.)47 b Fb(35,)27 b(41)2032 4655 y Fd(rootp)g(\(\))9
-b Fc(.)k(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)35 b Fb(16)2032 4748 y Fd(round1)27
-b(\(\))8 b Fc(.)13 b(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)33 b Fb(14)2032 4840
-y Fd(round2)27 b(\(\))8 b Fc(.)13 b(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)33 b
-Fb(15)2032 4932 y(rounding)10 b Fc(.)i(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)35
-b Fb(13)2032 5024 y(rounding)26 b(error)7 b Fc(.)13 b(.)f(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)34
-b Fb(7)p eop
-%%Page: 56 58
-56 57 bop -30 -116 a Fr(Index)3646 b(56)-30 299 y Fb(Rubik's)25
-b(cub)r(e)14 b Fc(.)e(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)f(.)40 b Fb(8)-30 548 y Fs(S)-30
-672 y Fd(scale_float)28 b(\(\))18 b Fc(.)13 b(.)g(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)44 b Fb(23)-30 764
-y(Sc)n(h\177)-38 b(onhage-Strassen)26 b(m)n(ultiplication)14
-b Fc(.)e(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)41
-b Fb(1,)26 b(44)-30 857 y Fd(sed)10 b Fc(.)j(.)g(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)36 b Fb(3)-30 949 y Fd(set_coeff)28 b(\(\))21
-b Fc(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)47 b Fb(40)-30 1042 y Fd(signum)27 b(\(\))8 b
-Fc(.)k(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)
-g(.)h(.)f(.)g(.)h(.)33 b Fb(12)-30 1134 y Fd(sin)26 b(\(\))12
-b Fc(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)38 b Fb(17)-30 1226
-y Fd(sinh)27 b(\(\))10 b Fc(.)j(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)36
-b Fb(19)-30 1319 y Fd(sqrt)27 b(\(\))10 b Fc(.)j(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-36 b Fb(16)-30 1411 y Fd(sqrtp)27 b(\(\))9 b Fc(.)j(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)35
-b Fb(16)-30 1503 y Fd(square)27 b(\(\))22 b Fc(.)12 b(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)48 b Fb(11,)27 b(33,)f(35,)h(41)-30
-1596 y(string)8 b Fc(.)13 b(.)g(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)34
-b Fb(37)-30 1688 y Fd(strlen)27 b(\(\))8 b Fc(.)k(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)33
-b Fb(37)-30 1781 y(sym)n(b)r(ol)22 b Fc(.)12 b(.)g(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)48
-b Fb(37)-30 1873 y(sym)n(b)r(olic)25 b(t)n(yp)r(e)17
-b Fc(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)43 b Fb(37)-30 2135 y Fs(T)-30 2259 y Fd(tan)26
-b(\(\))12 b Fc(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)38 b Fb(18)-30
-2351 y Fd(tanh)27 b(\(\))10 b Fc(.)j(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)36
-b Fb(19)-30 2444 y Fd(The\(\)\(\))24 b Fc(.)13 b(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-48 b Fb(9)2032 299 y(transcenden)n(tal)26 b(functions)c
-Fc(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)47 b Fb(17)2032
-390 y Fd(truncate1)28 b(\(\))22 b Fc(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)47 b Fb(14)2032
-482 y Fd(truncate2)28 b(\(\))22 b Fc(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)47 b Fb(15)2032
-573 y Fd(tschebychev)28 b(\(\))18 b Fc(.)c(.)e(.)g(.)h(.)f(.)g(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)44 b Fb(42)2032 832 y
-Fs(U)2032 954 y Fd(uminus)27 b(\(\))8 b Fc(.)13 b(.)f(.)g(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)33
-b Fb(33)2032 1045 y(under\015o)n(w)14 b Fc(.)e(.)g(.)h(.)f(.)g(.)h(.)f
-(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)40
-b Fb(52)2032 1136 y(univ)l(ariate)26 b(p)r(olynomial)11
-b Fc(.)i(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)37 b
-Fb(38)2032 1393 y Fs(W)2032 1515 y Fd(WANT_OBFUSCATING_OPERATORS)13
-b Fc(.)18 b(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)38 b Fb(27)2032 1759 y Fs(X)2032
-1880 y Fd(xgcd)27 b(\(\))10 b Fc(.)j(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g
-(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)36
-b Fb(23)2032 2139 y Fs(Z)2032 2261 y Fd(zero)27 b(\(\))14
-b Fc(.)e(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)
-h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f
-(.)40 b Fb(33,)26 b(34,)h(40)2032 2352 y Fd(zerop)g(\(\))d
-Fc(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)49
-b Fb(13,)27 b(33,)f(36,)h(41)2032 2444 y Fd(zeta)g(\(\))10
-b Fc(.)j(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)
-f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h
-(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)36 b Fb(20)p eop
-%%Page: -1 59
--1 58 bop 3905 -116 a Fr(i)-30 299 y Fo(T)-13 b(able)54
-b(of)g(Con)l(ten)l(ts)-30 641 y Fs(1)135 b(In)l(tro)t(duction)39
-b Fa(.)20 b(.)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(.)h(.)f(.)g(.)
-h(.)f(.)84 b Fs(1)-30 911 y(2)135 b(Installation)13 b
-Fa(.)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(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)
-f(.)g(.)h(.)f(.)58 b Fs(3)269 1048 y Fr(2.1)92 b(Prerequisites)24
-b Fe(.)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(.)g(.)g(.)
-h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)53 b Fr(3)568 1157 y(2.1.1)93 b(C)p Fp(++)29 b Fr(compiler)22
-b Fe(.)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(.)g(.)g(.)52 b Fr(3)568 1267
-y(2.1.2)93 b(Mak)m(e)31 b(utilit)m(y)22 b Fe(.)17 b(.)e(.)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(.)52 b Fr(3)568 1377 y(2.1.3)93 b(Sed)29 b(utilit)m(y)16
-b Fe(.)g(.)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 Fr(3)269
-1486 y(2.2)92 b(Building)30 b(the)h(library)13 b Fe(.)h(.)h(.)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(.)g(.)42 b Fr(3)568 1596 y(2.2.1)93
-b(Using)30 b(the)h(GNU)g(MP)f(Library)c Fe(.)15 b(.)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(.)57 b Fr(4)269 1705 y(2.3)92 b(Installing)31
-b(the)g(library)17 b Fe(.)d(.)h(.)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(.)47
-b Fr(4)269 1815 y(2.4)92 b(Cleaning)31 b(up)17 b Fe(.)d(.)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(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)47
-b Fr(5)-30 2057 y Fs(3)135 b(Ordinary)45 b(n)l(um)l(b)t(er)f(t)l(yp)t
-(es)29 b Fa(.)20 b(.)g(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h
-(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)74 b Fs(6)269
-2194 y Fr(3.1)92 b(Exact)31 b(n)m(um)m(b)s(ers)22 b Fe(.)13
-b(.)i(.)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(.)52
-b Fr(6)269 2304 y(3.2)92 b(Floating-p)s(oin)m(t)33 b(n)m(um)m(b)s(ers)
-23 b Fe(.)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(.)h(.)f(.)g(.)g(.)
-g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)55 b Fr(7)269 2413
-y(3.3)92 b(Complex)29 b(n)m(um)m(b)s(ers)c Fe(.)15 b(.)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(.)g(.)57 b Fr(8)269 2523 y(3.4)92 b(Con)m(v)m
-(ersions)20 b Fe(.)c(.)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
-(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)g(.)50 b Fr(8)-30 2765 y Fs(4)135 b(F)-11
-b(unctions)44 b(on)h(n)l(um)l(b)t(ers)37 b Fa(.)19 b(.)h(.)f(.)h(.)f(.)
-h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h
-(.)f(.)h(.)82 b Fs(10)269 2902 y Fr(4.1)92 b(Constructing)30
-b(n)m(um)m(b)s(ers)d Fe(.)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(.)59
-b Fr(10)568 3012 y(4.1.1)93 b(Constructing)30 b(in)m(tegers)10
-b Fe(.)16 b(.)f(.)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(.)40 b Fr(10)568 3122 y(4.1.2)93 b(Constructing)30
-b(rational)h(n)m(um)m(b)s(ers)20 b Fe(.)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
-(.)49 b Fr(10)568 3231 y(4.1.3)93 b(Constructing)30 b(\015oating-p)s
-(oin)m(t)h(n)m(um)m(b)s(ers)14 b Fe(.)f(.)i(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)43 b Fr(10)568
-3341 y(4.1.4)93 b(Constructing)30 b(complex)g(n)m(um)m(b)s(ers)11
-b Fe(.)h(.)j(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)
-g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)40 b Fr(10)269 3450
-y(4.2)92 b(Elemen)m(tary)30 b(functions)25 b Fe(.)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(.)55 b Fr(11)269 3560 y(4.3)92
-b(Elemen)m(tary)30 b(rational)i(functions)c Fe(.)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(.)h(.)f(.)g(.)g(.)g(.)g(.)57 b
-Fr(12)269 3670 y(4.4)92 b(Elemen)m(tary)30 b(complex)g(functions)19
-b Fe(.)c(.)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
-(.)49 b Fr(12)269 3779 y(4.5)92 b(Comparisons)21 b Fe(.)14
-b(.)h(.)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(.)g(.)g(.)g(.)g(.)51
-b Fr(13)269 3889 y(4.6)92 b(Rounding)29 b(functions)18
-b Fe(.)d(.)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(.)47 b Fr(13)269
-3998 y(4.7)92 b(Ro)s(ots)11 b Fe(.)k(.)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(.)
-g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)40
-b Fr(16)269 4108 y(4.8)92 b(T)-8 b(ranscenden)m(tal)31
-b(functions)17 b Fe(.)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(.)g(.)g(.)g(.)h(.)
-f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)46 b Fr(17)568 4218
-y(4.8.1)93 b(Exp)s(onen)m(tial)30 b(and)g(logarithmic)h(functions)17
-b Fe(.)e(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-h(.)f(.)46 b Fr(17)568 4327 y(4.8.2)93 b(T)-8 b(rigonometric)30
-b(functions)c Fe(.)15 b(.)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(.)55 b Fr(17)568 4437 y(4.8.3)93 b(Hyp)s(erb)s(olic)29
-b(functions)23 b Fe(.)15 b(.)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(.)53 b Fr(19)568 4546 y(4.8.4)93 b(Euler)29
-b(gamma)20 b Fe(.)14 b(.)i(.)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(.)49 b Fr(20)568
-4656 y(4.8.5)93 b(Riemann)29 b(zeta)13 b Fe(.)j(.)f(.)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(.)42
-b Fr(20)269 4765 y(4.9)92 b(F)-8 b(unctions)31 b(on)f(in)m(tegers)c
-Fe(.)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(.)g(.)g(.)g(.)g(.)g(.)
-g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)54 b Fr(20)568 4875
-y(4.9.1)93 b(Logical)32 b(functions)13 b Fe(.)h(.)h(.)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(.)42
-b Fr(20)568 4985 y(4.9.2)93 b(Num)m(b)s(er)28 b(theoretic)k(functions)
-20 b Fe(.)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(.)49
-b Fr(23)568 5094 y(4.9.3)93 b(Com)m(binatorial)30 b(functions)21
-b Fe(.)15 b(.)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(.)50
-b Fr(23)269 5204 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)25 b Fe(.)15 b(.)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(.)56 b Fr(23)269 5313 y(4.11)92 b(Con)m(v)m(ersion)31
-b(functions)12 b Fe(.)j(.)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(.)41 b
-Fr(25)p eop
-%%Page: -2 60
--2 59 bop 3879 -116 a Fr(ii)568 83 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)17 b
-Fe(.)c(.)i(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)47 b Fr(25)568 193 y(4.11.2)93 b(Con)m(v)m(ersion)31
-b(to)g(rational)h(n)m(um)m(b)s(ers)21 b Fe(.)15 b(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)
-53 b Fr(26)269 302 y(4.12)92 b(Random)29 b(n)m(um)m(b)s(er)f
-(generators)e Fe(.)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(.)
-h(.)f(.)g(.)g(.)g(.)53 b Fr(26)269 412 y(4.13)92 b(Obfuscating)30
-b(op)s(erators)g Fe(.)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(.)g(.)g(.)59 b Fr(27)-30
-652 y Fs(5)135 b(Input/Output)26 b Fa(.)19 b(.)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(.)71 b Fs(28)269 789
-y Fr(5.1)92 b(In)m(ternal)31 b(and)e(prin)m(ted)h(represen)m(tation)g
-Fe(.)15 b(.)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(.)58
-b Fr(28)269 898 y(5.2)92 b(Input)29 b(functions)14 b
-Fe(.)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(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)44
-b Fr(29)269 1008 y(5.3)92 b(Output)29 b(functions)21
-b Fe(.)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(.)h(.)f(.)g(.)
-g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)50
-b Fr(30)-30 1248 y Fs(6)135 b(Rings)22 b Fa(.)e(.)f(.)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(.)h(.)f(.)67
-b Fs(33)-30 1516 y(7)135 b(Mo)t(dular)44 b(in)l(tegers)27
-b Fa(.)22 b(.)d(.)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(.)72
-b Fs(34)269 1653 y Fr(7.1)92 b(Mo)s(dular)30 b(in)m(teger)i(rings)18
-b Fe(.)c(.)h(.)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(.)47 b Fr(34)269 1762
-y(7.2)92 b(F)-8 b(unctions)31 b(on)f(mo)s(dular)e(in)m(tegers)16
-b Fe(.)h(.)e(.)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
-(.)46 b Fr(34)-30 2002 y Fs(8)135 b(Sym)l(b)t(olic)45
-b(data)g(t)l(yp)t(es)28 b Fa(.)21 b(.)e(.)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(.)
-73 b Fs(37)269 2139 y Fr(8.1)92 b(Strings)9 b Fe(.)14
-b(.)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(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g
-(.)g(.)g(.)g(.)38 b Fr(37)269 2249 y(8.2)92 b(Sym)m(b)s(ols)24
-b Fe(.)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(.)g(.)g
-(.)g(.)g(.)g(.)55 b Fr(37)-30 2489 y Fs(9)135 b(Univ)-7
-b(ariate)46 b(p)t(olynomials)40 b Fa(.)19 b(.)h(.)f(.)g(.)h(.)f(.)h(.)f
-(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)83
-b Fs(38)269 2626 y Fr(9.1)92 b(Univ)-5 b(ariate)32 b(p)s(olynomial)d
-(rings)c Fe(.)15 b(.)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(.)54 b Fr(38)269 2736 y(9.2)92 b(F)-8
-b(unctions)31 b(on)f(univ)-5 b(ariate)31 b(p)s(olynomials)d
-Fe(.)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(.)58
-b Fr(40)269 2845 y(9.3)92 b(Sp)s(ecial)31 b(p)s(olynomials)13
-b Fe(.)h(.)h(.)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(.)43 b Fr(42)-30
-3085 y Fs(10)135 b(In)l(ternals)20 b Fa(.)g(.)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(.)64 b
-Fs(43)269 3222 y Fr(10.1)92 b(Wh)m(y)31 b(C)p Fp(++)f
-Fr(?)d Fe(.)15 b(.)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(.)g(.)g(.)g(.)g(.)
-g(.)57 b Fr(43)269 3332 y(10.2)92 b(Memory)30 b(e\016ciency)25
-b Fe(.)15 b(.)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(.)53 b Fr(43)269
-3442 y(10.3)92 b(Sp)s(eed)30 b(e\016ciency)e Fe(.)15
-b(.)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(.)57 b Fr(43)269
-3551 y(10.4)92 b(Garbage)32 b(collection)14 b Fe(.)k(.)d(.)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(.)44 b Fr(44)-30 3791 y Fs(11)135 b(Using)46
-b(the)f(library)25 b Fa(.)20 b(.)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(.)69 b Fs(45)269 3928 y Fr(11.1)92 b(Compiler)30 b(options)21
-b Fe(.)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(.)50 b
-Fr(45)269 4038 y(11.2)92 b(Compatibilit)m(y)31 b(to)g(old)g(CLN)f(v)m
-(ersions)17 b Fe(.)e(.)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(.)46
-b Fr(45)269 4147 y(11.3)92 b(Include)30 b(\014les)18
-b Fe(.)d(.)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(.)f(.)g(.)g(.)g(.)g(.)g(.)47
-b Fr(45)269 4257 y(11.4)92 b(An)30 b(Example)d Fe(.)15
-b(.)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(.)57
-b Fr(49)269 4367 y(11.5)92 b(Debugging)32 b(supp)s(ort)23
-b Fe(.)15 b(.)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(.)54 b Fr(50)-30
-4607 y Fs(12)135 b(Customizing)39 b Fa(.)19 b(.)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(.)h(.)f(.)g(.)h(.)f(.)83 b Fs(52)269 4744
-y Fr(12.1)92 b(Error)30 b(handling)24 b Fe(.)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(.)54 b Fr(52)269 4853 y(12.2)92
-b(Floating-p)s(oin)m(t)33 b(under\015o)m(w)19 b Fe(.)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(.)g(.)g(.)
-g(.)g(.)g(.)49 b Fr(52)269 4963 y(12.3)92 b(Customizing)30
-b(I/O)25 b Fe(.)15 b(.)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(.)54
-b Fr(52)269 5072 y(12.4)92 b(Customizing)30 b(the)h(memory)d(allo)s
-(cator)16 b Fe(.)i(.)d(.)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 Fr(52)-30 5313 y Fs(Index)30 b Fa(.)19 b(.)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(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f
-(.)h(.)74 b Fs(53)p eop
-%%Trailer
-end
-userdict /end-hook known{end-hook}if
-%%EOF
diff --git a/doc/cln_1.html b/doc/cln_1.html
deleted file mode 100644 (file)
index 2b5c237..0000000
+++ /dev/null
@@ -1,175 +0,0 @@
-<HTML>
-<HEAD>
-<!-- Created by texi2html 1.56k from cln.texi on 28 August 2000 -->
-
-<TITLE>CLN, a Class Library for Numbers - 1. Introduction</TITLE>
-</HEAD>
-<BODY>
-Go to the first, previous, <A HREF="cln_2.html">next</A>, <A HREF="cln_13.html">last</A> section, <A HREF="cln_toc.html">table of contents</A>.
-<P><HR><P>
-
-
-<H1><A NAME="SEC1" HREF="cln_toc.html#TOC1">1. Introduction</A></H1>
-
-<P>
-CLN is a library for computations with all kinds of numbers.
-It has a rich set of number classes:
-
-
-
-<UL>
-<LI>
-
-Integers (with unlimited precision),
-
-<LI>
-
-Rational numbers,
-
-<LI>
-
-Floating-point numbers:
-
-
-<UL>
-<LI>
-
-Short float,
-<LI>
-
-Single float,
-<LI>
-
-Double float,
-<LI>
-
-Long float (with unlimited precision),
-</UL>
-
-<LI>
-
-Complex numbers,
-
-<LI>
-
-Modular integers (integers modulo a fixed integer),
-
-<LI>
-
-Univariate polynomials.
-</UL>
-
-<P>
-The subtypes of the complex numbers among these are exactly the
-types of numbers known to the Common Lisp language. Therefore
-<CODE>CLN</CODE> can be used for Common Lisp implementations, giving
-<SAMP>`CLN'</SAMP> another meaning: it becomes an abbreviation of
-"Common Lisp Numbers".
-
-
-<P>
-The CLN package implements
-
-
-
-<UL>
-<LI>
-
-Elementary functions (<CODE>+</CODE>, <CODE>-</CODE>, <CODE>*</CODE>, <CODE>/</CODE>, <CODE>sqrt</CODE>,
-comparisons, ...),
-
-<LI>
-
-Logical functions (logical <CODE>and</CODE>, <CODE>or</CODE>, <CODE>not</CODE>, ...),
-
-<LI>
-
-Transcendental functions (exponential, logarithmic, trigonometric, hyperbolic
-functions and their inverse functions).
-</UL>
-
-<P>
-CLN is a C++ library. Using C++ as an implementation language provides
-
-
-
-<UL>
-<LI>
-
-efficiency: it compiles to machine code,
-<LI>
-
-type safety: the C++ compiler knows about the number types and complains
-if, for example, you try to assign a float to an integer variable.
-<LI>
-
-algebraic syntax: You can use the <CODE>+</CODE>, <CODE>-</CODE>, <CODE>*</CODE>, <CODE>=</CODE>,
-<CODE>==</CODE>, ... operators as in C or C++.
-</UL>
-
-<P>
-CLN is memory efficient:
-
-
-
-<UL>
-<LI>
-
-Small integers and short floats are immediate, not heap allocated.
-<LI>
-
-Heap-allocated memory is reclaimed through an automatic, non-interruptive
-garbage collection.
-</UL>
-
-<P>
-CLN is speed efficient:
-
-
-
-<UL>
-<LI>
-
-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>
-
-<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
-for large numbers than the standard multiplication algorithm.
-<LI>
-
-For very large numbers (more than 12000 decimal digits), it uses
-Schönhage-Strassen
-<A NAME="IDX2"></A>
-multiplication, which is an asymptotically optimal multiplication
-algorithm, for multiplication, division and radix conversion.
-</UL>
-
-<P>
-CLN aims at being easily integrated into larger software packages:
-
-
-
-<UL>
-<LI>
-
-The garbage collection imposes no burden on the main application.
-<LI>
-
-The library provides hooks for memory allocation and exceptions.
-<LI>
-
-<A NAME="IDX3"></A>
-All non-macro identifiers are hidden in namespace <CODE>cln</CODE> in 
-order to avoid name clashes.
-</UL>
-
-<P><HR><P>
-Go to the first, previous, <A HREF="cln_2.html">next</A>, <A HREF="cln_13.html">last</A> section, <A HREF="cln_toc.html">table of contents</A>.
-</BODY>
-</HTML>
diff --git a/doc/cln_10.html b/doc/cln_10.html
deleted file mode 100644 (file)
index f66fa70..0000000
+++ /dev/null
@@ -1,163 +0,0 @@
-<HTML>
-<HEAD>
-<!-- Created by texi2html 1.56k from cln.texi on 28 August 2000 -->
-
-<TITLE>CLN, a Class Library for Numbers - 10. Internals</TITLE>
-</HEAD>
-<BODY>
-Go to the <A HREF="cln_1.html">first</A>, <A HREF="cln_9.html">previous</A>, <A HREF="cln_11.html">next</A>, <A HREF="cln_13.html">last</A> section, <A HREF="cln_toc.html">table of contents</A>.
-<P><HR><P>
-
-
-<H1><A NAME="SEC59" HREF="cln_toc.html#TOC59">10. Internals</A></H1>
-
-
-
-<H2><A NAME="SEC60" HREF="cln_toc.html#TOC60">10.1 Why C++ ?</A></H2>
-<P>
-<A NAME="IDX327"></A>
-
-
-<P>
-Using C++ as an implementation language provides
-
-
-
-<UL>
-<LI>
-
-Efficiency: It compiles to machine code.
-
-<LI>
-
-<A NAME="IDX328"></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.
-
-<LI>
-
-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>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.
-
-<LI>
-
-Algebraic syntax: The elementary operations <CODE>+</CODE>, <CODE>-</CODE>, <CODE>*</CODE>,
-<CODE>=</CODE>, <CODE>==</CODE>, ... can be used in infix notation, which is more
-convenient than Lisp notation <SAMP>`(+ x y)'</SAMP> or C notation <SAMP>`add(x,y,&#38;z)'</SAMP>.
-</UL>
-
-<P>
-With these language features, there is no need for two separate languages,
-one for the implementation of the library and one in which the library's users
-can program. This means that a prototype implementation of an algorithm
-can be integrated into the library immediately after it has been tested and
-debugged. No need to rewrite it in a low-level language after having prototyped
-in a high-level language.
-
-
-
-
-<H2><A NAME="SEC61" HREF="cln_toc.html#TOC61">10.2 Memory efficiency</A></H2>
-
-<P>
-In order to save memory allocations, CLN implements:
-
-
-
-<UL>
-<LI>
-
-Object sharing: An operation like <CODE>x+0</CODE> returns <CODE>x</CODE> without copying
-it.
-<LI>
-
-<A NAME="IDX329"></A>
-<A NAME="IDX330"></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.
-<LI>
-
-Small integers are represented as immediate values instead of pointers
-to heap allocated storage. This means that integers <CODE>&#62; -2^29</CODE>,
-<CODE>&#60; 2^29</CODE> don't consume heap memory, unless they were explicitly allocated
-on the heap.
-</UL>
-
-
-
-<H2><A NAME="SEC62" HREF="cln_toc.html#TOC62">10.3 Speed efficiency</A></H2>
-
-<P>
-Speed efficiency is obtained by the combination of the following tricks
-and algorithms:
-
-
-
-<UL>
-<LI>
-
-Small integers, being represented as immediate values, don't require
-memory access, just a couple of instructions for each elementary operation.
-<LI>
-
-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 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>
-algorithm, the Karatsuba multiplication, which is an
-<CODE>O(N^1.6)</CODE>
-algorithm.
-<LI>
-
-For very large numbers (more than 12000 decimal digits), CLN uses
-Schönhage-Strassen
-<A NAME="IDX331"></A>
-multiplication, which is an asymptotically optimal multiplication 
-algorithm.
-<LI>
-
-These fast multiplication algorithms also give improvements in the speed
-of division and radix conversion.
-</UL>
-
-
-
-<H2><A NAME="SEC63" HREF="cln_toc.html#TOC63">10.4 Garbage collection</A></H2>
-<P>
-<A NAME="IDX332"></A>
-
-
-<P>
-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
-number objects, only the objects' reference count are manipulated.
-
-
-<P>
-Memory occupied by number objects are automatically reclaimed as soon as
-their reference count drops to zero.
-
-
-<P>
-For number rings, another strategy is implemented: There is a cache of,
-for example, the modular integer rings. A modular integer ring is destroyed
-only if its reference count dropped to zero and the cache is about to be
-resized. The effect of this strategy is that recently used rings remain
-cached, whereas undue memory consumption through cached rings is avoided.
-
-
-<P><HR><P>
-Go to the <A HREF="cln_1.html">first</A>, <A HREF="cln_9.html">previous</A>, <A HREF="cln_11.html">next</A>, <A HREF="cln_13.html">last</A> section, <A HREF="cln_toc.html">table of contents</A>.
-</BODY>
-</HTML>
diff --git a/doc/cln_11.html b/doc/cln_11.html
deleted file mode 100644 (file)
index 2ff22a4..0000000
+++ /dev/null
@@ -1,476 +0,0 @@
-<HTML>
-<HEAD>
-<!-- Created by texi2html 1.56k from cln.texi on 28 August 2000 -->
-
-<TITLE>CLN, a Class Library for Numbers - 11. Using the library</TITLE>
-</HEAD>
-<BODY>
-Go to the <A HREF="cln_1.html">first</A>, <A HREF="cln_10.html">previous</A>, <A HREF="cln_12.html">next</A>, <A HREF="cln_13.html">last</A> section, <A HREF="cln_toc.html">table of contents</A>.
-<P><HR><P>
-
-
-<H1><A NAME="SEC64" HREF="cln_toc.html#TOC64">11. Using the library</A></H1>
-
-<P>
-For the following discussion, we will assume that you have installed
-the CLN source in <CODE>$CLN_DIR</CODE> and built it in <CODE>$CLN_TARGETDIR</CODE>.
-For example, for me it's <CODE>CLN_DIR="$HOME/cln"</CODE> and
-<CODE>CLN_TARGETDIR="$HOME/cln/linuxelf"</CODE>. You might define these as
-environment variables, or directly substitute the appropriate values.
-
-
-
-
-<H2><A NAME="SEC65" HREF="cln_toc.html#TOC65">11.1 Compiler options</A></H2>
-<P>
-<A NAME="IDX333"></A>
-
-
-<P>
-Until you have installed CLN in a public place, the following options are
-needed:
-
-
-<P>
-When you compile CLN application code, add the flags
-
-<PRE>
-   -I$CLN_DIR/include -I$CLN_TARGETDIR/include
-</PRE>
-
-<P>
-to the C++ compiler's command line (<CODE>make</CODE> variable CFLAGS or CXXFLAGS).
-When you link CLN application code to form an executable, add the flags
-
-<PRE>
-   $CLN_TARGETDIR/src/libcln.a
-</PRE>
-
-<P>
-to the C/C++ compiler's command line (<CODE>make</CODE> variable LIBS).
-
-
-<P>
-If you did a <CODE>make install</CODE>, the include files are installed in a
-public directory (normally <CODE>/usr/local/include</CODE>), hence you don't
-need special flags for compiling. The library has been installed to a
-public directory as well (normally <CODE>/usr/local/lib</CODE>), hence when
-linking a CLN application it is sufficient to give the flag <CODE>-lcln</CODE>.
-
-
-
-
-<H2><A NAME="SEC66" HREF="cln_toc.html#TOC66">11.2 Compatibility to old CLN versions</A></H2>
-<P>
-<A NAME="IDX334"></A>
-<A NAME="IDX335"></A>
-
-
-<P>
-As of CLN version 1.1 all non-macro identifiers were hidden in namespace
-<CODE>cln</CODE> in order to avoid potential name clashes with other C++
-libraries. If you have an old application, you will have to manually
-port it to the new scheme. The following principles will help during
-the transition:
-
-<UL>
-<LI>
-
-All headers are now in a separate subdirectory. Instead of including
-<CODE>cl_</CODE><VAR>something</VAR><CODE>.h</CODE>, include
-<CODE>cln/</CODE><VAR>something</VAR><CODE>.h</CODE> now.
-<LI>
-
-All public identifiers (typenames and functions) have lost their
-<CODE>cl_</CODE> prefix.  Exceptions are all the typenames of number types,
-(cl_N, cl_I, cl_MI, ...), rings, symbolic types (cl_string,
-cl_symbol) and polynomials (cl_UP_<VAR>type</VAR>).  (This is because their
-names would not be mnemonic enough once the namespace <CODE>cln</CODE> is
-imported. Even in a namespace we favor <CODE>cl_N</CODE> over <CODE>N</CODE>.)
-<LI>
-
-All public <EM>functions</EM> that had by a <CODE>cl_</CODE> in their name still
-carry that <CODE>cl_</CODE> if it is intrinsic part of a typename (as in
-<CODE>cl_I_to_int ()</CODE>).
-</UL>
-
-<P>
-When developing other libraries, please keep in mind not to import the
-namespace <CODE>cln</CODE> in one of your public header files by saying
-<CODE>using namespace cln;</CODE>. This would propagate to other applications
-and can cause name clashes there.
-
-
-
-
-<H2><A NAME="SEC67" HREF="cln_toc.html#TOC67">11.3 Include files</A></H2>
-<P>
-<A NAME="IDX336"></A>
-<A NAME="IDX337"></A>
-
-
-<P>
-Here is a summary of the include files and their contents.
-
-
-<DL COMPACT>
-
-<DT><CODE>&#60;cln/object.h&#62;</CODE>
-<DD>
-General definitions, reference counting, garbage collection.
-<DT><CODE>&#60;cln/number.h&#62;</CODE>
-<DD>
-The class cl_number.
-<DT><CODE>&#60;cln/complex.h&#62;</CODE>
-<DD>
-Functions for class cl_N, the complex numbers.
-<DT><CODE>&#60;cln/real.h&#62;</CODE>
-<DD>
-Functions for class cl_R, the real numbers.
-<DT><CODE>&#60;cln/float.h&#62;</CODE>
-<DD>
-Functions for class cl_F, the floats.
-<DT><CODE>&#60;cln/sfloat.h&#62;</CODE>
-<DD>
-Functions for class cl_SF, the short-floats.
-<DT><CODE>&#60;cln/ffloat.h&#62;</CODE>
-<DD>
-Functions for class cl_FF, the single-floats.
-<DT><CODE>&#60;cln/dfloat.h&#62;</CODE>
-<DD>
-Functions for class cl_DF, the double-floats.
-<DT><CODE>&#60;cln/lfloat.h&#62;</CODE>
-<DD>
-Functions for class cl_LF, the long-floats.
-<DT><CODE>&#60;cln/rational.h&#62;</CODE>
-<DD>
-Functions for class cl_RA, the rational numbers.
-<DT><CODE>&#60;cln/integer.h&#62;</CODE>
-<DD>
-Functions for class cl_I, the integers.
-<DT><CODE>&#60;cln/io.h&#62;</CODE>
-<DD>
-Input/Output.
-<DT><CODE>&#60;cln/complex_io.h&#62;</CODE>
-<DD>
-Input/Output for class cl_N, the complex numbers.
-<DT><CODE>&#60;cln/real_io.h&#62;</CODE>
-<DD>
-Input/Output for class cl_R, the real numbers.
-<DT><CODE>&#60;cln/float_io.h&#62;</CODE>
-<DD>
-Input/Output for class cl_F, the floats.
-<DT><CODE>&#60;cln/sfloat_io.h&#62;</CODE>
-<DD>
-Input/Output for class cl_SF, the short-floats.
-<DT><CODE>&#60;cln/ffloat_io.h&#62;</CODE>
-<DD>
-Input/Output for class cl_FF, the single-floats.
-<DT><CODE>&#60;cln/dfloat_io.h&#62;</CODE>
-<DD>
-Input/Output for class cl_DF, the double-floats.
-<DT><CODE>&#60;cln/lfloat_io.h&#62;</CODE>
-<DD>
-Input/Output for class cl_LF, the long-floats.
-<DT><CODE>&#60;cln/rational_io.h&#62;</CODE>
-<DD>
-Input/Output for class cl_RA, the rational numbers.
-<DT><CODE>&#60;cln/integer_io.h&#62;</CODE>
-<DD>
-Input/Output for class cl_I, the integers.
-<DT><CODE>&#60;cln/input.h&#62;</CODE>
-<DD>
-Flags for customizing input operations.
-<DT><CODE>&#60;cln/output.h&#62;</CODE>
-<DD>
-Flags for customizing output operations.
-<DT><CODE>&#60;cln/malloc.h&#62;</CODE>
-<DD>
-<CODE>malloc_hook</CODE>, <CODE>free_hook</CODE>.
-<DT><CODE>&#60;cln/abort.h&#62;</CODE>
-<DD>
-<CODE>cl_abort</CODE>.
-<DT><CODE>&#60;cln/condition.h&#62;</CODE>
-<DD>
-Conditions/exceptions.
-<DT><CODE>&#60;cln/string.h&#62;</CODE>
-<DD>
-Strings.
-<DT><CODE>&#60;cln/symbol.h&#62;</CODE>
-<DD>
-Symbols.
-<DT><CODE>&#60;cln/proplist.h&#62;</CODE>
-<DD>
-Property lists.
-<DT><CODE>&#60;cln/ring.h&#62;</CODE>
-<DD>
-General rings.
-<DT><CODE>&#60;cln/null_ring.h&#62;</CODE>
-<DD>
-The null ring.
-<DT><CODE>&#60;cln/complex_ring.h&#62;</CODE>
-<DD>
-The ring of complex numbers.
-<DT><CODE>&#60;cln/real_ring.h&#62;</CODE>
-<DD>
-The ring of real numbers.
-<DT><CODE>&#60;cln/rational_ring.h&#62;</CODE>
-<DD>
-The ring of rational numbers.
-<DT><CODE>&#60;cln/integer_ring.h&#62;</CODE>
-<DD>
-The ring of integers.
-<DT><CODE>&#60;cln/numtheory.h&#62;</CODE>
-<DD>
-Number threory functions.
-<DT><CODE>&#60;cln/modinteger.h&#62;</CODE>
-<DD>
-Modular integers.
-<DT><CODE>&#60;cln/V.h&#62;</CODE>
-<DD>
-Vectors.
-<DT><CODE>&#60;cln/GV.h&#62;</CODE>
-<DD>
-General vectors.
-<DT><CODE>&#60;cln/GV_number.h&#62;</CODE>
-<DD>
-General vectors over cl_number.
-<DT><CODE>&#60;cln/GV_complex.h&#62;</CODE>
-<DD>
-General vectors over cl_N.
-<DT><CODE>&#60;cln/GV_real.h&#62;</CODE>
-<DD>
-General vectors over cl_R.
-<DT><CODE>&#60;cln/GV_rational.h&#62;</CODE>
-<DD>
-General vectors over cl_RA.
-<DT><CODE>&#60;cln/GV_integer.h&#62;</CODE>
-<DD>
-General vectors over cl_I.
-<DT><CODE>&#60;cln/GV_modinteger.h&#62;</CODE>
-<DD>
-General vectors of modular integers.
-<DT><CODE>&#60;cln/SV.h&#62;</CODE>
-<DD>
-Simple vectors.
-<DT><CODE>&#60;cln/SV_number.h&#62;</CODE>
-<DD>
-Simple vectors over cl_number.
-<DT><CODE>&#60;cln/SV_complex.h&#62;</CODE>
-<DD>
-Simple vectors over cl_N.
-<DT><CODE>&#60;cln/SV_real.h&#62;</CODE>
-<DD>
-Simple vectors over cl_R.
-<DT><CODE>&#60;cln/SV_rational.h&#62;</CODE>
-<DD>
-Simple vectors over cl_RA.
-<DT><CODE>&#60;cln/SV_integer.h&#62;</CODE>
-<DD>
-Simple vectors over cl_I.
-<DT><CODE>&#60;cln/SV_ringelt.h&#62;</CODE>
-<DD>
-Simple vectors of general ring elements.
-<DT><CODE>&#60;cln/univpoly.h&#62;</CODE>
-<DD>
-Univariate polynomials.
-<DT><CODE>&#60;cln/univpoly_integer.h&#62;</CODE>
-<DD>
-Univariate polynomials over the integers.
-<DT><CODE>&#60;cln/univpoly_rational.h&#62;</CODE>
-<DD>
-Univariate polynomials over the rational numbers.
-<DT><CODE>&#60;cln/univpoly_real.h&#62;</CODE>
-<DD>
-Univariate polynomials over the real numbers.
-<DT><CODE>&#60;cln/univpoly_complex.h&#62;</CODE>
-<DD>
-Univariate polynomials over the complex numbers.
-<DT><CODE>&#60;cln/univpoly_modint.h&#62;</CODE>
-<DD>
-Univariate polynomials over modular integer rings.
-<DT><CODE>&#60;cln/timing.h&#62;</CODE>
-<DD>
-Timing facilities.
-<DT><CODE>&#60;cln/cln.h&#62;</CODE>
-<DD>
-Includes all of the above.
-</DL>
-
-
-
-<H2><A NAME="SEC68" HREF="cln_toc.html#TOC68">11.4 An Example</A></H2>
-
-<P>
-A function which computes the nth Fibonacci number can be written as follows.
-<A NAME="IDX338"></A>
-
-
-
-<PRE>
-#include &#60;cln/integer.h&#62;
-#include &#60;cln/real.h&#62;
-using namespace cln;
-
-// Returns F_n, computed as the nearest integer to
-// ((1+sqrt(5))/2)^n/sqrt(5). Assume n&#62;=0.
-const cl_I fibonacci (int n)
-{
-        // Need a precision of ((1+sqrt(5))/2)^-n.
-        cl_float_format_t prec = cl_float_format((int)(0.208987641*n+5));
-        cl_R sqrt5 = sqrt(cl_float(5,prec));
-        cl_R phi = (1+sqrt5)/2;
-        return round1( expt(phi,n)/sqrt5 );
-}
-</PRE>
-
-<P>
-Let's explain what is going on in detail.
-
-
-<P>
-The include file <CODE>&#60;cln/integer.h&#62;</CODE> is necessary because the type
-<CODE>cl_I</CODE> is used in the function, and the include file <CODE>&#60;cln/real.h&#62;</CODE>
-is needed for the type <CODE>cl_R</CODE> and the floating point number functions.
-The order of the include files does not matter.  In order not to write out
-<CODE>cln::</CODE><VAR>foo</VAR> we can safely import the whole namespace <CODE>cln</CODE>.
-
-
-<P>
-Then comes the function declaration. The argument is an <CODE>int</CODE>, the
-result an integer. The return type is defined as <SAMP>`const cl_I'</SAMP>, not
-simply <SAMP>`cl_I'</SAMP>, because that allows the compiler to detect typos like
-<SAMP>`fibonacci(n) = 100'</SAMP>. It would be possible to declare the return
-type as <CODE>const cl_R</CODE> (real number) or even <CODE>const cl_N</CODE> (complex
-number). We use the most specialized possible return type because functions
-which call <SAMP>`fibonacci'</SAMP> will be able to profit from the compiler's type
-analysis: Adding two integers is slightly more efficient than adding the
-same objects declared as complex numbers, because it needs less type
-dispatch. Also, when linking to CLN as a non-shared library, this minimizes
-the size of the resulting executable program.
-
-
-<P>
-The result will be computed as expt(phi,n)/sqrt(5), rounded to the nearest
-integer. In order to get a correct result, the absolute error should be less
-than 1/2, i.e. the relative error should be less than sqrt(5)/(2*expt(phi,n)).
-To this end, the first line computes a floating point precision for sqrt(5)
-and phi.
-
-
-<P>
-Then sqrt(5) is computed by first converting the integer 5 to a floating point
-number and than taking the square root. The converse, first taking the square
-root of 5, and then converting to the desired precision, would not work in
-CLN: The square root would be computed to a default precision (normally
-single-float precision), and the following conversion could not help about
-the lacking accuracy. This is because CLN is not a symbolic computer algebra
-system and does not represent sqrt(5) in a non-numeric way.
-
-
-<P>
-The type <CODE>cl_R</CODE> for sqrt5 and, in the following line, phi is the only
-possible choice. You cannot write <CODE>cl_F</CODE> because the C++ compiler can
-only infer that <CODE>cl_float(5,prec)</CODE> is a real number. You cannot write
-<CODE>cl_N</CODE> because a <SAMP>`round1'</SAMP> does not exist for general complex
-numbers.
-
-
-<P>
-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.
-
-
-<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="SEC69" HREF="cln_toc.html#TOC69">11.5 Debugging support</A></H2>
-<P>
-<A NAME="IDX339"></A>
-
-
-<P>
-When debugging a CLN application with GNU <CODE>gdb</CODE>, two facilities are
-available from the library:
-
-
-
-<UL>
-<LI>The library does type checks, range checks, consistency checks at
-
-many places. When one of these fails, the function <CODE>cl_abort()</CODE> is
-called. Its default implementation is to perform an <CODE>exit(1)</CODE>, so
-you won't have a core dump. But for debugging, it is best to set a
-breakpoint at this function:
-
-<PRE>
-(gdb) break cl_abort
-</PRE>
-
-When this breakpoint is hit, look at the stack's backtrace:
-
-<PRE>
-(gdb) where
-</PRE>
-
-<LI>The debugger's normal <CODE>print</CODE> command doesn't know about
-
-CLN's types and therefore prints mostly useless hexadecimal addresses.
-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="IDX340"></A>
-
-<PRE>
-#define CL_DEBUG
-#include &#60;cln/string.h&#62;
-</PRE>
-
-Now, if you have in your program a variable <CODE>cl_string s</CODE>, and
-inspect it under <CODE>gdb</CODE>, the output may look like this:
-
-<PRE>
-(gdb) print s
-$7 = {&#60;cl_gcpointer&#62; = { = {pointer = 0x8055b60, heappointer = 0x8055b60,
-  word = 134568800}}, }
-(gdb) call cl_print(s)
-(cl_string) ""
-$8 = 134568800
-</PRE>
-
-Note that the output of <CODE>cl_print</CODE> goes to the program's error output,
-not to gdb's standard output.
-
-Note, however, that the above facility does not work with all CLN types,
-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="IDX341"></A>
-
-<PRE>
-(gdb) print s
-$7 = {&#60;cl_gcpointer&#62; = { = {pointer = 0x8055b60, heappointer = 0x8055b60,
-  word = 134568800}}, }
-(gdb) call s.debug_print()
-(cl_string) ""
-(gdb) define cprint
-&#62;call ($1).debug_print()
-&#62;end
-(gdb) cprint s
-(cl_string) ""
-</PRE>
-
-Unfortunately, this feature does not seem to work under all circumstances.
-</UL>
-
-<P><HR><P>
-Go to the <A HREF="cln_1.html">first</A>, <A HREF="cln_10.html">previous</A>, <A HREF="cln_12.html">next</A>, <A HREF="cln_13.html">last</A> section, <A HREF="cln_toc.html">table of contents</A>.
-</BODY>
-</HTML>
diff --git a/doc/cln_12.html b/doc/cln_12.html
deleted file mode 100644 (file)
index 5c86ada..0000000
+++ /dev/null
@@ -1,108 +0,0 @@
-<HTML>
-<HEAD>
-<!-- Created by texi2html 1.56k from cln.texi on 28 August 2000 -->
-
-<TITLE>CLN, a Class Library for Numbers - 12. Customizing</TITLE>
-</HEAD>
-<BODY>
-Go to the <A HREF="cln_1.html">first</A>, <A HREF="cln_11.html">previous</A>, <A HREF="cln_13.html">next</A>, <A HREF="cln_13.html">last</A> section, <A HREF="cln_toc.html">table of contents</A>.
-<P><HR><P>
-
-
-<H1><A NAME="SEC70" HREF="cln_toc.html#TOC70">12. Customizing</A></H1>
-<P>
-<A NAME="IDX342"></A>
-
-
-
-
-<H2><A NAME="SEC71" HREF="cln_toc.html#TOC71">12.1 Error handling</A></H2>
-
-<P>
-When a fatal error occurs, an error message is output to the standard error
-output stream, and the function <CODE>cl_abort</CODE> is called. The default
-version of this function (provided in the library) terminates the application.
-To catch such a fatal error, you need to define the function <CODE>cl_abort</CODE>
-yourself, with the prototype
-
-<PRE>
-#include &#60;cln/abort.h&#62;
-void cl_abort (void);
-</PRE>
-
-<P>
-<A NAME="IDX343"></A>
-This function must not return control to its caller.
-
-
-
-
-<H2><A NAME="SEC72" HREF="cln_toc.html#TOC72">12.2 Floating-point underflow</A></H2>
-<P>
-<A NAME="IDX344"></A>
-
-
-<P>
-Floating point underflow denotes the situation when a floating-point number
-is to be created which is so close to <CODE>0</CODE> that its exponent is too
-low to be represented internally. By default, this causes a fatal error.
-If you set the global variable
-
-<PRE>
-cl_boolean cl_inhibit_floating_point_underflow
-</PRE>
-
-<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>.
-
-
-
-
-<H2><A NAME="SEC73" HREF="cln_toc.html#TOC73">12.3 Customizing I/O</A></H2>
-
-<P>
-The output of the function <CODE>fprint</CODE> may be customized by changing the
-value of the global variable <CODE>default_print_flags</CODE>.
-<A NAME="IDX345"></A>
-
-
-
-
-<H2><A NAME="SEC74" HREF="cln_toc.html#TOC74">12.4 Customizing the memory allocator</A></H2>
-
-<P>
-Every memory allocation of CLN is done through the function pointer
-<CODE>malloc_hook</CODE>. Freeing of this memory is done through the function
-pointer <CODE>free_hook</CODE>. The default versions of these functions,
-provided in the library, call <CODE>malloc</CODE> and <CODE>free</CODE> and check
-the <CODE>malloc</CODE> result against <CODE>NULL</CODE>.
-If you want to provide another memory allocator, you need to define
-the variables <CODE>malloc_hook</CODE> and <CODE>free_hook</CODE> yourself,
-like this:
-
-<PRE>
-#include &#60;cln/malloc.h&#62;
-namespace cln {
-        void* (*malloc_hook) (size_t size) = ...;
-        void (*free_hook) (void* ptr)      = ...;
-}
-</PRE>
-
-<P>
-<A NAME="IDX346"></A>
-<A NAME="IDX347"></A>
-The <CODE>cl_malloc_hook</CODE> function must not return a <CODE>NULL</CODE> pointer.
-
-
-<P>
-It is not possible to change the memory allocator at runtime, because
-it is already called at program startup by the constructors of some
-global variables.
-
-
-<P><HR><P>
-Go to the <A HREF="cln_1.html">first</A>, <A HREF="cln_11.html">previous</A>, <A HREF="cln_13.html">next</A>, <A HREF="cln_13.html">last</A> section, <A HREF="cln_toc.html">table of contents</A>.
-</BODY>
-</HTML>
diff --git a/doc/cln_13.html b/doc/cln_13.html
deleted file mode 100644 (file)
index d485564..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-<HTML>
-<HEAD>
-<!-- Created by texi2html 1.56k from cln.texi on 28 August 2000 -->
-
-<TITLE>CLN, a Class Library for Numbers - Index</TITLE>
-</HEAD>
-<BODY>
-Go to the <A HREF="cln_1.html">first</A>, <A HREF="cln_12.html">previous</A>, next, last section, <A HREF="cln_toc.html">table of contents</A>.
-<P><HR><P>
-
-
-<H1><A NAME="SEC75" HREF="cln_toc.html#TOC75">Index</A></H1>
-
-<P>
-Jump to:
-<P>
-
-
-<P><HR><P>
-Go to the <A HREF="cln_1.html">first</A>, <A HREF="cln_12.html">previous</A>, next, last section, <A HREF="cln_toc.html">table of contents</A>.
-</BODY>
-</HTML>
diff --git a/doc/cln_2.html b/doc/cln_2.html
deleted file mode 100644 (file)
index 16bfa17..0000000
+++ /dev/null
@@ -1,279 +0,0 @@
-<HTML>
-<HEAD>
-<!-- Created by texi2html 1.56k from cln.texi on 28 August 2000 -->
-
-<TITLE>CLN, a Class Library for Numbers - 2. Installation</TITLE>
-</HEAD>
-<BODY>
-Go to the <A HREF="cln_1.html">first</A>, <A HREF="cln_1.html">previous</A>, <A HREF="cln_3.html">next</A>, <A HREF="cln_13.html">last</A> section, <A HREF="cln_toc.html">table of contents</A>.
-<P><HR><P>
-
-
-<H1><A NAME="SEC2" HREF="cln_toc.html#TOC2">2. Installation</A></H1>
-
-<P>
-This section describes how to install the CLN package on your system.
-
-
-
-
-<H2><A NAME="SEC3" HREF="cln_toc.html#TOC3">2.1 Prerequisites</A></H2>
-
-
-
-<H3><A NAME="SEC4" HREF="cln_toc.html#TOC4">2.1.1 C++ compiler</A></H3>
-
-<P>
-To build CLN, you need a C++ compiler.
-Actually, you need GNU <CODE>g++ 2.90</CODE> or newer, the EGCS compilers will
-do.
-I recommend GNU <CODE>g++ 2.95</CODE> or newer.
-
-
-<P>
-The following C++ features are used:
-classes, member functions, overloading of functions and operators,
-constructors and destructors, inline, const, multiple inheritance,
-templates and namespaces.
-
-
-<P>
-The following C++ features are not used:
-<CODE>new</CODE>, <CODE>delete</CODE>, virtual inheritance, exceptions.
-
-
-<P>
-CLN relies on semi-automatic ordering of initializations
-of static and global variables, a feature which I could
-implement for GNU g++ only.
-
-
-
-
-<H3><A NAME="SEC5" HREF="cln_toc.html#TOC5">2.1.2 Make utility</A></H3>
-<P>
-<A NAME="IDX4"></A>
-
-
-<P>
-To build CLN, you also need to have GNU <CODE>make</CODE> installed.
-
-
-
-
-<H3><A NAME="SEC6" HREF="cln_toc.html#TOC6">2.1.3 Sed utility</A></H3>
-<P>
-<A NAME="IDX5"></A>
-
-
-<P>
-To build CLN on HP-UX, you also need to have GNU <CODE>sed</CODE> installed.
-This is because the libtool script, which creates the CLN library, relies
-on <CODE>sed</CODE>, and the vendor's <CODE>sed</CODE> utility on these systems is too
-limited.
-
-
-
-
-<H2><A NAME="SEC7" HREF="cln_toc.html#TOC7">2.2 Building the library</A></H2>
-
-<P>
-As with any autoconfiguring GNU software, installation is as easy as this:
-
-
-
-<PRE>
-$ ./configure
-$ make
-$ make check
-</PRE>
-
-<P>
-If on your system, <SAMP>`make'</SAMP> is not GNU <CODE>make</CODE>, you have to use
-<SAMP>`gmake'</SAMP> instead of <SAMP>`make'</SAMP> above.
-
-
-<P>
-The <CODE>configure</CODE> command checks out some features of your system and
-C++ compiler and builds the <CODE>Makefile</CODE>s. The <CODE>make</CODE> command
-builds the library. This step may take 4 hours on an average workstation.
-The <CODE>make check</CODE> runs some test to check that no important subroutine
-has been miscompiled.
-
-
-<P>
-The <CODE>configure</CODE> command accepts options. To get a summary of them, try
-
-
-
-<PRE>
-$ ./configure --help
-</PRE>
-
-<P>
-Some of the options are explained in detail in the <SAMP>`INSTALL.generic'</SAMP> file.
-
-
-<P>
-You can specify the C compiler, the C++ compiler and their options through
-the following environment variables when running <CODE>configure</CODE>:
-
-
-<DL COMPACT>
-
-<DT><CODE>CC</CODE>
-<DD>
-Specifies the C compiler.
-
-<DT><CODE>CFLAGS</CODE>
-<DD>
-Flags to be given to the C compiler when compiling programs (not when linking).
-
-<DT><CODE>CXX</CODE>
-<DD>
-Specifies the C++ compiler.
-
-<DT><CODE>CXXFLAGS</CODE>
-<DD>
-Flags to be given to the C++ compiler when compiling programs (not when linking).
-</DL>
-
-<P>
-Examples:
-
-
-
-<PRE>
-$ CC="gcc" CFLAGS="-O" CXX="g++" CXXFLAGS="-O" ./configure
-$ CC="gcc -V egcs-2.91.60" CFLAGS="-O -g" \
-  CXX="g++ -V egcs-2.91.60" CXXFLAGS="-O -g" ./configure
-$ CC="gcc -V 2.95.2" CFLAGS="-O2 -fno-exceptions" \
-  CXX="g++ -V 2.95.2" CFLAGS="-O2 -fno-exceptions" ./configure
-</PRE>
-
-<P>
-Note that for these environment variables to take effect, you have to set
-them (assuming a Bourne-compatible shell) on the same line as the
-<CODE>configure</CODE> command. If you made the settings in earlier shell
-commands, you have to <CODE>export</CODE> the environment variables before
-calling <CODE>configure</CODE>. In a <CODE>csh</CODE> shell, you have to use the
-<SAMP>`setenv'</SAMP> command for setting each of the environment variables.
-
-
-<P>
-Currently CLN works only with the GNU <CODE>g++</CODE> compiler, and only in
-optimizing mode. So you should specify at least <CODE>-O</CODE> in the CXXFLAGS,
-or no CXXFLAGS at all. (If CXXFLAGS is not set, CLN will use <CODE>-O</CODE>.)
-
-
-<P>
-If you use <CODE>g++</CODE> version 2.8.x or egcs-2.91.x (a.k.a. egcs-1.1) or
-gcc-2.95.x, I recommend adding <SAMP>`-fno-exceptions'</SAMP> to the CXXFLAGS.
-This will likely generate better code.
-
-
-<P>
-If you use <CODE>g++</CODE> version egcs-2.91.x (egcs-1.1) or gcc-2.95.x on Sparc,
-add either <SAMP>`-O'</SAMP>, <SAMP>`-O1'</SAMP> or <SAMP>`-O2 -fno-schedule-insns'</SAMP> to the 
-CXXFLAGS.  With full <SAMP>`-O2'</SAMP>, <CODE>g++</CODE> miscompiles the division routines.
-Also, if you have <CODE>g++</CODE> version egcs-1.1.1 or older on Sparc, you must
-specify <SAMP>`--disable-shared'</SAMP> because <CODE>g++</CODE> would miscompile parts of 
-the library.
-
-
-<P>
-By default, both a shared and a static library are built.  You can build
-CLN as a static (or shared) library only, by calling <CODE>configure</CODE> with
-the option <SAMP>`--disable-shared'</SAMP> (or <SAMP>`--disable-static'</SAMP>).  While
-shared libraries are usually more convenient to use, they may not work
-on all architectures.  Try disabling them if you run into linker
-problems.  Also, they are generally somewhat slower than static
-libraries so runtime-critical applications should be linked statically.
-
-
-
-
-<H3><A NAME="SEC8" HREF="cln_toc.html#TOC8">2.2.1 Using the GNU MP Library</A></H3>
-<P>
-<A NAME="IDX6"></A>
-
-
-<P>
-Starting with version 1.1, CLN may be configured to make use of a
-preinstalled <CODE>gmp</CODE> library.  Please make sure that you have at
-least <CODE>gmp</CODE> version 3.0 installed since earlier versions are
-unsupported and likely not to work.  Enabling this feature by calling
-<CODE>configure</CODE> with the option <SAMP>`--with-gmp'</SAMP> is known to be quite
-a boost for CLN's performance.
-
-
-<P>
-If you have installed the <CODE>gmp</CODE> library and its header file in
-some place where your compiler cannot find it by default, you must help
-<CODE>configure</CODE> by setting <CODE>CPPFLAGS</CODE> and <CODE>LDFLAGS</CODE>.  Here is
-an example:
-
-
-
-<PRE>
-$ CC="gcc" CFLAGS="-O2" CXX="g++" CXXFLAGS="-O2 -fno-exceptions" \
-  CPPFLAGS="-I/opt/gmp/include" LDFLAGS="-L/opt/gmp/lib" ./configure --with-gmp
-</PRE>
-
-
-
-<H2><A NAME="SEC9" HREF="cln_toc.html#TOC9">2.3 Installing the library</A></H2>
-<P>
-<A NAME="IDX7"></A>
-
-
-<P>
-As with any autoconfiguring GNU software, installation is as easy as this:
-
-
-
-<PRE>
-$ make install
-</PRE>
-
-<P>
-The <SAMP>`make install'</SAMP> command installs the library and the include files
-into public places (<TT>`/usr/local/lib/'</TT> and <TT>`/usr/local/include/'</TT>,
-if you haven't specified a <CODE>--prefix</CODE> option to <CODE>configure</CODE>).
-This step may require superuser privileges.
-
-
-<P>
-If you have already built the library and wish to install it, but didn't
-specify <CODE>--prefix=...</CODE> at configure time, just re-run
-<CODE>configure</CODE>, giving it the same options as the first time, plus
-the <CODE>--prefix=...</CODE> option.
-
-
-
-
-<H2><A NAME="SEC10" HREF="cln_toc.html#TOC10">2.4 Cleaning up</A></H2>
-
-<P>
-You can remove system-dependent files generated by <CODE>make</CODE> through
-
-
-
-<PRE>
-$ make clean
-</PRE>
-
-<P>
-You can remove all files generated by <CODE>make</CODE>, thus reverting to a
-virgin distribution of CLN, through
-
-
-
-<PRE>
-$ make distclean
-</PRE>
-
-<P><HR><P>
-Go to the <A HREF="cln_1.html">first</A>, <A HREF="cln_1.html">previous</A>, <A HREF="cln_3.html">next</A>, <A HREF="cln_13.html">last</A> section, <A HREF="cln_toc.html">table of contents</A>.
-</BODY>
-</HTML>
diff --git a/doc/cln_3.html b/doc/cln_3.html
deleted file mode 100644 (file)
index 154d8d6..0000000
+++ /dev/null
@@ -1,401 +0,0 @@
-<HTML>
-<HEAD>
-<!-- Created by texi2html 1.56k from cln.texi on 28 August 2000 -->
-
-<TITLE>CLN, a Class Library for Numbers - 3. Ordinary number types</TITLE>
-</HEAD>
-<BODY>
-Go to the <A HREF="cln_1.html">first</A>, <A HREF="cln_2.html">previous</A>, <A HREF="cln_4.html">next</A>, <A HREF="cln_13.html">last</A> section, <A HREF="cln_toc.html">table of contents</A>.
-<P><HR><P>
-
-
-<H1><A NAME="SEC11" HREF="cln_toc.html#TOC11">3. Ordinary number types</A></H1>
-
-<P>
-CLN implements the following class hierarchy:
-
-
-
-<PRE>
-                        Number
-                      cl_number
-                    &#60;cln/number.h&#62;
-                          |
-                          |
-                 Real or complex number
-                        cl_N
-                    &#60;cln/complex.h&#62;
-                          |
-                          |
-                     Real number
-                        cl_R
-                     &#60;cln/real.h&#62;
-                          |
-      +-------------------+-------------------+
-      |                                       |
-Rational number                     Floating-point number
-    cl_RA                                   cl_F
-&#60;cln/rational.h&#62;                         &#60;cln/float.h&#62;
-      |                                       |
-      |                +--------------+--------------+--------------+
-   Integer             |              |              |              |
-    cl_I          Short-Float    Single-Float   Double-Float    Long-Float
-&#60;cln/integer.h&#62;      cl_SF          cl_FF          cl_DF          cl_LF
-                 &#60;cln/sfloat.h&#62; &#60;cln/ffloat.h&#62; &#60;cln/dfloat.h&#62; &#60;cln/lfloat.h&#62;
-</PRE>
-
-<P>
-<A NAME="IDX8"></A>
-<A NAME="IDX9"></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
-checking instead.
-
-
-<P>
-<A NAME="IDX10"></A>
-<A NAME="IDX11"></A>
-<A NAME="IDX12"></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="IDX13"></A>
-The class <CODE>cl_R</CODE> comprises real numbers of different kinds. It is an
-abstract class.
-
-
-<P>
-<A NAME="IDX14"></A>
-<A NAME="IDX15"></A>
-<A NAME="IDX16"></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
-to integers.
-
-
-<P>
-<A NAME="IDX17"></A>
-The class <CODE>cl_F</CODE> implements floating-point approximations to real numbers.
-It is an abstract class.
-
-
-
-
-<H2><A NAME="SEC12" HREF="cln_toc.html#TOC12">3.1 Exact numbers</A></H2>
-<P>
-<A NAME="IDX18"></A>
-
-
-<P>
-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
-representation. On exact numbers, the elementary operations (<CODE>+</CODE>,
-<CODE>-</CODE>, <CODE>*</CODE>, <CODE>/</CODE>, comparisons, ...) compute the completely
-correct result.
-
-
-<P>
-In CLN, the exact numbers are:
-
-
-
-<UL>
-<LI>
-
-rational numbers (including integers),
-<LI>
-
-complex numbers whose real and imaginary parts are both rational numbers.
-</UL>
-
-<P>
-Rational numbers are always normalized to the form
-<CODE><VAR>numerator</VAR>/<VAR>denominator</VAR></CODE> where the numerator and denominator
-are coprime integers and the denominator is positive. If the resulting
-denominator is <CODE>1</CODE>, the rational number is converted to an integer.
-
-
-<P>
-Small integers (typically in the range <CODE>-2^30</CODE>...<CODE>2^30-1</CODE>,
-for 32-bit machines) are especially efficient, because they consume no heap
-allocation. Otherwise the distinction between these immediate integers
-(called "fixnums") and heap allocated integers (called "bignums")
-is completely transparent.
-
-
-
-
-<H2><A NAME="SEC13" HREF="cln_toc.html#TOC13">3.2 Floating-point numbers</A></H2>
-<P>
-<A NAME="IDX19"></A>
-
-
-<P>
-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
-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.
-
-
-<P>
-<A NAME="IDX20"></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
-<SAMP>`0.7'</SAMP>. Rounding errors like this one are inevitable when computing
-with floating-point numbers.
-
-
-<P>
-Nevertheless, CLN rounds the floating-point results of the operations <CODE>+</CODE>,
-<CODE>-</CODE>, <CODE>*</CODE>, <CODE>/</CODE>, <CODE>sqrt</CODE> according to the "round-to-even"
-rule: It first computes the exact mathematical result and then returns the
-floating-point number which is nearest to this. If two floating-point numbers
-are equally distant from the ideal result, the one with a <CODE>0</CODE> in its least
-significant mantissa bit is chosen.
-
-
-<P>
-Similarly, testing floating point numbers for equality <SAMP>`x == y'</SAMP>
-is gambling with random errors. Better check for <SAMP>`abs(x - y) &#60; epsilon'</SAMP>
-for some well-chosen <CODE>epsilon</CODE>.
-
-
-<P>
-Floating point numbers come in four flavors:
-
-
-
-<UL>
-<LI>
-
-<A NAME="IDX21"></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).
-They don't consume heap allocation.
-
-<LI>
-
-<A NAME="IDX22"></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).
-In CLN, they are represented as IEEE single-precision floating point numbers.
-This corresponds closely to the C/C++ type <SAMP>`float'</SAMP>.
-
-<LI>
-
-<A NAME="IDX23"></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).
-In CLN, they are represented as IEEE double-precision floating point numbers.
-This corresponds closely to the C/C++ type <SAMP>`double'</SAMP>.
-
-<LI>
-
-<A NAME="IDX24"></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.
-The precision of a long float is unlimited, but once created, a long float
-has a fixed precision. (No "lazy recomputation".)
-</UL>
-
-<P>
-Of course, computations with long floats are more expensive than those
-with smaller floating-point formats.
-
-
-<P>
-CLN does not implement features like NaNs, denormalized numbers and
-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.
-
-
-<P>
-<A NAME="IDX25"></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
-when you change the precision of some computation (say, from <CODE>cl_DF</CODE>
-to <CODE>cl_LF</CODE>), you don't have to change the code, only the precision
-of the initial values. Also, many transcendental functions have been
-declared as returning a <CODE>cl_F</CODE> when the argument is a <CODE>cl_F</CODE>,
-but such declarations are missing for the types <CODE>cl_SF</CODE>, <CODE>cl_FF</CODE>,
-<CODE>cl_DF</CODE>, <CODE>cl_LF</CODE>. (Such declarations would be wrong if
-the floating point contagion rule happened to change in the future.)
-
-
-
-
-<H2><A NAME="SEC14" HREF="cln_toc.html#TOC14">3.3 Complex numbers</A></H2>
-<P>
-<A NAME="IDX26"></A>
-
-
-<P>
-Complex numbers, as implemented by the class <CODE>cl_N</CODE>, have a real
-part and an imaginary part, both real numbers. A complex number whose
-imaginary part is the exact number <CODE>0</CODE> is automatically converted
-to a real number.
-
-
-<P>
-Complex numbers can arise from real numbers alone, for example
-through application of <CODE>sqrt</CODE> or transcendental functions.
-
-
-
-
-<H2><A NAME="SEC15" HREF="cln_toc.html#TOC15">3.4 Conversions</A></H2>
-<P>
-<A NAME="IDX27"></A>
-
-
-<P>
-Conversions from any class to any its superclasses ("base classes" in
-C++ terminology) is done automatically.
-
-
-<P>
-Conversions from the C built-in types <SAMP>`long'</SAMP> and <SAMP>`unsigned long'</SAMP>
-are provided for the classes <CODE>cl_I</CODE>, <CODE>cl_RA</CODE>, <CODE>cl_R</CODE>,
-<CODE>cl_N</CODE> and <CODE>cl_number</CODE>.
-
-
-<P>
-Conversions from the C built-in types <SAMP>`int'</SAMP> and <SAMP>`unsigned int'</SAMP>
-are provided for the classes <CODE>cl_I</CODE>, <CODE>cl_RA</CODE>, <CODE>cl_R</CODE>,
-<CODE>cl_N</CODE> and <CODE>cl_number</CODE>. However, these conversions emphasize
-efficiency. Their range is therefore limited:
-
-
-
-<UL>
-<LI>
-
-The conversion from <SAMP>`int'</SAMP> works only if the argument is &#60; 2^29 and &#62; -2^29.
-<LI>
-
-The conversion from <SAMP>`unsigned int'</SAMP> works only if the argument is &#60; 2^29.
-</UL>
-
-<P>
-In a declaration like <SAMP>`cl_I x = 10;'</SAMP> the C++ compiler is able to
-do the conversion of <CODE>10</CODE> from <SAMP>`int'</SAMP> to <SAMP>`cl_I'</SAMP> at compile time
-already. On the other hand, code like <SAMP>`cl_I x = 1000000000;'</SAMP> is
-in error.
-So, if you want to be sure that an <SAMP>`int'</SAMP> whose magnitude is not guaranteed
-to be &#60; 2^29 is correctly converted to a <SAMP>`cl_I'</SAMP>, first convert it to a
-<SAMP>`long'</SAMP>. Similarly, if a large <SAMP>`unsigned int'</SAMP> is to be converted to a
-<SAMP>`cl_I'</SAMP>, first convert it to an <SAMP>`unsigned long'</SAMP>.
-
-
-<P>
-Conversions from the C built-in type <SAMP>`float'</SAMP> are provided for the classes
-<CODE>cl_FF</CODE>, <CODE>cl_F</CODE>, <CODE>cl_R</CODE>, <CODE>cl_N</CODE> and <CODE>cl_number</CODE>.
-
-
-<P>
-Conversions from the C built-in type <SAMP>`double'</SAMP> are provided for the classes
-<CODE>cl_DF</CODE>, <CODE>cl_F</CODE>, <CODE>cl_R</CODE>, <CODE>cl_N</CODE> and <CODE>cl_number</CODE>.
-
-
-<P>
-Conversions from <SAMP>`const char *'</SAMP> are provided for the classes
-<CODE>cl_I</CODE>, <CODE>cl_RA</CODE>,
-<CODE>cl_SF</CODE>, <CODE>cl_FF</CODE>, <CODE>cl_DF</CODE>, <CODE>cl_LF</CODE>, <CODE>cl_F</CODE>,
-<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="IDX28"></A>
-
-<PRE>
-   cl_I order_of_rubiks_cube_group = "43252003274489856000";
-</PRE>
-
-<P>
-Note that this conversion is done at runtime, not at compile-time.
-
-
-<P>
-Conversions from <CODE>cl_I</CODE> to the C built-in types <SAMP>`int'</SAMP>,
-<SAMP>`unsigned int'</SAMP>, <SAMP>`long'</SAMP>, <SAMP>`unsigned long'</SAMP> are provided through
-the functions
-
-
-<DL COMPACT>
-
-<DT><CODE>int cl_I_to_int (const cl_I&#38; x)</CODE>
-<DD>
-<A NAME="IDX29"></A>
-<DT><CODE>unsigned int cl_I_to_uint (const cl_I&#38; x)</CODE>
-<DD>
-<A NAME="IDX30"></A>
-<DT><CODE>long cl_I_to_long (const cl_I&#38; x)</CODE>
-<DD>
-<A NAME="IDX31"></A>
-<DT><CODE>unsigned long cl_I_to_ulong (const cl_I&#38; x)</CODE>
-<DD>
-<A NAME="IDX32"></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>
-
-<P>
-Conversions from the classes <CODE>cl_I</CODE>, <CODE>cl_RA</CODE>,
-<CODE>cl_SF</CODE>, <CODE>cl_FF</CODE>, <CODE>cl_DF</CODE>, <CODE>cl_LF</CODE>, <CODE>cl_F</CODE> and
-<CODE>cl_R</CODE>
-to the C built-in types <SAMP>`float'</SAMP> and <SAMP>`double'</SAMP> are provided through
-the functions
-
-
-<DL COMPACT>
-
-<DT><CODE>float float_approx (const <VAR>type</VAR>&#38; x)</CODE>
-<DD>
-<A NAME="IDX33"></A>
-<DT><CODE>double double_approx (const <VAR>type</VAR>&#38; x)</CODE>
-<DD>
-<A NAME="IDX34"></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.
-</DL>
-
-<P>
-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="IDX35"></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="IDX36"></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.
-Example:
-
-
-
-<PRE>
-   cl_I x = ...;
-   if (!(x &#62;= 0)) abort();
-   cl_I ten_x = The(cl_I)(expt(10,x)); // If x &#62;= 0, 10^x is an integer.
-                // In general, it would be a rational number.
-</PRE>
-
-<P><HR><P>
-Go to the <A HREF="cln_1.html">first</A>, <A HREF="cln_2.html">previous</A>, <A HREF="cln_4.html">next</A>, <A HREF="cln_13.html">last</A> section, <A HREF="cln_toc.html">table of contents</A>.
-</BODY>
-</HTML>
diff --git a/doc/cln_4.html b/doc/cln_4.html
deleted file mode 100644 (file)
index 43ff034..0000000
+++ /dev/null
@@ -1,2018 +0,0 @@
-<HTML>
-<HEAD>
-<!-- Created by texi2html 1.56k from cln.texi on 28 August 2000 -->
-
-<TITLE>CLN, a Class Library for Numbers - 4. Functions on numbers</TITLE>
-</HEAD>
-<BODY>
-Go to the <A HREF="cln_1.html">first</A>, <A HREF="cln_3.html">previous</A>, <A HREF="cln_5.html">next</A>, <A HREF="cln_13.html">last</A> section, <A HREF="cln_toc.html">table of contents</A>.
-<P><HR><P>
-
-
-<H1><A NAME="SEC16" HREF="cln_toc.html#TOC16">4. Functions on numbers</A></H1>
-
-<P>
-Each of the number classes declares its mathematical operations in the
-corresponding include file. For example, if your code operates with
-objects of type <CODE>cl_I</CODE>, it should <CODE>#include &#60;cln/integer.h&#62;</CODE>.
-
-
-
-
-<H2><A NAME="SEC17" HREF="cln_toc.html#TOC17">4.1 Constructing numbers</A></H2>
-
-<P>
-Here is how to create number objects "from nothing".
-
-
-
-
-<H3><A NAME="SEC18" HREF="cln_toc.html#TOC18">4.1.1 Constructing integers</A></H3>
-
-<P>
-<CODE>cl_I</CODE> objects are most easily constructed from C integers and from
-strings. See section <A HREF="cln_3.html#SEC15">3.4 Conversions</A>.
-
-
-
-
-<H3><A NAME="SEC19" HREF="cln_toc.html#TOC19">4.1.2 Constructing rational numbers</A></H3>
-
-<P>
-<CODE>cl_RA</CODE> objects can be constructed from strings. The syntax
-for rational numbers is described in section <A HREF="cln_5.html#SEC45">5.1 Internal and printed representation</A>.
-Another standard way to produce a rational number is through application
-of <SAMP>`operator /'</SAMP> or <SAMP>`recip'</SAMP> on integers.
-
-
-
-
-<H3><A NAME="SEC20" HREF="cln_toc.html#TOC20">4.1.3 Constructing floating-point numbers</A></H3>
-
-<P>
-<CODE>cl_F</CODE> objects with low precision are most easily constructed from
-C <SAMP>`float'</SAMP> and <SAMP>`double'</SAMP>. See section <A HREF="cln_3.html#SEC15">3.4 Conversions</A>.
-
-
-<P>
-To construct a <CODE>cl_F</CODE> with high precision, you can use the conversion
-from <SAMP>`const char *'</SAMP>, but you have to specify the desired precision
-within the string. (See section <A HREF="cln_5.html#SEC45">5.1 Internal and printed representation</A>.)
-Example:
-
-<PRE>
-   cl_F e = "0.271828182845904523536028747135266249775724709369996e+1_40";
-</PRE>
-
-<P>
-will set <SAMP>`e'</SAMP> to the given value, with a precision of 40 decimal digits.
-
-
-<P>
-The programmatic way to construct a <CODE>cl_F</CODE> with high precision is
-through the <CODE>cl_float</CODE> conversion function, see
-section <A HREF="cln_4.html#SEC40">4.11.1 Conversion to floating-point numbers</A>. For example, to compute
-<CODE>e</CODE> to 40 decimal places, first construct 1.0 to 40 decimal places
-and then apply the exponential function:
-
-<PRE>
-   cl_float_format_t precision = cl_float_format(40);
-   cl_F e = exp(cl_float(1,precision));
-</PRE>
-
-
-
-<H3><A NAME="SEC21" HREF="cln_toc.html#TOC21">4.1.4 Constructing complex numbers</A></H3>
-
-<P>
-Non-real <CODE>cl_N</CODE> objects are normally constructed through the function
-
-<PRE>
-   cl_N complex (const cl_R&#38; realpart, const cl_R&#38; imagpart)
-</PRE>
-
-<P>
-See section <A HREF="cln_4.html#SEC24">4.4 Elementary complex functions</A>.
-
-
-
-
-<H2><A NAME="SEC22" HREF="cln_toc.html#TOC22">4.2 Elementary functions</A></H2>
-
-<P>
-Each of the classes <CODE>cl_N</CODE>, <CODE>cl_R</CODE>, <CODE>cl_RA</CODE>, <CODE>cl_I</CODE>,
-<CODE>cl_F</CODE>, <CODE>cl_SF</CODE>, <CODE>cl_FF</CODE>, <CODE>cl_DF</CODE>, <CODE>cl_LF</CODE>
-defines the following operations:
-
-
-<DL COMPACT>
-
-<DT><CODE><VAR>type</VAR> operator + (const <VAR>type</VAR>&#38;, const <VAR>type</VAR>&#38;)</CODE>
-<DD>
-<A NAME="IDX37"></A>
-Addition.
-
-<DT><CODE><VAR>type</VAR> operator - (const <VAR>type</VAR>&#38;, const <VAR>type</VAR>&#38;)</CODE>
-<DD>
-<A NAME="IDX38"></A>
-Subtraction.
-
-<DT><CODE><VAR>type</VAR> operator - (const <VAR>type</VAR>&#38;)</CODE>
-<DD>
-Returns the negative of the argument.
-
-<DT><CODE><VAR>type</VAR> plus1 (const <VAR>type</VAR>&#38; x)</CODE>
-<DD>
-<A NAME="IDX39"></A>
-Returns <CODE>x + 1</CODE>.
-
-<DT><CODE><VAR>type</VAR> minus1 (const <VAR>type</VAR>&#38; x)</CODE>
-<DD>
-<A NAME="IDX40"></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="IDX41"></A>
-Multiplication.
-
-<DT><CODE><VAR>type</VAR> square (const <VAR>type</VAR>&#38; x)</CODE>
-<DD>
-<A NAME="IDX42"></A>
-Returns <CODE>x * x</CODE>.
-</DL>
-
-<P>
-Each of the classes <CODE>cl_N</CODE>, <CODE>cl_R</CODE>, <CODE>cl_RA</CODE>,
-<CODE>cl_F</CODE>, <CODE>cl_SF</CODE>, <CODE>cl_FF</CODE>, <CODE>cl_DF</CODE>, <CODE>cl_LF</CODE>
-defines the following operations:
-
-
-<DL COMPACT>
-
-<DT><CODE><VAR>type</VAR> operator / (const <VAR>type</VAR>&#38;, const <VAR>type</VAR>&#38;)</CODE>
-<DD>
-<A NAME="IDX43"></A>
-Division.
-
-<DT><CODE><VAR>type</VAR> recip (const <VAR>type</VAR>&#38;)</CODE>
-<DD>
-<A NAME="IDX44"></A>
-Returns the reciprocal of the argument.
-</DL>
-
-<P>
-The class <CODE>cl_I</CODE> doesn't define a <SAMP>`/'</SAMP> operation because
-in the C/C++ language this operator, applied to integral types,
-denotes the <SAMP>`floor'</SAMP> or <SAMP>`truncate'</SAMP> operation (which one of these,
-is implementation dependent). (See section <A HREF="cln_4.html#SEC26">4.6 Rounding functions</A>.)
-Instead, <CODE>cl_I</CODE> defines an "exact quotient" function:
-
-
-<DL COMPACT>
-
-<DT><CODE>cl_I exquo (const cl_I&#38; x, const cl_I&#38; y)</CODE>
-<DD>
-<A NAME="IDX45"></A>
-Checks that <CODE>y</CODE> divides <CODE>x</CODE>, and returns the quotient <CODE>x</CODE>/<CODE>y</CODE>.
-</DL>
-
-<P>
-The following exponentiation functions are defined:
-
-
-<DL COMPACT>
-
-<DT><CODE>cl_I expt_pos (const cl_I&#38; x, const cl_I&#38; y)</CODE>
-<DD>
-<A NAME="IDX46"></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="IDX47"></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>
-<DD>
-Returns <CODE>x^y</CODE>.
-</DL>
-
-<P>
-Each of the classes <CODE>cl_R</CODE>, <CODE>cl_RA</CODE>, <CODE>cl_I</CODE>,
-<CODE>cl_F</CODE>, <CODE>cl_SF</CODE>, <CODE>cl_FF</CODE>, <CODE>cl_DF</CODE>, <CODE>cl_LF</CODE>
-defines the following operation:
-
-
-<DL COMPACT>
-
-<DT><CODE><VAR>type</VAR> abs (const <VAR>type</VAR>&#38; x)</CODE>
-<DD>
-<A NAME="IDX48"></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>
-
-<P>
-The class <CODE>cl_N</CODE> implements this as follows:
-
-
-<DL COMPACT>
-
-<DT><CODE>cl_R abs (const cl_N x)</CODE>
-<DD>
-Returns the absolute value of <CODE>x</CODE>.
-</DL>
-
-<P>
-Each of the classes <CODE>cl_N</CODE>, <CODE>cl_R</CODE>, <CODE>cl_RA</CODE>, <CODE>cl_I</CODE>,
-<CODE>cl_F</CODE>, <CODE>cl_SF</CODE>, <CODE>cl_FF</CODE>, <CODE>cl_DF</CODE>, <CODE>cl_LF</CODE>
-defines the following operation:
-
-
-<DL COMPACT>
-
-<DT><CODE><VAR>type</VAR> signum (const <VAR>type</VAR>&#38; x)</CODE>
-<DD>
-<A NAME="IDX49"></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
-0 or 1 or -1.
-</DL>
-
-
-
-<H2><A NAME="SEC23" HREF="cln_toc.html#TOC23">4.3 Elementary rational functions</A></H2>
-
-<P>
-Each of the classes <CODE>cl_RA</CODE>, <CODE>cl_I</CODE> defines the following operations:
-
-
-<DL COMPACT>
-
-<DT><CODE>cl_I numerator (const <VAR>type</VAR>&#38; x)</CODE>
-<DD>
-<A NAME="IDX50"></A>
-Returns the numerator of <CODE>x</CODE>.
-
-<DT><CODE>cl_I denominator (const <VAR>type</VAR>&#38; x)</CODE>
-<DD>
-<A NAME="IDX51"></A>
-Returns the denominator of <CODE>x</CODE>.
-</DL>
-
-<P>
-The numerator and denominator of a rational number are normalized in such
-a way that they have no factor in common and the denominator is positive.
-
-
-
-
-<H2><A NAME="SEC24" HREF="cln_toc.html#TOC24">4.4 Elementary complex functions</A></H2>
-
-<P>
-The class <CODE>cl_N</CODE> defines the following operation:
-
-
-<DL COMPACT>
-
-<DT><CODE>cl_N complex (const cl_R&#38; a, const cl_R&#38; b)</CODE>
-<DD>
-<A NAME="IDX52"></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>
-
-<P>
-Each of the classes <CODE>cl_N</CODE>, <CODE>cl_R</CODE> defines the following operations:
-
-
-<DL COMPACT>
-
-<DT><CODE>cl_R realpart (const <VAR>type</VAR>&#38; x)</CODE>
-<DD>
-<A NAME="IDX53"></A>
-Returns the real part of <CODE>x</CODE>.
-
-<DT><CODE>cl_R imagpart (const <VAR>type</VAR>&#38; x)</CODE>
-<DD>
-<A NAME="IDX54"></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="IDX55"></A>
-Returns the complex conjugate of <CODE>x</CODE>.
-</DL>
-
-<P>
-We have the relations
-
-
-
-<UL>
-<LI>
-
-<CODE>x = complex(realpart(x), imagpart(x))</CODE>
-<LI>
-
-<CODE>conjugate(x) = complex(realpart(x), -imagpart(x))</CODE>
-</UL>
-
-
-
-<H2><A NAME="SEC25" HREF="cln_toc.html#TOC25">4.5 Comparisons</A></H2>
-<P>
-<A NAME="IDX56"></A>
-
-
-<P>
-Each of the classes <CODE>cl_N</CODE>, <CODE>cl_R</CODE>, <CODE>cl_RA</CODE>, <CODE>cl_I</CODE>,
-<CODE>cl_F</CODE>, <CODE>cl_SF</CODE>, <CODE>cl_FF</CODE>, <CODE>cl_DF</CODE>, <CODE>cl_LF</CODE>
-defines the following operations:
-
-
-<DL COMPACT>
-
-<DT><CODE>bool operator == (const <VAR>type</VAR>&#38;, const <VAR>type</VAR>&#38;)</CODE>
-<DD>
-<A NAME="IDX57"></A>
-<DT><CODE>bool operator != (const <VAR>type</VAR>&#38;, const <VAR>type</VAR>&#38;)</CODE>
-<DD>
-<A NAME="IDX58"></A>
-Comparison, as in C and C++.
-
-<DT><CODE>uint32 equal_hashcode (const <VAR>type</VAR>&#38;)</CODE>
-<DD>
-<A NAME="IDX59"></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="IDX60"></A>
-Compare against zero: <CODE>x == 0</CODE>
-</DL>
-
-<P>
-Each of the classes <CODE>cl_R</CODE>, <CODE>cl_RA</CODE>, <CODE>cl_I</CODE>,
-<CODE>cl_F</CODE>, <CODE>cl_SF</CODE>, <CODE>cl_FF</CODE>, <CODE>cl_DF</CODE>, <CODE>cl_LF</CODE>
-defines the following operations:
-
-
-<DL COMPACT>
-
-<DT><CODE>cl_signean compare (const <VAR>type</VAR>&#38; x, const <VAR>type</VAR>&#38; y)</CODE>
-<DD>
-<A NAME="IDX61"></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="IDX62"></A>
-<DT><CODE>bool operator &#60; (const <VAR>type</VAR>&#38;, const <VAR>type</VAR>&#38;)</CODE>
-<DD>
-<A NAME="IDX63"></A>
-<DT><CODE>bool operator &#62;= (const <VAR>type</VAR>&#38;, const <VAR>type</VAR>&#38;)</CODE>
-<DD>
-<A NAME="IDX64"></A>
-<DT><CODE>bool operator &#62; (const <VAR>type</VAR>&#38;, const <VAR>type</VAR>&#38;)</CODE>
-<DD>
-<A NAME="IDX65"></A>
-Comparison, as in C and C++.
-
-<DT><CODE>cl_boolean minusp (const <VAR>type</VAR>&#38; x)</CODE>
-<DD>
-<A NAME="IDX66"></A>
-Compare against zero: <CODE>x &#60; 0</CODE>
-
-<DT><CODE>cl_boolean plusp (const <VAR>type</VAR>&#38; x)</CODE>
-<DD>
-<A NAME="IDX67"></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="IDX68"></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="IDX69"></A>
-Return the minimum of <CODE>x</CODE> and <CODE>y</CODE>.
-</DL>
-
-<P>
-When a floating point number and a rational number are compared, the float
-is first converted to a rational number using the function <CODE>rational</CODE>.
-Since a floating point number actually represents an interval of real numbers,
-the result might be surprising.
-For example, <CODE>(cl_F)(cl_R)"1/3" == (cl_R)"1/3"</CODE> returns false because
-there is no floating point number whose value is exactly <CODE>1/3</CODE>.
-
-
-
-
-<H2><A NAME="SEC26" HREF="cln_toc.html#TOC26">4.6 Rounding functions</A></H2>
-<P>
-<A NAME="IDX70"></A>
-
-
-<P>
-When a real number is to be converted to an integer, there is no "best"
-rounding. The desired rounding function depends on the application.
-The Common Lisp and ISO Lisp standards offer four rounding functions:
-
-
-<DL COMPACT>
-
-<DT><CODE>floor(x)</CODE>
-<DD>
-This is the largest integer &#60;=<CODE>x</CODE>.
-
-<DT><CODE>ceiling(x)</CODE>
-<DD>
-This is the smallest integer &#62;=<CODE>x</CODE>.
-
-<DT><CODE>truncate(x)</CODE>
-<DD>
-Among the integers between 0 and <CODE>x</CODE> (inclusive) the one nearest to <CODE>x</CODE>.
-
-<DT><CODE>round(x)</CODE>
-<DD>
-The integer nearest to <CODE>x</CODE>. If <CODE>x</CODE> is exactly halfway between two
-integers, choose the even one.
-</DL>
-
-<P>
-These functions have different advantages:
-
-
-<P>
-<CODE>floor</CODE> and <CODE>ceiling</CODE> are translation invariant:
-<CODE>floor(x+n) = floor(x) + n</CODE> and <CODE>ceiling(x+n) = ceiling(x) + n</CODE>
-for every <CODE>x</CODE> and every integer <CODE>n</CODE>.
-
-
-<P>
-On the other hand, <CODE>truncate</CODE> and <CODE>round</CODE> are symmetric:
-<CODE>truncate(-x) = -truncate(x)</CODE> and <CODE>round(-x) = -round(x)</CODE>,
-and furthermore <CODE>round</CODE> is unbiased: on the "average", it rounds
-down exactly as often as it rounds up.
-
-
-<P>
-The functions are related like this:
-
-
-
-<UL>
-<LI>
-
-<CODE>ceiling(m/n) = floor((m+n-1)/n) = floor((m-1)/n)+1</CODE>
-for rational numbers <CODE>m/n</CODE> (<CODE>m</CODE>, <CODE>n</CODE> integers, <CODE>n</CODE>&#62;0), and
-<LI>
-
-<CODE>truncate(x) = sign(x) * floor(abs(x))</CODE>
-</UL>
-
-<P>
-Each of the classes <CODE>cl_R</CODE>, <CODE>cl_RA</CODE>,
-<CODE>cl_F</CODE>, <CODE>cl_SF</CODE>, <CODE>cl_FF</CODE>, <CODE>cl_DF</CODE>, <CODE>cl_LF</CODE>
-defines the following operations:
-
-
-<DL COMPACT>
-
-<DT><CODE>cl_I floor1 (const <VAR>type</VAR>&#38; x)</CODE>
-<DD>
-<A NAME="IDX71"></A>
-Returns <CODE>floor(x)</CODE>.
-<DT><CODE>cl_I ceiling1 (const <VAR>type</VAR>&#38; x)</CODE>
-<DD>
-<A NAME="IDX72"></A>
-Returns <CODE>ceiling(x)</CODE>.
-<DT><CODE>cl_I truncate1 (const <VAR>type</VAR>&#38; x)</CODE>
-<DD>
-<A NAME="IDX73"></A>
-Returns <CODE>truncate(x)</CODE>.
-<DT><CODE>cl_I round1 (const <VAR>type</VAR>&#38; x)</CODE>
-<DD>
-<A NAME="IDX74"></A>
-Returns <CODE>round(x)</CODE>.
-</DL>
-
-<P>
-Each of the classes <CODE>cl_R</CODE>, <CODE>cl_RA</CODE>, <CODE>cl_I</CODE>,
-<CODE>cl_F</CODE>, <CODE>cl_SF</CODE>, <CODE>cl_FF</CODE>, <CODE>cl_DF</CODE>, <CODE>cl_LF</CODE>
-defines the following operations:
-
-
-<DL COMPACT>
-
-<DT><CODE>cl_I floor1 (const <VAR>type</VAR>&#38; x, const <VAR>type</VAR>&#38; y)</CODE>
-<DD>
-Returns <CODE>floor(x/y)</CODE>.
-<DT><CODE>cl_I ceiling1 (const <VAR>type</VAR>&#38; x, const <VAR>type</VAR>&#38; y)</CODE>
-<DD>
-Returns <CODE>ceiling(x/y)</CODE>.
-<DT><CODE>cl_I truncate1 (const <VAR>type</VAR>&#38; x, const <VAR>type</VAR>&#38; y)</CODE>
-<DD>
-Returns <CODE>truncate(x/y)</CODE>.
-<DT><CODE>cl_I round1 (const <VAR>type</VAR>&#38; x, const <VAR>type</VAR>&#38; y)</CODE>
-<DD>
-Returns <CODE>round(x/y)</CODE>.
-</DL>
-
-<P>
-These functions are called <SAMP>`floor1'</SAMP>, ... here instead of
-<SAMP>`floor'</SAMP>, ..., because on some systems, system dependent include
-files define <SAMP>`floor'</SAMP> and <SAMP>`ceiling'</SAMP> as macros.
-
-
-<P>
-In many cases, one needs both the quotient and the remainder of a division.
-It is more efficient to compute both at the same time than to perform
-two divisions, one for quotient and the next one for the remainder.
-The following functions therefore return a structure containing both
-the quotient and the remainder. The suffix <SAMP>`2'</SAMP> indicates the number
-of "return values". The remainder is defined as follows:
-
-
-
-<UL>
-<LI>
-
-for the computation of <CODE>quotient = floor(x)</CODE>,
-<CODE>remainder = x - quotient</CODE>,
-<LI>
-
-for the computation of <CODE>quotient = floor(x,y)</CODE>,
-<CODE>remainder = x - quotient*y</CODE>,
-</UL>
-
-<P>
-and similarly for the other three operations.
-
-
-<P>
-Each of the classes <CODE>cl_R</CODE>, <CODE>cl_RA</CODE>,
-<CODE>cl_F</CODE>, <CODE>cl_SF</CODE>, <CODE>cl_FF</CODE>, <CODE>cl_DF</CODE>, <CODE>cl_LF</CODE>
-defines the following operations:
-
-
-<DL COMPACT>
-
-<DT><CODE>struct <VAR>type</VAR>_div_t { cl_I quotient; <VAR>type</VAR> remainder; };</CODE>
-<DD>
-<DT><CODE><VAR>type</VAR>_div_t floor2 (const <VAR>type</VAR>&#38; x)</CODE>
-<DD>
-<DT><CODE><VAR>type</VAR>_div_t ceiling2 (const <VAR>type</VAR>&#38; x)</CODE>
-<DD>
-<DT><CODE><VAR>type</VAR>_div_t truncate2 (const <VAR>type</VAR>&#38; x)</CODE>
-<DD>
-<DT><CODE><VAR>type</VAR>_div_t round2 (const <VAR>type</VAR>&#38; x)</CODE>
-<DD>
-</DL>
-
-<P>
-Each of the classes <CODE>cl_R</CODE>, <CODE>cl_RA</CODE>, <CODE>cl_I</CODE>,
-<CODE>cl_F</CODE>, <CODE>cl_SF</CODE>, <CODE>cl_FF</CODE>, <CODE>cl_DF</CODE>, <CODE>cl_LF</CODE>
-defines the following operations:
-
-
-<DL COMPACT>
-
-<DT><CODE>struct <VAR>type</VAR>_div_t { cl_I quotient; <VAR>type</VAR> remainder; };</CODE>
-<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="IDX75"></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="IDX76"></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="IDX77"></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="IDX78"></A>
-</DL>
-
-<P>
-Sometimes, one wants the quotient as a floating-point number (of the
-same format as the argument, if the argument is a float) instead of as
-an integer. The prefix <SAMP>`f'</SAMP> indicates this.
-
-
-<P>
-Each of the classes
-<CODE>cl_F</CODE>, <CODE>cl_SF</CODE>, <CODE>cl_FF</CODE>, <CODE>cl_DF</CODE>, <CODE>cl_LF</CODE>
-defines the following operations:
-
-
-<DL COMPACT>
-
-<DT><CODE><VAR>type</VAR> ffloor (const <VAR>type</VAR>&#38; x)</CODE>
-<DD>
-<A NAME="IDX79"></A>
-<DT><CODE><VAR>type</VAR> fceiling (const <VAR>type</VAR>&#38; x)</CODE>
-<DD>
-<A NAME="IDX80"></A>
-<DT><CODE><VAR>type</VAR> ftruncate (const <VAR>type</VAR>&#38; x)</CODE>
-<DD>
-<A NAME="IDX81"></A>
-<DT><CODE><VAR>type</VAR> fround (const <VAR>type</VAR>&#38; x)</CODE>
-<DD>
-<A NAME="IDX82"></A>
-</DL>
-
-<P>
-and similarly for class <CODE>cl_R</CODE>, but with return type <CODE>cl_F</CODE>.
-
-
-<P>
-The class <CODE>cl_R</CODE> defines the following operations:
-
-
-<DL COMPACT>
-
-<DT><CODE>cl_F ffloor (const <VAR>type</VAR>&#38; x, const <VAR>type</VAR>&#38; y)</CODE>
-<DD>
-<DT><CODE>cl_F fceiling (const <VAR>type</VAR>&#38; x, const <VAR>type</VAR>&#38; y)</CODE>
-<DD>
-<DT><CODE>cl_F ftruncate (const <VAR>type</VAR>&#38; x, const <VAR>type</VAR>&#38; y)</CODE>
-<DD>
-<DT><CODE>cl_F fround (const <VAR>type</VAR>&#38; x, const <VAR>type</VAR>&#38; y)</CODE>
-<DD>
-</DL>
-
-<P>
-These functions also exist in versions which return both the quotient
-and the remainder. The suffix <SAMP>`2'</SAMP> indicates this.
-
-
-<P>
-Each of the classes
-<CODE>cl_F</CODE>, <CODE>cl_SF</CODE>, <CODE>cl_FF</CODE>, <CODE>cl_DF</CODE>, <CODE>cl_LF</CODE>
-defines the following operations:
-<A NAME="IDX83"></A>
-<A NAME="IDX84"></A>
-<A NAME="IDX85"></A>
-<A NAME="IDX86"></A>
-<A NAME="IDX87"></A>
-
-
-<DL COMPACT>
-
-<DT><CODE>struct <VAR>type</VAR>_fdiv_t { <VAR>type</VAR> quotient; <VAR>type</VAR> remainder; };</CODE>
-<DD>
-<DT><CODE><VAR>type</VAR>_fdiv_t ffloor2 (const <VAR>type</VAR>&#38; x)</CODE>
-<DD>
-<A NAME="IDX88"></A>
-<DT><CODE><VAR>type</VAR>_fdiv_t fceiling2 (const <VAR>type</VAR>&#38; x)</CODE>
-<DD>
-<A NAME="IDX89"></A>
-<DT><CODE><VAR>type</VAR>_fdiv_t ftruncate2 (const <VAR>type</VAR>&#38; x)</CODE>
-<DD>
-<A NAME="IDX90"></A>
-<DT><CODE><VAR>type</VAR>_fdiv_t fround2 (const <VAR>type</VAR>&#38; x)</CODE>
-<DD>
-<A NAME="IDX91"></A>
-</DL>
-<P>
-and similarly for class <CODE>cl_R</CODE>, but with quotient type <CODE>cl_F</CODE>.
-<A NAME="IDX92"></A>
-
-
-<P>
-The class <CODE>cl_R</CODE> defines the following operations:
-
-
-<DL COMPACT>
-
-<DT><CODE>struct <VAR>type</VAR>_fdiv_t { cl_F quotient; cl_R remainder; };</CODE>
-<DD>
-<DT><CODE><VAR>type</VAR>_fdiv_t ffloor2 (const <VAR>type</VAR>&#38; x, const <VAR>type</VAR>&#38; y)</CODE>
-<DD>
-<DT><CODE><VAR>type</VAR>_fdiv_t fceiling2 (const <VAR>type</VAR>&#38; x, const <VAR>type</VAR>&#38; y)</CODE>
-<DD>
-<DT><CODE><VAR>type</VAR>_fdiv_t ftruncate2 (const <VAR>type</VAR>&#38; x, const <VAR>type</VAR>&#38; y)</CODE>
-<DD>
-<DT><CODE><VAR>type</VAR>_fdiv_t fround2 (const <VAR>type</VAR>&#38; x, const <VAR>type</VAR>&#38; y)</CODE>
-<DD>
-</DL>
-
-<P>
-Other applications need only the remainder of a division.
-The remainder of <SAMP>`floor'</SAMP> and <SAMP>`ffloor'</SAMP> is called <SAMP>`mod'</SAMP>
-(abbreviation of "modulo"). The remainder <SAMP>`truncate'</SAMP> and
-<SAMP>`ftruncate'</SAMP> is called <SAMP>`rem'</SAMP> (abbreviation of "remainder").
-
-
-
-<UL>
-<LI>
-
-<CODE>mod(x,y) = floor2(x,y).remainder = x - floor(x/y)*y</CODE>
-<LI>
-
-<CODE>rem(x,y) = truncate2(x,y).remainder = x - truncate(x/y)*y</CODE>
-</UL>
-
-<P>
-If <CODE>x</CODE> and <CODE>y</CODE> are both &#62;= 0, <CODE>mod(x,y) = rem(x,y) &#62;= 0</CODE>.
-In general, <CODE>mod(x,y)</CODE> has the sign of <CODE>y</CODE> or is zero,
-and <CODE>rem(x,y)</CODE> has the sign of <CODE>x</CODE> or is zero.
-
-
-<P>
-The classes <CODE>cl_R</CODE>, <CODE>cl_I</CODE> define the following operations:
-
-
-<DL COMPACT>
-
-<DT><CODE><VAR>type</VAR> mod (const <VAR>type</VAR>&#38; x, const <VAR>type</VAR>&#38; y)</CODE>
-<DD>
-<A NAME="IDX93"></A>
-<DT><CODE><VAR>type</VAR> rem (const <VAR>type</VAR>&#38; x, const <VAR>type</VAR>&#38; y)</CODE>
-<DD>
-<A NAME="IDX94"></A>
-</DL>
-
-
-
-<H2><A NAME="SEC27" HREF="cln_toc.html#TOC27">4.7 Roots</A></H2>
-
-<P>
-Each of the classes <CODE>cl_R</CODE>,
-<CODE>cl_F</CODE>, <CODE>cl_SF</CODE>, <CODE>cl_FF</CODE>, <CODE>cl_DF</CODE>, <CODE>cl_LF</CODE>
-defines the following operation:
-
-
-<DL COMPACT>
-
-<DT><CODE><VAR>type</VAR> sqrt (const <VAR>type</VAR>&#38; x)</CODE>
-<DD>
-<A NAME="IDX95"></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
-floating-point approximation.
-</DL>
-
-<P>
-The classes <CODE>cl_RA</CODE>, <CODE>cl_I</CODE> define the following operation:
-
-
-<DL COMPACT>
-
-<DT><CODE>cl_boolean sqrtp (const <VAR>type</VAR>&#38; x, <VAR>type</VAR>* root)</CODE>
-<DD>
-<A NAME="IDX96"></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>
-
-<P>
-Furthermore, for integers, similarly:
-
-
-<DL COMPACT>
-
-<DT><CODE>cl_boolean isqrt (const <VAR>type</VAR>&#38; x, <VAR>type</VAR>* root)</CODE>
-<DD>
-<A NAME="IDX97"></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>.
-</DL>
-
-<P>
-For <CODE>n</CODE>th roots, the classes <CODE>cl_RA</CODE>, <CODE>cl_I</CODE>
-define the following operation:
-
-
-<DL COMPACT>
-
-<DT><CODE>cl_boolean rootp (const <VAR>type</VAR>&#38; x, const cl_I&#38; n, <VAR>type</VAR>* root)</CODE>
-<DD>
-<A NAME="IDX98"></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
-false.
-</DL>
-
-<P>
-The only square root function which accepts negative numbers is the one
-for class <CODE>cl_N</CODE>:
-
-
-<DL COMPACT>
-
-<DT><CODE>cl_N sqrt (const cl_N&#38; z)</CODE>
-<DD>
-<A NAME="IDX99"></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
-right half plane <CODE>realpart(sqrt(z)) &#62;= 0</CODE>
-including the positive imaginary axis and 0, but excluding
-the negative imaginary axis.
-The result is an exact number only if <CODE>z</CODE> is an exact number.
-</DL>
-
-
-
-<H2><A NAME="SEC28" HREF="cln_toc.html#TOC28">4.8 Transcendental functions</A></H2>
-<P>
-<A NAME="IDX100"></A>
-
-
-<P>
-The transcendental functions return an exact result if the argument
-is exact and the result is exact as well. Otherwise they must return
-inexact numbers even if the argument is exact.
-For example, <CODE>cos(0) = 1</CODE> returns the rational number <CODE>1</CODE>.
-
-
-
-
-<H3><A NAME="SEC29" HREF="cln_toc.html#TOC29">4.8.1 Exponential and logarithmic functions</A></H3>
-
-<DL COMPACT>
-
-<DT><CODE>cl_R exp (const cl_R&#38; x)</CODE>
-<DD>
-<A NAME="IDX101"></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
-<CODE>e</CODE> is the base of the natural logarithms. The range of the result
-is the entire complex plane excluding 0.
-
-<DT><CODE>cl_R ln (const cl_R&#38; x)</CODE>
-<DD>
-<A NAME="IDX102"></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="IDX103"></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
-<CODE>-pi &#60; imagpart(log(x)) &#60;= pi</CODE>.
-
-<DT><CODE>cl_R phase (const cl_N&#38; x)</CODE>
-<DD>
-<A NAME="IDX104"></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>.
-The range of the result is the interval <CODE>-pi &#60; phase(x) &#60;= pi</CODE>.
-The result will be an exact number only if <CODE>zerop(x)</CODE> or
-if <CODE>x</CODE> is real and positive.
-
-<DT><CODE>cl_R log (const cl_R&#38; a, const cl_R&#38; b)</CODE>
-<DD>
-<CODE>a</CODE> and <CODE>b</CODE> must be &#62; 0. Returns the logarithm of <CODE>a</CODE> with
-respect to base <CODE>b</CODE>. <CODE>log(a,b) = ln(a)/ln(b)</CODE>.
-The result can be exact only if <CODE>a = 1</CODE> or if <CODE>a</CODE> and <CODE>b</CODE>
-are both rational.
-
-<DT><CODE>cl_N log (const cl_N&#38; a, const cl_N&#38; b)</CODE>
-<DD>
-Returns the logarithm of <CODE>a</CODE> with respect to base <CODE>b</CODE>.
-<CODE>log(a,b) = log(a)/log(b)</CODE>.
-
-<DT><CODE>cl_N expt (const cl_N&#38; x, const cl_N&#38; y)</CODE>
-<DD>
-<A NAME="IDX105"></A>
-Exponentiation: Returns <CODE>x^y = exp(y*log(x))</CODE>.
-</DL>
-
-<P>
-The constant e = exp(1) = 2.71828... is returned by the following functions:
-
-
-<DL COMPACT>
-
-<DT><CODE>cl_F exp1 (cl_float_format_t f)</CODE>
-<DD>
-<A NAME="IDX106"></A>
-Returns e as a float of format <CODE>f</CODE>.
-
-<DT><CODE>cl_F exp1 (const cl_F&#38; y)</CODE>
-<DD>
-Returns e in the float format of <CODE>y</CODE>.
-
-<DT><CODE>cl_F exp1 (void)</CODE>
-<DD>
-Returns e as a float of format <CODE>default_float_format</CODE>.
-</DL>
-
-
-
-<H3><A NAME="SEC30" HREF="cln_toc.html#TOC30">4.8.2 Trigonometric functions</A></H3>
-
-<DL COMPACT>
-
-<DT><CODE>cl_R sin (const cl_R&#38; x)</CODE>
-<DD>
-<A NAME="IDX107"></A>
-Returns <CODE>sin(x)</CODE>. The range of the result is the interval
-<CODE>-1 &#60;= sin(x) &#60;= 1</CODE>.
-
-<DT><CODE>cl_N sin (const cl_N&#38; z)</CODE>
-<DD>
-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="IDX108"></A>
-Returns <CODE>cos(x)</CODE>. The range of the result is the interval
-<CODE>-1 &#60;= cos(x) &#60;= 1</CODE>.
-
-<DT><CODE>cl_N cos (const cl_N&#38; x)</CODE>
-<DD>
-Returns <CODE>cos(z)</CODE>. The range of the result is the entire complex plane.
-
-<DT><CODE>struct cos_sin_t { cl_R cos; cl_R sin; };</CODE>
-<DD>
-<A NAME="IDX109"></A>
-<DT><CODE>cos_sin_t 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="IDX110"></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="IDX111"></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="IDX112"></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="IDX113"></A>
-<A NAME="IDX114"></A>
-<DT><CODE>cl_N asin (const cl_N&#38; z)</CODE>
-<DD>
-Returns <CODE>arcsin(z)</CODE>. This is defined as
-<CODE>arcsin(z) = log(iz+sqrt(1-z^2))/i</CODE> and satisfies
-<CODE>arcsin(-z) = -arcsin(z)</CODE>.
-The range of the result is the strip in the complex domain
-<CODE>-pi/2 &#60;= realpart(arcsin(z)) &#60;= pi/2</CODE>, excluding the numbers
-with <CODE>realpart = -pi/2</CODE> and <CODE>imagpart &#60; 0</CODE> and the numbers
-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="IDX115"></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>.
-The range of the result is the strip in the complex domain
-<CODE>0 &#60;= realpart(arcsin(z)) &#60;= pi</CODE>, excluding the numbers
-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="IDX116"></A>
-<A NAME="IDX117"></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
-<CODE>x+iy</CODE>. This is <CODE>atan(y/x)</CODE> if <CODE>x&#62;0</CODE>. The range of
-the result is the interval <CODE>-pi &#60; atan(x,y) &#60;= pi</CODE>. The result will
-be an exact number only if <CODE>x &#62; 0</CODE> and <CODE>y</CODE> is the exact <CODE>0</CODE>.
-WARNING: In Common Lisp, this function is called as <CODE>(atan y x)</CODE>,
-with reversed order of arguments.
-
-<DT><CODE>cl_R atan (const cl_R&#38; x)</CODE>
-<DD>
-Returns <CODE>arctan(x)</CODE>. This is the same as <CODE>atan(1,x)</CODE>. The range
-of the result is the interval <CODE>-pi/2 &#60; atan(x) &#60; pi/2</CODE>. The result
-will be an exact number only if <CODE>x</CODE> is the exact <CODE>0</CODE>.
-
-<DT><CODE>cl_N atan (const cl_N&#38; z)</CODE>
-<DD>
-Returns <CODE>arctan(z)</CODE>. This is defined as
-<CODE>arctan(z) = (log(1+iz)-log(1-iz)) / 2i</CODE> and satisfies
-<CODE>arctan(-z) = -arctan(z)</CODE>. The range of the result is
-the strip in the complex domain
-<CODE>-pi/2 &#60;= realpart(arctan(z)) &#60;= pi/2</CODE>, excluding the numbers
-with <CODE>realpart = -pi/2</CODE> and <CODE>imagpart &#62;= 0</CODE> and the numbers
-with <CODE>realpart = pi/2</CODE> and <CODE>imagpart &#60;= 0</CODE>.
-
-</DL>
-
-<P>
-<A NAME="IDX118"></A>
-<A NAME="IDX119"></A>
-Archimedes' constant pi = 3.14... is returned by the following functions:
-
-
-<DL COMPACT>
-
-<DT><CODE>cl_F pi (cl_float_format_t f)</CODE>
-<DD>
-<A NAME="IDX120"></A>
-Returns pi as a float of format <CODE>f</CODE>.
-
-<DT><CODE>cl_F pi (const cl_F&#38; y)</CODE>
-<DD>
-Returns pi in the float format of <CODE>y</CODE>.
-
-<DT><CODE>cl_F pi (void)</CODE>
-<DD>
-Returns pi as a float of format <CODE>default_float_format</CODE>.
-</DL>
-
-
-
-<H3><A NAME="SEC31" HREF="cln_toc.html#TOC31">4.8.3 Hyperbolic functions</A></H3>
-
-<DL COMPACT>
-
-<DT><CODE>cl_R sinh (const cl_R&#38; x)</CODE>
-<DD>
-<A NAME="IDX121"></A>
-Returns <CODE>sinh(x)</CODE>.
-
-<DT><CODE>cl_N sinh (const cl_N&#38; z)</CODE>
-<DD>
-Returns <CODE>sinh(z)</CODE>. The range of the result is the entire complex plane.
-
-<DT><CODE>cl_R cosh (const cl_R&#38; x)</CODE>
-<DD>
-<A NAME="IDX122"></A>
-Returns <CODE>cosh(x)</CODE>. The range of the result is the interval
-<CODE>cosh(x) &#62;= 1</CODE>.
-
-<DT><CODE>cl_N cosh (const cl_N&#38; z)</CODE>
-<DD>
-Returns <CODE>cosh(z)</CODE>. The range of the result is the entire complex plane.
-
-<DT><CODE>struct cosh_sinh_t { cl_R cosh; cl_R sinh; };</CODE>
-<DD>
-<A NAME="IDX123"></A>
-<DT><CODE>cosh_sinh_t cosh_sinh (const cl_R&#38; x)</CODE>
-<DD>
-<A NAME="IDX124"></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="IDX125"></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="IDX126"></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>.
-The range of the result is the strip in the complex domain
-<CODE>-pi/2 &#60;= imagpart(arsinh(z)) &#60;= pi/2</CODE>, excluding the numbers
-with <CODE>imagpart = -pi/2</CODE> and <CODE>realpart &#62; 0</CODE> and the numbers
-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="IDX127"></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
-<CODE>-pi &#60; imagpart(arcosh(z)) &#60;= pi, realpart(arcosh(z)) &#62;= 0</CODE>,
-excluding the numbers with <CODE>realpart = 0</CODE> and <CODE>-pi &#60; imagpart &#60; 0</CODE>.
-
-<DT><CODE>cl_N atanh (const cl_N&#38; z)</CODE>
-<DD>
-<A NAME="IDX128"></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
-the strip in the complex domain
-<CODE>-pi/2 &#60;= imagpart(artanh(z)) &#60;= pi/2</CODE>, excluding the numbers
-with <CODE>imagpart = -pi/2</CODE> and <CODE>realpart &#60;= 0</CODE> and the numbers
-with <CODE>imagpart = pi/2</CODE> and <CODE>realpart &#62;= 0</CODE>.
-</DL>
-
-
-
-<H3><A NAME="SEC32" HREF="cln_toc.html#TOC32">4.8.4 Euler gamma</A></H3>
-<P>
-<A NAME="IDX129"></A>
-
-
-<P>
-Euler's constant C = 0.577... is returned by the following functions:
-
-
-<DL COMPACT>
-
-<DT><CODE>cl_F eulerconst (cl_float_format_t f)</CODE>
-<DD>
-<A NAME="IDX130"></A>
-Returns Euler's constant as a float of format <CODE>f</CODE>.
-
-<DT><CODE>cl_F eulerconst (const cl_F&#38; y)</CODE>
-<DD>
-Returns Euler's constant in the float format of <CODE>y</CODE>.
-
-<DT><CODE>cl_F eulerconst (void)</CODE>
-<DD>
-Returns Euler's constant as a float of format <CODE>default_float_format</CODE>.
-</DL>
-
-<P>
-Catalan's constant G = 0.915... is returned by the following functions:
-<A NAME="IDX131"></A>
-
-
-<DL COMPACT>
-
-<DT><CODE>cl_F catalanconst (cl_float_format_t f)</CODE>
-<DD>
-<A NAME="IDX132"></A>
-Returns Catalan's constant as a float of format <CODE>f</CODE>.
-
-<DT><CODE>cl_F catalanconst (const cl_F&#38; y)</CODE>
-<DD>
-Returns Catalan's constant in the float format of <CODE>y</CODE>.
-
-<DT><CODE>cl_F catalanconst (void)</CODE>
-<DD>
-Returns Catalan's constant as a float of format <CODE>default_float_format</CODE>.
-</DL>
-
-
-
-<H3><A NAME="SEC33" HREF="cln_toc.html#TOC33">4.8.5 Riemann zeta</A></H3>
-<P>
-<A NAME="IDX133"></A>
-
-
-<P>
-Riemann's zeta function at an integral point <CODE>s&#62;1</CODE> is returned by the
-following functions:
-
-
-<DL COMPACT>
-
-<DT><CODE>cl_F zeta (int s, cl_float_format_t f)</CODE>
-<DD>
-<A NAME="IDX134"></A>
-Returns Riemann's zeta function at <CODE>s</CODE> as a float of format <CODE>f</CODE>.
-
-<DT><CODE>cl_F zeta (int s, const cl_F&#38; y)</CODE>
-<DD>
-Returns Riemann's zeta function at <CODE>s</CODE> in the float format of <CODE>y</CODE>.
-
-<DT><CODE>cl_F zeta (int s)</CODE>
-<DD>
-Returns Riemann's zeta function at <CODE>s</CODE> as a float of format
-<CODE>default_float_format</CODE>.
-</DL>
-
-
-
-<H2><A NAME="SEC34" HREF="cln_toc.html#TOC34">4.9 Functions on integers</A></H2>
-
-
-
-<H3><A NAME="SEC35" HREF="cln_toc.html#TOC35">4.9.1 Logical functions</A></H3>
-
-<P>
-Integers, when viewed as in two's complement notation, can be thought as
-infinite bit strings where the bits' values eventually are constant.
-For example,
-
-<PRE>
-    17 = ......00010001
-    -6 = ......11111010
-</PRE>
-
-<P>
-The logical operations view integers as such bit strings and operate
-on each of the bit positions in parallel.
-
-
-<DL COMPACT>
-
-<DT><CODE>cl_I lognot (const cl_I&#38; x)</CODE>
-<DD>
-<A NAME="IDX135"></A>
-<DT><CODE>cl_I operator ~ (const cl_I&#38; x)</CODE>
-<DD>
-<A NAME="IDX136"></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="IDX137"></A>
-<DT><CODE>cl_I operator &#38; (const cl_I&#38; x, const cl_I&#38; y)</CODE>
-<DD>
-<A NAME="IDX138"></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="IDX139"></A>
-<DT><CODE>cl_I operator | (const cl_I&#38; x, const cl_I&#38; y)</CODE>
-<DD>
-<A NAME="IDX140"></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="IDX141"></A>
-<DT><CODE>cl_I operator ^ (const cl_I&#38; x, const cl_I&#38; y)</CODE>
-<DD>
-<A NAME="IDX142"></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="IDX143"></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="IDX144"></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="IDX145"></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="IDX146"></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="IDX147"></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="IDX148"></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="IDX149"></A>
-Logical or, complementing the second argument, like <CODE>x | ~y</CODE> in C.
-</DL>
-
-<P>
-These operations are all available though the function
-<DL COMPACT>
-
-<DT><CODE>cl_I boole (cl_boole op, const cl_I&#38; x, const cl_I&#38; y)</CODE>
-<DD>
-<A NAME="IDX150"></A>
-</DL>
-<P>
-where <CODE>op</CODE> must have one of the 16 values (each one stands for a function
-which combines two bits into one bit): <CODE>boole_clr</CODE>, <CODE>boole_set</CODE>,
-<CODE>boole_1</CODE>, <CODE>boole_2</CODE>, <CODE>boole_c1</CODE>, <CODE>boole_c2</CODE>,
-<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="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>
-<A NAME="IDX158"></A>
-<A NAME="IDX159"></A>
-<A NAME="IDX160"></A>
-<A NAME="IDX161"></A>
-<A NAME="IDX162"></A>
-<A NAME="IDX163"></A>
-<A NAME="IDX164"></A>
-<A NAME="IDX165"></A>
-
-
-<P>
-Other functions that view integers as bit strings:
-
-
-<DL COMPACT>
-
-<DT><CODE>cl_boolean logtest (const cl_I&#38; x, const cl_I&#38; y)</CODE>
-<DD>
-<A NAME="IDX166"></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="IDX167"></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="IDX168"></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>
-
-<P>
-The following functions operate on intervals of bits in integers. 
-The type
-
-<PRE>
-struct cl_byte { uintL size; uintL position; };
-</PRE>
-
-<P>
-<A NAME="IDX169"></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>.
-
-
-<DL COMPACT>
-
-<DT><CODE>cl_I ldb (const cl_I&#38; n, const cl_byte&#38; b)</CODE>
-<DD>
-<A NAME="IDX170"></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="IDX171"></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="IDX172"></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.
-</DL>
-
-<P>
-The functions <CODE>ldb</CODE> and <CODE>dpb</CODE> implicitly shift. The following
-functions are their counterparts without shifting:
-
-
-<DL COMPACT>
-
-<DT><CODE>cl_I mask_field (const cl_I&#38; n, const cl_byte&#38; b)</CODE>
-<DD>
-<A NAME="IDX173"></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="IDX174"></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>
-
-<P>
-The following relations hold:
-
-
-
-<UL>
-<LI>
-
-<CODE>ldb (n, b) = mask_field(n, b) &#62;&#62; b.position</CODE>,
-<LI>
-
-<CODE>dpb (newbyte, n, b) = deposit_field (newbyte &#60;&#60; b.position, n, b)</CODE>,
-<LI>
-
-<CODE>deposit_field(newbyte,n,b) = n ^ mask_field(n,b) ^ mask_field(new_byte,b)</CODE>.
-</UL>
-
-<P>
-The following operations on integers as bit strings are efficient shortcuts
-for common arithmetic operations:
-
-
-<DL COMPACT>
-
-<DT><CODE>cl_boolean oddp (const cl_I&#38; x)</CODE>
-<DD>
-<A NAME="IDX175"></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="IDX176"></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="IDX177"></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="IDX178"></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="IDX179"></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="IDX180"></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
-2^(n-1) &#60;= x &#60; 2^n.
-
-<DT><CODE>uintL ord2 (const cl_I&#38; x)</CODE>
-<DD>
-<A NAME="IDX181"></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="IDX182"></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>.)
-</DL>
-
-
-
-<H3><A NAME="SEC36" HREF="cln_toc.html#TOC36">4.9.2 Number theoretic functions</A></H3>
-
-<DL COMPACT>
-
-<DT><CODE>uint32 gcd (uint32 a, uint32 b)</CODE>
-<DD>
-<A NAME="IDX183"></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>,
-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="IDX184"></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>:
-<CODE>u</CODE> and <CODE>v</CODE> with <CODE>u*a+v*b = g</CODE>, <CODE>g</CODE> &#62;= 0.
-<CODE>u</CODE> and <CODE>v</CODE> will be normalized to be of smallest possible absolute
-value, in the following sense: If <CODE>a</CODE> and <CODE>b</CODE> are non-zero, and
-<CODE>abs(a) != abs(b)</CODE>, <CODE>u</CODE> and <CODE>v</CODE> will satisfy the inequalities
-<CODE>abs(u) &#60;= abs(b)/(2*g)</CODE>, <CODE>abs(v) &#60;= abs(a)/(2*g)</CODE>.
-
-<DT><CODE>cl_I lcm (const cl_I&#38; a, const cl_I&#38; b)</CODE>
-<DD>
-<A NAME="IDX185"></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="IDX186"></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
-rational number, this function returns true and sets *l = log(a,b), else
-it returns false.
-</DL>
-
-
-
-<H3><A NAME="SEC37" HREF="cln_toc.html#TOC37">4.9.3 Combinatorial functions</A></H3>
-
-<DL COMPACT>
-
-<DT><CODE>cl_I factorial (uintL n)</CODE>
-<DD>
-<A NAME="IDX187"></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="IDX188"></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="IDX189"></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>!
-for 0 &#60;= k &#60;= n, 0 else.
-</DL>
-
-
-
-<H2><A NAME="SEC38" HREF="cln_toc.html#TOC38">4.10 Functions on floating-point numbers</A></H2>
-
-<P>
-Recall that a floating-point number consists of a sign <CODE>s</CODE>, an
-exponent <CODE>e</CODE> and a mantissa <CODE>m</CODE>. The value of the number is
-<CODE>(-1)^s * 2^e * m</CODE>.
-
-
-<P>
-Each of the classes
-<CODE>cl_F</CODE>, <CODE>cl_SF</CODE>, <CODE>cl_FF</CODE>, <CODE>cl_DF</CODE>, <CODE>cl_LF</CODE>
-defines the following operations.
-
-
-<DL COMPACT>
-
-<DT><CODE><VAR>type</VAR> scale_float (const <VAR>type</VAR>&#38; x, sintL delta)</CODE>
-<DD>
-<A NAME="IDX190"></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
-because it copies <CODE>x</CODE> and modifies the exponent.
-</DL>
-
-<P>
-The following functions provide an abstract interface to the underlying
-representation of floating-point numbers.
-
-
-<DL COMPACT>
-
-<DT><CODE>sintL float_exponent (const <VAR>type</VAR>&#38; x)</CODE>
-<DD>
-<A NAME="IDX191"></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="IDX192"></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="IDX193"></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="IDX194"></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="IDX195"></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
-0 if <CODE>x</CODE> = 0.
-</DL>
-
-<P>
-The complete internal representation of a float is encoded in the type
-<A NAME="IDX196"></A>
-<A NAME="IDX197"></A>
-<A NAME="IDX198"></A>
-<A NAME="IDX199"></A>
-<A NAME="IDX200"></A>
-<CODE>decoded_float</CODE> (or <CODE>decoded_sfloat</CODE>, <CODE>decoded_ffloat</CODE>,
-<CODE>decoded_dfloat</CODE>, <CODE>decoded_lfloat</CODE>, respectively), defined by
-
-<PRE>
-struct decoded_<VAR>type</VAR>float {
-        <VAR>type</VAR> mantissa; cl_I exponent; <VAR>type</VAR> sign;
-};
-</PRE>
-
-<P>
-and returned by the function
-
-
-<DL COMPACT>
-
-<DT><CODE>decoded_<VAR>type</VAR>float decode_float (const <VAR>type</VAR>&#38; x)</CODE>
-<DD>
-<A NAME="IDX201"></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.
-<CODE>e</CODE> is the same as returned by the function <CODE>float_exponent</CODE>.
-</DL>
-
-<P>
-A complete decoding in terms of integers is provided as type
-<A NAME="IDX202"></A>
-
-<PRE>
-struct cl_idecoded_float {
-        cl_I mantissa; cl_I exponent; cl_I sign;
-};
-</PRE>
-
-<P>
-by the following function:
-
-
-<DL COMPACT>
-
-<DT><CODE>cl_idecoded_float integer_decode_float (const <VAR>type</VAR>&#38; x)</CODE>
-<DD>
-<A NAME="IDX203"></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.
-WARNING: The exponent <CODE>e</CODE> is not the same as the one returned by
-the functions <CODE>decode_float</CODE> and <CODE>float_exponent</CODE>.
-</DL>
-
-<P>
-Some other function, implemented only for class <CODE>cl_F</CODE>:
-
-
-<DL COMPACT>
-
-<DT><CODE>cl_F float_sign (const cl_F&#38; x, const cl_F&#38; y)</CODE>
-<DD>
-<A NAME="IDX204"></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>.
-</DL>
-
-
-
-<H2><A NAME="SEC39" HREF="cln_toc.html#TOC39">4.11 Conversion functions</A></H2>
-<P>
-<A NAME="IDX205"></A>
-
-
-
-
-<H3><A NAME="SEC40" HREF="cln_toc.html#TOC40">4.11.1 Conversion to floating-point numbers</A></H3>
-
-<P>
-The type <CODE>cl_float_format_t</CODE> describes a floating-point format.
-<A NAME="IDX206"></A>
-
-
-<DL COMPACT>
-
-<DT><CODE>cl_float_format_t cl_float_format (uintL n)</CODE>
-<DD>
-<A NAME="IDX207"></A>
-Returns the smallest float format which guarantees at least <CODE>n</CODE>
-decimal digits in the mantissa (after the decimal point).
-
-<DT><CODE>cl_float_format_t cl_float_format (const cl_F&#38; x)</CODE>
-<DD>
-Returns the floating point format of <CODE>x</CODE>.
-
-<DT><CODE>cl_float_format_t default_float_format</CODE>
-<DD>
-<A NAME="IDX208"></A>
-Global variable: the default float format used when converting rational numbers
-to floats.
-</DL>
-
-<P>
-To convert a real number to a float, each of the types
-<CODE>cl_R</CODE>, <CODE>cl_F</CODE>, <CODE>cl_I</CODE>, <CODE>cl_RA</CODE>,
-<CODE>int</CODE>, <CODE>unsigned int</CODE>, <CODE>float</CODE>, <CODE>double</CODE>
-defines the following operations:
-
-
-<DL COMPACT>
-
-<DT><CODE>cl_F cl_float (const <VAR>type</VAR>&#38;x, cl_float_format_t f)</CODE>
-<DD>
-<A NAME="IDX209"></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>
-Returns <CODE>x</CODE> in the float format of <CODE>y</CODE>.
-<DT><CODE>cl_F cl_float (const <VAR>type</VAR>&#38;x)</CODE>
-<DD>
-Returns <CODE>x</CODE> as a float of format <CODE>default_float_format</CODE> if
-it is an exact number, or <CODE>x</CODE> itself if it is already a float.
-</DL>
-
-<P>
-Of course, converting a number to a float can lose precision.
-
-
-<P>
-Every floating-point format has some characteristic numbers:
-
-
-<DL COMPACT>
-
-<DT><CODE>cl_F most_positive_float (cl_float_format_t f)</CODE>
-<DD>
-<A NAME="IDX210"></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="IDX211"></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="IDX212"></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="IDX213"></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="IDX214"></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="IDX215"></A>
-Returns the smallest floating point number e &#62; 0 such that <CODE>1-e != 1</CODE>.
-</DL>
-
-
-
-<H3><A NAME="SEC41" HREF="cln_toc.html#TOC41">4.11.2 Conversion to rational numbers</A></H3>
-
-<P>
-Each of the classes <CODE>cl_R</CODE>, <CODE>cl_RA</CODE>, <CODE>cl_F</CODE>
-defines the following operation:
-
-
-<DL COMPACT>
-
-<DT><CODE>cl_RA rational (const <VAR>type</VAR>&#38; x)</CODE>
-<DD>
-<A NAME="IDX216"></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.
-</DL>
-
-<P>
-In order to convert back, say, <CODE>(cl_F)(cl_R)"1/3"</CODE> to <CODE>1/3</CODE>, there is
-the function
-
-
-<DL COMPACT>
-
-<DT><CODE>cl_RA rationalize (const cl_R&#38; x)</CODE>
-<DD>
-<A NAME="IDX217"></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)
-which lies in this interval.
-If <CODE>x</CODE> is already an exact number, this function returns <CODE>x</CODE>.
-</DL>
-
-<P>
-If <CODE>x</CODE> is any float, one has
-
-
-
-<UL>
-<LI>
-
-<CODE>cl_float(rational(x),x) = x</CODE>
-<LI>
-
-<CODE>cl_float(rationalize(x),x) = x</CODE>
-</UL>
-
-
-
-<H2><A NAME="SEC42" HREF="cln_toc.html#TOC42">4.12 Random number generators</A></H2>
-
-<P>
-A random generator is a machine which produces (pseudo-)random numbers.
-The include file <CODE>&#60;cln/random.h&#62;</CODE> defines a class <CODE>random_state</CODE>
-which contains the state of a random generator. If you make a copy
-of the random number generator, the original one and the copy will produce
-the same sequence of random numbers.
-
-
-<P>
-The following functions return (pseudo-)random numbers in different formats.
-Calling one of these modifies the state of the random number generator in
-a complicated but deterministic way.
-
-
-<P>
-The global variable
-<A NAME="IDX218"></A>
-<A NAME="IDX219"></A>
-
-<PRE>
-random_state default_random_state
-</PRE>
-
-<P>
-contains a default random number generator. It is used when the functions
-below are called without <CODE>random_state</CODE> argument.
-
-
-<DL COMPACT>
-
-<DT><CODE>uint32 random32 (random_state&#38; randomstate)</CODE>
-<DD>
-<DT><CODE>uint32 random32 ()</CODE>
-<DD>
-<A NAME="IDX220"></A>
-Returns a random unsigned 32-bit number. All bits are equally random.
-
-<DT><CODE>cl_I random_I (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="IDX221"></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>.
-
-<DT><CODE>cl_F random_F (random_state&#38; randomstate, const cl_F&#38; n)</CODE>
-<DD>
-<DT><CODE>cl_F random_F (const cl_F&#38; n)</CODE>
-<DD>
-<A NAME="IDX222"></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>.
-
-<DT><CODE>cl_R random_R (random_state&#38; randomstate, const cl_R&#38; n)</CODE>
-<DD>
-<DT><CODE>cl_R random_R (const cl_R&#38; n)</CODE>
-<DD>
-<A NAME="IDX223"></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>
-
-
-
-<H2><A NAME="SEC43" HREF="cln_toc.html#TOC43">4.13 Obfuscating operators</A></H2>
-<P>
-<A NAME="IDX224"></A>
-
-
-<P>
-The modifying C/C++ operators <CODE>+=</CODE>, <CODE>-=</CODE>, <CODE>*=</CODE>, <CODE>/=</CODE>,
-<CODE>&#38;=</CODE>, <CODE>|=</CODE>, <CODE>^=</CODE>, <CODE>&#60;&#60;=</CODE>, <CODE>&#62;&#62;=</CODE>
-are not available by default because their
-use tends to make programs unreadable. It is trivial to get away without
-them. However, if you feel that you absolutely need these operators
-to get happy, then add
-
-<PRE>
-#define WANT_OBFUSCATING_OPERATORS
-</PRE>
-
-<P>
-<A NAME="IDX225"></A>
-to the beginning of your source files, before the inclusion of any CLN
-include files. This flag will enable the following operators:
-
-
-<P>
-For the classes <CODE>cl_N</CODE>, <CODE>cl_R</CODE>, <CODE>cl_RA</CODE>,
-<CODE>cl_F</CODE>, <CODE>cl_SF</CODE>, <CODE>cl_FF</CODE>, <CODE>cl_DF</CODE>, <CODE>cl_LF</CODE>:
-
-
-<DL COMPACT>
-
-<DT><CODE><VAR>type</VAR>&#38; operator += (<VAR>type</VAR>&#38;, const <VAR>type</VAR>&#38;)</CODE>
-<DD>
-<A NAME="IDX226"></A>
-<DT><CODE><VAR>type</VAR>&#38; operator -= (<VAR>type</VAR>&#38;, const <VAR>type</VAR>&#38;)</CODE>
-<DD>
-<A NAME="IDX227"></A>
-<DT><CODE><VAR>type</VAR>&#38; operator *= (<VAR>type</VAR>&#38;, const <VAR>type</VAR>&#38;)</CODE>
-<DD>
-<A NAME="IDX228"></A>
-<DT><CODE><VAR>type</VAR>&#38; operator /= (<VAR>type</VAR>&#38;, const <VAR>type</VAR>&#38;)</CODE>
-<DD>
-<A NAME="IDX229"></A>
-</DL>
-
-<P>
-For the class <CODE>cl_I</CODE>:
-
-
-<DL COMPACT>
-
-<DT><CODE><VAR>type</VAR>&#38; operator += (<VAR>type</VAR>&#38;, const <VAR>type</VAR>&#38;)</CODE>
-<DD>
-<DT><CODE><VAR>type</VAR>&#38; operator -= (<VAR>type</VAR>&#38;, const <VAR>type</VAR>&#38;)</CODE>
-<DD>
-<DT><CODE><VAR>type</VAR>&#38; operator *= (<VAR>type</VAR>&#38;, const <VAR>type</VAR>&#38;)</CODE>
-<DD>
-<DT><CODE><VAR>type</VAR>&#38; operator &#38;= (<VAR>type</VAR>&#38;, const <VAR>type</VAR>&#38;)</CODE>
-<DD>
-<A NAME="IDX230"></A>
-<DT><CODE><VAR>type</VAR>&#38; operator |= (<VAR>type</VAR>&#38;, const <VAR>type</VAR>&#38;)</CODE>
-<DD>
-<A NAME="IDX231"></A>
-<DT><CODE><VAR>type</VAR>&#38; operator ^= (<VAR>type</VAR>&#38;, const <VAR>type</VAR>&#38;)</CODE>
-<DD>
-<A NAME="IDX232"></A>
-<DT><CODE><VAR>type</VAR>&#38; operator &#60;&#60;= (<VAR>type</VAR>&#38;, const <VAR>type</VAR>&#38;)</CODE>
-<DD>
-<A NAME="IDX233"></A>
-<DT><CODE><VAR>type</VAR>&#38; operator &#62;&#62;= (<VAR>type</VAR>&#38;, const <VAR>type</VAR>&#38;)</CODE>
-<DD>
-<A NAME="IDX234"></A>
-</DL>
-
-<P>
-For the classes <CODE>cl_N</CODE>, <CODE>cl_R</CODE>, <CODE>cl_RA</CODE>, <CODE>cl_I</CODE>,
-<CODE>cl_F</CODE>, <CODE>cl_SF</CODE>, <CODE>cl_FF</CODE>, <CODE>cl_DF</CODE>, <CODE>cl_LF</CODE>:
-
-
-<DL COMPACT>
-
-<DT><CODE><VAR>type</VAR>&#38; operator ++ (<VAR>type</VAR>&#38; x)</CODE>
-<DD>
-<A NAME="IDX235"></A>
-The prefix operator <CODE>++x</CODE>.
-
-<DT><CODE>void operator ++ (<VAR>type</VAR>&#38; x, int)</CODE>
-<DD>
-The postfix operator <CODE>x++</CODE>.
-
-<DT><CODE><VAR>type</VAR>&#38; operator -- (<VAR>type</VAR>&#38; x)</CODE>
-<DD>
-<A NAME="IDX236"></A>
-The prefix operator <CODE>--x</CODE>.
-
-<DT><CODE>void operator -- (<VAR>type</VAR>&#38; x, int)</CODE>
-<DD>
-The postfix operator <CODE>x--</CODE>.
-</DL>
-
-<P>
-Note that by using these obfuscating operators, you wouldn't gain efficiency:
-In CLN <SAMP>`x += y;'</SAMP> is exactly the same as  <SAMP>`x = x+y;'</SAMP>, not more
-efficient.
-
-
-<P><HR><P>
-Go to the <A HREF="cln_1.html">first</A>, <A HREF="cln_3.html">previous</A>, <A HREF="cln_5.html">next</A>, <A HREF="cln_13.html">last</A> section, <A HREF="cln_toc.html">table of contents</A>.
-</BODY>
-</HTML>
diff --git a/doc/cln_5.html b/doc/cln_5.html
deleted file mode 100644 (file)
index 42ea42d..0000000
+++ /dev/null
@@ -1,424 +0,0 @@
-<HTML>
-<HEAD>
-<!-- Created by texi2html 1.56k from cln.texi on 28 August 2000 -->
-
-<TITLE>CLN, a Class Library for Numbers - 5. Input/Output</TITLE>
-</HEAD>
-<BODY>
-Go to the <A HREF="cln_1.html">first</A>, <A HREF="cln_4.html">previous</A>, <A HREF="cln_6.html">next</A>, <A HREF="cln_13.html">last</A> section, <A HREF="cln_toc.html">table of contents</A>.
-<P><HR><P>
-
-
-<H1><A NAME="SEC44" HREF="cln_toc.html#TOC44">5. Input/Output</A></H1>
-<P>
-<A NAME="IDX237"></A>
-
-
-
-
-<H2><A NAME="SEC45" HREF="cln_toc.html#TOC45">5.1 Internal and printed representation</A></H2>
-<P>
-<A NAME="IDX238"></A>
-
-
-<P>
-All computations deal with the internal representations of the numbers.
-
-
-<P>
-Every number has an external representation as a sequence of ASCII characters.
-Several external representations may denote the same number, for example,
-"20.0" and "20.000".
-
-
-<P>
-Converting an internal to an external representation is called "printing",
-<A NAME="IDX239"></A>
-converting an external to an internal representation is called "reading".
-<A NAME="IDX240"></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". 
-
-
-<P>
-Different types of numbers have different external representations (case
-is insignificant):
-
-
-<DL COMPACT>
-
-<DT>Integers
-<DD>
-External representation: <VAR>sign</VAR>{<VAR>digit</VAR>}+. The reader also accepts the
-Common Lisp syntaxes <VAR>sign</VAR>{<VAR>digit</VAR>}+<CODE>.</CODE> with a trailing dot
-for decimal integers
-and the <CODE>#<VAR>n</VAR>R</CODE>, <CODE>#b</CODE>, <CODE>#o</CODE>, <CODE>#x</CODE> prefixes.
-
-<DT>Rational numbers
-<DD>
-External representation: <VAR>sign</VAR>{<VAR>digit</VAR>}+<CODE>/</CODE>{<VAR>digit</VAR>}+.
-The <CODE>#<VAR>n</VAR>R</CODE>, <CODE>#b</CODE>, <CODE>#o</CODE>, <CODE>#x</CODE> prefixes are allowed
-here as well.
-
-<DT>Floating-point numbers
-<DD>
-External representation: <VAR>sign</VAR>{<VAR>digit</VAR>}*<VAR>exponent</VAR> or
-<VAR>sign</VAR>{<VAR>digit</VAR>}*<CODE>.</CODE>{<VAR>digit</VAR>}*<VAR>exponent</VAR> or
-<VAR>sign</VAR>{<VAR>digit</VAR>}*<CODE>.</CODE>{<VAR>digit</VAR>}+. A precision specifier
-of the form _<VAR>prec</VAR> may be appended. There must be at least
-one digit in the non-exponent part. The exponent has the syntax
-<VAR>expmarker</VAR> <VAR>expsign</VAR> {<VAR>digit</VAR>}+.
-The exponent marker is
-
-
-<UL>
-<LI>
-
-<SAMP>`s'</SAMP> for short-floats,
-<LI>
-
-<SAMP>`f'</SAMP> for single-floats,
-<LI>
-
-<SAMP>`d'</SAMP> for double-floats,
-<LI>
-
-<SAMP>`L'</SAMP> for long-floats,
-</UL>
-
-or <SAMP>`e'</SAMP>, which denotes a default float format. The precision specifying
-suffix has the syntax _<VAR>prec</VAR> where <VAR>prec</VAR> denotes the number of
-valid mantissa digits (in decimal, excluding leading zeroes), cf. also
-function <SAMP>`cl_float_format'</SAMP>.
-
-<DT>Complex numbers
-<DD>
-External representation:
-
-<UL>
-<LI>
-
-In algebraic notation: <CODE><VAR>realpart</VAR>+<VAR>imagpart</VAR>i</CODE>. Of course,
-if <VAR>imagpart</VAR> is negative, its printed representation begins with
-a <SAMP>`-'</SAMP>, and the <SAMP>`+'</SAMP> between <VAR>realpart</VAR> and <VAR>imagpart</VAR>
-may be omitted. Note that this notation cannot be used when the <VAR>imagpart</VAR>
-is rational and the rational number's base is &#62;18, because the <SAMP>`i'</SAMP>
-is then read as a digit.
-<LI>
-
-In Common Lisp notation: <CODE>#C(<VAR>realpart</VAR> <VAR>imagpart</VAR>)</CODE>.
-</UL>
-
-</DL>
-
-
-
-<H2><A NAME="SEC46" HREF="cln_toc.html#TOC46">5.2 Input functions</A></H2>
-
-<P>
-Including <CODE>&#60;cln/io.h&#62;</CODE> defines a type <CODE>cl_istream</CODE>, which is
-the type of the first argument to all input functions. <CODE>cl_istream</CODE>
-is the same as <CODE>std::istream&#38;</CODE>.
-
-
-<P>
-The variable
-
-<UL>
-<LI>
-
-<CODE>cl_istream stdin</CODE>
-</UL>
-
-<P>
-contains the standard input stream.
-
-
-<P>
-These are the simple input functions:
-
-
-<DL COMPACT>
-
-<DT><CODE>int freadchar (cl_istream stream)</CODE>
-<DD>
-Reads a character from <CODE>stream</CODE>. Returns <CODE>cl_EOF</CODE> (not a <SAMP>`char'</SAMP>!)
-if the end of stream was encountered or an error occurred.
-
-<DT><CODE>int funreadchar (cl_istream stream, int c)</CODE>
-<DD>
-Puts back <CODE>c</CODE> onto <CODE>stream</CODE>. <CODE>c</CODE> must be the result of the
-last <CODE>freadchar</CODE> operation on <CODE>stream</CODE>.
-</DL>
-
-<P>
-Each of the classes <CODE>cl_N</CODE>, <CODE>cl_R</CODE>, <CODE>cl_RA</CODE>, <CODE>cl_I</CODE>,
-<CODE>cl_F</CODE>, <CODE>cl_SF</CODE>, <CODE>cl_FF</CODE>, <CODE>cl_DF</CODE>, <CODE>cl_LF</CODE>
-defines, in <CODE>&#60;cln/<VAR>type</VAR>_io.h&#62;</CODE>, the following input function:
-
-
-<DL COMPACT>
-
-<DT><CODE>cl_istream operator&#62;&#62; (cl_istream stream, <VAR>type</VAR>&#38; result)</CODE>
-<DD>
-Reads a number from <CODE>stream</CODE> and stores it in the <CODE>result</CODE>.
-</DL>
-
-<P>
-The most flexible input functions, defined in <CODE>&#60;cln/<VAR>type</VAR>_io.h&#62;</CODE>,
-are the following:
-
-
-<DL COMPACT>
-
-<DT><CODE>cl_N read_complex (cl_istream stream, const cl_read_flags&#38; flags)</CODE>
-<DD>
-<DT><CODE>cl_R read_real (cl_istream stream, const cl_read_flags&#38; flags)</CODE>
-<DD>
-<DT><CODE>cl_F read_float (cl_istream stream, const cl_read_flags&#38; flags)</CODE>
-<DD>
-<DT><CODE>cl_RA read_rational (cl_istream stream, const cl_read_flags&#38; flags)</CODE>
-<DD>
-<DT><CODE>cl_I read_integer (cl_istream stream, const cl_read_flags&#38; flags)</CODE>
-<DD>
-Reads a number from <CODE>stream</CODE>. The <CODE>flags</CODE> are parameters which
-affect the input syntax. Whitespace before the number is silently skipped.
-
-<DT><CODE>cl_N read_complex (const cl_read_flags&#38; flags, const char * string, const char * string_limit, const char * * end_of_parse)</CODE>
-<DD>
-<DT><CODE>cl_R read_real (const cl_read_flags&#38; flags, const char * string, const char * string_limit, const char * * end_of_parse)</CODE>
-<DD>
-<DT><CODE>cl_F read_float (const cl_read_flags&#38; flags, const char * string, const char * string_limit, const char * * end_of_parse)</CODE>
-<DD>
-<DT><CODE>cl_RA read_rational (const cl_read_flags&#38; flags, const char * string, const char * string_limit, const char * * end_of_parse)</CODE>
-<DD>
-<DT><CODE>cl_I read_integer (const cl_read_flags&#38; flags, const char * string, const char * string_limit, const char * * end_of_parse)</CODE>
-<DD>
-Reads a number from a string in memory. The <CODE>flags</CODE> are parameters which
-affect the input syntax. The string starts at <CODE>string</CODE> and ends at
-<CODE>string_limit</CODE> (exclusive limit). <CODE>string_limit</CODE> may also be
-<CODE>NULL</CODE>, denoting the entire string, i.e. equivalent to
-<CODE>string_limit = string + strlen(string)</CODE>. If <CODE>end_of_parse</CODE> is
-<CODE>NULL</CODE>, the string in memory must contain exactly one number and nothing
-more, else a fatal error will be signalled. If <CODE>end_of_parse</CODE>
-is not <CODE>NULL</CODE>, <CODE>*end_of_parse</CODE> will be assigned a pointer past
-the last parsed character (i.e. <CODE>string_limit</CODE> if nothing came after
-the number). Whitespace is not allowed.
-</DL>
-
-<P>
-The structure <CODE>cl_read_flags</CODE> contains the following fields:
-
-
-<DL COMPACT>
-
-<DT><CODE>cl_read_syntax_t syntax</CODE>
-<DD>
-The possible results of the read operation. Possible values are
-<CODE>syntax_number</CODE>, <CODE>syntax_real</CODE>, <CODE>syntax_rational</CODE>,
-<CODE>syntax_integer</CODE>, <CODE>syntax_float</CODE>, <CODE>syntax_sfloat</CODE>,
-<CODE>syntax_ffloat</CODE>, <CODE>syntax_dfloat</CODE>, <CODE>syntax_lfloat</CODE>.
-
-<DT><CODE>cl_read_lsyntax_t lsyntax</CODE>
-<DD>
-Specifies the language-dependent syntax variant for the read operation.
-Possible values are
-
-<DL COMPACT>
-
-<DT><CODE>lsyntax_standard</CODE>
-<DD>
-accept standard algebraic notation only, no complex numbers,
-<DT><CODE>lsyntax_algebraic</CODE>
-<DD>
-accept the algebraic notation <CODE><VAR>x</VAR>+<VAR>y</VAR>i</CODE> for complex numbers,
-<DT><CODE>lsyntax_commonlisp</CODE>
-<DD>
-accept the <CODE>#b</CODE>, <CODE>#o</CODE>, <CODE>#x</CODE> syntaxes for binary, octal,
-hexadecimal numbers,
-<CODE>#<VAR>base</VAR>R</CODE> for rational numbers in a given base,
-<CODE>#c(<VAR>realpart</VAR> <VAR>imagpart</VAR>)</CODE> for complex numbers,
-<DT><CODE>lsyntax_all</CODE>
-<DD>
-accept all of these extensions.
-</DL>
-
-<DT><CODE>unsigned int rational_base</CODE>
-<DD>
-The base in which rational numbers are read.
-
-<DT><CODE>cl_float_format_t float_flags.default_float_format</CODE>
-<DD>
-The float format used when reading floats with exponent marker <SAMP>`e'</SAMP>.
-
-<DT><CODE>cl_float_format_t float_flags.default_lfloat_format</CODE>
-<DD>
-The float format used when reading floats with exponent marker <SAMP>`l'</SAMP>.
-
-<DT><CODE>cl_boolean float_flags.mantissa_dependent_float_format</CODE>
-<DD>
-When this flag is true, floats specified with more digits than corresponding
-to the exponent marker they contain, but without <VAR>_nnn</VAR> suffix, will get a
-precision corresponding to their number of significant digits.
-</DL>
-
-
-
-<H2><A NAME="SEC47" HREF="cln_toc.html#TOC47">5.3 Output functions</A></H2>
-
-<P>
-Including <CODE>&#60;cln/io.h&#62;</CODE> defines a type <CODE>cl_ostream</CODE>, which is
-the type of the first argument to all output functions. <CODE>cl_ostream</CODE>
-is the same as <CODE>std::ostream&#38;</CODE>.
-
-
-<P>
-The variable
-
-<UL>
-<LI>
-
-<CODE>cl_ostream stdout</CODE>
-</UL>
-
-<P>
-contains the standard output stream.
-
-
-<P>
-The variable
-
-<UL>
-<LI>
-
-<CODE>cl_ostream stderr</CODE>
-</UL>
-
-<P>
-contains the standard error output stream.
-
-
-<P>
-These are the simple output functions:
-
-
-<DL COMPACT>
-
-<DT><CODE>void fprintchar (cl_ostream stream, char c)</CODE>
-<DD>
-Prints the character <CODE>x</CODE> literally on the <CODE>stream</CODE>.
-
-<DT><CODE>void fprint (cl_ostream stream, const char * string)</CODE>
-<DD>
-Prints the <CODE>string</CODE> literally on the <CODE>stream</CODE>.
-
-<DT><CODE>void fprintdecimal (cl_ostream stream, int x)</CODE>
-<DD>
-<DT><CODE>void fprintdecimal (cl_ostream stream, const cl_I&#38; x)</CODE>
-<DD>
-Prints the integer <CODE>x</CODE> in decimal on the <CODE>stream</CODE>.
-
-<DT><CODE>void fprintbinary (cl_ostream stream, const cl_I&#38; x)</CODE>
-<DD>
-Prints the integer <CODE>x</CODE> in binary (base 2, without prefix)
-on the <CODE>stream</CODE>.
-
-<DT><CODE>void fprintoctal (cl_ostream stream, const cl_I&#38; x)</CODE>
-<DD>
-Prints the integer <CODE>x</CODE> in octal (base 8, without prefix)
-on the <CODE>stream</CODE>.
-
-<DT><CODE>void fprinthexadecimal (cl_ostream stream, const cl_I&#38; x)</CODE>
-<DD>
-Prints the integer <CODE>x</CODE> in hexadecimal (base 16, without prefix)
-on the <CODE>stream</CODE>.
-</DL>
-
-<P>
-Each of the classes <CODE>cl_N</CODE>, <CODE>cl_R</CODE>, <CODE>cl_RA</CODE>, <CODE>cl_I</CODE>,
-<CODE>cl_F</CODE>, <CODE>cl_SF</CODE>, <CODE>cl_FF</CODE>, <CODE>cl_DF</CODE>, <CODE>cl_LF</CODE>
-defines, in <CODE>&#60;cln/<VAR>type</VAR>_io.h&#62;</CODE>, the following output functions:
-
-
-<DL COMPACT>
-
-<DT><CODE>void fprint (cl_ostream stream, const <VAR>type</VAR>&#38; x)</CODE>
-<DD>
-<DT><CODE>cl_ostream operator&#60;&#60; (cl_ostream stream, const <VAR>type</VAR>&#38; x)</CODE>
-<DD>
-Prints the number <CODE>x</CODE> on the <CODE>stream</CODE>. The output may depend
-on the global printer settings in the variable <CODE>default_print_flags</CODE>.
-The <CODE>ostream</CODE> flags and settings (flags, width and locale) are
-ignored.
-</DL>
-
-<P>
-The most flexible output function, defined in <CODE>&#60;cln/<VAR>type</VAR>_io.h&#62;</CODE>,
-are the following:
-
-<PRE>
-void print_complex  (cl_ostream stream, const cl_print_flags&#38; flags,
-                     const cl_N&#38; z);
-void print_real     (cl_ostream stream, const cl_print_flags&#38; flags,
-                     const cl_R&#38; z);
-void print_float    (cl_ostream stream, const cl_print_flags&#38; flags,
-                     const cl_F&#38; z);
-void print_rational (cl_ostream stream, const cl_print_flags&#38; flags,
-                     const cl_RA&#38; z);
-void print_integer  (cl_ostream stream, const cl_print_flags&#38; flags,
-                     const cl_I&#38; z);
-</PRE>
-
-<P>
-Prints the number <CODE>x</CODE> on the <CODE>stream</CODE>. The <CODE>flags</CODE> are
-parameters which affect the output.
-
-
-<P>
-The structure type <CODE>cl_print_flags</CODE> contains the following fields:
-
-
-<DL COMPACT>
-
-<DT><CODE>unsigned int rational_base</CODE>
-<DD>
-The base in which rational numbers are printed. Default is <CODE>10</CODE>.
-
-<DT><CODE>cl_boolean rational_readably</CODE>
-<DD>
-If this flag is true, rational numbers are printed with radix specifiers in
-Common Lisp syntax (<CODE>#<VAR>n</VAR>R</CODE> or <CODE>#b</CODE> or <CODE>#o</CODE> or <CODE>#x</CODE>
-prefixes, trailing dot). Default is false.
-
-<DT><CODE>cl_boolean float_readably</CODE>
-<DD>
-If this flag is true, type specific exponent markers have precedence over 'E'.
-Default is false.
-
-<DT><CODE>cl_float_format_t default_float_format</CODE>
-<DD>
-Floating point numbers of this format will be printed using the 'E' exponent
-marker. Default is <CODE>cl_float_format_ffloat</CODE>.
-
-<DT><CODE>cl_boolean complex_readably</CODE>
-<DD>
-If this flag is true, complex numbers will be printed using the Common Lisp
-syntax <CODE>#C(<VAR>realpart</VAR> <VAR>imagpart</VAR>)</CODE>. Default is false.
-
-<DT><CODE>cl_string univpoly_varname</CODE>
-<DD>
-Univariate polynomials with no explicit indeterminate name will be printed
-using this variable name. Default is <CODE>"x"</CODE>.
-</DL>
-
-<P>
-The global variable <CODE>default_print_flags</CODE> contains the default values,
-used by the function <CODE>fprint</CODE>.
-
-
-<P><HR><P>
-Go to the <A HREF="cln_1.html">first</A>, <A HREF="cln_4.html">previous</A>, <A HREF="cln_6.html">next</A>, <A HREF="cln_13.html">last</A> section, <A HREF="cln_toc.html">table of contents</A>.
-</BODY>
-</HTML>
diff --git a/doc/cln_6.html b/doc/cln_6.html
deleted file mode 100644 (file)
index efab2fe..0000000
+++ /dev/null
@@ -1,125 +0,0 @@
-<HTML>
-<HEAD>
-<!-- Created by texi2html 1.56k from cln.texi on 28 August 2000 -->
-
-<TITLE>CLN, a Class Library for Numbers - 6. Rings</TITLE>
-</HEAD>
-<BODY>
-Go to the <A HREF="cln_1.html">first</A>, <A HREF="cln_5.html">previous</A>, <A HREF="cln_7.html">next</A>, <A HREF="cln_13.html">last</A> section, <A HREF="cln_toc.html">table of contents</A>.
-<P><HR><P>
-
-
-<H1><A NAME="SEC48" HREF="cln_toc.html#TOC48">6. Rings</A></H1>
-
-<P>
-CLN has a class of abstract rings.
-
-
-
-<PRE>
-                         Ring
-                       cl_ring
-                     &#60;cln/ring.h&#62;
-</PRE>
-
-<P>
-Rings can be compared for equality:
-
-
-<DL COMPACT>
-
-<DT><CODE>bool operator== (const cl_ring&#38;, const cl_ring&#38;)</CODE>
-<DD>
-<DT><CODE>bool operator!= (const cl_ring&#38;, const cl_ring&#38;)</CODE>
-<DD>
-These compare two rings for equality.
-</DL>
-
-<P>
-Given a ring <CODE>R</CODE>, the following members can be used.
-
-
-<DL COMPACT>
-
-<DT><CODE>void R-&#62;fprint (cl_ostream stream, const cl_ring_element&#38; x)</CODE>
-<DD>
-<A NAME="IDX241"></A>
-<DT><CODE>cl_boolean R-&#62;equal (const cl_ring_element&#38; x, const cl_ring_element&#38; y)</CODE>
-<DD>
-<A NAME="IDX242"></A>
-<DT><CODE>cl_ring_element R-&#62;zero ()</CODE>
-<DD>
-<A NAME="IDX243"></A>
-<DT><CODE>cl_boolean R-&#62;zerop (const cl_ring_element&#38; x)</CODE>
-<DD>
-<A NAME="IDX244"></A>
-<DT><CODE>cl_ring_element R-&#62;plus (const cl_ring_element&#38; x, const cl_ring_element&#38; y)</CODE>
-<DD>
-<A NAME="IDX245"></A>
-<DT><CODE>cl_ring_element R-&#62;minus (const cl_ring_element&#38; x, const cl_ring_element&#38; y)</CODE>
-<DD>
-<A NAME="IDX246"></A>
-<DT><CODE>cl_ring_element R-&#62;uminus (const cl_ring_element&#38; x)</CODE>
-<DD>
-<A NAME="IDX247"></A>
-<DT><CODE>cl_ring_element R-&#62;one ()</CODE>
-<DD>
-<A NAME="IDX248"></A>
-<DT><CODE>cl_ring_element R-&#62;canonhom (const cl_I&#38; x)</CODE>
-<DD>
-<A NAME="IDX249"></A>
-<DT><CODE>cl_ring_element R-&#62;mul (const cl_ring_element&#38; x, const cl_ring_element&#38; y)</CODE>
-<DD>
-<A NAME="IDX250"></A>
-<DT><CODE>cl_ring_element R-&#62;square (const cl_ring_element&#38; x)</CODE>
-<DD>
-<A NAME="IDX251"></A>
-<DT><CODE>cl_ring_element R-&#62;expt_pos (const cl_ring_element&#38; x, const cl_I&#38; y)</CODE>
-<DD>
-<A NAME="IDX252"></A>
-</DL>
-
-<P>
-The following rings are built-in.
-
-
-<DL COMPACT>
-
-<DT><CODE>cl_null_ring cl_0_ring</CODE>
-<DD>
-The null ring, containing only zero.
-
-<DT><CODE>cl_complex_ring cl_C_ring</CODE>
-<DD>
-The ring of complex numbers. This corresponds to the type <CODE>cl_N</CODE>.
-
-<DT><CODE>cl_real_ring cl_R_ring</CODE>
-<DD>
-The ring of real numbers. This corresponds to the type <CODE>cl_R</CODE>.
-
-<DT><CODE>cl_rational_ring cl_RA_ring</CODE>
-<DD>
-The ring of rational numbers. This corresponds to the type <CODE>cl_RA</CODE>.
-
-<DT><CODE>cl_integer_ring cl_I_ring</CODE>
-<DD>
-The ring of integers. This corresponds to the type <CODE>cl_I</CODE>.
-</DL>
-
-<P>
-Type tests can be performed for any of <CODE>cl_C_ring</CODE>, <CODE>cl_R_ring</CODE>,
-<CODE>cl_RA_ring</CODE>, <CODE>cl_I_ring</CODE>:
-
-
-<DL COMPACT>
-
-<DT><CODE>cl_boolean instanceof (const cl_number&#38; x, const cl_number_ring&#38; R)</CODE>
-<DD>
-<A NAME="IDX253"></A>
-Tests whether the given number is an element of the number ring R.
-</DL>
-
-<P><HR><P>
-Go to the <A HREF="cln_1.html">first</A>, <A HREF="cln_5.html">previous</A>, <A HREF="cln_7.html">next</A>, <A HREF="cln_13.html">last</A> section, <A HREF="cln_toc.html">table of contents</A>.
-</BODY>
-</HTML>
diff --git a/doc/cln_7.html b/doc/cln_7.html
deleted file mode 100644 (file)
index 50d7716..0000000
+++ /dev/null
@@ -1,251 +0,0 @@
-<HTML>
-<HEAD>
-<!-- Created by texi2html 1.56k from cln.texi on 28 August 2000 -->
-
-<TITLE>CLN, a Class Library for Numbers - 7. Modular integers</TITLE>
-</HEAD>
-<BODY>
-Go to the <A HREF="cln_1.html">first</A>, <A HREF="cln_6.html">previous</A>, <A HREF="cln_8.html">next</A>, <A HREF="cln_13.html">last</A> section, <A HREF="cln_toc.html">table of contents</A>.
-<P><HR><P>
-
-
-<H1><A NAME="SEC49" HREF="cln_toc.html#TOC49">7. Modular integers</A></H1>
-<P>
-<A NAME="IDX254"></A>
-
-
-
-
-<H2><A NAME="SEC50" HREF="cln_toc.html#TOC50">7.1 Modular integer rings</A></H2>
-<P>
-<A NAME="IDX255"></A>
-
-
-<P>
-CLN implements modular integers, i.e. integers modulo a fixed integer N.
-The modulus is explicitly part of every modular integer. CLN doesn't
-allow you to (accidentally) mix elements of different modular rings,
-e.g. <CODE>(3 mod 4) + (2 mod 5)</CODE> will result in a runtime error.
-(Ideally one would imagine a generic data type <CODE>cl_MI(N)</CODE>, but C++
-doesn't have generic types. So one has to live with runtime checks.)
-
-
-<P>
-The class of modular integer rings is
-
-
-
-<PRE>
-                         Ring
-                       cl_ring
-                     &#60;cln/ring.h&#62;
-                          |
-                          |
-                 Modular integer ring
-                    cl_modint_ring
-                  &#60;cln/modinteger.h&#62;
-</PRE>
-
-<P>
-<A NAME="IDX256"></A>
-
-
-<P>
-and the class of all modular integers (elements of modular integer rings) is
-
-
-
-<PRE>
-                    Modular integer
-                         cl_MI
-                   &#60;cln/modinteger.h&#62;
-</PRE>
-
-<P>
-Modular integer rings are constructed using the function
-
-
-<DL COMPACT>
-
-<DT><CODE>cl_modint_ring find_modint_ring (const cl_I&#38; N)</CODE>
-<DD>
-<A NAME="IDX257"></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="IDX258"></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
-to a minimum.
-</DL>
-
-<P>
-Modular integer rings can be compared for equality:
-
-
-<DL COMPACT>
-
-<DT><CODE>bool operator== (const cl_modint_ring&#38;, const cl_modint_ring&#38;)</CODE>
-<DD>
-<A NAME="IDX259"></A>
-<DT><CODE>bool operator!= (const cl_modint_ring&#38;, const cl_modint_ring&#38;)</CODE>
-<DD>
-<A NAME="IDX260"></A>
-These compare two modular integer rings for equality. Two different calls
-to <CODE>find_modint_ring</CODE> with the same argument necessarily return the
-same ring because it is memoized in the cache table.
-</DL>
-
-
-
-<H2><A NAME="SEC51" HREF="cln_toc.html#TOC51">7.2 Functions on modular integers</A></H2>
-
-<P>
-Given a modular integer ring <CODE>R</CODE>, the following members can be used.
-
-
-<DL COMPACT>
-
-<DT><CODE>cl_I R-&#62;modulus</CODE>
-<DD>
-<A NAME="IDX261"></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="IDX262"></A>
-This returns <CODE>0 mod N</CODE>.
-
-<DT><CODE>cl_MI R-&#62;one()</CODE>
-<DD>
-<A NAME="IDX263"></A>
-This returns <CODE>1 mod N</CODE>.
-
-<DT><CODE>cl_MI R-&#62;canonhom (const cl_I&#38; x)</CODE>
-<DD>
-<A NAME="IDX264"></A>
-This returns <CODE>x mod N</CODE>.
-
-<DT><CODE>cl_I R-&#62;retract (const cl_MI&#38; x)</CODE>
-<DD>
-<A NAME="IDX265"></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>.
-
-<DT><CODE>cl_MI R-&#62;random(random_state&#38; randomstate)</CODE>
-<DD>
-<DT><CODE>cl_MI R-&#62;random()</CODE>
-<DD>
-<A NAME="IDX266"></A>
-This returns a random integer modulo <CODE>N</CODE>.
-</DL>
-
-<P>
-The following operations are defined on modular integers.
-
-
-<DL COMPACT>
-
-<DT><CODE>cl_modint_ring x.ring ()</CODE>
-<DD>
-<A NAME="IDX267"></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="IDX268"></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="IDX269"></A>
-Returns the difference of two modular integers. One of the arguments may also
-be a plain integer.
-
-<DT><CODE>cl_MI operator- (const cl_MI&#38;)</CODE>
-<DD>
-Returns the negative of a modular integer.
-
-<DT><CODE>cl_MI operator* (const cl_MI&#38;, const cl_MI&#38;)</CODE>
-<DD>
-<A NAME="IDX270"></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="IDX271"></A>
-Returns the square of a modular integer.
-
-<DT><CODE>cl_MI recip (const cl_MI&#38; x)</CODE>
-<DD>
-<A NAME="IDX272"></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="IDX273"></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="IDX274"></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="IDX275"></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="IDX276"></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="IDX277"></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="IDX278"></A>
-<DT><CODE>bool operator!= (const cl_MI&#38;, const cl_MI&#38;)</CODE>
-<DD>
-<A NAME="IDX279"></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="IDX280"></A>
-Returns true if <CODE>x</CODE> is <CODE>0 mod N</CODE>.
-</DL>
-
-<P>
-The following output functions are defined (see also the chapter on
-input/output).
-
-
-<DL COMPACT>
-
-<DT><CODE>void fprint (cl_ostream stream, const cl_MI&#38; x)</CODE>
-<DD>
-<A NAME="IDX281"></A>
-<DT><CODE>cl_ostream operator&#60;&#60; (cl_ostream stream, const cl_MI&#38; x)</CODE>
-<DD>
-<A NAME="IDX282"></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>default_print_flags</CODE>.
-</DL>
-
-<P><HR><P>
-Go to the <A HREF="cln_1.html">first</A>, <A HREF="cln_6.html">previous</A>, <A HREF="cln_8.html">next</A>, <A HREF="cln_13.html">last</A> section, <A HREF="cln_toc.html">table of contents</A>.
-</BODY>
-</HTML>
diff --git a/doc/cln_8.html b/doc/cln_8.html
deleted file mode 100644 (file)
index 22c6343..0000000
+++ /dev/null
@@ -1,139 +0,0 @@
-<HTML>
-<HEAD>
-<!-- Created by texi2html 1.56k from cln.texi on 28 August 2000 -->
-
-<TITLE>CLN, a Class Library for Numbers - 8. Symbolic data types</TITLE>
-</HEAD>
-<BODY>
-Go to the <A HREF="cln_1.html">first</A>, <A HREF="cln_7.html">previous</A>, <A HREF="cln_9.html">next</A>, <A HREF="cln_13.html">last</A> section, <A HREF="cln_toc.html">table of contents</A>.
-<P><HR><P>
-
-
-<H1><A NAME="SEC52" HREF="cln_toc.html#TOC52">8. Symbolic data types</A></H1>
-<P>
-<A NAME="IDX283"></A>
-
-
-<P>
-CLN implements two symbolic (non-numeric) data types: strings and symbols.
-
-
-
-
-<H2><A NAME="SEC53" HREF="cln_toc.html#TOC53">8.1 Strings</A></H2>
-<P>
-<A NAME="IDX284"></A>
-<A NAME="IDX285"></A>
-
-
-<P>
-The class
-
-
-
-<PRE>
-                      String
-                     cl_string
-                   &#60;cln/string.h&#62;
-</PRE>
-
-<P>
-implements immutable strings.
-
-
-<P>
-Strings are constructed through the following constructors:
-
-
-<DL COMPACT>
-
-<DT><CODE>cl_string (const char * s)</CODE>
-<DD>
-Returns an immutable copy of the (zero-terminated) C string <CODE>s</CODE>.
-
-<DT><CODE>cl_string (const char * ptr, unsigned long len)</CODE>
-<DD>
-Returns an immutable copy of the <CODE>len</CODE> characters at
-<CODE>ptr[0]</CODE>, ..., <CODE>ptr[len-1]</CODE>. NUL characters are allowed.
-</DL>
-
-<P>
-The following functions are available on strings:
-
-
-<DL COMPACT>
-
-<DT><CODE>operator =</CODE>
-<DD>
-Assignment from <CODE>cl_string</CODE> and <CODE>const char *</CODE>.
-
-<DT><CODE>s.length()</CODE>
-<DD>
-<A NAME="IDX286"></A>
-<DT><CODE>strlen(s)</CODE>
-<DD>
-<A NAME="IDX287"></A>
-Returns the length of the string <CODE>s</CODE>.
-
-<DT><CODE>s[i]</CODE>
-<DD>
-<A NAME="IDX288"></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="IDX289"></A>
-Compares two strings for equality. One of the arguments may also be a
-plain <CODE>const char *</CODE>.
-</DL>
-
-
-
-<H2><A NAME="SEC54" HREF="cln_toc.html#TOC54">8.2 Symbols</A></H2>
-<P>
-<A NAME="IDX290"></A>
-<A NAME="IDX291"></A>
-
-
-<P>
-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
-comparison), whereas comparison of two strings must in the worst case walk
-both strings until their end.
-Symbols are used, for example, as tags for properties, as names of variables
-in polynomial rings, etc.
-
-
-<P>
-Symbols are constructed through the following constructor:
-
-
-<DL COMPACT>
-
-<DT><CODE>cl_symbol (const cl_string&#38; s)</CODE>
-<DD>
-Looks up or creates a new symbol with a given name.
-</DL>
-
-<P>
-The following operations are available on symbols:
-
-
-<DL COMPACT>
-
-<DT><CODE>cl_string (const cl_symbol&#38; sym)</CODE>
-<DD>
-Conversion to <CODE>cl_string</CODE>: Returns the string which names the symbol
-<CODE>sym</CODE>.
-
-<DT><CODE>bool equal (const cl_symbol&#38; sym1, const cl_symbol&#38; sym2)</CODE>
-<DD>
-<A NAME="IDX292"></A>
-Compares two symbols for equality. This is very fast.
-</DL>
-
-<P><HR><P>
-Go to the <A HREF="cln_1.html">first</A>, <A HREF="cln_7.html">previous</A>, <A HREF="cln_9.html">next</A>, <A HREF="cln_13.html">last</A> section, <A HREF="cln_toc.html">table of contents</A>.
-</BODY>
-</HTML>
diff --git a/doc/cln_9.html b/doc/cln_9.html
deleted file mode 100644 (file)
index 4e5ae21..0000000
+++ /dev/null
@@ -1,359 +0,0 @@
-<HTML>
-<HEAD>
-<!-- Created by texi2html 1.56k from cln.texi on 28 August 2000 -->
-
-<TITLE>CLN, a Class Library for Numbers - 9. Univariate polynomials</TITLE>
-</HEAD>
-<BODY>
-Go to the <A HREF="cln_1.html">first</A>, <A HREF="cln_8.html">previous</A>, <A HREF="cln_10.html">next</A>, <A HREF="cln_13.html">last</A> section, <A HREF="cln_toc.html">table of contents</A>.
-<P><HR><P>
-
-
-<H1><A NAME="SEC55" HREF="cln_toc.html#TOC55">9. Univariate polynomials</A></H1>
-<P>
-<A NAME="IDX293"></A>
-<A NAME="IDX294"></A>
-
-
-
-
-<H2><A NAME="SEC56" HREF="cln_toc.html#TOC56">9.1 Univariate polynomial rings</A></H2>
-
-<P>
-CLN implements univariate polynomials (polynomials in one variable) over an
-arbitrary ring. The indeterminate variable may be either unnamed (and will be
-printed according to <CODE>default_print_flags.univpoly_varname</CODE>, which
-defaults to <SAMP>`x'</SAMP>) or carry a given name. The base ring and the
-indeterminate are explicitly part of every polynomial. CLN doesn't allow you to
-(accidentally) mix elements of different polynomial rings, e.g.
-<CODE>(a^2+1) * (b^3-1)</CODE> will result in a runtime error. (Ideally this should
-return a multivariate polynomial, but they are not yet implemented in CLN.)
-
-
-<P>
-The classes of univariate polynomial rings are
-
-
-
-<PRE>
-                           Ring
-                         cl_ring
-                       &#60;cln/ring.h&#62;
-                            |
-                            |
-                 Univariate polynomial ring
-                      cl_univpoly_ring
-                      &#60;cln/univpoly.h&#62;
-                            |
-           +----------------+-------------------+
-           |                |                   |
- Complex polynomial ring    |    Modular integer polynomial ring
- cl_univpoly_complex_ring   |        cl_univpoly_modint_ring
- &#60;cln/univpoly_complex.h&#62;   |        &#60;cln/univpoly_modint.h&#62;
-                            |
-           +----------------+
-           |                |
-   Real polynomial ring     |
-   cl_univpoly_real_ring    |
-   &#60;cln/univpoly_real.h&#62;    |
-                            |
-           +----------------+
-           |                |
- Rational polynomial ring   |
- cl_univpoly_rational_ring  |
- &#60;cln/univpoly_rational.h&#62;  |
-                            |
-           +----------------+
-           |
- Integer polynomial ring
- cl_univpoly_integer_ring
- &#60;cln/univpoly_integer.h&#62;
-</PRE>
-
-<P>
-and the corresponding classes of univariate polynomials are
-
-
-
-<PRE>
-                   Univariate polynomial
-                          cl_UP
-                      &#60;cln/univpoly.h&#62;
-                            |
-           +----------------+-------------------+
-           |                |                   |
-   Complex polynomial       |      Modular integer polynomial
-        cl_UP_N             |                cl_UP_MI
- &#60;cln/univpoly_complex.h&#62;   |        &#60;cln/univpoly_modint.h&#62;
-                            |
-           +----------------+
-           |                |
-     Real polynomial        |
-        cl_UP_R             |
-  &#60;cln/univpoly_real.h&#62;     |
-                            |
-           +----------------+
-           |                |
-   Rational polynomial      |
-        cl_UP_RA            |
- &#60;cln/univpoly_rational.h&#62;  |
-                            |
-           +----------------+
-           |
-   Integer polynomial
-        cl_UP_I
- &#60;cln/univpoly_integer.h&#62;
-</PRE>
-
-<P>
-Univariate polynomial rings are constructed using the functions
-
-
-<DL COMPACT>
-
-<DT><CODE>cl_univpoly_ring find_univpoly_ring (const cl_ring&#38; R)</CODE>
-<DD>
-<DT><CODE>cl_univpoly_ring find_univpoly_ring (const cl_ring&#38; R, const cl_symbol&#38; varname)</CODE>
-<DD>
-This function returns the polynomial ring <SAMP>`R[X]'</SAMP>, unnamed or named.
-<CODE>R</CODE> may be an arbitrary ring. This function takes care of finding out
-about special cases of <CODE>R</CODE>, such as the rings of complex numbers,
-real numbers, rational numbers, integers, or modular integer rings.
-There is a cache table of rings, indexed by <CODE>R</CODE> and <CODE>varname</CODE>.
-This ensures that two calls of this function with the same arguments will
-return the same polynomial ring.
-
-<DT><CODE>cl_univpoly_complex_ring find_univpoly_ring (const cl_complex_ring&#38; R)</CODE>
-<DD>
-<A NAME="IDX295"></A>
-<DT><CODE>cl_univpoly_complex_ring find_univpoly_ring (const cl_complex_ring&#38; R, const cl_symbol&#38; varname)</CODE>
-<DD>
-<DT><CODE>cl_univpoly_real_ring find_univpoly_ring (const cl_real_ring&#38; R)</CODE>
-<DD>
-<DT><CODE>cl_univpoly_real_ring find_univpoly_ring (const cl_real_ring&#38; R, const cl_symbol&#38; varname)</CODE>
-<DD>
-<DT><CODE>cl_univpoly_rational_ring find_univpoly_ring (const cl_rational_ring&#38; R)</CODE>
-<DD>
-<DT><CODE>cl_univpoly_rational_ring find_univpoly_ring (const cl_rational_ring&#38; R, const cl_symbol&#38; varname)</CODE>
-<DD>
-<DT><CODE>cl_univpoly_integer_ring find_univpoly_ring (const cl_integer_ring&#38; R)</CODE>
-<DD>
-<DT><CODE>cl_univpoly_integer_ring find_univpoly_ring (const cl_integer_ring&#38; R, const cl_symbol&#38; varname)</CODE>
-<DD>
-<DT><CODE>cl_univpoly_modint_ring find_univpoly_ring (const cl_modint_ring&#38; R)</CODE>
-<DD>
-<DT><CODE>cl_univpoly_modint_ring find_univpoly_ring (const cl_modint_ring&#38; R, const cl_symbol&#38; varname)</CODE>
-<DD>
-These functions are equivalent to the general <CODE>find_univpoly_ring</CODE>,
-only the return type is more specific, according to the base ring's type.
-</DL>
-
-
-
-<H2><A NAME="SEC57" HREF="cln_toc.html#TOC57">9.2 Functions on univariate polynomials</A></H2>
-
-<P>
-Given a univariate polynomial ring <CODE>R</CODE>, the following members can be used.
-
-
-<DL COMPACT>
-
-<DT><CODE>cl_ring R-&#62;basering()</CODE>
-<DD>
-<A NAME="IDX296"></A>
-This returns the base ring, as passed to <SAMP>`find_univpoly_ring'</SAMP>.
-
-<DT><CODE>cl_UP R-&#62;zero()</CODE>
-<DD>
-<A NAME="IDX297"></A>
-This returns <CODE>0 in R</CODE>, a polynomial of degree -1.
-
-<DT><CODE>cl_UP R-&#62;one()</CODE>
-<DD>
-<A NAME="IDX298"></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="IDX299"></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="IDX300"></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="IDX301"></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>
-member function.
-</DL>
-
-<P>
-The following are the only destructive operations on univariate polynomials.
-
-
-<DL COMPACT>
-
-<DT><CODE>void set_coeff (cl_UP&#38; x, uintL index, const cl_ring_element&#38; y)</CODE>
-<DD>
-<A NAME="IDX302"></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="IDX303"></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
-produce wrong results or crash the program.
-</DL>
-
-<P>
-The following operations are defined on univariate polynomials.
-
-
-<DL COMPACT>
-
-<DT><CODE>cl_univpoly_ring x.ring ()</CODE>
-<DD>
-<A NAME="IDX304"></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="IDX305"></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="IDX306"></A>
-Returns the difference of two univariate polynomials.
-
-<DT><CODE>cl_UP operator- (const cl_UP&#38;)</CODE>
-<DD>
-Returns the negative of a univariate polynomial.
-
-<DT><CODE>cl_UP operator* (const cl_UP&#38;, const cl_UP&#38;)</CODE>
-<DD>
-<A NAME="IDX307"></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="IDX308"></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="IDX309"></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="IDX310"></A>
-<DT><CODE>bool operator!= (const cl_UP&#38;, const cl_UP&#38;)</CODE>
-<DD>
-<A NAME="IDX311"></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="IDX312"></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="IDX313"></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="IDX314"></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="IDX315"></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="IDX316"></A>
-Returns the derivative of the polynomial <CODE>x</CODE> with respect to the
-indeterminate <CODE>X</CODE>.
-</DL>
-
-<P>
-The following output functions are defined (see also the chapter on
-input/output).
-
-
-<DL COMPACT>
-
-<DT><CODE>void fprint (cl_ostream stream, const cl_UP&#38; x)</CODE>
-<DD>
-<A NAME="IDX317"></A>
-<DT><CODE>cl_ostream operator&#60;&#60; (cl_ostream stream, const cl_UP&#38; x)</CODE>
-<DD>
-<A NAME="IDX318"></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>default_print_flags</CODE>.
-</DL>
-
-
-
-<H2><A NAME="SEC58" HREF="cln_toc.html#TOC58">9.3 Special polynomials</A></H2>
-
-<P>
-The following functions return special polynomials.
-
-
-<DL COMPACT>
-
-<DT><CODE>cl_UP_I tschebychev (sintL n)</CODE>
-<DD>
-<A NAME="IDX319"></A>
-<A NAME="IDX320"></A>
-Returns the n-th Chebyshev polynomial (n &#62;= 0).
-
-<DT><CODE>cl_UP_I hermite (sintL n)</CODE>
-<DD>
-<A NAME="IDX321"></A>
-<A NAME="IDX322"></A>
-Returns the n-th Hermite polynomial (n &#62;= 0).
-
-<DT><CODE>cl_UP_RA legendre (sintL n)</CODE>
-<DD>
-<A NAME="IDX323"></A>
-<A NAME="IDX324"></A>
-Returns the n-th Legendre polynomial (n &#62;= 0).
-
-<DT><CODE>cl_UP_I laguerre (sintL n)</CODE>
-<DD>
-<A NAME="IDX325"></A>
-<A NAME="IDX326"></A>
-Returns the n-th Laguerre polynomial (n &#62;= 0).
-</DL>
-
-<P>
-Information how to derive the differential equation satisfied by each
-of these polynomials from their definition can be found in the
-<CODE>doc/polynomial/</CODE> directory.
-
-
-<P><HR><P>
-Go to the <A HREF="cln_1.html">first</A>, <A HREF="cln_8.html">previous</A>, <A HREF="cln_10.html">next</A>, <A HREF="cln_13.html">last</A> section, <A HREF="cln_toc.html">table of contents</A>.
-</BODY>
-</HTML>
diff --git a/doc/cln_toc.html b/doc/cln_toc.html
deleted file mode 100644 (file)
index 8bd5aca..0000000
+++ /dev/null
@@ -1,125 +0,0 @@
-<HTML>
-<HEAD>
-<!-- Created by texi2html 1.56k from cln.texi on 28 August 2000 -->
-
-<TITLE>CLN, a Class Library for Numbers - Table of Contents</TITLE>
-</HEAD>
-<BODY>
-<H1>CLN, a Class Library for Numbers</H1>
-<ADDRESS>by Bruno Haible</ADDRESS>
-<P>
-<P><HR><P>
-<UL>
-<LI><A NAME="TOC1" HREF="cln_1.html#SEC1">1. Introduction</A>
-<LI><A NAME="TOC2" HREF="cln_2.html#SEC2">2. Installation</A>
-<UL>
-<LI><A NAME="TOC3" HREF="cln_2.html#SEC3">2.1 Prerequisites</A>
-<UL>
-<LI><A NAME="TOC4" HREF="cln_2.html#SEC4">2.1.1 C++ compiler</A>
-<LI><A NAME="TOC5" HREF="cln_2.html#SEC5">2.1.2 Make utility</A>
-<LI><A NAME="TOC6" HREF="cln_2.html#SEC6">2.1.3 Sed utility</A>
-</UL>
-<LI><A NAME="TOC7" HREF="cln_2.html#SEC7">2.2 Building the library</A>
-<UL>
-<LI><A NAME="TOC8" HREF="cln_2.html#SEC8">2.2.1 Using the GNU MP Library</A>
-</UL>
-<LI><A NAME="TOC9" HREF="cln_2.html#SEC9">2.3 Installing the library</A>
-<LI><A NAME="TOC10" HREF="cln_2.html#SEC10">2.4 Cleaning up</A>
-</UL>
-<LI><A NAME="TOC11" HREF="cln_3.html#SEC11">3. Ordinary number types</A>
-<UL>
-<LI><A NAME="TOC12" HREF="cln_3.html#SEC12">3.1 Exact numbers</A>
-<LI><A NAME="TOC13" HREF="cln_3.html#SEC13">3.2 Floating-point numbers</A>
-<LI><A NAME="TOC14" HREF="cln_3.html#SEC14">3.3 Complex numbers</A>
-<LI><A NAME="TOC15" HREF="cln_3.html#SEC15">3.4 Conversions</A>
-</UL>
-<LI><A NAME="TOC16" HREF="cln_4.html#SEC16">4. Functions on numbers</A>
-<UL>
-<LI><A NAME="TOC17" HREF="cln_4.html#SEC17">4.1 Constructing numbers</A>
-<UL>
-<LI><A NAME="TOC18" HREF="cln_4.html#SEC18">4.1.1 Constructing integers</A>
-<LI><A NAME="TOC19" HREF="cln_4.html#SEC19">4.1.2 Constructing rational numbers</A>
-<LI><A NAME="TOC20" HREF="cln_4.html#SEC20">4.1.3 Constructing floating-point numbers</A>
-<LI><A NAME="TOC21" HREF="cln_4.html#SEC21">4.1.4 Constructing complex numbers</A>
-</UL>
-<LI><A NAME="TOC22" HREF="cln_4.html#SEC22">4.2 Elementary functions</A>
-<LI><A NAME="TOC23" HREF="cln_4.html#SEC23">4.3 Elementary rational functions</A>
-<LI><A NAME="TOC24" HREF="cln_4.html#SEC24">4.4 Elementary complex functions</A>
-<LI><A NAME="TOC25" HREF="cln_4.html#SEC25">4.5 Comparisons</A>
-<LI><A NAME="TOC26" HREF="cln_4.html#SEC26">4.6 Rounding functions</A>
-<LI><A NAME="TOC27" HREF="cln_4.html#SEC27">4.7 Roots</A>
-<LI><A NAME="TOC28" HREF="cln_4.html#SEC28">4.8 Transcendental functions</A>
-<UL>
-<LI><A NAME="TOC29" HREF="cln_4.html#SEC29">4.8.1 Exponential and logarithmic functions</A>
-<LI><A NAME="TOC30" HREF="cln_4.html#SEC30">4.8.2 Trigonometric functions</A>
-<LI><A NAME="TOC31" HREF="cln_4.html#SEC31">4.8.3 Hyperbolic functions</A>
-<LI><A NAME="TOC32" HREF="cln_4.html#SEC32">4.8.4 Euler gamma</A>
-<LI><A NAME="TOC33" HREF="cln_4.html#SEC33">4.8.5 Riemann zeta</A>
-</UL>
-<LI><A NAME="TOC34" HREF="cln_4.html#SEC34">4.9 Functions on integers</A>
-<UL>
-<LI><A NAME="TOC35" HREF="cln_4.html#SEC35">4.9.1 Logical functions</A>
-<LI><A NAME="TOC36" HREF="cln_4.html#SEC36">4.9.2 Number theoretic functions</A>
-<LI><A NAME="TOC37" HREF="cln_4.html#SEC37">4.9.3 Combinatorial functions</A>
-</UL>
-<LI><A NAME="TOC38" HREF="cln_4.html#SEC38">4.10 Functions on floating-point numbers</A>
-<LI><A NAME="TOC39" HREF="cln_4.html#SEC39">4.11 Conversion functions</A>
-<UL>
-<LI><A NAME="TOC40" HREF="cln_4.html#SEC40">4.11.1 Conversion to floating-point numbers</A>
-<LI><A NAME="TOC41" HREF="cln_4.html#SEC41">4.11.2 Conversion to rational numbers</A>
-</UL>
-<LI><A NAME="TOC42" HREF="cln_4.html#SEC42">4.12 Random number generators</A>
-<LI><A NAME="TOC43" HREF="cln_4.html#SEC43">4.13 Obfuscating operators</A>
-</UL>
-<LI><A NAME="TOC44" HREF="cln_5.html#SEC44">5. Input/Output</A>
-<UL>
-<LI><A NAME="TOC45" HREF="cln_5.html#SEC45">5.1 Internal and printed representation</A>
-<LI><A NAME="TOC46" HREF="cln_5.html#SEC46">5.2 Input functions</A>
-<LI><A NAME="TOC47" HREF="cln_5.html#SEC47">5.3 Output functions</A>
-</UL>
-<LI><A NAME="TOC48" HREF="cln_6.html#SEC48">6. Rings</A>
-<LI><A NAME="TOC49" HREF="cln_7.html#SEC49">7. Modular integers</A>
-<UL>
-<LI><A NAME="TOC50" HREF="cln_7.html#SEC50">7.1 Modular integer rings</A>
-<LI><A NAME="TOC51" HREF="cln_7.html#SEC51">7.2 Functions on modular integers</A>
-</UL>
-<LI><A NAME="TOC52" HREF="cln_8.html#SEC52">8. Symbolic data types</A>
-<UL>
-<LI><A NAME="TOC53" HREF="cln_8.html#SEC53">8.1 Strings</A>
-<LI><A NAME="TOC54" HREF="cln_8.html#SEC54">8.2 Symbols</A>
-</UL>
-<LI><A NAME="TOC55" HREF="cln_9.html#SEC55">9. Univariate polynomials</A>
-<UL>
-<LI><A NAME="TOC56" HREF="cln_9.html#SEC56">9.1 Univariate polynomial rings</A>
-<LI><A NAME="TOC57" HREF="cln_9.html#SEC57">9.2 Functions on univariate polynomials</A>
-<LI><A NAME="TOC58" HREF="cln_9.html#SEC58">9.3 Special polynomials</A>
-</UL>
-<LI><A NAME="TOC59" HREF="cln_10.html#SEC59">10. Internals</A>
-<UL>
-<LI><A NAME="TOC60" HREF="cln_10.html#SEC60">10.1 Why C++ ?</A>
-<LI><A NAME="TOC61" HREF="cln_10.html#SEC61">10.2 Memory efficiency</A>
-<LI><A NAME="TOC62" HREF="cln_10.html#SEC62">10.3 Speed efficiency</A>
-<LI><A NAME="TOC63" HREF="cln_10.html#SEC63">10.4 Garbage collection</A>
-</UL>
-<LI><A NAME="TOC64" HREF="cln_11.html#SEC64">11. Using the library</A>
-<UL>
-<LI><A NAME="TOC65" HREF="cln_11.html#SEC65">11.1 Compiler options</A>
-<LI><A NAME="TOC66" HREF="cln_11.html#SEC66">11.2 Compatibility to old CLN versions</A>
-<LI><A NAME="TOC67" HREF="cln_11.html#SEC67">11.3 Include files</A>
-<LI><A NAME="TOC68" HREF="cln_11.html#SEC68">11.4 An Example</A>
-<LI><A NAME="TOC69" HREF="cln_11.html#SEC69">11.5 Debugging support</A>
-</UL>
-<LI><A NAME="TOC70" HREF="cln_12.html#SEC70">12. Customizing</A>
-<UL>
-<LI><A NAME="TOC71" HREF="cln_12.html#SEC71">12.1 Error handling</A>
-<LI><A NAME="TOC72" HREF="cln_12.html#SEC72">12.2 Floating-point underflow</A>
-<LI><A NAME="TOC73" HREF="cln_12.html#SEC73">12.3 Customizing I/O</A>
-<LI><A NAME="TOC74" HREF="cln_12.html#SEC74">12.4 Customizing the memory allocator</A>
-</UL>
-<LI><A NAME="TOC75" HREF="cln_13.html#SEC75">Index</A>
-</UL>
-<P><HR><P>
-This document was generated on 28 August 2000 using
-<A HREF="http://wwwinfo.cern.ch/dis/texi2html/">texi2html</A>&nbsp;1.56k.
-</BODY>
-</HTML>