home *** CD-ROM | disk | FTP | other *** search
-
- DISCLAIMER - LICENCING AND SUPPORT POLICY
-
-
-
- This documentation is dated as of November 26, 1991.
-
-
- ** PLEASE DO NOT SEND MONEY FOR THIS PACKAGE **
-
-
- This is NOT shareware! ANUM is good old fashioned Public
- Domain Software. Source code, totally written with Borland
- C++ 2.0 is not included with this archive for the reasons
- developped in the next section.
-
-
- With release 5 here are the Borland C++ 2.0 and Turbo C
- 1.5 ANUM library files. Actually, tests have shown so far
- the application code could link with no major problem with
- TC++ standard libraries. However, for an unknown reason,
- execution time seems to be increased by nearly 10%.
-
-
- Turbo C 2.0 version is again delivered back with release
- 4 of ANUM. I had to remove TC 2.0 from my previous hard disk
- to gain space. But as I have also changed of disk since them
- (from 40 Mbyte to 334 Mbyte) I am able to support both
- versions. I have not forgotten the (not so far ago) time
- when I was a student not earning a single coin, and for whom
- the buying of a compiler meant months of restrictions. The
- TC 1.5 version is planned to be supported until the end of
- the year while the TC 2.0 is until the end of 1993 and TC++
- version until the end of 1995. (I presume that after five
- years of existence, these products may be considered as
- obsolete).
-
-
- While the provided functions have been passed to a
- minimal test, I will have no liability or responsibilty to
- the user or any other person or entity with respect to any
- liability, loss or damage caused, or alleged to be caused
- directly or indirectly by this library, including, but not
- limited to, any interruption of service, loss of business,
- anticipatory profits or consequential damages resulting from
- the use of this program.
-
-
- Furthermore, although this program has been placed into
- the public domain, I retain all copyrights to this library
- around the world. Pursuant to this, this library MAY NOT BE
- SOLD BY ANY PARTY unless specifically authorized by the
- author, Jean-Marie de Montarby, in writing prior to the
- first copy being sold. As well, this program MAY NOT BE
- INCLUDED IN OR USED TO PRODUCE ANY OTHER PACKAGE FOR SALE
- even if this program is indicated as being 'in the public
- domain'. All of the above applies to both the original as
- well as derived or modified copies of the original. Any
- modified copies of this library MUST NOT have this
- documentation -including its copyright notice- violated,
- changed or altered.
-
-
- Occasionally, if you want to use ANUM, or a port of it to
- some other computers, in a commercial product, take contact
- with me first. We will perhaps find a deal.
-
-
- Thus this library, as delivered here, may only be used
- for personal and/or research and/or educational purposes.
-
-
- Comments, bug reports and improvement suggestions are
- welcome and should be adressed only to me. I can be reached
- at the following adresses:
-
- Electronic mail: JMMàFRESTP11.BITNET (until... ?)
-
- Normal mail : M. Jean-Marie de Montarby
- 40 avenue des Tilleuls
- 75016 PARIS
- FRANCE
-
-
- Do not try to phone me at home. I am not registered in
- the phone listings and due to the possible jet lags I am not
- much happy when waked up in the middle of the night.
-
-
- However during working hours in France (UTC+1, UTC+2), I
- might be reached at my employer's:
-
-
- DATAID Systèmes Techniques et Industriels
- Voice : +33 (1) 40.99.19.19.
-
-
- Better use FAX, however : +33 (1) 40.99.06.85.
-
-
- If you wish to do so, you may send me in case of a
- presumed bug, a copy of your code. However I cannot
- guarantee neither a quick response nor the return of your
- media if a postal shipment.
- Anum is a yet (see next section) non-profitable piece of
- software and I prefer to work harder on a paid job rather
- than on Anum.
-
-
- As I work since Nov 5 1990, besides my current very
- partial time job as teacher in the E.S.T.P, I cannot foresee
- yet any availability delays for the next release of Anum.
- GENERAL OVERVIEW
-
-
-
- I have since July 1990 the diploma of "Ingénieur
- Géomètre" from the "Ecole Spéciale des Travaux Publics, du
- Bâtiment et de l'Industrie" (E.S.T.P.). I have planned to
- release in three years a major piece of software for micro
- computers which will be a commercial product. Do'nt ask me
- neither what it is nor why this software will be, according
- to me, somewhat revolutionnary. It could be compared to the
- introduction of Turbo Pascal on the micro computers
- programming languages market, either by its planned
- efficiency and financial impact.
-
-
- This major piece of software requires several different
- fields of the so-called "art of programming". One of its
- aspect is that it will extensively use mathematics and
- scientific number crunching algorithms. I am currently
- developping the corresponding functions on a IBM PC
- compatible under MS-DOS which allows low-cost developpement
- at home. For the reasons explained at the end of the
- disclaimer section I cannot spend much time thoroughly
- testing those functions. This is why I decided to make
- public the first functions already done. More functions
- should come in the future as this mathematical subroutines
- package is not yet complete.
-
-
- ANUM is a library for use with one of the following C
- compilers: Turbo C 2.0, Turbo C++ 1.0 or Borland C++ 2.0
- from Borland International. It provides several routines for
- use by any programmer interested in Numerical Analysis.
- These routines are thoroughly explained further in one of
- the following sections of this documentation.
-
-
- A few of these routines are only of interest for Anum's
- own routines but have been left as public as their use is
- shared by several functions in several modules. However they
- will remain marked as reserved in this file. Usage of
- functions with similar names can be of some problem,
- especially if the "warn duplicate symbol" toggle is not set
- active at link edit time.
-
-
- To use the ANUM.LIB file, you should either.
- - specify its name in one of the line of your project file.
- - append it at the end of the command line if you use TCC or
- BCC or BCCX. Do not forget then to include the MATHL.LIB
- file and the coprocessor chip or emulator library file
- depending on your system configuration.
- Please refer to Turbo C manuals for more information on
- that topic.
-
-
- ANUM code is compiled with word data alignement and a
- default signed char type. Consequently you should ensure
- your compiler settings will correspond to this. Otherwise
- the result could be undefined.
-
-
- ANUM code is compiled without the VROOM overlay
- facilities (for the TC++ and BC++ versions, of course). If
- you want a special copy of ANUM with them, send me a notice.
-
-
- The ANUM.LIB file was created using Borland International
- library utility TLIB. Its version number is 4.0 for BC++
- version, 3.0 for TC++ version and 2.0 for TC 2.0 version.
-
-
- It is highly recommended ANSI prototyping be used in your
- programs making use of Anum. This is why, two header files
- are also provided to include in your own routines. The
- SYSIO.H file contains declarations for the error and warning
- messages interface, whilst the ANUM.H file contains those
- relevant to numerical codification of errors and warnings
- and of the other routines.
-
-
- A special effort has been made to keep the interface for
- parameters passings quite close to the one used by
- Borland International Turbo Pascal Numerical Toolbox to help
- those of you who would like to port their already existing
- applications from Pascal to C. In fact, most of the high
- level functions of Anum use the same algorithm than the
- Numerical Toolbox. This is due to the fact that they offer
- quite a wide coverage of usual numerical analysis within
- quite a few routines, and it is quite important when one
- starts writing its own numerical toolbox.
- CONVENTIONS
-
-
-
- The following conventions are applied:
- All of the functions present in the library, which are
- documented here, follow the C parameter calling
- conventions and have been provided for use with the LARGE
- memory model exclusively. The only near functions
- provided here are of the static class and then totally
- hidden to the application programmer.
- No function returns any pointers allocated. Some functions
- may allocate space for temporary items. But this is
- hidden to the application programmer and space is freed
- at the end of the routine. It is hereby up to the
- programmer to allocate the necessary amount of space by
- using the farcalloc function before calling any function
- of the present library. Rows and columns are numbered
- from 1 unless explicitely stated.
- Polynomial indexation strictly follows the following rule:
- The degree is always increasing i.e. *poly points to
- poly[0], *(poly+1) points to poly[1] and so on.
- Matrices are indexed as follows: the first index is the row
- index, the second is the column one just as the classical
- way C handles arrays.
- The typedef'ed COMPLEX type is required to use some of the
- provided routines dealing with complex arithmetic. It is
- defined in the ANUM.H header file.
- All real values in the Anum library are of the type double.
- All Anum error codes take negative values. A zero value
- indicates there is no error.
- PROVIDED ROUTINES
-
-
-
- For each provided routine, you will find:
- the function prototype,
- a short description of what it performs,
- its input and output parameters,
- a list of its possible error code values,
- its value on return if any.
-
-
- To ensure coherence and because prior releases suffered
- poor documentation, this part of the documentation has been
- transferred to the header files (ANUM.H and SYSIO.H).
- ERROR AND WARNING CODES
-
-
-
- Here are a few of the possible returnes error codes. A
- more complete list is given in the "anum.h" file. I promise
- I will include it in the next release of ANUM documentation
- :-). It is sometimes no joke working until 2 a.m. on a non
- paid job ;-).
-
-
-
- ETOLLE0
-
- Class : Error
- Cause : The called routine was given a nil or negative
- tolerance value.
- User's Response : Correct the 'tol' parameter to a strictly
- positive value.
-
-
- EOVERMAXITER
-
- Class : Error
- Cause : An iterative function could not find the solution
- within 'maxiter' iterations.
- User's Response : Set the 'maxiter' parameter to a greater
- value or check the algorithm will converge with the given
- approximate values of the solution or assume there is no
- solution.
-
-
- ENULLSLOPE
-
- Class : Error
- Cause : The user function attempted to use a Newton
- algorithm with a point, the slope of the function is zero
- at which.
- User's Response : Choose another parameter value for
- approximate value of the root.
-
-
- WCPLXROOTS
-
- Class : Warning
- Cause : A function solving real polynomes could not find a
- number of real roots equal to its degree. This polynome
- could possibly have one or more complex roots.
- User's Response : Use a routine giving al so complex roots
- or set the 'maxiter' parameter to a greater value.
-
-
- EYSAMESIGN
-
- Class : Error
- Cause : The bisection algorithm was given two bounds the
- values of which are of the same sign.
- User's Response : Correct one of the bounds. Check if there
- is at least one root between the bounds or assume there
- is no solution.
-
-
- EMAXITERLT0
-
- Class : Error
- Cause : An iterative routine was given a negative value for
- the maximum number of iterations as parameter.
- User's Response : Input a positive value as 'maxiter'
- parameter. A nil value will only be suitable if you want
- to treat only cases for which a trivial and direct
- solution exists.
-
-
- ENOPXINTERSECT
-
- Class : Error
- Cause : The computed parabola does not intersect the X axis.
-
-
- EDIMLT0
-
- Class : Error
- Cause : A function attempted to use a negative length vector
- or a negative order square matrix.
- User's Response : Change the dim parameter or check your
- polynome is not totally deflated.
-
-
- EMATSING
-
- Class : Error
- Cause : A routine attempted to invert a singular matrix.
-
-
- EDIMLE0
-
- Class : Error
- Cause : A function attempted to use a negative or zero
- length vector or a negative or zero order square matrix.
- User's Response : Change the dim parameter or check your
- polynome is not totally deflated.
-
-
- E0DIVIDE
-
- Class : Error
- Cause : A function attempted to do a division by zero.
-
- EDEGLT2
-
- Class : Error
- Cause : The selected algorithm requires a polynome the
- degree of which is at least two.
- User's Response : Check your calling function for errors or
- try to use a direct solving method.
-
-
- ENOWCORE
-
- Class : Error
- Cause : There is not enough working core for one of the
- routine to allocate its working arrays.
- User's Response : Try to free some main storage by
- eliminating Terminate-and-Stay-Resident programs. Use
- overlays if your compilers allows them. Check your code
- for unused stuff.
-
-
- EDEGLE0
-
- Class : Error
- Cause : A function attempted to use a negative or zero
- degree polynomial.
- User's Response : Check passed arguments or try to directly
- solve a trivial case (if degree is nil or polynomial
- equals 0).
-
-
- ENUMINTLE0
-
- Class : Error
- Cause : The given number of arguments passed to a routine is
- lower than or equal to 0.
- HISTORY LOG - CHANGES TO COME
-
- From first to second release
- Fixed a bug concerning a hardwire coded error in the Newton-
- Raphson algorithm.
-
- Added :
- steffensen function
- laguerre function
- ena_beep function
- ena_warn function
- ena_err function
- ena_m_beep
- disa_m_beep
-
-
- The five last functions allow or disable sytem generated
- warning or messages and the audible tone associated to it.
-
-
- Not to cause some "vapourware" announces and as
- programming generates unexpected delays, no date is given
- for the next release of Anum.
-
-
- From second to third release
- Fixed severe bug in swap_rows function giving some random
- results with inverse and determinant functions.
- Added : a whole bunch of new functions.
-
-
- From third to fourth release
- Fixed severe bug in swap_rows function giving some random
- results with inverse and determinant functions.
- Added : (lsq, eigen_vector, householder_givens, jacobi,
- le_verrier).
- Added : C/C++ support, ANUM release 4 routines should link
- without problem with C++ modules. This is achieved by
- suppressing automatically type checking at link edit time
- (See the #ifdef compilation directives in ANUM.H and
- SYSIO.H).
- In release 4.1, fixed a bug affecting the inverse function
- and the jacobi method due to a wrong parameter passing in
- row_mat_div. Solved an ambiguity in the eigen_vect
- routine. fixed a (very minor) bug in testlib.bat.
-
-
- In the next release of this package:
- Changes of the interface to support Turbo Pascal are
- considered. This would primarily affect the parameter
- calling conventions.
- Microsoft compilers are too slow, require too much space on
- the secondary storage, are too user unfriendly and too
- expansive for me to forecast any support yet.
- More functions are to come out, of course. Especially in the
- differential equations solving and interpolation fields.
- A better documentation will also arise, especially from
- your comments.
-
-
- Thanks to :
- CFGROP at WEIZMANN.BITNET
- ROSSBACH at DMRHRZ11.BITNET
- C3DOUTRE at FRECCL11.BITNET
- m_rives at paris.paris.ingr.com
- USERGB3W at UMICHUM.BITNET
-
-
- for support and/or suggestions.
-
-
- Contents
-
-
-
-
-
-
-