and editing. All contributions and corrections are strongly encouraged.
@menu
-* Introduction: Introduction
-* @code{ABORT}: ABORT, Abort the program
-* @code{ABS}: ABS, Absolute value
-* @code{ACHAR}: ACHAR, Character in @acronym{ASCII} collating sequence
-* @code{ACOS}: ACOS, Arccosine function
-* @code{ADJUSTL}: ADJUSTL, Left adjust a string
-* @code{ADJUSTR}: ADJUSTR, Right adjust a string
-* @code{AIMAG}: AIMAG, Imaginary part of complex number
-* @code{AINT}: AINT, Truncate to a whole number
-* @code{ALL}: ALL, Determine if all values are true
-* @code{ALLOCATED}: ALLOCATED, Status of allocatable entity
-* @code{ANINT}: ANINT, Nearest whole number
-* @code{ANY}: ANY, Determine if any values are true
-* @code{ASIN}: ASIN, Arcsine function
-* @code{ASSOCIATED}: ASSOCIATED, Status of a pointer or pointer/target pair
-* @code{ATAN}: ATAN, Arctangent function
-* @code{ATAN2}: ATAN2, Arctangent function
-* @code{BESJ0}: BESJ0, Bessel function of the first kind of order 0
-* @code{BESJ1}: BESJ1, Bessel function of the first kind of order 1
-* @code{BESJN}: BESJN, Bessel function of the first kind
-* @code{BESY0}: BESY0, Bessel function of the second kind of order 0
-* @code{BESY1}: BESY1, Bessel function of the second kind of order 1
-* @code{BESYN}: BESYN, Bessel function of the second kind
-* @code{COS}: COS, Cosine function
-* @code{COSH}: COSH, Hyperbolic cosine function
-* @code{ERF}: ERF, Error function
-* @code{ERFC}: ERFC, Complementary error function
-* @code{EXP}: EXP, Cosine function
-* @code{LOG}: LOG, Logarithm function
-* @code{LOG10}: LOG10, Base 10 logarithm function
-* @code{SQRT}: SQRT, Square-root function
-* @code{SIN}: SIN, Sine function
-* @code{SINH}: SINH, Hyperbolic sine function
-* @code{TAN}: TAN, Tangent function
-* @code{TANH}: TANH, Hyperbolic tangent function
+* Introduction: Introduction
+* @code{ABORT}: ABORT, Abort the program
+* @code{ABS}: ABS, Absolute value
+* @code{ACHAR}: ACHAR, Character in @acronym{ASCII} collating sequence
+* @code{ACOS}: ACOS, Arccosine function
+* @code{ADJUSTL}: ADJUSTL, Left adjust a string
+* @code{ADJUSTR}: ADJUSTR, Right adjust a string
+* @code{AIMAG}: AIMAG, Imaginary part of complex number
+* @code{AINT}: AINT, Truncate to a whole number
+* @code{ALL}: ALL, Determine if all values are true
+* @code{ALLOCATED}: ALLOCATED, Status of allocatable entity
+* @code{ANINT}: ANINT, Nearest whole number
+* @code{ANY}: ANY, Determine if any values are true
+* @code{ASIN}: ASIN, Arcsine function
+* @code{ASSOCIATED}: ASSOCIATED, Status of a pointer or pointer/target pair
+* @code{ATAN}: ATAN, Arctangent function
+* @code{ATAN2}: ATAN2, Arctangent function
+* @code{BESJ0}: BESJ0, Bessel function of the first kind of order 0
+* @code{BESJ1}: BESJ1, Bessel function of the first kind of order 1
+* @code{BESJN}: BESJN, Bessel function of the first kind
+* @code{BESY0}: BESY0, Bessel function of the second kind of order 0
+* @code{BESY1}: BESY1, Bessel function of the second kind of order 1
+* @code{BESYN}: BESYN, Bessel function of the second kind
+* @code{BIT_SIZE}: BIT_SIZE, Bit size inquiry function
+* @code{BTEST}: BTEST, Bit test function
+* @code{CEILING}: CEILING, Integer ceiling function
+* @code{CHAR}: CHAR, Character conversion function
+* @code{CMPLX}: CMPLX, Complex conversion function
+* @code{COS}: COS, Cosine function
+* @code{COSH}: COSH, Hyperbolic cosine function
+* @code{ERF}: ERF, Error function
+* @code{ERFC}: ERFC, Complementary error function
+* @code{EXP}: EXP, Cosine function
+* @code{LOG}: LOG, Logarithm function
+* @code{LOG10}: LOG10, Base 10 logarithm function
+* @code{SQRT}: SQRT, Square-root function
+* @code{SIN}: SIN, Sine function
+* @code{SINH}: SINH, Hyperbolic sine function
+* @code{TAN}: TAN, Tangent function
+* @code{TANH}: TANH, Hyperbolic tangent function
@end menu
@node Introduction
@item @emph{Option}:
gnu
-@item @emph{Type}:
+@item @emph{Class}:
non-elemental subroutine
@item @emph{Syntax}:
@item @emph{Option}:
f95, gnu
-@item @emph{Type}:
+@item @emph{Class}:
elemental function
@item @emph{Syntax}:
@item @emph{Option}:
f95, gnu
-@item @emph{Type}:
+@item @emph{Class}:
elemental function
@item @emph{Syntax}:
@item @emph{Arguments}:
@multitable @columnfractions .15 .80
-@item @var{I} @tab The type shall be an @code{INTEGER(*)}.
+@item @var{I} @tab The type shall be @code{INTEGER(*)}.
@end multitable
@item @emph{Return value}:
@item @emph{Option}:
f95, gnu
-@item @emph{Type}:
+@item @emph{Class}:
elemental function
@item @emph{Syntax}:
@item @emph{Arguments}:
@multitable @columnfractions .15 .80
-@item @var{X} @tab The type shall be an @code{REAL(*)}, and a magnitude that is
+@item @var{X} @tab The type shall be @code{REAL(*)}, and a magnitude that is
less than one.
@end multitable
@item @emph{Option}:
f95, gnu
-@item @emph{Type}:
+@item @emph{Class}:
elemental function
@item @emph{Syntax}:
@end table
+
@node ADJUSTR
@section @code{ADJUSTR} --- Right adjust a string
@findex @code{ADJUSTR} intrinsic
@item @emph{Option}:
f95, gnu
-@item @emph{Type}:
+@item @emph{Class}:
elemental function
@item @emph{Syntax}:
@end table
+
@node AIMAG
@section @code{AIMAG} --- Imaginary part of complex number
@findex @code{AIMAG} intrinsic
@item @emph{Option}:
f95, gnu
-@item @emph{Type}:
+@item @emph{Class}:
elemental function
@item @emph{Syntax}:
@end table
+
@node AINT
@section @code{AINT} --- Imaginary part of complex number
@findex @code{AINT} intrinsic
@item @emph{Option}:
f95, gnu
-@item @emph{Type}:
+@item @emph{Class}:
elemental function
@item @emph{Syntax}:
@end table
+
@node ALL
@section @code{ALL} --- All values in @var{MASK} along @var{DIM} are true
@findex @code{ALL} intrinsic
@item @emph{Option}:
f95, gnu
-@item @emph{Type}:
+@item @emph{Class}:
transformational function
@item @emph{Syntax}:
@item @emph{Option}:
f95, gnu
-@item @emph{Type}:
+@item @emph{Class}:
inquiry function
@item @emph{Syntax}:
@end table
+
@node ANINT
@section @code{ANINT} --- Imaginary part of complex number
@findex @code{ANINT} intrinsic
@item @emph{Option}:
f95, gnu
-@item @emph{Type}:
+@item @emph{Class}:
elemental function
@item @emph{Syntax}:
@end table
+
@node ANY
@section @code{ANY} --- Any value in @var{MASK} along @var{DIM} is true
@findex @code{ANY} intrinsic
@item @emph{Option}:
f95, gnu
-@item @emph{Type}:
+@item @emph{Class}:
transformational function
@item @emph{Syntax}:
@end table
+
@node ASIN
@section @code{ASIN} --- Arcsine function
@findex @code{ASIN} intrinsic
@item @emph{Option}:
f95, gnu
-@item @emph{Type}:
+@item @emph{Class}:
elemental function
@item @emph{Syntax}:
@item @emph{Arguments}:
@multitable @columnfractions .15 .80
-@item @var{X} @tab The type shall be an @code{REAL(*)}, and a magnitude that is
+@item @var{X} @tab The type shall be @code{REAL(*)}, and a magnitude that is
less than one.
@end multitable
@end table
+
@node ASSOCIATED
@section @code{ASSOCIATED} --- Status of a pointer or pointer/target pair
@findex @code{ASSOCIATED} intrinsic
@item @emph{Option}:
f95, gnu
-@item @emph{Type}:
+@item @emph{Class}:
inquiry function
@item @emph{Syntax}:
@end table
+
@node ATAN
@section @code{ATAN} --- Arctangent function
@findex @code{ATAN} intrinsic
@item @emph{Option}:
f95, gnu
-@item @emph{Type}:
+@item @emph{Class}:
elemental function
@item @emph{Syntax}:
@item @emph{Arguments}:
@multitable @columnfractions .15 .80
-@item @var{X} @tab The type shall be an @code{REAL(*)}.
+@item @var{X} @tab The type shall be @code{REAL(*)}.
@end multitable
@item @emph{Return value}:
@end table
+
@node ATAN2
@section @code{ATAN2} --- Arctangent function
@findex @code{ATAN2} intrinsic
@item @emph{Option}:
f95, gnu
-@item @emph{Type}:
+@item @emph{Class}:
elemental function
@item @emph{Syntax}:
@end table
+
@node BESJ0
@section @code{BESJ0} --- Bessel function of the first kind of order 0
@findex @code{BESJ0} intrinsic
@item @emph{Option}:
gnu
-@item @emph{Type}:
+@item @emph{Class}:
elemental function
@item @emph{Syntax}:
@item @emph{Arguments}:
@multitable @columnfractions .15 .80
-@item @var{X} @tab The type shall be an @code{REAL(*)}, and it shall be scalar.
+@item @var{X} @tab The type shall be @code{REAL(*)}, and it shall be scalar.
@end multitable
@item @emph{Return value}:
@item @emph{Option}:
gnu
-@item @emph{Type}:
+@item @emph{Class}:
elemental function
@item @emph{Syntax}:
@item @emph{Arguments}:
@multitable @columnfractions .15 .80
-@item @var{X} @tab The type shall be an @code{REAL(*)}, and it shall be scalar.
+@item @var{X} @tab The type shall be @code{REAL(*)}, and it shall be scalar.
@end multitable
@item @emph{Return value}:
@item @emph{Option}:
gnu
-@item @emph{Type}:
+@item @emph{Class}:
elemental function
@item @emph{Syntax}:
@item @emph{Arguments}:
@multitable @columnfractions .15 .80
-@item @var{N} @tab The type shall be an @code{INTEGER(*)}, and it shall be scalar.
-@item @var{X} @tab The type shall be an @code{REAL(*)}, and it shall be scalar.
+@item @var{N} @tab The type shall be @code{INTEGER(*)}, and it shall be scalar.
+@item @var{X} @tab The type shall be @code{REAL(*)}, and it shall be scalar.
@end multitable
@item @emph{Return value}:
@item @emph{Option}:
gnu
-@item @emph{Type}:
+@item @emph{Class}:
elemental function
@item @emph{Syntax}:
@item @emph{Arguments}:
@multitable @columnfractions .15 .80
-@item @var{X} @tab The type shall be an @code{REAL(*)}, and it shall be scalar.
+@item @var{X} @tab The type shall be @code{REAL(*)}, and it shall be scalar.
@end multitable
@item @emph{Return value}:
@item @emph{Option}:
gnu
-@item @emph{Type}:
+@item @emph{Class}:
elemental function
@item @emph{Syntax}:
@item @emph{Arguments}:
@multitable @columnfractions .15 .80
-@item @var{X} @tab The type shall be an @code{REAL(*)}, and it shall be scalar.
+@item @var{X} @tab The type shall be @code{REAL(*)}, and it shall be scalar.
@end multitable
@item @emph{Return value}:
@item @emph{Option}:
gnu
-@item @emph{Type}:
+@item @emph{Class}:
elemental function
@item @emph{Syntax}:
@item @emph{Arguments}:
@multitable @columnfractions .15 .80
-@item @var{N} @tab The type shall be an @code{INTEGER(*)}, and it shall be scalar.
-@item @var{X} @tab The type shall be an @code{REAL(*)}, and it shall be scalar.
+@item @var{N} @tab The type shall be @code{INTEGER(*)}, and it shall be scalar.
+@item @var{X} @tab The type shall be @code{REAL(*)}, and it shall be scalar.
@end multitable
@item @emph{Return value}:
@end table
+
+@node BIT_SIZE
+@section @code{BIT_SIZE} --- Bit size inquiry function
+@findex @code{BIT_SIZE} intrinsic
+@cindex bit_size
+
+@table @asis
+@item @emph{Description}:
+@code{BIT_SIZE(I)} returns the number of bits (integer precision plus sign bit) represented by the type of @var{I}.
+
+@item @emph{Option}:
+f95, gnu
+
+@item @emph{Class}:
+elemental function
+
+@item @emph{Syntax}:
+@code{I = BIT_SIZE(I)}
+
+@item @emph{Arguments}:
+@multitable @columnfractions .15 .80
+@item @var{I} @tab The type shall be @code{INTEGER(*)}.
+@end multitable
+
+@item @emph{Return value}:
+The return value is of type @code{INTEGER(*)}
+
+@item @emph{Example}:
+@smallexample
+program test_bit_size
+ integer :: i = 123
+ integer :: size
+ size = bit_size(i)
+ print *, size
+end program test_bit_size
+@end smallexample
+@end table
+
+
+
+@node BTEST
+@section @code{BTEST} --- Bit test function
+@findex @code{BTEST} intrinsic
+@cindex BTEST
+
+@table @asis
+@item @emph{Description}:
+@code{BTEST(I,POS)} returns logical .TRUE. if the bit at @var{POS} in @var{I} is set.
+
+@item @emph{Option}:
+f95, gnu
+
+@item @emph{Class}:
+elemental function
+
+@item @emph{Syntax}:
+@code{I = BTEST(I,POS)}
+
+@item @emph{Arguments}:
+@multitable @columnfractions .15 .80
+@item @var{I} @tab The type shall be @code{INTEGER(*)}.
+@item @var{POS} @tab The type shall be @code{INTEGER(*)}.
+@end multitable
+
+@item @emph{Return value}:
+The return value is of type @code{LOGICAL}
+
+@item @emph{Example}:
+@smallexample
+program test_btest
+ integer :: i = 32768 + 1024 + 64
+ integer :: pos
+ logical :: bool
+ do pos=0,16
+ bool = btest(i, pos)
+ print *, pos, bool
+ end do
+end program test_btest
+@end smallexample
+@end table
+
+
+
+@node CEILING
+@section @code{CEILING} --- Integer ceiling function
+@findex @code{CEILING} intrinsic
+@cindex CEILING
+
+@table @asis
+@item @emph{Description}:
+@code{CEILING(X,[KIND])} returns the least integer greater than or equal to @var{X}.
+
+@item @emph{Option}:
+f95, gnu
+
+@item @emph{Class}:
+elemental function
+
+@item @emph{Syntax}:
+@code{X = CEILING(X)}
+
+@item @emph{Arguments}:
+@multitable @columnfractions .15 .80
+@item @var{X} @tab The type shall be @code{REAL(*)}.
+@item @var{KIND} @tab Optional scaler integer initialization expression.
+@end multitable
+
+@item @emph{Return value}:
+The return value is of type @code{INTEGER(KIND)}
+
+@item @emph{Example}:
+@smallexample
+program test_ceiling
+ real :: x = 63.29
+ real :: y = -63.59
+ print *, ceiling(x) ! returns 64
+ print *, ceiling(y) ! returns -63
+end program test_ceiling
+@end smallexample
+@end table
+
+
+
+@node CHAR
+@section @code{CHAR} --- Character conversion function
+@findex @code{CHAR} intrinsic
+@cindex CHAR
+
+@table @asis
+@item @emph{Description}:
+@code{CHAR(I,[KIND])} returns the character represented by the integer @var{I}.
+
+@item @emph{Option}:
+f95, gnu
+
+@item @emph{Class}:
+elemental function
+
+@item @emph{Syntax}:
+@code{C = CHAR(I)}
+
+@item @emph{Arguments}:
+@multitable @columnfractions .15 .80
+@item @var{I} @tab The type shall be @code{INTEGER(*)}.
+@item @var{KIND} @tab Optional scaler integer initialization expression.
+@end multitable
+
+@item @emph{Return value}:
+The return value is of type @code{CHARACTER(1)}
+
+@item @emph{Example}:
+@smallexample
+program test_char
+ integer :: i = 74
+ character(1) :: c
+ c = char(i)
+ print *, i, c ! returns 'J'
+end program test_char
+@end smallexample
+@end table
+
+
+
+@node CMPLX
+@section @code{CMPLX} --- Complex conversion function
+@findex @code{CMPLX} intrinsic
+@cindex CMPLX
+
+@table @asis
+@item @emph{Description}:
+@code{CMPLX(X,[Y,KIND])} returns a complex number where @var{X} is converted to the real component. If @var{Y} is present it is converted to the imaginary component. If @var{Y} is not present then the imaginary component is set to
+0.0. If @var{X} is complex then @var{Y} must not be present.
+
+@item @emph{Option}:
+f95, gnu
+
+@item @emph{Class}:
+elemental function
+
+@item @emph{Syntax}:
+@code{C = CMPLX(X)}
+@code{C = CMPLX(X,Y)}
+@code{C = CMPLX(X,Y,KIND)}
+
+@item @emph{Arguments}:
+@multitable @columnfractions .15 .80
+@item @var{X} @tab The type may be @code{INTEGER(*)} or @code{REAL(*)} or @code{COMPLEX(*)}.
+@item @var{Y} @tab Optional, allowed if @var{X} is not @code{COMPLEX(*)}. May be @code{INTEGER(*)} or @code{REAL(*)}.
+@item @var{KIND} @tab Optional scaler integer initialization expression.
+@end multitable
+
+@item @emph{Return value}:
+The return value is of type @code{COMPLEX(*)}
+
+@item @emph{Example}:
+@smallexample
+program test_cmplx
+ integer :: i = 42
+ real :: x = 3.14
+ complex :: z
+ z = cmplx(i, x)
+ print *, z, cmplx(x)
+end program test_cmplx
+@end smallexample
+@end table
+
+
+
@node COS
@section @code{COS} --- Cosine function
@findex @code{COS} intrinsic
@item @emph{Option}:
f95, gnu
-@item @emph{Type}:
+@item @emph{Class}:
elemental function
@item @emph{Syntax}:
@item @emph{Arguments}:
@multitable @columnfractions .15 .80
-@item @var{X} @tab The type shall be an @code{REAL(*)} or
+@item @var{X} @tab The type shall be @code{REAL(*)} or
@code{COMPLEX(*)}.
@end multitable
@end table
+
@node COSH
@section @code{COSH} --- Hyperbolic cosine function
@findex @code{COSH} intrinsic
@item @emph{Option}:
f95, gnu
-@item @emph{Type}:
+@item @emph{Class}:
elemental function
@item @emph{Syntax}:
@item @emph{Arguments}:
@multitable @columnfractions .15 .80
-@item @var{X} @tab The type shall be an @code{REAL(*)}.
+@item @var{X} @tab The type shall be @code{REAL(*)}.
@end multitable
@item @emph{Return value}:
@end table
+
@node ERF
@section @code{ERF} --- Error function
@findex @code{ERF} intrinsic
@item @emph{Option}:
gnu
-@item @emph{Type}:
+@item @emph{Class}:
elemental function
@item @emph{Syntax}:
@item @emph{Arguments}:
@multitable @columnfractions .15 .80
-@item @var{X} @tab The type shall be an @code{REAL(*)}, and it shall be scalar.
+@item @var{X} @tab The type shall be @code{REAL(*)}, and it shall be scalar.
@end multitable
@item @emph{Return value}:
@item @emph{Option}:
gnu
-@item @emph{Type}:
+@item @emph{Class}:
elemental function
@item @emph{Syntax}:
@item @emph{Arguments}:
@multitable @columnfractions .15 .80
-@item @var{X} @tab The type shall be an @code{REAL(*)}, and it shall be scalar.
+@item @var{X} @tab The type shall be @code{REAL(*)}, and it shall be scalar.
@end multitable
@item @emph{Return value}:
@item @emph{Option}:
f95, gnu
-@item @emph{Type}:
+@item @emph{Class}:
elemental function
@item @emph{Syntax}:
@item @emph{Arguments}:
@multitable @columnfractions .15 .80
-@item @var{X} @tab The type shall be an @code{REAL(*)} or
+@item @var{X} @tab The type shall be @code{REAL(*)} or
@code{COMPLEX(*)}.
@end multitable
@item @emph{Return value}:
-The return value has same type and kind than @var{X}.
+The return value has same type and kind as @var{X}.
@item @emph{Example}:
@smallexample
@end table
+
@node LOG
@section @code{LOG} --- Logarithm function
@findex @code{LOG} intrinsic
@item @emph{Option}:
f95, gnu
-@item @emph{Type}:
+@item @emph{Class}:
elemental function
@item @emph{Syntax}:
@item @emph{Arguments}:
@multitable @columnfractions .15 .80
-@item @var{X} @tab The type shall be an @code{REAL(*)} or
+@item @var{X} @tab The type shall be @code{REAL(*)} or
@code{COMPLEX(*)}.
@end multitable
@item @emph{Option}:
f95, gnu
-@item @emph{Type}:
+@item @emph{Class}:
elemental function
@item @emph{Syntax}:
@item @emph{Arguments}:
@multitable @columnfractions .15 .80
-@item @var{X} @tab The type shall be an @code{REAL(*)} or
+@item @var{X} @tab The type shall be @code{REAL(*)} or
@code{COMPLEX(*)}.
@end multitable
@item @emph{Option}:
f95, gnu
-@item @emph{Type}:
+@item @emph{Class}:
elemental function
@item @emph{Syntax}:
@item @emph{Arguments}:
@multitable @columnfractions .15 .80
-@item @var{X} @tab The type shall be an @code{REAL(*)} or
+@item @var{X} @tab The type shall be @code{REAL(*)} or
@code{COMPLEX(*)}.
@end multitable
-
@node SINH
@section @code{SINH} --- Hyperbolic sine function
@findex @code{SINH} intrinsic
@item @emph{Option}:
f95, gnu
-@item @emph{Type}:
+@item @emph{Class}:
elemental function
@item @emph{Syntax}:
@item @emph{Arguments}:
@multitable @columnfractions .15 .80
-@item @var{X} @tab The type shall be an @code{REAL(*)}.
+@item @var{X} @tab The type shall be @code{REAL(*)}.
@end multitable
@item @emph{Return value}:
@item @emph{Option}:
f95, gnu
-@item @emph{Type}:
+@item @emph{Class}:
elemental function
@item @emph{Syntax}:
@item @emph{Arguments}:
@multitable @columnfractions .15 .80
-@item @var{X} @tab The type shall be an @code{REAL(*)} or
+@item @var{X} @tab The type shall be @code{REAL(*)} or
@code{COMPLEX(*)}.
@end multitable
@item @emph{Option}:
f95, gnu
-@item @emph{Type}:
+@item @emph{Class}:
elemental function
@item @emph{Syntax}:
@item @emph{Arguments}:
@multitable @columnfractions .15 .80
-@item @var{X} @tab The type shall be an @code{REAL(*)}.
+@item @var{X} @tab The type shall be @code{REAL(*)}.
@end multitable
@item @emph{Return value}:
@end table
+
@node TANH
@section @code{TANH} --- Hyperbolic tangent function
@findex @code{TANH} intrinsic
@item @emph{Option}:
f95, gnu
-@item @emph{Type}:
+@item @emph{Class}:
elemental function
@item @emph{Syntax}:
@item @emph{Arguments}:
@multitable @columnfractions .15 .80
-@item @var{X} @tab The type shall be an @code{REAL(*)}.
+@item @var{X} @tab The type shall be @code{REAL(*)}.
@end multitable
@item @emph{Return value}:
-
-
-@comment gen bit_size
-@comment
-@comment gen btest
-@comment
-@comment gen ceiling
-@comment
-@comment gen char
-@comment
-@comment gen cmplx
-@comment
@comment gen command_argument_count
@comment
@comment gen conjg