home *** CD-ROM | disk | FTP | other *** search
-
-
- RealFun: Real & Complex Math Libraries for QuickBASIC
-
- MANUAL.TXT
-
-
-
- RealFun & CompFun: Mathematics Libraries for QuickBASIC
-
- Copyright 1991, L. Kerry Mitchell
-
-
-
-
-
- Contents: I. Introduction
-
- II. RealFun Libraries
-
- III. CompFun Libraries
-
- IV. Support Policy
-
- V. General Comments
-
- VI. Revision History
-
-
-
-
-
- I. Introduction
-
-
-
- One of the nice things about BASIC is that it's an easy
-
- language to learn and use, especially in the QuickBASIC
-
- environment. However, this ease of use comes at the expense
-
- of programming power. As it is packaged, QuickBASIC just
-
- doesn't have the same number-crunching capability as
-
- FORTRAN, for example. In much of my personal programming, I
-
- wanted to use functions, like hyperbolic trigonometric
-
- functions, that were available in FORTRAN. The essential
-
- pieces were there (arithmetic operators and the EXP
-
- function), but not in the forms I wanted. So I set out to
-
- create a set of libraries that would contain all the
-
- functions I'd ever want to use, and then some.
-
-
-
- Along the way, I realized that some of the intrinsic
-
- functions in QuickBASIC don't quite function the way I'd
-
- like. For example, the modulo function (MOD) only returns
-
- integers, which is not helpful if you're trying to find 1000
-
- mod 3.14159. The arctangent function (ATN) only takes one
-
- argument, so you can't tell what quadrant your angle is in.
-
- Specifically, if the sides of your angle are x and y, with x
-
- = -1 and y = -1, ATN(y/x) will give you the same result as
-
- it would if x and y were both 1. And of course, QuickBASIC
-
- does not handle complex numbers (as such).
-
-
-
- This package is a compilation of my efforts to make
-
- QuickBASIC more powerful and more productive. I hope you
-
- find it useful.
-
-
-
-
-
- II. RealFun Libraries
-
-
-
- The RealFun library is actually two libraries, a Quick
-
- library (REALFUN.QLB) that is used during your interactive
-
-
- programming session, and a stand-alone library (REALFUN.LIB)
-
- that is used to create stand-alone programs. To use them,
-
- initiate QuickBASIC with the "/l" option:
-
-
-
- C> qb/l realfun
-
-
-
- This assumes that you keep RealFun in the same directory as
-
- your QuickBASIC executable files. For additional
-
- information on loading libraries, see your QuickBASIC
-
- manuals.
-
-
-
- Once you've gotten the library loaded, you need to tell your
-
- program about it. For each function that you use, you need
-
- a declaration statement at the beginning of your code. For
-
- example, to use the sind (sine of an angle in degrees)
-
- function, you would need a
-
-
-
- DECLARE FUNCTION sind (x)
-
-
-
- at the beginning of your program. Then, if you wanted to
-
- find the sine of 35 degrees somewhere later, call the sind
-
- function just as you would the intrinsic SIN function:
-
-
-
- .
-
- .
-
- .
-
- s35 = sind(35)
-
- .
-
- .
-
- .
-
-
-
- All the other functions are similarly available for your
-
- use.
-
-
-
- RealFun is composed of 38 functions. A full list of them by
-
- general topic area (sine, hyperbolic tangent, modulo, etc.)
-
- can be found in the file REALTOP.TXT. An alphabetic listing
-
- by function name (sind, tanh, dmod, etc.) can be found in
-
- the file REALLIST.TXT. That's all there is to it!
-
-
-
-
-
- III. CompFun Libraries
-
-
-
- The CompFun libraries are also two libraries, a Quick
-
- library (COMPFUN.QLB) that is used during your interactive
-
- programming session, and a stand-alone library (COMPFUN.LIB)
-
- that is used to create stand-alone programs. To use them,
-
- initiate QuickBASIC with the "/l" option:
-
-
-
- C> qb/l compfun
-
-
-
-
- just like intializing the RealFun libraries.
-
-
-
- The CompFun library is a superset of the functions included
-
- in RealFun, and is composed of FUNCTIONS and SUBprograms.
-
- To use the FUNCTIONs, you need to let your program know
-
- about them, with the appropriate declaration(s). For
-
- example, to use the amax and amin functions (maximum and
-
- minimum of 2 items in a list), you would need
-
-
-
- DECLARE FUNCTION amax (x, y)
-
- DECLARE FUNCTION amin (x, y)
-
-
-
- at the beginning of your program.
-
-
-
- The strength of CompFun lies in its ability to manipulate
-
- complex numbers via their real and imaginary parts. (In
-
- brief, complex numbers have 2 parts, that are known as the
-
- "real" and "imaginary" parts. QuickBASIC can only handle
-
- "real" numbers, that is, numbers with 1 part. See
-
- REGISTER.TXT for information regarding a tutorial on complex
-
- numbers and using them with the CompFun library.) Since
-
- FUNCTIONs only return 1 number, the complex routines are
-
- executed using SUBprograms, which support parameter lists.
-
- Each SUBprogram you want to use requires its own declaration
-
- statement. For example, to convert the real and imaginary
-
- parts of a complex number to its magnitude and phase, use
-
-
-
- DECLARE SUB cpolar (x, y, r, t)
-
-
-
- at the beginning of your program, and
-
-
-
- CALL cpolar (a, b, mag, phase)
-
-
-
- in the body of your code. Of course, you don't have to use
-
- these same variables names, as long as they are of the
-
- proper type. In this example, the inputs are a (the real
-
- part of the complex number) and b (the imaginary part). The
-
- outputs are mag (the magnitude) and phase (the phase, in
-
- radians). The file COMPTOP.TXT lists all the FUNCTIONs and
-
- SUBprograms in CompFun, arranged by topic. Also listed are
-
- the input and output types (single- or double-precision,
-
- integer or long), and the number of arguments. An
-
- alphabetic listing of all the routines can be found in
-
- COMPLIST.TXT.
-
-
-
- A bit of warning about dealing with complex numbers: Any
-
- function involving the trigonometric functions (sin, cos,
-
- tan, sinh, cosh, tanh) or the exponentials (exp, log), the
-
- so-called "transcendental" functions, will be multi-valued.
-
-
- That is to say, there is an infinity of numbers that give
-
- the same answer. This is not really a problem, but
-
- something of which you need to be aware. For example, if
-
- you computed the cosine and arccosine of (-1, -3):
-
-
-
- DECLARE SUB ccos(a, b, c, d)
-
- DECLARE SUB cacos(a, b, c, d)
-
- CALL ccos(-1, -3, u, v)
-
- CALL cacos(u, v, x, y)
-
- PRINT x, y
-
-
-
- you'd find that x = 1 and y = 3, rather than -1 and -3. So
-
- computing the inverse of a function does not necessarily get
-
- you right back where you started.
-
-
-
-
-
- IV. General Comments
-
-
-
- The limits of these libraries are the same as the limits of
-
- QuickBASIC, as far as precision, overflow, underflow, etc.
-
-
-
- It is assumed that the user has some idea of what he/she is
-
- doing, or doesn't mind crashing his/her program often. That
-
- is to say that there is no error-checking in the routines.
-
- If you try to compute cdacos(145%), your program will
-
- probably die. I decided that QuickBASIC's error-checking
-
- facilities were good enough to keep your machine from
-
- hanging up, and that checking for the more common errors
-
- would amount to excessive overhead and adversely affect the
-
- routines' performance.
-
-
-
- Some of the calculations, especially the inverse
-
- trigonometric functions, are a bit involved. A lot of
-
- effort has gone into optimizing the algorithms, but it can
-
- still take a long time to do a massive calculation (like a
-
- 640 x 480, several thousand iteration fractal). There's not
-
- much that can be done about that; it's the nature of the
-
- system.
-
-
-
-
-
- V. Support Policy
-
-
-
- It is expected that the user of this package will have at
-
- least a passing familiarity with QuickBASIC and the
-
- mathematics used in the libraries. For a tutorial on
-
- complex numbers and usage of the libraries, please see
-
- REGISTER.TXT and order the enhanced package.
-
-
-
- These libraries have been tested thoroughly, but on only one
-
- installation. The modules are believed to be fully
-
-
- compatible with MS-DOS 3.3 and QuickBASIC 4.5.
-
- Compatibility with earlier versions is an open question,
-
- although no "tricks" or dirty programming have been used, so
-
- it should be safe. To report bugs and problems, please send
-
- a short note to me at the address below.
-
-
-
- Support in working with the package can be obtained in two
-
- ways. For 90 days after registration, you are entitled to a
-
- total of 1 hour telephone support, free of charge (except
-
- normal long-distance charges). Support by mail (postal or
-
- electronic) is available free of charge for 180 days after
-
- registration. To obtain help or report a bug, write or
-
- call:
-
-
-
- Kerry Mitchell
-
- Creative Imagery
-
- 1454 Todds Lane #A-25
-
- Hampton, VA 23666
-
- 804-827-7034
-
- CompuServe: [70152,1444]
-
- Internet: 70152.1444@compuserve.com
-
- Delphi: lkmitch
-
-
-
-
-
- VI. Revision History
-
-
-
- This is officially version 1.0 of the RealFun package. A
-
- preliminary version was released in 1990, primarily as an
-
- exercise for myself.
-
-