Browse Source

- Upgraded texinfo.tex to newer version 1999-10-01.07, which also

triggered lots of style changes.
- Documented use of external GMP.
- Fixed some index entries.
master
Richard Kreckel 25 years ago
parent
commit
c597eb5534
  1. BIN
      doc/cln.dvi
  2. 946
      doc/cln.html
  3. 218
      doc/cln.info
  4. 8242
      doc/cln.ps
  5. 52
      doc/cln.tex
  6. 64
      doc/cln.texi
  7. 2
      doc/cln_1.html
  8. 28
      doc/cln_10.html
  9. 26
      doc/cln_11.html
  10. 24
      doc/cln_12.html
  11. 4
      doc/cln_13.html
  12. 45
      doc/cln_2.html
  13. 60
      doc/cln_3.html
  14. 448
      doc/cln_4.html
  15. 18
      doc/cln_5.html
  16. 4
      doc/cln_6.html
  17. 68
      doc/cln_7.html
  18. 28
      doc/cln_8.html
  19. 78
      doc/cln_9.html
  20. 139
      doc/cln_toc.html
  21. 4139
      doc/texinfo.tex

BIN
doc/cln.dvi

946
doc/cln.html
File diff suppressed because it is too large
View File

218
doc/cln.info

@ -1,5 +1,4 @@
This is Info file cln.info, produced by Makeinfo version 1.68 from the
input file cln.texi.
This is cln.info, produced by makeinfo version 4.0 from cln.texi.
This file documents CLN, a Class Library for Numbers.
@ -41,7 +40,8 @@ File: cln.info, Node: Top, Next: Introduction, Prev: (dir), Up: (dir)
* Customizing::
* Index::
-- The Detailed Node Listing --
--- The Detailed Node Listing ---
Installation
@ -56,6 +56,10 @@ Prerequisites
* Make utility::
* Sed utility::
Building the library
* Using the GNU MP Library::
Ordinary number types
* Exact numbers::
@ -384,6 +388,30 @@ If you use `g++' version egcs-2.91.x (egcs-1.1) on Sparc, you cannot
use `--enable-shared' because `g++' would miscompile parts of the
library.
* Menu:
* Using the GNU MP Library::

File: cln.info, Node: Using the GNU MP Library, Prev: Building the library, Up: Building the library
Using the GNU MP Library
------------------------
Starting with version 1.0.4, CLN may be configured to make use of a
preinstalled `gmp' library. Please make sure that you have at least
`gmp' version 3.0 installed since earlier versions are unsupported and
likely not to work. Enabling this feature by calling `configure' with
the option `--with-gmp' is known to be quite a boost for CLN's
performance.
If you have installed the `gmp' library and its header file in some
place where your compiler cannot find it by default, you must help
`configure' by setting `CPPFLAGS' and `LDFLAGS'. Here is an example:
$ CC="gcc" CFLAGS="-O2" CXX="g++" CXXFLAGS="-O2 -fno-exceptions" \
CPPFLAGS="-I/opt/gmp/include" LDFLAGS="-L/opt/gmp/lib" ./configure --with-gmp

File: cln.info, Node: Installing the library, Next: Cleaning up, Prev: Building the library, Up: Installation
@ -812,7 +840,7 @@ Each of the classes `cl_N', `cl_R', `cl_RA', `cl_F', `cl_SF', `cl_FF',
The class `cl_I' doesn't define a `/' operation because in the C/C++
language this operator, applied to integral types, denotes the `floor'
or `truncate' operation (which one of these, is implementation
dependent). (*Note Rounding functions::) Instead, `cl_I' defines an
dependent). (*Note Rounding functions::.) Instead, `cl_I' defines an
"exact quotient" function:
`cl_I exquo (const cl_I& x, const cl_I& y)'
@ -2002,7 +2030,8 @@ with the macro CL_IO_STDIO being defined, `cl_istream' is the same as
`istream&'.
The variable
`cl_istream cl_stdin' contains the standard input stream.
`cl_istream cl_stdin'
contains the standard input stream.
These are the simple input functions:
@ -2102,10 +2131,12 @@ CLN with the macro CL_IO_STDIO being defined, `cl_ostream' is the same
as `ostream&'.
The variable
`cl_ostream cl_stdout' contains the standard output stream.
`cl_ostream cl_stdout'
contains the standard output stream.
The variable
`cl_ostream cl_stderr' contains the standard error output stream.
`cl_ostream cl_stderr'
contains the standard error output stream.
These are the simple output functions:
@ -3332,17 +3363,21 @@ Index
* cl_default_print_flags: Customizing I/O.
* cl_default_random_state: Random number generators.
* cl_DF: Floating-point numbers.
* cl_DF_fdiv_t: Rounding functions.
* cl_double_approx (): Conversions.
* cl_equal_hashcode (): Comparisons.
* cl_eulerconst (): Euler gamma.
* cl_F <1>: Floating-point numbers.
* cl_F: Ordinary number types.
* cl_F_fdiv_t: Rounding functions.
* cl_FF: Floating-point numbers.
* cl_FF_fdiv_t: Rounding functions.
* cl_find_modint_ring (): Modular integer rings.
* cl_find_univpoly_ring (): Univariate polynomial rings.
* cl_float: Conversion to floating-point numbers.
* cl_float (): Conversion to floating-point numbers.
* cl_float_approx (): Conversions.
* cl_float_format (): Conversion to floating-point numbers.
* cl_float_format_t: Conversion to floating-point numbers.
* cl_free_hook (): Customizing the memory allocator.
* cl_hermite (): Special polynomials.
* cl_I_to_int (): Conversions.
@ -3353,13 +3388,18 @@ Index
* cl_laguerre (): Special polynomials.
* cl_legendre (): Special polynomials.
* cl_LF: Floating-point numbers.
* cl_LF_fdiv_t: Rounding functions.
* cl_malloc_hook (): Customizing the memory allocator.
* cl_modint_ring: Modular integer rings.
* cl_N: Ordinary number types.
* cl_number: Ordinary number types.
* cl_pi: Trigonometric functions.
* cl_pi (): Trigonometric functions.
* cl_R: Ordinary number types.
* cl_R_fdiv_t: Rounding functions.
* cl_RA: Ordinary number types.
* cl_random_state: Random number generators.
* cl_SF: Floating-point numbers.
* cl_SF_fdiv_t: Rounding functions.
* cl_string (): Strings.
* cl_symbol (): Symbols.
* cl_tschebychev (): Special polynomials.
@ -3389,7 +3429,6 @@ Index
* dpb (): Logical functions.
* equal () <1>: Symbols.
* equal (): Strings.
* etract (): Functions on modular integers.
* Euler's constant: Euler gamma.
* evenp (): Logical functions.
* exact number: Exact numbers.
@ -3428,6 +3467,7 @@ Index
* garbage collection <1>: Garbage collection.
* garbage collection: Memory efficiency.
* gcd (): Number theoretic functions.
* GMP <1>: Using the GNU MP Library.
* GMP: Introduction.
* header files: Include files.
* Hermite polynomial: Special polynomials.
@ -3464,7 +3504,7 @@ Index
* logp (): Number theoretic functions.
* logtest (): Logical functions.
* logxor (): Logical functions.
* make: C++ compiler.
* make: Make utility.
* mask_field (): Logical functions.
* max (): Comparisons.
* min (): Comparisons.
@ -3551,9 +3591,10 @@ Index
* reference counting: Memory efficiency.
* rem (): Rounding functions.
* representation: Internal and printed representation.
* retract (): Functions on modular integers.
* Riemann's zeta: Riemann zeta.
* ring: Modular integer rings.
* ring (): Functions on univariate polynomials.
* ring () <1>: Functions on univariate polynomials.
* ring (): Functions on modular integers.
* rootp (): Roots.
* round1 (): Rounding functions.
@ -3562,9 +3603,9 @@ Index
* rounding error: Floating-point numbers.
* Rubik's cube: Conversions.
* scale_float (): Functions on floating-point numbers.
* Schönhage-Strassen: Speed efficiency.
* Schönhage-Strassen multiplication <1>: Speed efficiency.
* Schönhage-Strassen multiplication: Introduction.
* sed: Make utility.
* sed: Sed utility.
* set_coeff (): Functions on univariate polynomials.
* signum (): Elementary functions.
* sin (): Trigonometric functions.
@ -3598,79 +3639,80 @@ Index

