*nix Documentation Project
·  Home
 +   man pages
·  Linux HOWTOs
·  FreeBSD Tips
·  *niX Forums

  man pages->IRIX man pages -> f90/intro_libm (3)              
Title
Content
Arch
Section
 

Contents


INTRO_LIBM(3M)					       Last changed: 1-6-98

NAME    [Toc]    [Back]

     INTRO_LIBM	- Introduction to math library routines

IMPLEMENTATION    [Toc]    [Back]

     See individual man	pages for implementation details

DESCRIPTION    [Toc]    [Back]

     The math routines are listed with the other intrinsic procedures in
     alphabetical order, usually by generic function name.  Generic
     function names are	function calls that cause the compiler to compile
     automatically the appropriate data	type version of	a routine, based on
     the type of the input data.  For example, a call to the generic
     function LOG with a type of input data of complex compiles	as CLOG.

     In	general, on UNICOS systems, real functions have	no prefix; integer
     functions are prefixed with I, double precision functions are prefixed
     with D, complex functions are prefixed with C, and	double precision
     complex functions are prefixed with CD (for example, ABS, IABS, DABS,
     CABS, and CDABS).	Functions with a type different	from their
     arguments are noted.  Real	functions are usually the same as the
     generic function name.

     On	UNICOS/mk systems, two precisions are provided for real	data:
     32-bit or half precision real and 64-bit or single	precision real.
     The specific names	for single precision real data provide a link to
     the 64-bit	intrinsic functions.  To ensure	a link to the 32-bit
     intrinsic functions, use the generic function names with 32-bit real
     arguments.	 For example, use LOG for any of the types of real data.
     Use ALOG for single precision real	arguments.  Extended precision
     routines of math library routines are not provided	on UNICOS/mk
     systems and only some routines have vector	versions.

     UNICOS/mk systems have an additional library named	libmfastv.  It
     contains versions of selected math	intrinsics which can be	faster than
     those in the default Math library.	 These alternate versions are not
     as	accurate as the	default	library, and in	some cases there are
     argument restrictions, such as not	allowing the use of the	-O option
     on	the compiler command line, or not allowing the use of infinities.
     These alternate versions are generally faster for loops with 50 or
     more iterations.  To use libmfastv, use the -l mfastv option on the
     compiler's	command	line to	load the library file.	You must compile
     your code with the	-O3 or -Ovector3 option	for the	Fortran	compiler or
     use -h vector3 with the C compiler.

     For information on	inlining and vectorization of the Fortran 90
     intrinsic procedures, see INTRO_INTRIN(3I).

     The documentation for some	of the most often used math library
     routines also contains information	on Cray	Assembly Language (CAL)
     register usage.

     For more information on calling library routines from various
     programming languages, see	the subsection on this man page	titled
     "Calling Functions	from Fortran, C, or CAL."

     The math routines can be divided into the following general
     categories:

     * General arithmetic functions - In the routine descriptions, complex
       arguments are represented as

       x = x  +	ix .
	    r	  i
       The real	part of	the complex number is x	; x  is	the imaginary part.
					       r   i
       Arguments and results are of the	same type unless otherwise
       indicated.

       Base values raised to a power and 64-bit	integer	division are called
       implicitly from Fortran.

     * Exponential and logarithmic functions - The Cray	Resesarch
       exponential and logarithmic functions are similar to the	ANSI
       standard	functions.  Each function has variations for real, double
       precision, and complex values except the	common logarithm function,
       which addresses only real and double-precision values.  Complex
       arguments are represented as

       x = x  +	ix .
	    r	  i
       x  is the real part of the complex number; x  is	the imaginary part.
	r					   i
     * Trigonometric functions - The trigonometric functions are based on
       the ANSI	standard for Fortran, except for the cotangent function	and
       the COSS	(cosine	and sine) function, which are Cray Research
       extensions.

     * Type conversion functions - Type	conversion functions change the
       type of an argument.  In	the routine description, complex arguments
       are represented as

       x = x  +	ix .
	    r	  i
       x  is the real part of the complex number; x  is	the imaginary part.
	r					   i
       Arguments and results are of the	same type, unless indicated
       otherwise.

     * Special functions - The special functions provide Fortran access	to
       a number	of Standard C functions	on UNICOS/mk and UNICOS	systems.

     * Extended-precision routines - The extended-precision routines
       perform double- and triple-precision arithmetic on UNICOS systems.

     * Boolean functions - The Boolean functions perform logical operations
       and bit manipulations.  On UNICOS systems, the scalar subprograms
       are external versions of	Fortran	inline functions.  They	are all
       called by address; results are returned in register S1.	All Boolean
       functions are extensions.  These	functions cannot be passed as
       arguments with CF90 on any system.

   Calling Functions from Fortran, C, or CAL
     Because of	differences in the calling sequences for these languages,
     and other language	differences, important variations must be noted	in
     what functions can	be called and how they are called.

     Calling from Fortran programs    [Toc]    [Back]
     Some function names are in	uppercase, and some are	in lowercase.  The
     Fortran language is case-insensitive; the Cray Research Fortran
     compilers map all code in uppercase.  This	means that functions with
     lowercase names cannot be called from Fortran programs.

     Calling from C programs    [Toc]    [Back]
     The C language is case-sensitive.	You must use the exact case
     specified in the documentation when coding	references to a	function.

     All functions documented in this manual are callable from C programs.
     The following rules can be	used:

     * Because the function is not declared in a Standard C header,
       explicitly declare the function as external, and	specify	the type of
       the return value.

     * When calling the	function, pass the address of the arguments by
       using the address operator (&) for each argument	or by using a
       pointer to the argument.	 Array names are considered to be
       addresses; the address operator is not needed when using	them.

     * The value returned by the function is the value,	rather than the
       address of the value.

     * Specify the fortran keyword.  The fortran keyword is an extension to
       the C language and is useful when a C program calls a function
       following the Cray Fortran calling sequence.  Specifying	the fortran
       keyword causes the C compiler to	verify that the	arguments used in
       each call to the	function are pass-by-address.

     Calling from Cray Assembly	Language (CAL)
     External references from Cray Assembly Language (CAL) are casesensitive,
	so you must use	the exact name for functions as	specified
     on	the man	pages.	Two standard calling methods are supported by Cray
     for math functions:  call-by-register and call-by-address.	 For more
     information on the	details	of calling sequences, see the documentation
     for the CALL macro	in UNICOS Macros and Opdefs Reference Manual,
     publication SR-2403.

     It	is strongly recommended	that function linkage be done using the
     CALL macros.  Direct user calls to	functions by using the return-jump
     instruction should	be avoided.

     Scalar functions return the result	in registers S1	(and S2	if needed);
     results for complex double	precision are returned in S1 through S4.
     Vector functions return their result in registers V1 (and V2 if
     needed); complex double precision are returned in V1 through V4.  The
     number of elements	computed for vector functions is determined by the
     contents of the vector-length register (VL) upon entry.

     For example, to call the SQRT routine using the call-by-address
     sequence, let arg1	be the address of the argument.

     CAL usage:

     EXT     SQRT	   Declare the name to be an external
     CALL    SQRT,(arg1)   Call	the function
     (result)S1		   The result is returned in register S1 and
			   stored at the address result

     Note that the name	SQRT must be uppercase.

     To	call the SQRT routine by using the call-by-register convention:

     (S1) Value	of the argument

     CAL usage:

     EXT     SQRT%	   Declare the name to be an external
     CALLV   SQRT%	   Call	the function
     (result)S1		   The result is returned in register S1 and
			   stored at the address result

     To	call the routine for vector SQRT using the call-by-register
     convention, let V1	be the value of	the vector argument and	VL be the
     vector length (between 1 and 64 values will be returned).

     CAL usage:

     EXT     %SQRT%	   Declare the name to be an
			   external
     CALLV   %SQRT%	   Call	the function

     The result	is returned in register	V1.  The vector-length register	VL
     is	unchanged.

     Naming conventions    [Toc]    [Back]
     Most of the UNICOS	math library functions adhere to the following
     naming convention:

     NAME	 Entry for call-by-address

     NAME%	 Entry for scalar call-by-register

     %NAME%	 Entry for vector call-by-register

     Note that assembly	language does not support generic function names or
     automatic data type conversion.  For example, there is no math library
     LOG function for the logarithm routine.  You must specify either ALOG,
     DLOG, or CLOG for real, double-precision, or complex logarithm
     respectively, and the argument must be of the correct type	(real,
     double-precision, or complex).

     Register conventions    [Toc]    [Back]
     The documentation for some	of the widely used user-callable functions
     contains the register usage convention for	the function.  By default
     all the Cray Fortran compilers use	the call-by-register convention	for
     math library functions (it	is the fastest calling sequence), and will
     put the % prefix or suffix	on the function	name where needed.  If a
     math library function is declared EXTERNAL	or INTRINSIC, the compilers
     will generate code	for the	call-by-address	method.

