pete@wlbr.EATON.COM (Pete Lyall) (03/14/89)
Because of numerous requests, I am posting the man page to the
enhanced math functions in the 'clibt.l' C library. I am also postin a
correction to the rand()/srand() functions.
Note: the rand() and srand() functions below are WRONG. The
rand() function returns a LONG, and accepts no scale factor. The
application must scale it itself. Also, the srand() function accepts a
LONG as an argument. A good seed might be data returnrd by the unix-ish
time() function.
Pete Lyall
================================ Cut here =========================
MATH(3C) Kreider OS-9 C Library MATH(3C)
NAME
rand, srand, sqrt, unmin, unmax, max, min - Math functions
SYNOPSIS
rand(sf) int sf;
srand(n) int n;
int sqrt(n) int n;
int max(v1, v2) int min(v1, v2) int v1, v2;
int unmax(v1, v2) int unmin(v1, v2) unsigned v1, v2;
DESCRIPTION
RAND returns a random number in the range of the scale factor SF.
SRAND seeds the random number generator. SRAND uses the dual table
method proposed by Knuth.
SQRT returns the square root of the number N which must be a type
INTEGER number.
MAX and MIN select either the larger of the smaller of variables V1
and V2. UNMAX and UNMIN perform the same function, but on unsigned
numbers. Each of these functions returns a type INTEGER number.
SEE ALSO
clibt.l Transentental Math library.
Last Revision: 3/13/89 Page 1
================================ Cut here ============================
CLIBT.L Kreider OS-9 C Library CLIBT.L
The following functions are additions to the Kreider CLIB.L
functions described earlier, and all the functions contained in
that library are also present here. The purpose of this
additional library is to provide the transcentental math
functions. All the remaining functions perform in exactly the
same manner as in the CLIB.L library, but are rewritten here for
increased speed in execution, although resulting in a larger
output file.
NAME
Transcentental Math C Library
SYNOPSIS
rad()
deg()
double acos(x)
double x;
double asin(x)
double x;
double atan(x)
double x;
double cos(x)
double x;
double sin(x)
double x;
double tan(x)
double x;
double acosh(x)
double x;
double asinh(x)
double x;
double atanh(x)
double x;
double cosh(x)
double x;
double sinh(x)
double x;
double tanh(x)
Last Revision: 3/13/89 Page 61
CLIBT.L Kreider OS-9 C Library CLIBT.L
double x;
double pow(x,y)
double x,y;
double exp(x)
double x;
double antilg(x)
double x;
double log10(x)
double x;
double log(x)
double x;
double sqrt(x)
double x;
double sqr(x)
double x;
double inv(x)
double x;
double dabs(x)
double x;
double dexp(x,i)
double x;
int i;
DESCRIPTION
The various transcendental math functions are implemented
here using the CORDIC method. Accuracy is to sixteen (16)
decimal places. The four basic math functions are rewritten
to optimize for speed at the expense of output program
length. This gives at least a factor of two speed
improvement over the standard Microware C library.
Externally, all number look just like a normal C double, but
internally, an extra byte is used to permit an exponent
range of 511.
RAD() changes the trigometric functions to radians.
DEG() changes the trigometric functions to degrees.
ACOS(x) returns the arc cosine of X.
ASIN(x) returns the arc sine of X.
Last Revision: 3/13/89 Page 62
CLIBT.L Kreider OS-9 C Library CLIBT.L
ATAN(x) returns the arc tangent of X.
COS(x) returns the cosine of X.
SIN(x) returns the sine of X.
TAN(x) returns the tangent of X.
ACOSH(x) returns the arc hyperbolic cosine of X.
ASINH(x) returns the arc hyperbolic sine of X.
ATANH(x) returns the arc hyperbolic tangent of X.
COSH(x) returns the hyperbolic cosine of X.
SINH(x) returns the hyperbolic sine of X.
TANH(x) returns the hyperbolic tangent of X.
POW(x,y) returns the value of X taken to the power of Y.
EXP(x) returns E to the X power.
ANTILG(x) returns 10 to the X power.
LOG10(x) returns logarithm base 10 of X.
LOG(x) returns the logarithm base E of X.
SQRT(x) returns the square root of X.
SQR(x) returns the square of X.
INV(x) returns the value of 1 (one) divided by X.
DABS(x) returns the absolute value of X.
DEXP(x,i) returns the value of X multiplied by 2 to the i
power. This is a VERY QUICK function.
NOTE
The following errors are returned by each of the above
functions if an error occurs and are placed in the global
variable ERRNO.
These error numbers should be added to ERRNO.H:
EFPOVR 40 Floating point overflow
EDIVERR 41 Divide by zero error
EINTERR 42 Overflow on conversion of a double integer
EFPUND 43 Floating point underflow (does not abort
the program). Zero is returned.
Last Revision: 3/13/89 Page 63
CLIBT.L Kreider OS-9 C Library CLIBT.L
EILLARG 44 Illegal function argument, e.g sqrt(-1)
SEE ALSO
math().
Last Revision: 3/13/89 Page 64
--
Pete Lyall Contel Corp.(818)-706-5693
Compuserve: 76703,4230 (OS9 Sysop) OS9_Net: (805)-985-0632 (24hr 300/1200/2400)
Internet: pete@wlbr.eaton.com UUCP: {hacgate,jplgodo,voder}!wlbr!pete