You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							170 lines
						
					
					
						
							3.2 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							170 lines
						
					
					
						
							3.2 KiB
						
					
					
				
								<HTML>
							 | 
						|
								<HEAD>
							 | 
						|
								<!-- Created by texi2html 1.56k from cln.texi on 5 May 2000 -->
							 | 
						|
								
							 | 
						|
								<TITLE>CLN, a Class Library for Numbers - 1. Introduction</TITLE>
							 | 
						|
								</HEAD>
							 | 
						|
								<BODY>
							 | 
						|
								Go to the first, previous, <A HREF="cln_2.html">next</A>, <A HREF="cln_13.html">last</A> section, <A HREF="cln_toc.html">table of contents</A>.
							 | 
						|
								<P><HR><P>
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								<H1><A NAME="SEC1" HREF="cln_toc.html#TOC1">1. Introduction</A></H1>
							 | 
						|
								
							 | 
						|
								<P>
							 | 
						|
								CLN is a library for computations with all kinds of numbers.
							 | 
						|
								It has a rich set of number classes:
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								<UL>
							 | 
						|
								<LI>
							 | 
						|
								
							 | 
						|
								Integers (with unlimited precision),
							 | 
						|
								
							 | 
						|
								<LI>
							 | 
						|
								
							 | 
						|
								Rational numbers,
							 | 
						|
								
							 | 
						|
								<LI>
							 | 
						|
								
							 | 
						|
								Floating-point numbers:
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								<UL>
							 | 
						|
								<LI>
							 | 
						|
								
							 | 
						|
								Short float,
							 | 
						|
								<LI>
							 | 
						|
								
							 | 
						|
								Single float,
							 | 
						|
								<LI>
							 | 
						|
								
							 | 
						|
								Double float,
							 | 
						|
								<LI>
							 | 
						|
								
							 | 
						|
								Long float (with unlimited precision),
							 | 
						|
								</UL>
							 | 
						|
								
							 | 
						|
								<LI>
							 | 
						|
								
							 | 
						|
								Complex numbers,
							 | 
						|
								
							 | 
						|
								<LI>
							 | 
						|
								
							 | 
						|
								Modular integers (integers modulo a fixed integer),
							 | 
						|
								
							 | 
						|
								<LI>
							 | 
						|
								
							 | 
						|
								Univariate polynomials.
							 | 
						|
								</UL>
							 | 
						|
								
							 | 
						|
								<P>
							 | 
						|
								The subtypes of the complex numbers among these are exactly the
							 | 
						|
								types of numbers known to the Common Lisp language. Therefore
							 | 
						|
								<CODE>CLN</CODE> can be used for Common Lisp implementations, giving
							 | 
						|
								<SAMP>`CLN'</SAMP> another meaning: it becomes an abbreviation of
							 | 
						|
								"Common Lisp Numbers".
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								<P>
							 | 
						|
								The CLN package implements
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								<UL>
							 | 
						|
								<LI>
							 | 
						|
								
							 | 
						|
								Elementary functions (<CODE>+</CODE>, <CODE>-</CODE>, <CODE>*</CODE>, <CODE>/</CODE>, <CODE>sqrt</CODE>,
							 | 
						|
								comparisons, ...),
							 | 
						|
								
							 | 
						|
								<LI>
							 | 
						|
								
							 | 
						|
								Logical functions (logical <CODE>and</CODE>, <CODE>or</CODE>, <CODE>not</CODE>, ...),
							 | 
						|
								
							 | 
						|
								<LI>
							 | 
						|
								
							 | 
						|
								Transcendental functions (exponential, logarithmic, trigonometric, hyperbolic
							 | 
						|
								functions and their inverse functions).
							 | 
						|
								</UL>
							 | 
						|
								
							 | 
						|
								<P>
							 | 
						|
								CLN is a C++ library. Using C++ as an implementation language provides
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								<UL>
							 | 
						|
								<LI>
							 | 
						|
								
							 | 
						|
								efficiency: it compiles to machine code,
							 | 
						|
								<LI>
							 | 
						|
								
							 | 
						|
								type safety: the C++ compiler knows about the number types and complains
							 | 
						|
								if, for example, you try to assign a float to an integer variable.
							 | 
						|
								<LI>
							 | 
						|
								
							 | 
						|
								algebraic syntax: You can use the <CODE>+</CODE>, <CODE>-</CODE>, <CODE>*</CODE>, <CODE>=</CODE>,
							 | 
						|
								<CODE>==</CODE>, ... operators as in C or C++.
							 | 
						|
								</UL>
							 | 
						|
								
							 | 
						|
								<P>
							 | 
						|
								CLN is memory efficient:
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								<UL>
							 | 
						|
								<LI>
							 | 
						|
								
							 | 
						|
								Small integers and short floats are immediate, not heap allocated.
							 | 
						|
								<LI>
							 | 
						|
								
							 | 
						|
								Heap-allocated memory is reclaimed through an automatic, non-interruptive
							 | 
						|
								garbage collection.
							 | 
						|
								</UL>
							 | 
						|
								
							 | 
						|
								<P>
							 | 
						|
								CLN is speed efficient:
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								<UL>
							 | 
						|
								<LI>
							 | 
						|
								
							 | 
						|
								The kernel of CLN has been written in assembly language for some CPUs
							 | 
						|
								(<CODE>i386</CODE>, <CODE>m68k</CODE>, <CODE>sparc</CODE>, <CODE>mips</CODE>, <CODE>arm</CODE>).
							 | 
						|
								<LI>
							 | 
						|
								
							 | 
						|
								<A NAME="IDX1"></A>
							 | 
						|
								On all CPUs, CLN may be configured to use the superefficient low-level
							 | 
						|
								routines from GNU GMP version 3.
							 | 
						|
								<LI>
							 | 
						|
								
							 | 
						|
								It uses Karatsuba multiplication, which is significantly faster
							 | 
						|
								for large numbers than the standard multiplication algorithm.
							 | 
						|
								<LI>
							 | 
						|
								
							 | 
						|
								For very large numbers (more than 12000 decimal digits), it uses
							 | 
						|
								Schönhage-Strassen
							 | 
						|
								<A NAME="IDX2"></A>
							 | 
						|
								multiplication, which is an asymptotically optimal multiplication
							 | 
						|
								algorithm, for multiplication, division and radix conversion.
							 | 
						|
								</UL>
							 | 
						|
								
							 | 
						|
								<P>
							 | 
						|
								CLN aims at being easily integrated into larger software packages:
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								<UL>
							 | 
						|
								<LI>
							 | 
						|
								
							 | 
						|
								The garbage collection imposes no burden on the main application.
							 | 
						|
								<LI>
							 | 
						|
								
							 | 
						|
								The library provides hooks for memory allocation and exceptions.
							 | 
						|
								</UL>
							 | 
						|
								
							 | 
						|
								<P><HR><P>
							 | 
						|
								Go to the first, previous, <A HREF="cln_2.html">next</A>, <A HREF="cln_13.html">last</A> section, <A HREF="cln_toc.html">table of contents</A>.
							 | 
						|
								</BODY>
							 | 
						|
								</HTML>
							 |