|
HP C
HP C Language Reference Manual
8.8.6 The __STDC_ISO_10646__ Macro
The __STDC_ISO_10646__ macro evaluates to an integer constant of the
form yyyymmL (for example, 199712L), intended to indicate that
values of type wchar_t are the coded representations of the
characters defined by ISO/IEC 10646, along with all amendments and
technical corrigenda as of the specified year and month.
8.8.7 System-Identification Macros
HP C defines platform-specific macros that can be used to
identify the system on which the program is running. These macros can
assist in writing code that executes conditionally depending on whether
the program is running on an HP system or some other system, or one
HP C platform or another.
These macro definitions can be used to separate portable and
nonportable code in a C program by enclosing the nonportable code in
conditionally compiled sections.
They can also be used to conditionally compile sections of C programs
used on more than one operating system to take advantage of
system-specific features. See Section 8.2 for more information about
using the conditional-compilation preprocessor directives.
See your platform-specific HP C documentation for a list of
the system-identification macros.
8.9 The __func__ Predeclared Identifier
The __func__ predeclared identifier evaluates to a static array of
char initialized with the spelling of the function's name. It
is visible anywhere within the body of a function definition.
For example, a function defined as follows will print "f1".
void f1(void) {printf("%s\n", __func__);}
|
Chapter 9 The ANSI C Standard Library
The ANSI C standard defines a set of functions, as well as related
types and macros, to be provided with any implementation of ANSI C.
This chapter lists and briefly describes the ANSI-conformant library
features common to all HP C platforms. See your HP C
library routine documentation for a detailed description of these
routines and their use in your system environment, and for additional
headers, functions, types, and macros that may be available on your
operating system.
All library functions are declared in a header file. To make
the contents of a header file available to your program, include the
header file with an #include preprocessor directive. For
example:
Each header file declares a set of related functions, as well as
defining any types and macros needed for their use.
The standard headers are:
Header files can be included in any order. Each can be included more
than once in a given scope with no effect different from being included
once. However, the effect of including <assert.h>
depends on the definition of NDEBUG. Include headers outside
of any external declaration or definition, and before any reference to
the functions, types, or macros declared or defined in the headers. If
an identifier is declared or defined in more than one included header,
the second and subsequent headers containing that identifier can be
included after the initial reference to that identifier.
9.1 Diagnostics (<assert.h>)
The header <assert.h> defines the assert macro
and refers to another macro, NDEBUG, defined elsewhere. If
NDEBUG is defined as a macro name at the point in the source
file where <assert.h> is included, the assert
macro is defined as follows:
#define assert(ignore) ((void) 0)
|
Macro
void assert(int expression);
- Puts diagnostics into programs. If expression is false
(zero), the assert macro writes information about the
particular call that failed on the standard error file in an
implementation-defined format. It then calls the abort
function. The assert macro returns no value.
9.2 Complex Arithmetic(<complex.h>)
The <complex.h> header file defines macros and declares
functions that support complex arithmetic.
Each synopsis specifies a family of functions consisting of a principal
function with one or more double complex parameters and a double
complex or double return value; and other functions with the same name
but with f and l suffixes which are corresponding functions with float
and long double parameters and return values.
Macros
complex
_Complex_I
- Expands to a constant expression of type const float
_Complex, with the value of the imaginary unit. The imaginary unit
is a number i such that i2 = -1 .
imaginary
_Imaginary_I
- Defined if and only if the implementation supports imaginary types;
if defined, they expand to _Imaginary and a constant
expression of type const float _Imaginary with the value of
the imaginary unit.
I
- Expands to _Imaginary_I or _Complex_I. If
_Imaginary_I is not defined, I expands to
_Complex_I.
Trigonometric Functions
The cacos functions
#include <complex.h>
double complex cacos(double complex z);
float complex cacosf(float complex z);
long double complex cacosl(long double complex z);
|
- The cacos functions compute the complex arc cosine of
z, with branch cuts outside the interval [ - 1,+1] along the
real axis.
The cacos functions return the value, in
radians, of the complex arc cosine of z in the range of a
strip mathematically unbounded along the imaginary axis and in the
interval [0, pi] along the real axis.
The casin functions
#include <complex.h>
double complex casin(double complex z);
float complex casinf(float complex z);
long double complex casinl(long double complex z);
|
- The casin functions compute the complex arc sine of
z, with branch cuts outside the interval [ - 1,+1] along the
real axis.
The casin functions return the value, in
radians, of the complex arc sine of z in the range of a strip
mathematically unbounded along the imaginary axis and in the interval
[-pi/2,+pi/2] along the real axis.
The catan functions
#include <complex.h>
double complex catan(double complex z);
float complex catanf(float complex z);
long double complex catanl(long double complex z);
|
- The catan functions compute the complex arc tangent of
z, with branch cuts outside the interval [ - i,+i] along the
imaginary axis.
The catan functions return the value, in
radians, of the complex arc tangent of z in the range of a
strip mathematically unbounded along the imaginary axis and in the
interval [-pi/2,+pi/2] along the real axis.
The ccos functions
#include <complex.h>
double complex ccos(double complex z);
float complex ccosf(float complex z);
long double complex ccosl(long double complex z);
|
- The ccos functions return the complex cosine of z.
The csin functions
#include <complex.h>
double complex csin(double complex z);
float complex csinf(float complex z);
long double complex csinl(long double complex z);
|
- The csin functions return the complex sine of z.
The ctan functions
#include <complex.h>
double complex ctan(double complex z);
float complex ctanf(float complex z);
long double complex ctanl(long double complex z);
|
- The ctan functions return the complex tangent of
z.
Hyperbolic Functions
The cacosh functions
#include <complex.h>
double complex cacosh(double complex z);
float complex cacoshf(float complex z);
long double complex cacoshl(long double complex z);
|
- The cacosh functions compute the complex arc hyperbolic
cosine of z, with a branch cut at values less than 1 along the
real axis.
The cacosh functions return the value, in
radians, of the complex arc hyperbolic cosine of z in the
range of a a half-strip of non-negative values along the real axis and
in the interval [-i(pi), +i(pi)] along the imaginary axis.
The casinh functions
#include <complex.h>
double complex casinh(double complex z);
float complex casinhf(float complex z);
long double complex casinhl(long double complex z);
|
- The casinh functions compute the complex arc hyperbolic
sine of z, with branch cuts outside the interval [ - i,+i]
along the imaginary axis.
The casinh functions return the
complex arc hyperbolic sine value, in the range of a strip
mathematically unbounded along the real axis and in the interval
[-i(pi)/2, +i(pi)/2] along the imaginary axis.
The catanh functions
#include <complex.h>
double complex catanh(double complex z);
float complex catanhf(float complex z);
long double complex catanhl(long double complex z);
|
- The catanh functions compute the complex arc hyperbolic
tangent of z, with branch cuts outside the interval [ - 1,+1]
along the real axis.
The catanh functions return the
complex arc hyperbolic tangent value, in the range of a strip
mathematically unbounded along the real axis and in the interval
[-i(pi)/2, +i(pi)/2] along the imaginary axis.
The ccosh functions
#include <complex.h>
double complex ccosh(double complex z);
float complex ccoshf(float complex z);
long double complex ccoshl(long double complex z);
|
- The ccosh functions return the complex hyperbolic cosine
of z.
The csinh functions
#include <complex.h>
double complex csinh(double complex z);
float complex csinhf(float complex z);
long double complex csinhl(long double complex z);
|
- The csinh functions return the complex hyperbolic sine of
z.
The ctanh functions
#include <complex.h>
double complex ctanh(double complex z);
float complex ctanhf(float complex z);
long double complex ctanhl(long double complex z);
|
- The ctanh functions return the complex hyperbolic tangent
of z.
Exponential and Logarithmic Functions
The cexp functions
#include <complex.h>
double complex cexp(double complex z);
float complex cexpf(float complex z);
long double complex cexpl(long double complex z);
|
- The cexp functions return the complex base e
exponential of z.
The clog functions
#include <complex.h>
double complex clog(double complex z);
float complex clogf(float complex z);
long double complex clogl(long double complex z);
|
- The clog functions compute the complex natural (base
e) logarithm of z, with a branch cut along the
negative real axis.
The clog functions return the complex
natural logarithm value, in the range of a strip mathematically
unbounded along the real axis and in the interval [-i(pi), +i(pi)]
along the imaginary axis.
Power and Absolute-Value Functions
The cabs functions
#include <complex.h>
double cabs(double complex z);
float cabsf(float complex z);
long double cabsl(long double complex z);
|
- The cabs functions return the complex absolute value (also
called norm, modulus, or magnitude) of z.
The cpow functions
#include <complex.h>
double complex cpow(double complex x, double complex y);
float complex cpowf(float complex x, float complex y);
long double complex cpowl(long double complex x,
long double complex y);
|
- The cpow functions compute the complex power function
xy, with a branch cut for the first parameter along the
negative real axis.
The cpow functions return the complex
power function value.
The csqrt functions
#include <complex.h>
double complex csqrt(double complex z);
float complex csqrtf(float complex z);
long double complex csqrtl(long double complex z);
|
- The csqrt functions compute the complex square root of
z, with a branch cut along the negative real axis.
The
csqrt functions return the complex square root value, in the
range of the right half-plane (including the imaginary axis).
Manipulation Functions
The carg functions
#include <complex.h>
double carg(double complex z);
float cargf(float complex z);
long double cargl(long double complex z);
|
- The carg functions compute the argument (also called phase
angle) of z, with a branch cut along the negative real axis.
The carg functions return the value of the argument in the
interval [-pi,+pi].
The cimag functions
#include <complex.h>
double cimag(double complex z);
float cimagf(float complex z);
long double cimagl(long double complex z);
|
- The cimag functions compute the imaginary part of
z and return it as a real.
The conj functions
#include <complex.h>
double complex conj(double complex z);
float complex conjf(float complex z);
long double complex conjl(long double complex z);
|
- The conj functions compute complex conjugate of
z, by reversing the sign of its imaginary part.
The
conj functions return the complex conjugate value.
The cproj functions
#include <complex.h>
double complex cproj(double complex z);
float complex cprojf(float complex z);
long double complex cprojl(long double complex z);
|
- The cproj functions compute a projection of z
onto the Riemann sphere: z projects to z except that
all complex infinities (even those with one infinite part and one NaN
part) project to positive infinity on the real axis. If z has
an infinite part, then cproj(z) is equivalent to:
INFINITY + I * copysign(0.0, cimag(z))
|
The cproj functions return the value of the projection
onto the Riemann sphere.
The creal functions
#include <complex.h>
double creal(double complex z);
float crealf(float complex z);
long double creall(long double complex z);
|
- The creal functions compute and return the real part of
z.
For a variable z of complex type, z
:=,= creal(z) + cimag(z)*I.
9.3 Character Processing (<ctype.h>)
The <ctype.h> header file declares several functions for
testing characters. For each function, the argument is an int
whose value must be EOF or representable as an unsigned
char, and the return value is an integer.
Functions
int isalnum(int c);
- Returns a nonzero integer if the character passed to it is an
alphanumeric ASCII character. Otherwise, isalnum returns 0.
int isalpha(int c);
- Returns a nonzero integer if the character passed to it is an
alphabetic ASCII character. Otherwise, isalpha returns 0.
int iscntrl(int c);
- Returns a nonzero integer if the character passed to it is an ASCII
DEL character (177 octal, 0x7F hex) or any nonprinting ASCII character
(a code less than 40 octal, 0x20 hex). Otherwise, iscntrl
returns 0.
int isdigit(int c);
- Returns a nonzero integer if the character passed to it is a
decimal digit character (0 to 9). Otherwise, isdigit returns 0.
int isgraph(int c);
- Returns a nonzero integer if the character passed to it is a
graphic ASCII character (any printing character except a space
character). Otherwise, isgraph returns 0.
int islower(int c);
- Returns a nonzero integer if the character passed to it is a
lowercase alphabetic ASCII character. Otherwise, islower
returns 0.
int isprint(int c);
- Returns a nonzero integer if the character passed to it is an ASCII
printing character, including a space character. Otherwise,
isprint returns 0.
int ispunct(int c);
- Returns a nonzero integer if the character passed to it is an ASCII
punctuation character (any printing character that is nonalphanumeric
and greater than 40 octal, 0x20 hex). Otherwise, ispunct
returns 0.
int isspace(int c);
- Returns a nonzero integer if the character passed to it is white
space. Otherwise, isspace returns 0. The standard white space
characters are:
- space (' ')
- form feed ('\f')
- new line ('\n')
- carriage return ('\r')
- horizontal tab ('\t')
- vertical tab ('\v')
int isupper(int c);
- Returns a nonzero integer if the character passed to it is an
uppercase alphabetic ASCII character. Otherwise, isupper
returns 0.
int isxdigit(int c);
- Returns a nonzero integer if the character passed to it is a
hexadecimal digit (0 to 9, A to F, or a to f). Otherwise,
isxdigit returns 0.
int tolower(int c);
- Converts an uppercase letter to lowercase. c remains
unchanged if it is not an uppercase letter.
int toupper(int c);
- Converts a lowercase letter to uppercase. c remains
unchanged if it is not a lowercase letter.
|