diff options
Diffstat (limited to 'man0p/complex.h.0p')
-rw-r--r-- | man0p/complex.h.0p | 210 |
1 files changed, 210 insertions, 0 deletions
diff --git a/man0p/complex.h.0p b/man0p/complex.h.0p new file mode 100644 index 000000000..960400670 --- /dev/null +++ b/man0p/complex.h.0p @@ -0,0 +1,210 @@ +.\" 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 . |