Tag Table:
Node: Top957
Node: Introduction3124
Node: Installation5646
Node: Prerequisites5940
Node: C++ compiler6138
Node: Make utility6853
Node: Sed utility7039
Node: Building the library7359
Node: Installing the library10541
Node: Cleaning up11264
Node: Ordinary number types11589
Node: Exact numbers13936
Node: Floating-point numbers15101
Node: Complex numbers18680
Node: Conversions19177
Node: Functions on numbers22643
Node: Constructing numbers23346
Node: Constructing integers23718
Node: Constructing rational numbers24008
Node: Constructing floating-point numbers24483
Node: Constructing complex numbers25603
Node: Elementary functions25967
Node: Elementary rational functions28434
Node: Elementary complex functions29006
Node: Comparisons29834
Node: Rounding functions31733
Node: Roots37510
Node: Transcendental functions39391
Node: Exponential and logarithmic functions39947
Node: Trigonometric functions41964
Node: Hyperbolic functions45315
Node: Euler gamma47388
Node: Riemann zeta48304
Node: Functions on integers48860
Node: Logical functions49148
Node: Number theoretic functions55101
Node: Combinatorial functions56468
Node: Functions on floating-point numbers57146
Node: Conversion functions60377
Node: Conversion to floating-point numbers60657
Node: Conversion to rational numbers62880
Node: Random number generators63934
Node: Obfuscating operators65608
Node: Input/Output67338
Node: Internal and printed representation67548
Node: Input functions70090
Node: Output functions74641
Node: Rings78377
Node: Modular integers80301
Node: Modular integer rings80501
Node: Functions on modular integers82591
Node: Symbolic data types85601
Node: Strings85864
Node: Symbols86929
Node: Univariate polynomials87831
Node: Univariate polynomial rings88089
Node: Functions on univariate polynomials93043
Node: Special polynomials96824
Node: Internals97544
Node: Why C++ ?97758
Node: Memory efficiency99258
Node: Speed efficiency99956
Node: Garbage collection101040
Node: Using the library101867
Node: Compiler options102401
Node: Include files103319
Node: An Example106960
Node: Debugging support110110
Node: Customizing112460
Node: Error handling112688
Node: Floating-point underflow113262
Node: Customizing I/O113901
Node: Customizing the memory allocator114194
Node: Index115151
Node: Top931
Node: Introduction3153
Node: Installation5675
Node: Prerequisites5969
Node: C++ compiler6167
Node: Make utility6882
Node: Sed utility7068
Node: Building the library7388
Node: Using the GNU MP Library10609
Node: Installing the library11487
Node: Cleaning up12210
Node: Ordinary number types12535
Node: Exact numbers14882
Node: Floating-point numbers16047
Node: Complex numbers19626
Node: Conversions20123
Node: Functions on numbers23589
Node: Constructing numbers24292
Node: Constructing integers24664
Node: Constructing rational numbers24954
Node: Constructing floating-point numbers25429
Node: Constructing complex numbers26549
Node: Elementary functions26913
Node: Elementary rational functions29382
Node: Elementary complex functions29954
Node: Comparisons30782
Node: Rounding functions32681
Node: Roots38458
Node: Transcendental functions40339
Node: Exponential and logarithmic functions40895
Node: Trigonometric functions42912
Node: Hyperbolic functions46263
Node: Euler gamma48336
Node: Riemann zeta49252
Node: Functions on integers49808
Node: Logical functions50096
Node: Number theoretic functions56049
Node: Combinatorial functions57416
Node: Functions on floating-point numbers58094
Node: Conversion functions61325
Node: Conversion to floating-point numbers61605
Node: Conversion to rational numbers63828
Node: Random number generators64882
Node: Obfuscating operators66556
Node: Input/Output68286
Node: Internal and printed representation68496
Node: Input functions71038
Node: Output functions75589
Node: Rings79325
Node: Modular integers81249
Node: Modular integer rings81449
Node: Functions on modular integers83539
Node: Symbolic data types86549
Node: Strings86812
Node: Symbols87877
Node: Univariate polynomials88779
Node: Univariate polynomial rings89037
Node: Functions on univariate polynomials93991
Node: Special polynomials97772
Node: Internals98492
Node: Why C++ ?98706
Node: Memory efficiency100206
Node: Speed efficiency100904
Node: Garbage collection101988
Node: Using the library102815
Node: Compiler options103349
Node: Include files104267
Node: An Example107908
Node: Debugging support111058
Node: Customizing113408
Node: Error handling113636
Node: Floating-point underflow114210
Node: Customizing I/O114849
Node: Customizing the memory allocator115142
Node: Index116099

End Tag Table

8242
doc/cln.ps
File diff suppressed because it is too large
View File

52
doc/cln.tex

