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 26 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. 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:: * Customizing::
* Index:: * Index::
-- The Detailed Node Listing --
--- The Detailed Node Listing ---
Installation Installation
@ -56,6 +56,10 @@ Prerequisites
* Make utility:: * Make utility::
* Sed utility:: * Sed utility::
Building the library
* Using the GNU MP Library::
Ordinary number types Ordinary number types
* Exact numbers:: * 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 use `--enable-shared' because `g++' would miscompile parts of the
library. 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 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++ The class `cl_I' doesn't define a `/' operation because in the C/C++
language this operator, applied to integral types, denotes the `floor' language this operator, applied to integral types, denotes the `floor'
or `truncate' operation (which one of these, is implementation 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: "exact quotient" function:
`cl_I exquo (const cl_I& x, const cl_I& y)' `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&'. `istream&'.
The variable 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: 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&'. as `ostream&'.
The variable The variable
`cl_ostream cl_stdout' contains the standard output stream.
`cl_ostream cl_stdout'
contains the standard output stream.
The variable 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: These are the simple output functions:
@ -3332,17 +3363,21 @@ Index
* cl_default_print_flags: Customizing I/O. * cl_default_print_flags: Customizing I/O.
* cl_default_random_state: Random number generators. * cl_default_random_state: Random number generators.
* cl_DF: Floating-point numbers. * cl_DF: Floating-point numbers.
* cl_DF_fdiv_t: Rounding functions.
* cl_double_approx (): Conversions. * cl_double_approx (): Conversions.
* cl_equal_hashcode (): Comparisons. * cl_equal_hashcode (): Comparisons.
* cl_eulerconst (): Euler gamma. * cl_eulerconst (): Euler gamma.
* cl_F <1>: Floating-point numbers. * cl_F <1>: Floating-point numbers.
* cl_F: Ordinary number types. * cl_F: Ordinary number types.
* cl_F_fdiv_t: Rounding functions.
* cl_FF: Floating-point numbers. * cl_FF: Floating-point numbers.
* cl_FF_fdiv_t: Rounding functions.
* cl_find_modint_ring (): Modular integer rings. * cl_find_modint_ring (): Modular integer rings.
* cl_find_univpoly_ring (): Univariate polynomial 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_approx (): Conversions.
* cl_float_format (): Conversion to floating-point numbers. * 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_free_hook (): Customizing the memory allocator.
* cl_hermite (): Special polynomials. * cl_hermite (): Special polynomials.
* cl_I_to_int (): Conversions. * cl_I_to_int (): Conversions.
@ -3353,13 +3388,18 @@ Index
* cl_laguerre (): Special polynomials. * cl_laguerre (): Special polynomials.
* cl_legendre (): Special polynomials. * cl_legendre (): Special polynomials.
* cl_LF: Floating-point numbers. * cl_LF: Floating-point numbers.
* cl_LF_fdiv_t: Rounding functions.
* cl_malloc_hook (): Customizing the memory allocator. * cl_malloc_hook (): Customizing the memory allocator.
* cl_modint_ring: Modular integer rings.
* cl_N: Ordinary number types. * cl_N: Ordinary number types.
* cl_number: Ordinary number types. * cl_number: Ordinary number types.
* cl_pi: Trigonometric functions.
* cl_pi (): Trigonometric functions.
* cl_R: Ordinary number types. * cl_R: Ordinary number types.
* cl_R_fdiv_t: Rounding functions.
* cl_RA: Ordinary number types. * cl_RA: Ordinary number types.
* cl_random_state: Random number generators.
* cl_SF: Floating-point numbers. * cl_SF: Floating-point numbers.
* cl_SF_fdiv_t: Rounding functions.
* cl_string (): Strings. * cl_string (): Strings.
* cl_symbol (): Symbols. * cl_symbol (): Symbols.
* cl_tschebychev (): Special polynomials. * cl_tschebychev (): Special polynomials.
@ -3389,7 +3429,6 @@ Index
* dpb (): Logical functions. * dpb (): Logical functions.
* equal () <1>: Symbols. * equal () <1>: Symbols.
* equal (): Strings. * equal (): Strings.
* etract (): Functions on modular integers.
* Euler's constant: Euler gamma. * Euler's constant: Euler gamma.
* evenp (): Logical functions. * evenp (): Logical functions.
* exact number: Exact numbers. * exact number: Exact numbers.
@ -3428,6 +3467,7 @@ Index
* garbage collection <1>: Garbage collection. * garbage collection <1>: Garbage collection.
* garbage collection: Memory efficiency. * garbage collection: Memory efficiency.
* gcd (): Number theoretic functions. * gcd (): Number theoretic functions.
* GMP <1>: Using the GNU MP Library.
* GMP: Introduction. * GMP: Introduction.
* header files: Include files. * header files: Include files.
* Hermite polynomial: Special polynomials. * Hermite polynomial: Special polynomials.
@ -3464,7 +3504,7 @@ Index
* logp (): Number theoretic functions. * logp (): Number theoretic functions.
* logtest (): Logical functions. * logtest (): Logical functions.
* logxor (): Logical functions. * logxor (): Logical functions.
* make: C++ compiler.
* make: Make utility.
* mask_field (): Logical functions. * mask_field (): Logical functions.
* max (): Comparisons. * max (): Comparisons.
* min (): Comparisons. * min (): Comparisons.
@ -3551,9 +3591,10 @@ Index
* reference counting: Memory efficiency. * reference counting: Memory efficiency.
* rem (): Rounding functions. * rem (): Rounding functions.
* representation: Internal and printed representation. * representation: Internal and printed representation.
* retract (): Functions on modular integers.
* Riemann's zeta: Riemann zeta. * Riemann's zeta: Riemann zeta.
* ring: Modular integer rings. * ring: Modular integer rings.
* ring (): Functions on univariate polynomials.
* ring () <1>: Functions on univariate polynomials.
* ring (): Functions on modular integers. * ring (): Functions on modular integers.
* rootp (): Roots. * rootp (): Roots.
* round1 (): Rounding functions. * round1 (): Rounding functions.
@ -3562,9 +3603,9 @@ Index
* rounding error: Floating-point numbers. * rounding error: Floating-point numbers.
* Rubik's cube: Conversions. * Rubik's cube: Conversions.
* scale_float (): Functions on floating-point numbers. * scale_float (): Functions on floating-point numbers.
* Schönhage-Strassen: Speed efficiency.
* Schönhage-Strassen multiplication <1>: Speed efficiency.
* Schönhage-Strassen multiplication: Introduction. * Schönhage-Strassen multiplication: Introduction.
* sed: Make utility.
* sed: Sed utility.
* set_coeff (): Functions on univariate polynomials. * set_coeff (): Functions on univariate polynomials.
* signum (): Elementary functions. * signum (): Elementary functions.
* sin (): Trigonometric functions. * sin (): Trigonometric functions.
@ -3598,79 +3639,80 @@ Index
 
