mirror of https://github.com/mkerrisk/man-pages
211 lines
7.1 KiB
Plaintext
211 lines
7.1 KiB
Plaintext
|
.\" Copyright (c) 2001-2003 The Open Group, All Rights Reserved
|
||
|
.TH "<complex.h>" P 2003 "IEEE/The Open Group" "POSIX Programmer's Manual"
|
||
|
.\" <complex.h>
|
||
|
.SH NAME
|
||
|
complex.h \- complex arithmetic
|
||
|
.SH SYNOPSIS
|
||
|
.LP
|
||
|
\fB#include <complex.h>\fP
|
||
|
.SH DESCRIPTION
|
||
|
.LP
|
||
|
The \fI<complex.h>\fP header shall define the following macros:
|
||
|
.TP 7
|
||
|
complex
|
||
|
Expands to \fB_Complex\fP.
|
||
|
.TP 7
|
||
|
_Complex_I
|
||
|
Expands to a constant expression of type \fBconst float _Complex\fP,
|
||
|
with the value of the imaginary unit (that is, a number
|
||
|
\fIi\fP such that \fIi\fP**2=-1).
|
||
|
.TP 7
|
||
|
imaginary
|
||
|
Expands to \fB_Imaginary\fP.
|
||
|
.TP 7
|
||
|
_Imaginary_I
|
||
|
Expands to a constant expression of type \fBconst float _Imaginary\fP
|
||
|
with the value of the imaginary unit.
|
||
|
.TP 7
|
||
|
I
|
||
|
Expands to either _Imaginary_I or _Complex_I. If _Imaginary_I is not
|
||
|
defined, I expands to _Complex_I.
|
||
|
.sp
|
||
|
.LP
|
||
|
The macros imaginary and _Imaginary_I shall be defined if and only
|
||
|
if the implementation supports imaginary types.
|
||
|
.LP
|
||
|
An application may undefine and then, perhaps, redefine the complex,
|
||
|
imaginary, and I macros.
|
||
|
.LP
|
||
|
The following shall be declared as functions and may also be defined
|
||
|
as macros. Function prototypes shall be provided.
|
||
|
.sp
|
||
|
.RS
|
||
|
.nf
|
||
|
|
||
|
\fBdouble cabs(double complex);
|
||
|
float cabsf(float complex);
|
||
|
long double cabsl(long double complex);
|
||
|
double complex cacos(double complex);
|
||
|
float complex cacosf(float complex);
|
||
|
double complex cacosh(double complex);
|
||
|
float complex cacoshf(float complex);
|
||
|
long double complex cacoshl(long double complex);
|
||
|
long double complex cacosl(long double complex);
|
||
|
double carg(double complex);
|
||
|
float cargf(float complex);
|
||
|
long double cargl(long double complex);
|
||
|
double complex casin(double complex);
|
||
|
float complex casinf(float complex);
|
||
|
double complex casinh(double complex);
|
||
|
float complex casinhf(float complex);
|
||
|
long double complex casinhl(long double complex);
|
||
|
long double complex casinl(long double complex);
|
||
|
double complex catan(double complex);
|
||
|
float complex catanf(float complex);
|
||
|
double complex catanh(double complex);
|
||
|
float complex catanhf(float complex);
|
||
|
long double complex catanhl(long double complex);
|
||
|
long double complex catanl(long double complex);
|
||
|
double complex ccos(double complex);
|
||
|
float complex ccosf(float complex);
|
||
|
double complex ccosh(double complex);
|
||
|
float complex ccoshf(float complex);
|
||
|
long double complex ccoshl(long double complex);
|
||
|
long double complex ccosl(long double complex);
|
||
|
double complex cexp(double complex);
|
||
|
float complex cexpf(float complex);
|
||
|
long double complex cexpl(long double complex);
|
||
|
double cimag(double complex);
|
||
|
float cimagf(float complex);
|
||
|
long double cimagl(long double complex);
|
||
|
double complex clog(double complex);
|
||
|
float complex clogf(float complex);
|
||
|
long double complex clogl(long double complex);
|
||
|
double complex conj(double complex);
|
||
|
float complex conjf(float complex);
|
||
|
long double complex conjl(long double complex);
|
||
|
double complex cpow(double complex, double complex);
|
||
|
float complex cpowf(float complex, float complex);
|
||
|
long double complex cpowl(long double complex, long double complex);
|
||
|
double complex cproj(double complex);
|
||
|
float complex cprojf(float complex);
|
||
|
long double complex cprojl(long double complex);
|
||
|
double creal(double complex);
|
||
|
float crealf(float complex);
|
||
|
long double creall(long double complex);
|
||
|
double complex csin(double complex);
|
||
|
float complex csinf(float complex);
|
||
|
double complex csinh(double complex);
|
||
|
float complex csinhf(float complex);
|
||
|
long double complex csinhl(long double complex);
|
||
|
long double complex csinl(long double complex);
|
||
|
double complex csqrt(double complex);
|
||
|
float complex csqrtf(float complex);
|
||
|
long double complex csqrtl(long double complex);
|
||
|
double complex ctan(double complex);
|
||
|
float complex ctanf(float complex);
|
||
|
double complex ctanh(double complex);
|
||
|
float complex ctanhf(float complex);
|
||
|
long double complex ctanhl(long double complex);
|
||
|
long double complex ctanl(long double complex);
|
||
|
\fP
|
||
|
.fi
|
||
|
.RE
|
||
|
.LP
|
||
|
\fIThe following sections are informative.\fP
|
||
|
.SH APPLICATION USAGE
|
||
|
.LP
|
||
|
Values are interpreted as radians, not degrees.
|
||
|
.SH RATIONALE
|
||
|
.LP
|
||
|
The choice of \fII\fP instead of \fIi\fP for the imaginary unit concedes
|
||
|
to the widespread use of the identifier \fIi\fP for
|
||
|
other purposes. The application can use a different identifier, say
|
||
|
\fIj\fP, for the imaginary unit by following the inclusion of
|
||
|
the \fI<complex.h>\fP header with:
|
||
|
.sp
|
||
|
.RS
|
||
|
.nf
|
||
|
|
||
|
\fB#undef I
|
||
|
#define j _Imaginary_I
|
||
|
\fP
|
||
|
.fi
|
||
|
.RE
|
||
|
.LP
|
||
|
An \fII\fP suffix to designate imaginary constants is not required,
|
||
|
as multiplication by \fII\fP provides a sufficiently
|
||
|
convenient and more generally useful notation for imaginary terms.
|
||
|
The corresponding real type for the imaginary unit is
|
||
|
\fBfloat\fP, so that use of \fII\fP for algorithmic or notational
|
||
|
convenience will not result in widening types.
|
||
|
.LP
|
||
|
On systems with imaginary types, the application has the ability to
|
||
|
control whether use of the macro I introduces an imaginary
|
||
|
type, by explicitly defining I to be _Imaginary_I or _Complex_I. Disallowing
|
||
|
imaginary types is useful for some applications
|
||
|
intended to run on implementations without support for such types.
|
||
|
.LP
|
||
|
The macro _Imaginary_I provides a test for whether imaginary types
|
||
|
are supported.
|
||
|
.LP
|
||
|
The \fIcis\fP() function (\fIcos\fP(\fIx\fP) + \fII\fP*\fIsin\fP(\fIx\fP))
|
||
|
was considered but rejected because its
|
||
|
implementation is easy and straightforward, even though some implementations
|
||
|
could compute sine and cosine more efficiently in
|
||
|
tandem.
|
||
|
.SH FUTURE DIRECTIONS
|
||
|
.LP
|
||
|
The following function names and the same names suffixed with \fIf\fP
|
||
|
or \fIl\fP are reserved for future use, and may be added
|
||
|
to the declarations in the \fI<complex.h>\fP header.
|
||
|
.TS C
|
||
|
center; lw(26) lw(26) lw(26).
|
||
|
T{
|
||
|
.br
|
||
|
\fIcerf\fP()
|
||
|
.br
|
||
|
\fIcerfc\fP()
|
||
|
.br
|
||
|
\fIcexp2\fP()
|
||
|
.br
|
||
|
\
|
||
|
T} T{
|
||
|
.br
|
||
|
\fIcexpm1\fP()
|
||
|
.br
|
||
|
\fIclog10\fP()
|
||
|
.br
|
||
|
\fIclog1p\fP()
|
||
|
.br
|
||
|
\
|
||
|
T} T{
|
||
|
.br
|
||
|
\fIclog2\fP()
|
||
|
.br
|
||
|
\fIclgamma\fP()
|
||
|
.br
|
||
|
\fIctgamma\fP()
|
||
|
.br
|
||
|
\
|
||
|
T}
|
||
|
.TE
|
||
|
.SH SEE ALSO
|
||
|
.LP
|
||
|
The System Interfaces volume of IEEE\ Std\ 1003.1-2001, \fIcabs\fP(),
|
||
|
\fIcacos\fP(), \fIcacosh\fP(), \fIcarg\fP(), \fIcasin\fP(), \fIcasinh\fP(),
|
||
|
\fIcatan\fP(), \fIcatanh\fP(), \fIccos\fP(), \fIccosh\fP(), \fIcexp\fP(),
|
||
|
\fIcimag\fP(), \fIclog\fP(), \fIconj\fP(), \fIcpow\fP(), \fIcproj\fP(),
|
||
|
\fIcreal\fP(), \fIcsin\fP(), \fIcsinh\fP(), \fIcsqrt\fP(), \fIctan\fP(),
|
||
|
\fIctanh\fP()
|
||
|
.SH COPYRIGHT
|
||
|
Portions of this text are reprinted and reproduced in electronic form
|
||
|
from IEEE Std 1003.1, 2003 Edition, Standard for Information Technology
|
||
|
-- Portable Operating System Interface (POSIX), The Open Group Base
|
||
|
Specifications Issue 6, Copyright (C) 2001-2003 by the Institute of
|
||
|
Electrical and Electronics Engineers, Inc and The Open Group. In the
|
||
|
event of any discrepancy between this version and the original IEEE and
|
||
|
The Open Group Standard, the original IEEE and The Open Group Standard
|
||
|
is the referee document. The original Standard can be obtained online at
|
||
|
http://www.opengroup.org/unix/online.html .
|