@ -283,13 +283,13 @@ initializations will not work.
@end itemize
@end ignore
@cindex @code{make}
@subsection Make utility
@cindex @code{make}
To build CLN, you also need to have GNU @code{make} installed.
@cindex @code{sed}
@subsection Sed utility
@cindex @code{sed}
To build CLN on HP-UX, you also need to have GNU @code{sed} installed.
This is because the libtool script, which creates the CLN library, relies
@ -411,6 +411,27 @@ use @samp{--enable-shared} because @code{g++} would miscompile parts of the
library.
@subsection Using the GNU MP Library
@cindex GMP
Starting with version 1.0.4, CLN may be configured to make use of a
preinstalled @code{gmp} library. Please make sure that you have at
least @code{gmp} version 3.0 installed since earlier versions are
unsupported and likely not to work. Enabling this feature by calling
@code{configure} with the option @samp{--with-gmp} is known to be quite
a boost for CLN's performance.
If you have installed the @code{gmp} library and its header file in
some place where your compiler cannot find it by default, you must help
@code{configure} by setting @code{CPPFLAGS} and @code{LDFLAGS}. Here is
an example:
@example
$ CC="gcc" CFLAGS="-O2" CXX="g++" CXXFLAGS="-O2 -fno-exceptions" \
CPPFLAGS="-I/opt/gmp/include" LDFLAGS="-L/opt/gmp/lib" ./configure --with-gmp
@end example
@section Installing the library
@cindex installation
@ -852,7 +873,7 @@ Returns the reciprocal of the argument.
The class @code{cl_I} doesn't define a @samp{/} operation because
in the C/C++ language this operator, applied to integral types,
denotes the @samp{floor} or @samp{truncate} operation (which one of these,
is implementation dependent). (@xref{Rounding functions})
is implementation dependent). (@xref{Rounding functions}.)
Instead, @code{cl_I} defines an ``exact quotient'' function:
@table @code
@ -1196,6 +1217,11 @@ and the remainder. The suffix @samp{2} indicates this.
Each of the classes
@code{cl_F}, @code{cl_SF}, @code{cl_FF}, @code{cl_DF}, @code{cl_LF}
defines the following operations:
@cindex @code{cl_F_fdiv_t}
@cindex @code{cl_SF_fdiv_t}
@cindex @code{cl_FF_fdiv_t}
@cindex @code{cl_DF_fdiv_t}
@cindex @code{cl_LF_fdiv_t}
@table @code
@item struct @var{type}_fdiv_t @{ @var{type} quotient; @var{type} remainder; @};
@ -1209,6 +1235,7 @@ defines the following operations:
@cindex @code{fround2 ()}
@end table
and similarly for class @code{cl_R}, but with quotient type @code{cl_F}.
@cindex @code{cl_R_fdiv_t}
The class @code{cl_R} defines the following operations:
@ -1482,7 +1509,7 @@ Archimedes' constant pi = 3.14@dots{} is returned by the following functions:
@table @code
@item cl_F cl_pi (cl_float_format_t f)
@cindex @code{cl_pi}
@cindex @code{cl_pi ()}
Returns pi as a float of format @code{f}.
@item cl_F cl_pi (const cl_F& y)
@ -2083,6 +2110,7 @@ zero, it is treated as positive. Same for @code{y}.
@subsection Conversion to floating-point numbers
The type @code{cl_float_format_t} describes a floating-point format.
@cindex @code{cl_float_format_t}
@table @code
@item cl_float_format_t cl_float_format (uintL n)
@ -2106,7 +2134,7 @@ defines the following operations:
@table @code
@item cl_F cl_float (const @var{type}&x, cl_float_format_t f)
@cindex @code{cl_float}
@cindex @code{cl_float ()}
Returns @code{x} as a float of format @code{f}.
@item cl_F cl_float (const @var{type}&x, const cl_F& y)
Returns @code{x} in the float format of @code{y}.
@ -2198,6 +2226,7 @@ Calling one of these modifies the state of the random number generator in
a complicated but deterministic way.
The global variable
@cindex @code{cl_random_state}
@cindex @code{cl_default_random_state}
@example
cl_random_state cl_default_random_state
@ -2684,6 +2713,7 @@ The class of modular integer rings is
cl_modint_ring
<cl_modinteger.h>
@end example
@cindex @code{cl_modint_ring}
and the class of all modular integers (elements of modular integer rings) is
@ -2742,7 +2772,7 @@ This returns @code{1 mod N}.
This returns @code{x mod N}.
@item cl_I R->retract (const cl_MI& x)
@cindex @code{etract ()}
@cindex @code{retract ()}
This is a partial inverse function to @code{R->canonhom}. It returns the
standard representative (@code{>=0}, @code{<N}) of @code{x}.
@ -3015,7 +3045,7 @@ There is a cache table of rings, indexed by @code{R} and @code{varname}.
This ensures that two calls of this function with the same arguments will
return the same polynomial ring.
@item cl_univpoly_complex_ring cl_find_univpoly_ring (const cl_complex_ring& R)
@itemx cl_univpoly_complex_ring cl_find_univpoly_ring (const cl_complex_ring& R)
@cindex @code{cl_find_univpoly_ring ()}
@itemx cl_univpoly_complex_ring cl_find_univpoly_ring (const cl_complex_ring& R, const cl_symbol& varname)
@itemx cl_univpoly_real_ring cl_find_univpoly_ring (const cl_real_ring& R)
@ -3279,14 +3309,14 @@ algorithm.
For very large numbers (more than 12000 decimal digits), CLN uses
@iftex
Sch{@"o}nhage-Strassen
@cindex Sch{@"o}nhage-Strassen
@cindex Sch{@"o}nhage-Strassen multiplication
@end iftex
@ifinfo
Schönhage-Strassen
@cindex Schönhage-Strassen
@cindex Schönhage-Strassen multiplication
@end ifinfo
multiplication, which is an asymptotically
optimal multiplication algorithm.
multiplication, which is an asymptotically optimal multiplication
algorithm.
@item
These fast multiplication algorithms also give improvements in the speed
of division and radix conversion.

64
doc/cln.texi

@ -110,6 +110,7 @@ by the author.
* Customizing::
* Index::
--- The Detailed Node Listing ---
Installation
@ -125,6 +126,10 @@ Prerequisites
* Make utility::
* Sed utility::
Building the library
* Using the GNU MP Library::
Ordinary number types
* Exact numbers::
@ -216,6 +221,8 @@ Customizing
* Floating-point underflow::
* Customizing I/O::
* Customizing the memory allocator::
@end menu
@node Introduction, Installation, Top, Top
@ -421,15 +428,15 @@ initializations will not work.
@end itemize
@end ignore
@cindex @code{make}
@node Make utility, Sed utility, C++ compiler, Prerequisites
@subsection Make utility
@cindex @code{make}
To build CLN, you also need to have GNU @code{make} installed.
@cindex @code{sed}
@node Sed utility, , Make utility, Prerequisites
@subsection Sed utility
@cindex @code{sed}
To build CLN on HP-UX, you also need to have GNU @code{sed} installed.
This is because the libtool script, which creates the CLN library, relies
@ -552,6 +559,32 @@ use @samp{--enable-shared} because @code{g++} would miscompile parts of the
library.
@menu
* Using the GNU MP Library::
@end menu
@node Using the GNU MP Library, , Building the library, Building the library
@subsection Using the GNU MP Library
@cindex GMP
Starting with version 1.0.4, CLN may be configured to make use of a
preinstalled @code{gmp} library. Please make sure that you have at
least @code{gmp} version 3.0 installed since earlier versions are
unsupported and likely not to work. Enabling this feature by calling
@code{configure} with the option @samp{--with-gmp} is known to be quite
a boost for CLN's performance.
If you have installed the @code{gmp} library and its header file in
some place where your compiler cannot find it by default, you must help
@code{configure} by setting @code{CPPFLAGS} and @code{LDFLAGS}. Here is
an example:
@example
$ CC="gcc" CFLAGS="-O2" CXX="g++" CXXFLAGS="-O2 -fno-exceptions" \
CPPFLAGS="-I/opt/gmp/include" LDFLAGS="-L/opt/gmp/lib" ./configure --with-gmp
@end example
@node Installing the library, Cleaning up, Building the library, Installation
@section Installing the library
@cindex installation
@ -1037,7 +1070,7 @@ Returns the reciprocal of the argument.
The class @code{cl_I} doesn't define a @samp{/} operation because
in the C/C++ language this operator, applied to integral types,
denotes the @samp{floor} or @samp{truncate} operation (which one of these,
is implementation dependent). (@xref{Rounding functions})
is implementation dependent). (@xref{Rounding functions}.)
Instead, @code{cl_I} defines an ``exact quotient'' function:
@table @code
@ -1385,6 +1418,11 @@ and the remainder. The suffix @samp{2} indicates this.
Each of the classes
@code{cl_F}, @code{cl_SF}, @code{cl_FF}, @code{cl_DF}, @code{cl_LF}
defines the following operations:
@cindex @code{cl_F_fdiv_t}
@cindex @code{cl_SF_fdiv_t}
@cindex @code{cl_FF_fdiv_t}
@cindex @code{cl_DF_fdiv_t}
@cindex @code{cl_LF_fdiv_t}
@table @code
@item struct @var{type}_fdiv_t @{ @var{type} quotient; @var{type} remainder; @};
@ -1398,6 +1436,7 @@ defines the following operations:
@cindex @code{fround2 ()}
@end table
and similarly for class @code{cl_R}, but with quotient type @code{cl_F}.
@cindex @code{cl_R_fdiv_t}
The class @code{cl_R} defines the following operations:
@ -1683,7 +1722,7 @@ Archimedes' constant pi = 3.14@dots{} is returned by the following functions:
@table @code
@item cl_F cl_pi (cl_float_format_t f)
@cindex @code{cl_pi}
@cindex @code{cl_pi ()}
Returns pi as a float of format @code{f}.
@item cl_F cl_pi (const cl_F& y)
@ -2305,6 +2344,7 @@ zero, it is treated as positive. Same for @code{y}.
@subsection Conversion to floating-point numbers
The type @code{cl_float_format_t} describes a floating-point format.
@cindex @code{cl_float_format_t}
@table @code
@item cl_float_format_t cl_float_format (uintL n)
@ -2328,7 +2368,7 @@ defines the following operations:
@table @code
@item cl_F cl_float (const @var{type}&x, cl_float_format_t f)
@cindex @code{cl_float}
@cindex @code{cl_float ()}
Returns @code{x} as a float of format @code{f}.
@item cl_F cl_float (const @var{type}&x, const cl_F& y)
Returns @code{x} in the float format of @code{y}.
@ -2422,6 +2462,7 @@ Calling one of these modifies the state of the random number generator in
a complicated but deterministic way.
The global variable
@cindex @code{cl_random_state}
@cindex @code{cl_default_random_state}
@example
cl_random_state cl_default_random_state
@ -2927,6 +2968,7 @@ The class of modular integer rings is
cl_modint_ring
<cl_modinteger.h>
@end example
@cindex @code{cl_modint_ring}
and the class of all modular integers (elements of modular integer rings) is
@ -2986,7 +3028,7 @@ This returns @code{1 mod N}.
This returns @code{x mod N}.
@item cl_I R->retract (const cl_MI& x)
@cindex @code{etract ()}
@cindex @code{retract ()}
This is a partial inverse function to @code{R->canonhom}. It returns the
standard representative (@code{>=0}, @code{<N}) of @code{x}.
@ -3275,7 +3317,7 @@ There is a cache table of rings, indexed by @code{R} and @code{varname}.
This ensures that two calls of this function with the same arguments will
return the same polynomial ring.
@item cl_univpoly_complex_ring cl_find_univpoly_ring (const cl_complex_ring& R)
@itemx cl_univpoly_complex_ring cl_find_univpoly_ring (const cl_complex_ring& R)
@cindex @code{cl_find_univpoly_ring ()}
@itemx cl_univpoly_complex_ring cl_find_univpoly_ring (const cl_complex_ring& R, const cl_symbol& varname)
@itemx cl_univpoly_real_ring cl_find_univpoly_ring (const cl_real_ring& R)
@ -3552,14 +3594,14 @@ algorithm.
For very large numbers (more than 12000 decimal digits), CLN uses
@iftex
Sch{@"o}nhage-Strassen
@cindex Sch{@"o}nhage-Strassen
@cindex Sch{@"o}nhage-Strassen multiplication
@end iftex
@ifinfo
Schönhage-Strassen
@cindex Schönhage-Strassen
@cindex Schönhage-Strassen multiplication
@end ifinfo
multiplication, which is an asymptotically
optimal multiplication algorithm.
multiplication, which is an asymptotically optimal multiplication
algorithm.
@item
These fast multiplication algorithms also give improvements in the speed
of division and radix conversion.

2
doc/cln_1.html

@ -1,6 +1,6 @@
<HTML>
<HEAD>
<!-- Created by texi2html 1.56k from cln.texi on 4 May 2000 -->
<!-- Created by texi2html 1.56k from cln.texi on 5 May 2000 -->
<TITLE>CLN, a Class Library for Numbers - 1. Introduction</TITLE>
</HEAD>

28
doc/cln_10.html

@ -1,6 +1,6 @@
<HTML>
<HEAD>
<!-- Created by texi2html 1.56k from cln.texi on 4 May 2000 -->
<!-- Created by texi2html 1.56k from cln.texi on 5 May 2000 -->
<TITLE>CLN, a Class Library for Numbers - 10. Internals</TITLE>
</HEAD>
@ -9,13 +9,13 @@ Go to the <A HREF="cln_1.html">first</A>, <A HREF="cln_9.html">previous</A>, <A
<P><HR><P>
<H1><A NAME="SEC58" HREF="cln_toc.html#TOC58">10. Internals</A></H1>
<H1><A NAME="SEC59" HREF="cln_toc.html#TOC59">10. Internals</A></H1>
<H2><A NAME="SEC59" HREF="cln_toc.html#TOC59">10.1 Why C++ ?</A></H2>
<H2><A NAME="SEC60" HREF="cln_toc.html#TOC60">10.1 Why C++ ?</A></H2>
<P>
<A NAME="IDX303"></A>
<A NAME="IDX313"></A>
<P>
@ -30,7 +30,7 @@ Efficiency: It compiles to machine code.
<LI>
<A NAME="IDX304"></A>
<A NAME="IDX314"></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.
@ -62,7 +62,7 @@ in a high-level language.
<H2><A NAME="SEC60" HREF="cln_toc.html#TOC60">10.2 Memory efficiency</A></H2>
<H2><A NAME="SEC61" HREF="cln_toc.html#TOC61">10.2 Memory efficiency</A></H2>
<P>
In order to save memory allocations, CLN implements:
@ -76,8 +76,8 @@ Object sharing: An operation like <CODE>x+0</CODE> returns <CODE>x</CODE> withou
it.
<LI>
<A NAME="IDX305"></A>
<A NAME="IDX306"></A>
<A NAME="IDX315"></A>
<A NAME="IDX316"></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.
@ -91,7 +91,7 @@ on the heap.
<H2><A NAME="SEC61" HREF="cln_toc.html#TOC61">10.3 Speed efficiency</A></H2>
<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
@ -122,9 +122,9 @@ algorithm.
For very large numbers (more than 12000 decimal digits), CLN uses
Schönhage-Strassen
<A NAME="IDX307"></A>
multiplication, which is an asymptotically
optimal multiplication algorithm.
<A NAME="IDX317"></A>
multiplication, which is an asymptotically optimal multiplication
algorithm.
<LI>
These fast multiplication algorithms also give improvements in the speed
@ -133,9 +133,9 @@ of division and radix conversion.
<H2><A NAME="SEC62" HREF="cln_toc.html#TOC62">10.4 Garbage collection</A></H2>
<H2><A NAME="SEC63" HREF="cln_toc.html#TOC63">10.4 Garbage collection</A></H2>
<P>
<A NAME="IDX308"></A>
<A NAME="IDX318"></A>
<P>

26
doc/cln_11.html

@ -1,6 +1,6 @@
<HTML>
<HEAD>
<!-- Created by texi2html 1.56k from cln.texi on 4 May 2000 -->
<!-- Created by texi2html 1.56k from cln.texi on 5 May 2000 -->
<TITLE>CLN, a Class Library for Numbers - 11. Using the library</TITLE>
</HEAD>
@ -9,7 +9,7 @@ Go to the <A HREF="cln_1.html">first</A>, <A HREF="cln_10.html">previous</A>, <A
<P><HR><P>
<H1><A NAME="SEC63" HREF="cln_toc.html#TOC63">11. Using the library</A></H1>
<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
@ -21,9 +21,9 @@ environment variables, or directly substitute the appropriate values.
<H2><A NAME="SEC64" HREF="cln_toc.html#TOC64">11.1 Compiler options</A></H2>
<H2><A NAME="SEC65" HREF="cln_toc.html#TOC65">11.1 Compiler options</A></H2>
<P>
<A NAME="IDX309"></A>
<A NAME="IDX319"></A>
<P>
@ -60,10 +60,10 @@ linking a CLN application it is sufficient to give the flag <CODE>-lcln</CODE>.
<H2><A NAME="SEC65" HREF="cln_toc.html#TOC65">11.2 Include files</A></H2>
<H2><A NAME="SEC66" HREF="cln_toc.html#TOC66">11.2 Include files</A></H2>
<P>
<A NAME="IDX310"></A>
<A NAME="IDX311"></A>
<A NAME="IDX320"></A>
<A NAME="IDX321"></A>
<P>
@ -256,11 +256,11 @@ Includes all of the above.
<H2><A NAME="SEC66" HREF="cln_toc.html#TOC66">11.3 An Example</A></H2>
<H2><A NAME="SEC67" HREF="cln_toc.html#TOC67">11.3 An Example</A></H2>
<P>
A function which computes the nth Fibonacci number can be written as follows.
<A NAME="IDX312"></A>
<A NAME="IDX322"></A>
@ -344,9 +344,9 @@ contains this implementation together with an even faster algorithm.
<H2><A NAME="SEC67" HREF="cln_toc.html#TOC67">11.4 Debugging support</A></H2>
<H2><A NAME="SEC68" HREF="cln_toc.html#TOC68">11.4 Debugging support</A></H2>
<P>
<A NAME="IDX313"></A>
<A NAME="IDX323"></A>
<P>
@ -380,7 +380,7 @@ CLN offers a function <CODE>cl_print</CODE>, callable from the debugger,
for printing number objects. In order to get this function, you have
to define the macro <SAMP>`CL_DEBUG'</SAMP> and then include all the header files
for which you want <CODE>cl_print</CODE> debugging support. For example:
<A NAME="IDX314"></A>
<A NAME="IDX324"></A>
<PRE>
#define CL_DEBUG
@ -407,7 +407,7 @@ only with number objects and similar. Therefore CLN offers a member function
<CODE>debug_print()</CODE> on all CLN types. The same macro <SAMP>`CL_DEBUG'</SAMP>
is needed for this member function to be implemented. Under <CODE>gdb</CODE>,
you call it like this:
<A NAME="IDX315"></A>
<A NAME="IDX325"></A>
<PRE>
(gdb) print s

24
doc/cln_12.html

@ -1,6 +1,6 @@
<HTML>
<HEAD>
<!-- Created by texi2html 1.56k from cln.texi on 4 May 2000 -->
<!-- Created by texi2html 1.56k from cln.texi on 5 May 2000 -->
<TITLE>CLN, a Class Library for Numbers - 12. Customizing</TITLE>
</HEAD>
@ -9,14 +9,14 @@ Go to the <A HREF="cln_1.html">first</A>, <A HREF="cln_11.html">previous</A>, <A
<P><HR><P>
<H1><A NAME="SEC68" HREF="cln_toc.html#TOC68">12. Customizing</A></H1>
<H1><A NAME="SEC69" HREF="cln_toc.html#TOC69">12. Customizing</A></H1>
<P>
<A NAME="IDX316"></A>
<A NAME="IDX326"></A>
<H2><A NAME="SEC69" HREF="cln_toc.html#TOC69">12.1 Error handling</A></H2>
<H2><A NAME="SEC70" HREF="cln_toc.html#TOC70">12.1 Error handling</A></H2>
<P>
When a fatal error occurs, an error message is output to the standard error
@ -31,15 +31,15 @@ void cl_abort (void);
</PRE>
<P>
<A NAME="IDX317"></A>
<A NAME="IDX327"></A>
This function must not return control to its caller.
<H2><A NAME="SEC70" HREF="cln_toc.html#TOC70">12.2 Floating-point underflow</A></H2>
<H2><A NAME="SEC71" HREF="cln_toc.html#TOC71">12.2 Floating-point underflow</A></H2>
<P>
<A NAME="IDX318"></A>
<A NAME="IDX328"></A>
<P>
@ -60,17 +60,17 @@ will be generated instead. The default value of
<H2><A NAME="SEC71" HREF="cln_toc.html#TOC71">12.3 Customizing I/O</A></H2>
<H2><A NAME="SEC72" HREF="cln_toc.html#TOC72">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>cl_default_print_flags</CODE>.
<A NAME="IDX319"></A>
<A NAME="IDX329"></A>
<H2><A NAME="SEC72" HREF="cln_toc.html#TOC72">12.4 Customizing the memory allocator</A></H2>
<H2><A NAME="SEC73" HREF="cln_toc.html#TOC73">12.4 Customizing the memory allocator</A></H2>
<P>
Every memory allocation of CLN is done through the function pointer
@ -89,8 +89,8 @@ void (*cl_free_hook) (void* ptr) = ...;
</PRE>
<P>
<A NAME="IDX320"></A>
<A NAME="IDX321"></A>
<A NAME="IDX330"></A>
<A NAME="IDX331"></A>
The <CODE>cl_malloc_hook</CODE> function must not return a <CODE>NULL</CODE> pointer.

4
doc/cln_13.html

@ -1,6 +1,6 @@
<HTML>
<HEAD>
<!-- Created by texi2html 1.56k from cln.texi on 4 May 2000 -->
<!-- Created by texi2html 1.56k from cln.texi on 5 May 2000 -->
<TITLE>CLN, a Class Library for Numbers - Index</TITLE>
</HEAD>
@ -9,7 +9,7 @@ Go to the <A HREF="cln_1.html">first</A>, <A HREF="cln_12.html">previous</A>, ne
<P><HR><P>
<H1><A NAME="SEC73" HREF="cln_toc.html#TOC73">Index</A></H1>
<H1><A NAME="SEC74" HREF="cln_toc.html#TOC74">Index</A></H1>
<P>
Jump to:

45
doc/cln_2.html

@ -1,6 +1,6 @@
<HTML>
<HEAD>
<!-- Created by texi2html 1.56k from cln.texi on 4 May 2000 -->
<!-- Created by texi2html 1.56k from cln.texi on 5 May 2000 -->
<TITLE>CLN, a Class Library for Numbers - 2. Installation</TITLE>
</HEAD>
@ -50,21 +50,23 @@ of static and global variables, a feature which I could
implement for GNU g++ only.
<P>
<A NAME="IDX3"></A>
<H3><A NAME="SEC5" HREF="cln_toc.html#TOC5">2.1.2 Make utility</A></H3>
<P>
<A NAME="IDX3"></A>
<P>
To build CLN, you also need to have GNU <CODE>make</CODE> installed.
<P>
<A NAME="IDX4"></A>
<H3><A NAME="SEC6" HREF="cln_toc.html#TOC6">2.1.3 Sed utility</A></H3>
<P>
<A NAME="IDX4"></A>
<P>
To build CLN on HP-UX, you also need to have GNU <CODE>sed</CODE> installed.
@ -200,11 +202,40 @@ library.
<H2><A NAME="SEC8" HREF="cln_toc.html#TOC8">2.3 Installing the library</A></H2>
<H3><A NAME="SEC8" HREF="cln_toc.html#TOC8">2.2.1 Using the GNU MP Library</A></H3>
<P>
<A NAME="IDX5"></A>
<P>
Starting with version 1.0.4, 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="IDX6"></A>
<P>
As with any autoconfiguring GNU software, installation is as easy as this:
@ -230,7 +261,7 @@ the <CODE>--prefix=...</CODE> option.
<H2><A NAME="SEC9" HREF="cln_toc.html#TOC9">2.4 Cleaning up</A></H2>
<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

60
doc/cln_3.html

@ -1,6 +1,6 @@
<HTML>
<HEAD>
<!-- Created by texi2html 1.56k from cln.texi on 4 May 2000 -->
<!-- Created by texi2html 1.56k from cln.texi on 5 May 2000 -->
<TITLE>CLN, a Class Library for Numbers - 3. Ordinary number types</TITLE>
</HEAD>
@ -9,7 +9,7 @@ Go to the <A HREF="cln_1.html">first</A>, <A HREF="cln_2.html">previous</A>, <A
<P><HR><P>
<H1><A NAME="SEC10" HREF="cln_toc.html#TOC10">3. Ordinary number types</A></H1>
<H1><A NAME="SEC11" HREF="cln_toc.html#TOC11">3. Ordinary number types</A></H1>
<P>
CLN implements the following class hierarchy:
@ -45,8 +45,8 @@ Rational number Floating-point number
</PRE>
<P>
<A NAME="IDX6"></A>
<A NAME="IDX7"></A>
<A NAME="IDX8"></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
@ -54,24 +54,24 @@ checking instead.
<P>
<A NAME="IDX8"></A>
<A NAME="IDX9"></A>
<A NAME="IDX10"></A>
<A NAME="IDX11"></A>
The class <CODE>cl_N</CODE> comprises real and complex numbers. There is
no special class for complex numbers since complex numbers with imaginary
part <CODE>0</CODE> are automatically converted to real numbers.
<P>
<A NAME="IDX11"></A>
<A NAME="IDX12"></A>
The class <CODE>cl_R</CODE> comprises real numbers of different kinds. It is an
abstract class.
<P>
<A NAME="IDX12"></A>
<A NAME="IDX13"></A>
<A NAME="IDX14"></A>
<A NAME="IDX15"></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
@ -79,16 +79,16 @@ to integers.
<P>
<A NAME="IDX15"></A>
<A NAME="IDX16"></A>
The class <CODE>cl_F</CODE> implements floating-point approximations to real numbers.
It is an abstract class.
<H2><A NAME="SEC11" HREF="cln_toc.html#TOC11">3.1 Exact numbers</A></H2>
<H2><A NAME="SEC12" HREF="cln_toc.html#TOC12">3.1 Exact numbers</A></H2>
<P>
<A NAME="IDX16"></A>
<A NAME="IDX17"></A>
<P>
@ -130,9 +130,9 @@ is completely transparent.
<H2><A NAME="SEC12" HREF="cln_toc.html#TOC12">3.2 Floating-point numbers</A></H2>
<H2><A NAME="SEC13" HREF="cln_toc.html#TOC13">3.2 Floating-point numbers</A></H2>
<P>
<A NAME="IDX17"></A>
<A NAME="IDX18"></A>
<P>
@ -144,7 +144,7 @@ CLN implements ordinary floating-point numbers, with mantissa and exponent.
<P>
<A NAME="IDX18"></A>
<A NAME="IDX19"></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
@ -175,7 +175,7 @@ Floating point numbers come in four flavors:
<UL>
<LI>
<A NAME="IDX19"></A>
<A NAME="IDX20"></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).
@ -183,7 +183,7 @@ They don't consume heap allocation.
<LI>
<A NAME="IDX20"></A>
<A NAME="IDX21"></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).
@ -192,7 +192,7 @@ This corresponds closely to the C/C++ type <SAMP>`float'</SAMP>.
<LI>
<A NAME="IDX21"></A>
<A NAME="IDX22"></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).
@ -201,7 +201,7 @@ This corresponds closely to the C/C++ type <SAMP>`double'</SAMP>.
<LI>
<A NAME="IDX22"></A>
<A NAME="IDX23"></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.
@ -222,7 +222,7 @@ with larger exponent range.
<P>
<A NAME="IDX23"></A>
<A NAME="IDX24"></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
@ -237,9 +237,9 @@ the floating point contagion rule happened to change in the future.)
<H2><A NAME="SEC13" HREF="cln_toc.html#TOC13">3.3 Complex numbers</A></H2>
<H2><A NAME="SEC14" HREF="cln_toc.html#TOC14">3.3 Complex numbers</A></H2>
<P>
<A NAME="IDX24"></A>
<A NAME="IDX25"></A>
<P>
@ -256,9 +256,9 @@ through application of <CODE>sqrt</CODE> or transcendental functions.
<H2><A NAME="SEC14" HREF="cln_toc.html#TOC14">3.4 Conversions</A></H2>
<H2><A NAME="SEC15" HREF="cln_toc.html#TOC15">3.4 Conversions</A></H2>
<P>
<A NAME="IDX25"></A>
<A NAME="IDX26"></A>
<P>
@ -317,7 +317,7 @@ Conversions from <SAMP>`const char *'</SAMP> are provided for the classes
<CODE>cl_R</CODE>, <CODE>cl_N</CODE>.
The easiest way to specify a value which is outside of the range of the
C++ built-in types is therefore to specify it as a string, like this:
<A NAME="IDX26"></A>
<A NAME="IDX27"></A>
<PRE>
cl_I order_of_rubiks_cube_group = "43252003274489856000";
@ -337,16 +337,16 @@ the functions
<DT><CODE>int cl_I_to_int (const cl_I&#38; x)</CODE>
<DD>
<A NAME="IDX27"></A>
<A NAME="IDX28"></A>
<DT><CODE>unsigned int cl_I_to_uint (const cl_I&#38; x)</CODE>
<DD>
<A NAME="IDX28"></A>
<A NAME="IDX29"></A>
<DT><CODE>long cl_I_to_long (const cl_I&#38; x)</CODE>
<DD>
<A NAME="IDX29"></A>
<A NAME="IDX30"></A>
<DT><CODE>unsigned long cl_I_to_ulong (const cl_I&#38; x)</CODE>
<DD>
<A NAME="IDX30"></A>
<A NAME="IDX31"></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>
@ -363,10 +363,10 @@ the functions
<DT><CODE>float cl_float_approx (const <VAR>type</VAR>&#38; x)</CODE>
<DD>
<A NAME="IDX31"></A>
<A NAME="IDX32"></A>
<DT><CODE>double cl_double_approx (const <VAR>type</VAR>&#38; x)</CODE>
<DD>
<A NAME="IDX32"></A>
<A NAME="IDX33"></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.
@ -377,10 +377,10 @@ Conversions from any class to any of its subclasses ("derived classes" in
C++ terminology) are not provided. Instead, you can assert and check
that a value belongs to a certain subclass, and return it as element of that
class, using the <SAMP>`As'</SAMP> and <SAMP>`The'</SAMP> macros.
<A NAME="IDX33"></A>
<A NAME="IDX34"></A>
<CODE>As(<VAR>type</VAR>)(<VAR>value</VAR>)</CODE> checks that <VAR>value</VAR> belongs to
<VAR>type</VAR> and returns it as such.
<A NAME="IDX34"></A>
<A NAME="IDX35"></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.

448
doc/cln_4.html
File diff suppressed because it is too large
View File

18
doc/cln_5.html

@ -1,6 +1,6 @@
<HTML>
<HEAD>
<!-- Created by texi2html 1.56k from cln.texi on 4 May 2000 -->
<!-- Created by texi2html 1.56k from cln.texi on 5 May 2000 -->
<TITLE>CLN, a Class Library for Numbers - 5. Input/Output</TITLE>
</HEAD>
@ -9,16 +9,16 @@ Go to the <A HREF="cln_1.html">first</A>, <A HREF="cln_4.html">previous</A>, <A
<P><HR><P>
<H1><A NAME="SEC43" HREF="cln_toc.html#TOC43">5. Input/Output</A></H1>
<H1><A NAME="SEC44" HREF="cln_toc.html#TOC44">5. Input/Output</A></H1>
<P>
<A NAME="IDX227"></A>
<A NAME="IDX236"></A>
<H2><A NAME="SEC44" HREF="cln_toc.html#TOC44">5.1 Internal and printed representation</A></H2>
<H2><A NAME="SEC45" HREF="cln_toc.html#TOC45">5.1 Internal and printed representation</A></H2>
<P>
<A NAME="IDX228"></A>
<A NAME="IDX237"></A>
<P>
@ -33,9 +33,9 @@ Several external representations may denote the same number, for example,
<P>
Converting an internal to an external representation is called "printing",
<A NAME="IDX229"></A>
<A NAME="IDX238"></A>
converting an external to an internal representation is called "reading".
<A NAME="IDX230"></A>
<A NAME="IDX239"></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>.
@ -115,7 +115,7 @@ In Common Lisp notation: <CODE>#C(<VAR>realpart</VAR> <VAR>imagpart</VAR>)</CODE
<H2><A NAME="SEC45" HREF="cln_toc.html#TOC45">5.2 Input functions</A></H2>
<H2><A NAME="SEC46" HREF="cln_toc.html#TOC46">5.2 Input functions</A></H2>
<P>
Including <CODE>&#60;cl_io.h&#62;</CODE> defines a type <CODE>cl_istream</CODE>, which is
@ -267,7 +267,7 @@ precision corresponding to their number of significant digits.
<H2><A NAME="SEC46" HREF="cln_toc.html#TOC46">5.3 Output functions</A></H2>
<H2><A NAME="SEC47" HREF="cln_toc.html#TOC47">5.3 Output functions</A></H2>
<P>
Including <CODE>&#60;cl_io.h&#62;</CODE> defines a type <CODE>cl_ostream</CODE>, which is

4
doc/cln_6.html

@ -1,6 +1,6 @@
<HTML>
<HEAD>
<!-- Created by texi2html 1.56k from cln.texi on 4 May 2000 -->
<!-- Created by texi2html 1.56k from cln.texi on 5 May 2000 -->
<TITLE>CLN, a Class Library for Numbers - 6. Rings</TITLE>
</HEAD>
@ -9,7 +9,7 @@ Go to the <A HREF="cln_1.html">first</A>, <A HREF="cln_5.html">previous</A>, <A
<P><HR><P>
<H1><A NAME="SEC47" HREF="cln_toc.html#TOC47">6. Rings</A></H1>
<H1><A NAME="SEC48" HREF="cln_toc.html#TOC48">6. Rings</A></H1>
<P>
CLN has a class of abstract rings.

68
doc/cln_7.html

@ -1,6 +1,6 @@
<HTML>
<HEAD>
<!-- Created by texi2html 1.56k from cln.texi on 4 May 2000 -->
<!-- Created by texi2html 1.56k from cln.texi on 5 May 2000 -->
<TITLE>CLN, a Class Library for Numbers - 7. Modular integers</TITLE>
</HEAD>
@ -9,16 +9,16 @@ Go to the <A HREF="cln_1.html">first</A>, <A HREF="cln_6.html">previous</A>, <A
<P><HR><P>
<H1><A NAME="SEC48" HREF="cln_toc.html#TOC48">7. Modular integers</A></H1>
<H1><A NAME="SEC49" HREF="cln_toc.html#TOC49">7. Modular integers</A></H1>
<P>
<A NAME="IDX231"></A>
<A NAME="IDX240"></A>
<H2><A NAME="SEC49" HREF="cln_toc.html#TOC49">7.1 Modular integer rings</A></H2>
<H2><A NAME="SEC50" HREF="cln_toc.html#TOC50">7.1 Modular integer rings</A></H2>
<P>
<A NAME="IDX232"></A>
<A NAME="IDX241"></A>
<P>
@ -46,6 +46,10 @@ The class of modular integer rings is
&#60;cl_modinteger.h&#62;
</PRE>
<P>
<A NAME="IDX242"></A>
<P>
and the class of all modular integers (elements of modular integer rings) is
@ -65,11 +69,11 @@ Modular integer rings are constructed using the function
<DT><CODE>cl_modint_ring cl_find_modint_ring (const cl_I&#38; N)</CODE>
<DD>
<A NAME="IDX233"></A>
<A NAME="IDX243"></A>
This function returns the modular ring <SAMP>`Z/NZ'</SAMP>. It takes care
of finding out about special cases of <CODE>N</CODE>, like powers of two
and odd numbers for which Montgomery multiplication will be a win,
<A NAME="IDX234"></A>
<A NAME="IDX244"></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
@ -84,10 +88,10 @@ Modular integer rings can be compared for equality:
<DT><CODE>bool operator== (const cl_modint_ring&#38;, const cl_modint_ring&#38;)</CODE>
<DD>
<A NAME="IDX235"></A>
<A NAME="IDX245"></A>
<DT><CODE>bool operator!= (const cl_modint_ring&#38;, const cl_modint_ring&#38;)</CODE>
<DD>
<A NAME="IDX236"></A>
<A NAME="IDX246"></A>
These compare two modular integer rings for equality. Two different calls
to <CODE>cl_find_modint_ring</CODE> with the same argument necessarily return the
same ring because it is memoized in the cache table.
@ -95,7 +99,7 @@ same ring because it is memoized in the cache table.
<H2><A NAME="SEC50" HREF="cln_toc.html#TOC50">7.2 Functions on modular integers</A></H2>
<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.
@ -105,27 +109,27 @@ Given a modular integer ring <CODE>R</CODE>, the following members can be used.
<DT><CODE>cl_I R-&#62;modulus</CODE>
<DD>
<A NAME="IDX237"></A>
<A NAME="IDX247"></A>
This is the ring's modulus, normalized to be nonnegative: <CODE>abs(N)</CODE>.
<DT><CODE>cl_MI R-&#62;zero()</CODE>
<DD>
<A NAME="IDX238"></A>
<A NAME="IDX248"></A>
This returns <CODE>0 mod N</CODE>.
<DT><CODE>cl_MI R-&#62;one()</CODE>
<DD>
<A NAME="IDX239"></A>
<A NAME="IDX249"></A>
This returns <CODE>1 mod N</CODE>.
<DT><CODE>cl_MI R-&#62;canonhom (const cl_I&#38; x)</CODE>
<DD>
<A NAME="IDX240"></A>
<A NAME="IDX250"></A>
This returns <CODE>x mod N</CODE>.
<DT><CODE>cl_I R-&#62;retract (const cl_MI&#38; x)</CODE>
<DD>
<A NAME="IDX241"></A>
<A NAME="IDX251"></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>.
@ -133,7 +137,7 @@ standard representative (<CODE>&#62;=0</CODE>, <CODE>&#60;N</CODE>) of <CODE>x</
<DD>
<DT><CODE>cl_MI R-&#62;random()</CODE>
<DD>
<A NAME="IDX242"></A>
<A NAME="IDX252"></A>
This returns a random integer modulo <CODE>N</CODE>.
</DL>
@ -145,18 +149,18 @@ The following operations are defined on modular integers.
<DT><CODE>cl_modint_ring x.ring ()</CODE>
<DD>
<A NAME="IDX243"></A>
<A NAME="IDX253"></A>
Returns the ring to which the modular integer <CODE>x</CODE> belongs.
<DT><CODE>cl_MI operator+ (const cl_MI&#38;, const cl_MI&#38;)</CODE>
<DD>
<A NAME="IDX244"></A>
<A NAME="IDX254"></A>
Returns the sum of two modular integers. One of the arguments may also be
a plain integer.
<DT><CODE>cl_MI operator- (const cl_MI&#38;, const cl_MI&#38;)</CODE>
<DD>
<A NAME="IDX245"></A>
<A NAME="IDX255"></A>
Returns the difference of two modular integers. One of the arguments may also be
a plain integer.
@ -166,61 +170,61 @@ Returns the negative of a modular integer.
<DT><CODE>cl_MI operator* (const cl_MI&#38;, const cl_MI&#38;)</CODE>
<DD>
<A NAME="IDX246"></A>
<A NAME="IDX256"></A>
Returns the product of two modular integers. One of the arguments may also be
a plain integer.
<DT><CODE>cl_MI square (const cl_MI&#38;)</CODE>
<DD>
<A NAME="IDX247"></A>
<A NAME="IDX257"></A>
Returns the square of a modular integer.
<DT><CODE>cl_MI recip (const cl_MI&#38; x)</CODE>
<DD>
<A NAME="IDX248"></A>
<A NAME="IDX258"></A>
Returns the reciprocal <CODE>x^-1</CODE> of a modular integer <CODE>x</CODE>. <CODE>x</CODE>
must be coprime to the modulus, otherwise an error message is issued.
<DT><CODE>cl_MI div (const cl_MI&#38; x, const cl_MI&#38; y)</CODE>
<DD>
<A NAME="IDX249"></A>
<A NAME="IDX259"></A>
Returns the quotient <CODE>x*y^-1</CODE> of two modular integers <CODE>x</CODE>, <CODE>y</CODE>.
<CODE>y</CODE> must be coprime to the modulus, otherwise an error message is issued.
<DT><CODE>cl_MI expt_pos (const cl_MI&#38; x, const cl_I&#38; y)</CODE>
<DD>
<A NAME="IDX250"></A>
<A NAME="IDX260"></A>
<CODE>y</CODE> must be &#62; 0. Returns <CODE>x^y</CODE>.
<DT><CODE>cl_MI expt (const cl_MI&#38; x, const cl_I&#38; y)</CODE>
<DD>
<A NAME="IDX251"></A>
<A NAME="IDX261"></A>
Returns <CODE>x^y</CODE>. If <CODE>y</CODE> is negative, <CODE>x</CODE> must be coprime to the
modulus, else an error message is issued.
<DT><CODE>cl_MI operator&#60;&#60; (const cl_MI&#38; x, const cl_I&#38; y)</CODE>
<DD>
<A NAME="IDX252"></A>
<A NAME="IDX262"></A>
Returns <CODE>x*2^y</CODE>.
<DT><CODE>cl_MI operator&#62;&#62; (const cl_MI&#38; x, const cl_I&#38; y)</CODE>
<DD>
<A NAME="IDX253"></A>
<A NAME="IDX263"></A>
Returns <CODE>x*2^-y</CODE>. When <CODE>y</CODE> is positive, the modulus must be odd,
or an error message is issued.
<DT><CODE>bool operator== (const cl_MI&#38;, const cl_MI&#38;)</CODE>
<DD>
<A NAME="IDX254"></A>
<A NAME="IDX264"></A>
<DT><CODE>bool operator!= (const cl_MI&#38;, const cl_MI&#38;)</CODE>
<DD>
<A NAME="IDX255"></A>
<A NAME="IDX265"></A>
Compares two modular integers, belonging to the same modular integer ring,
for equality.
<DT><CODE>cl_boolean zerop (const cl_MI&#38; x)</CODE>
<DD>
<A NAME="IDX256"></A>
<A NAME="IDX266"></A>
Returns true if <CODE>x</CODE> is <CODE>0 mod N</CODE>.
</DL>
@ -233,10 +237,10 @@ input/output).
<DT><CODE>void fprint (cl_ostream stream, const cl_MI&#38; x)</CODE>
<DD>
<A NAME="IDX257"></A>
<A NAME="IDX267"></A>
<DT><CODE>cl_ostream operator&#60;&#60; (cl_ostream stream, const cl_MI&#38; x)</CODE>
<DD>
<A NAME="IDX258"></A>
<A NAME="IDX268"></A>
Prints the modular integer <CODE>x</CODE> on the <CODE>stream</CODE>. The output may depend
on the global printer settings in the variable <CODE>cl_default_print_flags</CODE>.
</DL>

28
doc/cln_8.html

@ -1,6 +1,6 @@
<HTML>
<HEAD>
<!-- Created by texi2html 1.56k from cln.texi on 4 May 2000 -->
<!-- Created by texi2html 1.56k from cln.texi on 5 May 2000 -->
<TITLE>CLN, a Class Library for Numbers - 8. Symbolic data types</TITLE>
</HEAD>
@ -9,9 +9,9 @@ Go to the <A HREF="cln_1.html">first</A>, <A HREF="cln_7.html">previous</A>, <A
<P><HR><P>
<H1><A NAME="SEC51" HREF="cln_toc.html#TOC51">8. Symbolic data types</A></H1>
<H1><A NAME="SEC52" HREF="cln_toc.html#TOC52">8. Symbolic data types</A></H1>
<P>
<A NAME="IDX259"></A>
<A NAME="IDX269"></A>
<P>
@ -20,9 +20,9 @@ CLN implements two symbolic (non-numeric) data types: strings and symbols.
<H2><A NAME="SEC52" HREF="cln_toc.html#TOC52">8.1 Strings</A></H2>
<H2><A NAME="SEC53" HREF="cln_toc.html#TOC53">8.1 Strings</A></H2>
<P>
<A NAME="IDX260"></A>
<A NAME="IDX270"></A>
<P>
@ -48,7 +48,7 @@ Strings are constructed through the following constructors:
<DT><CODE>cl_string (const char * s)</CODE>
<DD>
<A NAME="IDX261"></A>
<A NAME="IDX271"></A>
Returns an immutable copy of the (zero-terminated) C string <CODE>s</CODE>.
<DT><CODE>cl_string (const char * ptr, unsigned long len)</CODE>
@ -69,30 +69,30 @@ Assignment from <CODE>cl_string</CODE> and <CODE>const char *</CODE>.
<DT><CODE>s.length()</CODE>
<DD>
<A NAME="IDX262"></A>
<A NAME="IDX272"></A>
<DT><CODE>strlen(s)</CODE>
<DD>
<A NAME="IDX263"></A>
<A NAME="IDX273"></A>
Returns the length of the string <CODE>s</CODE>.
<DT><CODE>s[i]</CODE>
<DD>
<A NAME="IDX264"></A>
<A NAME="IDX274"></A>
Returns the <CODE>i</CODE>th character of the string <CODE>s</CODE>.
<CODE>i</CODE> must be in the range <CODE>0 &#60;= i &#60; s.length()</CODE>.
<DT><CODE>bool equal (const cl_string&#38; s1, const cl_string&#38; s2)</CODE>
<DD>
<A NAME="IDX265"></A>
<A NAME="IDX275"></A>
Compares two strings for equality. One of the arguments may also be a
plain <CODE>const char *</CODE>.
</DL>
<H2><A NAME="SEC53" HREF="cln_toc.html#TOC53">8.2 Symbols</A></H2>
<H2><A NAME="SEC54" HREF="cln_toc.html#TOC54">8.2 Symbols</A></H2>
<P>
<A NAME="IDX266"></A>
<A NAME="IDX276"></A>
<P>
@ -112,7 +112,7 @@ Symbols are constructed through the following constructor:
<DT><CODE>cl_symbol (const cl_string&#38; s)</CODE>
<DD>
<A NAME="IDX267"></A>
<A NAME="IDX277"></A>
Looks up or creates a new symbol with a given name.
</DL>
@ -129,7 +129,7 @@ Conversion to <CODE>cl_string</CODE>: Returns the string which names the symbol
<DT><CODE>bool equal (const cl_symbol&#38; sym1, const cl_symbol&#38; sym2)</CODE>
<DD>
<A NAME="IDX268"></A>
<A NAME="IDX278"></A>
Compares two symbols for equality. This is very fast.
</DL>

78
doc/cln_9.html

@ -1,6 +1,6 @@
<HTML>
<HEAD>
<!-- Created by texi2html 1.56k from cln.texi on 4 May 2000 -->
<!-- Created by texi2html 1.56k from cln.texi on 5 May 2000 -->
<TITLE>CLN, a Class Library for Numbers - 9. Univariate polynomials</TITLE>
</HEAD>
@ -9,15 +9,15 @@ Go to the <A HREF="cln_1.html">first</A>, <A HREF="cln_8.html">previous</A>, <A
<P><HR><P>
<H1><A NAME="SEC54" HREF="cln_toc.html#TOC54">9. Univariate polynomials</A></H1>
<H1><A NAME="SEC55" HREF="cln_toc.html#TOC55">9. Univariate polynomials</A></H1>
<P>
<A NAME="IDX269"></A>
<A NAME="IDX270"></A>
<A NAME="IDX279"></A>
<A NAME="IDX280"></A>
<H2><A NAME="SEC55" HREF="cln_toc.html#TOC55">9.1 Univariate polynomial rings</A></H2>
<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
@ -125,7 +125,7 @@ return the same polynomial ring.
<DT><CODE>cl_univpoly_complex_ring cl_find_univpoly_ring (const cl_complex_ring&#38; R)</CODE>
<DD>
<A NAME="IDX271"></A>
<A NAME="IDX281"></A>
<DT><CODE>cl_univpoly_complex_ring cl_find_univpoly_ring (const cl_complex_ring&#38; R, const cl_symbol&#38; varname)</CODE>
<DD>
<DT><CODE>cl_univpoly_real_ring cl_find_univpoly_ring (const cl_real_ring&#38; R)</CODE>
@ -150,7 +150,7 @@ only the return type is more specific, according to the base ring's type.
<H2><A NAME="SEC56" HREF="cln_toc.html#TOC56">9.2 Functions on univariate polynomials</A></H2>
<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.
@ -160,33 +160,33 @@ Given a univariate polynomial ring <CODE>R</CODE>, the following members can be
<DT><CODE>cl_ring R-&#62;basering()</CODE>
<DD>
<A NAME="IDX272"></A>
<A NAME="IDX282"></A>
This returns the base ring, as passed to <SAMP>`cl_find_univpoly_ring'</SAMP>.
<DT><CODE>cl_UP R-&#62;zero()</CODE>
<DD>
<A NAME="IDX273"></A>
<A NAME="IDX283"></A>
This returns <CODE>0 in R</CODE>, a polynomial of degree -1.
<DT><CODE>cl_UP R-&#62;one()</CODE>
<DD>
<A NAME="IDX274"></A>
<A NAME="IDX284"></A>
This returns <CODE>1 in R</CODE>, a polynomial of degree &#60;= 0.
<DT><CODE>cl_UP R-&#62;canonhom (const cl_I&#38; x)</CODE>
<DD>
<A NAME="IDX275"></A>
<A NAME="IDX285"></A>
This returns <CODE>x in R</CODE>, a polynomial of degree &#60;= 0.
<DT><CODE>cl_UP R-&#62;monomial (const cl_ring_element&#38; x, uintL e)</CODE>
<DD>
<A NAME="IDX276"></A>
<A NAME="IDX286"></A>
This returns a sparse polynomial: <CODE>x * X^e</CODE>, where <CODE>X</CODE> is the
indeterminate.
<DT><CODE>cl_UP R-&#62;create (sintL degree)</CODE>
<DD>
<A NAME="IDX277"></A>
<A NAME="IDX287"></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>
@ -201,14 +201,14 @@ The following are the only destructive operations on univariate polynomials.
<DT><CODE>void set_coeff (cl_UP&#38; x, uintL index, const cl_ring_element&#38; y)</CODE>
<DD>
<A NAME="IDX278"></A>
<A NAME="IDX288"></A>
This changes the coefficient of <CODE>X^index</CODE> in <CODE>x</CODE> to be <CODE>y</CODE>.
After changing a polynomial and before applying any "normal" operation on it,
you should call its <CODE>finalize</CODE> member function.
<DT><CODE>void finalize (cl_UP&#38; x)</CODE>
<DD>
<A NAME="IDX279"></A>
<A NAME="IDX289"></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
@ -223,17 +223,17 @@ The following operations are defined on univariate polynomials.
<DT><CODE>cl_univpoly_ring x.ring ()</CODE>
<DD>
<A NAME="IDX280"></A>
<A NAME="IDX290"></A>
Returns the ring to which the univariate polynomial <CODE>x</CODE> belongs.
<DT><CODE>cl_UP operator+ (const cl_UP&#38;, const cl_UP&#38;)</CODE>
<DD>
<A NAME="IDX281"></A>
<A NAME="IDX291"></A>
Returns the sum of two univariate polynomials.
<DT><CODE>cl_UP operator- (const cl_UP&#38;, const cl_UP&#38;)</CODE>
<DD>
<A NAME="IDX282"></A>
<A NAME="IDX292"></A>
Returns the difference of two univariate polynomials.
<DT><CODE>cl_UP operator- (const cl_UP&#38;)</CODE>
@ -242,54 +242,54 @@ Returns the negative of a univariate polynomial.
<DT><CODE>cl_UP operator* (const cl_UP&#38;, const cl_UP&#38;)</CODE>
<DD>
<A NAME="IDX283"></A>
<A NAME="IDX293"></A>
Returns the product of two univariate polynomials. One of the arguments may
also be a plain integer or an element of the base ring.
<DT><CODE>cl_UP square (const cl_UP&#38;)</CODE>
<DD>
<A NAME="IDX284"></A>
<A NAME="IDX294"></A>
Returns the square of a univariate polynomial.
<DT><CODE>cl_UP expt_pos (const cl_UP&#38; x, const cl_I&#38; y)</CODE>
<DD>
<A NAME="IDX285"></A>
<A NAME="IDX295"></A>
<CODE>y</CODE> must be &#62; 0. Returns <CODE>x^y</CODE>.
<DT><CODE>bool operator== (const cl_UP&#38;, const cl_UP&#38;)</CODE>
<DD>
<A NAME="IDX286"></A>
<A NAME="IDX296"></A>
<DT><CODE>bool operator!= (const cl_UP&#38;, const cl_UP&#38;)</CODE>
<DD>
<A NAME="IDX287"></A>
<A NAME="IDX297"></A>
Compares two univariate polynomials, belonging to the same univariate
polynomial ring, for equality.
<DT><CODE>cl_boolean zerop (const cl_UP&#38; x)</CODE>
<DD>
<A NAME="IDX288"></A>
<A NAME="IDX298"></A>
Returns true if <CODE>x</CODE> is <CODE>0 in R</CODE>.
<DT><CODE>sintL degree (const cl_UP&#38; x)</CODE>
<DD>
<A NAME="IDX289"></A>
<A NAME="IDX299"></A>
Returns the degree of the polynomial. The zero polynomial has degree <CODE>-1</CODE>.
<DT><CODE>cl_ring_element coeff (const cl_UP&#38; x, uintL index)</CODE>
<DD>
<A NAME="IDX290"></A>
<A NAME="IDX300"></A>
Returns the coefficient of <CODE>X^index</CODE> in the polynomial <CODE>x</CODE>.
<DT><CODE>cl_ring_element x (const cl_ring_element&#38; y)</CODE>
<DD>
<A NAME="IDX291"></A>
<A NAME="IDX301"></A>
Evaluation: If <CODE>x</CODE> is a polynomial and <CODE>y</CODE> belongs to the base ring,
then <SAMP>`x(y)'</SAMP> returns the value of the substitution of <CODE>y</CODE> into
<CODE>x</CODE>.
<DT><CODE>cl_UP deriv (const cl_UP&#38; x)</CODE>
<DD>
<A NAME="IDX292"></A>
<A NAME="IDX302"></A>
Returns the derivative of the polynomial <CODE>x</CODE> with respect to the
indeterminate <CODE>X</CODE>.
</DL>
@ -303,10 +303,10 @@ input/output).
<DT><CODE>void fprint (cl_ostream stream, const cl_UP&#38; x)</CODE>
<DD>
<A NAME="IDX293"></A>
<A NAME="IDX303"></A>
<DT><CODE>cl_ostream operator&#60;&#60; (cl_ostream stream, const cl_UP&#38; x)</CODE>
<DD>
<A NAME="IDX294"></A>
<A NAME="IDX304"></A>
Prints the univariate polynomial <CODE>x</CODE> on the <CODE>stream</CODE>. The output may
depend on the global printer settings in the variable
<CODE>cl_default_print_flags</CODE>.
@ -314,7 +314,7 @@ depend on the global printer settings in the variable
<H2><A NAME="SEC57" HREF="cln_toc.html#TOC57">9.3 Special polynomials</A></H2>
<H2><A NAME="SEC58" HREF="cln_toc.html#TOC58">9.3 Special polynomials</A></H2>
<P>
The following functions return special polynomials.
@ -324,26 +324,26 @@ The following functions return special polynomials.
<DT><CODE>cl_UP_I cl_tschebychev (sintL n)</CODE>
<DD>
<A NAME="IDX295"></A>
<A NAME="IDX296"></A>
<A NAME="IDX305"></A>
<A NAME="IDX306"></A>
Returns the n-th Tchebychev polynomial (n &#62;= 0).
<DT><CODE>cl_UP_I cl_hermite (sintL n)</CODE>
<DD>
<A NAME="IDX297"></A>
<A NAME="IDX298"></A>
<A NAME="IDX307"></A>
<A NAME="IDX308"></A>
Returns the n-th Hermite polynomial (n &#62;= 0).
<DT><CODE>cl_UP_RA cl_legendre (sintL n)</CODE>
<DD>
<A NAME="IDX299"></A>
<A NAME="IDX300"></A>
<A NAME="IDX309"></A>
<A NAME="IDX310"></A>
Returns the n-th Legendre polynomial (n &#62;= 0).
<DT><CODE>cl_UP_I cl_laguerre (sintL n)</CODE>
<DD>
<A NAME="IDX301"></A>
<A NAME="IDX302"></A>
<A NAME="IDX311"></A>
<A NAME="IDX312"></A>
Returns the n-th Laguerre polynomial (n &#62;= 0).
</DL>

139
doc/cln_toc.html

@ -1,6 +1,6 @@
<HTML>
<HEAD>
<!-- Created by texi2html 1.56k from cln.texi on 4 May 2000 -->
<!-- Created by texi2html 1.56k from cln.texi on 5 May 2000 -->
<TITLE>CLN, a Class Library for Numbers - Table of Contents</TITLE>
</HEAD>
@ -20,102 +20,105 @@
<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>
<LI><A NAME="TOC8" HREF="cln_2.html#SEC8">2.3 Installing the library</A>
<LI><A NAME="TOC9" HREF="cln_2.html#SEC9">2.4 Cleaning up</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="TOC10" HREF="cln_3.html#SEC10">3. Ordinary number types</A>
<LI><A NAME="TOC11" HREF="cln_3.html#SEC11">3. Ordinary number types</A>
<UL>
<LI><A NAME="TOC11" HREF="cln_3.html#SEC11">3.1 Exact numbers</A>
<LI><A NAME="TOC12" HREF="cln_3.html#SEC12">3.2 Floating-point numbers</A>
<LI><A NAME="TOC13" HREF="cln_3.html#SEC13">3.3 Complex numbers</A>
<LI><A NAME="TOC14" HREF="cln_3.html#SEC14">3.4 Conversions</A>
<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="TOC15" HREF="cln_4.html#SEC15">4. Functions on numbers</A>
<LI><A NAME="TOC16" HREF="cln_4.html#SEC16">4. Functions on numbers</A>
<UL>
<LI><A NAME="TOC16" HREF="cln_4.html#SEC16">4.1 Constructing numbers</A>
<LI><A NAME="TOC17" HREF="cln_4.html#SEC17">4.1 Constructing numbers</A>
<UL>
<LI><A NAME="TOC17" HREF="cln_4.html#SEC17">4.1.1 Constructing integers</A>
<LI><A NAME="TOC18" HREF="cln_4.html#SEC18">4.1.2 Constructing rational numbers</A>
<LI><A NAME="TOC19" HREF="cln_4.html#SEC19">4.1.3 Constructing floating-point numbers</A>
<LI><A NAME="TOC20" HREF="cln_4.html#SEC20">4.1.4 Constructing complex numbers</A>
<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="TOC21" HREF="cln_4.html#SEC21">4.2 Elementary functions</A>
<LI><A NAME="TOC22" HREF="cln_4.html#SEC22">4.3 Elementary rational functions</A>
<LI><A NAME="TOC23" HREF="cln_4.html#SEC23">4.4 Elementary complex functions</A>
<LI><A NAME="TOC24" HREF="cln_4.html#SEC24">4.5 Comparisons</A>
<LI><A NAME="TOC25" HREF="cln_4.html#SEC25">4.6 Rounding functions</A>
<LI><A NAME="TOC26" HREF="cln_4.html#SEC26">4.7 Roots</A>
<LI><A NAME="TOC27" HREF="cln_4.html#SEC27">4.8 Transcendental functions</A>
<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="TOC28" HREF="cln_4.html#SEC28">4.8.1 Exponential and logarithmic functions</A>
<LI><A NAME="TOC29" HREF="cln_4.html#SEC29">4.8.2 Trigonometric functions</A>
<LI><A NAME="TOC30" HREF="cln_4.html#SEC30">4.8.3 Hyperbolic functions</A>
<LI><A NAME="TOC31" HREF="cln_4.html#SEC31">4.8.4 Euler gamma</A>
<LI><A NAME="TOC32" HREF="cln_4.html#SEC32">4.8.5 Riemann zeta</A>
<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="TOC33" HREF="cln_4.html#SEC33">4.9 Functions on integers</A>
<LI><A NAME="TOC34" HREF="cln_4.html#SEC34">4.9 Functions on integers</A>
<UL>
<LI><A NAME="TOC34" HREF="cln_4.html#SEC34">4.9.1 Logical functions</A>
<LI><A NAME="TOC35" HREF="cln_4.html#SEC35">4.9.2 Number theoretic functions</A>
<LI><A NAME="TOC36" HREF="cln_4.html#SEC36">4.9.3 Combinatorial functions</A>
<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="TOC37" HREF="cln_4.html#SEC37">4.10 Functions on floating-point numbers</A>
<LI><A NAME="TOC38" HREF="cln_4.html#SEC38">4.11 Conversion functions</A>
<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="TOC39" HREF="cln_4.html#SEC39">4.11.1 Conversion to floating-point numbers</A>
<LI><A NAME="TOC40" HREF="cln_4.html#SEC40">4.11.2 Conversion to rational numbers</A>
<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="TOC41" HREF="cln_4.html#SEC41">4.12 Random number generators</A>
<LI><A NAME="TOC42" HREF="cln_4.html#SEC42">4.13 Obfuscating operators</A>
<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="TOC43" HREF="cln_5.html#SEC43">5. Input/Output</A>
<LI><A NAME="TOC44" HREF="cln_5.html#SEC44">5. Input/Output</A>
<UL>
<LI><A NAME="TOC44" HREF="cln_5.html#SEC44">5.1 Internal and printed representation</A>
<LI><A NAME="TOC45" HREF="cln_5.html#SEC45">5.2 Input functions</A>
<LI><A NAME="TOC46" HREF="cln_5.html#SEC46">5.3 Output functions</A>
<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="TOC47" HREF="cln_6.html#SEC47">6. Rings</A>
<LI><A NAME="TOC48" HREF="cln_7.html#SEC48">7. Modular integers</A>
<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="TOC49" HREF="cln_7.html#SEC49">7.1 Modular integer rings</A>
<LI><A NAME="TOC50" HREF="cln_7.html#SEC50">7.2 Functions on modular integers</A>
<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="TOC51" HREF="cln_8.html#SEC51">8. Symbolic data types</A>
<LI><A NAME="TOC52" HREF="cln_8.html#SEC52">8. Symbolic data types</A>
<UL>
<LI><A NAME="TOC52" HREF="cln_8.html#SEC52">8.1 Strings</A>
<LI><A NAME="TOC53" HREF="cln_8.html#SEC53">8.2 Symbols</A>
<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="TOC54" HREF="cln_9.html#SEC54">9. Univariate polynomials</A>
<LI><A NAME="TOC55" HREF="cln_9.html#SEC55">9. Univariate polynomials</A>
<UL>
<LI><A NAME="TOC55" HREF="cln_9.html#SEC55">9.1 Univariate polynomial rings</A>
<LI><A NAME="TOC56" HREF="cln_9.html#SEC56">9.2 Functions on univariate polynomials</A>
<LI><A NAME="TOC57" HREF="cln_9.html#SEC57">9.3 Special polynomials</A>
<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="TOC58" HREF="cln_10.html#SEC58">10. Internals</A>
<LI><A NAME="TOC59" HREF="cln_10.html#SEC59">10. Internals</A>
<UL>
<LI><A NAME="TOC59" HREF="cln_10.html#SEC59">10.1 Why C++ ?</A>
<LI><A NAME="TOC60" HREF="cln_10.html#SEC60">10.2 Memory efficiency</A>
<LI><A NAME="TOC61" HREF="cln_10.html#SEC61">10.3 Speed efficiency</A>
<LI><A NAME="TOC62" HREF="cln_10.html#SEC62">10.4 Garbage collection</A>
<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="TOC63" HREF="cln_11.html#SEC63">11. Using the library</A>
<LI><A NAME="TOC64" HREF="cln_11.html#SEC64">11. Using the library</A>
<UL>
<LI><A NAME="TOC64" HREF="cln_11.html#SEC64">11.1 Compiler options</A>
<LI><A NAME="TOC65" HREF="cln_11.html#SEC65">11.2 Include files</A>
<LI><A NAME="TOC66" HREF="cln_11.html#SEC66">11.3 An Example</A>
<LI><A NAME="TOC67" HREF="cln_11.html#SEC67">11.4 Debugging support</A>
<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 Include files</A>
<LI><A NAME="TOC67" HREF="cln_11.html#SEC67">11.3 An Example</A>
<LI><A NAME="TOC68" HREF="cln_11.html#SEC68">11.4 Debugging support</A>
</UL>
<LI><A NAME="TOC68" HREF="cln_12.html#SEC68">12. Customizing</A>
<LI><A NAME="TOC69" HREF="cln_12.html#SEC69">12. Customizing</A>
<UL>
<LI><A NAME="TOC69" HREF="cln_12.html#SEC69">12.1 Error handling</A>
<LI><A NAME="TOC70" HREF="cln_12.html#SEC70">12.2 Floating-point underflow</A>
<LI><A NAME="TOC71" HREF="cln_12.html#SEC71">12.3 Customizing I/O</A>
<LI><A NAME="TOC72" HREF="cln_12.html#SEC72">12.4 Customizing the memory allocator</A>
<LI><A NAME="TOC70" HREF="cln_12.html#SEC70">12.1 Error handling</A>
<LI><A NAME="TOC71" HREF="cln_12.html#SEC71">12.2 Floating-point underflow</A>
<LI><A NAME="TOC72" HREF="cln_12.html#SEC72">12.3 Customizing I/O</A>
<LI><A NAME="TOC73" HREF="cln_12.html#SEC73">12.4 Customizing the memory allocator</A>
</UL>
<LI><A NAME="TOC73" HREF="cln_13.html#SEC73">Index</A>
<LI><A NAME="TOC74" HREF="cln_13.html#SEC74">Index</A>
</UL>
<P><HR><P>
This document was generated on 4 May 2000 using
This document was generated on 5 May 2000 using
<A HREF="http://wwwinfo.cern.ch/dis/texi2html/">texi2html</A>&nbsp;1.56k.
</BODY>
</HTML>

4139
doc/texinfo.tex
File diff suppressed because it is too large
View File

Loading…
Cancel
Save