Amiga Unix — 68040 · 68060

Manual pages › Math library (3M)

intro(3M)

introduction to math libraries

From the original Amiga UNIX 2.1 manual. Some things it mentions may not be in this release.

Also by this name: intro(1), General commands · intro(1M), System administration commands · intro(8), System maintenance and boot · intro(2), System calls · intro(3), Libraries: curses, OPEN LOOK and others · intro(5), Character sets, environment, package files · intro(7), Devices and drivers · intro(1A), Amiga-specific commands · intro(2Z), XENIX system calls · intro(3A), Amiga-specific libraries · intro(5A), Amiga-specific data formats · intro(7A), Amiga-specific devices

NAME

intro - introduction to math libraries

SYNOPSIS

cc [flag ...] file ...  -lm [library ...]

cc -O -Ksd [flag ...] file ...  -J sfm [library ...]

#include <math.h>

DESCRIPTION

This section describes the functions in the math libraries, libm and libsfm. Declarations for these functions may be obtained from the #include file math.h. Several generally useful mathematical constants are also defined there [see intro(3) and math(5)].

The math libraries are not automatically loaded by the C compilation system; use the -l or -J options to cc to access the libraries as follows:

-lm Search the regular math library, libm.

-J sfm Do in-line expansion of functions from the fast single-precision assembly source math library, libsfm. Specify -O -Ksd to optimize for speed.

libm Contains the full set of double-precision routines plus some single-precision routines (designated by the suffix f) that give better performance with less precision. Selected routines are hand-optimized for performance. The optimized routines include sin, cos, tan, atan, atan2, exp, log, log10, pow, and sqrt and their single-precision equivalents.

libsfm Contains the functions sinf, cosf, tanf, asinf, acosf, atanf, expf, logf, log10f, powf, and sqrtf. The source library routines are in-line expanded by the optimizer to provide faster execution by reducing the overhead of argument passing, function calling and returning, and return value passing. The source library is designed for applications that desire an increase in speed at the potential cost of size.

libsfm should be used only when necessary and with extreme caution. It is a special purpose library that does not do error checking or domain reduction. In other words, these functions never call matherr, and arguments aren't reduced to be within a finite range.

Inputs to sinf and cosf must be in the range
          J
        - _ < x < _
          2       2

Inputs to tanf must be in the range
          J
        - _ < x < _
          2       2

Inputs to sqrtf, logf, and log10f must be greater than 0.

DEFINITIONS

See intro(3) for C language definitions.

FILES

LIBDIR                  usually /usr/ccs/lib
LIBDIR/libm.a
LIBDIR/libsfm.sa

SEE ALSO

cc(1), intro(2), intro(3), math(5).
The   ``Floating   Point   Operations''   chapter   in   the
Programmer's Guide: ANSI C and Programming Support Tools.

DIAGNOSTICS

Error handling varies according to compilation mode. Under the -Xt (default) option to cc, these functions return the conventional values 0, _HUGE, or NaN when the function is undefined for the given arguments or when the value is not representable. In the -Xa and -Xc compilation modes, _HUGE_VAL is returned instead of _HUGE. (HUGE_VAL and HUGE are defined in math.h to be infinity and the largestmagnitude single-precision number, respectively.) In every case, the external variable errno [see intro(2)] is set to the value EDOM or ERANGE, although the value may vary for a given error depending on compilation mode. See the table under matherr(3M) below.