SEE ALSO    [Toc]    [Back]

      
      
     INTRO_INTRIN(3I)

     Cray Standard C Reference Manual, publication SR-2074

     CF90 Commands and Directives Reference Manual, publication	SR-3901

     Fortran Language Reference	Manual,	Volume 1, publication SR-3902

     Fortran Language Reference	Manual,	Volume 2, publication SR-3903

     Fortran Language Reference	Manual,	Volume 3, publication SR-3905

     Intrinsic Procedures Reference Manual, publication	SR-2138, for the
INTRO_LIBM(3M)					       Last changed: 1-6-98

NAME    [Toc]    [Back]

     INTRO_LIBM	- Introduction to math library routines

IMPLEMENTATION    [Toc]    [Back]

     See individual man	pages for implementation details

DESCRIPTION    [Toc]    [Back]

     The math routines are listed with the other intrinsic procedures in
     alphabetical order, usually by generic function name.  Generic
     function names are	function calls that cause the compiler to compile
     automatically the appropriate data	type version of	a routine, based on
     the type of the input data.  For example, a call to the generic
     function LOG with a type of input data of complex compiles	as CLOG.

     In	general, on UNICOS systems, real functions have	no prefix; integer
     functions are prefixed with I, double precision functions are prefixed
     with D, complex functions are prefixed with C, and	double precision
     complex functions are prefixed with CD (for example, ABS, IABS, DABS,
     CABS, and CDABS).	Functions with a type different	from their
     arguments are noted.  Real	functions are usually the same as the
     generic function name.

     On	UNICOS/mk systems, two precisions are provided for real	data:
     32-bit or half precision real and 64-bit or single	precision real.
     The specific names	for single precision real data provide a link to
     the 64-bit	intrinsic functions.  To ensure	a link to the 32-bit
     intrinsic functions, use the generic function names with 32-bit real
     arguments.	 For example, use LOG for any of the types of real data.
     Use ALOG for single precision real	arguments.  Extended precision
     routines of math library routines are not provided	on UNICOS/mk
     systems and only some routines have vector	versions.

     UNICOS/mk systems have an additional library named	libmfastv.  It
     contains versions of selected math	intrinsics which can be	faster than
     those in the default Math library.	 These alternate versions are not
     as	accurate as the	default	library, and in	some cases there are
     argument restrictions, such as not	allowing the use of the	-O option
     on	the compiler command line, or not allowing the use of infinities.
     These alternate versions are generally faster for loops with 50 or
     more iterations.  To use libmfastv, use the -l mfastv option on the
     compiler's	command	line to	load the library file.	You must compile
     your code with the	-O3 or -Ovector3 option	for the	Fortran	compiler or
     use -h vector3 with the C compiler.

     For information on	inlining and vectorization of the Fortran 90
     intrinsic procedures, see INTRO_INTRIN(3I).

     The documentation for some	of the most often used math library
     routines also contains information	on Cray	Assembly Language (CAL)
     register usage.

     For more information on calling library routines from various
     programming languages, see	the subsection on this man page	titled
     "Calling Functions	from Fortran, C, or CAL."

     The math routines can be divided into the following general
     categories:

     * General arithmetic functions - In the routine descriptions, complex
       arguments are represented as

       x = x  +	ix .
	    r	  i
       The real	part of	the complex number is x	; x  is	the imaginary part.
					       r   i
       Arguments and results are of the	same type unless otherwise
       indicated.

       Base values raised to a power and 64-bit	integer	division are called
       implicitly from Fortran.

     * Exponential and logarithmic functions - The Cray	Resesarch
       exponential and logarithmic functions are similar to the	ANSI
       standard	functions.  Each function has variations for real, double
       precision, and complex values except the	common logarithm function,
       which addresses only real and double-precision values.  Complex
       arguments are represented as

       x = x  +	ix .
	    r	  i
       x  is the real part of the complex number; x  is	the imaginary part.
	r					   i
     * Trigonometric functions - The trigonometric functions are based on
       the ANSI	standard for Fortran, except for the cotangent function	and
       the COSS	(cosine	and sine) function, which are Cray Research
       extensions.

     * Type conversion functions - Type	conversion functions change the
       type of an argument.  In	the routine description, complex arguments
       are represented as

       x = x  +	ix .
	    r	  i
       x  is the real part of the complex number; x  is	the imaginary part.
	r					   i
       Arguments and results are of the	same type, unless indicated
       otherwise.

     * Special functions - The special functions provide Fortran access	to
       a number	of Standard C functions	on UNICOS/mk and UNICOS	systems.

     * Extended-precision routines - The extended-precision routines
       perform double- and triple-precision arithmetic on UNICOS systems.

     * Boolean functions - The Boolean functions perform logical operations
       and bit manipulations.  On UNICOS systems, the scalar subprograms
       are external versions of	Fortran	inline functions.  They	are all
       called by address; results are returned in register S1.	All Boolean
       functions are extensions.  These	functions cannot be passed as
       arguments with CF90 on any system.

   Calling Functions from Fortran, C, or CAL
     Because of	differences in the calling sequences for these languages,
     and other language	differences, important variations must be noted	in
     what functions can	be called and how they are called.

     Calling from Fortran programs    [Toc]    [Back]
     Some function names are in	uppercase, and some are	in lowercase.  The
     Fortran language is case-insensitive; the Cray Research Fortran
     compilers map all code in uppercase.  This	means that functions with
     lowercase names cannot be called from Fortran programs.

     Calling from C programs    [Toc]    [Back]
     The C language is case-sensitive.	You must use the exact case
     specified in the documentation when coding	references to a	function.

     All functions documented in this manual are callable from C programs.
     The following rules can be	used:

     * Because the function is not declared in a Standard C header,
       explicitly declare the function as external, and	specify	the type of
       the return value.

     * When calling the	function, pass the address of the arguments by
       using the address operator (&) for each argument	or by using a
       pointer to the argument.	 Array names are considered to be
       addresses; the address operator is not needed when using	them.

     * The value returned by the function is the value,	rather than the
       address of the value.

     * Specify the fortran keyword.  The fortran keyword is an extension to
       the C language and is useful when a C program calls a function
       following the Cray Fortran calling sequence.  Specifying	the fortran
       keyword causes the C compiler to	verify that the	arguments used in
       each call to the	function are pass-by-address.

     Calling from Cray Assembly	Language (CAL)
     External references from Cray Assembly Language (CAL) are casesensitive,
	so you must use	the exact name for functions as	specified
     on	the man	pages.	Two standard calling methods are supported by Cray
     for math functions:  call-by-register and call-by-address.	 For more
     information on the	details	of calling sequences, see the documentation
     for the CALL macro	in UNICOS Macros and Opdefs Reference Manual,
     publication SR-2403.

     It	is strongly recommended	that function linkage be done using the
     CALL macros.  Direct user calls to	functions by using the return-jump
     instruction should	be avoided.

     Scalar functions return the result	in registers S1	(and S2	if needed);
     results for complex double	precision are returned in S1 through S4.
     Vector functions return their result in registers V1 (and V2 if
     needed); complex double precision are returned in V1 through V4.  The
     number of elements	computed for vector functions is determined by the
     contents of the vector-length register (VL) upon entry.

     For example, to call the SQRT routine using the call-by-address
     sequence, let arg1	be the address of the argument.

     CAL usage:

     EXT     SQRT	   Declare the name to be an external
     CALL    SQRT,(arg1)   Call	the function
     (result)S1		   The result is returned in register S1 and
			   stored at the address result

     Note that the name	SQRT must be uppercase.

     To	call the SQRT routine by using the call-by-register convention:

     (S1) Value	of the argument

     CAL usage:

     EXT     SQRT%	   Declare the name to be an external
     CALLV   SQRT%	   Call	the function
     (result)S1		   The result is returned in register S1 and
			   stored at the address result

     To	call the routine for vector SQRT using the call-by-register
     convention, let V1	be the value of	the vector argument and	VL be the
     vector length (between 1 and 64 values will be returned).

     CAL usage:

     EXT     %SQRT%	   Declare the name to be an
			   external
     CALLV   %SQRT%	   Call	the function

     The result	is returned in register	V1.  The vector-length register	VL
     is	unchanged.

     Naming conventions    [Toc]    [Back]
     Most of the UNICOS	math library functions adhere to the following
     naming convention:

     NAME	 Entry for call-by-address

     NAME%	 Entry for scalar call-by-register

     %NAME%	 Entry for vector call-by-register

     Note that assembly	language does not support generic function names or
     automatic data type conversion.  For example, there is no math library
     LOG function for the logarithm routine.  You must specify either ALOG,
     DLOG, or CLOG for real, double-precision, or complex logarithm
     respectively, and the argument must be of the correct type	(real,
     double-precision, or complex).

     Register conventions    [Toc]    [Back]
     The documentation for some	of the widely used user-callable functions
     contains the register usage convention for	the function.  By default
     all the Cray Fortran compilers use	the call-by-register convention	for
     math library functions (it	is the fastest calling sequence), and will
     put the % prefix or suffix	on the function	name where needed.  If a
     math library function is declared EXTERNAL	or INTRINSIC, the compilers
     will generate code	for the	call-by-address	method.

SEE ALSO    [Toc]    [Back]

      
      
     INTRO_INTRIN(3I)

     Cray Standard C Reference Manual, publication SR-2074

     CF90 Commands and Directives Reference Manual, publication	SR-3901

     Fortran Language Reference	Manual,	Volume 1, publication SR-3902

     Fortran Language Reference	Manual,	Volume 2, publication SR-3903

     Fortran Language Reference	Manual,	Volume 3, publication SR-3905

     Intrinsic Procedures Reference Manual, publication	SR-2138, for the
[ Back ]
 Similar pages
Name OS Title
cplxops IRIX operators for the C++ complex math library
cartpol IRIX functions for the C++ Complex Math Library
cplxerr IRIX error-handling function for the C++ Complex Math Library
math HP-UX math functions, constants, and types
crtmathfnc IRIX Define a new math function for expressions
Math::BigFloat IRIX Arbitrary length float math package
Math::BigInt IRIX Arbitrary size integer math package
BLT Linux Introduction to the BLT library ____________________________________________________________________...
intro Tru64 Introduction to library functions
intro Linux Introduction to library functions
Copyright © 2004-2005 DeniX Solutions SRL
newsletter delivery service