Tag Table: 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 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 itemize
@end ignore @end ignore
@cindex @code{make}
@subsection Make utility @subsection Make utility
@cindex @code{make}
To build CLN, you also need to have GNU @code{make} installed. To build CLN, you also need to have GNU @code{make} installed.
@cindex @code{sed}
@subsection Sed utility @subsection Sed utility
@cindex @code{sed}
To build CLN on HP-UX, you also need to have GNU @code{sed} installed. 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 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. 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 @section Installing the library
@cindex installation @cindex installation
@ -852,7 +873,7 @@ Returns the reciprocal of the argument.
The class @code{cl_I} doesn't define a @samp{/} operation because The class @code{cl_I} doesn't define a @samp{/} operation because
in the C/C++ language this operator, applied to integral types, in the C/C++ language this operator, applied to integral types,
denotes the @samp{floor} or @samp{truncate} operation (which one of these, 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: Instead, @code{cl_I} defines an ``exact quotient'' function:
@table @code @table @code
@ -1196,6 +1217,11 @@ and the remainder. The suffix @samp{2} indicates this.
Each of the classes Each of the classes
@code{cl_F}, @code{cl_SF}, @code{cl_FF}, @code{cl_DF}, @code{cl_LF} @code{cl_F}, @code{cl_SF}, @code{cl_FF}, @code{cl_DF}, @code{cl_LF}
defines the following operations: 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 @table @code
@item struct @var{type}_fdiv_t @{ @var{type} quotient; @var{type} remainder; @}; @item struct @var{type}_fdiv_t @{ @var{type} quotient; @var{type} remainder; @};
@ -1209,6 +1235,7 @@ defines the following operations:
@cindex @code{fround2 ()} @cindex @code{fround2 ()}
@end table @end table
and similarly for class @code{cl_R}, but with quotient type @code{cl_F}. 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: 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 @table @code
@item cl_F cl_pi (cl_float_format_t f) @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}. Returns pi as a float of format @code{f}.
@item cl_F cl_pi (const cl_F& y) @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 @subsection Conversion to floating-point numbers
The type @code{cl_float_format_t} describes a floating-point format. The type @code{cl_float_format_t} describes a floating-point format.
@cindex @code{cl_float_format_t}
@table @code @table @code
@item cl_float_format_t cl_float_format (uintL n) @item cl_float_format_t cl_float_format (uintL n)
@ -2106,7 +2134,7 @@ defines the following operations:
@table @code @table @code
@item cl_F cl_float (const @var{type}&x, cl_float_format_t f) @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}. Returns @code{x} as a float of format @code{f}.
@item cl_F cl_float (const @var{type}&x, const cl_F& y) @item cl_F cl_float (const @var{type}&x, const cl_F& y)
Returns @code{x} in the float format of @code{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. a complicated but deterministic way.
The global variable The global variable
@cindex @code{cl_random_state}
@cindex @code{cl_default_random_state} @cindex @code{cl_default_random_state}
@example @example
cl_random_state cl_default_random_state cl_random_state cl_default_random_state
@ -2684,6 +2713,7 @@ The class of modular integer rings is
cl_modint_ring cl_modint_ring
<cl_modinteger.h> <cl_modinteger.h>
@end example @end example
@cindex @code{cl_modint_ring}
and the class of all modular integers (elements of modular integer rings) is 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}. This returns @code{x mod N}.
@item cl_I R->retract (const cl_MI& x) @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 This is a partial inverse function to @code{R->canonhom}. It returns the
standard representative (@code{>=0}, @code{<N}) of @code{x}. 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 This ensures that two calls of this function with the same arguments will
return the same polynomial ring. 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 ()} @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_complex_ring cl_find_univpoly_ring (const cl_complex_ring& R, const cl_symbol& varname)
@itemx cl_univpoly_real_ring cl_find_univpoly_ring (const cl_real_ring& R) @itemx cl_univpoly_real_ring cl_find_univpoly_ring (const cl_real_ring& R)
@ -3279,14 +3309,14 @@ algorithm.
For very large numbers (more than 12000 decimal digits), CLN uses For very large numbers (more than 12000 decimal digits), CLN uses
@iftex @iftex
Sch{@"o}nhage-Strassen Sch{@"o}nhage-Strassen
@cindex Sch{@"o}nhage-Strassen
@cindex Sch{@"o}nhage-Strassen multiplication
@end iftex @end iftex
@ifinfo @ifinfo
Schönhage-Strassen Schönhage-Strassen
@cindex Schönhage-Strassen
@cindex Schönhage-Strassen multiplication
@end ifinfo @end ifinfo
multiplication, which is an asymptotically
optimal multiplication algorithm.
multiplication, which is an asymptotically optimal multiplication
algorithm.
@item @item
These fast multiplication algorithms also give improvements in the speed These fast multiplication algorithms also give improvements in the speed
of division and radix conversion. of division and radix conversion.

64
doc/cln.texi

@ -110,6 +110,7 @@ by the author.
* Customizing:: * Customizing::
* Index:: * Index::
--- The Detailed Node Listing --- --- The Detailed Node Listing ---
Installation Installation
@ -125,6 +126,10 @@ Prerequisites
* Make utility:: * Make utility::
* Sed utility:: * Sed utility::
Building the library
* Using the GNU MP Library::
Ordinary number types Ordinary number types
* Exact numbers:: * Exact numbers::
@ -216,6 +221,8 @@ Customizing
* Floating-point underflow:: * Floating-point underflow::
* Customizing I/O:: * Customizing I/O::
* Customizing the memory allocator:: * Customizing the memory allocator::
@end menu @end menu
@node Introduction, Installation, Top, Top @node Introduction, Installation, Top, Top
@ -421,15 +428,15 @@ initializations will not work.
@end itemize @end itemize
@end ignore @end ignore
@cindex @code{make}
@node Make utility, Sed utility, C++ compiler, Prerequisites @node Make utility, Sed utility, C++ compiler, Prerequisites
@subsection Make utility @subsection Make utility
@cindex @code{make}
To build CLN, you also need to have GNU @code{make} installed. To build CLN, you also need to have GNU @code{make} installed.
@cindex @code{sed}
@node Sed utility, , Make utility, Prerequisites @node Sed utility, , Make utility, Prerequisites
@subsection Sed utility @subsection Sed utility
@cindex @code{sed}
To build CLN on HP-UX, you also need to have GNU @code{sed} installed. 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 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. 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 @node Installing the library, Cleaning up, Building the library, Installation
@section Installing the library @section Installing the library
@cindex installation @cindex installation
@ -1037,7 +1070,7 @@ Returns the reciprocal of the argument.
The class @code{cl_I} doesn't define a @samp{/} operation because The class @code{cl_I} doesn't define a @samp{/} operation because
in the C/C++ language this operator, applied to integral types, in the C/C++ language this operator, applied to integral types,
denotes the @samp{floor} or @samp{truncate} operation (which one of these, 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: Instead, @code{cl_I} defines an ``exact quotient'' function:
@table @code @table @code
@ -1385,6 +1418,11 @@ and the remainder. The suffix @samp{2} indicates this.
Each of the classes Each of the classes
@code{cl_F}, @code{cl_SF}, @code{cl_FF}, @code{cl_DF}, @code{cl_LF} @code{cl_F}, @code{cl_SF}, @code{cl_FF}, @code{cl_DF}, @code{cl_LF}
defines the following operations: 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 @table @code
@item struct @var{type}_fdiv_t @{ @var{type} quotient; @var{type} remainder; @}; @item struct @var{type}_fdiv_t @{ @var{type} quotient; @var{type} remainder; @};
@ -1398,6 +1436,7 @@ defines the following operations:
@cindex @code{fround2 ()} @cindex @code{fround2 ()}
@end table @end table
and similarly for class @code{cl_R}, but with quotient type @code{cl_F}. 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: 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 @table @code
@item cl_F cl_pi (cl_float_format_t f) @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}. Returns pi as a float of format @code{f}.
@item cl_F cl_pi (const cl_F& y) @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 @subsection Conversion to floating-point numbers
The type @code{cl_float_format_t} describes a floating-point format. The type @code{cl_float_format_t} describes a floating-point format.
@cindex @code{cl_float_format_t}
@table @code @table @code
@item cl_float_format_t cl_float_format (uintL n) @item cl_float_format_t cl_float_format (uintL n)
@ -2328,7 +2368,7 @@ defines the following operations:
@table @code @table @code
@item cl_F cl_float (const @var{type}&x, cl_float_format_t f) @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}. Returns @code{x} as a float of format @code{f}.
@item cl_F cl_float (const @var{type}&x, const cl_F& y) @item cl_F cl_float (const @var{type}&x, const cl_F& y)
Returns @code{x} in the float format of @code{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. a complicated but deterministic way.
The global variable The global variable
@cindex @code{cl_random_state}
@cindex @code{cl_default_random_state} @cindex @code{cl_default_random_state}
@example @example
cl_random_state cl_default_random_state cl_random_state cl_default_random_state
@ -2927,6 +2968,7 @@ The class of modular integer rings is
cl_modint_ring cl_modint_ring
<cl_modinteger.h> <cl_modinteger.h>
@end example @end example
@cindex @code{cl_modint_ring}
and the class of all modular integers (elements of modular integer rings) is 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}. This returns @code{x mod N}.
@item cl_I R->retract (const cl_MI& x) @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 This is a partial inverse function to @code{R->canonhom}. It returns the
standard representative (@code{>=0}, @code{<N}) of @code{x}. 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 This ensures that two calls of this function with the same arguments will
return the same polynomial ring. 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 ()} @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_complex_ring cl_find_univpoly_ring (const cl_complex_ring& R, const cl_symbol& varname)
@itemx cl_univpoly_real_ring cl_find_univpoly_ring (const cl_real_ring& R) @itemx cl_univpoly_real_ring cl_find_univpoly_ring (const cl_real_ring& R)
@ -3552,14 +3594,14 @@ algorithm.
For very large numbers (more than 12000 decimal digits), CLN uses For very large numbers (more than 12000 decimal digits), CLN uses
@iftex @iftex
Sch{@"o}nhage-Strassen Sch{@"o}nhage-Strassen
@cindex Sch{@"o}nhage-Strassen
@cindex Sch{@"o}nhage-Strassen multiplication
@end iftex @end iftex
@ifinfo @ifinfo
Schönhage-Strassen Schönhage-Strassen
@cindex Schönhage-Strassen
@cindex Schönhage-Strassen multiplication
@end ifinfo @end ifinfo
multiplication, which is an asymptotically
optimal multiplication algorithm.
multiplication, which is an asymptotically optimal multiplication
algorithm.
@item @item
These fast multiplication algorithms also give improvements in the speed These fast multiplication algorithms also give improvements in the speed
of division and radix conversion. of division and radix conversion.

2
doc/cln_1.html

@ -1,6 +1,6 @@
<HTML> <HTML>
<HEAD> <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> <TITLE>CLN, a Class Library for Numbers - 1. Introduction</TITLE>
</HEAD> </HEAD>

28
doc/cln_10.html

@ -1,6 +1,6 @@
<HTML> <HTML>
<HEAD> <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> <TITLE>CLN, a Class Library for Numbers - 10. Internals</TITLE>
</HEAD> </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> <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> <P>
<A NAME="IDX303"></A>
<A NAME="IDX313"></A>
<P> <P>
@ -30,7 +30,7 @@ Efficiency: It compiles to machine code.
<LI> <LI>
<A NAME="IDX304"></A>
<A NAME="IDX314"></A>
Portability: It runs on all platforms supporting a C++ compiler. Because 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 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. 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> <P>
In order to save memory allocations, CLN implements: 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. it.
<LI> <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 Garbage collection: A reference counting mechanism makes sure that any
number object's storage is freed immediately when the last reference to the number object's storage is freed immediately when the last reference to the
object is gone. 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> <P>
Speed efficiency is obtained by the combination of the following tricks 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 For very large numbers (more than 12000 decimal digits), CLN uses
Schönhage-Strassen 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> <LI>
These fast multiplication algorithms also give improvements in the speed 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> <P>
<A NAME="IDX308"></A>
<A NAME="IDX318"></A>
<P> <P>

26
doc/cln_11.html

@ -1,6 +1,6 @@
<HTML> <HTML>
<HEAD> <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> <TITLE>CLN, a Class Library for Numbers - 11. Using the library</TITLE>
</HEAD> </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> <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> <P>
For the following discussion, we will assume that you have installed 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> <P>
<A NAME="IDX309"></A>
<A NAME="IDX319"></A>
<P> <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> <P>
<A NAME="IDX310"></A>
<A NAME="IDX311"></A>
<A NAME="IDX320"></A>
<A NAME="IDX321"></A>
<P> <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> <P>
A function which computes the nth Fibonacci number can be written as follows. 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> <P>
<A NAME="IDX313"></A>
<A NAME="IDX323"></A>
<P> <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 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 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: for which you want <CODE>cl_print</CODE> debugging support. For example:
<A NAME="IDX314"></A>
<A NAME="IDX324"></A>
<PRE> <PRE>
#define CL_DEBUG #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> <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>, is needed for this member function to be implemented. Under <CODE>gdb</CODE>,
you call it like this: you call it like this:
<A NAME="IDX315"></A>
<A NAME="IDX325"></A>
<PRE> <PRE>
(gdb) print s (gdb) print s

24
doc/cln_12.html

@ -1,6 +1,6 @@
<HTML> <HTML>
<HEAD> <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> <TITLE>CLN, a Class Library for Numbers - 12. Customizing</TITLE>
</HEAD> </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> <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> <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> <P>
When a fatal error occurs, an error message is output to the standard error When a fatal error occurs, an error message is output to the standard error
@ -31,15 +31,15 @@ void cl_abort (void);
</PRE> </PRE>
<P> <P>
<A NAME="IDX317"></A>
<A NAME="IDX327"></A>
This function must not return control to its caller. 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> <P>
<A NAME="IDX318"></A>
<A NAME="IDX328"></A>
<P> <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> <P>
The output of the function <CODE>fprint</CODE> may be customized by changing the 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>. 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> <P>
Every memory allocation of CLN is done through the function pointer Every memory allocation of CLN is done through the function pointer
@ -89,8 +89,8 @@ void (*cl_free_hook) (void* ptr) = ...;
</PRE> </PRE>
<P> <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. 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> <HTML>
<HEAD> <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> <TITLE>CLN, a Class Library for Numbers - Index</TITLE>
</HEAD> </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> <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> <P>
Jump to: Jump to:

45
doc/cln_2.html

@ -1,6 +1,6 @@
<HTML> <HTML>
<HEAD> <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> <TITLE>CLN, a Class Library for Numbers - 2. Installation</TITLE>
</HEAD> </HEAD>
@ -50,21 +50,23 @@ of static and global variables, a feature which I could
implement for GNU g++ only. 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> <H3><A NAME="SEC5" HREF="cln_toc.html#TOC5">2.1.2 Make utility</A></H3>
<P>
<A NAME="IDX3"></A>
<P> <P>
To build CLN, you also need to have GNU <CODE>make</CODE> installed. 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> <H3><A NAME="SEC6" HREF="cln_toc.html#TOC6">2.1.3 Sed utility</A></H3>
<P>
<A NAME="IDX4"></A>
<P> <P>
To build CLN on HP-UX, you also need to have GNU <CODE>sed</CODE> installed. 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> <P>
<A NAME="IDX5"></A> <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> <P>
As with any autoconfiguring GNU software, installation is as easy as this: 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> <P>
You can remove system-dependent files generated by <CODE>make</CODE> through You can remove system-dependent files generated by <CODE>make</CODE> through

60
doc/cln_3.html

@ -1,6 +1,6 @@
<HTML> <HTML>
<HEAD> <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> <TITLE>CLN, a Class Library for Numbers - 3. Ordinary number types</TITLE>
</HEAD> </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> <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> <P>
CLN implements the following class hierarchy: CLN implements the following class hierarchy:
@ -45,8 +45,8 @@ Rational number Floating-point number
</PRE> </PRE>
<P> <P>
<A NAME="IDX6"></A>
<A NAME="IDX7"></A> <A NAME="IDX7"></A>
<A NAME="IDX8"></A>
The base class <CODE>cl_number</CODE> is an abstract base class. 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 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 to completely disable compile-time type checking and use run-time type
@ -54,24 +54,24 @@ checking instead.
<P> <P>
<A NAME="IDX8"></A>
<A NAME="IDX9"></A> <A NAME="IDX9"></A>
<A NAME="IDX10"></A> <A NAME="IDX10"></A>
<A NAME="IDX11"></A>
The class <CODE>cl_N</CODE> comprises real and complex numbers. There is The class <CODE>cl_N</CODE> comprises real and complex numbers. There is
no special class for complex numbers since complex numbers with imaginary no special class for complex numbers since complex numbers with imaginary
part <CODE>0</CODE> are automatically converted to real numbers. part <CODE>0</CODE> are automatically converted to real numbers.
<P> <P>
<A NAME="IDX11"></A>
<A NAME="IDX12"></A>
The class <CODE>cl_R</CODE> comprises real numbers of different kinds. It is an The class <CODE>cl_R</CODE> comprises real numbers of different kinds. It is an
abstract class. abstract class.
<P> <P>
<A NAME="IDX12"></A>
<A NAME="IDX13"></A> <A NAME="IDX13"></A>
<A NAME="IDX14"></A> <A NAME="IDX14"></A>
<A NAME="IDX15"></A>
The class <CODE>cl_RA</CODE> comprises exact real numbers: rational numbers, including The class <CODE>cl_RA</CODE> comprises exact real numbers: rational numbers, including
integers. There is no special class for non-integral rational numbers integers. There is no special class for non-integral rational numbers
since rational numbers with denominator <CODE>1</CODE> are automatically converted since rational numbers with denominator <CODE>1</CODE> are automatically converted
@ -79,16 +79,16 @@ to integers.
<P> <P>
<A NAME="IDX15"></A>
<A NAME="IDX16"></A>
The class <CODE>cl_F</CODE> implements floating-point approximations to real numbers. The class <CODE>cl_F</CODE> implements floating-point approximations to real numbers.
It is an abstract class. 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> <P>
<A NAME="IDX16"></A>
<A NAME="IDX17"></A>
<P> <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> <P>
<A NAME="IDX17"></A>
<A NAME="IDX18"></A>
<P> <P>
@ -144,7 +144,7 @@ CLN implements ordinary floating-point numbers, with mantissa and exponent.
<P> <P>
<A NAME="IDX18"></A>
<A NAME="IDX19"></A>
The elementary operations (<CODE>+</CODE>, <CODE>-</CODE>, <CODE>*</CODE>, <CODE>/</CODE>, ...) The elementary operations (<CODE>+</CODE>, <CODE>-</CODE>, <CODE>*</CODE>, <CODE>/</CODE>, ...)
only return approximate results. For example, the value of the expression 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 <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> <UL>
<LI> <LI>
<A NAME="IDX19"></A>
<A NAME="IDX20"></A>
Short floats, type <CODE>cl_SF</CODE>. Short floats, type <CODE>cl_SF</CODE>.
They have 1 sign bit, 8 exponent bits (including the exponent's sign), They have 1 sign bit, 8 exponent bits (including the exponent's sign),
and 17 mantissa bits (including the "hidden" bit). and 17 mantissa bits (including the "hidden" bit).
@ -183,7 +183,7 @@ They don't consume heap allocation.
<LI> <LI>
<A NAME="IDX20"></A>
<A NAME="IDX21"></A>
Single floats, type <CODE>cl_FF</CODE>. Single floats, type <CODE>cl_FF</CODE>.
They have 1 sign bit, 8 exponent bits (including the exponent's sign), They have 1 sign bit, 8 exponent bits (including the exponent's sign),
and 24 mantissa bits (including the "hidden" bit). and 24 mantissa bits (including the "hidden" bit).
@ -192,7 +192,7 @@ This corresponds closely to the C/C++ type <SAMP>`float'</SAMP>.
<LI> <LI>
<A NAME="IDX21"></A>
<A NAME="IDX22"></A>
Double floats, type <CODE>cl_DF</CODE>. Double floats, type <CODE>cl_DF</CODE>.
They have 1 sign bit, 11 exponent bits (including the exponent's sign), They have 1 sign bit, 11 exponent bits (including the exponent's sign),
and 53 mantissa bits (including the "hidden" bit). and 53 mantissa bits (including the "hidden" bit).
@ -201,7 +201,7 @@ This corresponds closely to the C/C++ type <SAMP>`double'</SAMP>.
<LI> <LI>
<A NAME="IDX22"></A>
<A NAME="IDX23"></A>
Long floats, type <CODE>cl_LF</CODE>. Long floats, type <CODE>cl_LF</CODE>.
They have 1 sign bit, 32 exponent bits (including the exponent's sign), 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. and n mantissa bits (including the "hidden" bit), where n &#62;= 64.
@ -222,7 +222,7 @@ with larger exponent range.
<P> <P>
<A NAME="IDX23"></A>
<A NAME="IDX24"></A>
As a user of CLN, you can forget about the differences between the As a user of CLN, you can forget about the differences between the
four floating-point types and just declare all your floating-point 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 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> <P>
<A NAME="IDX24"></A>
<A NAME="IDX25"></A>
<P> <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> <P>
<A NAME="IDX25"></A>
<A NAME="IDX26"></A>
<P> <P>
@ -317,7 +317,7 @@ Conversions from <SAMP>`const char *'</SAMP> are provided for the classes
<CODE>cl_R</CODE>, <CODE>cl_N</CODE>. <CODE>cl_R</CODE>, <CODE>cl_N</CODE>.
The easiest way to specify a value which is outside of the range of the 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: C++ built-in types is therefore to specify it as a string, like this:
<A NAME="IDX26"></A>
<A NAME="IDX27"></A>
<PRE> <PRE>
cl_I order_of_rubiks_cube_group = "43252003274489856000"; 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> <DT><CODE>int cl_I_to_int (const cl_I&#38; x)</CODE>
<DD> <DD>
<A NAME="IDX27"></A>
<A NAME="IDX28"></A>
<DT><CODE>unsigned int cl_I_to_uint (const cl_I&#38; x)</CODE> <DT><CODE>unsigned int cl_I_to_uint (const cl_I&#38; x)</CODE>
<DD> <DD>
<A NAME="IDX28"></A>
<A NAME="IDX29"></A>
<DT><CODE>long cl_I_to_long (const cl_I&#38; x)</CODE> <DT><CODE>long cl_I_to_long (const cl_I&#38; x)</CODE>
<DD> <DD>
<A NAME="IDX29"></A>
<A NAME="IDX30"></A>
<DT><CODE>unsigned long cl_I_to_ulong (const cl_I&#38; x)</CODE> <DT><CODE>unsigned long cl_I_to_ulong (const cl_I&#38; x)</CODE>
<DD> <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 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. representable in the range of <VAR>ctype</VAR>, a runtime error occurs.
</DL> </DL>
@ -363,10 +363,10 @@ the functions
<DT><CODE>float cl_float_approx (const <VAR>type</VAR>&#38; x)</CODE> <DT><CODE>float cl_float_approx (const <VAR>type</VAR>&#38; x)</CODE>
<DD> <DD>
<A NAME="IDX31"></A>
<A NAME="IDX32"></A>
<DT><CODE>double cl_double_approx (const <VAR>type</VAR>&#38; x)</CODE> <DT><CODE>double cl_double_approx (const <VAR>type</VAR>&#38; x)</CODE>
<DD> <DD>
<A NAME="IDX32"></A>
<A NAME="IDX33"></A>
Returns an approximation of <CODE>x</CODE> of C type <VAR>ctype</VAR>. 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 close to 0 (underflow), 0 is returned.
If <CODE>abs(x)</CODE> is too large (overflow), an IEEE infinity 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 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 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. 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 <CODE>As(<VAR>type</VAR>)(<VAR>value</VAR>)</CODE> checks that <VAR>value</VAR> belongs to
<VAR>type</VAR> and returns it as such. <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 <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 <VAR>type</VAR> and returns it as such. It is your responsibility to ensure
that this assumption is valid. 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> <HTML>
<HEAD> <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> <TITLE>CLN, a Class Library for Numbers - 5. Input/Output</TITLE>
</HEAD> </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> <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> <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> <P>
<A NAME="IDX228"></A>
<A NAME="IDX237"></A>
<P> <P>
@ -33,9 +33,9 @@ Several external representations may denote the same number, for example,
<P> <P>
Converting an internal to an external representation is called "printing", 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". 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 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 representation and then back to an internal representation will yield the
same internal representation. Symbolically: <CODE>read(print(x)) == x</CODE>. 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> <P>
Including <CODE>&#60;cl_io.h&#62;</CODE> defines a type <CODE>cl_istream</CODE>, which is 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> <P>
Including <CODE>&#60;cl_io.h&#62;</CODE> defines a type <CODE>cl_ostream</CODE>, which is 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> <HTML>
<HEAD> <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> <TITLE>CLN, a Class Library for Numbers - 6. Rings</TITLE>
</HEAD> </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> <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> <P>
CLN has a class of abstract rings. CLN has a class of abstract rings.

68
doc/cln_7.html

@ -1,6 +1,6 @@
<HTML> <HTML>
<HEAD> <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> <TITLE>CLN, a Class Library for Numbers - 7. Modular integers</TITLE>
</HEAD> </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> <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> <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> <P>
<A NAME="IDX232"></A>
<A NAME="IDX241"></A>
<P> <P>
@ -46,6 +46,10 @@ The class of modular integer rings is
&#60;cl_modinteger.h&#62; &#60;cl_modinteger.h&#62;
</PRE> </PRE>
<P>
<A NAME="IDX242"></A>
<P> <P>
and the class of all modular integers (elements of modular integer rings) is 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> <DT><CODE>cl_modint_ring cl_find_modint_ring (const cl_I&#38; N)</CODE>
<DD> <DD>
<A NAME="IDX233"></A>
<A NAME="IDX243"></A>
This function returns the modular ring <SAMP>`Z/NZ'</SAMP>. It takes care 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 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, 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>. 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, 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 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> <DT><CODE>bool operator== (const cl_modint_ring&#38;, const cl_modint_ring&#38;)</CODE>
<DD> <DD>
<A NAME="IDX235"></A>
<A NAME="IDX245"></A>
<DT><CODE>bool operator!= (const cl_modint_ring&#38;, const cl_modint_ring&#38;)</CODE> <DT><CODE>bool operator!= (const cl_modint_ring&#38;, const cl_modint_ring&#38;)</CODE>
<DD> <DD>
<A NAME="IDX236"></A>
<A NAME="IDX246"></A>
These compare two modular integer rings for equality. Two different calls 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 to <CODE>cl_find_modint_ring</CODE> with the same argument necessarily return the
same ring because it is memoized in the cache table. 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> <P>
Given a modular integer ring <CODE>R</CODE>, the following members can be used. 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> <DT><CODE>cl_I R-&#62;modulus</CODE>
<DD> <DD>
<A NAME="IDX237"></A>
<A NAME="IDX247"></A>
This is the ring's modulus, normalized to be nonnegative: <CODE>abs(N)</CODE>. This is the ring's modulus, normalized to be nonnegative: <CODE>abs(N)</CODE>.
<DT><CODE>cl_MI R-&#62;zero()</CODE> <DT><CODE>cl_MI R-&#62;zero()</CODE>
<DD> <DD>
<A NAME="IDX238"></A>
<A NAME="IDX248"></A>
This returns <CODE>0 mod N</CODE>. This returns <CODE>0 mod N</CODE>.
<DT><CODE>cl_MI R-&#62;one()</CODE> <DT><CODE>cl_MI R-&#62;one()</CODE>
<DD> <DD>
<A NAME="IDX239"></A>
<A NAME="IDX249"></A>
This returns <CODE>1 mod N</CODE>. This returns <CODE>1 mod N</CODE>.
<DT><CODE>cl_MI R-&#62;canonhom (const cl_I&#38; x)</CODE> <DT><CODE>cl_MI R-&#62;canonhom (const cl_I&#38; x)</CODE>
<DD> <DD>
<A NAME="IDX240"></A>
<A NAME="IDX250"></A>
This returns <CODE>x mod N</CODE>. This returns <CODE>x mod N</CODE>.
<DT><CODE>cl_I R-&#62;retract (const cl_MI&#38; x)</CODE> <DT><CODE>cl_I R-&#62;retract (const cl_MI&#38; x)</CODE>
<DD> <DD>
<A NAME="IDX241"></A>
<A NAME="IDX251"></A>
This is a partial inverse function to <CODE>R-&#62;canonhom</CODE>. It returns the 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>. 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> <DD>
<DT><CODE>cl_MI R-&#62;random()</CODE> <DT><CODE>cl_MI R-&#62;random()</CODE>
<DD> <DD>
<A NAME="IDX242"></A>
<A NAME="IDX252"></A>
This returns a random integer modulo <CODE>N</CODE>. This returns a random integer modulo <CODE>N</CODE>.
</DL> </DL>
@ -145,18 +149,18 @@ The following operations are defined on modular integers.
<DT><CODE>cl_modint_ring x.ring ()</CODE> <DT><CODE>cl_modint_ring x.ring ()</CODE>
<DD> <DD>
<A NAME="IDX243"></A>
<A NAME="IDX253"></A>
Returns the ring to which the modular integer <CODE>x</CODE> belongs. 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> <DT><CODE>cl_MI operator+ (const cl_MI&#38;, const cl_MI&#38;)</CODE>
<DD> <DD>
<A NAME="IDX244"></A>
<A NAME="IDX254"></A>
Returns the sum of two modular integers. One of the arguments may also be Returns the sum of two modular integers. One of the arguments may also be
a plain integer. a plain integer.
<DT><CODE>cl_MI operator- (const cl_MI&#38;, const cl_MI&#38;)</CODE> <DT><CODE>cl_MI operator- (const cl_MI&#38;, const cl_MI&#38;)</CODE>
<DD> <DD>
<A NAME="IDX245"></A>
<A NAME="IDX255"></A>
Returns the difference of two modular integers. One of the arguments may also be Returns the difference of two modular integers. One of the arguments may also be
a plain integer. 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> <DT><CODE>cl_MI operator* (const cl_MI&#38;, const cl_MI&#38;)</CODE>
<DD> <DD>
<A NAME="IDX246"></A>
<A NAME="IDX256"></A>
Returns the product of two modular integers. One of the arguments may also be Returns the product of two modular integers. One of the arguments may also be
a plain integer. a plain integer.
<DT><CODE>cl_MI square (const cl_MI&#38;)</CODE> <DT><CODE>cl_MI square (const cl_MI&#38;)</CODE>
<DD> <DD>
<A NAME="IDX247"></A>
<A NAME="IDX257"></A>
Returns the square of a modular integer. Returns the square of a modular integer.
<DT><CODE>cl_MI recip (const cl_MI&#38; x)</CODE> <DT><CODE>cl_MI recip (const cl_MI&#38; x)</CODE>
<DD> <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> 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. 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> <DT><CODE>cl_MI div (const cl_MI&#38; x, const cl_MI&#38; y)</CODE>
<DD> <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>. 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. <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> <DT><CODE>cl_MI expt_pos (const cl_MI&#38; x, const cl_I&#38; y)</CODE>
<DD> <DD>
<A NAME="IDX250"></A>
<A NAME="IDX260"></A>
<CODE>y</CODE> must be &#62; 0. Returns <CODE>x^y</CODE>. <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> <DT><CODE>cl_MI expt (const cl_MI&#38; x, const cl_I&#38; y)</CODE>
<DD> <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 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. 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> <DT><CODE>cl_MI operator&#60;&#60; (const cl_MI&#38; x, const cl_I&#38; y)</CODE>
<DD> <DD>
<A NAME="IDX252"></A>
<A NAME="IDX262"></A>
Returns <CODE>x*2^y</CODE>. Returns <CODE>x*2^y</CODE>.
<DT><CODE>cl_MI operator&#62;&#62; (const cl_MI&#38; x, const cl_I&#38; y)</CODE> <DT><CODE>cl_MI operator&#62;&#62; (const cl_MI&#38; x, const cl_I&#38; y)</CODE>
<DD> <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, Returns <CODE>x*2^-y</CODE>. When <CODE>y</CODE> is positive, the modulus must be odd,
or an error message is issued. or an error message is issued.
<DT><CODE>bool operator== (const cl_MI&#38;, const cl_MI&#38;)</CODE> <DT><CODE>bool operator== (const cl_MI&#38;, const cl_MI&#38;)</CODE>
<DD> <DD>
<A NAME="IDX254"></A>
<A NAME="IDX264"></A>
<DT><CODE>bool operator!= (const cl_MI&#38;, const cl_MI&#38;)</CODE> <DT><CODE>bool operator!= (const cl_MI&#38;, const cl_MI&#38;)</CODE>
<DD> <DD>
<A NAME="IDX255"></A>
<A NAME="IDX265"></A>
Compares two modular integers, belonging to the same modular integer ring, Compares two modular integers, belonging to the same modular integer ring,
for equality. for equality.
<DT><CODE>cl_boolean zerop (const cl_MI&#38; x)</CODE> <DT><CODE>cl_boolean zerop (const cl_MI&#38; x)</CODE>
<DD> <DD>
<A NAME="IDX256"></A>
<A NAME="IDX266"></A>
Returns true if <CODE>x</CODE> is <CODE>0 mod N</CODE>. Returns true if <CODE>x</CODE> is <CODE>0 mod N</CODE>.
</DL> </DL>
@ -233,10 +237,10 @@ input/output).
<DT><CODE>void fprint (cl_ostream stream, const cl_MI&#38; x)</CODE> <DT><CODE>void fprint (cl_ostream stream, const cl_MI&#38; x)</CODE>
<DD> <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> <DT><CODE>cl_ostream operator&#60;&#60; (cl_ostream stream, const cl_MI&#38; x)</CODE>
<DD> <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 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>. on the global printer settings in the variable <CODE>cl_default_print_flags</CODE>.
</DL> </DL>

28
doc/cln_8.html

@ -1,6 +1,6 @@
<HTML> <HTML>
<HEAD> <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> <TITLE>CLN, a Class Library for Numbers - 8. Symbolic data types</TITLE>
</HEAD> </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> <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> <P>
<A NAME="IDX259"></A>
<A NAME="IDX269"></A>
<P> <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> <P>
<A NAME="IDX260"></A>
<A NAME="IDX270"></A>
<P> <P>
@ -48,7 +48,7 @@ Strings are constructed through the following constructors:
<DT><CODE>cl_string (const char * s)</CODE> <DT><CODE>cl_string (const char * s)</CODE>
<DD> <DD>
<A NAME="IDX261"></A>
<A NAME="IDX271"></A>
Returns an immutable copy of the (zero-terminated) C string <CODE>s</CODE>. Returns an immutable copy of the (zero-terminated) C string <CODE>s</CODE>.
<DT><CODE>cl_string (const char * ptr, unsigned long len)</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> <DT><CODE>s.length()</CODE>
<DD> <DD>
<A NAME="IDX262"></A>
<A NAME="IDX272"></A>
<DT><CODE>strlen(s)</CODE> <DT><CODE>strlen(s)</CODE>
<DD> <DD>
<A NAME="IDX263"></A>
<A NAME="IDX273"></A>
Returns the length of the string <CODE>s</CODE>. Returns the length of the string <CODE>s</CODE>.
<DT><CODE>s[i]</CODE> <DT><CODE>s[i]</CODE>
<DD> <DD>
<A NAME="IDX264"></A>
<A NAME="IDX274"></A>
Returns the <CODE>i</CODE>th character of the string <CODE>s</CODE>. 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>. <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> <DT><CODE>bool equal (const cl_string&#38; s1, const cl_string&#38; s2)</CODE>
<DD> <DD>
<A NAME="IDX265"></A>
<A NAME="IDX275"></A>
Compares two strings for equality. One of the arguments may also be a Compares two strings for equality. One of the arguments may also be a
plain <CODE>const char *</CODE>. plain <CODE>const char *</CODE>.
</DL> </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> <P>
<A NAME="IDX266"></A>
<A NAME="IDX276"></A>
<P> <P>
@ -112,7 +112,7 @@ Symbols are constructed through the following constructor:
<DT><CODE>cl_symbol (const cl_string&#38; s)</CODE> <DT><CODE>cl_symbol (const cl_string&#38; s)</CODE>
<DD> <DD>
<A NAME="IDX267"></A>
<A NAME="IDX277"></A>
Looks up or creates a new symbol with a given name. Looks up or creates a new symbol with a given name.
</DL> </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> <DT><CODE>bool equal (const cl_symbol&#38; sym1, const cl_symbol&#38; sym2)</CODE>
<DD> <DD>
<A NAME="IDX268"></A>
<A NAME="IDX278"></A>
Compares two symbols for equality. This is very fast. Compares two symbols for equality. This is very fast.
</DL> </DL>

78
doc/cln_9.html

@ -1,6 +1,6 @@
<HTML> <HTML>
<HEAD> <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> <TITLE>CLN, a Class Library for Numbers - 9. Univariate polynomials</TITLE>
</HEAD> </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> <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> <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> <P>
CLN implements univariate polynomials (polynomials in one variable) over an 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> <DT><CODE>cl_univpoly_complex_ring cl_find_univpoly_ring (const cl_complex_ring&#38; R)</CODE>
<DD> <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> <DT><CODE>cl_univpoly_complex_ring cl_find_univpoly_ring (const cl_complex_ring&#38; R, const cl_symbol&#38; varname)</CODE>
<DD> <DD>
<DT><CODE>cl_univpoly_real_ring cl_find_univpoly_ring (const cl_real_ring&#38; R)</CODE> <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> <P>
Given a univariate polynomial ring <CODE>R</CODE>, the following members can be used. 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> <DT><CODE>cl_ring R-&#62;basering()</CODE>
<DD> <DD>
<A NAME="IDX272"></A>
<A NAME="IDX282"></A>
This returns the base ring, as passed to <SAMP>`cl_find_univpoly_ring'</SAMP>. This returns the base ring, as passed to <SAMP>`cl_find_univpoly_ring'</SAMP>.
<DT><CODE>cl_UP R-&#62;zero()</CODE> <DT><CODE>cl_UP R-&#62;zero()</CODE>
<DD> <DD>
<A NAME="IDX273"></A>
<A NAME="IDX283"></A>
This returns <CODE>0 in R</CODE>, a polynomial of degree -1. This returns <CODE>0 in R</CODE>, a polynomial of degree -1.
<DT><CODE>cl_UP R-&#62;one()</CODE> <DT><CODE>cl_UP R-&#62;one()</CODE>
<DD> <DD>
<A NAME="IDX274"></A>
<A NAME="IDX284"></A>
This returns <CODE>1 in R</CODE>, a polynomial of degree &#60;= 0. 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> <DT><CODE>cl_UP R-&#62;canonhom (const cl_I&#38; x)</CODE>
<DD> <DD>
<A NAME="IDX275"></A>
<A NAME="IDX285"></A>
This returns <CODE>x in R</CODE>, a polynomial of degree &#60;= 0. 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> <DT><CODE>cl_UP R-&#62;monomial (const cl_ring_element&#38; x, uintL e)</CODE>
<DD> <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 This returns a sparse polynomial: <CODE>x * X^e</CODE>, where <CODE>X</CODE> is the
indeterminate. indeterminate.
<DT><CODE>cl_UP R-&#62;create (sintL degree)</CODE> <DT><CODE>cl_UP R-&#62;create (sintL degree)</CODE>
<DD> <DD>
<A NAME="IDX277"></A>
<A NAME="IDX287"></A>
Creates a new polynomial with a given degree. The zero polynomial has degree 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, <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> 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> <DT><CODE>void set_coeff (cl_UP&#38; x, uintL index, const cl_ring_element&#38; y)</CODE>
<DD> <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>. 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, After changing a polynomial and before applying any "normal" operation on it,
you should call its <CODE>finalize</CODE> member function. you should call its <CODE>finalize</CODE> member function.
<DT><CODE>void finalize (cl_UP&#38; x)</CODE> <DT><CODE>void finalize (cl_UP&#38; x)</CODE>
<DD> <DD>
<A NAME="IDX279"></A>
<A NAME="IDX289"></A>
This function marks the endpoint of destructive modifications of a polynomial. This function marks the endpoint of destructive modifications of a polynomial.
It normalizes the internal representation so that subsequent computations have It normalizes the internal representation so that subsequent computations have
less overhead. Doing normal computations on unnormalized polynomials may 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> <DT><CODE>cl_univpoly_ring x.ring ()</CODE>
<DD> <DD>
<A NAME="IDX280"></A>
<A NAME="IDX290"></A>
Returns the ring to which the univariate polynomial <CODE>x</CODE> belongs. 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> <DT><CODE>cl_UP operator+ (const cl_UP&#38;, const cl_UP&#38;)</CODE>
<DD> <DD>
<A NAME="IDX281"></A>
<A NAME="IDX291"></A>
Returns the sum of two univariate polynomials. Returns the sum of two univariate polynomials.
<DT><CODE>cl_UP operator- (const cl_UP&#38;, const cl_UP&#38;)</CODE> <DT><CODE>cl_UP operator- (const cl_UP&#38;, const cl_UP&#38;)</CODE>
<DD> <DD>
<A NAME="IDX282"></A>
<A NAME="IDX292"></A>
Returns the difference of two univariate polynomials. Returns the difference of two univariate polynomials.
<DT><CODE>cl_UP operator- (const cl_UP&#38;)</CODE> <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> <DT><CODE>cl_UP operator* (const cl_UP&#38;, const cl_UP&#38;)</CODE>
<DD> <DD>
<A NAME="IDX283"></A>
<A NAME="IDX293"></A>
Returns the product of two univariate polynomials. One of the arguments may Returns the product of two univariate polynomials. One of the arguments may
also be a plain integer or an element of the base ring. also be a plain integer or an element of the base ring.
<DT><CODE>cl_UP square (const cl_UP&#38;)</CODE> <DT><CODE>cl_UP square (const cl_UP&#38;)</CODE>
<DD> <DD>
<A NAME="IDX284"></A>
<A NAME="IDX294"></A>
Returns the square of a univariate polynomial. Returns the square of a univariate polynomial.
<DT><CODE>cl_UP expt_pos (const cl_UP&#38; x, const cl_I&#38; y)</CODE> <DT><CODE>cl_UP expt_pos (const cl_UP&#38; x, const cl_I&#38; y)</CODE>
<DD> <DD>
<A NAME="IDX285"></A>
<A NAME="IDX295"></A>
<CODE>y</CODE> must be &#62; 0. Returns <CODE>x^y</CODE>. <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> <DT><CODE>bool operator== (const cl_UP&#38;, const cl_UP&#38;)</CODE>
<DD> <DD>
<A NAME="IDX286"></A>
<A NAME="IDX296"></A>
<DT><CODE>bool operator!= (const cl_UP&#38;, const cl_UP&#38;)</CODE> <DT><CODE>bool operator!= (const cl_UP&#38;, const cl_UP&#38;)</CODE>
<DD> <DD>
<A NAME="IDX287"></A>
<A NAME="IDX297"></A>
Compares two univariate polynomials, belonging to the same univariate Compares two univariate polynomials, belonging to the same univariate
polynomial ring, for equality. polynomial ring, for equality.
<DT><CODE>cl_boolean zerop (const cl_UP&#38; x)</CODE> <DT><CODE>cl_boolean zerop (const cl_UP&#38; x)</CODE>
<DD> <DD>
<A NAME="IDX288"></A>
<A NAME="IDX298"></A>
Returns true if <CODE>x</CODE> is <CODE>0 in R</CODE>. Returns true if <CODE>x</CODE> is <CODE>0 in R</CODE>.
<DT><CODE>sintL degree (const cl_UP&#38; x)</CODE> <DT><CODE>sintL degree (const cl_UP&#38; x)</CODE>
<DD> <DD>
<A NAME="IDX289"></A>
<A NAME="IDX299"></A>
Returns the degree of the polynomial. The zero polynomial has degree <CODE>-1</CODE>. 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> <DT><CODE>cl_ring_element coeff (const cl_UP&#38; x, uintL index)</CODE>
<DD> <DD>
<A NAME="IDX290"></A>
<A NAME="IDX300"></A>
Returns the coefficient of <CODE>X^index</CODE> in the polynomial <CODE>x</CODE>. 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> <DT><CODE>cl_ring_element x (const cl_ring_element&#38; y)</CODE>
<DD> <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, 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 then <SAMP>`x(y)'</SAMP> returns the value of the substitution of <CODE>y</CODE> into
<CODE>x</CODE>. <CODE>x</CODE>.
<DT><CODE>cl_UP deriv (const cl_UP&#38; x)</CODE> <DT><CODE>cl_UP deriv (const cl_UP&#38; x)</CODE>
<DD> <DD>
<A NAME="IDX292"></A>
<A NAME="IDX302"></A>
Returns the derivative of the polynomial <CODE>x</CODE> with respect to the Returns the derivative of the polynomial <CODE>x</CODE> with respect to the
indeterminate <CODE>X</CODE>. indeterminate <CODE>X</CODE>.
</DL> </DL>
@ -303,10 +303,10 @@ input/output).
<DT><CODE>void fprint (cl_ostream stream, const cl_UP&#38; x)</CODE> <DT><CODE>void fprint (cl_ostream stream, const cl_UP&#38; x)</CODE>
<DD> <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> <DT><CODE>cl_ostream operator&#60;&#60; (cl_ostream stream, const cl_UP&#38; x)</CODE>
<DD> <DD>
<A NAME="IDX294"></A>
<A NAME="IDX304"></A>
Prints the univariate polynomial <CODE>x</CODE> on the <CODE>stream</CODE>. The output may Prints the univariate polynomial <CODE>x</CODE> on the <CODE>stream</CODE>. The output may
depend on the global printer settings in the variable depend on the global printer settings in the variable
<CODE>cl_default_print_flags</CODE>. <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> <P>
The following functions return special polynomials. 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> <DT><CODE>cl_UP_I cl_tschebychev (sintL n)</CODE>
<DD> <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). Returns the n-th Tchebychev polynomial (n &#62;= 0).
<DT><CODE>cl_UP_I cl_hermite (sintL n)</CODE> <DT><CODE>cl_UP_I cl_hermite (sintL n)</CODE>
<DD> <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). Returns the n-th Hermite polynomial (n &#62;= 0).
<DT><CODE>cl_UP_RA cl_legendre (sintL n)</CODE> <DT><CODE>cl_UP_RA cl_legendre (sintL n)</CODE>
<DD> <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). Returns the n-th Legendre polynomial (n &#62;= 0).
<DT><CODE>cl_UP_I cl_laguerre (sintL n)</CODE> <DT><CODE>cl_UP_I cl_laguerre (sintL n)</CODE>
<DD> <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). Returns the n-th Laguerre polynomial (n &#62;= 0).
</DL> </DL>

139
doc/cln_toc.html

@ -1,6 +1,6 @@
<HTML> <HTML>
<HEAD> <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> <TITLE>CLN, a Class Library for Numbers - Table of Contents</TITLE>
</HEAD> </HEAD>
@ -20,102 +20,105 @@
<LI><A NAME="TOC6" HREF="cln_2.html#SEC6">2.1.3 Sed utility</A> <LI><A NAME="TOC6" HREF="cln_2.html#SEC6">2.1.3 Sed utility</A>
</UL> </UL>
<LI><A NAME="TOC7" HREF="cln_2.html#SEC7">2.2 Building the library</A> <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> </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> <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> </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> <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> <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> </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> <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> </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> <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> </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> <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> </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> </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> <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> </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> <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> </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> <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> </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> <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> </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> <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> </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> <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> </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> <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> </UL>
<LI><A NAME="TOC73" HREF="cln_13.html#SEC73">Index</A>
<LI><A NAME="TOC74" HREF="cln_13.html#SEC74">Index</A>
</UL> </UL>
<P><HR><P> <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. <A HREF="http://wwwinfo.cern.ch/dis/texi2html/">texi2html</A>&nbsp;1.56k.
</BODY> </BODY>
</HTML> </HTML>

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

Loading…
Cancel
Save