Home | History | Annotate | Line # | Download | only in fortran
      1      1.1  mrg @ignore
      2  1.1.1.3  mrg Copyright (C) 2005-2022 Free Software Foundation, Inc.
      3      1.1  mrg This is part of the GNU Fortran manual.   
      4      1.1  mrg For copying conditions, see the file gfortran.texi.
      5      1.1  mrg 
      6      1.1  mrg Permission is granted to copy, distribute and/or modify this document
      7      1.1  mrg under the terms of the GNU Free Documentation License, Version 1.3 or
      8      1.1  mrg any later version published by the Free Software Foundation; with the
      9      1.1  mrg Invariant Sections being ``Funding Free Software'', the Front-Cover
     10      1.1  mrg Texts being (a) (see below), and with the Back-Cover Texts being (b)
     11      1.1  mrg (see below).  A copy of the license is included in the gfdl(7) man page.
     12      1.1  mrg 
     13      1.1  mrg 
     14      1.1  mrg Some basic guidelines for editing this document:
     15      1.1  mrg 
     16      1.1  mrg   (1) The intrinsic procedures are to be listed in alphabetical order.
     17      1.1  mrg   (2) The generic name is to be used.
     18      1.1  mrg   (3) The specific names are included in the function index and in a
     19      1.1  mrg       table at the end of the node (See ABS entry).
     20      1.1  mrg   (4) Try to maintain the same style for each entry.
     21      1.1  mrg 
     22      1.1  mrg 
     23      1.1  mrg @end ignore
     24      1.1  mrg 
     25      1.1  mrg @tex
     26      1.1  mrg \gdef\acosd{\mathop{\rm acosd}\nolimits}
     27      1.1  mrg \gdef\asind{\mathop{\rm asind}\nolimits}
     28      1.1  mrg \gdef\atand{\mathop{\rm atand}\nolimits}
     29      1.1  mrg \gdef\acos{\mathop{\rm acos}\nolimits}
     30      1.1  mrg \gdef\asin{\mathop{\rm asin}\nolimits}
     31      1.1  mrg \gdef\atan{\mathop{\rm atan}\nolimits}
     32      1.1  mrg \gdef\acosh{\mathop{\rm acosh}\nolimits}
     33      1.1  mrg \gdef\asinh{\mathop{\rm asinh}\nolimits}
     34      1.1  mrg \gdef\atanh{\mathop{\rm atanh}\nolimits}
     35      1.1  mrg \gdef\cosd{\mathop{\rm cosd}\nolimits}
     36      1.1  mrg @end tex
     37      1.1  mrg 
     38      1.1  mrg 
     39      1.1  mrg @node Intrinsic Procedures
     40      1.1  mrg @chapter Intrinsic Procedures
     41      1.1  mrg @cindex intrinsic procedures
     42      1.1  mrg 
     43      1.1  mrg @menu
     44      1.1  mrg * Introduction:         Introduction to Intrinsics
     45      1.1  mrg * @code{ABORT}:         ABORT,     Abort the program     
     46      1.1  mrg * @code{ABS}:           ABS,       Absolute value     
     47      1.1  mrg * @code{ACCESS}:        ACCESS,    Checks file access modes
     48      1.1  mrg * @code{ACHAR}:         ACHAR,     Character in @acronym{ASCII} collating sequence
     49      1.1  mrg * @code{ACOS}:          ACOS,      Arccosine function
     50      1.1  mrg * @code{ACOSD}:         ACOSD,     Arccosine function, degrees
     51      1.1  mrg * @code{ACOSH}:         ACOSH,     Inverse hyperbolic cosine function
     52      1.1  mrg * @code{ADJUSTL}:       ADJUSTL,   Left adjust a string
     53      1.1  mrg * @code{ADJUSTR}:       ADJUSTR,   Right adjust a string
     54      1.1  mrg * @code{AIMAG}:         AIMAG,     Imaginary part of complex number
     55      1.1  mrg * @code{AINT}:          AINT,      Truncate to a whole number
     56      1.1  mrg * @code{ALARM}:         ALARM,     Set an alarm clock
     57      1.1  mrg * @code{ALL}:           ALL,       Determine if all values are true
     58      1.1  mrg * @code{ALLOCATED}:     ALLOCATED, Status of allocatable entity
     59      1.1  mrg * @code{AND}:           AND,       Bitwise logical AND
     60      1.1  mrg * @code{ANINT}:         ANINT,     Nearest whole number
     61      1.1  mrg * @code{ANY}:           ANY,       Determine if any values are true
     62      1.1  mrg * @code{ASIN}:          ASIN,      Arcsine function
     63      1.1  mrg * @code{ASIND}:         ASIND,     Arcsine function, degrees
     64      1.1  mrg * @code{ASINH}:         ASINH,     Inverse hyperbolic sine function
     65      1.1  mrg * @code{ASSOCIATED}:    ASSOCIATED, Status of a pointer or pointer/target pair
     66      1.1  mrg * @code{ATAN}:          ATAN,      Arctangent function
     67      1.1  mrg * @code{ATAND}:         ATAND,     Arctangent function, degrees
     68      1.1  mrg * @code{ATAN2}:         ATAN2,     Arctangent function
     69      1.1  mrg * @code{ATAN2D}:        ATAN2D,    Arctangent function, degrees
     70      1.1  mrg * @code{ATANH}:         ATANH,     Inverse hyperbolic tangent function
     71      1.1  mrg * @code{ATOMIC_ADD}:    ATOMIC_ADD, Atomic ADD operation
     72      1.1  mrg * @code{ATOMIC_AND}:    ATOMIC_AND, Atomic bitwise AND operation
     73      1.1  mrg * @code{ATOMIC_CAS}:    ATOMIC_CAS, Atomic compare and swap
     74      1.1  mrg * @code{ATOMIC_DEFINE}: ATOMIC_DEFINE, Setting a variable atomically
     75      1.1  mrg * @code{ATOMIC_FETCH_ADD}: ATOMIC_FETCH_ADD, Atomic ADD operation with prior fetch
     76      1.1  mrg * @code{ATOMIC_FETCH_AND}: ATOMIC_FETCH_AND, Atomic bitwise AND operation with prior fetch
     77      1.1  mrg * @code{ATOMIC_FETCH_OR}: ATOMIC_FETCH_OR, Atomic bitwise OR operation with prior fetch
     78      1.1  mrg * @code{ATOMIC_FETCH_XOR}: ATOMIC_FETCH_XOR, Atomic bitwise XOR operation with prior fetch
     79      1.1  mrg * @code{ATOMIC_OR}:     ATOMIC_OR, Atomic bitwise OR operation
     80      1.1  mrg * @code{ATOMIC_REF}:    ATOMIC_REF, Obtaining the value of a variable atomically
     81      1.1  mrg * @code{ATOMIC_XOR}:    ATOMIC_XOR, Atomic bitwise OR operation
     82      1.1  mrg * @code{BACKTRACE}:     BACKTRACE, Show a backtrace
     83      1.1  mrg * @code{BESSEL_J0}:     BESSEL_J0, Bessel function of the first kind of order 0
     84      1.1  mrg * @code{BESSEL_J1}:     BESSEL_J1, Bessel function of the first kind of order 1
     85      1.1  mrg * @code{BESSEL_JN}:     BESSEL_JN, Bessel function of the first kind
     86      1.1  mrg * @code{BESSEL_Y0}:     BESSEL_Y0, Bessel function of the second kind of order 0
     87      1.1  mrg * @code{BESSEL_Y1}:     BESSEL_Y1, Bessel function of the second kind of order 1
     88      1.1  mrg * @code{BESSEL_YN}:     BESSEL_YN, Bessel function of the second kind
     89      1.1  mrg * @code{BGE}:           BGE,       Bitwise greater than or equal to
     90      1.1  mrg * @code{BGT}:           BGT,       Bitwise greater than
     91      1.1  mrg * @code{BIT_SIZE}:      BIT_SIZE,  Bit size inquiry function
     92      1.1  mrg * @code{BLE}:           BLE,       Bitwise less than or equal to
     93      1.1  mrg * @code{BLT}:           BLT,       Bitwise less than
     94      1.1  mrg * @code{BTEST}:         BTEST,     Bit test function
     95      1.1  mrg * @code{C_ASSOCIATED}:  C_ASSOCIATED, Status of a C pointer
     96      1.1  mrg * @code{C_F_POINTER}:   C_F_POINTER, Convert C into Fortran pointer
     97      1.1  mrg * @code{C_F_PROCPOINTER}: C_F_PROCPOINTER, Convert C into Fortran procedure pointer
     98      1.1  mrg * @code{C_FUNLOC}:      C_FUNLOC,  Obtain the C address of a procedure
     99      1.1  mrg * @code{C_LOC}:         C_LOC,     Obtain the C address of an object
    100      1.1  mrg * @code{C_SIZEOF}:      C_SIZEOF,  Size in bytes of an expression
    101      1.1  mrg * @code{CEILING}:       CEILING,   Integer ceiling function
    102      1.1  mrg * @code{CHAR}:          CHAR,      Integer-to-character conversion function
    103      1.1  mrg * @code{CHDIR}:         CHDIR,     Change working directory
    104      1.1  mrg * @code{CHMOD}:         CHMOD,     Change access permissions of files
    105      1.1  mrg * @code{CMPLX}:         CMPLX,     Complex conversion function
    106      1.1  mrg * @code{CO_BROADCAST}:  CO_BROADCAST, Copy a value to all images the current set of images
    107      1.1  mrg * @code{CO_MAX}:        CO_MAX,    Maximal value on the current set of images
    108      1.1  mrg * @code{CO_MIN}:        CO_MIN,    Minimal value on the current set of images
    109      1.1  mrg * @code{CO_REDUCE}:     CO_REDUCE, Reduction of values on the current set of images
    110      1.1  mrg * @code{CO_SUM}:        CO_SUM,    Sum of values on the current set of images
    111      1.1  mrg * @code{COMMAND_ARGUMENT_COUNT}: COMMAND_ARGUMENT_COUNT, Get number of command line arguments
    112      1.1  mrg * @code{COMPILER_OPTIONS}: COMPILER_OPTIONS, Options passed to the compiler
    113      1.1  mrg * @code{COMPILER_VERSION}: COMPILER_VERSION, Compiler version string
    114      1.1  mrg * @code{COMPLEX}:       COMPLEX,   Complex conversion function
    115      1.1  mrg * @code{CONJG}:         CONJG,     Complex conjugate function
    116      1.1  mrg * @code{COS}:           COS,       Cosine function
    117      1.1  mrg * @code{COSD}:          COSD,      Cosine function, degrees
    118      1.1  mrg * @code{COSH}:          COSH,      Hyperbolic cosine function
    119      1.1  mrg * @code{COTAN}:         COTAN,     Cotangent function
    120      1.1  mrg * @code{COTAND}:        COTAND,    Cotangent function, degrees
    121      1.1  mrg * @code{COUNT}:         COUNT,     Count occurrences of TRUE in an array
    122      1.1  mrg * @code{CPU_TIME}:      CPU_TIME,  CPU time subroutine
    123      1.1  mrg * @code{CSHIFT}:        CSHIFT,    Circular shift elements of an array
    124      1.1  mrg * @code{CTIME}:         CTIME,     Subroutine (or function) to convert a time into a string
    125      1.1  mrg * @code{DATE_AND_TIME}: DATE_AND_TIME, Date and time subroutine
    126      1.1  mrg * @code{DBLE}:          DBLE,      Double precision conversion function
    127      1.1  mrg * @code{DCMPLX}:        DCMPLX,    Double complex conversion function
    128      1.1  mrg * @code{DIGITS}:        DIGITS,    Significant digits function
    129      1.1  mrg * @code{DIM}:           DIM,       Positive difference
    130      1.1  mrg * @code{DOT_PRODUCT}:   DOT_PRODUCT, Dot product function
    131      1.1  mrg * @code{DPROD}:         DPROD,     Double product function
    132      1.1  mrg * @code{DREAL}:         DREAL,     Double real part function
    133      1.1  mrg * @code{DSHIFTL}:       DSHIFTL,   Combined left shift
    134      1.1  mrg * @code{DSHIFTR}:       DSHIFTR,   Combined right shift
    135      1.1  mrg * @code{DTIME}:         DTIME,     Execution time subroutine (or function)
    136      1.1  mrg * @code{EOSHIFT}:       EOSHIFT,   End-off shift elements of an array
    137      1.1  mrg * @code{EPSILON}:       EPSILON,   Epsilon function
    138      1.1  mrg * @code{ERF}:           ERF,       Error function
    139      1.1  mrg * @code{ERFC}:          ERFC,      Complementary error function
    140      1.1  mrg * @code{ERFC_SCALED}:   ERFC_SCALED, Exponentially-scaled complementary error function
    141      1.1  mrg * @code{ETIME}:         ETIME,     Execution time subroutine (or function)
    142      1.1  mrg * @code{EVENT_QUERY}: EVENT_QUERY, Query whether a coarray event has occurred
    143      1.1  mrg * @code{EXECUTE_COMMAND_LINE}: EXECUTE_COMMAND_LINE, Execute a shell command
    144      1.1  mrg * @code{EXIT}:          EXIT,      Exit the program with status.
    145      1.1  mrg * @code{EXP}:           EXP,       Exponential function
    146      1.1  mrg * @code{EXPONENT}:      EXPONENT,  Exponent function
    147      1.1  mrg * @code{EXTENDS_TYPE_OF}: EXTENDS_TYPE_OF,  Query dynamic type for extension
    148      1.1  mrg * @code{FDATE}:         FDATE,     Subroutine (or function) to get the current time as a string
    149      1.1  mrg * @code{FGET}:          FGET,      Read a single character in stream mode from stdin
    150      1.1  mrg * @code{FGETC}:         FGETC,     Read a single character in stream mode
    151      1.1  mrg * @code{FINDLOC}:       FINDLOC,   Search an array for a value
    152      1.1  mrg * @code{FLOOR}:         FLOOR,     Integer floor function
    153      1.1  mrg * @code{FLUSH}:         FLUSH,     Flush I/O unit(s)
    154      1.1  mrg * @code{FNUM}:          FNUM,      File number function
    155      1.1  mrg * @code{FPUT}:          FPUT,      Write a single character in stream mode to stdout
    156      1.1  mrg * @code{FPUTC}:         FPUTC,     Write a single character in stream mode
    157      1.1  mrg * @code{FRACTION}:      FRACTION,  Fractional part of the model representation
    158      1.1  mrg * @code{FREE}:          FREE,      Memory de-allocation subroutine
    159      1.1  mrg * @code{FSEEK}:         FSEEK,     Low level file positioning subroutine
    160      1.1  mrg * @code{FSTAT}:         FSTAT,     Get file status
    161      1.1  mrg * @code{FTELL}:         FTELL,     Current stream position
    162      1.1  mrg * @code{GAMMA}:         GAMMA,     Gamma function
    163      1.1  mrg * @code{GERROR}:        GERROR,    Get last system error message
    164      1.1  mrg * @code{GETARG}:        GETARG,    Get command line arguments
    165      1.1  mrg * @code{GET_COMMAND}:   GET_COMMAND, Get the entire command line
    166      1.1  mrg * @code{GET_COMMAND_ARGUMENT}: GET_COMMAND_ARGUMENT, Get command line arguments
    167      1.1  mrg * @code{GETCWD}:        GETCWD,    Get current working directory
    168      1.1  mrg * @code{GETENV}:        GETENV,    Get an environmental variable
    169      1.1  mrg * @code{GET_ENVIRONMENT_VARIABLE}: GET_ENVIRONMENT_VARIABLE, Get an environmental variable
    170      1.1  mrg * @code{GETGID}:        GETGID,    Group ID function
    171      1.1  mrg * @code{GETLOG}:        GETLOG,    Get login name
    172      1.1  mrg * @code{GETPID}:        GETPID,    Process ID function
    173      1.1  mrg * @code{GETUID}:        GETUID,    User ID function
    174      1.1  mrg * @code{GMTIME}:        GMTIME,    Convert time to GMT info
    175      1.1  mrg * @code{HOSTNM}:        HOSTNM,    Get system host name
    176      1.1  mrg * @code{HUGE}:          HUGE,      Largest number of a kind
    177      1.1  mrg * @code{HYPOT}:         HYPOT,     Euclidean distance function
    178      1.1  mrg * @code{IACHAR}:        IACHAR,    Code in @acronym{ASCII} collating sequence
    179      1.1  mrg * @code{IALL}:          IALL,      Bitwise AND of array elements
    180      1.1  mrg * @code{IAND}:          IAND,      Bitwise logical and
    181      1.1  mrg * @code{IANY}:          IANY,      Bitwise OR of array elements
    182      1.1  mrg * @code{IARGC}:         IARGC,     Get the number of command line arguments
    183      1.1  mrg * @code{IBCLR}:         IBCLR,     Clear bit
    184      1.1  mrg * @code{IBITS}:         IBITS,     Bit extraction
    185      1.1  mrg * @code{IBSET}:         IBSET,     Set bit
    186      1.1  mrg * @code{ICHAR}:         ICHAR,     Character-to-integer conversion function
    187      1.1  mrg * @code{IDATE}:         IDATE,     Current local time (day/month/year)
    188      1.1  mrg * @code{IEOR}:          IEOR,      Bitwise logical exclusive or
    189      1.1  mrg * @code{IERRNO}:        IERRNO,    Function to get the last system error number
    190      1.1  mrg * @code{IMAGE_INDEX}:   IMAGE_INDEX, Cosubscript to image index conversion
    191      1.1  mrg * @code{INDEX}:         INDEX intrinsic, Position of a substring within a string
    192      1.1  mrg * @code{INT}:           INT,       Convert to integer type
    193      1.1  mrg * @code{INT2}:          INT2,      Convert to 16-bit integer type
    194      1.1  mrg * @code{INT8}:          INT8,      Convert to 64-bit integer type
    195      1.1  mrg * @code{IOR}:           IOR,       Bitwise logical or
    196      1.1  mrg * @code{IPARITY}:       IPARITY,   Bitwise XOR of array elements
    197      1.1  mrg * @code{IRAND}:         IRAND,     Integer pseudo-random number
    198      1.1  mrg * @code{IS_CONTIGUOUS}:  IS_CONTIGUOUS, Test whether an array is contiguous
    199      1.1  mrg * @code{IS_IOSTAT_END}:  IS_IOSTAT_END, Test for end-of-file value
    200      1.1  mrg * @code{IS_IOSTAT_EOR}:  IS_IOSTAT_EOR, Test for end-of-record value
    201      1.1  mrg * @code{ISATTY}:        ISATTY,    Whether a unit is a terminal device
    202      1.1  mrg * @code{ISHFT}:         ISHFT,     Shift bits
    203      1.1  mrg * @code{ISHFTC}:        ISHFTC,    Shift bits circularly
    204      1.1  mrg * @code{ISNAN}:         ISNAN,     Tests for a NaN
    205      1.1  mrg * @code{ITIME}:         ITIME,     Current local time (hour/minutes/seconds)
    206      1.1  mrg * @code{KILL}:          KILL,      Send a signal to a process
    207      1.1  mrg * @code{KIND}:          KIND,      Kind of an entity
    208      1.1  mrg * @code{LBOUND}:        LBOUND,    Lower dimension bounds of an array
    209      1.1  mrg * @code{LCOBOUND}:      LCOBOUND,  Lower codimension bounds of an array
    210      1.1  mrg * @code{LEADZ}:         LEADZ,     Number of leading zero bits of an integer
    211      1.1  mrg * @code{LEN}:           LEN,       Length of a character entity
    212      1.1  mrg * @code{LEN_TRIM}:      LEN_TRIM,  Length of a character entity without trailing blank characters
    213      1.1  mrg * @code{LGE}:           LGE,       Lexical greater than or equal
    214      1.1  mrg * @code{LGT}:           LGT,       Lexical greater than
    215      1.1  mrg * @code{LINK}:          LINK,      Create a hard link
    216      1.1  mrg * @code{LLE}:           LLE,       Lexical less than or equal
    217      1.1  mrg * @code{LLT}:           LLT,       Lexical less than
    218      1.1  mrg * @code{LNBLNK}:        LNBLNK,    Index of the last non-blank character in a string
    219      1.1  mrg * @code{LOC}:           LOC,       Returns the address of a variable
    220      1.1  mrg * @code{LOG}:           LOG,       Logarithm function
    221  1.1.1.3  mrg * @code{LOG10}:         LOG10,     Base 10 logarithm function
    222      1.1  mrg * @code{LOG_GAMMA}:     LOG_GAMMA, Logarithm of the Gamma function
    223      1.1  mrg * @code{LOGICAL}:       LOGICAL,   Convert to logical type
    224      1.1  mrg * @code{LSHIFT}:        LSHIFT,    Left shift bits
    225      1.1  mrg * @code{LSTAT}:         LSTAT,     Get file status
    226      1.1  mrg * @code{LTIME}:         LTIME,     Convert time to local time info
    227      1.1  mrg * @code{MALLOC}:        MALLOC,    Dynamic memory allocation function
    228      1.1  mrg * @code{MASKL}:         MASKL,     Left justified mask
    229      1.1  mrg * @code{MASKR}:         MASKR,     Right justified mask
    230      1.1  mrg * @code{MATMUL}:        MATMUL,    matrix multiplication
    231      1.1  mrg * @code{MAX}:           MAX,       Maximum value of an argument list
    232      1.1  mrg * @code{MAXEXPONENT}:   MAXEXPONENT, Maximum exponent of a real kind
    233      1.1  mrg * @code{MAXLOC}:        MAXLOC,    Location of the maximum value within an array
    234      1.1  mrg * @code{MAXVAL}:        MAXVAL,    Maximum value of an array
    235      1.1  mrg * @code{MCLOCK}:        MCLOCK,    Time function
    236      1.1  mrg * @code{MCLOCK8}:       MCLOCK8,   Time function (64-bit)
    237      1.1  mrg * @code{MERGE}:         MERGE,     Merge arrays
    238      1.1  mrg * @code{MERGE_BITS}:    MERGE_BITS, Merge of bits under mask
    239      1.1  mrg * @code{MIN}:           MIN,       Minimum value of an argument list
    240      1.1  mrg * @code{MINEXPONENT}:   MINEXPONENT, Minimum exponent of a real kind
    241      1.1  mrg * @code{MINLOC}:        MINLOC,    Location of the minimum value within an array
    242      1.1  mrg * @code{MINVAL}:        MINVAL,    Minimum value of an array
    243      1.1  mrg * @code{MOD}:           MOD,       Remainder function
    244      1.1  mrg * @code{MODULO}:        MODULO,    Modulo function
    245      1.1  mrg * @code{MOVE_ALLOC}:    MOVE_ALLOC, Move allocation from one object to another
    246      1.1  mrg * @code{MVBITS}:        MVBITS,    Move bits from one integer to another
    247      1.1  mrg * @code{NEAREST}:       NEAREST,   Nearest representable number
    248      1.1  mrg * @code{NEW_LINE}:      NEW_LINE,  New line character
    249      1.1  mrg * @code{NINT}:          NINT,      Nearest whole number
    250      1.1  mrg * @code{NORM2}:         NORM2,     Euclidean vector norm
    251      1.1  mrg * @code{NOT}:           NOT,       Logical negation
    252      1.1  mrg * @code{NULL}:          NULL,      Function that returns an disassociated pointer
    253      1.1  mrg * @code{NUM_IMAGES}:    NUM_IMAGES, Number of images
    254      1.1  mrg * @code{OR}:            OR,        Bitwise logical OR
    255      1.1  mrg * @code{PACK}:          PACK,      Pack an array into an array of rank one
    256      1.1  mrg * @code{PARITY}:        PARITY,    Reduction with exclusive OR
    257      1.1  mrg * @code{PERROR}:        PERROR,    Print system error message
    258      1.1  mrg * @code{POPCNT}:        POPCNT,    Number of bits set
    259      1.1  mrg * @code{POPPAR}:        POPPAR,    Parity of the number of bits set
    260      1.1  mrg * @code{PRECISION}:     PRECISION, Decimal precision of a real kind
    261      1.1  mrg * @code{PRESENT}:       PRESENT,   Determine whether an optional dummy argument is specified
    262      1.1  mrg * @code{PRODUCT}:       PRODUCT,   Product of array elements
    263      1.1  mrg * @code{RADIX}:         RADIX,     Base of a data model
    264      1.1  mrg * @code{RAN}:           RAN,       Real pseudo-random number
    265      1.1  mrg * @code{RAND}:          RAND,      Real pseudo-random number
    266      1.1  mrg * @code{RANDOM_INIT}:   RANDOM_INIT, Initialize pseudo-random number generator
    267      1.1  mrg * @code{RANDOM_NUMBER}: RANDOM_NUMBER, Pseudo-random number
    268      1.1  mrg * @code{RANDOM_SEED}:   RANDOM_SEED, Initialize a pseudo-random number sequence
    269      1.1  mrg * @code{RANGE}:         RANGE,     Decimal exponent range
    270      1.1  mrg * @code{RANK} :         RANK,      Rank of a data object
    271      1.1  mrg * @code{REAL}:          REAL,      Convert to real type 
    272      1.1  mrg * @code{RENAME}:        RENAME,    Rename a file
    273      1.1  mrg * @code{REPEAT}:        REPEAT,    Repeated string concatenation
    274      1.1  mrg * @code{RESHAPE}:       RESHAPE,   Function to reshape an array
    275      1.1  mrg * @code{RRSPACING}:     RRSPACING, Reciprocal of the relative spacing
    276      1.1  mrg * @code{RSHIFT}:        RSHIFT,    Right shift bits
    277      1.1  mrg * @code{SAME_TYPE_AS}:  SAME_TYPE_AS,  Query dynamic types for equality
    278      1.1  mrg * @code{SCALE}:         SCALE,     Scale a real value
    279      1.1  mrg * @code{SCAN}:          SCAN,      Scan a string for the presence of a set of characters
    280      1.1  mrg * @code{SECNDS}:        SECNDS,    Time function
    281      1.1  mrg * @code{SECOND}:        SECOND,    CPU time function
    282      1.1  mrg * @code{SELECTED_CHAR_KIND}: SELECTED_CHAR_KIND,  Choose character kind
    283      1.1  mrg * @code{SELECTED_INT_KIND}: SELECTED_INT_KIND,  Choose integer kind
    284      1.1  mrg * @code{SELECTED_REAL_KIND}: SELECTED_REAL_KIND,  Choose real kind
    285      1.1  mrg * @code{SET_EXPONENT}:  SET_EXPONENT, Set the exponent of the model
    286      1.1  mrg * @code{SHAPE}:         SHAPE,     Determine the shape of an array
    287      1.1  mrg * @code{SHIFTA}:        SHIFTA,    Right shift with fill
    288      1.1  mrg * @code{SHIFTL}:        SHIFTL,    Left shift
    289      1.1  mrg * @code{SHIFTR}:        SHIFTR,    Right shift
    290      1.1  mrg * @code{SIGN}:          SIGN,      Sign copying function
    291      1.1  mrg * @code{SIGNAL}:        SIGNAL,    Signal handling subroutine (or function)
    292      1.1  mrg * @code{SIN}:           SIN,       Sine function
    293      1.1  mrg * @code{SIND}:          SIND,      Sine function, degrees
    294      1.1  mrg * @code{SINH}:          SINH,      Hyperbolic sine function
    295      1.1  mrg * @code{SIZE}:          SIZE,      Function to determine the size of an array
    296      1.1  mrg * @code{SIZEOF}:        SIZEOF,    Determine the size in bytes of an expression
    297      1.1  mrg * @code{SLEEP}:         SLEEP,     Sleep for the specified number of seconds
    298      1.1  mrg * @code{SPACING}:       SPACING,   Smallest distance between two numbers of a given type
    299      1.1  mrg * @code{SPREAD}:        SPREAD,    Add a dimension to an array 
    300      1.1  mrg * @code{SQRT}:          SQRT,      Square-root function
    301      1.1  mrg * @code{SRAND}:         SRAND,     Reinitialize the random number generator
    302      1.1  mrg * @code{STAT}:          STAT,      Get file status
    303      1.1  mrg * @code{STORAGE_SIZE}:  STORAGE_SIZE, Storage size in bits
    304      1.1  mrg * @code{SUM}:           SUM,       Sum of array elements
    305      1.1  mrg * @code{SYMLNK}:        SYMLNK,    Create a symbolic link
    306      1.1  mrg * @code{SYSTEM}:        SYSTEM,    Execute a shell command
    307      1.1  mrg * @code{SYSTEM_CLOCK}:  SYSTEM_CLOCK, Time function
    308      1.1  mrg * @code{TAN}:           TAN,       Tangent function
    309      1.1  mrg * @code{TAND}:          TAND,      Tangent function, degrees
    310      1.1  mrg * @code{TANH}:          TANH,      Hyperbolic tangent function
    311      1.1  mrg * @code{THIS_IMAGE}:    THIS_IMAGE, Cosubscript index of this image
    312      1.1  mrg * @code{TIME}:          TIME,      Time function
    313      1.1  mrg * @code{TIME8}:         TIME8,     Time function (64-bit)
    314      1.1  mrg * @code{TINY}:          TINY,      Smallest positive number of a real kind
    315      1.1  mrg * @code{TRAILZ}:        TRAILZ,    Number of trailing zero bits of an integer
    316      1.1  mrg * @code{TRANSFER}:      TRANSFER,  Transfer bit patterns
    317      1.1  mrg * @code{TRANSPOSE}:     TRANSPOSE, Transpose an array of rank two
    318      1.1  mrg * @code{TRIM}:          TRIM,      Remove trailing blank characters of a string
    319      1.1  mrg * @code{TTYNAM}:        TTYNAM,    Get the name of a terminal device.
    320      1.1  mrg * @code{UBOUND}:        UBOUND,    Upper dimension bounds of an array
    321      1.1  mrg * @code{UCOBOUND}:      UCOBOUND,  Upper codimension bounds of an array
    322      1.1  mrg * @code{UMASK}:         UMASK,     Set the file creation mask
    323      1.1  mrg * @code{UNLINK}:        UNLINK,    Remove a file from the file system
    324      1.1  mrg * @code{UNPACK}:        UNPACK,    Unpack an array of rank one into an array
    325      1.1  mrg * @code{VERIFY}:        VERIFY,    Scan a string for the absence of a set of characters
    326      1.1  mrg * @code{XOR}:           XOR,       Bitwise logical exclusive or
    327      1.1  mrg @end menu
    328      1.1  mrg 
    329      1.1  mrg @node Introduction to Intrinsics
    330      1.1  mrg @section Introduction to intrinsic procedures
    331      1.1  mrg 
    332  1.1.1.3  mrg The intrinsic procedures provided by GNU Fortran include procedures required
    333  1.1.1.3  mrg by the Fortran 95 and later supported standards, and a set of intrinsic
    334  1.1.1.3  mrg procedures for backwards compatibility with G77.  Any conflict between
    335  1.1.1.3  mrg a description here and a description in the Fortran standards is
    336  1.1.1.3  mrg unintentional, and the standard(s) should be considered authoritative.
    337      1.1  mrg 
    338      1.1  mrg The enumeration of the @code{KIND} type parameter is processor defined in
    339      1.1  mrg the Fortran 95 standard.  GNU Fortran defines the default integer type and
    340      1.1  mrg default real type by @code{INTEGER(KIND=4)} and @code{REAL(KIND=4)},
    341      1.1  mrg respectively.  The standard mandates that both data types shall have
    342      1.1  mrg another kind, which have more precision.  On typical target architectures
    343      1.1  mrg supported by @command{gfortran}, this kind type parameter is @code{KIND=8}.
    344      1.1  mrg Hence, @code{REAL(KIND=8)} and @code{DOUBLE PRECISION} are equivalent.
    345      1.1  mrg In the description of generic intrinsic procedures, the kind type parameter
    346      1.1  mrg will be specified by @code{KIND=*}, and in the description of specific
    347      1.1  mrg names for an intrinsic procedure the kind type parameter will be explicitly
    348      1.1  mrg given (e.g., @code{REAL(KIND=4)} or @code{REAL(KIND=8)}).  Finally, for
    349      1.1  mrg brevity the optional @code{KIND=} syntax will be omitted.
    350      1.1  mrg 
    351      1.1  mrg Many of the intrinsic procedures take one or more optional arguments.
    352      1.1  mrg This document follows the convention used in the Fortran 95 standard,
    353      1.1  mrg and denotes such arguments by square brackets.
    354      1.1  mrg 
    355  1.1.1.3  mrg GNU Fortran offers the @option{-std=} command-line option,
    356      1.1  mrg which can be used to restrict the set of intrinsic procedures to a 
    357      1.1  mrg given standard.  By default, @command{gfortran} sets the @option{-std=gnu}
    358      1.1  mrg option, and so all intrinsic procedures described here are accepted.  There
    359      1.1  mrg is one caveat.  For a select group of intrinsic procedures, @command{g77}
    360      1.1  mrg implemented both a function and a subroutine.  Both classes 
    361      1.1  mrg have been implemented in @command{gfortran} for backwards compatibility
    362      1.1  mrg with @command{g77}.  It is noted here that these functions and subroutines
    363      1.1  mrg cannot be intermixed in a given subprogram.  In the descriptions that follow,
    364      1.1  mrg the applicable standard for each intrinsic procedure is noted.
    365      1.1  mrg 
    366      1.1  mrg 
    367      1.1  mrg 
    368      1.1  mrg @node ABORT
    369      1.1  mrg @section @code{ABORT} --- Abort the program
    370      1.1  mrg @fnindex ABORT
    371      1.1  mrg @cindex program termination, with core dump
    372      1.1  mrg @cindex terminate program, with core dump
    373      1.1  mrg @cindex core, dump
    374      1.1  mrg 
    375      1.1  mrg @table @asis
    376      1.1  mrg @item @emph{Description}:
    377      1.1  mrg @code{ABORT} causes immediate termination of the program.  On operating
    378      1.1  mrg systems that support a core dump, @code{ABORT} will produce a core dump.
    379      1.1  mrg It will also print a backtrace, unless @code{-fno-backtrace} is given.
    380      1.1  mrg 
    381      1.1  mrg @item @emph{Standard}:
    382      1.1  mrg GNU extension
    383      1.1  mrg 
    384      1.1  mrg @item @emph{Class}:
    385      1.1  mrg Subroutine
    386      1.1  mrg 
    387      1.1  mrg @item @emph{Syntax}:
    388      1.1  mrg @code{CALL ABORT}
    389      1.1  mrg 
    390      1.1  mrg @item @emph{Return value}:
    391      1.1  mrg Does not return.
    392      1.1  mrg 
    393      1.1  mrg @item @emph{Example}:
    394      1.1  mrg @smallexample
    395      1.1  mrg program test_abort
    396      1.1  mrg   integer :: i = 1, j = 2
    397      1.1  mrg   if (i /= j) call abort
    398      1.1  mrg end program test_abort
    399      1.1  mrg @end smallexample
    400      1.1  mrg 
    401      1.1  mrg @item @emph{See also}:
    402  1.1.1.2  mrg @ref{EXIT}, @gol
    403  1.1.1.2  mrg @ref{KILL}, @gol
    404  1.1.1.2  mrg @ref{BACKTRACE}
    405      1.1  mrg @end table
    406      1.1  mrg 
    407      1.1  mrg 
    408      1.1  mrg 
    409      1.1  mrg @node ABS
    410      1.1  mrg @section @code{ABS} --- Absolute value
    411      1.1  mrg @fnindex ABS
    412      1.1  mrg @fnindex CABS
    413      1.1  mrg @fnindex DABS
    414      1.1  mrg @fnindex IABS
    415      1.1  mrg @fnindex ZABS
    416      1.1  mrg @fnindex CDABS
    417      1.1  mrg @fnindex BABS
    418      1.1  mrg @fnindex IIABS
    419      1.1  mrg @fnindex JIABS
    420      1.1  mrg @fnindex KIABS
    421      1.1  mrg @cindex absolute value
    422      1.1  mrg 
    423      1.1  mrg @table @asis
    424      1.1  mrg @item @emph{Description}:
    425      1.1  mrg @code{ABS(A)} computes the absolute value of @code{A}.
    426      1.1  mrg 
    427      1.1  mrg @item @emph{Standard}:
    428      1.1  mrg Fortran 77 and later, has overloads that are GNU extensions
    429      1.1  mrg 
    430      1.1  mrg @item @emph{Class}:
    431      1.1  mrg Elemental function
    432      1.1  mrg 
    433      1.1  mrg @item @emph{Syntax}:
    434      1.1  mrg @code{RESULT = ABS(A)}
    435      1.1  mrg 
    436      1.1  mrg @item @emph{Arguments}:
    437      1.1  mrg @multitable @columnfractions .15 .70
    438      1.1  mrg @item @var{A} @tab The type of the argument shall be an @code{INTEGER},
    439      1.1  mrg @code{REAL}, or @code{COMPLEX}.
    440      1.1  mrg @end multitable
    441      1.1  mrg 
    442      1.1  mrg @item @emph{Return value}:
    443      1.1  mrg The return value is of the same type and
    444      1.1  mrg kind as the argument except the return value is @code{REAL} for a
    445      1.1  mrg @code{COMPLEX} argument.
    446      1.1  mrg 
    447      1.1  mrg @item @emph{Example}:
    448      1.1  mrg @smallexample
    449      1.1  mrg program test_abs
    450      1.1  mrg   integer :: i = -1
    451      1.1  mrg   real :: x = -1.e0
    452      1.1  mrg   complex :: z = (-1.e0,0.e0)
    453      1.1  mrg   i = abs(i)
    454      1.1  mrg   x = abs(x)
    455      1.1  mrg   x = abs(z)
    456      1.1  mrg end program test_abs
    457      1.1  mrg @end smallexample
    458      1.1  mrg 
    459      1.1  mrg @item @emph{Specific names}:
    460  1.1.1.3  mrg @multitable @columnfractions .20 .23 .20 .33
    461  1.1.1.3  mrg @headitem Name            @tab Argument            @tab Return type       @tab Standard
    462      1.1  mrg @item @code{ABS(A)}   @tab @code{REAL(4) A}    @tab @code{REAL(4)}    @tab Fortran 77 and later
    463      1.1  mrg @item @code{CABS(A)}  @tab @code{COMPLEX(4) A} @tab @code{REAL(4)}    @tab Fortran 77 and later
    464      1.1  mrg @item @code{DABS(A)}  @tab @code{REAL(8) A}    @tab @code{REAL(8)}    @tab Fortran 77 and later
    465      1.1  mrg @item @code{IABS(A)}  @tab @code{INTEGER(4) A} @tab @code{INTEGER(4)} @tab Fortran 77 and later
    466      1.1  mrg @item @code{BABS(A)} @tab @code{INTEGER(1) A} @tab @code{INTEGER(1)} @tab GNU extension
    467      1.1  mrg @item @code{IIABS(A)} @tab @code{INTEGER(2) A} @tab @code{INTEGER(2)} @tab GNU extension
    468      1.1  mrg @item @code{JIABS(A)} @tab @code{INTEGER(4) A} @tab @code{INTEGER(4)} @tab GNU extension
    469      1.1  mrg @item @code{KIABS(A)} @tab @code{INTEGER(8) A} @tab @code{INTEGER(8)} @tab GNU extension
    470  1.1.1.2  mrg @item @code{ZABS(A)}  @tab @code{COMPLEX(8) A} @tab @code{REAL(8)} @tab GNU extension
    471  1.1.1.2  mrg @item @code{CDABS(A)} @tab @code{COMPLEX(8) A} @tab @code{REAL(8)} @tab GNU extension
    472      1.1  mrg @end multitable
    473      1.1  mrg @end table
    474      1.1  mrg 
    475      1.1  mrg 
    476      1.1  mrg 
    477      1.1  mrg @node ACCESS
    478      1.1  mrg @section @code{ACCESS} --- Checks file access modes
    479      1.1  mrg @fnindex ACCESS
    480      1.1  mrg @cindex file system, access mode
    481      1.1  mrg 
    482      1.1  mrg @table @asis
    483      1.1  mrg @item @emph{Description}:
    484      1.1  mrg @code{ACCESS(NAME, MODE)} checks whether the file @var{NAME} 
    485      1.1  mrg exists, is readable, writable or executable. Except for the
    486      1.1  mrg executable check, @code{ACCESS} can be replaced by
    487      1.1  mrg Fortran 95's @code{INQUIRE}.
    488      1.1  mrg 
    489      1.1  mrg @item @emph{Standard}:
    490      1.1  mrg GNU extension
    491      1.1  mrg 
    492      1.1  mrg @item @emph{Class}:
    493      1.1  mrg Inquiry function
    494      1.1  mrg 
    495      1.1  mrg @item @emph{Syntax}:
    496      1.1  mrg @code{RESULT = ACCESS(NAME, MODE)}
    497      1.1  mrg 
    498      1.1  mrg @item @emph{Arguments}:
    499      1.1  mrg @multitable @columnfractions .15 .70
    500      1.1  mrg @item @var{NAME} @tab Scalar @code{CHARACTER} of default kind with the
    501  1.1.1.3  mrg file name. Trailing blank are ignored unless the character @code{achar(0)}
    502      1.1  mrg is present, then all characters up to and excluding @code{achar(0)} are
    503      1.1  mrg used as file name.
    504      1.1  mrg @item @var{MODE} @tab Scalar @code{CHARACTER} of default kind with the
    505      1.1  mrg file access mode, may be any concatenation of @code{"r"} (readable),
    506      1.1  mrg @code{"w"} (writable) and @code{"x"} (executable), or @code{" "} to check
    507      1.1  mrg for existence.
    508      1.1  mrg @end multitable
    509      1.1  mrg 
    510      1.1  mrg @item @emph{Return value}:
    511      1.1  mrg Returns a scalar @code{INTEGER}, which is @code{0} if the file is
    512      1.1  mrg accessible in the given mode; otherwise or if an invalid argument
    513      1.1  mrg has been given for @code{MODE} the value @code{1} is returned.
    514      1.1  mrg 
    515      1.1  mrg @item @emph{Example}:
    516      1.1  mrg @smallexample
    517      1.1  mrg program access_test
    518      1.1  mrg   implicit none
    519      1.1  mrg   character(len=*), parameter :: file  = 'test.dat'
    520      1.1  mrg   character(len=*), parameter :: file2 = 'test.dat  '//achar(0)
    521      1.1  mrg   if(access(file,' ') == 0) print *, trim(file),' is exists'
    522      1.1  mrg   if(access(file,'r') == 0) print *, trim(file),' is readable'
    523      1.1  mrg   if(access(file,'w') == 0) print *, trim(file),' is writable'
    524      1.1  mrg   if(access(file,'x') == 0) print *, trim(file),' is executable'
    525      1.1  mrg   if(access(file2,'rwx') == 0) &
    526      1.1  mrg     print *, trim(file2),' is readable, writable and executable'
    527      1.1  mrg end program access_test
    528      1.1  mrg @end smallexample
    529      1.1  mrg @end table
    530      1.1  mrg 
    531      1.1  mrg 
    532      1.1  mrg 
    533      1.1  mrg @node ACHAR
    534      1.1  mrg @section @code{ACHAR} --- Character in @acronym{ASCII} collating sequence 
    535      1.1  mrg @fnindex ACHAR
    536      1.1  mrg @cindex @acronym{ASCII} collating sequence
    537      1.1  mrg @cindex collating sequence, @acronym{ASCII}
    538      1.1  mrg 
    539      1.1  mrg @table @asis
    540      1.1  mrg @item @emph{Description}:
    541      1.1  mrg @code{ACHAR(I)} returns the character located at position @code{I}
    542      1.1  mrg in the @acronym{ASCII} collating sequence.
    543      1.1  mrg 
    544      1.1  mrg @item @emph{Standard}:
    545      1.1  mrg Fortran 77 and later, with @var{KIND} argument Fortran 2003 and later
    546      1.1  mrg 
    547      1.1  mrg @item @emph{Class}:
    548      1.1  mrg Elemental function
    549      1.1  mrg 
    550      1.1  mrg @item @emph{Syntax}:
    551      1.1  mrg @code{RESULT = ACHAR(I [, KIND])}
    552      1.1  mrg 
    553      1.1  mrg @item @emph{Arguments}:
    554      1.1  mrg @multitable @columnfractions .15 .70
    555      1.1  mrg @item @var{I}    @tab The type shall be @code{INTEGER}.
    556      1.1  mrg @item @var{KIND} @tab (Optional) An @code{INTEGER} initialization
    557      1.1  mrg expression indicating the kind parameter of the result.
    558      1.1  mrg @end multitable
    559      1.1  mrg 
    560      1.1  mrg @item @emph{Return value}:
    561      1.1  mrg The return value is of type @code{CHARACTER} with a length of one.
    562      1.1  mrg If the @var{KIND} argument is present, the return value is of the
    563      1.1  mrg specified kind and of the default kind otherwise.
    564      1.1  mrg 
    565      1.1  mrg @item @emph{Example}:
    566      1.1  mrg @smallexample
    567      1.1  mrg program test_achar
    568      1.1  mrg   character c
    569      1.1  mrg   c = achar(32)
    570      1.1  mrg end program test_achar
    571      1.1  mrg @end smallexample
    572      1.1  mrg 
    573      1.1  mrg @item @emph{Note}:
    574      1.1  mrg See @ref{ICHAR} for a discussion of converting between numerical values
    575      1.1  mrg and formatted string representations.
    576      1.1  mrg 
    577      1.1  mrg @item @emph{See also}:
    578  1.1.1.2  mrg @ref{CHAR}, @gol
    579  1.1.1.2  mrg @ref{IACHAR}, @gol
    580  1.1.1.2  mrg @ref{ICHAR}
    581      1.1  mrg @end table
    582      1.1  mrg 
    583      1.1  mrg 
    584      1.1  mrg 
    585      1.1  mrg @node ACOS
    586      1.1  mrg @section @code{ACOS} --- Arccosine function 
    587      1.1  mrg @fnindex ACOS
    588      1.1  mrg @fnindex DACOS
    589      1.1  mrg @cindex trigonometric function, cosine, inverse
    590      1.1  mrg @cindex cosine, inverse
    591      1.1  mrg 
    592      1.1  mrg @table @asis
    593      1.1  mrg @item @emph{Description}:
    594      1.1  mrg @code{ACOS(X)} computes the arccosine of @var{X} (inverse of @code{COS(X)}).
    595      1.1  mrg 
    596      1.1  mrg @item @emph{Standard}:
    597      1.1  mrg Fortran 77 and later, for a complex argument Fortran 2008 or later
    598      1.1  mrg 
    599      1.1  mrg @item @emph{Class}:
    600      1.1  mrg Elemental function
    601      1.1  mrg 
    602      1.1  mrg @item @emph{Syntax}:
    603      1.1  mrg @code{RESULT = ACOS(X)}
    604      1.1  mrg 
    605      1.1  mrg @item @emph{Arguments}:
    606      1.1  mrg @multitable @columnfractions .15 .70
    607      1.1  mrg @item @var{X} @tab The type shall either be @code{REAL} with a magnitude that is
    608      1.1  mrg less than or equal to one - or the type shall be @code{COMPLEX}.
    609      1.1  mrg @end multitable
    610      1.1  mrg 
    611      1.1  mrg @item @emph{Return value}:
    612      1.1  mrg The return value is of the same type and kind as @var{X}.
    613      1.1  mrg The real part of the result is in radians and lies in the range
    614      1.1  mrg @math{0 \leq \Re \acos(x) \leq \pi}.
    615      1.1  mrg 
    616      1.1  mrg @item @emph{Example}:
    617      1.1  mrg @smallexample
    618      1.1  mrg program test_acos
    619      1.1  mrg   real(8) :: x = 0.866_8
    620      1.1  mrg   x = acos(x)
    621      1.1  mrg end program test_acos
    622      1.1  mrg @end smallexample
    623      1.1  mrg 
    624      1.1  mrg @item @emph{Specific names}:
    625  1.1.1.3  mrg @multitable @columnfractions .20 .23 .20 .33
    626  1.1.1.3  mrg @headitem Name            @tab Argument         @tab Return type     @tab Standard
    627      1.1  mrg @item @code{ACOS(X)}  @tab @code{REAL(4) X} @tab @code{REAL(4)}  @tab Fortran 77 and later
    628      1.1  mrg @item @code{DACOS(X)} @tab @code{REAL(8) X} @tab @code{REAL(8)}  @tab Fortran 77 and later
    629      1.1  mrg @end multitable
    630      1.1  mrg 
    631      1.1  mrg @item @emph{See also}:
    632  1.1.1.2  mrg Inverse function: @gol
    633  1.1.1.2  mrg @ref{COS} @gol
    634  1.1.1.2  mrg Degrees function: @gol
    635  1.1.1.2  mrg @ref{ACOSD}
    636      1.1  mrg @end table
    637      1.1  mrg 
    638      1.1  mrg 
    639      1.1  mrg 
    640      1.1  mrg @node ACOSD
    641      1.1  mrg @section @code{ACOSD} --- Arccosine function, degrees
    642      1.1  mrg @fnindex ACOSD
    643      1.1  mrg @fnindex DACOSD
    644      1.1  mrg @cindex trigonometric function, cosine, inverse, degrees
    645      1.1  mrg @cindex cosine, inverse, degrees
    646      1.1  mrg 
    647      1.1  mrg @table @asis
    648      1.1  mrg @item @emph{Description}:
    649      1.1  mrg @code{ACOSD(X)} computes the arccosine of @var{X} in degrees (inverse of
    650      1.1  mrg @code{COSD(X)}).
    651      1.1  mrg 
    652      1.1  mrg This function is for compatibility only and should be avoided in favor of
    653      1.1  mrg standard constructs wherever possible.
    654      1.1  mrg 
    655      1.1  mrg @item @emph{Standard}:
    656  1.1.1.2  mrg GNU extension, enabled with @option{-fdec-math}
    657      1.1  mrg 
    658      1.1  mrg @item @emph{Class}:
    659      1.1  mrg Elemental function
    660      1.1  mrg 
    661      1.1  mrg @item @emph{Syntax}:
    662      1.1  mrg @code{RESULT = ACOSD(X)}
    663      1.1  mrg 
    664      1.1  mrg @item @emph{Arguments}:
    665      1.1  mrg @multitable @columnfractions .15 .70
    666      1.1  mrg @item @var{X} @tab The type shall either be @code{REAL} with a magnitude that is
    667      1.1  mrg less than or equal to one - or the type shall be @code{COMPLEX}.
    668      1.1  mrg @end multitable
    669      1.1  mrg 
    670      1.1  mrg @item @emph{Return value}:
    671      1.1  mrg The return value is of the same type and kind as @var{X}.
    672      1.1  mrg The real part of the result is in degrees and lies in the range
    673      1.1  mrg @math{0 \leq \Re \acos(x) \leq 180}.
    674      1.1  mrg 
    675      1.1  mrg @item @emph{Example}:
    676      1.1  mrg @smallexample
    677      1.1  mrg program test_acosd
    678      1.1  mrg   real(8) :: x = 0.866_8
    679      1.1  mrg   x = acosd(x)
    680      1.1  mrg end program test_acosd
    681      1.1  mrg @end smallexample
    682      1.1  mrg 
    683      1.1  mrg @item @emph{Specific names}:
    684  1.1.1.3  mrg @multitable @columnfractions .20 .23 .20 .33
    685  1.1.1.3  mrg @headitem Name            @tab Argument         @tab Return type     @tab Standard
    686  1.1.1.2  mrg @item @code{ACOSD(X)}  @tab @code{REAL(4) X} @tab @code{REAL(4)}  @tab GNU extension
    687  1.1.1.2  mrg @item @code{DACOSD(X)} @tab @code{REAL(8) X} @tab @code{REAL(8)}  @tab GNU extension
    688      1.1  mrg @end multitable
    689      1.1  mrg 
    690      1.1  mrg @item @emph{See also}:
    691  1.1.1.2  mrg Inverse function: @gol
    692  1.1.1.2  mrg @ref{COSD} @gol
    693  1.1.1.2  mrg Radians function: @gol
    694  1.1.1.2  mrg @ref{ACOS} @gol
    695      1.1  mrg @end table
    696      1.1  mrg 
    697      1.1  mrg 
    698      1.1  mrg 
    699      1.1  mrg @node ACOSH
    700      1.1  mrg @section @code{ACOSH} --- Inverse hyperbolic cosine function
    701      1.1  mrg @fnindex ACOSH
    702      1.1  mrg @fnindex DACOSH
    703      1.1  mrg @cindex area hyperbolic cosine
    704      1.1  mrg @cindex inverse hyperbolic cosine
    705      1.1  mrg @cindex hyperbolic function, cosine, inverse
    706      1.1  mrg @cindex cosine, hyperbolic, inverse
    707      1.1  mrg 
    708      1.1  mrg @table @asis
    709      1.1  mrg @item @emph{Description}:
    710      1.1  mrg @code{ACOSH(X)} computes the inverse hyperbolic cosine of @var{X}.
    711      1.1  mrg 
    712      1.1  mrg @item @emph{Standard}:
    713      1.1  mrg Fortran 2008 and later
    714      1.1  mrg 
    715      1.1  mrg @item @emph{Class}:
    716      1.1  mrg Elemental function
    717      1.1  mrg 
    718      1.1  mrg @item @emph{Syntax}:
    719      1.1  mrg @code{RESULT = ACOSH(X)}
    720      1.1  mrg 
    721      1.1  mrg @item @emph{Arguments}:
    722      1.1  mrg @multitable @columnfractions .15 .70
    723      1.1  mrg @item @var{X} @tab The type shall be @code{REAL} or @code{COMPLEX}.
    724      1.1  mrg @end multitable
    725      1.1  mrg 
    726      1.1  mrg @item @emph{Return value}:
    727      1.1  mrg The return value has the same type and kind as @var{X}. If @var{X} is
    728      1.1  mrg complex, the imaginary part of the result is in radians and lies between
    729      1.1  mrg @math{ 0 \leq \Im \acosh(x) \leq \pi}.
    730      1.1  mrg 
    731      1.1  mrg @item @emph{Example}:
    732      1.1  mrg @smallexample
    733      1.1  mrg PROGRAM test_acosh
    734      1.1  mrg   REAL(8), DIMENSION(3) :: x = (/ 1.0, 2.0, 3.0 /)
    735      1.1  mrg   WRITE (*,*) ACOSH(x)
    736      1.1  mrg END PROGRAM
    737      1.1  mrg @end smallexample
    738      1.1  mrg 
    739      1.1  mrg @item @emph{Specific names}:
    740  1.1.1.3  mrg @multitable @columnfractions .20 .23 .20 .33
    741  1.1.1.3  mrg @headitem Name             @tab Argument          @tab Return type       @tab Standard
    742      1.1  mrg @item @code{DACOSH(X)} @tab @code{REAL(8) X}  @tab @code{REAL(8)}    @tab GNU extension
    743      1.1  mrg @end multitable
    744      1.1  mrg 
    745      1.1  mrg @item @emph{See also}:
    746  1.1.1.2  mrg Inverse function: @gol
    747  1.1.1.2  mrg @ref{COSH}
    748      1.1  mrg @end table
    749      1.1  mrg 
    750      1.1  mrg 
    751      1.1  mrg 
    752      1.1  mrg @node ADJUSTL
    753      1.1  mrg @section @code{ADJUSTL} --- Left adjust a string 
    754      1.1  mrg @fnindex ADJUSTL
    755      1.1  mrg @cindex string, adjust left
    756      1.1  mrg @cindex adjust string
    757      1.1  mrg 
    758      1.1  mrg @table @asis
    759      1.1  mrg @item @emph{Description}:
    760      1.1  mrg @code{ADJUSTL(STRING)} will left adjust a string by removing leading spaces.
    761      1.1  mrg Spaces are inserted at the end of the string as needed.
    762      1.1  mrg 
    763      1.1  mrg @item @emph{Standard}:
    764      1.1  mrg Fortran 90 and later
    765      1.1  mrg 
    766      1.1  mrg @item @emph{Class}:
    767      1.1  mrg Elemental function
    768      1.1  mrg 
    769      1.1  mrg @item @emph{Syntax}:
    770      1.1  mrg @code{RESULT = ADJUSTL(STRING)}
    771      1.1  mrg 
    772      1.1  mrg @item @emph{Arguments}:
    773      1.1  mrg @multitable @columnfractions .15 .70
    774      1.1  mrg @item @var{STRING} @tab The type shall be @code{CHARACTER}.
    775      1.1  mrg @end multitable
    776      1.1  mrg 
    777      1.1  mrg @item @emph{Return value}:
    778      1.1  mrg The return value is of type @code{CHARACTER} and of the same kind as
    779      1.1  mrg @var{STRING} where leading spaces are removed and the same number of
    780      1.1  mrg spaces are inserted on the end of @var{STRING}.
    781      1.1  mrg 
    782      1.1  mrg @item @emph{Example}:
    783      1.1  mrg @smallexample
    784      1.1  mrg program test_adjustl
    785      1.1  mrg   character(len=20) :: str = '   gfortran'
    786      1.1  mrg   str = adjustl(str)
    787      1.1  mrg   print *, str
    788      1.1  mrg end program test_adjustl
    789      1.1  mrg @end smallexample
    790      1.1  mrg 
    791      1.1  mrg @item @emph{See also}:
    792  1.1.1.2  mrg @ref{ADJUSTR}, @gol
    793  1.1.1.2  mrg @ref{TRIM}
    794      1.1  mrg @end table
    795      1.1  mrg 
    796      1.1  mrg 
    797      1.1  mrg 
    798      1.1  mrg @node ADJUSTR
    799      1.1  mrg @section @code{ADJUSTR} --- Right adjust a string 
    800      1.1  mrg @fnindex ADJUSTR
    801      1.1  mrg @cindex string, adjust right
    802      1.1  mrg @cindex adjust string
    803      1.1  mrg 
    804      1.1  mrg @table @asis
    805      1.1  mrg @item @emph{Description}:
    806      1.1  mrg @code{ADJUSTR(STRING)} will right adjust a string by removing trailing spaces.
    807      1.1  mrg Spaces are inserted at the start of the string as needed.
    808      1.1  mrg 
    809      1.1  mrg @item @emph{Standard}:
    810  1.1.1.2  mrg Fortran 90 and later
    811      1.1  mrg 
    812      1.1  mrg @item @emph{Class}:
    813      1.1  mrg Elemental function
    814      1.1  mrg 
    815      1.1  mrg @item @emph{Syntax}:
    816      1.1  mrg @code{RESULT = ADJUSTR(STRING)}
    817      1.1  mrg 
    818      1.1  mrg @item @emph{Arguments}:
    819      1.1  mrg @multitable @columnfractions .15 .70
    820      1.1  mrg @item @var{STR} @tab The type shall be @code{CHARACTER}.
    821      1.1  mrg @end multitable
    822      1.1  mrg 
    823      1.1  mrg @item @emph{Return value}:
    824      1.1  mrg The return value is of type @code{CHARACTER} and of the same kind as
    825      1.1  mrg @var{STRING} where trailing spaces are removed and the same number of
    826      1.1  mrg spaces are inserted at the start of @var{STRING}.
    827      1.1  mrg 
    828      1.1  mrg @item @emph{Example}:
    829      1.1  mrg @smallexample
    830      1.1  mrg program test_adjustr
    831      1.1  mrg   character(len=20) :: str = 'gfortran'
    832      1.1  mrg   str = adjustr(str)
    833      1.1  mrg   print *, str
    834      1.1  mrg end program test_adjustr
    835      1.1  mrg @end smallexample
    836      1.1  mrg 
    837      1.1  mrg @item @emph{See also}:
    838  1.1.1.2  mrg @ref{ADJUSTL}, @gol
    839  1.1.1.2  mrg @ref{TRIM}
    840      1.1  mrg @end table
    841      1.1  mrg 
    842      1.1  mrg 
    843      1.1  mrg 
    844      1.1  mrg @node AIMAG
    845      1.1  mrg @section @code{AIMAG} --- Imaginary part of complex number  
    846      1.1  mrg @fnindex AIMAG
    847      1.1  mrg @fnindex DIMAG
    848      1.1  mrg @fnindex IMAG
    849      1.1  mrg @fnindex IMAGPART
    850      1.1  mrg @cindex complex numbers, imaginary part
    851      1.1  mrg 
    852      1.1  mrg @table @asis
    853      1.1  mrg @item @emph{Description}:
    854      1.1  mrg @code{AIMAG(Z)} yields the imaginary part of complex argument @code{Z}.
    855      1.1  mrg The @code{IMAG(Z)} and @code{IMAGPART(Z)} intrinsic functions are provided
    856      1.1  mrg for compatibility with @command{g77}, and their use in new code is 
    857      1.1  mrg strongly discouraged.
    858      1.1  mrg 
    859      1.1  mrg @item @emph{Standard}:
    860      1.1  mrg Fortran 77 and later, has overloads that are GNU extensions
    861      1.1  mrg 
    862      1.1  mrg @item @emph{Class}:
    863      1.1  mrg Elemental function
    864      1.1  mrg 
    865      1.1  mrg @item @emph{Syntax}:
    866      1.1  mrg @code{RESULT = AIMAG(Z)}
    867      1.1  mrg 
    868      1.1  mrg @item @emph{Arguments}:
    869      1.1  mrg @multitable @columnfractions .15 .70
    870      1.1  mrg @item @var{Z} @tab The type of the argument shall be @code{COMPLEX}.
    871      1.1  mrg @end multitable
    872      1.1  mrg 
    873      1.1  mrg @item @emph{Return value}:
    874      1.1  mrg The return value is of type @code{REAL} with the
    875      1.1  mrg kind type parameter of the argument.
    876      1.1  mrg 
    877      1.1  mrg @item @emph{Example}:
    878      1.1  mrg @smallexample
    879      1.1  mrg program test_aimag
    880      1.1  mrg   complex(4) z4
    881      1.1  mrg   complex(8) z8
    882      1.1  mrg   z4 = cmplx(1.e0_4, 0.e0_4)
    883      1.1  mrg   z8 = cmplx(0.e0_8, 1.e0_8)
    884      1.1  mrg   print *, aimag(z4), dimag(z8)
    885      1.1  mrg end program test_aimag
    886      1.1  mrg @end smallexample
    887      1.1  mrg 
    888      1.1  mrg @item @emph{Specific names}:
    889  1.1.1.3  mrg @multitable @columnfractions .20 .23 .20 .33
    890  1.1.1.3  mrg @headitem Name               @tab Argument            @tab Return type     @tab Standard
    891  1.1.1.2  mrg @item @code{AIMAG(Z)}    @tab @code{COMPLEX Z}    @tab @code{REAL}     @tab Fortran 77 and later
    892      1.1  mrg @item @code{DIMAG(Z)}    @tab @code{COMPLEX(8) Z} @tab @code{REAL(8)}  @tab GNU extension
    893      1.1  mrg @item @code{IMAG(Z)}     @tab @code{COMPLEX Z}    @tab @code{REAL}     @tab GNU extension
    894      1.1  mrg @item @code{IMAGPART(Z)} @tab @code{COMPLEX Z}    @tab @code{REAL}     @tab GNU extension
    895      1.1  mrg @end multitable
    896      1.1  mrg @end table
    897      1.1  mrg 
    898      1.1  mrg 
    899      1.1  mrg 
    900      1.1  mrg @node AINT
    901      1.1  mrg @section @code{AINT} --- Truncate to a whole number
    902      1.1  mrg @fnindex AINT
    903      1.1  mrg @fnindex DINT
    904      1.1  mrg @cindex floor
    905      1.1  mrg @cindex rounding, floor
    906      1.1  mrg 
    907      1.1  mrg @table @asis
    908      1.1  mrg @item @emph{Description}:
    909      1.1  mrg @code{AINT(A [, KIND])} truncates its argument to a whole number.
    910      1.1  mrg 
    911      1.1  mrg @item @emph{Standard}:
    912      1.1  mrg Fortran 77 and later
    913      1.1  mrg 
    914      1.1  mrg @item @emph{Class}:
    915      1.1  mrg Elemental function
    916      1.1  mrg 
    917      1.1  mrg @item @emph{Syntax}:
    918      1.1  mrg @code{RESULT = AINT(A [, KIND])} 
    919      1.1  mrg 
    920      1.1  mrg @item @emph{Arguments}:
    921      1.1  mrg @multitable @columnfractions .15 .70
    922      1.1  mrg @item @var{A}    @tab The type of the argument shall be @code{REAL}.
    923      1.1  mrg @item @var{KIND} @tab (Optional) An @code{INTEGER} initialization
    924      1.1  mrg expression indicating the kind parameter of the result.
    925      1.1  mrg @end multitable
    926      1.1  mrg 
    927      1.1  mrg @item @emph{Return value}:
    928      1.1  mrg The return value is of type @code{REAL} with the kind type parameter of the
    929      1.1  mrg argument if the optional @var{KIND} is absent; otherwise, the kind
    930      1.1  mrg type parameter will be given by @var{KIND}.  If the magnitude of 
    931      1.1  mrg @var{X} is less than one, @code{AINT(X)} returns zero.  If the
    932      1.1  mrg magnitude is equal to or greater than one then it returns the largest
    933      1.1  mrg whole number that does not exceed its magnitude.  The sign is the same
    934      1.1  mrg as the sign of @var{X}. 
    935      1.1  mrg 
    936      1.1  mrg @item @emph{Example}:
    937      1.1  mrg @smallexample
    938      1.1  mrg program test_aint
    939      1.1  mrg   real(4) x4
    940      1.1  mrg   real(8) x8
    941      1.1  mrg   x4 = 1.234E0_4
    942      1.1  mrg   x8 = 4.321_8
    943      1.1  mrg   print *, aint(x4), dint(x8)
    944      1.1  mrg   x8 = aint(x4,8)
    945      1.1  mrg end program test_aint
    946      1.1  mrg @end smallexample
    947      1.1  mrg 
    948      1.1  mrg @item @emph{Specific names}:
    949  1.1.1.3  mrg @multitable @columnfractions .20 .23 .20 .33
    950  1.1.1.3  mrg @headitem Name           @tab Argument         @tab Return type      @tab Standard
    951      1.1  mrg @item @code{AINT(A)} @tab @code{REAL(4) A} @tab @code{REAL(4)}   @tab Fortran 77 and later
    952      1.1  mrg @item @code{DINT(A)} @tab @code{REAL(8) A} @tab @code{REAL(8)}   @tab Fortran 77 and later
    953      1.1  mrg @end multitable
    954      1.1  mrg @end table
    955      1.1  mrg 
    956      1.1  mrg 
    957      1.1  mrg 
    958      1.1  mrg @node ALARM
    959      1.1  mrg @section @code{ALARM} --- Execute a routine after a given delay
    960      1.1  mrg @fnindex ALARM
    961      1.1  mrg @cindex delayed execution
    962      1.1  mrg 
    963      1.1  mrg @table @asis
    964      1.1  mrg @item @emph{Description}:
    965      1.1  mrg @code{ALARM(SECONDS, HANDLER [, STATUS])} causes external subroutine @var{HANDLER}
    966      1.1  mrg to be executed after a delay of @var{SECONDS} by using @code{alarm(2)} to
    967      1.1  mrg set up a signal and @code{signal(2)} to catch it. If @var{STATUS} is
    968      1.1  mrg supplied, it will be returned with the number of seconds remaining until
    969      1.1  mrg any previously scheduled alarm was due to be delivered, or zero if there
    970      1.1  mrg was no previously scheduled alarm.
    971      1.1  mrg 
    972      1.1  mrg @item @emph{Standard}:
    973      1.1  mrg GNU extension
    974      1.1  mrg 
    975      1.1  mrg @item @emph{Class}:
    976      1.1  mrg Subroutine
    977      1.1  mrg 
    978      1.1  mrg @item @emph{Syntax}:
    979      1.1  mrg @code{CALL ALARM(SECONDS, HANDLER [, STATUS])}
    980      1.1  mrg 
    981      1.1  mrg @item @emph{Arguments}:
    982      1.1  mrg @multitable @columnfractions .15 .70
    983      1.1  mrg @item @var{SECONDS} @tab The type of the argument shall be a scalar
    984      1.1  mrg @code{INTEGER}. It is @code{INTENT(IN)}.
    985      1.1  mrg @item @var{HANDLER} @tab Signal handler (@code{INTEGER FUNCTION} or
    986      1.1  mrg @code{SUBROUTINE}) or dummy/global @code{INTEGER} scalar. The scalar 
    987      1.1  mrg values may be either @code{SIG_IGN=1} to ignore the alarm generated 
    988      1.1  mrg or @code{SIG_DFL=0} to set the default action. It is @code{INTENT(IN)}.
    989      1.1  mrg @item @var{STATUS}  @tab (Optional) @var{STATUS} shall be a scalar
    990      1.1  mrg variable of the default @code{INTEGER} kind. It is @code{INTENT(OUT)}.
    991      1.1  mrg @end multitable
    992      1.1  mrg 
    993      1.1  mrg @item @emph{Example}:
    994      1.1  mrg @smallexample
    995      1.1  mrg program test_alarm
    996      1.1  mrg   external handler_print
    997      1.1  mrg   integer i
    998      1.1  mrg   call alarm (3, handler_print, i)
    999      1.1  mrg   print *, i
   1000      1.1  mrg   call sleep(10)
   1001      1.1  mrg end program test_alarm
   1002      1.1  mrg @end smallexample
   1003      1.1  mrg This will cause the external routine @var{handler_print} to be called
   1004      1.1  mrg after 3 seconds.
   1005      1.1  mrg @end table
   1006      1.1  mrg 
   1007      1.1  mrg 
   1008      1.1  mrg 
   1009      1.1  mrg @node ALL
   1010      1.1  mrg @section @code{ALL} --- All values in @var{MASK} along @var{DIM} are true 
   1011      1.1  mrg @fnindex ALL
   1012      1.1  mrg @cindex array, apply condition
   1013      1.1  mrg @cindex array, condition testing
   1014      1.1  mrg 
   1015      1.1  mrg @table @asis
   1016      1.1  mrg @item @emph{Description}:
   1017      1.1  mrg @code{ALL(MASK [, DIM])} determines if all the values are true in @var{MASK}
   1018      1.1  mrg in the array along dimension @var{DIM}.
   1019      1.1  mrg 
   1020      1.1  mrg @item @emph{Standard}:
   1021  1.1.1.2  mrg Fortran 90 and later
   1022      1.1  mrg 
   1023      1.1  mrg @item @emph{Class}:
   1024      1.1  mrg Transformational function
   1025      1.1  mrg 
   1026      1.1  mrg @item @emph{Syntax}:
   1027      1.1  mrg @code{RESULT = ALL(MASK [, DIM])}
   1028      1.1  mrg 
   1029      1.1  mrg @item @emph{Arguments}:
   1030      1.1  mrg @multitable @columnfractions .15 .70
   1031      1.1  mrg @item @var{MASK} @tab The type of the argument shall be @code{LOGICAL} and
   1032      1.1  mrg it shall not be scalar.
   1033      1.1  mrg @item @var{DIM}  @tab (Optional) @var{DIM} shall be a scalar integer
   1034      1.1  mrg with a value that lies between one and the rank of @var{MASK}.
   1035      1.1  mrg @end multitable
   1036      1.1  mrg 
   1037      1.1  mrg @item @emph{Return value}:
   1038      1.1  mrg @code{ALL(MASK)} returns a scalar value of type @code{LOGICAL} where
   1039      1.1  mrg the kind type parameter is the same as the kind type parameter of
   1040      1.1  mrg @var{MASK}.  If @var{DIM} is present, then @code{ALL(MASK, DIM)} returns
   1041      1.1  mrg an array with the rank of @var{MASK} minus 1.  The shape is determined from
   1042      1.1  mrg the shape of @var{MASK} where the @var{DIM} dimension is elided. 
   1043      1.1  mrg 
   1044      1.1  mrg @table @asis
   1045      1.1  mrg @item (A)
   1046      1.1  mrg @code{ALL(MASK)} is true if all elements of @var{MASK} are true.
   1047      1.1  mrg It also is true if @var{MASK} has zero size; otherwise, it is false.
   1048      1.1  mrg @item (B)
   1049      1.1  mrg If the rank of @var{MASK} is one, then @code{ALL(MASK,DIM)} is equivalent
   1050      1.1  mrg to @code{ALL(MASK)}.  If the rank is greater than one, then @code{ALL(MASK,DIM)}
   1051      1.1  mrg is determined by applying @code{ALL} to the array sections.
   1052      1.1  mrg @end table
   1053      1.1  mrg 
   1054      1.1  mrg @item @emph{Example}:
   1055      1.1  mrg @smallexample
   1056      1.1  mrg program test_all
   1057      1.1  mrg   logical l
   1058      1.1  mrg   l = all((/.true., .true., .true./))
   1059      1.1  mrg   print *, l
   1060      1.1  mrg   call section
   1061      1.1  mrg   contains
   1062      1.1  mrg     subroutine section
   1063      1.1  mrg       integer a(2,3), b(2,3)
   1064      1.1  mrg       a = 1
   1065      1.1  mrg       b = 1
   1066      1.1  mrg       b(2,2) = 2
   1067      1.1  mrg       print *, all(a .eq. b, 1)
   1068      1.1  mrg       print *, all(a .eq. b, 2)
   1069      1.1  mrg     end subroutine section
   1070      1.1  mrg end program test_all
   1071      1.1  mrg @end smallexample
   1072      1.1  mrg @end table
   1073      1.1  mrg 
   1074      1.1  mrg 
   1075      1.1  mrg 
   1076      1.1  mrg @node ALLOCATED
   1077      1.1  mrg @section @code{ALLOCATED} --- Status of an allocatable entity
   1078      1.1  mrg @fnindex ALLOCATED
   1079      1.1  mrg @cindex allocation, status
   1080      1.1  mrg 
   1081      1.1  mrg @table @asis
   1082      1.1  mrg @item @emph{Description}:
   1083      1.1  mrg @code{ALLOCATED(ARRAY)} and @code{ALLOCATED(SCALAR)} check the allocation
   1084      1.1  mrg status of @var{ARRAY} and @var{SCALAR}, respectively.
   1085      1.1  mrg 
   1086      1.1  mrg @item @emph{Standard}:
   1087  1.1.1.2  mrg Fortran 90 and later.  Note, the @code{SCALAR=} keyword and allocatable
   1088      1.1  mrg scalar entities are available in Fortran 2003 and later.
   1089      1.1  mrg 
   1090      1.1  mrg @item @emph{Class}:
   1091      1.1  mrg Inquiry function
   1092      1.1  mrg 
   1093      1.1  mrg @item @emph{Syntax}:
   1094      1.1  mrg @multitable @columnfractions .80
   1095      1.1  mrg @item @code{RESULT = ALLOCATED(ARRAY)}
   1096      1.1  mrg @item @code{RESULT = ALLOCATED(SCALAR)} 
   1097      1.1  mrg @end multitable
   1098      1.1  mrg 
   1099      1.1  mrg @item @emph{Arguments}:
   1100      1.1  mrg @multitable @columnfractions .15 .70
   1101      1.1  mrg @item @var{ARRAY}    @tab The argument shall be an @code{ALLOCATABLE} array.
   1102      1.1  mrg @item @var{SCALAR}   @tab The argument shall be an @code{ALLOCATABLE} scalar.
   1103      1.1  mrg @end multitable
   1104      1.1  mrg 
   1105      1.1  mrg @item @emph{Return value}:
   1106      1.1  mrg The return value is a scalar @code{LOGICAL} with the default logical
   1107      1.1  mrg kind type parameter.  If the argument is allocated, then the result is
   1108      1.1  mrg @code{.TRUE.}; otherwise, it returns @code{.FALSE.} 
   1109      1.1  mrg 
   1110      1.1  mrg @item @emph{Example}:
   1111      1.1  mrg @smallexample
   1112      1.1  mrg program test_allocated
   1113      1.1  mrg   integer :: i = 4
   1114      1.1  mrg   real(4), allocatable :: x(:)
   1115      1.1  mrg   if (.not. allocated(x)) allocate(x(i))
   1116      1.1  mrg end program test_allocated
   1117      1.1  mrg @end smallexample
   1118      1.1  mrg @end table
   1119      1.1  mrg 
   1120      1.1  mrg 
   1121      1.1  mrg 
   1122      1.1  mrg @node AND
   1123      1.1  mrg @section @code{AND} --- Bitwise logical AND
   1124      1.1  mrg @fnindex AND
   1125      1.1  mrg @cindex bitwise logical and
   1126      1.1  mrg @cindex logical and, bitwise
   1127      1.1  mrg 
   1128      1.1  mrg @table @asis
   1129      1.1  mrg @item @emph{Description}:
   1130      1.1  mrg Bitwise logical @code{AND}.
   1131      1.1  mrg 
   1132      1.1  mrg This intrinsic routine is provided for backwards compatibility with 
   1133      1.1  mrg GNU Fortran 77.  For integer arguments, programmers should consider
   1134      1.1  mrg the use of the @ref{IAND} intrinsic defined by the Fortran standard.
   1135      1.1  mrg 
   1136      1.1  mrg @item @emph{Standard}:
   1137      1.1  mrg GNU extension
   1138      1.1  mrg 
   1139      1.1  mrg @item @emph{Class}:
   1140      1.1  mrg Function
   1141      1.1  mrg 
   1142      1.1  mrg @item @emph{Syntax}:
   1143      1.1  mrg @code{RESULT = AND(I, J)}
   1144      1.1  mrg 
   1145      1.1  mrg @item @emph{Arguments}:
   1146      1.1  mrg @multitable @columnfractions .15 .70
   1147      1.1  mrg @item @var{I} @tab The type shall be either a scalar @code{INTEGER}
   1148      1.1  mrg type or a scalar @code{LOGICAL} type or a boz-literal-constant.
   1149      1.1  mrg @item @var{J} @tab The type shall be the same as the type of @var{I} or
   1150      1.1  mrg a boz-literal-constant. @var{I} and @var{J} shall not both be
   1151      1.1  mrg boz-literal-constants.  If either @var{I} or @var{J} is a
   1152      1.1  mrg boz-literal-constant, then the other argument must be a scalar @code{INTEGER}.
   1153      1.1  mrg @end multitable
   1154      1.1  mrg 
   1155      1.1  mrg @item @emph{Return value}:
   1156      1.1  mrg The return type is either a scalar @code{INTEGER} or a scalar
   1157      1.1  mrg @code{LOGICAL}.  If the kind type parameters differ, then the
   1158      1.1  mrg smaller kind type is implicitly converted to larger kind, and the 
   1159      1.1  mrg return has the larger kind.  A boz-literal-constant is 
   1160      1.1  mrg converted to an @code{INTEGER} with the kind type parameter of
   1161      1.1  mrg the other argument as-if a call to @ref{INT} occurred.
   1162      1.1  mrg 
   1163      1.1  mrg @item @emph{Example}:
   1164      1.1  mrg @smallexample
   1165      1.1  mrg PROGRAM test_and
   1166      1.1  mrg   LOGICAL :: T = .TRUE., F = .FALSE.
   1167      1.1  mrg   INTEGER :: a, b
   1168      1.1  mrg   DATA a / Z'F' /, b / Z'3' /
   1169      1.1  mrg 
   1170      1.1  mrg   WRITE (*,*) AND(T, T), AND(T, F), AND(F, T), AND(F, F)
   1171      1.1  mrg   WRITE (*,*) AND(a, b)
   1172      1.1  mrg END PROGRAM
   1173      1.1  mrg @end smallexample
   1174      1.1  mrg 
   1175      1.1  mrg @item @emph{See also}:
   1176  1.1.1.2  mrg Fortran 95 elemental function: @gol
   1177  1.1.1.2  mrg @ref{IAND}
   1178      1.1  mrg @end table
   1179      1.1  mrg 
   1180      1.1  mrg 
   1181      1.1  mrg 
   1182      1.1  mrg @node ANINT
   1183      1.1  mrg @section @code{ANINT} --- Nearest whole number
   1184      1.1  mrg @fnindex ANINT
   1185      1.1  mrg @fnindex DNINT
   1186      1.1  mrg @cindex ceiling
   1187      1.1  mrg @cindex rounding, ceiling
   1188      1.1  mrg 
   1189      1.1  mrg @table @asis
   1190      1.1  mrg @item @emph{Description}:
   1191      1.1  mrg @code{ANINT(A [, KIND])} rounds its argument to the nearest whole number.
   1192      1.1  mrg 
   1193      1.1  mrg @item @emph{Standard}:
   1194      1.1  mrg Fortran 77 and later
   1195      1.1  mrg 
   1196      1.1  mrg @item @emph{Class}:
   1197      1.1  mrg Elemental function
   1198      1.1  mrg 
   1199      1.1  mrg @item @emph{Syntax}:
   1200      1.1  mrg @code{RESULT = ANINT(A [, KIND])}
   1201      1.1  mrg 
   1202      1.1  mrg @item @emph{Arguments}:
   1203      1.1  mrg @multitable @columnfractions .15 .70
   1204      1.1  mrg @item @var{A}    @tab The type of the argument shall be @code{REAL}.
   1205      1.1  mrg @item @var{KIND} @tab (Optional) An @code{INTEGER} initialization
   1206      1.1  mrg expression indicating the kind parameter of the result.
   1207      1.1  mrg @end multitable
   1208      1.1  mrg 
   1209      1.1  mrg @item @emph{Return value}:
   1210      1.1  mrg The return value is of type real with the kind type parameter of the
   1211      1.1  mrg argument if the optional @var{KIND} is absent; otherwise, the kind
   1212      1.1  mrg type parameter will be given by @var{KIND}.  If @var{A} is greater than
   1213      1.1  mrg zero, @code{ANINT(A)} returns @code{AINT(X+0.5)}.  If @var{A} is
   1214      1.1  mrg less than or equal to zero then it returns @code{AINT(X-0.5)}.
   1215      1.1  mrg 
   1216      1.1  mrg @item @emph{Example}:
   1217      1.1  mrg @smallexample
   1218      1.1  mrg program test_anint
   1219      1.1  mrg   real(4) x4
   1220      1.1  mrg   real(8) x8
   1221      1.1  mrg   x4 = 1.234E0_4
   1222      1.1  mrg   x8 = 4.321_8
   1223      1.1  mrg   print *, anint(x4), dnint(x8)
   1224      1.1  mrg   x8 = anint(x4,8)
   1225      1.1  mrg end program test_anint
   1226      1.1  mrg @end smallexample
   1227      1.1  mrg 
   1228      1.1  mrg @item @emph{Specific names}:
   1229  1.1.1.3  mrg @multitable @columnfractions .20 .23 .20 .33
   1230  1.1.1.3  mrg @headitem Name            @tab Argument         @tab Return type      @tab Standard
   1231  1.1.1.3  mrg @item @code{ANINT(A)}  @tab @code{REAL(4) A} @tab @code{REAL(4)}   @tab Fortran 77 and later
   1232      1.1  mrg @item @code{DNINT(A)} @tab @code{REAL(8) A} @tab @code{REAL(8)}   @tab Fortran 77 and later
   1233      1.1  mrg @end multitable
   1234      1.1  mrg @end table
   1235      1.1  mrg 
   1236      1.1  mrg 
   1237      1.1  mrg 
   1238      1.1  mrg @node ANY
   1239      1.1  mrg @section @code{ANY} --- Any value in @var{MASK} along @var{DIM} is true 
   1240      1.1  mrg @fnindex ANY
   1241      1.1  mrg @cindex array, apply condition
   1242      1.1  mrg @cindex array, condition testing
   1243      1.1  mrg 
   1244      1.1  mrg @table @asis
   1245      1.1  mrg @item @emph{Description}:
   1246      1.1  mrg @code{ANY(MASK [, DIM])} determines if any of the values in the logical array
   1247      1.1  mrg @var{MASK} along dimension @var{DIM} are @code{.TRUE.}.
   1248      1.1  mrg 
   1249      1.1  mrg @item @emph{Standard}:
   1250  1.1.1.2  mrg Fortran 90 and later
   1251      1.1  mrg 
   1252      1.1  mrg @item @emph{Class}:
   1253      1.1  mrg Transformational function
   1254      1.1  mrg 
   1255      1.1  mrg @item @emph{Syntax}:
   1256      1.1  mrg @code{RESULT = ANY(MASK [, DIM])}
   1257      1.1  mrg 
   1258      1.1  mrg @item @emph{Arguments}:
   1259      1.1  mrg @multitable @columnfractions .15 .70
   1260      1.1  mrg @item @var{MASK} @tab The type of the argument shall be @code{LOGICAL} and
   1261      1.1  mrg it shall not be scalar.
   1262      1.1  mrg @item @var{DIM}  @tab (Optional) @var{DIM} shall be a scalar integer
   1263      1.1  mrg with a value that lies between one and the rank of @var{MASK}.
   1264      1.1  mrg @end multitable
   1265      1.1  mrg 
   1266      1.1  mrg @item @emph{Return value}:
   1267      1.1  mrg @code{ANY(MASK)} returns a scalar value of type @code{LOGICAL} where
   1268      1.1  mrg the kind type parameter is the same as the kind type parameter of
   1269      1.1  mrg @var{MASK}.  If @var{DIM} is present, then @code{ANY(MASK, DIM)} returns
   1270      1.1  mrg an array with the rank of @var{MASK} minus 1.  The shape is determined from
   1271      1.1  mrg the shape of @var{MASK} where the @var{DIM} dimension is elided. 
   1272      1.1  mrg 
   1273      1.1  mrg @table @asis
   1274      1.1  mrg @item (A)
   1275      1.1  mrg @code{ANY(MASK)} is true if any element of @var{MASK} is true;
   1276      1.1  mrg otherwise, it is false.  It also is false if @var{MASK} has zero size.
   1277      1.1  mrg @item (B)
   1278      1.1  mrg If the rank of @var{MASK} is one, then @code{ANY(MASK,DIM)} is equivalent
   1279      1.1  mrg to @code{ANY(MASK)}.  If the rank is greater than one, then @code{ANY(MASK,DIM)}
   1280      1.1  mrg is determined by applying @code{ANY} to the array sections.
   1281      1.1  mrg @end table
   1282      1.1  mrg 
   1283      1.1  mrg @item @emph{Example}:
   1284      1.1  mrg @smallexample
   1285      1.1  mrg program test_any
   1286      1.1  mrg   logical l
   1287      1.1  mrg   l = any((/.true., .true., .true./))
   1288      1.1  mrg   print *, l
   1289      1.1  mrg   call section
   1290      1.1  mrg   contains
   1291      1.1  mrg     subroutine section
   1292      1.1  mrg       integer a(2,3), b(2,3)
   1293      1.1  mrg       a = 1
   1294      1.1  mrg       b = 1
   1295      1.1  mrg       b(2,2) = 2
   1296      1.1  mrg       print *, any(a .eq. b, 1)
   1297      1.1  mrg       print *, any(a .eq. b, 2)
   1298      1.1  mrg     end subroutine section
   1299      1.1  mrg end program test_any
   1300      1.1  mrg @end smallexample
   1301      1.1  mrg @end table
   1302      1.1  mrg 
   1303      1.1  mrg 
   1304      1.1  mrg 
   1305      1.1  mrg @node ASIN
   1306      1.1  mrg @section @code{ASIN} --- Arcsine function 
   1307      1.1  mrg @fnindex ASIN
   1308      1.1  mrg @fnindex DASIN
   1309      1.1  mrg @cindex trigonometric function, sine, inverse
   1310      1.1  mrg @cindex sine, inverse
   1311      1.1  mrg 
   1312      1.1  mrg @table @asis
   1313      1.1  mrg @item @emph{Description}:
   1314      1.1  mrg @code{ASIN(X)} computes the arcsine of its @var{X} (inverse of @code{SIN(X)}).
   1315      1.1  mrg 
   1316      1.1  mrg @item @emph{Standard}:
   1317      1.1  mrg Fortran 77 and later, for a complex argument Fortran 2008 or later
   1318      1.1  mrg 
   1319      1.1  mrg @item @emph{Class}:
   1320      1.1  mrg Elemental function
   1321      1.1  mrg 
   1322      1.1  mrg @item @emph{Syntax}:
   1323      1.1  mrg @code{RESULT = ASIN(X)}
   1324      1.1  mrg 
   1325      1.1  mrg @item @emph{Arguments}:
   1326      1.1  mrg @multitable @columnfractions .15 .70
   1327      1.1  mrg @item @var{X} @tab The type shall be either @code{REAL} and a magnitude that is
   1328      1.1  mrg less than or equal to one - or be @code{COMPLEX}.
   1329      1.1  mrg @end multitable
   1330      1.1  mrg 
   1331      1.1  mrg @item @emph{Return value}:
   1332      1.1  mrg The return value is of the same type and kind as @var{X}.
   1333      1.1  mrg The real part of the result is in radians and lies in the range
   1334      1.1  mrg @math{-\pi/2 \leq \Re \asin(x) \leq \pi/2}.
   1335      1.1  mrg 
   1336      1.1  mrg @item @emph{Example}:
   1337      1.1  mrg @smallexample
   1338      1.1  mrg program test_asin
   1339      1.1  mrg   real(8) :: x = 0.866_8
   1340      1.1  mrg   x = asin(x)
   1341      1.1  mrg end program test_asin
   1342      1.1  mrg @end smallexample
   1343      1.1  mrg 
   1344      1.1  mrg @item @emph{Specific names}:
   1345  1.1.1.3  mrg @multitable @columnfractions .20 .23 .20 .33
   1346  1.1.1.3  mrg @headitem Name            @tab Argument          @tab Return type       @tab Standard
   1347      1.1  mrg @item @code{ASIN(X)}  @tab @code{REAL(4) X}  @tab @code{REAL(4)}    @tab Fortran 77 and later
   1348      1.1  mrg @item @code{DASIN(X)} @tab @code{REAL(8) X}  @tab @code{REAL(8)}    @tab Fortran 77 and later
   1349      1.1  mrg @end multitable
   1350      1.1  mrg 
   1351      1.1  mrg @item @emph{See also}:
   1352  1.1.1.2  mrg Inverse function: @gol
   1353  1.1.1.2  mrg @ref{SIN} @gol
   1354  1.1.1.2  mrg Degrees function: @gol
   1355  1.1.1.2  mrg @ref{ASIND}
   1356      1.1  mrg @end table
   1357      1.1  mrg 
   1358      1.1  mrg 
   1359      1.1  mrg 
   1360      1.1  mrg @node ASIND
   1361      1.1  mrg @section @code{ASIND} --- Arcsine function, degrees
   1362      1.1  mrg @fnindex ASIND
   1363      1.1  mrg @fnindex DASIND
   1364      1.1  mrg @cindex trigonometric function, sine, inverse, degrees
   1365      1.1  mrg @cindex sine, inverse, degrees
   1366      1.1  mrg 
   1367      1.1  mrg @table @asis
   1368      1.1  mrg @item @emph{Description}:
   1369      1.1  mrg @code{ASIND(X)} computes the arcsine of its @var{X} in degrees (inverse of
   1370      1.1  mrg @code{SIND(X)}).
   1371      1.1  mrg 
   1372      1.1  mrg This function is for compatibility only and should be avoided in favor of
   1373      1.1  mrg standard constructs wherever possible.
   1374      1.1  mrg 
   1375      1.1  mrg @item @emph{Standard}:
   1376  1.1.1.2  mrg GNU extension, enabled with @option{-fdec-math}.
   1377      1.1  mrg 
   1378      1.1  mrg @item @emph{Class}:
   1379      1.1  mrg Elemental function
   1380      1.1  mrg 
   1381      1.1  mrg @item @emph{Syntax}:
   1382      1.1  mrg @code{RESULT = ASIND(X)}
   1383      1.1  mrg 
   1384      1.1  mrg @item @emph{Arguments}:
   1385      1.1  mrg @multitable @columnfractions .15 .70
   1386      1.1  mrg @item @var{X} @tab The type shall be either @code{REAL} and a magnitude that is
   1387      1.1  mrg less than or equal to one - or be @code{COMPLEX}.
   1388      1.1  mrg @end multitable
   1389      1.1  mrg 
   1390      1.1  mrg @item @emph{Return value}:
   1391      1.1  mrg The return value is of the same type and kind as @var{X}.
   1392      1.1  mrg The real part of the result is in degrees and lies in the range
   1393      1.1  mrg @math{-90 \leq \Re \asin(x) \leq 90}.
   1394      1.1  mrg 
   1395      1.1  mrg @item @emph{Example}:
   1396      1.1  mrg @smallexample
   1397      1.1  mrg program test_asind
   1398      1.1  mrg   real(8) :: x = 0.866_8
   1399      1.1  mrg   x = asind(x)
   1400      1.1  mrg end program test_asind
   1401      1.1  mrg @end smallexample
   1402      1.1  mrg 
   1403      1.1  mrg @item @emph{Specific names}:
   1404  1.1.1.3  mrg @multitable @columnfractions .20 .23 .20 .33
   1405  1.1.1.3  mrg @headitem Name            @tab Argument          @tab Return type       @tab Standard
   1406  1.1.1.2  mrg @item @code{ASIND(X)}  @tab @code{REAL(4) X}  @tab @code{REAL(4)}    @tab GNU extension
   1407  1.1.1.2  mrg @item @code{DASIND(X)} @tab @code{REAL(8) X}  @tab @code{REAL(8)}    @tab GNU extension
   1408      1.1  mrg @end multitable
   1409      1.1  mrg 
   1410      1.1  mrg @item @emph{See also}:
   1411  1.1.1.2  mrg Inverse function: @gol
   1412  1.1.1.2  mrg @ref{SIND} @gol
   1413  1.1.1.2  mrg Radians function: @gol
   1414  1.1.1.2  mrg @ref{ASIN}
   1415      1.1  mrg @end table
   1416      1.1  mrg 
   1417      1.1  mrg 
   1418      1.1  mrg 
   1419      1.1  mrg @node ASINH
   1420      1.1  mrg @section @code{ASINH} --- Inverse hyperbolic sine function
   1421      1.1  mrg @fnindex ASINH
   1422      1.1  mrg @fnindex DASINH
   1423      1.1  mrg @cindex area hyperbolic sine
   1424      1.1  mrg @cindex inverse hyperbolic sine
   1425      1.1  mrg @cindex hyperbolic function, sine, inverse
   1426      1.1  mrg @cindex sine, hyperbolic, inverse
   1427      1.1  mrg 
   1428      1.1  mrg @table @asis
   1429      1.1  mrg @item @emph{Description}:
   1430      1.1  mrg @code{ASINH(X)} computes the inverse hyperbolic sine of @var{X}.
   1431      1.1  mrg 
   1432      1.1  mrg @item @emph{Standard}:
   1433      1.1  mrg Fortran 2008 and later
   1434      1.1  mrg 
   1435      1.1  mrg @item @emph{Class}:
   1436      1.1  mrg Elemental function
   1437      1.1  mrg 
   1438      1.1  mrg @item @emph{Syntax}:
   1439      1.1  mrg @code{RESULT = ASINH(X)}
   1440      1.1  mrg 
   1441      1.1  mrg @item @emph{Arguments}:
   1442      1.1  mrg @multitable @columnfractions .15 .70
   1443      1.1  mrg @item @var{X} @tab The type shall be @code{REAL} or @code{COMPLEX}.
   1444      1.1  mrg @end multitable
   1445      1.1  mrg 
   1446      1.1  mrg @item @emph{Return value}:
   1447      1.1  mrg The return value is of the same type and kind as  @var{X}. If @var{X} is
   1448      1.1  mrg complex, the imaginary part of the result is in radians and lies between
   1449      1.1  mrg @math{-\pi/2 \leq \Im \asinh(x) \leq \pi/2}.
   1450      1.1  mrg 
   1451      1.1  mrg @item @emph{Example}:
   1452      1.1  mrg @smallexample
   1453      1.1  mrg PROGRAM test_asinh
   1454      1.1  mrg   REAL(8), DIMENSION(3) :: x = (/ -1.0, 0.0, 1.0 /)
   1455      1.1  mrg   WRITE (*,*) ASINH(x)
   1456      1.1  mrg END PROGRAM
   1457      1.1  mrg @end smallexample
   1458      1.1  mrg 
   1459      1.1  mrg @item @emph{Specific names}:
   1460  1.1.1.3  mrg @multitable @columnfractions .20 .23 .20 .33
   1461  1.1.1.3  mrg @headitem Name             @tab Argument          @tab Return type       @tab Standard
   1462      1.1  mrg @item @code{DASINH(X)} @tab @code{REAL(8) X}  @tab @code{REAL(8)}    @tab GNU extension.
   1463      1.1  mrg @end multitable
   1464      1.1  mrg 
   1465      1.1  mrg @item @emph{See also}:
   1466  1.1.1.2  mrg Inverse function: @gol
   1467  1.1.1.2  mrg @ref{SINH}
   1468      1.1  mrg @end table
   1469      1.1  mrg 
   1470      1.1  mrg 
   1471      1.1  mrg 
   1472      1.1  mrg @node ASSOCIATED
   1473      1.1  mrg @section @code{ASSOCIATED} --- Status of a pointer or pointer/target pair 
   1474      1.1  mrg @fnindex ASSOCIATED
   1475      1.1  mrg @cindex pointer, status
   1476      1.1  mrg @cindex association status
   1477      1.1  mrg 
   1478      1.1  mrg @table @asis
   1479      1.1  mrg @item @emph{Description}:
   1480      1.1  mrg @code{ASSOCIATED(POINTER [, TARGET])} determines the status of the pointer
   1481      1.1  mrg @var{POINTER} or if @var{POINTER} is associated with the target @var{TARGET}.
   1482      1.1  mrg 
   1483      1.1  mrg @item @emph{Standard}:
   1484  1.1.1.2  mrg Fortran 90 and later
   1485      1.1  mrg 
   1486      1.1  mrg @item @emph{Class}:
   1487      1.1  mrg Inquiry function
   1488      1.1  mrg 
   1489      1.1  mrg @item @emph{Syntax}:
   1490      1.1  mrg @code{RESULT = ASSOCIATED(POINTER [, TARGET])}
   1491      1.1  mrg 
   1492      1.1  mrg @item @emph{Arguments}:
   1493      1.1  mrg @multitable @columnfractions .15 .70
   1494      1.1  mrg @item @var{POINTER} @tab @var{POINTER} shall have the @code{POINTER} attribute
   1495      1.1  mrg and it can be of any type.
   1496      1.1  mrg @item @var{TARGET} @tab (Optional) @var{TARGET} shall be a pointer or
   1497      1.1  mrg a target.  It must have the same type, kind type parameter, and
   1498      1.1  mrg array rank as @var{POINTER}.
   1499      1.1  mrg @end multitable
   1500      1.1  mrg The association status of neither @var{POINTER} nor @var{TARGET} shall be
   1501      1.1  mrg undefined.
   1502      1.1  mrg 
   1503      1.1  mrg @item @emph{Return value}:
   1504      1.1  mrg @code{ASSOCIATED(POINTER)} returns a scalar value of type @code{LOGICAL(4)}.
   1505      1.1  mrg There are several cases:
   1506      1.1  mrg @table @asis
   1507      1.1  mrg @item (A) When the optional @var{TARGET} is not present then
   1508      1.1  mrg @code{ASSOCIATED(POINTER)} is true if @var{POINTER} is associated with a target; otherwise, it returns false.
   1509      1.1  mrg @item (B) If @var{TARGET} is present and a scalar target, the result is true if
   1510      1.1  mrg @var{TARGET} is not a zero-sized storage sequence and the target associated with @var{POINTER} occupies the same storage units.  If @var{POINTER} is
   1511      1.1  mrg disassociated, the result is false.
   1512      1.1  mrg @item (C) If @var{TARGET} is present and an array target, the result is true if
   1513      1.1  mrg @var{TARGET} and @var{POINTER} have the same shape, are not zero-sized arrays,
   1514      1.1  mrg are arrays whose elements are not zero-sized storage sequences, and
   1515      1.1  mrg @var{TARGET} and @var{POINTER} occupy the same storage units in array element
   1516      1.1  mrg order.
   1517      1.1  mrg As in case(B), the result is false, if @var{POINTER} is disassociated.
   1518      1.1  mrg @item (D) If @var{TARGET} is present and an scalar pointer, the result is true
   1519      1.1  mrg if @var{TARGET} is associated with @var{POINTER}, the target associated with
   1520      1.1  mrg @var{TARGET} are not zero-sized storage sequences and occupy the same storage
   1521      1.1  mrg units.
   1522      1.1  mrg The result is false, if either @var{TARGET} or @var{POINTER} is disassociated.
   1523      1.1  mrg @item (E) If @var{TARGET} is present and an array pointer, the result is true if
   1524      1.1  mrg target associated with @var{POINTER} and the target associated with @var{TARGET}
   1525      1.1  mrg have the same shape, are not zero-sized arrays, are arrays whose elements are
   1526      1.1  mrg not zero-sized storage sequences, and @var{TARGET} and @var{POINTER} occupy
   1527      1.1  mrg the same storage units in array element order.
   1528      1.1  mrg The result is false, if either @var{TARGET} or @var{POINTER} is disassociated.
   1529      1.1  mrg @end table
   1530      1.1  mrg 
   1531      1.1  mrg @item @emph{Example}:
   1532      1.1  mrg @smallexample
   1533      1.1  mrg program test_associated
   1534      1.1  mrg    implicit none
   1535      1.1  mrg    real, target  :: tgt(2) = (/1., 2./)
   1536      1.1  mrg    real, pointer :: ptr(:)
   1537      1.1  mrg    ptr => tgt
   1538      1.1  mrg    if (associated(ptr)     .eqv. .false.) call abort
   1539      1.1  mrg    if (associated(ptr,tgt) .eqv. .false.) call abort
   1540      1.1  mrg end program test_associated
   1541      1.1  mrg @end smallexample
   1542      1.1  mrg 
   1543      1.1  mrg @item @emph{See also}:
   1544      1.1  mrg @ref{NULL}
   1545      1.1  mrg @end table
   1546      1.1  mrg 
   1547      1.1  mrg 
   1548      1.1  mrg 
   1549      1.1  mrg @node ATAN
   1550      1.1  mrg @section @code{ATAN} --- Arctangent function 
   1551      1.1  mrg @fnindex ATAN
   1552      1.1  mrg @fnindex DATAN
   1553      1.1  mrg @cindex trigonometric function, tangent, inverse
   1554      1.1  mrg @cindex tangent, inverse
   1555      1.1  mrg 
   1556      1.1  mrg @table @asis
   1557      1.1  mrg @item @emph{Description}:
   1558      1.1  mrg @code{ATAN(X)} computes the arctangent of @var{X}.
   1559      1.1  mrg 
   1560      1.1  mrg @item @emph{Standard}:
   1561      1.1  mrg Fortran 77 and later, for a complex argument and for two arguments
   1562      1.1  mrg Fortran 2008 or later
   1563      1.1  mrg 
   1564      1.1  mrg @item @emph{Class}:
   1565      1.1  mrg Elemental function
   1566      1.1  mrg 
   1567      1.1  mrg @item @emph{Syntax}:
   1568      1.1  mrg @multitable @columnfractions .80
   1569      1.1  mrg @item @code{RESULT = ATAN(X)}
   1570      1.1  mrg @item @code{RESULT = ATAN(Y, X)}
   1571      1.1  mrg @end multitable
   1572      1.1  mrg 
   1573      1.1  mrg @item @emph{Arguments}:
   1574      1.1  mrg @multitable @columnfractions .15 .70
   1575      1.1  mrg @item @var{X} @tab The type shall be @code{REAL} or @code{COMPLEX};
   1576      1.1  mrg if @var{Y} is present, @var{X} shall be REAL.
   1577  1.1.1.2  mrg @item @var{Y} @tab The type and kind type parameter shall be the same as @var{X}.
   1578      1.1  mrg @end multitable
   1579      1.1  mrg 
   1580      1.1  mrg @item @emph{Return value}:
   1581      1.1  mrg The return value is of the same type and kind as @var{X}.
   1582      1.1  mrg If @var{Y} is present, the result is identical to @code{ATAN2(Y,X)}.
   1583      1.1  mrg Otherwise, it the arcus tangent of @var{X}, where the real part of
   1584      1.1  mrg the result is in radians and lies in the range
   1585      1.1  mrg @math{-\pi/2 \leq \Re \atan(x) \leq \pi/2}.
   1586      1.1  mrg 
   1587      1.1  mrg @item @emph{Example}:
   1588      1.1  mrg @smallexample
   1589      1.1  mrg program test_atan
   1590      1.1  mrg   real(8) :: x = 2.866_8
   1591      1.1  mrg   x = atan(x)
   1592      1.1  mrg end program test_atan
   1593      1.1  mrg @end smallexample
   1594      1.1  mrg 
   1595      1.1  mrg @item @emph{Specific names}:
   1596  1.1.1.3  mrg @multitable @columnfractions .20 .23 .20 .33
   1597  1.1.1.3  mrg @headitem Name            @tab Argument          @tab Return type       @tab Standard
   1598      1.1  mrg @item @code{ATAN(X)}  @tab @code{REAL(4) X}  @tab @code{REAL(4)}    @tab Fortran 77 and later
   1599      1.1  mrg @item @code{DATAN(X)} @tab @code{REAL(8) X}  @tab @code{REAL(8)}    @tab Fortran 77 and later
   1600      1.1  mrg @end multitable
   1601      1.1  mrg 
   1602      1.1  mrg @item @emph{See also}:
   1603  1.1.1.2  mrg Inverse function: @gol
   1604  1.1.1.2  mrg @ref{TAN} @gol
   1605  1.1.1.2  mrg Degrees function: @gol
   1606  1.1.1.2  mrg @ref{ATAND}
   1607      1.1  mrg @end table
   1608      1.1  mrg 
   1609      1.1  mrg 
   1610      1.1  mrg 
   1611      1.1  mrg @node ATAND
   1612      1.1  mrg @section @code{ATAND} --- Arctangent function, degrees
   1613      1.1  mrg @fnindex ATAND
   1614      1.1  mrg @fnindex DATAND
   1615      1.1  mrg @cindex trigonometric function, tangent, inverse, degrees
   1616      1.1  mrg @cindex tangent, inverse, degrees
   1617      1.1  mrg 
   1618      1.1  mrg @table @asis
   1619      1.1  mrg @item @emph{Description}:
   1620      1.1  mrg @code{ATAND(X)} computes the arctangent of @var{X} in degrees (inverse of
   1621      1.1  mrg @ref{TAND}).
   1622      1.1  mrg 
   1623      1.1  mrg This function is for compatibility only and should be avoided in favor of
   1624      1.1  mrg standard constructs wherever possible.
   1625      1.1  mrg 
   1626      1.1  mrg @item @emph{Standard}:
   1627  1.1.1.2  mrg GNU extension, enabled with @option{-fdec-math}.
   1628      1.1  mrg 
   1629      1.1  mrg @item @emph{Class}:
   1630      1.1  mrg Elemental function
   1631      1.1  mrg 
   1632      1.1  mrg @item @emph{Syntax}:
   1633      1.1  mrg @multitable @columnfractions .80
   1634      1.1  mrg @item @code{RESULT = ATAND(X)}
   1635      1.1  mrg @item @code{RESULT = ATAND(Y, X)}
   1636      1.1  mrg @end multitable
   1637      1.1  mrg 
   1638      1.1  mrg @item @emph{Arguments}:
   1639      1.1  mrg @multitable @columnfractions .15 .70
   1640      1.1  mrg @item @var{X} @tab The type shall be @code{REAL} or @code{COMPLEX};
   1641      1.1  mrg if @var{Y} is present, @var{X} shall be REAL.
   1642  1.1.1.2  mrg @item @var{Y} @tab The type and kind type parameter shall be the same as @var{X}.
   1643      1.1  mrg @end multitable
   1644      1.1  mrg 
   1645      1.1  mrg @item @emph{Return value}:
   1646      1.1  mrg The return value is of the same type and kind as @var{X}.
   1647      1.1  mrg If @var{Y} is present, the result is identical to @code{ATAND2(Y,X)}.
   1648      1.1  mrg Otherwise, it is the arcus tangent of @var{X}, where the real part of
   1649      1.1  mrg the result is in degrees and lies in the range
   1650      1.1  mrg @math{-90 \leq \Re \atand(x) \leq 90}.
   1651      1.1  mrg 
   1652      1.1  mrg @item @emph{Example}:
   1653      1.1  mrg @smallexample
   1654      1.1  mrg program test_atand
   1655      1.1  mrg   real(8) :: x = 2.866_8
   1656      1.1  mrg   x = atand(x)
   1657      1.1  mrg end program test_atand
   1658      1.1  mrg @end smallexample
   1659      1.1  mrg 
   1660      1.1  mrg @item @emph{Specific names}:
   1661  1.1.1.3  mrg @multitable @columnfractions .23 .23 .20 .30
   1662  1.1.1.3  mrg @headitem Name            @tab Argument          @tab Return type       @tab Standard
   1663  1.1.1.2  mrg @item @code{ATAND(X)}  @tab @code{REAL(4) X}  @tab @code{REAL(4)}    @tab GNU extension
   1664  1.1.1.2  mrg @item @code{DATAND(X)} @tab @code{REAL(8) X}  @tab @code{REAL(8)}    @tab GNU extension
   1665      1.1  mrg @end multitable
   1666      1.1  mrg 
   1667      1.1  mrg @item @emph{See also}:
   1668  1.1.1.2  mrg Inverse function: @gol
   1669  1.1.1.2  mrg @ref{TAND} @gol
   1670  1.1.1.2  mrg Radians function: @gol
   1671  1.1.1.2  mrg @ref{ATAN}
   1672      1.1  mrg @end table
   1673      1.1  mrg 
   1674      1.1  mrg 
   1675      1.1  mrg 
   1676      1.1  mrg @node ATAN2
   1677      1.1  mrg @section @code{ATAN2} --- Arctangent function 
   1678      1.1  mrg @fnindex ATAN2
   1679      1.1  mrg @fnindex DATAN2
   1680      1.1  mrg @cindex trigonometric function, tangent, inverse
   1681      1.1  mrg @cindex tangent, inverse
   1682      1.1  mrg 
   1683      1.1  mrg @table @asis
   1684      1.1  mrg @item @emph{Description}:
   1685      1.1  mrg @code{ATAN2(Y, X)} computes the principal value of the argument
   1686      1.1  mrg function of the complex number @math{X + i Y}.  This function can
   1687      1.1  mrg be used to transform from Cartesian into polar coordinates and
   1688      1.1  mrg allows to determine the angle in the correct quadrant.
   1689      1.1  mrg 
   1690      1.1  mrg @item @emph{Standard}:
   1691      1.1  mrg Fortran 77 and later
   1692      1.1  mrg 
   1693      1.1  mrg @item @emph{Class}:
   1694      1.1  mrg Elemental function
   1695      1.1  mrg 
   1696      1.1  mrg @item @emph{Syntax}:
   1697      1.1  mrg @code{RESULT = ATAN2(Y, X)}
   1698      1.1  mrg 
   1699      1.1  mrg @item @emph{Arguments}:
   1700      1.1  mrg @multitable @columnfractions .15 .70
   1701      1.1  mrg @item @var{Y} @tab The type shall be @code{REAL}.
   1702      1.1  mrg @item @var{X} @tab The type and kind type parameter shall be the same as @var{Y}.
   1703      1.1  mrg If @var{Y} is zero, then @var{X} must be nonzero.
   1704      1.1  mrg @end multitable
   1705      1.1  mrg 
   1706      1.1  mrg @item @emph{Return value}:
   1707      1.1  mrg The return value has the same type and kind type parameter as @var{Y}. It
   1708      1.1  mrg is the principal value of the complex number @math{X + i Y}.  If @var{X}
   1709      1.1  mrg is nonzero, then it lies in the range @math{-\pi \le \atan (x) \leq \pi}.
   1710      1.1  mrg The sign is positive if @var{Y} is positive.  If @var{Y} is zero, then
   1711      1.1  mrg the return value is zero if @var{X} is strictly positive, @math{\pi} if
   1712      1.1  mrg @var{X} is negative and @var{Y} is positive zero (or the processor does
   1713      1.1  mrg not handle signed zeros), and @math{-\pi} if @var{X} is negative and
   1714      1.1  mrg @var{Y} is negative zero.  Finally, if @var{X} is zero, then the
   1715      1.1  mrg magnitude of the result is @math{\pi/2}.
   1716      1.1  mrg 
   1717      1.1  mrg @item @emph{Example}:
   1718      1.1  mrg @smallexample
   1719      1.1  mrg program test_atan2
   1720      1.1  mrg   real(4) :: x = 1.e0_4, y = 0.5e0_4
   1721      1.1  mrg   x = atan2(y,x)
   1722      1.1  mrg end program test_atan2
   1723      1.1  mrg @end smallexample
   1724      1.1  mrg 
   1725      1.1  mrg @item @emph{Specific names}:
   1726  1.1.1.3  mrg @multitable @columnfractions .22 .22 .20 .32
   1727  1.1.1.3  mrg @headitem Name                @tab Argument            @tab Return type    @tab Standard
   1728      1.1  mrg @item @code{ATAN2(X, Y)}  @tab @code{REAL(4) X, Y} @tab @code{REAL(4)} @tab Fortran 77 and later
   1729      1.1  mrg @item @code{DATAN2(X, Y)} @tab @code{REAL(8) X, Y} @tab @code{REAL(8)} @tab Fortran 77 and later
   1730      1.1  mrg @end multitable
   1731      1.1  mrg 
   1732      1.1  mrg @item @emph{See also}:
   1733  1.1.1.2  mrg Alias: @gol
   1734  1.1.1.2  mrg @ref{ATAN} @gol
   1735  1.1.1.2  mrg Degrees function: @gol
   1736  1.1.1.2  mrg @ref{ATAN2D}
   1737      1.1  mrg @end table
   1738      1.1  mrg 
   1739      1.1  mrg 
   1740      1.1  mrg 
   1741      1.1  mrg @node ATAN2D
   1742      1.1  mrg @section @code{ATAN2D} --- Arctangent function, degrees
   1743      1.1  mrg @fnindex ATAN2D
   1744      1.1  mrg @fnindex DATAN2D
   1745      1.1  mrg @cindex trigonometric function, tangent, inverse, degrees
   1746      1.1  mrg @cindex tangent, inverse, degrees
   1747      1.1  mrg 
   1748      1.1  mrg @table @asis
   1749      1.1  mrg @item @emph{Description}:
   1750      1.1  mrg @code{ATAN2D(Y, X)} computes the principal value of the argument
   1751      1.1  mrg function of the complex number @math{X + i Y} in degrees.  This function can
   1752      1.1  mrg be used to transform from Cartesian into polar coordinates and
   1753      1.1  mrg allows to determine the angle in the correct quadrant.
   1754      1.1  mrg 
   1755      1.1  mrg This function is for compatibility only and should be avoided in favor of
   1756      1.1  mrg standard constructs wherever possible.
   1757      1.1  mrg 
   1758      1.1  mrg @item @emph{Standard}:
   1759  1.1.1.2  mrg GNU extension, enabled with @option{-fdec-math}.
   1760      1.1  mrg 
   1761      1.1  mrg @item @emph{Class}:
   1762      1.1  mrg Elemental function
   1763      1.1  mrg 
   1764      1.1  mrg @item @emph{Syntax}:
   1765      1.1  mrg @code{RESULT = ATAN2D(Y, X)}
   1766      1.1  mrg 
   1767      1.1  mrg @item @emph{Arguments}:
   1768      1.1  mrg @multitable @columnfractions .15 .70
   1769      1.1  mrg @item @var{Y} @tab The type shall be @code{REAL}.
   1770      1.1  mrg @item @var{X} @tab The type and kind type parameter shall be the same as @var{Y}.
   1771      1.1  mrg If @var{Y} is zero, then @var{X} must be nonzero.
   1772      1.1  mrg @end multitable
   1773      1.1  mrg 
   1774      1.1  mrg @item @emph{Return value}:
   1775      1.1  mrg The return value has the same type and kind type parameter as @var{Y}. It
   1776      1.1  mrg is the principal value of the complex number @math{X + i Y}.  If @var{X}
   1777      1.1  mrg is nonzero, then it lies in the range @math{-180 \le \atan (x) \leq 180}.
   1778      1.1  mrg The sign is positive if @var{Y} is positive.  If @var{Y} is zero, then
   1779      1.1  mrg the return value is zero if @var{X} is strictly positive, @math{180} if
   1780      1.1  mrg @var{X} is negative and @var{Y} is positive zero (or the processor does
   1781      1.1  mrg not handle signed zeros), and @math{-180} if @var{X} is negative and
   1782      1.1  mrg @var{Y} is negative zero.  Finally, if @var{X} is zero, then the
   1783      1.1  mrg magnitude of the result is @math{90}.
   1784      1.1  mrg 
   1785      1.1  mrg @item @emph{Example}:
   1786      1.1  mrg @smallexample
   1787      1.1  mrg program test_atan2d
   1788      1.1  mrg   real(4) :: x = 1.e0_4, y = 0.5e0_4
   1789      1.1  mrg   x = atan2d(y,x)
   1790      1.1  mrg end program test_atan2d
   1791      1.1  mrg @end smallexample
   1792      1.1  mrg 
   1793      1.1  mrg @item @emph{Specific names}:
   1794  1.1.1.3  mrg @multitable @columnfractions .23 .23 .20 .30
   1795  1.1.1.3  mrg @headitem Name                @tab Argument            @tab Return type    @tab Standard
   1796  1.1.1.2  mrg @item @code{ATAN2D(X, Y)}  @tab @code{REAL(4) X, Y} @tab @code{REAL(4)} @tab GNU extension
   1797  1.1.1.2  mrg @item @code{DATAN2D(X, Y)} @tab @code{REAL(8) X, Y} @tab @code{REAL(8)} @tab GNU extension
   1798      1.1  mrg @end multitable
   1799      1.1  mrg 
   1800      1.1  mrg @item @emph{See also}:
   1801  1.1.1.2  mrg Alias: @gol
   1802  1.1.1.2  mrg @ref{ATAND} @gol
   1803  1.1.1.2  mrg Radians function: @gol
   1804  1.1.1.2  mrg @ref{ATAN2}
   1805      1.1  mrg @end table
   1806      1.1  mrg 
   1807      1.1  mrg 
   1808      1.1  mrg 
   1809      1.1  mrg @node ATANH
   1810      1.1  mrg @section @code{ATANH} --- Inverse hyperbolic tangent function
   1811      1.1  mrg @fnindex ATANH
   1812      1.1  mrg @fnindex DATANH
   1813      1.1  mrg @cindex area hyperbolic tangent
   1814      1.1  mrg @cindex inverse hyperbolic tangent
   1815      1.1  mrg @cindex hyperbolic function, tangent, inverse
   1816      1.1  mrg @cindex tangent, hyperbolic, inverse
   1817      1.1  mrg 
   1818      1.1  mrg @table @asis
   1819      1.1  mrg @item @emph{Description}:
   1820      1.1  mrg @code{ATANH(X)} computes the inverse hyperbolic tangent of @var{X}.
   1821      1.1  mrg 
   1822      1.1  mrg @item @emph{Standard}:
   1823      1.1  mrg Fortran 2008 and later
   1824      1.1  mrg 
   1825      1.1  mrg @item @emph{Class}:
   1826      1.1  mrg Elemental function
   1827      1.1  mrg 
   1828      1.1  mrg @item @emph{Syntax}:
   1829      1.1  mrg @code{RESULT = ATANH(X)}
   1830      1.1  mrg 
   1831      1.1  mrg @item @emph{Arguments}:
   1832      1.1  mrg @multitable @columnfractions .15 .70
   1833      1.1  mrg @item @var{X} @tab The type shall be @code{REAL} or @code{COMPLEX}.
   1834      1.1  mrg @end multitable
   1835      1.1  mrg 
   1836      1.1  mrg @item @emph{Return value}:
   1837      1.1  mrg The return value has same type and kind as @var{X}. If @var{X} is
   1838      1.1  mrg complex, the imaginary part of the result is in radians and lies between
   1839      1.1  mrg @math{-\pi/2 \leq \Im \atanh(x) \leq \pi/2}.
   1840      1.1  mrg 
   1841      1.1  mrg @item @emph{Example}:
   1842      1.1  mrg @smallexample
   1843      1.1  mrg PROGRAM test_atanh
   1844      1.1  mrg   REAL, DIMENSION(3) :: x = (/ -1.0, 0.0, 1.0 /)
   1845      1.1  mrg   WRITE (*,*) ATANH(x)
   1846      1.1  mrg END PROGRAM
   1847      1.1  mrg @end smallexample
   1848      1.1  mrg 
   1849      1.1  mrg @item @emph{Specific names}:
   1850  1.1.1.3  mrg @multitable @columnfractions .20 .23 .20 .33
   1851  1.1.1.3  mrg @headitem Name             @tab Argument          @tab Return type       @tab Standard
   1852      1.1  mrg @item @code{DATANH(X)} @tab @code{REAL(8) X}  @tab @code{REAL(8)}    @tab GNU extension
   1853      1.1  mrg @end multitable
   1854      1.1  mrg 
   1855      1.1  mrg @item @emph{See also}:
   1856  1.1.1.2  mrg Inverse function: @gol
   1857  1.1.1.2  mrg @ref{TANH}
   1858      1.1  mrg @end table
   1859      1.1  mrg 
   1860      1.1  mrg 
   1861      1.1  mrg 
   1862      1.1  mrg @node ATOMIC_ADD
   1863      1.1  mrg @section @code{ATOMIC_ADD} --- Atomic ADD operation
   1864      1.1  mrg @fnindex ATOMIC_ADD
   1865      1.1  mrg @cindex Atomic subroutine, add
   1866      1.1  mrg 
   1867      1.1  mrg @table @asis
   1868      1.1  mrg @item @emph{Description}:
   1869  1.1.1.3  mrg @code{ATOMIC_ADD(ATOM, VALUE)} atomically adds the value of @var{VALUE} to the
   1870      1.1  mrg variable @var{ATOM}. When @var{STAT} is present and the invocation was
   1871      1.1  mrg successful, it is assigned the value 0. If it is present and the invocation
   1872      1.1  mrg has failed, it is assigned a positive value; in particular, for a coindexed
   1873      1.1  mrg @var{ATOM}, if the remote image has stopped, it is assigned the value of
   1874      1.1  mrg @code{ISO_FORTRAN_ENV}'s @code{STAT_STOPPED_IMAGE} and if the remote image has
   1875      1.1  mrg failed, the value @code{STAT_FAILED_IMAGE}.
   1876      1.1  mrg 
   1877      1.1  mrg @item @emph{Standard}:
   1878      1.1  mrg TS 18508 or later
   1879      1.1  mrg 
   1880      1.1  mrg @item @emph{Class}:
   1881      1.1  mrg Atomic subroutine
   1882      1.1  mrg 
   1883      1.1  mrg @item @emph{Syntax}:
   1884      1.1  mrg @code{CALL ATOMIC_ADD (ATOM, VALUE [, STAT])}
   1885      1.1  mrg 
   1886      1.1  mrg @item @emph{Arguments}:
   1887      1.1  mrg @multitable @columnfractions .15 .70
   1888      1.1  mrg @item @var{ATOM}   @tab Scalar coarray or coindexed variable of integer
   1889      1.1  mrg type with @code{ATOMIC_INT_KIND} kind.
   1890      1.1  mrg @item @var{VALUE}  @tab Scalar of the same type as @var{ATOM}. If the kind
   1891      1.1  mrg is different, the value is converted to the kind of @var{ATOM}.
   1892      1.1  mrg @item @var{STAT}   @tab (optional) Scalar default-kind integer variable.
   1893      1.1  mrg @end multitable
   1894      1.1  mrg 
   1895      1.1  mrg @item @emph{Example}:
   1896      1.1  mrg @smallexample
   1897      1.1  mrg program atomic
   1898      1.1  mrg   use iso_fortran_env
   1899      1.1  mrg   integer(atomic_int_kind) :: atom[*]
   1900      1.1  mrg   call atomic_add (atom[1], this_image())
   1901      1.1  mrg end program atomic
   1902      1.1  mrg @end smallexample
   1903      1.1  mrg 
   1904      1.1  mrg @item @emph{See also}:
   1905  1.1.1.2  mrg @ref{ATOMIC_DEFINE}, @gol
   1906  1.1.1.2  mrg @ref{ATOMIC_FETCH_ADD}, @gol
   1907  1.1.1.2  mrg @ref{ISO_FORTRAN_ENV}, @gol
   1908  1.1.1.2  mrg @ref{ATOMIC_AND}, @gol
   1909  1.1.1.2  mrg @ref{ATOMIC_OR}, @gol
   1910  1.1.1.2  mrg @ref{ATOMIC_XOR}
   1911      1.1  mrg @end table
   1912      1.1  mrg 
   1913      1.1  mrg 
   1914      1.1  mrg 
   1915      1.1  mrg 
   1916      1.1  mrg @node ATOMIC_AND
   1917      1.1  mrg @section @code{ATOMIC_AND} --- Atomic bitwise AND operation
   1918      1.1  mrg @fnindex ATOMIC_AND
   1919      1.1  mrg @cindex Atomic subroutine, AND
   1920      1.1  mrg 
   1921      1.1  mrg @table @asis
   1922      1.1  mrg @item @emph{Description}:
   1923      1.1  mrg @code{ATOMIC_AND(ATOM, VALUE)} atomically defines @var{ATOM} with the bitwise
   1924      1.1  mrg AND between the values of @var{ATOM} and @var{VALUE}. When @var{STAT} is present
   1925      1.1  mrg and the invocation was successful, it is assigned the value 0. If it is present
   1926      1.1  mrg and the invocation has failed, it is assigned a positive value; in particular,
   1927      1.1  mrg for a coindexed @var{ATOM}, if the remote image has stopped, it is assigned the
   1928      1.1  mrg value of @code{ISO_FORTRAN_ENV}'s @code{STAT_STOPPED_IMAGE} and if the remote
   1929      1.1  mrg image has failed, the value @code{STAT_FAILED_IMAGE}.
   1930      1.1  mrg 
   1931      1.1  mrg @item @emph{Standard}:
   1932      1.1  mrg TS 18508 or later
   1933      1.1  mrg 
   1934      1.1  mrg @item @emph{Class}:
   1935      1.1  mrg Atomic subroutine
   1936      1.1  mrg 
   1937      1.1  mrg @item @emph{Syntax}:
   1938      1.1  mrg @code{CALL ATOMIC_AND (ATOM, VALUE [, STAT])}
   1939      1.1  mrg 
   1940      1.1  mrg @item @emph{Arguments}:
   1941      1.1  mrg @multitable @columnfractions .15 .70
   1942      1.1  mrg @item @var{ATOM}   @tab Scalar coarray or coindexed variable of integer
   1943      1.1  mrg type with @code{ATOMIC_INT_KIND} kind.
   1944      1.1  mrg @item @var{VALUE}  @tab Scalar of the same type as @var{ATOM}. If the kind
   1945      1.1  mrg is different, the value is converted to the kind of @var{ATOM}.
   1946      1.1  mrg @item @var{STAT}   @tab (optional) Scalar default-kind integer variable.
   1947      1.1  mrg @end multitable
   1948      1.1  mrg 
   1949      1.1  mrg @item @emph{Example}:
   1950      1.1  mrg @smallexample
   1951      1.1  mrg program atomic
   1952      1.1  mrg   use iso_fortran_env
   1953      1.1  mrg   integer(atomic_int_kind) :: atom[*]
   1954      1.1  mrg   call atomic_and (atom[1], int(b'10100011101'))
   1955      1.1  mrg end program atomic
   1956      1.1  mrg @end smallexample
   1957      1.1  mrg 
   1958      1.1  mrg @item @emph{See also}:
   1959  1.1.1.2  mrg @ref{ATOMIC_DEFINE}, @gol
   1960  1.1.1.2  mrg @ref{ATOMIC_FETCH_AND}, @gol
   1961  1.1.1.2  mrg @ref{ISO_FORTRAN_ENV}, @gol
   1962  1.1.1.2  mrg @ref{ATOMIC_ADD}, @gol
   1963  1.1.1.2  mrg @ref{ATOMIC_OR}, @gol
   1964  1.1.1.2  mrg @ref{ATOMIC_XOR}
   1965      1.1  mrg @end table
   1966      1.1  mrg 
   1967      1.1  mrg 
   1968      1.1  mrg 
   1969      1.1  mrg @node ATOMIC_CAS
   1970      1.1  mrg @section @code{ATOMIC_CAS} --- Atomic compare and swap
   1971      1.1  mrg @fnindex ATOMIC_DEFINE
   1972      1.1  mrg @cindex Atomic subroutine, compare and swap
   1973      1.1  mrg 
   1974      1.1  mrg @table @asis
   1975      1.1  mrg @item @emph{Description}:
   1976      1.1  mrg @code{ATOMIC_CAS} compares the variable @var{ATOM} with the value of
   1977      1.1  mrg @var{COMPARE}; if the value is the same, @var{ATOM} is set to the value
   1978      1.1  mrg of @var{NEW}. Additionally, @var{OLD} is set to the value of @var{ATOM}
   1979      1.1  mrg that was used for the comparison.  When @var{STAT} is present and the invocation
   1980      1.1  mrg was successful, it is assigned the value 0. If it is present and the invocation
   1981      1.1  mrg has failed, it is assigned a positive value; in particular, for a coindexed
   1982      1.1  mrg @var{ATOM}, if the remote image has stopped, it is assigned the value of
   1983      1.1  mrg @code{ISO_FORTRAN_ENV}'s @code{STAT_STOPPED_IMAGE} and if the remote image has
   1984      1.1  mrg failed, the value @code{STAT_FAILED_IMAGE}.
   1985      1.1  mrg 
   1986      1.1  mrg @item @emph{Standard}:
   1987      1.1  mrg TS 18508 or later
   1988      1.1  mrg 
   1989      1.1  mrg @item @emph{Class}:
   1990      1.1  mrg Atomic subroutine
   1991      1.1  mrg 
   1992      1.1  mrg @item @emph{Syntax}:
   1993      1.1  mrg @code{CALL ATOMIC_CAS (ATOM, OLD, COMPARE, NEW [, STAT])}
   1994      1.1  mrg 
   1995      1.1  mrg @item @emph{Arguments}:
   1996      1.1  mrg @multitable @columnfractions .15 .70
   1997      1.1  mrg @item @var{ATOM}    @tab Scalar coarray or coindexed variable of either integer
   1998      1.1  mrg type with @code{ATOMIC_INT_KIND} kind or logical type with
   1999      1.1  mrg @code{ATOMIC_LOGICAL_KIND} kind.
   2000      1.1  mrg @item @var{OLD}     @tab Scalar of the same type and kind as @var{ATOM}.
   2001      1.1  mrg @item @var{COMPARE} @tab Scalar variable of the same type and kind as
   2002      1.1  mrg @var{ATOM}.
   2003      1.1  mrg @item @var{NEW}     @tab Scalar variable of the same type as @var{ATOM}. If kind
   2004      1.1  mrg is different, the value is converted to the kind of @var{ATOM}.
   2005      1.1  mrg @item @var{STAT}    @tab (optional) Scalar default-kind integer variable.
   2006      1.1  mrg @end multitable
   2007      1.1  mrg 
   2008      1.1  mrg @item @emph{Example}:
   2009      1.1  mrg @smallexample
   2010      1.1  mrg program atomic
   2011      1.1  mrg   use iso_fortran_env
   2012      1.1  mrg   logical(atomic_logical_kind) :: atom[*], prev
   2013      1.1  mrg   call atomic_cas (atom[1], prev, .false., .true.))
   2014      1.1  mrg end program atomic
   2015      1.1  mrg @end smallexample
   2016      1.1  mrg 
   2017      1.1  mrg @item @emph{See also}:
   2018  1.1.1.2  mrg @ref{ATOMIC_DEFINE}, @gol
   2019  1.1.1.2  mrg @ref{ATOMIC_REF}, @gol
   2020  1.1.1.2  mrg @ref{ISO_FORTRAN_ENV}
   2021      1.1  mrg @end table
   2022      1.1  mrg 
   2023      1.1  mrg 
   2024      1.1  mrg 
   2025      1.1  mrg @node ATOMIC_DEFINE
   2026      1.1  mrg @section @code{ATOMIC_DEFINE} --- Setting a variable atomically
   2027      1.1  mrg @fnindex ATOMIC_DEFINE
   2028      1.1  mrg @cindex Atomic subroutine, define
   2029      1.1  mrg 
   2030      1.1  mrg @table @asis
   2031      1.1  mrg @item @emph{Description}:
   2032      1.1  mrg @code{ATOMIC_DEFINE(ATOM, VALUE)} defines the variable @var{ATOM} with the value
   2033      1.1  mrg @var{VALUE} atomically. When @var{STAT} is present and the invocation was
   2034      1.1  mrg successful, it is assigned the value 0. If it is present and the invocation
   2035      1.1  mrg has failed, it is assigned a positive value; in particular, for a coindexed
   2036      1.1  mrg @var{ATOM}, if the remote image has stopped, it is assigned the value of
   2037      1.1  mrg @code{ISO_FORTRAN_ENV}'s @code{STAT_STOPPED_IMAGE} and if the remote image has
   2038      1.1  mrg failed, the value @code{STAT_FAILED_IMAGE}.
   2039      1.1  mrg 
   2040      1.1  mrg @item @emph{Standard}:
   2041      1.1  mrg Fortran 2008 and later; with @var{STAT}, TS 18508 or later
   2042      1.1  mrg 
   2043      1.1  mrg @item @emph{Class}:
   2044      1.1  mrg Atomic subroutine
   2045      1.1  mrg 
   2046      1.1  mrg @item @emph{Syntax}:
   2047      1.1  mrg @code{CALL ATOMIC_DEFINE (ATOM, VALUE [, STAT])}
   2048      1.1  mrg 
   2049      1.1  mrg @item @emph{Arguments}:
   2050      1.1  mrg @multitable @columnfractions .15 .70
   2051      1.1  mrg @item @var{ATOM}   @tab Scalar coarray or coindexed variable of either integer
   2052      1.1  mrg type with @code{ATOMIC_INT_KIND} kind or logical type with
   2053      1.1  mrg @code{ATOMIC_LOGICAL_KIND} kind.
   2054      1.1  mrg 
   2055      1.1  mrg @item @var{VALUE}  @tab Scalar of the same type as @var{ATOM}. If the kind
   2056      1.1  mrg is different, the value is converted to the kind of @var{ATOM}.
   2057      1.1  mrg @item @var{STAT}   @tab (optional) Scalar default-kind integer variable.
   2058      1.1  mrg @end multitable
   2059      1.1  mrg 
   2060      1.1  mrg @item @emph{Example}:
   2061      1.1  mrg @smallexample
   2062      1.1  mrg program atomic
   2063      1.1  mrg   use iso_fortran_env
   2064      1.1  mrg   integer(atomic_int_kind) :: atom[*]
   2065      1.1  mrg   call atomic_define (atom[1], this_image())
   2066      1.1  mrg end program atomic
   2067      1.1  mrg @end smallexample
   2068      1.1  mrg 
   2069      1.1  mrg @item @emph{See also}:
   2070  1.1.1.2  mrg @ref{ATOMIC_REF}, @gol
   2071  1.1.1.2  mrg @ref{ATOMIC_CAS}, @gol
   2072  1.1.1.2  mrg @ref{ISO_FORTRAN_ENV}, @gol
   2073  1.1.1.2  mrg @ref{ATOMIC_ADD}, @gol
   2074  1.1.1.2  mrg @ref{ATOMIC_AND}, @gol
   2075  1.1.1.2  mrg @ref{ATOMIC_OR}, @gol
   2076  1.1.1.2  mrg @ref{ATOMIC_XOR}
   2077      1.1  mrg @end table
   2078      1.1  mrg 
   2079      1.1  mrg 
   2080      1.1  mrg 
   2081      1.1  mrg @node ATOMIC_FETCH_ADD
   2082      1.1  mrg @section @code{ATOMIC_FETCH_ADD} --- Atomic ADD operation with prior fetch
   2083      1.1  mrg @fnindex ATOMIC_FETCH_ADD
   2084      1.1  mrg @cindex Atomic subroutine, ADD with fetch
   2085      1.1  mrg 
   2086      1.1  mrg @table @asis
   2087      1.1  mrg @item @emph{Description}:
   2088      1.1  mrg @code{ATOMIC_FETCH_ADD(ATOM, VALUE, OLD)} atomically stores the value of
   2089  1.1.1.3  mrg @var{ATOM} in @var{OLD} and adds the value of @var{VALUE} to the
   2090      1.1  mrg variable @var{ATOM}. When @var{STAT} is present and the invocation was
   2091      1.1  mrg successful, it is assigned the value 0. If it is present and the invocation
   2092      1.1  mrg has failed, it is assigned a positive value; in particular, for a coindexed
   2093      1.1  mrg @var{ATOM}, if the remote image has stopped, it is assigned the value of
   2094      1.1  mrg @code{ISO_FORTRAN_ENV}'s @code{STAT_STOPPED_IMAGE} and if the remote image has
   2095      1.1  mrg failed, the value @code{STAT_FAILED_IMAGE}.
   2096      1.1  mrg 
   2097      1.1  mrg @item @emph{Standard}:
   2098      1.1  mrg TS 18508 or later
   2099      1.1  mrg 
   2100      1.1  mrg @item @emph{Class}:
   2101      1.1  mrg Atomic subroutine
   2102      1.1  mrg 
   2103      1.1  mrg @item @emph{Syntax}:
   2104      1.1  mrg @code{CALL ATOMIC_FETCH_ADD (ATOM, VALUE, old [, STAT])}
   2105      1.1  mrg 
   2106      1.1  mrg @item @emph{Arguments}:
   2107      1.1  mrg @multitable @columnfractions .15 .70
   2108      1.1  mrg @item @var{ATOM}   @tab Scalar coarray or coindexed variable of integer
   2109      1.1  mrg type with @code{ATOMIC_INT_KIND} kind.
   2110      1.1  mrg @code{ATOMIC_LOGICAL_KIND} kind.
   2111      1.1  mrg 
   2112      1.1  mrg @item @var{VALUE}  @tab Scalar of the same type as @var{ATOM}. If the kind
   2113      1.1  mrg is different, the value is converted to the kind of @var{ATOM}.
   2114      1.1  mrg @item @var{OLD}    @tab Scalar of the same type and kind as @var{ATOM}.
   2115      1.1  mrg @item @var{STAT}   @tab (optional) Scalar default-kind integer variable.
   2116      1.1  mrg @end multitable
   2117      1.1  mrg 
   2118      1.1  mrg @item @emph{Example}:
   2119      1.1  mrg @smallexample
   2120      1.1  mrg program atomic
   2121      1.1  mrg   use iso_fortran_env
   2122      1.1  mrg   integer(atomic_int_kind) :: atom[*], old
   2123      1.1  mrg   call atomic_add (atom[1], this_image(), old)
   2124      1.1  mrg end program atomic
   2125      1.1  mrg @end smallexample
   2126      1.1  mrg 
   2127      1.1  mrg @item @emph{See also}:
   2128  1.1.1.2  mrg @ref{ATOMIC_DEFINE}, @gol
   2129  1.1.1.2  mrg @ref{ATOMIC_ADD}, @gol
   2130  1.1.1.2  mrg @ref{ISO_FORTRAN_ENV}, @gol
   2131  1.1.1.2  mrg @ref{ATOMIC_FETCH_AND}, @gol
   2132  1.1.1.2  mrg @ref{ATOMIC_FETCH_OR}, @gol
   2133  1.1.1.2  mrg @ref{ATOMIC_FETCH_XOR}
   2134      1.1  mrg @end table
   2135      1.1  mrg 
   2136      1.1  mrg 
   2137      1.1  mrg 
   2138      1.1  mrg @node ATOMIC_FETCH_AND
   2139      1.1  mrg @section @code{ATOMIC_FETCH_AND} --- Atomic bitwise AND operation with prior fetch
   2140      1.1  mrg @fnindex ATOMIC_FETCH_AND
   2141      1.1  mrg @cindex Atomic subroutine, AND with fetch
   2142      1.1  mrg 
   2143      1.1  mrg @table @asis
   2144      1.1  mrg @item @emph{Description}:
   2145      1.1  mrg @code{ATOMIC_AND(ATOM, VALUE)} atomically stores the value of @var{ATOM} in
   2146      1.1  mrg @var{OLD} and defines @var{ATOM} with the bitwise AND between the values of
   2147      1.1  mrg @var{ATOM} and @var{VALUE}. When @var{STAT} is present and the invocation was
   2148      1.1  mrg successful, it is assigned the value 0. If it is present and the invocation has
   2149      1.1  mrg failed, it is assigned a positive value; in particular, for a coindexed
   2150      1.1  mrg @var{ATOM}, if the remote image has stopped, it is assigned the value of
   2151      1.1  mrg @code{ISO_FORTRAN_ENV}'s @code{STAT_STOPPED_IMAGE} and if the remote image has
   2152      1.1  mrg failed, the value @code{STAT_FAILED_IMAGE}.
   2153      1.1  mrg 
   2154      1.1  mrg @item @emph{Standard}:
   2155      1.1  mrg TS 18508 or later
   2156      1.1  mrg 
   2157      1.1  mrg @item @emph{Class}:
   2158      1.1  mrg Atomic subroutine
   2159      1.1  mrg 
   2160      1.1  mrg @item @emph{Syntax}:
   2161      1.1  mrg @code{CALL ATOMIC_FETCH_AND (ATOM, VALUE, OLD [, STAT])}
   2162      1.1  mrg 
   2163      1.1  mrg @item @emph{Arguments}:
   2164      1.1  mrg @multitable @columnfractions .15 .70
   2165      1.1  mrg @item @var{ATOM}   @tab Scalar coarray or coindexed variable of integer
   2166      1.1  mrg type with @code{ATOMIC_INT_KIND} kind.
   2167      1.1  mrg @item @var{VALUE}  @tab Scalar of the same type as @var{ATOM}. If the kind
   2168      1.1  mrg is different, the value is converted to the kind of @var{ATOM}.
   2169      1.1  mrg @item @var{OLD}    @tab Scalar of the same type and kind as @var{ATOM}.
   2170      1.1  mrg @item @var{STAT}   @tab (optional) Scalar default-kind integer variable.
   2171      1.1  mrg @end multitable
   2172      1.1  mrg 
   2173      1.1  mrg @item @emph{Example}:
   2174      1.1  mrg @smallexample
   2175      1.1  mrg program atomic
   2176      1.1  mrg   use iso_fortran_env
   2177      1.1  mrg   integer(atomic_int_kind) :: atom[*], old
   2178      1.1  mrg   call atomic_fetch_and (atom[1], int(b'10100011101'), old)
   2179      1.1  mrg end program atomic
   2180      1.1  mrg @end smallexample
   2181      1.1  mrg 
   2182      1.1  mrg @item @emph{See also}:
   2183  1.1.1.2  mrg @ref{ATOMIC_DEFINE}, @gol
   2184  1.1.1.2  mrg @ref{ATOMIC_AND}, @gol
   2185  1.1.1.2  mrg @ref{ISO_FORTRAN_ENV}, @gol
   2186  1.1.1.2  mrg @ref{ATOMIC_FETCH_ADD}, @gol
   2187  1.1.1.2  mrg @ref{ATOMIC_FETCH_OR}, @gol
   2188  1.1.1.2  mrg @ref{ATOMIC_FETCH_XOR}
   2189      1.1  mrg @end table
   2190      1.1  mrg 
   2191      1.1  mrg 
   2192      1.1  mrg 
   2193      1.1  mrg @node ATOMIC_FETCH_OR
   2194      1.1  mrg @section @code{ATOMIC_FETCH_OR} --- Atomic bitwise OR operation with prior fetch
   2195      1.1  mrg @fnindex ATOMIC_FETCH_OR
   2196      1.1  mrg @cindex Atomic subroutine, OR with fetch
   2197      1.1  mrg 
   2198      1.1  mrg @table @asis
   2199      1.1  mrg @item @emph{Description}:
   2200      1.1  mrg @code{ATOMIC_OR(ATOM, VALUE)} atomically stores the value of @var{ATOM} in
   2201      1.1  mrg @var{OLD} and defines @var{ATOM} with the bitwise OR between the values of
   2202      1.1  mrg @var{ATOM} and @var{VALUE}. When @var{STAT} is present and the invocation was
   2203      1.1  mrg successful, it is assigned the value 0. If it is present and the invocation has
   2204      1.1  mrg failed, it is assigned a positive value; in particular, for a coindexed
   2205      1.1  mrg @var{ATOM}, if the remote image has stopped, it is assigned the value of
   2206      1.1  mrg @code{ISO_FORTRAN_ENV}'s @code{STAT_STOPPED_IMAGE} and if the remote image has
   2207      1.1  mrg failed, the value @code{STAT_FAILED_IMAGE}.
   2208      1.1  mrg 
   2209      1.1  mrg @item @emph{Standard}:
   2210      1.1  mrg TS 18508 or later
   2211      1.1  mrg 
   2212      1.1  mrg @item @emph{Class}:
   2213      1.1  mrg Atomic subroutine
   2214      1.1  mrg 
   2215      1.1  mrg @item @emph{Syntax}:
   2216      1.1  mrg @code{CALL ATOMIC_FETCH_OR (ATOM, VALUE, OLD [, STAT])}
   2217      1.1  mrg 
   2218      1.1  mrg @item @emph{Arguments}:
   2219      1.1  mrg @multitable @columnfractions .15 .70
   2220      1.1  mrg @item @var{ATOM}   @tab Scalar coarray or coindexed variable of integer
   2221      1.1  mrg type with @code{ATOMIC_INT_KIND} kind.
   2222      1.1  mrg @item @var{VALUE}  @tab Scalar of the same type as @var{ATOM}. If the kind
   2223      1.1  mrg is different, the value is converted to the kind of @var{ATOM}.
   2224      1.1  mrg @item @var{OLD}    @tab Scalar of the same type and kind as @var{ATOM}.
   2225      1.1  mrg @item @var{STAT}   @tab (optional) Scalar default-kind integer variable.
   2226      1.1  mrg @end multitable
   2227      1.1  mrg 
   2228      1.1  mrg @item @emph{Example}:
   2229      1.1  mrg @smallexample
   2230      1.1  mrg program atomic
   2231      1.1  mrg   use iso_fortran_env
   2232      1.1  mrg   integer(atomic_int_kind) :: atom[*], old
   2233      1.1  mrg   call atomic_fetch_or (atom[1], int(b'10100011101'), old)
   2234      1.1  mrg end program atomic
   2235      1.1  mrg @end smallexample
   2236      1.1  mrg 
   2237      1.1  mrg @item @emph{See also}:
   2238  1.1.1.2  mrg @ref{ATOMIC_DEFINE}, @gol
   2239  1.1.1.2  mrg @ref{ATOMIC_OR}, @gol
   2240  1.1.1.2  mrg @ref{ISO_FORTRAN_ENV}, @gol
   2241  1.1.1.2  mrg @ref{ATOMIC_FETCH_ADD}, @gol
   2242  1.1.1.2  mrg @ref{ATOMIC_FETCH_AND}, @gol
   2243  1.1.1.2  mrg @ref{ATOMIC_FETCH_XOR}
   2244      1.1  mrg @end table
   2245      1.1  mrg 
   2246      1.1  mrg 
   2247      1.1  mrg 
   2248      1.1  mrg @node ATOMIC_FETCH_XOR
   2249      1.1  mrg @section @code{ATOMIC_FETCH_XOR} --- Atomic bitwise XOR operation with prior fetch
   2250      1.1  mrg @fnindex ATOMIC_FETCH_XOR
   2251      1.1  mrg @cindex Atomic subroutine, XOR with fetch
   2252      1.1  mrg 
   2253      1.1  mrg @table @asis
   2254      1.1  mrg @item @emph{Description}:
   2255      1.1  mrg @code{ATOMIC_XOR(ATOM, VALUE)} atomically stores the value of @var{ATOM} in
   2256      1.1  mrg @var{OLD} and defines @var{ATOM} with the bitwise XOR between the values of
   2257      1.1  mrg @var{ATOM} and @var{VALUE}. When @var{STAT} is present and the invocation was
   2258      1.1  mrg successful, it is assigned the value 0. If it is present and the invocation has
   2259      1.1  mrg failed, it is assigned a positive value; in particular, for a coindexed
   2260      1.1  mrg @var{ATOM}, if the remote image has stopped, it is assigned the value of
   2261      1.1  mrg @code{ISO_FORTRAN_ENV}'s @code{STAT_STOPPED_IMAGE} and if the remote image has
   2262      1.1  mrg failed, the value @code{STAT_FAILED_IMAGE}.
   2263      1.1  mrg 
   2264      1.1  mrg @item @emph{Standard}:
   2265      1.1  mrg TS 18508 or later
   2266      1.1  mrg 
   2267      1.1  mrg @item @emph{Class}:
   2268      1.1  mrg Atomic subroutine
   2269      1.1  mrg 
   2270      1.1  mrg @item @emph{Syntax}:
   2271      1.1  mrg @code{CALL ATOMIC_FETCH_XOR (ATOM, VALUE, OLD [, STAT])}
   2272      1.1  mrg 
   2273      1.1  mrg @item @emph{Arguments}:
   2274      1.1  mrg @multitable @columnfractions .15 .70
   2275      1.1  mrg @item @var{ATOM}   @tab Scalar coarray or coindexed variable of integer
   2276      1.1  mrg type with @code{ATOMIC_INT_KIND} kind.
   2277      1.1  mrg @item @var{VALUE}  @tab Scalar of the same type as @var{ATOM}. If the kind
   2278      1.1  mrg is different, the value is converted to the kind of @var{ATOM}.
   2279      1.1  mrg @item @var{OLD}    @tab Scalar of the same type and kind as @var{ATOM}.
   2280      1.1  mrg @item @var{STAT}   @tab (optional) Scalar default-kind integer variable.
   2281      1.1  mrg @end multitable
   2282      1.1  mrg 
   2283      1.1  mrg @item @emph{Example}:
   2284      1.1  mrg @smallexample
   2285      1.1  mrg program atomic
   2286      1.1  mrg   use iso_fortran_env
   2287      1.1  mrg   integer(atomic_int_kind) :: atom[*], old
   2288      1.1  mrg   call atomic_fetch_xor (atom[1], int(b'10100011101'), old)
   2289      1.1  mrg end program atomic
   2290      1.1  mrg @end smallexample
   2291      1.1  mrg 
   2292      1.1  mrg @item @emph{See also}:
   2293  1.1.1.2  mrg @ref{ATOMIC_DEFINE}, @gol
   2294  1.1.1.2  mrg @ref{ATOMIC_XOR}, @gol
   2295  1.1.1.2  mrg @ref{ISO_FORTRAN_ENV}, @gol
   2296  1.1.1.2  mrg @ref{ATOMIC_FETCH_ADD}, @gol
   2297  1.1.1.2  mrg @ref{ATOMIC_FETCH_AND}, @gol
   2298  1.1.1.2  mrg @ref{ATOMIC_FETCH_OR}
   2299      1.1  mrg @end table
   2300      1.1  mrg 
   2301      1.1  mrg 
   2302      1.1  mrg 
   2303      1.1  mrg @node ATOMIC_OR
   2304      1.1  mrg @section @code{ATOMIC_OR} --- Atomic bitwise OR operation
   2305      1.1  mrg @fnindex ATOMIC_OR
   2306      1.1  mrg @cindex Atomic subroutine, OR
   2307      1.1  mrg 
   2308      1.1  mrg @table @asis
   2309      1.1  mrg @item @emph{Description}:
   2310      1.1  mrg @code{ATOMIC_OR(ATOM, VALUE)} atomically defines @var{ATOM} with the bitwise
   2311      1.1  mrg AND between the values of @var{ATOM} and @var{VALUE}. When @var{STAT} is present
   2312      1.1  mrg and the invocation was successful, it is assigned the value 0. If it is present
   2313      1.1  mrg and the invocation has failed, it is assigned a positive value; in particular,
   2314      1.1  mrg for a coindexed @var{ATOM}, if the remote image has stopped, it is assigned the
   2315      1.1  mrg value of @code{ISO_FORTRAN_ENV}'s @code{STAT_STOPPED_IMAGE} and if the remote
   2316      1.1  mrg image has failed, the value @code{STAT_FAILED_IMAGE}.
   2317      1.1  mrg 
   2318      1.1  mrg @item @emph{Standard}:
   2319      1.1  mrg TS 18508 or later
   2320      1.1  mrg 
   2321      1.1  mrg @item @emph{Class}:
   2322      1.1  mrg Atomic subroutine
   2323      1.1  mrg 
   2324      1.1  mrg @item @emph{Syntax}:
   2325      1.1  mrg @code{CALL ATOMIC_OR (ATOM, VALUE [, STAT])}
   2326      1.1  mrg 
   2327      1.1  mrg @item @emph{Arguments}:
   2328      1.1  mrg @multitable @columnfractions .15 .70
   2329      1.1  mrg @item @var{ATOM}   @tab Scalar coarray or coindexed variable of integer
   2330      1.1  mrg type with @code{ATOMIC_INT_KIND} kind.
   2331      1.1  mrg @item @var{VALUE}  @tab Scalar of the same type as @var{ATOM}. If the kind
   2332      1.1  mrg is different, the value is converted to the kind of @var{ATOM}.
   2333      1.1  mrg @item @var{STAT}   @tab (optional) Scalar default-kind integer variable.
   2334      1.1  mrg @end multitable
   2335      1.1  mrg 
   2336      1.1  mrg @item @emph{Example}:
   2337      1.1  mrg @smallexample
   2338      1.1  mrg program atomic
   2339      1.1  mrg   use iso_fortran_env
   2340      1.1  mrg   integer(atomic_int_kind) :: atom[*]
   2341      1.1  mrg   call atomic_or (atom[1], int(b'10100011101'))
   2342      1.1  mrg end program atomic
   2343      1.1  mrg @end smallexample
   2344      1.1  mrg 
   2345      1.1  mrg @item @emph{See also}:
   2346  1.1.1.2  mrg @ref{ATOMIC_DEFINE}, @gol
   2347  1.1.1.2  mrg @ref{ATOMIC_FETCH_OR}, @gol
   2348  1.1.1.2  mrg @ref{ISO_FORTRAN_ENV}, @gol
   2349  1.1.1.2  mrg @ref{ATOMIC_ADD}, @gol
   2350  1.1.1.2  mrg @ref{ATOMIC_OR}, @gol
   2351  1.1.1.2  mrg @ref{ATOMIC_XOR}
   2352      1.1  mrg @end table
   2353      1.1  mrg 
   2354      1.1  mrg 
   2355      1.1  mrg 
   2356      1.1  mrg @node ATOMIC_REF
   2357      1.1  mrg @section @code{ATOMIC_REF} --- Obtaining the value of a variable atomically
   2358      1.1  mrg @fnindex ATOMIC_REF
   2359      1.1  mrg @cindex Atomic subroutine, reference
   2360      1.1  mrg 
   2361      1.1  mrg @table @asis
   2362      1.1  mrg @item @emph{Description}:
   2363      1.1  mrg @code{ATOMIC_DEFINE(ATOM, VALUE)} atomically assigns the value of the
   2364      1.1  mrg variable @var{ATOM} to @var{VALUE}. When @var{STAT} is present and the
   2365      1.1  mrg invocation was successful, it is assigned the value 0. If it is present and the
   2366      1.1  mrg invocation has failed, it is assigned a positive value; in particular, for a
   2367      1.1  mrg coindexed @var{ATOM}, if the remote image has stopped, it is assigned the value
   2368      1.1  mrg of @code{ISO_FORTRAN_ENV}'s @code{STAT_STOPPED_IMAGE} and if the remote image
   2369      1.1  mrg has failed, the value @code{STAT_FAILED_IMAGE}.
   2370      1.1  mrg 
   2371      1.1  mrg 
   2372      1.1  mrg @item @emph{Standard}:
   2373      1.1  mrg Fortran 2008 and later; with @var{STAT}, TS 18508 or later
   2374      1.1  mrg 
   2375      1.1  mrg @item @emph{Class}:
   2376      1.1  mrg Atomic subroutine
   2377      1.1  mrg 
   2378      1.1  mrg @item @emph{Syntax}:
   2379      1.1  mrg @code{CALL ATOMIC_REF(VALUE, ATOM [, STAT])}
   2380      1.1  mrg 
   2381      1.1  mrg @item @emph{Arguments}:
   2382      1.1  mrg @multitable @columnfractions .15 .70
   2383      1.1  mrg @item @var{VALUE}  @tab Scalar of the same type as @var{ATOM}. If the kind
   2384      1.1  mrg is different, the value is converted to the kind of @var{ATOM}.
   2385      1.1  mrg @item @var{ATOM}   @tab Scalar coarray or coindexed variable of either integer
   2386      1.1  mrg type with @code{ATOMIC_INT_KIND} kind or logical type with
   2387      1.1  mrg @code{ATOMIC_LOGICAL_KIND} kind.
   2388      1.1  mrg @item @var{STAT}   @tab (optional) Scalar default-kind integer variable.
   2389      1.1  mrg @end multitable
   2390      1.1  mrg 
   2391      1.1  mrg @item @emph{Example}:
   2392      1.1  mrg @smallexample
   2393      1.1  mrg program atomic
   2394      1.1  mrg   use iso_fortran_env
   2395      1.1  mrg   logical(atomic_logical_kind) :: atom[*]
   2396      1.1  mrg   logical :: val
   2397      1.1  mrg   call atomic_ref (atom, .false.)
   2398      1.1  mrg   ! ...
   2399      1.1  mrg   call atomic_ref (atom, val)
   2400      1.1  mrg   if (val) then
   2401      1.1  mrg     print *, "Obtained"
   2402      1.1  mrg   end if
   2403      1.1  mrg end program atomic
   2404      1.1  mrg @end smallexample
   2405      1.1  mrg 
   2406      1.1  mrg @item @emph{See also}:
   2407  1.1.1.2  mrg @ref{ATOMIC_DEFINE}, @gol
   2408  1.1.1.2  mrg @ref{ATOMIC_CAS}, @gol
   2409  1.1.1.2  mrg @ref{ISO_FORTRAN_ENV}, @gol
   2410  1.1.1.2  mrg @ref{ATOMIC_FETCH_ADD}, @gol
   2411  1.1.1.2  mrg @ref{ATOMIC_FETCH_AND}, @gol
   2412  1.1.1.2  mrg @ref{ATOMIC_FETCH_OR}, @gol
   2413      1.1  mrg @ref{ATOMIC_FETCH_XOR}
   2414      1.1  mrg @end table
   2415      1.1  mrg 
   2416      1.1  mrg 
   2417      1.1  mrg @node ATOMIC_XOR
   2418      1.1  mrg @section @code{ATOMIC_XOR} --- Atomic bitwise OR operation
   2419      1.1  mrg @fnindex ATOMIC_XOR
   2420      1.1  mrg @cindex Atomic subroutine, XOR
   2421      1.1  mrg 
   2422      1.1  mrg @table @asis
   2423      1.1  mrg @item @emph{Description}:
   2424      1.1  mrg @code{ATOMIC_AND(ATOM, VALUE)} atomically defines @var{ATOM} with the bitwise
   2425      1.1  mrg XOR between the values of @var{ATOM} and @var{VALUE}. When @var{STAT} is present
   2426      1.1  mrg and the invocation was successful, it is assigned the value 0. If it is present
   2427      1.1  mrg and the invocation has failed, it is assigned a positive value; in particular,
   2428      1.1  mrg for a coindexed @var{ATOM}, if the remote image has stopped, it is assigned the
   2429      1.1  mrg value of @code{ISO_FORTRAN_ENV}'s @code{STAT_STOPPED_IMAGE} and if the remote
   2430      1.1  mrg image has failed, the value @code{STAT_FAILED_IMAGE}.
   2431      1.1  mrg 
   2432      1.1  mrg @item @emph{Standard}:
   2433      1.1  mrg TS 18508 or later
   2434      1.1  mrg 
   2435      1.1  mrg @item @emph{Class}:
   2436      1.1  mrg Atomic subroutine
   2437      1.1  mrg 
   2438      1.1  mrg @item @emph{Syntax}:
   2439      1.1  mrg @code{CALL ATOMIC_XOR (ATOM, VALUE [, STAT])}
   2440      1.1  mrg 
   2441      1.1  mrg @item @emph{Arguments}:
   2442      1.1  mrg @multitable @columnfractions .15 .70
   2443      1.1  mrg @item @var{ATOM}   @tab Scalar coarray or coindexed variable of integer
   2444      1.1  mrg type with @code{ATOMIC_INT_KIND} kind.
   2445      1.1  mrg @item @var{VALUE}  @tab Scalar of the same type as @var{ATOM}. If the kind
   2446      1.1  mrg is different, the value is converted to the kind of @var{ATOM}.
   2447      1.1  mrg @item @var{STAT}   @tab (optional) Scalar default-kind integer variable.
   2448      1.1  mrg @end multitable
   2449      1.1  mrg 
   2450      1.1  mrg @item @emph{Example}:
   2451      1.1  mrg @smallexample
   2452      1.1  mrg program atomic
   2453      1.1  mrg   use iso_fortran_env
   2454      1.1  mrg   integer(atomic_int_kind) :: atom[*]
   2455      1.1  mrg   call atomic_xor (atom[1], int(b'10100011101'))
   2456      1.1  mrg end program atomic
   2457      1.1  mrg @end smallexample
   2458      1.1  mrg 
   2459      1.1  mrg @item @emph{See also}:
   2460  1.1.1.2  mrg @ref{ATOMIC_DEFINE}, @gol
   2461  1.1.1.2  mrg @ref{ATOMIC_FETCH_XOR}, @gol
   2462  1.1.1.2  mrg @ref{ISO_FORTRAN_ENV}, @gol
   2463  1.1.1.2  mrg @ref{ATOMIC_ADD}, @gol
   2464  1.1.1.2  mrg @ref{ATOMIC_OR}, @gol
   2465  1.1.1.2  mrg @ref{ATOMIC_XOR}
   2466      1.1  mrg @end table
   2467      1.1  mrg 
   2468      1.1  mrg 
   2469      1.1  mrg @node BACKTRACE
   2470      1.1  mrg @section @code{BACKTRACE} --- Show a backtrace
   2471      1.1  mrg @fnindex BACKTRACE
   2472      1.1  mrg @cindex backtrace
   2473      1.1  mrg 
   2474      1.1  mrg @table @asis
   2475      1.1  mrg @item @emph{Description}:
   2476      1.1  mrg @code{BACKTRACE} shows a backtrace at an arbitrary place in user code. Program
   2477      1.1  mrg execution continues normally afterwards. The backtrace information is printed
   2478      1.1  mrg to the unit corresponding to @code{ERROR_UNIT} in @code{ISO_FORTRAN_ENV}.
   2479      1.1  mrg 
   2480      1.1  mrg @item @emph{Standard}:
   2481  1.1.1.2  mrg GNU extension
   2482      1.1  mrg 
   2483      1.1  mrg @item @emph{Class}:
   2484      1.1  mrg Subroutine
   2485      1.1  mrg 
   2486      1.1  mrg @item @emph{Syntax}:
   2487      1.1  mrg @code{CALL BACKTRACE}
   2488      1.1  mrg 
   2489      1.1  mrg @item @emph{Arguments}:
   2490      1.1  mrg None
   2491      1.1  mrg 
   2492      1.1  mrg @item @emph{See also}:
   2493      1.1  mrg @ref{ABORT}
   2494      1.1  mrg @end table
   2495      1.1  mrg 
   2496      1.1  mrg 
   2497      1.1  mrg 
   2498      1.1  mrg @node BESSEL_J0
   2499      1.1  mrg @section @code{BESSEL_J0} --- Bessel function of the first kind of order 0
   2500      1.1  mrg @fnindex BESSEL_J0
   2501      1.1  mrg @fnindex BESJ0
   2502      1.1  mrg @fnindex DBESJ0
   2503      1.1  mrg @cindex Bessel function, first kind
   2504      1.1  mrg 
   2505      1.1  mrg @table @asis
   2506      1.1  mrg @item @emph{Description}:
   2507      1.1  mrg @code{BESSEL_J0(X)} computes the Bessel function of the first kind of
   2508      1.1  mrg order 0 of @var{X}. This function is available under the name
   2509      1.1  mrg @code{BESJ0} as a GNU extension.
   2510      1.1  mrg 
   2511      1.1  mrg @item @emph{Standard}:
   2512      1.1  mrg Fortran 2008 and later
   2513      1.1  mrg 
   2514      1.1  mrg @item @emph{Class}:
   2515      1.1  mrg Elemental function
   2516      1.1  mrg 
   2517      1.1  mrg @item @emph{Syntax}:
   2518      1.1  mrg @code{RESULT = BESSEL_J0(X)}
   2519      1.1  mrg 
   2520      1.1  mrg @item @emph{Arguments}:
   2521      1.1  mrg @multitable @columnfractions .15 .70
   2522      1.1  mrg @item @var{X} @tab The type shall be @code{REAL}.
   2523      1.1  mrg @end multitable
   2524      1.1  mrg 
   2525      1.1  mrg @item @emph{Return value}:
   2526      1.1  mrg The return value is of type @code{REAL} and lies in the
   2527      1.1  mrg range @math{ - 0.4027... \leq Bessel (0,x) \leq 1}. It has the same
   2528      1.1  mrg kind as @var{X}.
   2529      1.1  mrg 
   2530      1.1  mrg @item @emph{Example}:
   2531      1.1  mrg @smallexample
   2532      1.1  mrg program test_besj0
   2533      1.1  mrg   real(8) :: x = 0.0_8
   2534      1.1  mrg   x = bessel_j0(x)
   2535      1.1  mrg end program test_besj0
   2536      1.1  mrg @end smallexample
   2537      1.1  mrg 
   2538      1.1  mrg @item @emph{Specific names}:
   2539  1.1.1.3  mrg @multitable @columnfractions .21 .22 .20 .33
   2540  1.1.1.3  mrg @headitem Name            @tab Argument          @tab Return type       @tab Standard
   2541      1.1  mrg @item @code{DBESJ0(X)} @tab @code{REAL(8) X}  @tab @code{REAL(8)}   @tab GNU extension
   2542      1.1  mrg @end multitable
   2543      1.1  mrg @end table
   2544      1.1  mrg 
   2545      1.1  mrg 
   2546      1.1  mrg 
   2547      1.1  mrg @node BESSEL_J1
   2548      1.1  mrg @section @code{BESSEL_J1} --- Bessel function of the first kind of order 1
   2549      1.1  mrg @fnindex BESSEL_J1
   2550      1.1  mrg @fnindex BESJ1
   2551      1.1  mrg @fnindex DBESJ1
   2552      1.1  mrg @cindex Bessel function, first kind
   2553      1.1  mrg 
   2554      1.1  mrg @table @asis
   2555      1.1  mrg @item @emph{Description}:
   2556      1.1  mrg @code{BESSEL_J1(X)} computes the Bessel function of the first kind of
   2557      1.1  mrg order 1 of @var{X}. This function is available under the name
   2558      1.1  mrg @code{BESJ1} as a GNU extension.
   2559      1.1  mrg 
   2560      1.1  mrg @item @emph{Standard}:
   2561      1.1  mrg Fortran 2008
   2562      1.1  mrg 
   2563      1.1  mrg @item @emph{Class}:
   2564      1.1  mrg Elemental function
   2565      1.1  mrg 
   2566      1.1  mrg @item @emph{Syntax}:
   2567      1.1  mrg @code{RESULT = BESSEL_J1(X)}
   2568      1.1  mrg 
   2569      1.1  mrg @item @emph{Arguments}:
   2570      1.1  mrg @multitable @columnfractions .15 .70
   2571      1.1  mrg @item @var{X} @tab The type shall be @code{REAL}.
   2572      1.1  mrg @end multitable
   2573      1.1  mrg 
   2574      1.1  mrg @item @emph{Return value}:
   2575      1.1  mrg The return value is of type @code{REAL} and lies in the
   2576      1.1  mrg range @math{ - 0.5818... \leq Bessel (0,x) \leq 0.5818 }. It has the same
   2577      1.1  mrg kind as @var{X}.
   2578      1.1  mrg 
   2579      1.1  mrg @item @emph{Example}:
   2580      1.1  mrg @smallexample
   2581      1.1  mrg program test_besj1
   2582      1.1  mrg   real(8) :: x = 1.0_8
   2583      1.1  mrg   x = bessel_j1(x)
   2584      1.1  mrg end program test_besj1
   2585      1.1  mrg @end smallexample
   2586      1.1  mrg 
   2587      1.1  mrg @item @emph{Specific names}:
   2588  1.1.1.3  mrg @multitable @columnfractions .20 .23 .20 .33
   2589  1.1.1.3  mrg @headitem Name             @tab Argument          @tab Return type       @tab Standard
   2590      1.1  mrg @item @code{DBESJ1(X)} @tab @code{REAL(8) X}  @tab @code{REAL(8)}    @tab GNU extension
   2591      1.1  mrg @end multitable
   2592      1.1  mrg @end table
   2593      1.1  mrg 
   2594      1.1  mrg 
   2595      1.1  mrg 
   2596      1.1  mrg @node BESSEL_JN
   2597      1.1  mrg @section @code{BESSEL_JN} --- Bessel function of the first kind
   2598      1.1  mrg @fnindex BESSEL_JN
   2599      1.1  mrg @fnindex BESJN
   2600      1.1  mrg @fnindex DBESJN
   2601      1.1  mrg @cindex Bessel function, first kind
   2602      1.1  mrg 
   2603      1.1  mrg @table @asis
   2604      1.1  mrg @item @emph{Description}:
   2605      1.1  mrg @code{BESSEL_JN(N, X)} computes the Bessel function of the first kind of
   2606      1.1  mrg order @var{N} of @var{X}. This function is available under the name
   2607      1.1  mrg @code{BESJN} as a GNU extension.  If @var{N} and @var{X} are arrays,
   2608      1.1  mrg their ranks and shapes shall conform.  
   2609      1.1  mrg 
   2610      1.1  mrg @code{BESSEL_JN(N1, N2, X)} returns an array with the Bessel functions
   2611      1.1  mrg of the first kind of the orders @var{N1} to @var{N2}.
   2612      1.1  mrg 
   2613      1.1  mrg @item @emph{Standard}:
   2614      1.1  mrg Fortran 2008 and later, negative @var{N} is allowed as GNU extension
   2615      1.1  mrg 
   2616      1.1  mrg @item @emph{Class}:
   2617      1.1  mrg Elemental function, except for the transformational function
   2618      1.1  mrg @code{BESSEL_JN(N1, N2, X)}
   2619      1.1  mrg 
   2620      1.1  mrg @item @emph{Syntax}:
   2621      1.1  mrg @multitable @columnfractions .80
   2622      1.1  mrg @item @code{RESULT = BESSEL_JN(N, X)}
   2623      1.1  mrg @item @code{RESULT = BESSEL_JN(N1, N2, X)}
   2624      1.1  mrg @end multitable
   2625      1.1  mrg 
   2626      1.1  mrg @item @emph{Arguments}:
   2627      1.1  mrg @multitable @columnfractions .15 .70
   2628      1.1  mrg @item @var{N} @tab Shall be a scalar or an array of type  @code{INTEGER}.
   2629      1.1  mrg @item @var{N1} @tab Shall be a non-negative scalar of type  @code{INTEGER}.
   2630      1.1  mrg @item @var{N2} @tab Shall be a non-negative scalar of type  @code{INTEGER}.
   2631      1.1  mrg @item @var{X} @tab Shall be a scalar or an array of type  @code{REAL};
   2632      1.1  mrg for @code{BESSEL_JN(N1, N2, X)} it shall be scalar.
   2633      1.1  mrg @end multitable
   2634      1.1  mrg 
   2635      1.1  mrg @item @emph{Return value}:
   2636      1.1  mrg The return value is a scalar of type @code{REAL}. It has the same
   2637      1.1  mrg kind as @var{X}.
   2638      1.1  mrg 
   2639      1.1  mrg @item @emph{Note}:
   2640      1.1  mrg The transformational function uses a recurrence algorithm which might,
   2641      1.1  mrg for some values of @var{X}, lead to different results than calls to
   2642      1.1  mrg the elemental function.
   2643      1.1  mrg 
   2644      1.1  mrg @item @emph{Example}:
   2645      1.1  mrg @smallexample
   2646      1.1  mrg program test_besjn
   2647      1.1  mrg   real(8) :: x = 1.0_8
   2648      1.1  mrg   x = bessel_jn(5,x)
   2649      1.1  mrg end program test_besjn
   2650      1.1  mrg @end smallexample
   2651      1.1  mrg 
   2652      1.1  mrg @item @emph{Specific names}:
   2653  1.1.1.3  mrg @multitable @columnfractions .22 .22 .20 .32
   2654  1.1.1.3  mrg @headitem Name                @tab Argument            @tab Return type       @tab Standard
   2655      1.1  mrg @item @code{DBESJN(N, X)} @tab @code{INTEGER N}    @tab @code{REAL(8)}    @tab GNU extension
   2656      1.1  mrg @item                     @tab @code{REAL(8) X}    @tab                   @tab
   2657      1.1  mrg @end multitable
   2658      1.1  mrg @end table
   2659      1.1  mrg 
   2660      1.1  mrg 
   2661      1.1  mrg 
   2662      1.1  mrg @node BESSEL_Y0
   2663      1.1  mrg @section @code{BESSEL_Y0} --- Bessel function of the second kind of order 0
   2664      1.1  mrg @fnindex BESSEL_Y0
   2665      1.1  mrg @fnindex BESY0
   2666      1.1  mrg @fnindex DBESY0
   2667      1.1  mrg @cindex Bessel function, second kind
   2668      1.1  mrg 
   2669      1.1  mrg @table @asis
   2670      1.1  mrg @item @emph{Description}:
   2671      1.1  mrg @code{BESSEL_Y0(X)} computes the Bessel function of the second kind of
   2672      1.1  mrg order 0 of @var{X}. This function is available under the name
   2673      1.1  mrg @code{BESY0} as a GNU extension.
   2674      1.1  mrg 
   2675      1.1  mrg @item @emph{Standard}:
   2676      1.1  mrg Fortran 2008 and later
   2677      1.1  mrg 
   2678      1.1  mrg @item @emph{Class}:
   2679      1.1  mrg Elemental function
   2680      1.1  mrg 
   2681      1.1  mrg @item @emph{Syntax}:
   2682      1.1  mrg @code{RESULT = BESSEL_Y0(X)}
   2683      1.1  mrg 
   2684      1.1  mrg @item @emph{Arguments}:
   2685      1.1  mrg @multitable @columnfractions .15 .70
   2686      1.1  mrg @item @var{X} @tab The type shall be @code{REAL}.
   2687      1.1  mrg @end multitable
   2688      1.1  mrg 
   2689      1.1  mrg @item @emph{Return value}:
   2690      1.1  mrg The return value is of type @code{REAL}. It has the same kind as @var{X}.
   2691      1.1  mrg 
   2692      1.1  mrg @item @emph{Example}:
   2693      1.1  mrg @smallexample
   2694      1.1  mrg program test_besy0
   2695      1.1  mrg   real(8) :: x = 0.0_8
   2696      1.1  mrg   x = bessel_y0(x)
   2697      1.1  mrg end program test_besy0
   2698      1.1  mrg @end smallexample
   2699      1.1  mrg 
   2700      1.1  mrg @item @emph{Specific names}:
   2701  1.1.1.3  mrg @multitable @columnfractions .20 .23 .20 .33
   2702  1.1.1.3  mrg @headitem Name            @tab Argument          @tab Return type       @tab Standard
   2703      1.1  mrg @item @code{DBESY0(X)}@tab @code{REAL(8) X}  @tab @code{REAL(8)}    @tab GNU extension
   2704      1.1  mrg @end multitable
   2705      1.1  mrg @end table
   2706      1.1  mrg 
   2707      1.1  mrg 
   2708      1.1  mrg 
   2709      1.1  mrg @node BESSEL_Y1
   2710      1.1  mrg @section @code{BESSEL_Y1} --- Bessel function of the second kind of order 1
   2711      1.1  mrg @fnindex BESSEL_Y1
   2712      1.1  mrg @fnindex BESY1
   2713      1.1  mrg @fnindex DBESY1
   2714      1.1  mrg @cindex Bessel function, second kind
   2715      1.1  mrg 
   2716      1.1  mrg @table @asis
   2717      1.1  mrg @item @emph{Description}:
   2718      1.1  mrg @code{BESSEL_Y1(X)} computes the Bessel function of the second kind of
   2719      1.1  mrg order 1 of @var{X}. This function is available under the name
   2720      1.1  mrg @code{BESY1} as a GNU extension.
   2721      1.1  mrg 
   2722      1.1  mrg @item @emph{Standard}:
   2723      1.1  mrg Fortran 2008 and later
   2724      1.1  mrg 
   2725      1.1  mrg @item @emph{Class}:
   2726      1.1  mrg Elemental function
   2727      1.1  mrg 
   2728      1.1  mrg @item @emph{Syntax}:
   2729      1.1  mrg @code{RESULT = BESSEL_Y1(X)}
   2730      1.1  mrg 
   2731      1.1  mrg @item @emph{Arguments}:
   2732      1.1  mrg @multitable @columnfractions .15 .70
   2733      1.1  mrg @item @var{X} @tab The type shall be @code{REAL}.
   2734      1.1  mrg @end multitable
   2735      1.1  mrg 
   2736      1.1  mrg @item @emph{Return value}:
   2737      1.1  mrg The return value is of type @code{REAL}. It has the same kind as @var{X}.
   2738      1.1  mrg 
   2739      1.1  mrg @item @emph{Example}:
   2740      1.1  mrg @smallexample
   2741      1.1  mrg program test_besy1
   2742      1.1  mrg   real(8) :: x = 1.0_8
   2743      1.1  mrg   x = bessel_y1(x)
   2744      1.1  mrg end program test_besy1
   2745      1.1  mrg @end smallexample
   2746      1.1  mrg 
   2747      1.1  mrg @item @emph{Specific names}:
   2748  1.1.1.3  mrg @multitable @columnfractions .20 .23 .20 .33
   2749  1.1.1.3  mrg @headitem Name            @tab Argument          @tab Return type       @tab Standard
   2750      1.1  mrg @item @code{DBESY1(X)}@tab @code{REAL(8) X}  @tab @code{REAL(8)}    @tab GNU extension
   2751      1.1  mrg @end multitable
   2752      1.1  mrg @end table
   2753      1.1  mrg 
   2754      1.1  mrg 
   2755      1.1  mrg 
   2756      1.1  mrg @node BESSEL_YN
   2757      1.1  mrg @section @code{BESSEL_YN} --- Bessel function of the second kind
   2758      1.1  mrg @fnindex BESSEL_YN
   2759      1.1  mrg @fnindex BESYN
   2760      1.1  mrg @fnindex DBESYN
   2761      1.1  mrg @cindex Bessel function, second kind
   2762      1.1  mrg 
   2763      1.1  mrg @table @asis
   2764      1.1  mrg @item @emph{Description}:
   2765      1.1  mrg @code{BESSEL_YN(N, X)} computes the Bessel function of the second kind of
   2766      1.1  mrg order @var{N} of @var{X}. This function is available under the name
   2767      1.1  mrg @code{BESYN} as a GNU extension.  If @var{N} and @var{X} are arrays,
   2768      1.1  mrg their ranks and shapes shall conform.  
   2769      1.1  mrg 
   2770      1.1  mrg @code{BESSEL_YN(N1, N2, X)} returns an array with the Bessel functions
   2771      1.1  mrg of the first kind of the orders @var{N1} to @var{N2}.
   2772      1.1  mrg 
   2773      1.1  mrg @item @emph{Standard}:
   2774      1.1  mrg Fortran 2008 and later, negative @var{N} is allowed as GNU extension
   2775      1.1  mrg 
   2776      1.1  mrg @item @emph{Class}:
   2777      1.1  mrg Elemental function, except for the transformational function
   2778      1.1  mrg @code{BESSEL_YN(N1, N2, X)}
   2779      1.1  mrg 
   2780      1.1  mrg @item @emph{Syntax}:
   2781      1.1  mrg @multitable @columnfractions .80
   2782      1.1  mrg @item @code{RESULT = BESSEL_YN(N, X)}
   2783      1.1  mrg @item @code{RESULT = BESSEL_YN(N1, N2, X)}
   2784      1.1  mrg @end multitable
   2785      1.1  mrg 
   2786      1.1  mrg @item @emph{Arguments}:
   2787      1.1  mrg @multitable @columnfractions .15 .70
   2788      1.1  mrg @item @var{N} @tab Shall be a scalar or an array of type  @code{INTEGER} .
   2789      1.1  mrg @item @var{N1} @tab Shall be a non-negative scalar of type  @code{INTEGER}.
   2790      1.1  mrg @item @var{N2} @tab Shall be a non-negative scalar of type  @code{INTEGER}.
   2791      1.1  mrg @item @var{X} @tab Shall be a scalar or an array of type  @code{REAL};
   2792      1.1  mrg for @code{BESSEL_YN(N1, N2, X)} it shall be scalar.
   2793      1.1  mrg @end multitable
   2794      1.1  mrg 
   2795      1.1  mrg @item @emph{Return value}:
   2796      1.1  mrg The return value is a scalar of type @code{REAL}. It has the same
   2797      1.1  mrg kind as @var{X}.
   2798      1.1  mrg 
   2799      1.1  mrg @item @emph{Note}:
   2800      1.1  mrg The transformational function uses a recurrence algorithm which might,
   2801      1.1  mrg for some values of @var{X}, lead to different results than calls to
   2802      1.1  mrg the elemental function.
   2803      1.1  mrg 
   2804      1.1  mrg @item @emph{Example}:
   2805      1.1  mrg @smallexample
   2806      1.1  mrg program test_besyn
   2807      1.1  mrg   real(8) :: x = 1.0_8
   2808      1.1  mrg   x = bessel_yn(5,x)
   2809      1.1  mrg end program test_besyn
   2810      1.1  mrg @end smallexample
   2811      1.1  mrg 
   2812      1.1  mrg @item @emph{Specific names}:
   2813  1.1.1.3  mrg @multitable @columnfractions .20 .23 .20 .33
   2814  1.1.1.3  mrg @headitem Name               @tab Argument            @tab Return type     @tab Standard
   2815      1.1  mrg @item @code{DBESYN(N,X)} @tab @code{INTEGER N} @tab @code{REAL(8)}  @tab GNU extension
   2816  1.1.1.3  mrg @item                    @tab @code{REAL(8) X} @tab                 @tab
   2817      1.1  mrg @end multitable
   2818      1.1  mrg @end table
   2819      1.1  mrg 
   2820      1.1  mrg 
   2821      1.1  mrg 
   2822      1.1  mrg @node BGE
   2823      1.1  mrg @section @code{BGE} --- Bitwise greater than or equal to
   2824      1.1  mrg @fnindex BGE
   2825      1.1  mrg @cindex bitwise comparison
   2826      1.1  mrg 
   2827      1.1  mrg @table @asis
   2828      1.1  mrg @item @emph{Description}:
   2829      1.1  mrg Determines whether an integral is a bitwise greater than or equal to
   2830      1.1  mrg another.
   2831      1.1  mrg 
   2832      1.1  mrg @item @emph{Standard}:
   2833      1.1  mrg Fortran 2008 and later
   2834      1.1  mrg 
   2835      1.1  mrg @item @emph{Class}:
   2836      1.1  mrg Elemental function
   2837      1.1  mrg 
   2838      1.1  mrg @item @emph{Syntax}:
   2839      1.1  mrg @code{RESULT = BGE(I, J)}
   2840      1.1  mrg 
   2841      1.1  mrg @item @emph{Arguments}:
   2842      1.1  mrg @multitable @columnfractions .15 .70
   2843      1.1  mrg @item @var{I} @tab Shall be of @code{INTEGER} type.
   2844      1.1  mrg @item @var{J} @tab Shall be of @code{INTEGER} type, and of the same kind
   2845      1.1  mrg as @var{I}.
   2846      1.1  mrg @end multitable
   2847      1.1  mrg 
   2848      1.1  mrg @item @emph{Return value}:
   2849      1.1  mrg The return value is of type @code{LOGICAL} and of the default kind.
   2850      1.1  mrg 
   2851      1.1  mrg @item @emph{See also}:
   2852  1.1.1.2  mrg @ref{BGT}, @gol
   2853  1.1.1.2  mrg @ref{BLE}, @gol
   2854  1.1.1.2  mrg @ref{BLT}
   2855      1.1  mrg @end table
   2856      1.1  mrg 
   2857      1.1  mrg 
   2858      1.1  mrg 
   2859      1.1  mrg @node BGT
   2860      1.1  mrg @section @code{BGT} --- Bitwise greater than
   2861      1.1  mrg @fnindex BGT
   2862      1.1  mrg @cindex bitwise comparison
   2863      1.1  mrg 
   2864      1.1  mrg @table @asis
   2865      1.1  mrg @item @emph{Description}:
   2866      1.1  mrg Determines whether an integral is a bitwise greater than another.
   2867      1.1  mrg 
   2868      1.1  mrg @item @emph{Standard}:
   2869      1.1  mrg Fortran 2008 and later
   2870      1.1  mrg 
   2871      1.1  mrg @item @emph{Class}:
   2872      1.1  mrg Elemental function
   2873      1.1  mrg 
   2874      1.1  mrg @item @emph{Syntax}:
   2875      1.1  mrg @code{RESULT = BGT(I, J)}
   2876      1.1  mrg 
   2877      1.1  mrg @item @emph{Arguments}:
   2878      1.1  mrg @multitable @columnfractions .15 .70
   2879      1.1  mrg @item @var{I} @tab Shall be of @code{INTEGER} type.
   2880      1.1  mrg @item @var{J} @tab Shall be of @code{INTEGER} type, and of the same kind
   2881      1.1  mrg as @var{I}.
   2882      1.1  mrg @end multitable
   2883      1.1  mrg 
   2884      1.1  mrg @item @emph{Return value}:
   2885      1.1  mrg The return value is of type @code{LOGICAL} and of the default kind.
   2886      1.1  mrg 
   2887      1.1  mrg @item @emph{See also}:
   2888  1.1.1.2  mrg @ref{BGE}, @gol
   2889  1.1.1.2  mrg @ref{BLE}, @gol
   2890  1.1.1.2  mrg @ref{BLT}
   2891      1.1  mrg @end table
   2892      1.1  mrg 
   2893      1.1  mrg 
   2894      1.1  mrg 
   2895      1.1  mrg @node BIT_SIZE
   2896      1.1  mrg @section @code{BIT_SIZE} --- Bit size inquiry function
   2897      1.1  mrg @fnindex BIT_SIZE
   2898      1.1  mrg @cindex bits, number of
   2899      1.1  mrg @cindex size of a variable, in bits
   2900      1.1  mrg 
   2901      1.1  mrg @table @asis
   2902      1.1  mrg @item @emph{Description}:
   2903      1.1  mrg @code{BIT_SIZE(I)} returns the number of bits (integer precision plus sign bit)
   2904      1.1  mrg represented by the type of @var{I}.  The result of @code{BIT_SIZE(I)} is
   2905      1.1  mrg independent of the actual value of @var{I}.
   2906      1.1  mrg 
   2907      1.1  mrg @item @emph{Standard}:
   2908  1.1.1.2  mrg Fortran 90 and later
   2909      1.1  mrg 
   2910      1.1  mrg @item @emph{Class}:
   2911      1.1  mrg Inquiry function
   2912      1.1  mrg 
   2913      1.1  mrg @item @emph{Syntax}:
   2914      1.1  mrg @code{RESULT = BIT_SIZE(I)}
   2915      1.1  mrg 
   2916      1.1  mrg @item @emph{Arguments}:
   2917      1.1  mrg @multitable @columnfractions .15 .70
   2918      1.1  mrg @item @var{I} @tab The type shall be @code{INTEGER}.
   2919      1.1  mrg @end multitable
   2920      1.1  mrg 
   2921      1.1  mrg @item @emph{Return value}:
   2922      1.1  mrg The return value is of type @code{INTEGER}
   2923      1.1  mrg 
   2924      1.1  mrg @item @emph{Example}:
   2925      1.1  mrg @smallexample
   2926      1.1  mrg program test_bit_size
   2927      1.1  mrg     integer :: i = 123
   2928      1.1  mrg     integer :: size
   2929      1.1  mrg     size = bit_size(i)
   2930      1.1  mrg     print *, size
   2931      1.1  mrg end program test_bit_size
   2932      1.1  mrg @end smallexample
   2933      1.1  mrg @end table
   2934      1.1  mrg 
   2935      1.1  mrg 
   2936      1.1  mrg 
   2937      1.1  mrg @node BLE
   2938      1.1  mrg @section @code{BLE} --- Bitwise less than or equal to
   2939      1.1  mrg @fnindex BLE
   2940      1.1  mrg @cindex bitwise comparison
   2941      1.1  mrg 
   2942      1.1  mrg @table @asis
   2943      1.1  mrg @item @emph{Description}:
   2944      1.1  mrg Determines whether an integral is a bitwise less than or equal to
   2945      1.1  mrg another.
   2946      1.1  mrg 
   2947      1.1  mrg @item @emph{Standard}:
   2948      1.1  mrg Fortran 2008 and later
   2949      1.1  mrg 
   2950      1.1  mrg @item @emph{Class}:
   2951      1.1  mrg Elemental function
   2952      1.1  mrg 
   2953      1.1  mrg @item @emph{Syntax}:
   2954      1.1  mrg @code{RESULT = BLE(I, J)}
   2955      1.1  mrg 
   2956      1.1  mrg @item @emph{Arguments}:
   2957      1.1  mrg @multitable @columnfractions .15 .70
   2958      1.1  mrg @item @var{I} @tab Shall be of @code{INTEGER} type.
   2959      1.1  mrg @item @var{J} @tab Shall be of @code{INTEGER} type, and of the same kind
   2960      1.1  mrg as @var{I}.
   2961      1.1  mrg @end multitable
   2962      1.1  mrg 
   2963      1.1  mrg @item @emph{Return value}:
   2964      1.1  mrg The return value is of type @code{LOGICAL} and of the default kind.
   2965      1.1  mrg 
   2966      1.1  mrg @item @emph{See also}:
   2967  1.1.1.2  mrg @ref{BGT}, @gol
   2968  1.1.1.2  mrg @ref{BGE}, @gol
   2969  1.1.1.2  mrg @ref{BLT}
   2970      1.1  mrg @end table
   2971      1.1  mrg 
   2972      1.1  mrg 
   2973      1.1  mrg 
   2974      1.1  mrg @node BLT
   2975      1.1  mrg @section @code{BLT} --- Bitwise less than
   2976      1.1  mrg @fnindex BLT
   2977      1.1  mrg @cindex bitwise comparison
   2978      1.1  mrg 
   2979      1.1  mrg @table @asis
   2980      1.1  mrg @item @emph{Description}:
   2981      1.1  mrg Determines whether an integral is a bitwise less than another.
   2982      1.1  mrg 
   2983      1.1  mrg @item @emph{Standard}:
   2984      1.1  mrg Fortran 2008 and later
   2985      1.1  mrg 
   2986      1.1  mrg @item @emph{Class}:
   2987      1.1  mrg Elemental function
   2988      1.1  mrg 
   2989      1.1  mrg @item @emph{Syntax}:
   2990      1.1  mrg @code{RESULT = BLT(I, J)}
   2991      1.1  mrg 
   2992      1.1  mrg @item @emph{Arguments}:
   2993      1.1  mrg @multitable @columnfractions .15 .70
   2994      1.1  mrg @item @var{I} @tab Shall be of @code{INTEGER} type.
   2995      1.1  mrg @item @var{J} @tab Shall be of @code{INTEGER} type, and of the same kind
   2996      1.1  mrg as @var{I}.
   2997      1.1  mrg @end multitable
   2998      1.1  mrg 
   2999      1.1  mrg @item @emph{Return value}:
   3000      1.1  mrg The return value is of type @code{LOGICAL} and of the default kind.
   3001      1.1  mrg 
   3002      1.1  mrg @item @emph{See also}:
   3003  1.1.1.2  mrg @ref{BGE}, @gol
   3004  1.1.1.2  mrg @ref{BGT}, @gol
   3005  1.1.1.2  mrg @ref{BLE}
   3006      1.1  mrg @end table
   3007      1.1  mrg 
   3008      1.1  mrg 
   3009      1.1  mrg 
   3010      1.1  mrg @node BTEST
   3011      1.1  mrg @section @code{BTEST} --- Bit test function
   3012      1.1  mrg @fnindex BTEST
   3013      1.1  mrg @fnindex BBTEST
   3014      1.1  mrg @fnindex BITEST
   3015      1.1  mrg @fnindex BJTEST
   3016      1.1  mrg @fnindex BKTEST
   3017      1.1  mrg @cindex bits, testing
   3018      1.1  mrg 
   3019      1.1  mrg @table @asis
   3020      1.1  mrg @item @emph{Description}:
   3021      1.1  mrg @code{BTEST(I,POS)} returns logical @code{.TRUE.} if the bit at @var{POS}
   3022      1.1  mrg in @var{I} is set.  The counting of the bits starts at 0.
   3023      1.1  mrg 
   3024      1.1  mrg @item @emph{Standard}:
   3025  1.1.1.2  mrg Fortran 90 and later, has overloads that are GNU extensions
   3026      1.1  mrg 
   3027      1.1  mrg @item @emph{Class}:
   3028      1.1  mrg Elemental function
   3029      1.1  mrg 
   3030      1.1  mrg @item @emph{Syntax}:
   3031      1.1  mrg @code{RESULT = BTEST(I, POS)}
   3032      1.1  mrg 
   3033      1.1  mrg @item @emph{Arguments}:
   3034      1.1  mrg @multitable @columnfractions .15 .70
   3035      1.1  mrg @item @var{I} @tab The type shall be @code{INTEGER}.
   3036      1.1  mrg @item @var{POS} @tab The type shall be @code{INTEGER}.
   3037      1.1  mrg @end multitable
   3038      1.1  mrg 
   3039      1.1  mrg @item @emph{Return value}:
   3040      1.1  mrg The return value is of type @code{LOGICAL}
   3041      1.1  mrg 
   3042      1.1  mrg @item @emph{Example}:
   3043      1.1  mrg @smallexample
   3044      1.1  mrg program test_btest
   3045      1.1  mrg     integer :: i = 32768 + 1024 + 64
   3046      1.1  mrg     integer :: pos
   3047      1.1  mrg     logical :: bool
   3048      1.1  mrg     do pos=0,16
   3049      1.1  mrg         bool = btest(i, pos) 
   3050      1.1  mrg         print *, pos, bool
   3051      1.1  mrg     end do
   3052      1.1  mrg end program test_btest
   3053      1.1  mrg @end smallexample
   3054      1.1  mrg 
   3055      1.1  mrg @item @emph{Specific names}:
   3056  1.1.1.3  mrg @multitable @columnfractions .21 .28 .18 .30
   3057  1.1.1.3  mrg @headitem Name           @tab Argument         @tab Return type             @tab Standard
   3058  1.1.1.2  mrg @item @code{BTEST(I,POS)} @tab @code{INTEGER I,POS} @tab @code{LOGICAL} @tab Fortran 95 and later
   3059      1.1  mrg @item @code{BBTEST(I,POS)} @tab @code{INTEGER(1) I,POS} @tab @code{LOGICAL(1)} @tab GNU extension
   3060      1.1  mrg @item @code{BITEST(I,POS)} @tab @code{INTEGER(2) I,POS} @tab @code{LOGICAL(2)} @tab GNU extension
   3061      1.1  mrg @item @code{BJTEST(I,POS)} @tab @code{INTEGER(4) I,POS} @tab @code{LOGICAL(4)} @tab GNU extension
   3062      1.1  mrg @item @code{BKTEST(I,POS)} @tab @code{INTEGER(8) I,POS} @tab @code{LOGICAL(8)} @tab GNU extension
   3063      1.1  mrg @end multitable
   3064      1.1  mrg @end table
   3065      1.1  mrg 
   3066      1.1  mrg @node C_ASSOCIATED
   3067      1.1  mrg @section @code{C_ASSOCIATED} --- Status of a C pointer
   3068      1.1  mrg @fnindex C_ASSOCIATED
   3069      1.1  mrg @cindex association status, C pointer
   3070      1.1  mrg @cindex pointer, C association status
   3071      1.1  mrg 
   3072      1.1  mrg @table @asis
   3073      1.1  mrg @item @emph{Description}:
   3074      1.1  mrg @code{C_ASSOCIATED(c_ptr_1[, c_ptr_2])} determines the status of the C pointer
   3075      1.1  mrg @var{c_ptr_1} or if @var{c_ptr_1} is associated with the target @var{c_ptr_2}.
   3076      1.1  mrg 
   3077      1.1  mrg @item @emph{Standard}:
   3078      1.1  mrg Fortran 2003 and later
   3079      1.1  mrg 
   3080      1.1  mrg @item @emph{Class}:
   3081      1.1  mrg Inquiry function
   3082      1.1  mrg 
   3083      1.1  mrg @item @emph{Syntax}:
   3084      1.1  mrg @code{RESULT = C_ASSOCIATED(c_ptr_1[, c_ptr_2])}
   3085      1.1  mrg 
   3086      1.1  mrg @item @emph{Arguments}:
   3087      1.1  mrg @multitable @columnfractions .15 .70
   3088      1.1  mrg @item @var{c_ptr_1} @tab Scalar of the type @code{C_PTR} or @code{C_FUNPTR}.
   3089      1.1  mrg @item @var{c_ptr_2} @tab (Optional) Scalar of the same type as @var{c_ptr_1}.
   3090      1.1  mrg @end multitable
   3091      1.1  mrg 
   3092      1.1  mrg @item @emph{Return value}:
   3093      1.1  mrg The return value is of type @code{LOGICAL}; it is @code{.false.} if either
   3094      1.1  mrg @var{c_ptr_1} is a C NULL pointer or if @var{c_ptr1} and @var{c_ptr_2}
   3095      1.1  mrg point to different addresses.
   3096      1.1  mrg 
   3097      1.1  mrg @item @emph{Example}:
   3098      1.1  mrg @smallexample
   3099      1.1  mrg subroutine association_test(a,b)
   3100      1.1  mrg   use iso_c_binding, only: c_associated, c_loc, c_ptr
   3101      1.1  mrg   implicit none
   3102      1.1  mrg   real, pointer :: a
   3103      1.1  mrg   type(c_ptr) :: b
   3104      1.1  mrg   if(c_associated(b, c_loc(a))) &
   3105      1.1  mrg      stop 'b and a do not point to same target'
   3106      1.1  mrg end subroutine association_test
   3107      1.1  mrg @end smallexample
   3108      1.1  mrg 
   3109      1.1  mrg @item @emph{See also}:
   3110  1.1.1.2  mrg @ref{C_LOC}, @gol
   3111  1.1.1.2  mrg @ref{C_FUNLOC}
   3112      1.1  mrg @end table
   3113      1.1  mrg 
   3114      1.1  mrg 
   3115      1.1  mrg @node C_F_POINTER
   3116      1.1  mrg @section @code{C_F_POINTER} --- Convert C into Fortran pointer
   3117      1.1  mrg @fnindex C_F_POINTER
   3118      1.1  mrg @cindex pointer, convert C to Fortran
   3119      1.1  mrg 
   3120      1.1  mrg @table @asis
   3121      1.1  mrg @item @emph{Description}:
   3122      1.1  mrg @code{C_F_POINTER(CPTR, FPTR[, SHAPE])} assigns the target of the C pointer
   3123      1.1  mrg @var{CPTR} to the Fortran pointer @var{FPTR} and specifies its shape.
   3124      1.1  mrg 
   3125      1.1  mrg @item @emph{Standard}:
   3126      1.1  mrg Fortran 2003 and later
   3127      1.1  mrg 
   3128      1.1  mrg @item @emph{Class}:
   3129      1.1  mrg Subroutine
   3130      1.1  mrg 
   3131      1.1  mrg @item @emph{Syntax}:
   3132      1.1  mrg @code{CALL C_F_POINTER(CPTR, FPTR[, SHAPE])}
   3133      1.1  mrg 
   3134      1.1  mrg @item @emph{Arguments}:
   3135      1.1  mrg @multitable @columnfractions .15 .70
   3136      1.1  mrg @item @var{CPTR}  @tab scalar of the type @code{C_PTR}. It is
   3137      1.1  mrg @code{INTENT(IN)}.
   3138      1.1  mrg @item @var{FPTR}  @tab pointer interoperable with @var{cptr}. It is
   3139      1.1  mrg @code{INTENT(OUT)}.
   3140      1.1  mrg @item @var{SHAPE} @tab (Optional) Rank-one array of type @code{INTEGER}
   3141      1.1  mrg with @code{INTENT(IN)}. It shall be present
   3142      1.1  mrg if and only if @var{fptr} is an array. The size
   3143      1.1  mrg must be equal to the rank of @var{fptr}.
   3144      1.1  mrg @end multitable
   3145      1.1  mrg 
   3146      1.1  mrg @item @emph{Example}:
   3147      1.1  mrg @smallexample
   3148      1.1  mrg program main
   3149      1.1  mrg   use iso_c_binding
   3150      1.1  mrg   implicit none
   3151      1.1  mrg   interface
   3152      1.1  mrg     subroutine my_routine(p) bind(c,name='myC_func')
   3153      1.1  mrg       import :: c_ptr
   3154      1.1  mrg       type(c_ptr), intent(out) :: p
   3155      1.1  mrg     end subroutine
   3156      1.1  mrg   end interface
   3157      1.1  mrg   type(c_ptr) :: cptr
   3158      1.1  mrg   real,pointer :: a(:)
   3159      1.1  mrg   call my_routine(cptr)
   3160      1.1  mrg   call c_f_pointer(cptr, a, [12])
   3161      1.1  mrg end program main
   3162      1.1  mrg @end smallexample
   3163      1.1  mrg 
   3164      1.1  mrg @item @emph{See also}:
   3165  1.1.1.2  mrg @ref{C_LOC}, @gol
   3166  1.1.1.2  mrg @ref{C_F_PROCPOINTER}
   3167      1.1  mrg @end table
   3168      1.1  mrg 
   3169      1.1  mrg 
   3170      1.1  mrg @node C_F_PROCPOINTER
   3171      1.1  mrg @section @code{C_F_PROCPOINTER} --- Convert C into Fortran procedure pointer
   3172      1.1  mrg @fnindex C_F_PROCPOINTER
   3173      1.1  mrg @cindex pointer, C address of pointers
   3174      1.1  mrg 
   3175      1.1  mrg @table @asis
   3176      1.1  mrg @item @emph{Description}:
   3177      1.1  mrg @code{C_F_PROCPOINTER(CPTR, FPTR)} Assign the target of the C function pointer
   3178      1.1  mrg @var{CPTR} to the Fortran procedure pointer @var{FPTR}.
   3179      1.1  mrg 
   3180      1.1  mrg @item @emph{Standard}:
   3181      1.1  mrg Fortran 2003 and later
   3182      1.1  mrg 
   3183      1.1  mrg @item @emph{Class}:
   3184      1.1  mrg Subroutine
   3185      1.1  mrg 
   3186      1.1  mrg @item @emph{Syntax}:
   3187      1.1  mrg @code{CALL C_F_PROCPOINTER(cptr, fptr)}
   3188      1.1  mrg 
   3189      1.1  mrg @item @emph{Arguments}:
   3190      1.1  mrg @multitable @columnfractions .15 .70
   3191      1.1  mrg @item @var{CPTR}  @tab scalar of the type @code{C_FUNPTR}. It is
   3192      1.1  mrg @code{INTENT(IN)}.
   3193      1.1  mrg @item @var{FPTR}  @tab procedure pointer interoperable with @var{cptr}. It is
   3194      1.1  mrg @code{INTENT(OUT)}.
   3195      1.1  mrg @end multitable
   3196      1.1  mrg 
   3197      1.1  mrg @item @emph{Example}:
   3198      1.1  mrg @smallexample
   3199      1.1  mrg program main
   3200      1.1  mrg   use iso_c_binding
   3201      1.1  mrg   implicit none
   3202      1.1  mrg   abstract interface
   3203      1.1  mrg     function func(a)
   3204      1.1  mrg       import :: c_float
   3205      1.1  mrg       real(c_float), intent(in) :: a
   3206      1.1  mrg       real(c_float) :: func
   3207      1.1  mrg     end function
   3208      1.1  mrg   end interface
   3209      1.1  mrg   interface
   3210      1.1  mrg      function getIterFunc() bind(c,name="getIterFunc")
   3211      1.1  mrg        import :: c_funptr
   3212      1.1  mrg        type(c_funptr) :: getIterFunc
   3213      1.1  mrg      end function
   3214      1.1  mrg   end interface
   3215      1.1  mrg   type(c_funptr) :: cfunptr
   3216      1.1  mrg   procedure(func), pointer :: myFunc
   3217      1.1  mrg   cfunptr = getIterFunc()
   3218      1.1  mrg   call c_f_procpointer(cfunptr, myFunc)
   3219      1.1  mrg end program main
   3220      1.1  mrg @end smallexample
   3221      1.1  mrg 
   3222      1.1  mrg @item @emph{See also}:
   3223  1.1.1.2  mrg @ref{C_LOC}, @gol
   3224  1.1.1.2  mrg @ref{C_F_POINTER}
   3225      1.1  mrg @end table
   3226      1.1  mrg 
   3227      1.1  mrg 
   3228      1.1  mrg @node C_FUNLOC
   3229      1.1  mrg @section @code{C_FUNLOC} --- Obtain the C address of a procedure
   3230      1.1  mrg @fnindex C_FUNLOC
   3231      1.1  mrg @cindex pointer, C address of procedures
   3232      1.1  mrg 
   3233      1.1  mrg @table @asis
   3234      1.1  mrg @item @emph{Description}:
   3235      1.1  mrg @code{C_FUNLOC(x)} determines the C address of the argument.
   3236      1.1  mrg 
   3237      1.1  mrg @item @emph{Standard}:
   3238      1.1  mrg Fortran 2003 and later
   3239      1.1  mrg 
   3240      1.1  mrg @item @emph{Class}:
   3241      1.1  mrg Inquiry function
   3242      1.1  mrg 
   3243      1.1  mrg @item @emph{Syntax}:
   3244      1.1  mrg @code{RESULT = C_FUNLOC(x)}
   3245      1.1  mrg 
   3246      1.1  mrg @item @emph{Arguments}:
   3247      1.1  mrg @multitable @columnfractions .15 .70
   3248      1.1  mrg @item @var{x} @tab Interoperable function or pointer to such function.
   3249      1.1  mrg @end multitable
   3250      1.1  mrg 
   3251      1.1  mrg @item @emph{Return value}:
   3252      1.1  mrg The return value is of type @code{C_FUNPTR} and contains the C address
   3253      1.1  mrg of the argument.
   3254      1.1  mrg 
   3255      1.1  mrg @item @emph{Example}:
   3256      1.1  mrg @smallexample
   3257      1.1  mrg module x
   3258      1.1  mrg   use iso_c_binding
   3259      1.1  mrg   implicit none
   3260      1.1  mrg contains
   3261      1.1  mrg   subroutine sub(a) bind(c)
   3262      1.1  mrg     real(c_float) :: a
   3263      1.1  mrg     a = sqrt(a)+5.0
   3264      1.1  mrg   end subroutine sub
   3265      1.1  mrg end module x
   3266      1.1  mrg program main
   3267      1.1  mrg   use iso_c_binding
   3268      1.1  mrg   use x
   3269      1.1  mrg   implicit none
   3270      1.1  mrg   interface
   3271      1.1  mrg     subroutine my_routine(p) bind(c,name='myC_func')
   3272      1.1  mrg       import :: c_funptr
   3273      1.1  mrg       type(c_funptr), intent(in) :: p
   3274      1.1  mrg     end subroutine
   3275      1.1  mrg   end interface
   3276      1.1  mrg   call my_routine(c_funloc(sub))
   3277      1.1  mrg end program main
   3278      1.1  mrg @end smallexample
   3279      1.1  mrg 
   3280      1.1  mrg @item @emph{See also}:
   3281  1.1.1.2  mrg @ref{C_ASSOCIATED}, @gol
   3282  1.1.1.2  mrg @ref{C_LOC}, @gol
   3283  1.1.1.2  mrg @ref{C_F_POINTER}, @gol
   3284  1.1.1.2  mrg @ref{C_F_PROCPOINTER}
   3285      1.1  mrg @end table
   3286      1.1  mrg 
   3287      1.1  mrg 
   3288      1.1  mrg @node C_LOC
   3289      1.1  mrg @section @code{C_LOC} --- Obtain the C address of an object
   3290      1.1  mrg @fnindex C_LOC
   3291      1.1  mrg @cindex procedure pointer, convert C to Fortran
   3292      1.1  mrg 
   3293      1.1  mrg @table @asis
   3294      1.1  mrg @item @emph{Description}:
   3295      1.1  mrg @code{C_LOC(X)} determines the C address of the argument.
   3296      1.1  mrg 
   3297      1.1  mrg @item @emph{Standard}:
   3298      1.1  mrg Fortran 2003 and later
   3299      1.1  mrg 
   3300      1.1  mrg @item @emph{Class}:
   3301      1.1  mrg Inquiry function
   3302      1.1  mrg 
   3303      1.1  mrg @item @emph{Syntax}:
   3304      1.1  mrg @code{RESULT = C_LOC(X)}
   3305      1.1  mrg 
   3306      1.1  mrg @item @emph{Arguments}:
   3307      1.1  mrg @multitable @columnfractions .10 .75
   3308      1.1  mrg @item @var{X} @tab  Shall have either the POINTER or TARGET attribute. It shall not be a coindexed object. It shall either be a variable with interoperable type and kind type parameters, or be a scalar, nonpolymorphic variable with no length type parameters.
   3309      1.1  mrg 
   3310      1.1  mrg @end multitable
   3311      1.1  mrg 
   3312      1.1  mrg @item @emph{Return value}:
   3313      1.1  mrg The return value is of type @code{C_PTR} and contains the C address
   3314      1.1  mrg of the argument.
   3315      1.1  mrg 
   3316      1.1  mrg @item @emph{Example}:
   3317      1.1  mrg @smallexample
   3318      1.1  mrg subroutine association_test(a,b)
   3319      1.1  mrg   use iso_c_binding, only: c_associated, c_loc, c_ptr
   3320      1.1  mrg   implicit none
   3321      1.1  mrg   real, pointer :: a
   3322      1.1  mrg   type(c_ptr) :: b
   3323      1.1  mrg   if(c_associated(b, c_loc(a))) &
   3324      1.1  mrg      stop 'b and a do not point to same target'
   3325      1.1  mrg end subroutine association_test
   3326      1.1  mrg @end smallexample
   3327      1.1  mrg 
   3328      1.1  mrg @item @emph{See also}:
   3329  1.1.1.2  mrg @ref{C_ASSOCIATED}, @gol
   3330  1.1.1.2  mrg @ref{C_FUNLOC}, @gol
   3331  1.1.1.2  mrg @ref{C_F_POINTER}, @gol
   3332  1.1.1.2  mrg @ref{C_F_PROCPOINTER}
   3333      1.1  mrg @end table
   3334      1.1  mrg 
   3335      1.1  mrg 
   3336      1.1  mrg @node C_SIZEOF
   3337      1.1  mrg @section @code{C_SIZEOF} --- Size in bytes of an expression
   3338      1.1  mrg @fnindex C_SIZEOF
   3339      1.1  mrg @cindex expression size
   3340      1.1  mrg @cindex size of an expression
   3341      1.1  mrg 
   3342      1.1  mrg @table @asis
   3343      1.1  mrg @item @emph{Description}:
   3344      1.1  mrg @code{C_SIZEOF(X)} calculates the number of bytes of storage the
   3345      1.1  mrg expression @code{X} occupies.
   3346      1.1  mrg 
   3347      1.1  mrg @item @emph{Standard}:
   3348      1.1  mrg Fortran 2008
   3349      1.1  mrg 
   3350      1.1  mrg @item @emph{Class}:
   3351      1.1  mrg Inquiry function of the module @code{ISO_C_BINDING}
   3352      1.1  mrg 
   3353      1.1  mrg @item @emph{Syntax}:
   3354      1.1  mrg @code{N = C_SIZEOF(X)}
   3355      1.1  mrg 
   3356      1.1  mrg @item @emph{Arguments}:
   3357      1.1  mrg @multitable @columnfractions .15 .70
   3358      1.1  mrg @item @var{X} @tab The argument shall be an interoperable data entity.
   3359      1.1  mrg @end multitable
   3360      1.1  mrg 
   3361      1.1  mrg @item @emph{Return value}:
   3362      1.1  mrg The return value is of type integer and of the system-dependent kind
   3363      1.1  mrg @code{C_SIZE_T} (from the @code{ISO_C_BINDING} module). Its value is the
   3364      1.1  mrg number of bytes occupied by the argument.  If the argument has the
   3365      1.1  mrg @code{POINTER} attribute, the number of bytes of the storage area pointed
   3366      1.1  mrg to is returned.  If the argument is of a derived type with @code{POINTER}
   3367      1.1  mrg or @code{ALLOCATABLE} components, the return value does not account for
   3368      1.1  mrg the sizes of the data pointed to by these components.
   3369      1.1  mrg 
   3370      1.1  mrg @item @emph{Example}:
   3371      1.1  mrg @smallexample
   3372      1.1  mrg    use iso_c_binding
   3373      1.1  mrg    integer(c_int) :: i
   3374      1.1  mrg    real(c_float) :: r, s(5)
   3375      1.1  mrg    print *, (c_sizeof(s)/c_sizeof(r) == 5)
   3376      1.1  mrg    end
   3377      1.1  mrg @end smallexample
   3378  1.1.1.2  mrg The example will print @code{T} unless you are using a platform
   3379      1.1  mrg where default @code{REAL} variables are unusually padded.
   3380      1.1  mrg 
   3381      1.1  mrg @item @emph{See also}:
   3382  1.1.1.2  mrg @ref{SIZEOF}, @gol
   3383  1.1.1.2  mrg @ref{STORAGE_SIZE}
   3384      1.1  mrg @end table
   3385      1.1  mrg 
   3386      1.1  mrg 
   3387      1.1  mrg @node CEILING
   3388      1.1  mrg @section @code{CEILING} --- Integer ceiling function
   3389      1.1  mrg @fnindex CEILING
   3390      1.1  mrg @cindex ceiling
   3391      1.1  mrg @cindex rounding, ceiling
   3392      1.1  mrg 
   3393      1.1  mrg @table @asis
   3394      1.1  mrg @item @emph{Description}:
   3395      1.1  mrg @code{CEILING(A)} returns the least integer greater than or equal to @var{A}.
   3396      1.1  mrg 
   3397      1.1  mrg @item @emph{Standard}:
   3398      1.1  mrg Fortran 95 and later
   3399      1.1  mrg 
   3400      1.1  mrg @item @emph{Class}:
   3401      1.1  mrg Elemental function
   3402      1.1  mrg 
   3403      1.1  mrg @item @emph{Syntax}:
   3404      1.1  mrg @code{RESULT = CEILING(A [, KIND])}
   3405      1.1  mrg 
   3406      1.1  mrg @item @emph{Arguments}:
   3407      1.1  mrg @multitable @columnfractions .15 .70
   3408      1.1  mrg @item @var{A} @tab The type shall be @code{REAL}.
   3409      1.1  mrg @item @var{KIND} @tab (Optional) An @code{INTEGER} initialization
   3410      1.1  mrg expression indicating the kind parameter of the result.
   3411      1.1  mrg @end multitable
   3412      1.1  mrg 
   3413      1.1  mrg @item @emph{Return value}:
   3414      1.1  mrg The return value is of type @code{INTEGER(KIND)} if @var{KIND} is present
   3415      1.1  mrg and a default-kind @code{INTEGER} otherwise.
   3416      1.1  mrg 
   3417      1.1  mrg @item @emph{Example}:
   3418      1.1  mrg @smallexample
   3419      1.1  mrg program test_ceiling
   3420      1.1  mrg     real :: x = 63.29
   3421      1.1  mrg     real :: y = -63.59
   3422      1.1  mrg     print *, ceiling(x) ! returns 64
   3423      1.1  mrg     print *, ceiling(y) ! returns -63
   3424      1.1  mrg end program test_ceiling
   3425      1.1  mrg @end smallexample
   3426      1.1  mrg 
   3427      1.1  mrg @item @emph{See also}:
   3428  1.1.1.2  mrg @ref{FLOOR}, @gol
   3429  1.1.1.2  mrg @ref{NINT}
   3430      1.1  mrg @end table
   3431      1.1  mrg 
   3432      1.1  mrg 
   3433      1.1  mrg 
   3434      1.1  mrg @node CHAR
   3435      1.1  mrg @section @code{CHAR} --- Character conversion function
   3436      1.1  mrg @fnindex CHAR
   3437      1.1  mrg @cindex conversion, to character
   3438      1.1  mrg 
   3439      1.1  mrg @table @asis
   3440      1.1  mrg @item @emph{Description}:
   3441      1.1  mrg @code{CHAR(I [, KIND])} returns the character represented by the integer @var{I}.
   3442      1.1  mrg 
   3443      1.1  mrg @item @emph{Standard}:
   3444      1.1  mrg Fortran 77 and later
   3445      1.1  mrg 
   3446      1.1  mrg @item @emph{Class}:
   3447      1.1  mrg Elemental function
   3448      1.1  mrg 
   3449      1.1  mrg @item @emph{Syntax}:
   3450      1.1  mrg @code{RESULT = CHAR(I [, KIND])}
   3451      1.1  mrg 
   3452      1.1  mrg @item @emph{Arguments}:
   3453      1.1  mrg @multitable @columnfractions .15 .70
   3454      1.1  mrg @item @var{I} @tab The type shall be @code{INTEGER}.
   3455      1.1  mrg @item @var{KIND} @tab (Optional) An @code{INTEGER} initialization
   3456      1.1  mrg expression indicating the kind parameter of the result.
   3457      1.1  mrg @end multitable
   3458      1.1  mrg 
   3459      1.1  mrg @item @emph{Return value}:
   3460      1.1  mrg The return value is of type @code{CHARACTER(1)}
   3461      1.1  mrg 
   3462      1.1  mrg @item @emph{Example}:
   3463      1.1  mrg @smallexample
   3464      1.1  mrg program test_char
   3465      1.1  mrg     integer :: i = 74
   3466      1.1  mrg     character(1) :: c
   3467      1.1  mrg     c = char(i)
   3468      1.1  mrg     print *, i, c ! returns 'J'
   3469      1.1  mrg end program test_char
   3470      1.1  mrg @end smallexample
   3471      1.1  mrg 
   3472      1.1  mrg @item @emph{Specific names}:
   3473  1.1.1.3  mrg @multitable @columnfractions .19 .19 .25 .33
   3474  1.1.1.3  mrg @headitem Name           @tab Argument         @tab Return type             @tab Standard
   3475  1.1.1.2  mrg @item @code{CHAR(I)} @tab @code{INTEGER I} @tab @code{CHARACTER(LEN=1)} @tab Fortran 77 and later
   3476      1.1  mrg @end multitable
   3477      1.1  mrg 
   3478      1.1  mrg @item @emph{Note}:
   3479      1.1  mrg See @ref{ICHAR} for a discussion of converting between numerical values
   3480      1.1  mrg and formatted string representations.
   3481      1.1  mrg 
   3482      1.1  mrg @item @emph{See also}:
   3483  1.1.1.2  mrg @ref{ACHAR}, @gol
   3484  1.1.1.2  mrg @ref{IACHAR}, @gol
   3485  1.1.1.2  mrg @ref{ICHAR}
   3486      1.1  mrg 
   3487      1.1  mrg @end table
   3488      1.1  mrg 
   3489      1.1  mrg 
   3490      1.1  mrg 
   3491      1.1  mrg @node CHDIR
   3492      1.1  mrg @section @code{CHDIR} --- Change working directory
   3493      1.1  mrg @fnindex CHDIR
   3494      1.1  mrg @cindex system, working directory
   3495      1.1  mrg 
   3496      1.1  mrg @table @asis
   3497      1.1  mrg @item @emph{Description}:
   3498      1.1  mrg Change current working directory to a specified path.
   3499      1.1  mrg 
   3500      1.1  mrg This intrinsic is provided in both subroutine and function forms; however,
   3501      1.1  mrg only one form can be used in any given program unit.
   3502      1.1  mrg 
   3503      1.1  mrg @item @emph{Standard}:
   3504      1.1  mrg GNU extension
   3505      1.1  mrg 
   3506      1.1  mrg @item @emph{Class}:
   3507      1.1  mrg Subroutine, function
   3508      1.1  mrg 
   3509      1.1  mrg @item @emph{Syntax}:
   3510      1.1  mrg @multitable @columnfractions .80
   3511      1.1  mrg @item @code{CALL CHDIR(NAME [, STATUS])}
   3512      1.1  mrg @item @code{STATUS = CHDIR(NAME)}
   3513      1.1  mrg @end multitable
   3514      1.1  mrg 
   3515      1.1  mrg @item @emph{Arguments}:
   3516      1.1  mrg @multitable @columnfractions .15 .70
   3517      1.1  mrg @item @var{NAME}   @tab The type shall be @code{CHARACTER} of default
   3518      1.1  mrg kind and shall specify a valid path within the file system.
   3519      1.1  mrg @item @var{STATUS} @tab (Optional) @code{INTEGER} status flag of the default
   3520      1.1  mrg kind.  Returns 0 on success, and a system specific and nonzero error code
   3521      1.1  mrg otherwise.
   3522      1.1  mrg @end multitable
   3523      1.1  mrg 
   3524      1.1  mrg @item @emph{Example}:
   3525      1.1  mrg @smallexample
   3526      1.1  mrg PROGRAM test_chdir
   3527      1.1  mrg   CHARACTER(len=255) :: path
   3528      1.1  mrg   CALL getcwd(path)
   3529      1.1  mrg   WRITE(*,*) TRIM(path)
   3530      1.1  mrg   CALL chdir("/tmp")
   3531      1.1  mrg   CALL getcwd(path)
   3532      1.1  mrg   WRITE(*,*) TRIM(path)
   3533      1.1  mrg END PROGRAM
   3534      1.1  mrg @end smallexample
   3535      1.1  mrg 
   3536      1.1  mrg @item @emph{See also}:
   3537      1.1  mrg @ref{GETCWD}
   3538      1.1  mrg @end table
   3539      1.1  mrg 
   3540      1.1  mrg 
   3541      1.1  mrg 
   3542      1.1  mrg @node CHMOD
   3543      1.1  mrg @section @code{CHMOD} --- Change access permissions of files
   3544      1.1  mrg @fnindex CHMOD
   3545      1.1  mrg @cindex file system, change access mode
   3546      1.1  mrg 
   3547      1.1  mrg @table @asis
   3548      1.1  mrg @item @emph{Description}:
   3549      1.1  mrg @code{CHMOD} changes the permissions of a file.
   3550      1.1  mrg 
   3551      1.1  mrg This intrinsic is provided in both subroutine and function forms; however,
   3552      1.1  mrg only one form can be used in any given program unit.
   3553      1.1  mrg 
   3554      1.1  mrg @item @emph{Standard}:
   3555      1.1  mrg GNU extension
   3556      1.1  mrg 
   3557      1.1  mrg @item @emph{Class}:
   3558      1.1  mrg Subroutine, function
   3559      1.1  mrg 
   3560      1.1  mrg @item @emph{Syntax}:
   3561      1.1  mrg @multitable @columnfractions .80
   3562      1.1  mrg @item @code{CALL CHMOD(NAME, MODE[, STATUS])}
   3563      1.1  mrg @item @code{STATUS = CHMOD(NAME, MODE)}
   3564      1.1  mrg @end multitable
   3565      1.1  mrg 
   3566      1.1  mrg @item @emph{Arguments}:
   3567      1.1  mrg @multitable @columnfractions .15 .70
   3568      1.1  mrg 
   3569      1.1  mrg @item @var{NAME} @tab Scalar @code{CHARACTER} of default kind with the
   3570      1.1  mrg file name. Trailing blanks are ignored unless the character
   3571      1.1  mrg @code{achar(0)} is present, then all characters up to and excluding
   3572      1.1  mrg @code{achar(0)} are used as the file name.
   3573      1.1  mrg 
   3574      1.1  mrg @item @var{MODE} @tab Scalar @code{CHARACTER} of default kind giving the
   3575      1.1  mrg file permission. @var{MODE} uses the same syntax as the @code{chmod} utility
   3576      1.1  mrg as defined by the POSIX standard. The argument shall either be a string of
   3577      1.1  mrg a nonnegative octal number or a symbolic mode.
   3578      1.1  mrg 
   3579      1.1  mrg @item @var{STATUS} @tab (optional) scalar @code{INTEGER}, which is
   3580      1.1  mrg @code{0} on success and nonzero otherwise.
   3581      1.1  mrg @end multitable
   3582      1.1  mrg 
   3583      1.1  mrg @item @emph{Return value}:
   3584      1.1  mrg In either syntax, @var{STATUS} is set to @code{0} on success and nonzero
   3585      1.1  mrg otherwise.
   3586      1.1  mrg 
   3587      1.1  mrg @item @emph{Example}:
   3588      1.1  mrg @code{CHMOD} as subroutine
   3589      1.1  mrg @smallexample
   3590      1.1  mrg program chmod_test
   3591      1.1  mrg   implicit none
   3592      1.1  mrg   integer :: status
   3593      1.1  mrg   call chmod('test.dat','u+x',status)
   3594      1.1  mrg   print *, 'Status: ', status
   3595      1.1  mrg end program chmod_test
   3596      1.1  mrg @end smallexample
   3597      1.1  mrg @code{CHMOD} as function:
   3598      1.1  mrg @smallexample
   3599      1.1  mrg program chmod_test
   3600      1.1  mrg   implicit none
   3601      1.1  mrg   integer :: status
   3602      1.1  mrg   status = chmod('test.dat','u+x')
   3603      1.1  mrg   print *, 'Status: ', status
   3604      1.1  mrg end program chmod_test
   3605      1.1  mrg @end smallexample
   3606      1.1  mrg 
   3607      1.1  mrg @end table
   3608      1.1  mrg 
   3609      1.1  mrg 
   3610      1.1  mrg 
   3611      1.1  mrg @node CMPLX
   3612      1.1  mrg @section @code{CMPLX} --- Complex conversion function
   3613      1.1  mrg @fnindex CMPLX
   3614      1.1  mrg @cindex complex numbers, conversion to
   3615      1.1  mrg @cindex conversion, to complex
   3616      1.1  mrg 
   3617      1.1  mrg @table @asis
   3618      1.1  mrg @item @emph{Description}:
   3619      1.1  mrg @code{CMPLX(X [, Y [, KIND]])} returns a complex number where @var{X} is converted to
   3620      1.1  mrg the real component.  If @var{Y} is present it is converted to the imaginary
   3621      1.1  mrg component.  If @var{Y} is not present then the imaginary component is set to
   3622      1.1  mrg 0.0.  If @var{X} is complex then @var{Y} must not be present.
   3623      1.1  mrg 
   3624      1.1  mrg @item @emph{Standard}:
   3625      1.1  mrg Fortran 77 and later
   3626      1.1  mrg 
   3627      1.1  mrg @item @emph{Class}:
   3628      1.1  mrg Elemental function
   3629      1.1  mrg 
   3630      1.1  mrg @item @emph{Syntax}:
   3631      1.1  mrg @code{RESULT = CMPLX(X [, Y [, KIND]])}
   3632      1.1  mrg 
   3633      1.1  mrg @item @emph{Arguments}:
   3634      1.1  mrg @multitable @columnfractions .15 .70
   3635      1.1  mrg @item @var{X} @tab The type may be @code{INTEGER}, @code{REAL},
   3636      1.1  mrg or @code{COMPLEX}.
   3637      1.1  mrg @item @var{Y} @tab (Optional; only allowed if @var{X} is not
   3638      1.1  mrg @code{COMPLEX}.)  May be @code{INTEGER} or @code{REAL}.
   3639      1.1  mrg @item @var{KIND} @tab (Optional) An @code{INTEGER} initialization
   3640      1.1  mrg expression indicating the kind parameter of the result.
   3641      1.1  mrg @end multitable
   3642      1.1  mrg 
   3643      1.1  mrg @item @emph{Return value}:
   3644      1.1  mrg The return value is of @code{COMPLEX} type, with a kind equal to
   3645      1.1  mrg @var{KIND} if it is specified.  If @var{KIND} is not specified, the
   3646      1.1  mrg result is of the default @code{COMPLEX} kind, regardless of the kinds of
   3647      1.1  mrg @var{X} and @var{Y}. 
   3648      1.1  mrg 
   3649      1.1  mrg @item @emph{Example}:
   3650      1.1  mrg @smallexample
   3651      1.1  mrg program test_cmplx
   3652      1.1  mrg     integer :: i = 42
   3653      1.1  mrg     real :: x = 3.14
   3654      1.1  mrg     complex :: z
   3655      1.1  mrg     z = cmplx(i, x)
   3656      1.1  mrg     print *, z, cmplx(x)
   3657      1.1  mrg end program test_cmplx
   3658      1.1  mrg @end smallexample
   3659      1.1  mrg 
   3660      1.1  mrg @item @emph{See also}:
   3661      1.1  mrg @ref{COMPLEX}
   3662      1.1  mrg @end table
   3663      1.1  mrg 
   3664      1.1  mrg 
   3665      1.1  mrg 
   3666      1.1  mrg @node CO_BROADCAST
   3667      1.1  mrg @section @code{CO_BROADCAST} --- Copy a value to all images the current set of images
   3668      1.1  mrg @fnindex CO_BROADCAST
   3669      1.1  mrg @cindex Collectives, value broadcasting
   3670      1.1  mrg 
   3671      1.1  mrg @table @asis
   3672      1.1  mrg @item @emph{Description}:
   3673      1.1  mrg @code{CO_BROADCAST} copies the value of argument @var{A} on the image with
   3674      1.1  mrg image index @code{SOURCE_IMAGE} to all images in the current team.  @var{A}
   3675      1.1  mrg becomes defined as if by intrinsic assignment.  If the execution was
   3676      1.1  mrg successful and @var{STAT} is present, it is assigned the value zero.  If the
   3677      1.1  mrg execution failed, @var{STAT} gets assigned a nonzero value and, if present,
   3678      1.1  mrg @var{ERRMSG} gets assigned a value describing the occurred error.
   3679      1.1  mrg 
   3680      1.1  mrg @item @emph{Standard}:
   3681      1.1  mrg Technical Specification (TS) 18508 or later
   3682      1.1  mrg 
   3683      1.1  mrg @item @emph{Class}:
   3684      1.1  mrg Collective subroutine
   3685      1.1  mrg 
   3686      1.1  mrg @item @emph{Syntax}:
   3687      1.1  mrg @code{CALL CO_BROADCAST(A, SOURCE_IMAGE [, STAT, ERRMSG])}
   3688      1.1  mrg 
   3689      1.1  mrg @item @emph{Arguments}:
   3690  1.1.1.2  mrg @multitable @columnfractions .20 .65
   3691      1.1  mrg @item @var{A}            @tab INTENT(INOUT) argument; shall have the same
   3692  1.1.1.2  mrg dynamic type and type parameters on all images of the current team. If it
   3693      1.1  mrg is an array, it shall have the same shape on all images.
   3694      1.1  mrg @item @var{SOURCE_IMAGE} @tab a scalar integer expression.
   3695  1.1.1.3  mrg It shall have the same value on all images and refer to an
   3696      1.1  mrg image of the current team.
   3697      1.1  mrg @item @var{STAT}         @tab (optional) a scalar integer variable
   3698      1.1  mrg @item @var{ERRMSG}       @tab (optional) a scalar character variable
   3699      1.1  mrg @end multitable
   3700      1.1  mrg 
   3701      1.1  mrg @item @emph{Example}:
   3702      1.1  mrg @smallexample
   3703      1.1  mrg program test
   3704      1.1  mrg   integer :: val(3)
   3705      1.1  mrg   if (this_image() == 1) then
   3706      1.1  mrg     val = [1, 5, 3]
   3707      1.1  mrg   end if
   3708      1.1  mrg   call co_broadcast (val, source_image=1)
   3709      1.1  mrg   print *, this_image, ":", val
   3710      1.1  mrg end program test
   3711      1.1  mrg @end smallexample
   3712      1.1  mrg 
   3713      1.1  mrg @item @emph{See also}:
   3714  1.1.1.2  mrg @ref{CO_MAX}, @gol
   3715  1.1.1.2  mrg @ref{CO_MIN}, @gol
   3716  1.1.1.2  mrg @ref{CO_SUM}, @gol
   3717  1.1.1.2  mrg @ref{CO_REDUCE}
   3718      1.1  mrg @end table
   3719      1.1  mrg 
   3720      1.1  mrg 
   3721      1.1  mrg 
   3722      1.1  mrg @node CO_MAX
   3723      1.1  mrg @section @code{CO_MAX} --- Maximal value on the current set of images
   3724      1.1  mrg @fnindex CO_MAX
   3725      1.1  mrg @cindex Collectives, maximal value
   3726      1.1  mrg 
   3727      1.1  mrg @table @asis
   3728      1.1  mrg @item @emph{Description}:
   3729      1.1  mrg @code{CO_MAX} determines element-wise the maximal value of @var{A} on all
   3730      1.1  mrg images of the current team.  If @var{RESULT_IMAGE} is present, the maximum
   3731      1.1  mrg values are returned in @var{A} on the specified image only and the value
   3732      1.1  mrg of @var{A} on the other images become undefined.  If @var{RESULT_IMAGE} is
   3733      1.1  mrg not present, the value is returned on all images.  If the execution was
   3734      1.1  mrg successful and @var{STAT} is present, it is assigned the value zero.  If the
   3735      1.1  mrg execution failed, @var{STAT} gets assigned a nonzero value and, if present,
   3736      1.1  mrg @var{ERRMSG} gets assigned a value describing the occurred error.
   3737      1.1  mrg 
   3738      1.1  mrg @item @emph{Standard}:
   3739      1.1  mrg Technical Specification (TS) 18508 or later
   3740      1.1  mrg 
   3741      1.1  mrg @item @emph{Class}:
   3742      1.1  mrg Collective subroutine
   3743      1.1  mrg 
   3744      1.1  mrg @item @emph{Syntax}:
   3745      1.1  mrg @code{CALL CO_MAX(A [, RESULT_IMAGE, STAT, ERRMSG])}
   3746      1.1  mrg 
   3747      1.1  mrg @item @emph{Arguments}:
   3748  1.1.1.2  mrg @multitable @columnfractions .20 .65
   3749      1.1  mrg @item @var{A}            @tab shall be an integer, real or character variable,
   3750      1.1  mrg which has the same type and type parameters on all images of the team.
   3751      1.1  mrg @item @var{RESULT_IMAGE} @tab (optional) a scalar integer expression; if
   3752  1.1.1.3  mrg present, it shall have the same value on all images and refer to an
   3753      1.1  mrg image of the current team.
   3754      1.1  mrg @item @var{STAT}         @tab (optional) a scalar integer variable
   3755      1.1  mrg @item @var{ERRMSG}       @tab (optional) a scalar character variable
   3756      1.1  mrg @end multitable
   3757      1.1  mrg 
   3758      1.1  mrg @item @emph{Example}:
   3759      1.1  mrg @smallexample
   3760      1.1  mrg program test
   3761      1.1  mrg   integer :: val
   3762      1.1  mrg   val = this_image ()
   3763      1.1  mrg   call co_max (val, result_image=1)
   3764      1.1  mrg   if (this_image() == 1) then
   3765      1.1  mrg     write(*,*) "Maximal value", val  ! prints num_images()
   3766      1.1  mrg   end if
   3767      1.1  mrg end program test
   3768      1.1  mrg @end smallexample
   3769      1.1  mrg 
   3770      1.1  mrg @item @emph{See also}:
   3771  1.1.1.2  mrg @ref{CO_MIN}, @gol
   3772  1.1.1.2  mrg @ref{CO_SUM}, @gol
   3773  1.1.1.2  mrg @ref{CO_REDUCE}, @gol
   3774  1.1.1.2  mrg @ref{CO_BROADCAST}
   3775      1.1  mrg @end table
   3776      1.1  mrg 
   3777      1.1  mrg 
   3778      1.1  mrg 
   3779      1.1  mrg @node CO_MIN
   3780      1.1  mrg @section @code{CO_MIN} --- Minimal value on the current set of images
   3781      1.1  mrg @fnindex CO_MIN
   3782      1.1  mrg @cindex Collectives, minimal value
   3783      1.1  mrg 
   3784      1.1  mrg @table @asis
   3785      1.1  mrg @item @emph{Description}:
   3786      1.1  mrg @code{CO_MIN} determines element-wise the minimal value of @var{A} on all
   3787      1.1  mrg images of the current team.  If @var{RESULT_IMAGE} is present, the minimal
   3788      1.1  mrg values are returned in @var{A} on the specified image only and the value
   3789      1.1  mrg of @var{A} on the other images become undefined.  If @var{RESULT_IMAGE} is
   3790      1.1  mrg not present, the value is returned on all images.  If the execution was
   3791      1.1  mrg successful and @var{STAT} is present, it is assigned the value zero.  If the
   3792      1.1  mrg execution failed, @var{STAT} gets assigned a nonzero value and, if present,
   3793      1.1  mrg @var{ERRMSG} gets assigned a value describing the occurred error.
   3794      1.1  mrg 
   3795      1.1  mrg @item @emph{Standard}:
   3796      1.1  mrg Technical Specification (TS) 18508 or later
   3797      1.1  mrg 
   3798      1.1  mrg @item @emph{Class}:
   3799      1.1  mrg Collective subroutine
   3800      1.1  mrg 
   3801      1.1  mrg @item @emph{Syntax}:
   3802      1.1  mrg @code{CALL CO_MIN(A [, RESULT_IMAGE, STAT, ERRMSG])}
   3803      1.1  mrg 
   3804      1.1  mrg @item @emph{Arguments}:
   3805  1.1.1.2  mrg @multitable @columnfractions .20 .65
   3806      1.1  mrg @item @var{A}            @tab shall be an integer, real or character variable,
   3807      1.1  mrg which has the same type and type parameters on all images of the team.
   3808      1.1  mrg @item @var{RESULT_IMAGE} @tab (optional) a scalar integer expression; if
   3809  1.1.1.3  mrg present, it shall have the same value on all images and refer to an
   3810      1.1  mrg image of the current team.
   3811      1.1  mrg @item @var{STAT}         @tab (optional) a scalar integer variable
   3812      1.1  mrg @item @var{ERRMSG}       @tab (optional) a scalar character variable
   3813      1.1  mrg @end multitable
   3814      1.1  mrg 
   3815      1.1  mrg @item @emph{Example}:
   3816      1.1  mrg @smallexample
   3817      1.1  mrg program test
   3818      1.1  mrg   integer :: val
   3819      1.1  mrg   val = this_image ()
   3820      1.1  mrg   call co_min (val, result_image=1)
   3821      1.1  mrg   if (this_image() == 1) then
   3822      1.1  mrg     write(*,*) "Minimal value", val  ! prints 1
   3823      1.1  mrg   end if
   3824      1.1  mrg end program test
   3825      1.1  mrg @end smallexample
   3826      1.1  mrg 
   3827      1.1  mrg @item @emph{See also}:
   3828  1.1.1.2  mrg @ref{CO_MAX}, @gol
   3829  1.1.1.2  mrg @ref{CO_SUM}, @gol
   3830  1.1.1.2  mrg @ref{CO_REDUCE}, @gol
   3831  1.1.1.2  mrg @ref{CO_BROADCAST}
   3832      1.1  mrg @end table
   3833      1.1  mrg 
   3834      1.1  mrg 
   3835      1.1  mrg 
   3836      1.1  mrg @node CO_REDUCE
   3837      1.1  mrg @section @code{CO_REDUCE} --- Reduction of values on the current set of images
   3838      1.1  mrg @fnindex CO_REDUCE
   3839      1.1  mrg @cindex Collectives, generic reduction
   3840      1.1  mrg 
   3841      1.1  mrg @table @asis
   3842      1.1  mrg @item @emph{Description}:
   3843      1.1  mrg @code{CO_REDUCE} determines element-wise the reduction of the value of @var{A}
   3844  1.1.1.3  mrg on all images of the current team.  The pure function passed as @var{OPERATION}
   3845      1.1  mrg is used to pairwise reduce the values of @var{A} by passing either the value
   3846      1.1  mrg of @var{A} of different images or the result values of such a reduction as
   3847      1.1  mrg argument.  If @var{A} is an array, the deduction is done element wise. If
   3848      1.1  mrg @var{RESULT_IMAGE} is present, the result values are returned in @var{A} on
   3849      1.1  mrg the specified image only and the value of @var{A} on the other images become
   3850      1.1  mrg undefined.  If @var{RESULT_IMAGE} is not present, the value is returned on all
   3851      1.1  mrg images.  If the execution was successful and @var{STAT} is present, it is
   3852      1.1  mrg assigned the value zero.  If the execution failed, @var{STAT} gets assigned
   3853      1.1  mrg a nonzero value and, if present, @var{ERRMSG} gets assigned a value describing
   3854      1.1  mrg the occurred error.
   3855      1.1  mrg 
   3856      1.1  mrg @item @emph{Standard}:
   3857      1.1  mrg Technical Specification (TS) 18508 or later
   3858      1.1  mrg 
   3859      1.1  mrg @item @emph{Class}:
   3860      1.1  mrg Collective subroutine
   3861      1.1  mrg 
   3862      1.1  mrg @item @emph{Syntax}:
   3863  1.1.1.3  mrg @code{CALL CO_REDUCE(A, OPERATION, [, RESULT_IMAGE, STAT, ERRMSG])}
   3864      1.1  mrg 
   3865      1.1  mrg @item @emph{Arguments}:
   3866  1.1.1.2  mrg @multitable @columnfractions .20 .65
   3867      1.1  mrg @item @var{A}            @tab is an @code{INTENT(INOUT)} argument and shall be
   3868      1.1  mrg nonpolymorphic. If it is allocatable, it shall be allocated; if it is a pointer,
   3869      1.1  mrg it shall be associated.  @var{A} shall have the same type and type parameters on
   3870      1.1  mrg all images of the team; if it is an array, it shall have the same shape on all
   3871      1.1  mrg images.
   3872  1.1.1.3  mrg @item @var{OPERATION}     @tab pure function with two scalar nonallocatable
   3873      1.1  mrg arguments, which shall be nonpolymorphic and have the same type and type
   3874      1.1  mrg parameters as @var{A}.  The function shall return a nonallocatable scalar of
   3875      1.1  mrg the same type and type parameters as @var{A}.  The function shall be the same on
   3876      1.1  mrg all images and with regards to the arguments mathematically commutative and
   3877  1.1.1.3  mrg associative.  Note that @var{OPERATION} may not be an elemental function, unless
   3878      1.1  mrg it is an intrisic function.
   3879      1.1  mrg @item @var{RESULT_IMAGE} @tab (optional) a scalar integer expression; if
   3880  1.1.1.3  mrg present, it shall have the same value on all images and refer to an
   3881      1.1  mrg image of the current team.
   3882      1.1  mrg @item @var{STAT}         @tab (optional) a scalar integer variable
   3883      1.1  mrg @item @var{ERRMSG}       @tab (optional) a scalar character variable
   3884      1.1  mrg @end multitable
   3885      1.1  mrg 
   3886      1.1  mrg @item @emph{Example}:
   3887      1.1  mrg @smallexample
   3888      1.1  mrg program test
   3889      1.1  mrg   integer :: val
   3890      1.1  mrg   val = this_image ()
   3891  1.1.1.3  mrg   call co_reduce (val, result_image=1, operation=myprod)
   3892      1.1  mrg   if (this_image() == 1) then
   3893      1.1  mrg     write(*,*) "Product value", val  ! prints num_images() factorial
   3894      1.1  mrg   end if
   3895      1.1  mrg contains
   3896      1.1  mrg   pure function myprod(a, b)
   3897      1.1  mrg     integer, value :: a, b
   3898      1.1  mrg     integer :: myprod
   3899      1.1  mrg     myprod = a * b
   3900      1.1  mrg   end function myprod
   3901      1.1  mrg end program test
   3902      1.1  mrg @end smallexample
   3903      1.1  mrg 
   3904      1.1  mrg @item @emph{Note}:
   3905      1.1  mrg While the rules permit in principle an intrinsic function, none of the
   3906      1.1  mrg intrinsics in the standard fulfill the criteria of having a specific
   3907      1.1  mrg function, which takes two arguments of the same type and returning that
   3908      1.1  mrg type as result.
   3909      1.1  mrg 
   3910      1.1  mrg @item @emph{See also}:
   3911  1.1.1.2  mrg @ref{CO_MIN}, @gol
   3912  1.1.1.2  mrg @ref{CO_MAX}, @gol
   3913  1.1.1.2  mrg @ref{CO_SUM}, @gol
   3914  1.1.1.2  mrg @ref{CO_BROADCAST}
   3915      1.1  mrg @end table
   3916      1.1  mrg 
   3917      1.1  mrg 
   3918      1.1  mrg 
   3919      1.1  mrg @node CO_SUM
   3920      1.1  mrg @section @code{CO_SUM} --- Sum of values on the current set of images
   3921      1.1  mrg @fnindex CO_SUM
   3922      1.1  mrg @cindex Collectives, sum of values
   3923      1.1  mrg 
   3924      1.1  mrg @table @asis
   3925      1.1  mrg @item @emph{Description}:
   3926      1.1  mrg @code{CO_SUM} sums up the values of each element of @var{A} on all
   3927      1.1  mrg images of the current team.  If @var{RESULT_IMAGE} is present, the summed-up
   3928      1.1  mrg values are returned in @var{A} on the specified image only and the value
   3929      1.1  mrg of @var{A} on the other images become undefined.  If @var{RESULT_IMAGE} is
   3930      1.1  mrg not present, the value is returned on all images.  If the execution was
   3931      1.1  mrg successful and @var{STAT} is present, it is assigned the value zero.  If the
   3932      1.1  mrg execution failed, @var{STAT} gets assigned a nonzero value and, if present,
   3933      1.1  mrg @var{ERRMSG} gets assigned a value describing the occurred error.
   3934      1.1  mrg 
   3935      1.1  mrg @item @emph{Standard}:
   3936      1.1  mrg Technical Specification (TS) 18508 or later
   3937      1.1  mrg 
   3938      1.1  mrg @item @emph{Class}:
   3939      1.1  mrg Collective subroutine
   3940      1.1  mrg 
   3941      1.1  mrg @item @emph{Syntax}:
   3942  1.1.1.3  mrg @code{CALL CO_SUM(A [, RESULT_IMAGE, STAT, ERRMSG])}
   3943      1.1  mrg 
   3944      1.1  mrg @item @emph{Arguments}:
   3945  1.1.1.2  mrg @multitable @columnfractions .20 .65
   3946      1.1  mrg @item @var{A}            @tab shall be an integer, real or complex variable,
   3947      1.1  mrg which has the same type and type parameters on all images of the team.
   3948      1.1  mrg @item @var{RESULT_IMAGE} @tab (optional) a scalar integer expression; if
   3949  1.1.1.3  mrg present, it shall have the same value on all images and refer to an
   3950      1.1  mrg image of the current team.
   3951      1.1  mrg @item @var{STAT}         @tab (optional) a scalar integer variable
   3952      1.1  mrg @item @var{ERRMSG}       @tab (optional) a scalar character variable
   3953      1.1  mrg @end multitable
   3954      1.1  mrg 
   3955      1.1  mrg @item @emph{Example}:
   3956      1.1  mrg @smallexample
   3957      1.1  mrg program test
   3958      1.1  mrg   integer :: val
   3959      1.1  mrg   val = this_image ()
   3960      1.1  mrg   call co_sum (val, result_image=1)
   3961      1.1  mrg   if (this_image() == 1) then
   3962  1.1.1.2  mrg     write(*,*) "The sum is ", val ! prints (n**2 + n)/2,
   3963  1.1.1.2  mrg                                   ! with n = num_images()
   3964      1.1  mrg   end if
   3965      1.1  mrg end program test
   3966      1.1  mrg @end smallexample
   3967      1.1  mrg 
   3968      1.1  mrg @item @emph{See also}:
   3969  1.1.1.2  mrg @ref{CO_MAX}, @gol
   3970  1.1.1.2  mrg @ref{CO_MIN}, @gol
   3971  1.1.1.2  mrg @ref{CO_REDUCE}, @gol
   3972  1.1.1.2  mrg @ref{CO_BROADCAST}
   3973      1.1  mrg @end table
   3974      1.1  mrg 
   3975      1.1  mrg 
   3976      1.1  mrg 
   3977      1.1  mrg @node COMMAND_ARGUMENT_COUNT
   3978      1.1  mrg @section @code{COMMAND_ARGUMENT_COUNT} --- Get number of command line arguments
   3979      1.1  mrg @fnindex COMMAND_ARGUMENT_COUNT
   3980      1.1  mrg @cindex command-line arguments
   3981      1.1  mrg @cindex command-line arguments, number of
   3982      1.1  mrg @cindex arguments, to program
   3983      1.1  mrg 
   3984      1.1  mrg @table @asis
   3985      1.1  mrg @item @emph{Description}:
   3986      1.1  mrg @code{COMMAND_ARGUMENT_COUNT} returns the number of arguments passed on the
   3987      1.1  mrg command line when the containing program was invoked.
   3988      1.1  mrg 
   3989      1.1  mrg @item @emph{Standard}:
   3990      1.1  mrg Fortran 2003 and later
   3991      1.1  mrg 
   3992      1.1  mrg @item @emph{Class}:
   3993      1.1  mrg Inquiry function
   3994      1.1  mrg 
   3995      1.1  mrg @item @emph{Syntax}:
   3996      1.1  mrg @code{RESULT = COMMAND_ARGUMENT_COUNT()}
   3997      1.1  mrg 
   3998      1.1  mrg @item @emph{Arguments}:
   3999      1.1  mrg @multitable @columnfractions .15 .70
   4000      1.1  mrg @item None
   4001      1.1  mrg @end multitable
   4002      1.1  mrg 
   4003      1.1  mrg @item @emph{Return value}:
   4004      1.1  mrg The return value is an @code{INTEGER} of default kind.
   4005      1.1  mrg 
   4006      1.1  mrg @item @emph{Example}:
   4007      1.1  mrg @smallexample
   4008      1.1  mrg program test_command_argument_count
   4009      1.1  mrg     integer :: count
   4010      1.1  mrg     count = command_argument_count()
   4011      1.1  mrg     print *, count
   4012      1.1  mrg end program test_command_argument_count
   4013      1.1  mrg @end smallexample
   4014      1.1  mrg 
   4015      1.1  mrg @item @emph{See also}:
   4016  1.1.1.2  mrg @ref{GET_COMMAND}, @gol
   4017  1.1.1.2  mrg @ref{GET_COMMAND_ARGUMENT}
   4018      1.1  mrg @end table
   4019      1.1  mrg 
   4020      1.1  mrg 
   4021      1.1  mrg 
   4022      1.1  mrg @node COMPILER_OPTIONS
   4023      1.1  mrg @section @code{COMPILER_OPTIONS} --- Options passed to the compiler
   4024      1.1  mrg @fnindex COMPILER_OPTIONS
   4025      1.1  mrg @cindex flags inquiry function
   4026      1.1  mrg @cindex options inquiry function
   4027      1.1  mrg @cindex compiler flags inquiry function
   4028      1.1  mrg 
   4029      1.1  mrg @table @asis
   4030      1.1  mrg @item @emph{Description}:
   4031      1.1  mrg @code{COMPILER_OPTIONS} returns a string with the options used for
   4032      1.1  mrg compiling.
   4033      1.1  mrg 
   4034      1.1  mrg @item @emph{Standard}:
   4035      1.1  mrg Fortran 2008
   4036      1.1  mrg 
   4037      1.1  mrg @item @emph{Class}:
   4038      1.1  mrg Inquiry function of the module @code{ISO_FORTRAN_ENV}
   4039      1.1  mrg 
   4040      1.1  mrg @item @emph{Syntax}:
   4041      1.1  mrg @code{STR = COMPILER_OPTIONS()}
   4042      1.1  mrg 
   4043      1.1  mrg @item @emph{Arguments}:
   4044  1.1.1.2  mrg None
   4045      1.1  mrg 
   4046      1.1  mrg @item @emph{Return value}:
   4047      1.1  mrg The return value is a default-kind string with system-dependent length.
   4048      1.1  mrg It contains the compiler flags used to compile the file, which called
   4049      1.1  mrg the @code{COMPILER_OPTIONS} intrinsic.
   4050      1.1  mrg 
   4051      1.1  mrg @item @emph{Example}:
   4052      1.1  mrg @smallexample
   4053      1.1  mrg    use iso_fortran_env
   4054      1.1  mrg    print '(4a)', 'This file was compiled by ', &
   4055      1.1  mrg                  compiler_version(), ' using the options ', &
   4056      1.1  mrg                  compiler_options()
   4057      1.1  mrg    end
   4058      1.1  mrg @end smallexample
   4059      1.1  mrg 
   4060      1.1  mrg @item @emph{See also}:
   4061  1.1.1.2  mrg @ref{COMPILER_VERSION}, @gol
   4062  1.1.1.2  mrg @ref{ISO_FORTRAN_ENV}
   4063      1.1  mrg @end table
   4064      1.1  mrg 
   4065      1.1  mrg 
   4066      1.1  mrg 
   4067      1.1  mrg @node COMPILER_VERSION
   4068      1.1  mrg @section @code{COMPILER_VERSION} --- Compiler version string
   4069      1.1  mrg @fnindex COMPILER_VERSION
   4070      1.1  mrg @cindex compiler, name and version
   4071      1.1  mrg @cindex version of the compiler
   4072      1.1  mrg 
   4073      1.1  mrg @table @asis
   4074      1.1  mrg @item @emph{Description}:
   4075      1.1  mrg @code{COMPILER_VERSION} returns a string with the name and the
   4076      1.1  mrg version of the compiler.
   4077      1.1  mrg 
   4078      1.1  mrg @item @emph{Standard}:
   4079      1.1  mrg Fortran 2008
   4080      1.1  mrg 
   4081      1.1  mrg @item @emph{Class}:
   4082      1.1  mrg Inquiry function of the module @code{ISO_FORTRAN_ENV}
   4083      1.1  mrg 
   4084      1.1  mrg @item @emph{Syntax}:
   4085      1.1  mrg @code{STR = COMPILER_VERSION()}
   4086      1.1  mrg 
   4087      1.1  mrg @item @emph{Arguments}:
   4088  1.1.1.2  mrg None
   4089      1.1  mrg 
   4090      1.1  mrg @item @emph{Return value}:
   4091      1.1  mrg The return value is a default-kind string with system-dependent length.
   4092      1.1  mrg It contains the name of the compiler and its version number.
   4093      1.1  mrg 
   4094      1.1  mrg @item @emph{Example}:
   4095      1.1  mrg @smallexample
   4096      1.1  mrg    use iso_fortran_env
   4097      1.1  mrg    print '(4a)', 'This file was compiled by ', &
   4098      1.1  mrg                  compiler_version(), ' using the options ', &
   4099      1.1  mrg                  compiler_options()
   4100      1.1  mrg    end
   4101      1.1  mrg @end smallexample
   4102      1.1  mrg 
   4103      1.1  mrg @item @emph{See also}:
   4104  1.1.1.2  mrg @ref{COMPILER_OPTIONS}, @gol
   4105  1.1.1.2  mrg @ref{ISO_FORTRAN_ENV}
   4106      1.1  mrg @end table
   4107      1.1  mrg 
   4108      1.1  mrg 
   4109      1.1  mrg 
   4110      1.1  mrg @node COMPLEX
   4111      1.1  mrg @section @code{COMPLEX} --- Complex conversion function
   4112      1.1  mrg @fnindex COMPLEX
   4113      1.1  mrg @cindex complex numbers, conversion to
   4114      1.1  mrg @cindex conversion, to complex
   4115      1.1  mrg 
   4116      1.1  mrg @table @asis
   4117      1.1  mrg @item @emph{Description}:
   4118      1.1  mrg @code{COMPLEX(X, Y)} returns a complex number where @var{X} is converted
   4119      1.1  mrg to the real component and @var{Y} is converted to the imaginary
   4120      1.1  mrg component.
   4121      1.1  mrg 
   4122      1.1  mrg @item @emph{Standard}:
   4123      1.1  mrg GNU extension
   4124      1.1  mrg 
   4125      1.1  mrg @item @emph{Class}:
   4126      1.1  mrg Elemental function
   4127      1.1  mrg 
   4128      1.1  mrg @item @emph{Syntax}:
   4129      1.1  mrg @code{RESULT = COMPLEX(X, Y)}
   4130      1.1  mrg 
   4131      1.1  mrg @item @emph{Arguments}:
   4132      1.1  mrg @multitable @columnfractions .15 .70
   4133      1.1  mrg @item @var{X} @tab The type may be @code{INTEGER} or @code{REAL}.
   4134      1.1  mrg @item @var{Y} @tab The type may be @code{INTEGER} or @code{REAL}.
   4135      1.1  mrg @end multitable
   4136      1.1  mrg 
   4137      1.1  mrg @item @emph{Return value}:
   4138      1.1  mrg If @var{X} and @var{Y} are both of @code{INTEGER} type, then the return
   4139      1.1  mrg value is of default @code{COMPLEX} type.
   4140      1.1  mrg 
   4141      1.1  mrg If @var{X} and @var{Y} are of @code{REAL} type, or one is of @code{REAL}
   4142      1.1  mrg type and one is of @code{INTEGER} type, then the return value is of
   4143      1.1  mrg @code{COMPLEX} type with a kind equal to that of the @code{REAL}
   4144      1.1  mrg argument with the highest precision.
   4145      1.1  mrg 
   4146      1.1  mrg @item @emph{Example}:
   4147      1.1  mrg @smallexample
   4148      1.1  mrg program test_complex
   4149      1.1  mrg     integer :: i = 42
   4150      1.1  mrg     real :: x = 3.14
   4151      1.1  mrg     print *, complex(i, x)
   4152      1.1  mrg end program test_complex
   4153      1.1  mrg @end smallexample
   4154      1.1  mrg 
   4155      1.1  mrg @item @emph{See also}:
   4156      1.1  mrg @ref{CMPLX}
   4157      1.1  mrg @end table
   4158      1.1  mrg 
   4159      1.1  mrg 
   4160      1.1  mrg 
   4161      1.1  mrg @node CONJG
   4162      1.1  mrg @section @code{CONJG} --- Complex conjugate function
   4163      1.1  mrg @fnindex CONJG
   4164      1.1  mrg @fnindex DCONJG
   4165      1.1  mrg @cindex complex conjugate
   4166      1.1  mrg 
   4167      1.1  mrg @table @asis
   4168      1.1  mrg @item @emph{Description}:
   4169      1.1  mrg @code{CONJG(Z)} returns the conjugate of @var{Z}.  If @var{Z} is @code{(x, y)}
   4170      1.1  mrg then the result is @code{(x, -y)}
   4171      1.1  mrg 
   4172      1.1  mrg @item @emph{Standard}:
   4173  1.1.1.2  mrg Fortran 77 and later, has an overload that is a GNU extension
   4174      1.1  mrg 
   4175      1.1  mrg @item @emph{Class}:
   4176      1.1  mrg Elemental function
   4177      1.1  mrg 
   4178      1.1  mrg @item @emph{Syntax}:
   4179      1.1  mrg @code{Z = CONJG(Z)}
   4180      1.1  mrg 
   4181      1.1  mrg @item @emph{Arguments}:
   4182      1.1  mrg @multitable @columnfractions .15 .70
   4183      1.1  mrg @item @var{Z} @tab The type shall be @code{COMPLEX}.
   4184      1.1  mrg @end multitable
   4185      1.1  mrg 
   4186      1.1  mrg @item @emph{Return value}:
   4187      1.1  mrg The return value is of type @code{COMPLEX}.
   4188      1.1  mrg 
   4189      1.1  mrg @item @emph{Example}:
   4190      1.1  mrg @smallexample
   4191      1.1  mrg program test_conjg
   4192      1.1  mrg     complex :: z = (2.0, 3.0)
   4193      1.1  mrg     complex(8) :: dz = (2.71_8, -3.14_8)
   4194      1.1  mrg     z= conjg(z)
   4195      1.1  mrg     print *, z
   4196      1.1  mrg     dz = dconjg(dz)
   4197      1.1  mrg     print *, dz
   4198      1.1  mrg end program test_conjg
   4199      1.1  mrg @end smallexample
   4200      1.1  mrg 
   4201      1.1  mrg @item @emph{Specific names}:
   4202  1.1.1.3  mrg @multitable @columnfractions .20 .23 .20 .33
   4203  1.1.1.3  mrg @headitem Name             @tab Argument             @tab Return type       @tab Standard
   4204      1.1  mrg @item @code{DCONJG(Z)} @tab @code{COMPLEX(8) Z}  @tab @code{COMPLEX(8)} @tab GNU extension
   4205      1.1  mrg @end multitable
   4206      1.1  mrg @end table
   4207      1.1  mrg 
   4208      1.1  mrg 
   4209      1.1  mrg 
   4210      1.1  mrg @node COS
   4211      1.1  mrg @section @code{COS} --- Cosine function
   4212      1.1  mrg @fnindex COS
   4213      1.1  mrg @fnindex DCOS
   4214      1.1  mrg @fnindex CCOS
   4215      1.1  mrg @fnindex ZCOS
   4216      1.1  mrg @fnindex CDCOS
   4217      1.1  mrg @cindex trigonometric function, cosine
   4218      1.1  mrg @cindex cosine
   4219      1.1  mrg 
   4220      1.1  mrg @table @asis
   4221      1.1  mrg @item @emph{Description}:
   4222      1.1  mrg @code{COS(X)} computes the cosine of @var{X}.
   4223      1.1  mrg 
   4224      1.1  mrg @item @emph{Standard}:
   4225      1.1  mrg Fortran 77 and later, has overloads that are GNU extensions
   4226      1.1  mrg 
   4227      1.1  mrg @item @emph{Class}:
   4228      1.1  mrg Elemental function
   4229      1.1  mrg 
   4230      1.1  mrg @item @emph{Syntax}:
   4231      1.1  mrg @code{RESULT = COS(X)}
   4232      1.1  mrg 
   4233      1.1  mrg @item @emph{Arguments}:
   4234      1.1  mrg @multitable @columnfractions .15 .70
   4235      1.1  mrg @item @var{X} @tab The type shall be @code{REAL} or
   4236      1.1  mrg @code{COMPLEX}.
   4237      1.1  mrg @end multitable
   4238      1.1  mrg 
   4239      1.1  mrg @item @emph{Return value}:
   4240      1.1  mrg The return value is of the same type and kind as @var{X}. The real part
   4241      1.1  mrg of the result is in radians. If @var{X} is of the type @code{REAL},
   4242      1.1  mrg the return value lies in the range @math{ -1 \leq \cos (x) \leq 1}.
   4243      1.1  mrg 
   4244      1.1  mrg @item @emph{Example}:
   4245      1.1  mrg @smallexample
   4246      1.1  mrg program test_cos
   4247      1.1  mrg   real :: x = 0.0
   4248      1.1  mrg   x = cos(x)
   4249      1.1  mrg end program test_cos
   4250      1.1  mrg @end smallexample
   4251      1.1  mrg 
   4252      1.1  mrg @item @emph{Specific names}:
   4253  1.1.1.3  mrg @multitable @columnfractions .20 .23 .20 .33
   4254  1.1.1.3  mrg @headitem Name            @tab Argument            @tab Return type       @tab Standard
   4255      1.1  mrg @item @code{COS(X)}   @tab @code{REAL(4) X}    @tab @code{REAL(4)}    @tab Fortran 77 and later
   4256      1.1  mrg @item @code{DCOS(X)}  @tab @code{REAL(8) X}    @tab @code{REAL(8)}    @tab Fortran 77 and later
   4257      1.1  mrg @item @code{CCOS(X)}  @tab @code{COMPLEX(4) X} @tab @code{COMPLEX(4)} @tab Fortran 77 and later
   4258      1.1  mrg @item @code{ZCOS(X)}  @tab @code{COMPLEX(8) X} @tab @code{COMPLEX(8)} @tab GNU extension
   4259      1.1  mrg @item @code{CDCOS(X)} @tab @code{COMPLEX(8) X} @tab @code{COMPLEX(8)} @tab GNU extension
   4260      1.1  mrg @end multitable
   4261      1.1  mrg 
   4262      1.1  mrg @item @emph{See also}:
   4263  1.1.1.2  mrg Inverse function: @gol
   4264  1.1.1.2  mrg @ref{ACOS} @gol
   4265  1.1.1.2  mrg Degrees function: @gol
   4266  1.1.1.2  mrg @ref{COSD}
   4267      1.1  mrg @end table
   4268      1.1  mrg 
   4269      1.1  mrg 
   4270      1.1  mrg 
   4271      1.1  mrg @node COSD
   4272      1.1  mrg @section @code{COSD} --- Cosine function, degrees
   4273      1.1  mrg @fnindex COSD
   4274      1.1  mrg @fnindex DCOSD
   4275      1.1  mrg @fnindex CCOSD
   4276      1.1  mrg @fnindex ZCOSD
   4277      1.1  mrg @fnindex CDCOSD
   4278      1.1  mrg @cindex trigonometric function, cosine, degrees
   4279      1.1  mrg @cindex cosine, degrees
   4280      1.1  mrg 
   4281      1.1  mrg @table @asis
   4282      1.1  mrg @item @emph{Description}:
   4283      1.1  mrg @code{COSD(X)} computes the cosine of @var{X} in degrees.
   4284      1.1  mrg 
   4285      1.1  mrg This function is for compatibility only and should be avoided in favor of
   4286      1.1  mrg standard constructs wherever possible.
   4287      1.1  mrg 
   4288      1.1  mrg @item @emph{Standard}:
   4289  1.1.1.2  mrg GNU extension, enabled with @option{-fdec-math}.
   4290      1.1  mrg 
   4291      1.1  mrg @item @emph{Class}:
   4292      1.1  mrg Elemental function
   4293      1.1  mrg 
   4294      1.1  mrg @item @emph{Syntax}:
   4295      1.1  mrg @code{RESULT = COSD(X)}
   4296      1.1  mrg 
   4297      1.1  mrg @item @emph{Arguments}:
   4298      1.1  mrg @multitable @columnfractions .15 .70
   4299      1.1  mrg @item @var{X} @tab The type shall be @code{REAL} or
   4300      1.1  mrg @code{COMPLEX}.
   4301      1.1  mrg @end multitable
   4302      1.1  mrg 
   4303      1.1  mrg @item @emph{Return value}:
   4304      1.1  mrg The return value is of the same type and kind as @var{X}. The real part
   4305      1.1  mrg of the result is in degrees.  If @var{X} is of the type @code{REAL},
   4306      1.1  mrg the return value lies in the range @math{ -1 \leq \cosd (x) \leq 1}.
   4307      1.1  mrg 
   4308      1.1  mrg @item @emph{Example}:
   4309      1.1  mrg @smallexample
   4310      1.1  mrg program test_cosd
   4311      1.1  mrg   real :: x = 0.0
   4312      1.1  mrg   x = cosd(x)
   4313      1.1  mrg end program test_cosd
   4314      1.1  mrg @end smallexample
   4315      1.1  mrg 
   4316      1.1  mrg @item @emph{Specific names}:
   4317  1.1.1.3  mrg @multitable @columnfractions .20 .23 .20 .33
   4318  1.1.1.3  mrg @headitem Name            @tab Argument            @tab Return type       @tab Standard
   4319  1.1.1.2  mrg @item @code{COSD(X)}   @tab @code{REAL(4) X}    @tab @code{REAL(4)}    @tab GNU extension
   4320  1.1.1.2  mrg @item @code{DCOSD(X)}  @tab @code{REAL(8) X}    @tab @code{REAL(8)}    @tab GNU extension
   4321  1.1.1.2  mrg @item @code{CCOSD(X)}  @tab @code{COMPLEX(4) X} @tab @code{COMPLEX(4)} @tab GNU extension
   4322      1.1  mrg @item @code{ZCOSD(X)}  @tab @code{COMPLEX(8) X} @tab @code{COMPLEX(8)} @tab GNU extension
   4323      1.1  mrg @item @code{CDCOSD(X)} @tab @code{COMPLEX(8) X} @tab @code{COMPLEX(8)} @tab GNU extension
   4324      1.1  mrg @end multitable
   4325      1.1  mrg 
   4326      1.1  mrg @item @emph{See also}:
   4327  1.1.1.2  mrg Inverse function: @gol
   4328  1.1.1.2  mrg @ref{ACOSD} @gol
   4329  1.1.1.2  mrg Radians function: @gol
   4330  1.1.1.2  mrg @ref{COS}
   4331      1.1  mrg @end table
   4332      1.1  mrg 
   4333      1.1  mrg 
   4334      1.1  mrg 
   4335      1.1  mrg @node COSH
   4336      1.1  mrg @section @code{COSH} --- Hyperbolic cosine function
   4337      1.1  mrg @fnindex COSH
   4338      1.1  mrg @fnindex DCOSH
   4339      1.1  mrg @cindex hyperbolic cosine
   4340      1.1  mrg @cindex hyperbolic function, cosine
   4341      1.1  mrg @cindex cosine, hyperbolic
   4342      1.1  mrg 
   4343      1.1  mrg @table @asis
   4344      1.1  mrg @item @emph{Description}:
   4345      1.1  mrg @code{COSH(X)} computes the hyperbolic cosine of @var{X}.
   4346      1.1  mrg 
   4347      1.1  mrg @item @emph{Standard}:
   4348      1.1  mrg Fortran 77 and later, for a complex argument Fortran 2008 or later
   4349      1.1  mrg 
   4350      1.1  mrg @item @emph{Class}:
   4351      1.1  mrg Elemental function
   4352      1.1  mrg 
   4353      1.1  mrg @item @emph{Syntax}:
   4354      1.1  mrg @code{X = COSH(X)}
   4355      1.1  mrg 
   4356      1.1  mrg @item @emph{Arguments}:
   4357      1.1  mrg @multitable @columnfractions .15 .70
   4358      1.1  mrg @item @var{X} @tab The type shall be @code{REAL} or @code{COMPLEX}.
   4359      1.1  mrg @end multitable
   4360      1.1  mrg 
   4361      1.1  mrg @item @emph{Return value}:
   4362      1.1  mrg The return value has same type and kind as @var{X}. If @var{X} is
   4363      1.1  mrg complex, the imaginary part of the result is in radians. If @var{X}
   4364      1.1  mrg is @code{REAL}, the return value has a lower bound of one,
   4365      1.1  mrg @math{\cosh (x) \geq 1}.
   4366      1.1  mrg 
   4367      1.1  mrg @item @emph{Example}:
   4368      1.1  mrg @smallexample
   4369      1.1  mrg program test_cosh
   4370      1.1  mrg   real(8) :: x = 1.0_8
   4371      1.1  mrg   x = cosh(x)
   4372      1.1  mrg end program test_cosh
   4373      1.1  mrg @end smallexample
   4374      1.1  mrg 
   4375      1.1  mrg @item @emph{Specific names}:
   4376  1.1.1.3  mrg @multitable @columnfractions .20 .23 .20 .33
   4377  1.1.1.3  mrg @headitem Name            @tab Argument          @tab Return type       @tab Standard
   4378      1.1  mrg @item @code{COSH(X)}  @tab @code{REAL(4) X}  @tab @code{REAL(4)}    @tab Fortran 77 and later
   4379      1.1  mrg @item @code{DCOSH(X)} @tab @code{REAL(8) X}  @tab @code{REAL(8)}    @tab Fortran 77 and later
   4380      1.1  mrg @end multitable
   4381      1.1  mrg 
   4382      1.1  mrg @item @emph{See also}:
   4383  1.1.1.2  mrg Inverse function: @gol
   4384  1.1.1.2  mrg @ref{ACOSH}
   4385      1.1  mrg @end table
   4386      1.1  mrg 
   4387      1.1  mrg 
   4388      1.1  mrg 
   4389      1.1  mrg @node COTAN
   4390      1.1  mrg @section @code{COTAN} --- Cotangent function
   4391      1.1  mrg @fnindex COTAN
   4392      1.1  mrg @fnindex DCOTAN
   4393      1.1  mrg @cindex trigonometric function, cotangent
   4394      1.1  mrg @cindex cotangent
   4395      1.1  mrg 
   4396      1.1  mrg @table @asis
   4397      1.1  mrg @item @emph{Description}:
   4398      1.1  mrg @code{COTAN(X)} computes the cotangent of @var{X}. Equivalent to @code{COS(x)}
   4399      1.1  mrg divided by @code{SIN(x)}, or @code{1 / TAN(x)}.
   4400      1.1  mrg 
   4401      1.1  mrg This function is for compatibility only and should be avoided in favor of
   4402      1.1  mrg standard constructs wherever possible.
   4403      1.1  mrg 
   4404      1.1  mrg @item @emph{Standard}:
   4405  1.1.1.2  mrg GNU extension, enabled with @option{-fdec-math}.
   4406      1.1  mrg 
   4407      1.1  mrg @item @emph{Class}:
   4408      1.1  mrg Elemental function
   4409      1.1  mrg 
   4410      1.1  mrg @item @emph{Syntax}:
   4411      1.1  mrg @code{RESULT = COTAN(X)}
   4412      1.1  mrg 
   4413      1.1  mrg @item @emph{Arguments}:
   4414      1.1  mrg @multitable @columnfractions .15 .70
   4415      1.1  mrg @item @var{X} @tab The type shall be @code{REAL} or @code{COMPLEX}.
   4416      1.1  mrg @end multitable
   4417      1.1  mrg 
   4418      1.1  mrg @item @emph{Return value}:
   4419      1.1  mrg The return value has same type and kind as @var{X}, and its value is in radians.
   4420      1.1  mrg 
   4421      1.1  mrg @item @emph{Example}:
   4422      1.1  mrg @smallexample
   4423      1.1  mrg program test_cotan
   4424      1.1  mrg   real(8) :: x = 0.165_8
   4425      1.1  mrg   x = cotan(x)
   4426      1.1  mrg end program test_cotan
   4427      1.1  mrg @end smallexample
   4428      1.1  mrg 
   4429      1.1  mrg @item @emph{Specific names}:
   4430  1.1.1.3  mrg @multitable @columnfractions .20 .23 .20 .33
   4431  1.1.1.3  mrg @headitem Name            @tab Argument          @tab Return type     @tab Standard
   4432  1.1.1.2  mrg @item @code{COTAN(X)}   @tab @code{REAL(4) X}  @tab @code{REAL(4)}  @tab GNU extension
   4433  1.1.1.2  mrg @item @code{DCOTAN(X)}  @tab @code{REAL(8) X}  @tab @code{REAL(8)}  @tab GNU extension
   4434      1.1  mrg @end multitable
   4435      1.1  mrg 
   4436      1.1  mrg @item @emph{See also}:
   4437  1.1.1.2  mrg Converse function: @gol
   4438  1.1.1.2  mrg @ref{TAN} @gol
   4439  1.1.1.2  mrg Degrees function: @gol
   4440  1.1.1.2  mrg @ref{COTAND}
   4441      1.1  mrg @end table
   4442      1.1  mrg 
   4443      1.1  mrg 
   4444      1.1  mrg 
   4445      1.1  mrg @node COTAND
   4446      1.1  mrg @section @code{COTAND} --- Cotangent function, degrees
   4447      1.1  mrg @fnindex COTAND
   4448      1.1  mrg @fnindex DCOTAND
   4449      1.1  mrg @cindex trigonometric function, cotangent, degrees
   4450      1.1  mrg @cindex cotangent, degrees
   4451      1.1  mrg 
   4452      1.1  mrg @table @asis
   4453      1.1  mrg @item @emph{Description}:
   4454      1.1  mrg @code{COTAND(X)} computes the cotangent of @var{X} in degrees.  Equivalent to
   4455      1.1  mrg @code{COSD(x)} divided by @code{SIND(x)}, or @code{1 / TAND(x)}.
   4456      1.1  mrg 
   4457      1.1  mrg @item @emph{Standard}:
   4458  1.1.1.2  mrg GNU extension, enabled with @option{-fdec-math}.
   4459      1.1  mrg 
   4460      1.1  mrg This function is for compatibility only and should be avoided in favor of
   4461      1.1  mrg standard constructs wherever possible.
   4462      1.1  mrg 
   4463      1.1  mrg @item @emph{Class}:
   4464      1.1  mrg Elemental function
   4465      1.1  mrg 
   4466      1.1  mrg @item @emph{Syntax}:
   4467      1.1  mrg @code{RESULT = COTAND(X)}
   4468      1.1  mrg 
   4469      1.1  mrg @item @emph{Arguments}:
   4470      1.1  mrg @multitable @columnfractions .15 .70
   4471      1.1  mrg @item @var{X} @tab The type shall be @code{REAL} or @code{COMPLEX}.
   4472      1.1  mrg @end multitable
   4473      1.1  mrg 
   4474      1.1  mrg @item @emph{Return value}:
   4475      1.1  mrg The return value has same type and kind as @var{X}, and its value is in degrees.
   4476      1.1  mrg 
   4477      1.1  mrg @item @emph{Example}:
   4478      1.1  mrg @smallexample
   4479      1.1  mrg program test_cotand
   4480      1.1  mrg   real(8) :: x = 0.165_8
   4481      1.1  mrg   x = cotand(x)
   4482      1.1  mrg end program test_cotand
   4483      1.1  mrg @end smallexample
   4484      1.1  mrg 
   4485      1.1  mrg @item @emph{Specific names}:
   4486  1.1.1.3  mrg @multitable @columnfractions .20 .23 .20 .33
   4487  1.1.1.3  mrg @headitem Name            @tab Argument          @tab Return type     @tab Standard
   4488  1.1.1.2  mrg @item @code{COTAND(X)}   @tab @code{REAL(4) X}  @tab @code{REAL(4)}  @tab GNU extension
   4489  1.1.1.2  mrg @item @code{DCOTAND(X)}  @tab @code{REAL(8) X}  @tab @code{REAL(8)}  @tab GNU extension
   4490      1.1  mrg @end multitable
   4491      1.1  mrg 
   4492      1.1  mrg @item @emph{See also}:
   4493  1.1.1.2  mrg Converse function: @gol
   4494  1.1.1.2  mrg @ref{TAND} @gol
   4495  1.1.1.2  mrg Radians function: @gol
   4496  1.1.1.2  mrg @ref{COTAN}
   4497      1.1  mrg @end table
   4498      1.1  mrg 
   4499      1.1  mrg 
   4500      1.1  mrg 
   4501      1.1  mrg @node COUNT
   4502      1.1  mrg @section @code{COUNT} --- Count function
   4503      1.1  mrg @fnindex COUNT
   4504      1.1  mrg @cindex array, conditionally count elements
   4505      1.1  mrg @cindex array, element counting
   4506      1.1  mrg @cindex array, number of elements
   4507      1.1  mrg 
   4508      1.1  mrg @table @asis
   4509      1.1  mrg @item @emph{Description}:
   4510      1.1  mrg 
   4511      1.1  mrg Counts the number of @code{.TRUE.} elements in a logical @var{MASK},
   4512      1.1  mrg or, if the @var{DIM} argument is supplied, counts the number of
   4513      1.1  mrg elements along each row of the array in the @var{DIM} direction.
   4514      1.1  mrg If the array has zero size, or all of the elements of @var{MASK} are
   4515      1.1  mrg @code{.FALSE.}, then the result is @code{0}.
   4516      1.1  mrg 
   4517      1.1  mrg @item @emph{Standard}:
   4518  1.1.1.2  mrg Fortran 90 and later, with @var{KIND} argument Fortran 2003 and later
   4519      1.1  mrg 
   4520      1.1  mrg @item @emph{Class}:
   4521      1.1  mrg Transformational function
   4522      1.1  mrg 
   4523      1.1  mrg @item @emph{Syntax}:
   4524      1.1  mrg @code{RESULT = COUNT(MASK [, DIM, KIND])}
   4525      1.1  mrg 
   4526      1.1  mrg @item @emph{Arguments}:
   4527      1.1  mrg @multitable @columnfractions .15 .70
   4528      1.1  mrg @item @var{MASK} @tab The type shall be @code{LOGICAL}.
   4529      1.1  mrg @item @var{DIM}  @tab (Optional) The type shall be @code{INTEGER}.
   4530      1.1  mrg @item @var{KIND} @tab (Optional) An @code{INTEGER} initialization
   4531      1.1  mrg expression indicating the kind parameter of the result.
   4532      1.1  mrg @end multitable
   4533      1.1  mrg 
   4534      1.1  mrg @item @emph{Return value}:
   4535      1.1  mrg The return value is of type @code{INTEGER} and of kind @var{KIND}. If
   4536      1.1  mrg @var{KIND} is absent, the return value is of default integer kind.
   4537      1.1  mrg If @var{DIM} is present, the result is an array with a rank one less
   4538      1.1  mrg than the rank of @var{ARRAY}, and a size corresponding to the shape
   4539      1.1  mrg of @var{ARRAY} with the @var{DIM} dimension removed.
   4540      1.1  mrg 
   4541      1.1  mrg @item @emph{Example}:
   4542      1.1  mrg @smallexample
   4543      1.1  mrg program test_count
   4544      1.1  mrg     integer, dimension(2,3) :: a, b
   4545      1.1  mrg     logical, dimension(2,3) :: mask
   4546      1.1  mrg     a = reshape( (/ 1, 2, 3, 4, 5, 6 /), (/ 2, 3 /))
   4547      1.1  mrg     b = reshape( (/ 0, 7, 3, 4, 5, 8 /), (/ 2, 3 /))
   4548      1.1  mrg     print '(3i3)', a(1,:)
   4549      1.1  mrg     print '(3i3)', a(2,:)
   4550      1.1  mrg     print *
   4551      1.1  mrg     print '(3i3)', b(1,:)
   4552      1.1  mrg     print '(3i3)', b(2,:)
   4553      1.1  mrg     print *
   4554      1.1  mrg     mask = a.ne.b
   4555      1.1  mrg     print '(3l3)', mask(1,:)
   4556      1.1  mrg     print '(3l3)', mask(2,:)
   4557      1.1  mrg     print *
   4558      1.1  mrg     print '(3i3)', count(mask)
   4559      1.1  mrg     print *
   4560      1.1  mrg     print '(3i3)', count(mask, 1)
   4561      1.1  mrg     print *
   4562      1.1  mrg     print '(3i3)', count(mask, 2)
   4563      1.1  mrg end program test_count
   4564      1.1  mrg @end smallexample
   4565      1.1  mrg @end table
   4566      1.1  mrg 
   4567      1.1  mrg 
   4568      1.1  mrg 
   4569      1.1  mrg @node CPU_TIME
   4570      1.1  mrg @section @code{CPU_TIME} --- CPU elapsed time in seconds
   4571      1.1  mrg @fnindex CPU_TIME
   4572      1.1  mrg @cindex time, elapsed
   4573      1.1  mrg 
   4574      1.1  mrg @table @asis
   4575      1.1  mrg @item @emph{Description}:
   4576      1.1  mrg Returns a @code{REAL} value representing the elapsed CPU time in
   4577      1.1  mrg seconds.  This is useful for testing segments of code to determine
   4578      1.1  mrg execution time.
   4579      1.1  mrg 
   4580      1.1  mrg If a time source is available, time will be reported with microsecond
   4581      1.1  mrg resolution. If no time source is available, @var{TIME} is set to
   4582      1.1  mrg @code{-1.0}.
   4583      1.1  mrg 
   4584      1.1  mrg Note that @var{TIME} may contain a, system dependent, arbitrary offset
   4585      1.1  mrg and may not start with @code{0.0}. For @code{CPU_TIME}, the absolute
   4586      1.1  mrg value is meaningless, only differences between subsequent calls to
   4587      1.1  mrg this subroutine, as shown in the example below, should be used.
   4588      1.1  mrg 
   4589      1.1  mrg 
   4590      1.1  mrg @item @emph{Standard}:
   4591      1.1  mrg Fortran 95 and later
   4592      1.1  mrg 
   4593      1.1  mrg @item @emph{Class}:
   4594      1.1  mrg Subroutine
   4595      1.1  mrg 
   4596      1.1  mrg @item @emph{Syntax}:
   4597      1.1  mrg @code{CALL CPU_TIME(TIME)}
   4598      1.1  mrg 
   4599      1.1  mrg @item @emph{Arguments}:
   4600      1.1  mrg @multitable @columnfractions .15 .70
   4601      1.1  mrg @item @var{TIME} @tab The type shall be @code{REAL} with @code{INTENT(OUT)}.
   4602      1.1  mrg @end multitable
   4603      1.1  mrg 
   4604      1.1  mrg @item @emph{Return value}:
   4605      1.1  mrg None
   4606      1.1  mrg 
   4607      1.1  mrg @item @emph{Example}:
   4608      1.1  mrg @smallexample
   4609      1.1  mrg program test_cpu_time
   4610      1.1  mrg     real :: start, finish
   4611      1.1  mrg     call cpu_time(start)
   4612      1.1  mrg         ! put code to test here
   4613      1.1  mrg     call cpu_time(finish)
   4614      1.1  mrg     print '("Time = ",f6.3," seconds.")',finish-start
   4615      1.1  mrg end program test_cpu_time
   4616      1.1  mrg @end smallexample
   4617      1.1  mrg 
   4618      1.1  mrg @item @emph{See also}:
   4619  1.1.1.2  mrg @ref{SYSTEM_CLOCK}, @gol
   4620  1.1.1.2  mrg @ref{DATE_AND_TIME}
   4621      1.1  mrg @end table
   4622      1.1  mrg 
   4623      1.1  mrg 
   4624      1.1  mrg 
   4625      1.1  mrg @node CSHIFT
   4626      1.1  mrg @section @code{CSHIFT} --- Circular shift elements of an array
   4627      1.1  mrg @fnindex CSHIFT
   4628      1.1  mrg @cindex array, shift circularly
   4629      1.1  mrg @cindex array, permutation
   4630      1.1  mrg @cindex array, rotate
   4631      1.1  mrg 
   4632      1.1  mrg @table @asis
   4633      1.1  mrg @item @emph{Description}:
   4634      1.1  mrg @code{CSHIFT(ARRAY, SHIFT [, DIM])} performs a circular shift on elements of
   4635      1.1  mrg @var{ARRAY} along the dimension of @var{DIM}.  If @var{DIM} is omitted it is
   4636      1.1  mrg taken to be @code{1}.  @var{DIM} is a scalar of type @code{INTEGER} in the
   4637      1.1  mrg range of @math{1 \leq DIM \leq n)} where @math{n} is the rank of @var{ARRAY}.
   4638      1.1  mrg If the rank of @var{ARRAY} is one, then all elements of @var{ARRAY} are shifted
   4639      1.1  mrg by @var{SHIFT} places.  If rank is greater than one, then all complete rank one
   4640      1.1  mrg sections of @var{ARRAY} along the given dimension are shifted.  Elements
   4641      1.1  mrg shifted out one end of each rank one section are shifted back in the other end.
   4642      1.1  mrg 
   4643      1.1  mrg @item @emph{Standard}:
   4644  1.1.1.2  mrg Fortran 90 and later
   4645      1.1  mrg 
   4646      1.1  mrg @item @emph{Class}:
   4647      1.1  mrg Transformational function
   4648      1.1  mrg 
   4649      1.1  mrg @item @emph{Syntax}:
   4650      1.1  mrg @code{RESULT = CSHIFT(ARRAY, SHIFT [, DIM])}
   4651      1.1  mrg 
   4652      1.1  mrg @item @emph{Arguments}:
   4653      1.1  mrg @multitable @columnfractions .15 .70
   4654      1.1  mrg @item @var{ARRAY}  @tab Shall be an array of any type.
   4655      1.1  mrg @item @var{SHIFT}  @tab The type shall be @code{INTEGER}.
   4656      1.1  mrg @item @var{DIM}    @tab The type shall be @code{INTEGER}.
   4657      1.1  mrg @end multitable
   4658      1.1  mrg 
   4659      1.1  mrg @item @emph{Return value}:
   4660      1.1  mrg Returns an array of same type and rank as the @var{ARRAY} argument.
   4661      1.1  mrg 
   4662      1.1  mrg @item @emph{Example}:
   4663      1.1  mrg @smallexample
   4664      1.1  mrg program test_cshift
   4665      1.1  mrg     integer, dimension(3,3) :: a
   4666      1.1  mrg     a = reshape( (/ 1, 2, 3, 4, 5, 6, 7, 8, 9 /), (/ 3, 3 /))
   4667      1.1  mrg     print '(3i3)', a(1,:)
   4668      1.1  mrg     print '(3i3)', a(2,:)
   4669      1.1  mrg     print '(3i3)', a(3,:)    
   4670      1.1  mrg     a = cshift(a, SHIFT=(/1, 2, -1/), DIM=2)
   4671      1.1  mrg     print *
   4672      1.1  mrg     print '(3i3)', a(1,:)
   4673      1.1  mrg     print '(3i3)', a(2,:)
   4674      1.1  mrg     print '(3i3)', a(3,:)
   4675      1.1  mrg end program test_cshift
   4676      1.1  mrg @end smallexample
   4677      1.1  mrg @end table
   4678      1.1  mrg 
   4679      1.1  mrg 
   4680      1.1  mrg 
   4681      1.1  mrg @node CTIME
   4682      1.1  mrg @section @code{CTIME} --- Convert a time into a string
   4683      1.1  mrg @fnindex CTIME
   4684      1.1  mrg @cindex time, conversion to string
   4685      1.1  mrg @cindex conversion, to string
   4686      1.1  mrg 
   4687      1.1  mrg @table @asis
   4688      1.1  mrg @item @emph{Description}:
   4689      1.1  mrg @code{CTIME} converts a system time value, such as returned by
   4690      1.1  mrg @ref{TIME8}, to a string. The output will be of the form @samp{Sat
   4691      1.1  mrg Aug 19 18:13:14 1995}.
   4692      1.1  mrg 
   4693      1.1  mrg This intrinsic is provided in both subroutine and function forms; however,
   4694      1.1  mrg only one form can be used in any given program unit.
   4695      1.1  mrg 
   4696      1.1  mrg @item @emph{Standard}:
   4697      1.1  mrg GNU extension
   4698      1.1  mrg 
   4699      1.1  mrg @item @emph{Class}:
   4700      1.1  mrg Subroutine, function
   4701      1.1  mrg 
   4702      1.1  mrg @item @emph{Syntax}:
   4703      1.1  mrg @multitable @columnfractions .80
   4704      1.1  mrg @item @code{CALL CTIME(TIME, RESULT)}.
   4705      1.1  mrg @item @code{RESULT = CTIME(TIME)}.
   4706      1.1  mrg @end multitable
   4707      1.1  mrg 
   4708      1.1  mrg @item @emph{Arguments}:
   4709      1.1  mrg @multitable @columnfractions .15 .70
   4710      1.1  mrg @item @var{TIME}    @tab The type shall be of type @code{INTEGER}.
   4711      1.1  mrg @item @var{RESULT}  @tab The type shall be of type @code{CHARACTER} and
   4712      1.1  mrg of default kind. It is an @code{INTENT(OUT)} argument. If the length
   4713      1.1  mrg of this variable is too short for the time and date string to fit
   4714      1.1  mrg completely, it will be blank on procedure return.
   4715      1.1  mrg @end multitable
   4716      1.1  mrg 
   4717      1.1  mrg @item @emph{Return value}:
   4718      1.1  mrg The converted date and time as a string. 
   4719      1.1  mrg 
   4720      1.1  mrg @item @emph{Example}:
   4721      1.1  mrg @smallexample
   4722      1.1  mrg program test_ctime
   4723      1.1  mrg     integer(8) :: i
   4724      1.1  mrg     character(len=30) :: date
   4725      1.1  mrg     i = time8()
   4726      1.1  mrg 
   4727      1.1  mrg     ! Do something, main part of the program
   4728      1.1  mrg     
   4729      1.1  mrg     call ctime(i,date)
   4730      1.1  mrg     print *, 'Program was started on ', date
   4731      1.1  mrg end program test_ctime
   4732      1.1  mrg @end smallexample
   4733      1.1  mrg 
   4734      1.1  mrg @item @emph{See Also}:
   4735  1.1.1.2  mrg @ref{DATE_AND_TIME}, @gol
   4736  1.1.1.2  mrg @ref{GMTIME}, @gol
   4737  1.1.1.2  mrg @ref{LTIME}, @gol
   4738  1.1.1.2  mrg @ref{TIME}, @gol
   4739  1.1.1.2  mrg @ref{TIME8}
   4740      1.1  mrg @end table
   4741      1.1  mrg 
   4742      1.1  mrg 
   4743      1.1  mrg 
   4744      1.1  mrg @node DATE_AND_TIME
   4745      1.1  mrg @section @code{DATE_AND_TIME} --- Date and time subroutine
   4746      1.1  mrg @fnindex DATE_AND_TIME
   4747      1.1  mrg @cindex date, current
   4748      1.1  mrg @cindex current date
   4749      1.1  mrg @cindex time, current
   4750      1.1  mrg @cindex current time
   4751      1.1  mrg 
   4752      1.1  mrg @table @asis
   4753      1.1  mrg @item @emph{Description}:
   4754      1.1  mrg @code{DATE_AND_TIME(DATE, TIME, ZONE, VALUES)} gets the corresponding date and
   4755      1.1  mrg time information from the real-time system clock.  @var{DATE} is
   4756      1.1  mrg @code{INTENT(OUT)} and has form ccyymmdd.  @var{TIME} is @code{INTENT(OUT)} and
   4757      1.1  mrg has form hhmmss.sss.  @var{ZONE} is @code{INTENT(OUT)} and has form (+-)hhmm,
   4758      1.1  mrg representing the difference with respect to Coordinated Universal Time (UTC).
   4759      1.1  mrg Unavailable time and date parameters return blanks.
   4760      1.1  mrg 
   4761      1.1  mrg @var{VALUES} is @code{INTENT(OUT)} and provides the following:
   4762      1.1  mrg 
   4763  1.1.1.3  mrg @multitable @columnfractions .15 .70
   4764  1.1.1.3  mrg @item @code{VALUE(1)}: @tab The year
   4765  1.1.1.3  mrg @item @code{VALUE(2)}: @tab The month
   4766  1.1.1.3  mrg @item @code{VALUE(3)}: @tab The day of the month
   4767  1.1.1.3  mrg @item @code{VALUE(4)}: @tab Time difference with UTC in minutes
   4768  1.1.1.3  mrg @item @code{VALUE(5)}: @tab The hour of the day
   4769  1.1.1.3  mrg @item @code{VALUE(6)}: @tab The minutes of the hour
   4770  1.1.1.3  mrg @item @code{VALUE(7)}: @tab The seconds of the minute
   4771  1.1.1.3  mrg @item @code{VALUE(8)}: @tab The milliseconds of the second
   4772      1.1  mrg @end multitable
   4773      1.1  mrg 
   4774      1.1  mrg @item @emph{Standard}:
   4775  1.1.1.2  mrg Fortran 90 and later
   4776      1.1  mrg 
   4777      1.1  mrg @item @emph{Class}:
   4778      1.1  mrg Subroutine
   4779      1.1  mrg 
   4780      1.1  mrg @item @emph{Syntax}:
   4781      1.1  mrg @code{CALL DATE_AND_TIME([DATE, TIME, ZONE, VALUES])}
   4782      1.1  mrg 
   4783      1.1  mrg @item @emph{Arguments}:
   4784      1.1  mrg @multitable @columnfractions .15 .70
   4785      1.1  mrg @item @var{DATE}  @tab (Optional) The type shall be @code{CHARACTER(LEN=8)}
   4786      1.1  mrg or larger, and of default kind.
   4787      1.1  mrg @item @var{TIME}  @tab (Optional) The type shall be @code{CHARACTER(LEN=10)}
   4788      1.1  mrg or larger, and of default kind.
   4789      1.1  mrg @item @var{ZONE}  @tab (Optional) The type shall be @code{CHARACTER(LEN=5)}
   4790      1.1  mrg or larger, and of default kind.
   4791      1.1  mrg @item @var{VALUES}@tab (Optional) The type shall be @code{INTEGER(8)}.
   4792      1.1  mrg @end multitable
   4793      1.1  mrg 
   4794      1.1  mrg @item @emph{Return value}:
   4795      1.1  mrg None
   4796      1.1  mrg 
   4797      1.1  mrg @item @emph{Example}:
   4798      1.1  mrg @smallexample
   4799      1.1  mrg program test_time_and_date
   4800      1.1  mrg     character(8)  :: date
   4801      1.1  mrg     character(10) :: time
   4802      1.1  mrg     character(5)  :: zone
   4803      1.1  mrg     integer,dimension(8) :: values
   4804      1.1  mrg     ! using keyword arguments
   4805      1.1  mrg     call date_and_time(date,time,zone,values)
   4806      1.1  mrg     call date_and_time(DATE=date,ZONE=zone)
   4807      1.1  mrg     call date_and_time(TIME=time)
   4808      1.1  mrg     call date_and_time(VALUES=values)
   4809      1.1  mrg     print '(a,2x,a,2x,a)', date, time, zone
   4810      1.1  mrg     print '(8i5)', values
   4811      1.1  mrg end program test_time_and_date
   4812      1.1  mrg @end smallexample
   4813      1.1  mrg 
   4814      1.1  mrg @item @emph{See also}:
   4815  1.1.1.2  mrg @ref{CPU_TIME}, @gol
   4816  1.1.1.2  mrg @ref{SYSTEM_CLOCK}
   4817      1.1  mrg @end table
   4818      1.1  mrg 
   4819      1.1  mrg 
   4820      1.1  mrg 
   4821      1.1  mrg @node DBLE
   4822      1.1  mrg @section @code{DBLE} --- Double conversion function
   4823      1.1  mrg @fnindex DBLE
   4824      1.1  mrg @cindex conversion, to real
   4825      1.1  mrg 
   4826      1.1  mrg @table @asis
   4827      1.1  mrg @item @emph{Description}:
   4828      1.1  mrg @code{DBLE(A)} Converts @var{A} to double precision real type.
   4829      1.1  mrg 
   4830      1.1  mrg @item @emph{Standard}:
   4831      1.1  mrg Fortran 77 and later
   4832      1.1  mrg 
   4833      1.1  mrg @item @emph{Class}:
   4834      1.1  mrg Elemental function
   4835      1.1  mrg 
   4836      1.1  mrg @item @emph{Syntax}:
   4837      1.1  mrg @code{RESULT = DBLE(A)}
   4838      1.1  mrg 
   4839      1.1  mrg @item @emph{Arguments}:
   4840      1.1  mrg @multitable @columnfractions .15 .70
   4841      1.1  mrg @item @var{A} @tab The type shall be @code{INTEGER}, @code{REAL},
   4842      1.1  mrg or @code{COMPLEX}.
   4843      1.1  mrg @end multitable
   4844      1.1  mrg 
   4845      1.1  mrg @item @emph{Return value}:
   4846      1.1  mrg The return value is of type double precision real.
   4847      1.1  mrg 
   4848      1.1  mrg @item @emph{Example}:
   4849      1.1  mrg @smallexample
   4850      1.1  mrg program test_dble
   4851      1.1  mrg     real    :: x = 2.18
   4852      1.1  mrg     integer :: i = 5
   4853      1.1  mrg     complex :: z = (2.3,1.14)
   4854      1.1  mrg     print *, dble(x), dble(i), dble(z)
   4855      1.1  mrg end program test_dble
   4856      1.1  mrg @end smallexample
   4857      1.1  mrg 
   4858      1.1  mrg @item @emph{See also}:
   4859      1.1  mrg @ref{REAL}
   4860      1.1  mrg @end table
   4861      1.1  mrg 
   4862      1.1  mrg 
   4863      1.1  mrg 
   4864      1.1  mrg @node DCMPLX
   4865      1.1  mrg @section @code{DCMPLX} --- Double complex conversion function
   4866      1.1  mrg @fnindex DCMPLX
   4867      1.1  mrg @cindex complex numbers, conversion to
   4868      1.1  mrg @cindex conversion, to complex
   4869      1.1  mrg 
   4870      1.1  mrg @table @asis
   4871      1.1  mrg @item @emph{Description}:
   4872      1.1  mrg @code{DCMPLX(X [,Y])} returns a double complex number where @var{X} is
   4873      1.1  mrg converted to the real component.  If @var{Y} is present it is converted to the
   4874      1.1  mrg imaginary component.  If @var{Y} is not present then the imaginary component is
   4875      1.1  mrg set to 0.0.  If @var{X} is complex then @var{Y} must not be present.
   4876      1.1  mrg 
   4877      1.1  mrg @item @emph{Standard}:
   4878      1.1  mrg GNU extension
   4879      1.1  mrg 
   4880      1.1  mrg @item @emph{Class}:
   4881      1.1  mrg Elemental function
   4882      1.1  mrg 
   4883      1.1  mrg @item @emph{Syntax}:
   4884      1.1  mrg @code{RESULT = DCMPLX(X [, Y])}
   4885      1.1  mrg 
   4886      1.1  mrg @item @emph{Arguments}:
   4887      1.1  mrg @multitable @columnfractions .15 .70
   4888      1.1  mrg @item @var{X} @tab The type may be @code{INTEGER}, @code{REAL},
   4889      1.1  mrg or @code{COMPLEX}.
   4890      1.1  mrg @item @var{Y} @tab (Optional if @var{X} is not @code{COMPLEX}.) May be
   4891      1.1  mrg @code{INTEGER} or @code{REAL}. 
   4892      1.1  mrg @end multitable
   4893      1.1  mrg 
   4894      1.1  mrg @item @emph{Return value}:
   4895      1.1  mrg The return value is of type @code{COMPLEX(8)}
   4896      1.1  mrg 
   4897      1.1  mrg @item @emph{Example}:
   4898      1.1  mrg @smallexample
   4899      1.1  mrg program test_dcmplx
   4900      1.1  mrg     integer :: i = 42
   4901      1.1  mrg     real :: x = 3.14
   4902      1.1  mrg     complex :: z
   4903      1.1  mrg     z = cmplx(i, x)
   4904      1.1  mrg     print *, dcmplx(i)
   4905      1.1  mrg     print *, dcmplx(x)
   4906      1.1  mrg     print *, dcmplx(z)
   4907      1.1  mrg     print *, dcmplx(x,i)
   4908      1.1  mrg end program test_dcmplx
   4909      1.1  mrg @end smallexample
   4910      1.1  mrg @end table
   4911      1.1  mrg 
   4912      1.1  mrg 
   4913      1.1  mrg @node DIGITS
   4914      1.1  mrg @section @code{DIGITS} --- Significant binary digits function
   4915      1.1  mrg @fnindex DIGITS
   4916      1.1  mrg @cindex model representation, significant digits
   4917      1.1  mrg 
   4918      1.1  mrg @table @asis
   4919      1.1  mrg @item @emph{Description}:
   4920      1.1  mrg @code{DIGITS(X)} returns the number of significant binary digits of the internal
   4921      1.1  mrg model representation of @var{X}.  For example, on a system using a 32-bit
   4922      1.1  mrg floating point representation, a default real number would likely return 24.
   4923      1.1  mrg 
   4924      1.1  mrg @item @emph{Standard}:
   4925  1.1.1.2  mrg Fortran 90 and later
   4926      1.1  mrg 
   4927      1.1  mrg @item @emph{Class}:
   4928      1.1  mrg Inquiry function
   4929      1.1  mrg 
   4930      1.1  mrg @item @emph{Syntax}:
   4931      1.1  mrg @code{RESULT = DIGITS(X)}
   4932      1.1  mrg 
   4933      1.1  mrg @item @emph{Arguments}:
   4934      1.1  mrg @multitable @columnfractions .15 .70
   4935      1.1  mrg @item @var{X} @tab The type may be @code{INTEGER} or @code{REAL}.
   4936      1.1  mrg @end multitable
   4937      1.1  mrg 
   4938      1.1  mrg @item @emph{Return value}:
   4939      1.1  mrg The return value is of type @code{INTEGER}.
   4940      1.1  mrg 
   4941      1.1  mrg @item @emph{Example}:
   4942      1.1  mrg @smallexample
   4943      1.1  mrg program test_digits
   4944      1.1  mrg     integer :: i = 12345
   4945      1.1  mrg     real :: x = 3.143
   4946      1.1  mrg     real(8) :: y = 2.33
   4947      1.1  mrg     print *, digits(i)
   4948      1.1  mrg     print *, digits(x)
   4949      1.1  mrg     print *, digits(y)
   4950      1.1  mrg end program test_digits
   4951      1.1  mrg @end smallexample
   4952      1.1  mrg @end table
   4953      1.1  mrg 
   4954      1.1  mrg 
   4955      1.1  mrg 
   4956      1.1  mrg @node DIM
   4957      1.1  mrg @section @code{DIM} --- Positive difference
   4958      1.1  mrg @fnindex DIM
   4959      1.1  mrg @fnindex IDIM
   4960      1.1  mrg @fnindex DDIM
   4961      1.1  mrg @cindex positive difference
   4962      1.1  mrg 
   4963      1.1  mrg @table @asis
   4964      1.1  mrg @item @emph{Description}:
   4965      1.1  mrg @code{DIM(X,Y)} returns the difference @code{X-Y} if the result is positive;
   4966      1.1  mrg otherwise returns zero.
   4967      1.1  mrg 
   4968      1.1  mrg @item @emph{Standard}:
   4969      1.1  mrg Fortran 77 and later
   4970      1.1  mrg 
   4971      1.1  mrg @item @emph{Class}:
   4972      1.1  mrg Elemental function
   4973      1.1  mrg 
   4974      1.1  mrg @item @emph{Syntax}:
   4975      1.1  mrg @code{RESULT = DIM(X, Y)}
   4976      1.1  mrg 
   4977      1.1  mrg @item @emph{Arguments}:
   4978      1.1  mrg @multitable @columnfractions .15 .70
   4979      1.1  mrg @item @var{X} @tab The type shall be @code{INTEGER} or @code{REAL}
   4980  1.1.1.2  mrg @item @var{Y} @tab The type shall be the same type and kind as @var{X}.  (As
   4981  1.1.1.2  mrg a GNU extension, arguments of different kinds are permitted.)
   4982      1.1  mrg @end multitable
   4983      1.1  mrg 
   4984      1.1  mrg @item @emph{Return value}:
   4985  1.1.1.2  mrg The return value is of type @code{INTEGER} or @code{REAL}.  (As a GNU
   4986  1.1.1.2  mrg extension, kind is the largest kind of the actual arguments.)
   4987      1.1  mrg 
   4988      1.1  mrg @item @emph{Example}:
   4989      1.1  mrg @smallexample
   4990      1.1  mrg program test_dim
   4991      1.1  mrg     integer :: i
   4992      1.1  mrg     real(8) :: x
   4993      1.1  mrg     i = dim(4, 15)
   4994      1.1  mrg     x = dim(4.345_8, 2.111_8)
   4995      1.1  mrg     print *, i
   4996      1.1  mrg     print *, x
   4997      1.1  mrg end program test_dim
   4998      1.1  mrg @end smallexample
   4999      1.1  mrg 
   5000      1.1  mrg @item @emph{Specific names}:
   5001  1.1.1.3  mrg @multitable @columnfractions .20 .26 .20 .30
   5002  1.1.1.3  mrg @headitem Name             @tab Argument               @tab Return type       @tab Standard
   5003      1.1  mrg @item @code{DIM(X,Y)}  @tab @code{REAL(4) X, Y}    @tab @code{REAL(4)}    @tab Fortran 77 and later
   5004      1.1  mrg @item @code{IDIM(X,Y)} @tab @code{INTEGER(4) X, Y} @tab @code{INTEGER(4)} @tab Fortran 77 and later
   5005      1.1  mrg @item @code{DDIM(X,Y)} @tab @code{REAL(8) X, Y}    @tab @code{REAL(8)}    @tab Fortran 77 and later
   5006      1.1  mrg @end multitable
   5007      1.1  mrg @end table
   5008      1.1  mrg 
   5009      1.1  mrg 
   5010      1.1  mrg 
   5011      1.1  mrg @node DOT_PRODUCT
   5012      1.1  mrg @section @code{DOT_PRODUCT} --- Dot product function
   5013      1.1  mrg @fnindex DOT_PRODUCT
   5014      1.1  mrg @cindex dot product
   5015      1.1  mrg @cindex vector product
   5016      1.1  mrg @cindex product, vector
   5017      1.1  mrg 
   5018      1.1  mrg @table @asis
   5019      1.1  mrg @item @emph{Description}:
   5020      1.1  mrg @code{DOT_PRODUCT(VECTOR_A, VECTOR_B)} computes the dot product multiplication
   5021      1.1  mrg of two vectors @var{VECTOR_A} and @var{VECTOR_B}.  The two vectors may be
   5022      1.1  mrg either numeric or logical and must be arrays of rank one and of equal size. If
   5023      1.1  mrg the vectors are @code{INTEGER} or @code{REAL}, the result is
   5024      1.1  mrg @code{SUM(VECTOR_A*VECTOR_B)}. If the vectors are @code{COMPLEX}, the result
   5025      1.1  mrg is @code{SUM(CONJG(VECTOR_A)*VECTOR_B)}. If the vectors are @code{LOGICAL},
   5026      1.1  mrg the result is @code{ANY(VECTOR_A .AND. VECTOR_B)}.  
   5027      1.1  mrg 
   5028      1.1  mrg @item @emph{Standard}:
   5029  1.1.1.2  mrg Fortran 90 and later
   5030      1.1  mrg 
   5031      1.1  mrg @item @emph{Class}:
   5032      1.1  mrg Transformational function
   5033      1.1  mrg 
   5034      1.1  mrg @item @emph{Syntax}:
   5035      1.1  mrg @code{RESULT = DOT_PRODUCT(VECTOR_A, VECTOR_B)}
   5036      1.1  mrg 
   5037      1.1  mrg @item @emph{Arguments}:
   5038      1.1  mrg @multitable @columnfractions .15 .70
   5039      1.1  mrg @item @var{VECTOR_A} @tab The type shall be numeric or @code{LOGICAL}, rank 1.
   5040      1.1  mrg @item @var{VECTOR_B} @tab The type shall be numeric if @var{VECTOR_A} is of numeric type or @code{LOGICAL} if @var{VECTOR_A} is of type @code{LOGICAL}. @var{VECTOR_B} shall be a rank-one array.
   5041      1.1  mrg @end multitable
   5042      1.1  mrg 
   5043      1.1  mrg @item @emph{Return value}:
   5044      1.1  mrg If the arguments are numeric, the return value is a scalar of numeric type,
   5045      1.1  mrg @code{INTEGER}, @code{REAL}, or @code{COMPLEX}.  If the arguments are
   5046      1.1  mrg @code{LOGICAL}, the return value is @code{.TRUE.} or @code{.FALSE.}.
   5047      1.1  mrg 
   5048      1.1  mrg @item @emph{Example}:
   5049      1.1  mrg @smallexample
   5050      1.1  mrg program test_dot_prod
   5051      1.1  mrg     integer, dimension(3) :: a, b
   5052      1.1  mrg     a = (/ 1, 2, 3 /)
   5053      1.1  mrg     b = (/ 4, 5, 6 /)
   5054      1.1  mrg     print '(3i3)', a
   5055      1.1  mrg     print *
   5056      1.1  mrg     print '(3i3)', b
   5057      1.1  mrg     print *
   5058      1.1  mrg     print *, dot_product(a,b)
   5059      1.1  mrg end program test_dot_prod
   5060      1.1  mrg @end smallexample
   5061      1.1  mrg @end table
   5062      1.1  mrg 
   5063      1.1  mrg 
   5064      1.1  mrg 
   5065      1.1  mrg @node DPROD
   5066      1.1  mrg @section @code{DPROD} --- Double product function
   5067      1.1  mrg @fnindex DPROD
   5068      1.1  mrg @cindex product, double-precision
   5069      1.1  mrg 
   5070      1.1  mrg @table @asis
   5071      1.1  mrg @item @emph{Description}:
   5072      1.1  mrg @code{DPROD(X,Y)} returns the product @code{X*Y}.
   5073      1.1  mrg 
   5074      1.1  mrg @item @emph{Standard}:
   5075      1.1  mrg Fortran 77 and later
   5076      1.1  mrg 
   5077      1.1  mrg @item @emph{Class}:
   5078      1.1  mrg Elemental function
   5079      1.1  mrg 
   5080      1.1  mrg @item @emph{Syntax}:
   5081      1.1  mrg @code{RESULT = DPROD(X, Y)}
   5082      1.1  mrg 
   5083      1.1  mrg @item @emph{Arguments}:
   5084      1.1  mrg @multitable @columnfractions .15 .70
   5085      1.1  mrg @item @var{X} @tab The type shall be @code{REAL}.
   5086      1.1  mrg @item @var{Y} @tab The type shall be @code{REAL}.
   5087      1.1  mrg @end multitable
   5088      1.1  mrg 
   5089      1.1  mrg @item @emph{Return value}:
   5090      1.1  mrg The return value is of type @code{REAL(8)}.
   5091      1.1  mrg 
   5092      1.1  mrg @item @emph{Example}:
   5093      1.1  mrg @smallexample
   5094      1.1  mrg program test_dprod
   5095      1.1  mrg     real :: x = 5.2
   5096      1.1  mrg     real :: y = 2.3
   5097      1.1  mrg     real(8) :: d
   5098      1.1  mrg     d = dprod(x,y)
   5099      1.1  mrg     print *, d
   5100      1.1  mrg end program test_dprod
   5101      1.1  mrg @end smallexample
   5102      1.1  mrg 
   5103      1.1  mrg @item @emph{Specific names}:
   5104  1.1.1.3  mrg @multitable @columnfractions .20 .23 .20 .33
   5105  1.1.1.3  mrg @headitem Name              @tab Argument               @tab Return type       @tab Standard
   5106      1.1  mrg @item @code{DPROD(X,Y)} @tab @code{REAL(4) X, Y}    @tab @code{REAL(8)}    @tab Fortran 77 and later
   5107      1.1  mrg @end multitable
   5108      1.1  mrg 
   5109      1.1  mrg @end table
   5110      1.1  mrg 
   5111      1.1  mrg 
   5112      1.1  mrg @node DREAL
   5113      1.1  mrg @section @code{DREAL} --- Double real part function
   5114      1.1  mrg @fnindex DREAL
   5115      1.1  mrg @cindex complex numbers, real part
   5116      1.1  mrg 
   5117      1.1  mrg @table @asis
   5118      1.1  mrg @item @emph{Description}:
   5119      1.1  mrg @code{DREAL(Z)} returns the real part of complex variable @var{Z}.
   5120      1.1  mrg 
   5121      1.1  mrg @item @emph{Standard}:
   5122      1.1  mrg GNU extension
   5123      1.1  mrg 
   5124      1.1  mrg @item @emph{Class}:
   5125      1.1  mrg Elemental function
   5126      1.1  mrg 
   5127      1.1  mrg @item @emph{Syntax}:
   5128      1.1  mrg @code{RESULT = DREAL(A)}
   5129      1.1  mrg 
   5130      1.1  mrg @item @emph{Arguments}:
   5131      1.1  mrg @multitable @columnfractions .15 .70
   5132      1.1  mrg @item @var{A} @tab The type shall be @code{COMPLEX(8)}.
   5133      1.1  mrg @end multitable
   5134      1.1  mrg 
   5135      1.1  mrg @item @emph{Return value}:
   5136      1.1  mrg The return value is of type @code{REAL(8)}.
   5137      1.1  mrg 
   5138      1.1  mrg @item @emph{Example}:
   5139      1.1  mrg @smallexample
   5140      1.1  mrg program test_dreal
   5141      1.1  mrg     complex(8) :: z = (1.3_8,7.2_8)
   5142      1.1  mrg     print *, dreal(z)
   5143      1.1  mrg end program test_dreal
   5144      1.1  mrg @end smallexample
   5145      1.1  mrg 
   5146      1.1  mrg @item @emph{See also}:
   5147      1.1  mrg @ref{AIMAG}
   5148      1.1  mrg 
   5149      1.1  mrg @end table
   5150      1.1  mrg 
   5151      1.1  mrg 
   5152      1.1  mrg 
   5153      1.1  mrg @node DSHIFTL
   5154      1.1  mrg @section @code{DSHIFTL} --- Combined left shift
   5155      1.1  mrg @fnindex DSHIFTL
   5156      1.1  mrg @cindex left shift, combined
   5157      1.1  mrg @cindex shift, left
   5158      1.1  mrg 
   5159      1.1  mrg @table @asis
   5160      1.1  mrg @item @emph{Description}:
   5161      1.1  mrg @code{DSHIFTL(I, J, SHIFT)} combines bits of @var{I} and @var{J}. The
   5162      1.1  mrg rightmost @var{SHIFT} bits of the result are the leftmost @var{SHIFT}
   5163      1.1  mrg bits of @var{J}, and the remaining bits are the rightmost bits of
   5164      1.1  mrg @var{I}.
   5165      1.1  mrg 
   5166      1.1  mrg @item @emph{Standard}:
   5167      1.1  mrg Fortran 2008 and later
   5168      1.1  mrg 
   5169      1.1  mrg @item @emph{Class}:
   5170      1.1  mrg Elemental function
   5171      1.1  mrg 
   5172      1.1  mrg @item @emph{Syntax}:
   5173      1.1  mrg @code{RESULT = DSHIFTL(I, J, SHIFT)}
   5174      1.1  mrg 
   5175      1.1  mrg @item @emph{Arguments}:
   5176      1.1  mrg @multitable @columnfractions .15 .70
   5177      1.1  mrg @item @var{I} @tab Shall be of type @code{INTEGER} or a BOZ constant.
   5178      1.1  mrg @item @var{J} @tab Shall be of type @code{INTEGER} or a BOZ constant.
   5179      1.1  mrg If both @var{I} and @var{J} have integer type, then they shall have
   5180      1.1  mrg the same kind type parameter. @var{I} and @var{J} shall not both be
   5181      1.1  mrg BOZ constants.
   5182      1.1  mrg @item @var{SHIFT} @tab Shall be of type @code{INTEGER}. It shall
   5183      1.1  mrg be nonnegative.  If @var{I} is not a BOZ constant, then @var{SHIFT}
   5184      1.1  mrg shall be less than or equal to @code{BIT_SIZE(I)}; otherwise,
   5185      1.1  mrg @var{SHIFT} shall be less than or equal to @code{BIT_SIZE(J)}.
   5186      1.1  mrg @end multitable
   5187      1.1  mrg 
   5188      1.1  mrg @item @emph{Return value}:
   5189      1.1  mrg If either @var{I} or @var{J} is a BOZ constant, it is first converted
   5190      1.1  mrg as if by the intrinsic function @code{INT} to an integer type with the
   5191      1.1  mrg kind type parameter of the other.
   5192      1.1  mrg 
   5193      1.1  mrg @item @emph{See also}:
   5194      1.1  mrg @ref{DSHIFTR}
   5195      1.1  mrg @end table
   5196      1.1  mrg 
   5197      1.1  mrg 
   5198      1.1  mrg @node DSHIFTR
   5199      1.1  mrg @section @code{DSHIFTR} --- Combined right shift
   5200      1.1  mrg @fnindex DSHIFTR
   5201      1.1  mrg @cindex right shift, combined
   5202      1.1  mrg @cindex shift, right
   5203      1.1  mrg 
   5204      1.1  mrg @table @asis
   5205      1.1  mrg @item @emph{Description}:
   5206      1.1  mrg @code{DSHIFTR(I, J, SHIFT)} combines bits of @var{I} and @var{J}. The
   5207      1.1  mrg leftmost @var{SHIFT} bits of the result are the rightmost @var{SHIFT}
   5208      1.1  mrg bits of @var{I}, and the remaining bits are the leftmost bits of
   5209      1.1  mrg @var{J}.
   5210      1.1  mrg 
   5211      1.1  mrg @item @emph{Standard}:
   5212      1.1  mrg Fortran 2008 and later
   5213      1.1  mrg 
   5214      1.1  mrg @item @emph{Class}:
   5215      1.1  mrg Elemental function
   5216      1.1  mrg 
   5217      1.1  mrg @item @emph{Syntax}:
   5218      1.1  mrg @code{RESULT = DSHIFTR(I, J, SHIFT)}
   5219      1.1  mrg 
   5220      1.1  mrg @item @emph{Arguments}:
   5221      1.1  mrg @multitable @columnfractions .15 .70
   5222      1.1  mrg @item @var{I} @tab Shall be of type @code{INTEGER} or a BOZ constant.
   5223      1.1  mrg @item @var{J} @tab Shall be of type @code{INTEGER} or a BOZ constant.
   5224      1.1  mrg If both @var{I} and @var{J} have integer type, then they shall have
   5225      1.1  mrg the same kind type parameter. @var{I} and @var{J} shall not both be
   5226      1.1  mrg BOZ constants.
   5227      1.1  mrg @item @var{SHIFT} @tab Shall be of type @code{INTEGER}. It shall
   5228      1.1  mrg be nonnegative.  If @var{I} is not a BOZ constant, then @var{SHIFT}
   5229      1.1  mrg shall be less than or equal to @code{BIT_SIZE(I)}; otherwise,
   5230      1.1  mrg @var{SHIFT} shall be less than or equal to @code{BIT_SIZE(J)}.
   5231      1.1  mrg @end multitable
   5232      1.1  mrg 
   5233      1.1  mrg @item @emph{Return value}:
   5234      1.1  mrg If either @var{I} or @var{J} is a BOZ constant, it is first converted
   5235      1.1  mrg as if by the intrinsic function @code{INT} to an integer type with the
   5236      1.1  mrg kind type parameter of the other.
   5237      1.1  mrg 
   5238      1.1  mrg @item @emph{See also}:
   5239      1.1  mrg @ref{DSHIFTL}
   5240      1.1  mrg @end table
   5241      1.1  mrg 
   5242      1.1  mrg 
   5243      1.1  mrg @node DTIME
   5244      1.1  mrg @section @code{DTIME} --- Execution time subroutine (or function)
   5245      1.1  mrg @fnindex DTIME
   5246      1.1  mrg @cindex time, elapsed
   5247      1.1  mrg @cindex elapsed time
   5248      1.1  mrg 
   5249      1.1  mrg @table @asis
   5250      1.1  mrg @item @emph{Description}:
   5251      1.1  mrg @code{DTIME(VALUES, TIME)} initially returns the number of seconds of runtime
   5252      1.1  mrg since the start of the process's execution in @var{TIME}.  @var{VALUES}
   5253      1.1  mrg returns the user and system components of this time in @code{VALUES(1)} and
   5254      1.1  mrg @code{VALUES(2)} respectively. @var{TIME} is equal to @code{VALUES(1) +
   5255      1.1  mrg VALUES(2)}.
   5256      1.1  mrg 
   5257      1.1  mrg Subsequent invocations of @code{DTIME} return values accumulated since the
   5258      1.1  mrg previous invocation.
   5259      1.1  mrg 
   5260      1.1  mrg On some systems, the underlying timings are represented using types with
   5261      1.1  mrg sufficiently small limits that overflows (wrap around) are possible, such as
   5262      1.1  mrg 32-bit types. Therefore, the values returned by this intrinsic might be, or
   5263      1.1  mrg become, negative, or numerically less than previous values, during a single
   5264      1.1  mrg run of the compiled program.
   5265      1.1  mrg 
   5266      1.1  mrg Please note, that this implementation is thread safe if used within OpenMP
   5267      1.1  mrg directives, i.e., its state will be consistent while called from multiple
   5268      1.1  mrg threads. However, if @code{DTIME} is called from multiple threads, the result
   5269      1.1  mrg is still the time since the last invocation. This may not give the intended
   5270      1.1  mrg results. If possible, use @code{CPU_TIME} instead.
   5271      1.1  mrg 
   5272      1.1  mrg This intrinsic is provided in both subroutine and function forms; however,
   5273      1.1  mrg only one form can be used in any given program unit.
   5274      1.1  mrg 
   5275      1.1  mrg @var{VALUES} and @var{TIME} are @code{INTENT(OUT)} and provide the following:
   5276      1.1  mrg 
   5277  1.1.1.3  mrg @multitable @columnfractions .15 .70
   5278  1.1.1.3  mrg @item @code{VALUES(1)}: @tab User time in seconds.
   5279  1.1.1.3  mrg @item @code{VALUES(2)}: @tab System time in seconds.
   5280  1.1.1.3  mrg @item @code{TIME}: @tab Run time since start in seconds.
   5281      1.1  mrg @end multitable
   5282      1.1  mrg 
   5283      1.1  mrg @item @emph{Standard}:
   5284      1.1  mrg GNU extension
   5285      1.1  mrg 
   5286      1.1  mrg @item @emph{Class}:
   5287      1.1  mrg Subroutine, function
   5288      1.1  mrg 
   5289      1.1  mrg @item @emph{Syntax}:
   5290      1.1  mrg @multitable @columnfractions .80
   5291      1.1  mrg @item @code{CALL DTIME(VALUES, TIME)}.
   5292      1.1  mrg @item @code{TIME = DTIME(VALUES)}, (not recommended).
   5293      1.1  mrg @end multitable
   5294      1.1  mrg 
   5295      1.1  mrg @item @emph{Arguments}:
   5296      1.1  mrg @multitable @columnfractions .15 .70
   5297      1.1  mrg @item @var{VALUES}@tab The type shall be @code{REAL(4), DIMENSION(2)}.
   5298      1.1  mrg @item @var{TIME}@tab The type shall be @code{REAL(4)}.
   5299      1.1  mrg @end multitable
   5300      1.1  mrg 
   5301      1.1  mrg @item @emph{Return value}:
   5302      1.1  mrg Elapsed time in seconds since the last invocation or since the start of program
   5303      1.1  mrg execution if not called before.
   5304      1.1  mrg 
   5305      1.1  mrg @item @emph{Example}:
   5306      1.1  mrg @smallexample
   5307      1.1  mrg program test_dtime
   5308      1.1  mrg     integer(8) :: i, j
   5309      1.1  mrg     real, dimension(2) :: tarray
   5310      1.1  mrg     real :: result
   5311      1.1  mrg     call dtime(tarray, result)
   5312      1.1  mrg     print *, result
   5313      1.1  mrg     print *, tarray(1)
   5314      1.1  mrg     print *, tarray(2)   
   5315      1.1  mrg     do i=1,100000000    ! Just a delay
   5316      1.1  mrg         j = i * i - i
   5317      1.1  mrg     end do
   5318      1.1  mrg     call dtime(tarray, result)
   5319      1.1  mrg     print *, result
   5320      1.1  mrg     print *, tarray(1)
   5321      1.1  mrg     print *, tarray(2)
   5322      1.1  mrg end program test_dtime
   5323      1.1  mrg @end smallexample
   5324      1.1  mrg 
   5325      1.1  mrg @item @emph{See also}:
   5326      1.1  mrg @ref{CPU_TIME}
   5327      1.1  mrg 
   5328      1.1  mrg @end table
   5329      1.1  mrg 
   5330      1.1  mrg 
   5331      1.1  mrg 
   5332      1.1  mrg @node EOSHIFT
   5333      1.1  mrg @section @code{EOSHIFT} --- End-off shift elements of an array
   5334      1.1  mrg @fnindex EOSHIFT
   5335      1.1  mrg @cindex array, shift
   5336      1.1  mrg 
   5337      1.1  mrg @table @asis
   5338      1.1  mrg @item @emph{Description}:
   5339      1.1  mrg @code{EOSHIFT(ARRAY, SHIFT[, BOUNDARY, DIM])} performs an end-off shift on
   5340      1.1  mrg elements of @var{ARRAY} along the dimension of @var{DIM}.  If @var{DIM} is
   5341      1.1  mrg omitted it is taken to be @code{1}.  @var{DIM} is a scalar of type
   5342      1.1  mrg @code{INTEGER} in the range of @math{1 \leq DIM \leq n)} where @math{n} is the
   5343      1.1  mrg rank of @var{ARRAY}.  If the rank of @var{ARRAY} is one, then all elements of
   5344      1.1  mrg @var{ARRAY} are shifted by @var{SHIFT} places.  If rank is greater than one,
   5345      1.1  mrg then all complete rank one sections of @var{ARRAY} along the given dimension are
   5346      1.1  mrg shifted.  Elements shifted out one end of each rank one section are dropped.  If
   5347      1.1  mrg @var{BOUNDARY} is present then the corresponding value of from @var{BOUNDARY}
   5348      1.1  mrg is copied back in the other end.  If @var{BOUNDARY} is not present then the
   5349      1.1  mrg following are copied in depending on the type of @var{ARRAY}.
   5350      1.1  mrg 
   5351      1.1  mrg @multitable @columnfractions .15 .80
   5352      1.1  mrg @item @emph{Array Type} @tab @emph{Boundary Value}
   5353      1.1  mrg @item Numeric  @tab 0 of the type and kind of @var{ARRAY}.
   5354      1.1  mrg @item Logical  @tab @code{.FALSE.}.
   5355      1.1  mrg @item Character(@var{len}) @tab @var{len} blanks.
   5356      1.1  mrg @end multitable
   5357      1.1  mrg 
   5358      1.1  mrg @item @emph{Standard}:
   5359  1.1.1.2  mrg Fortran 90 and later
   5360      1.1  mrg 
   5361      1.1  mrg @item @emph{Class}:
   5362      1.1  mrg Transformational function
   5363      1.1  mrg 
   5364      1.1  mrg @item @emph{Syntax}:
   5365      1.1  mrg @code{RESULT = EOSHIFT(ARRAY, SHIFT [, BOUNDARY, DIM])}
   5366      1.1  mrg 
   5367      1.1  mrg @item @emph{Arguments}:
   5368      1.1  mrg @multitable @columnfractions .15 .70
   5369      1.1  mrg @item @var{ARRAY}  @tab May be any type, not scalar.
   5370      1.1  mrg @item @var{SHIFT}  @tab The type shall be @code{INTEGER}.
   5371      1.1  mrg @item @var{BOUNDARY} @tab Same type as @var{ARRAY}. 
   5372      1.1  mrg @item @var{DIM}    @tab The type shall be @code{INTEGER}.
   5373      1.1  mrg @end multitable
   5374      1.1  mrg 
   5375      1.1  mrg @item @emph{Return value}:
   5376      1.1  mrg Returns an array of same type and rank as the @var{ARRAY} argument.
   5377      1.1  mrg 
   5378      1.1  mrg @item @emph{Example}:
   5379      1.1  mrg @smallexample
   5380      1.1  mrg program test_eoshift
   5381      1.1  mrg     integer, dimension(3,3) :: a
   5382      1.1  mrg     a = reshape( (/ 1, 2, 3, 4, 5, 6, 7, 8, 9 /), (/ 3, 3 /))
   5383      1.1  mrg     print '(3i3)', a(1,:)
   5384      1.1  mrg     print '(3i3)', a(2,:)
   5385      1.1  mrg     print '(3i3)', a(3,:)    
   5386      1.1  mrg     a = EOSHIFT(a, SHIFT=(/1, 2, 1/), BOUNDARY=-5, DIM=2)
   5387      1.1  mrg     print *
   5388      1.1  mrg     print '(3i3)', a(1,:)
   5389      1.1  mrg     print '(3i3)', a(2,:)
   5390      1.1  mrg     print '(3i3)', a(3,:)
   5391      1.1  mrg end program test_eoshift
   5392      1.1  mrg @end smallexample
   5393      1.1  mrg @end table
   5394      1.1  mrg 
   5395      1.1  mrg 
   5396      1.1  mrg 
   5397      1.1  mrg @node EPSILON
   5398      1.1  mrg @section @code{EPSILON} --- Epsilon function
   5399      1.1  mrg @fnindex EPSILON
   5400      1.1  mrg @cindex model representation, epsilon
   5401      1.1  mrg 
   5402      1.1  mrg @table @asis
   5403      1.1  mrg @item @emph{Description}:
   5404      1.1  mrg @code{EPSILON(X)} returns the smallest number @var{E} of the same kind
   5405      1.1  mrg as @var{X} such that @math{1 + E > 1}.
   5406      1.1  mrg 
   5407      1.1  mrg @item @emph{Standard}:
   5408  1.1.1.2  mrg Fortran 90 and later
   5409      1.1  mrg 
   5410      1.1  mrg @item @emph{Class}:
   5411      1.1  mrg Inquiry function
   5412      1.1  mrg 
   5413      1.1  mrg @item @emph{Syntax}:
   5414      1.1  mrg @code{RESULT = EPSILON(X)}
   5415      1.1  mrg 
   5416      1.1  mrg @item @emph{Arguments}:
   5417      1.1  mrg @multitable @columnfractions .15 .70
   5418      1.1  mrg @item @var{X} @tab The type shall be @code{REAL}.
   5419      1.1  mrg @end multitable
   5420      1.1  mrg 
   5421      1.1  mrg @item @emph{Return value}:
   5422      1.1  mrg The return value is of same type as the argument.
   5423      1.1  mrg 
   5424      1.1  mrg @item @emph{Example}:
   5425      1.1  mrg @smallexample
   5426      1.1  mrg program test_epsilon
   5427      1.1  mrg     real :: x = 3.143
   5428      1.1  mrg     real(8) :: y = 2.33
   5429      1.1  mrg     print *, EPSILON(x)
   5430      1.1  mrg     print *, EPSILON(y)
   5431      1.1  mrg end program test_epsilon
   5432      1.1  mrg @end smallexample
   5433      1.1  mrg @end table
   5434      1.1  mrg 
   5435      1.1  mrg 
   5436      1.1  mrg 
   5437      1.1  mrg @node ERF
   5438      1.1  mrg @section @code{ERF} --- Error function 
   5439      1.1  mrg @fnindex ERF
   5440      1.1  mrg @cindex error function
   5441      1.1  mrg 
   5442      1.1  mrg @table @asis
   5443      1.1  mrg @item @emph{Description}:
   5444      1.1  mrg @code{ERF(X)} computes the error function of @var{X}.
   5445      1.1  mrg 
   5446      1.1  mrg @item @emph{Standard}:
   5447      1.1  mrg Fortran 2008 and later
   5448      1.1  mrg 
   5449      1.1  mrg @item @emph{Class}:
   5450      1.1  mrg Elemental function
   5451      1.1  mrg 
   5452      1.1  mrg @item @emph{Syntax}:
   5453      1.1  mrg @code{RESULT = ERF(X)}
   5454      1.1  mrg 
   5455      1.1  mrg @item @emph{Arguments}:
   5456      1.1  mrg @multitable @columnfractions .15 .70
   5457      1.1  mrg @item @var{X} @tab The type shall be @code{REAL}.
   5458      1.1  mrg @end multitable
   5459      1.1  mrg 
   5460      1.1  mrg @item @emph{Return value}:
   5461      1.1  mrg The return value is of type @code{REAL}, of the same kind as
   5462      1.1  mrg @var{X} and lies in the range @math{-1 \leq erf (x) \leq 1 }.
   5463      1.1  mrg 
   5464      1.1  mrg @item @emph{Example}:
   5465      1.1  mrg @smallexample
   5466      1.1  mrg program test_erf
   5467      1.1  mrg   real(8) :: x = 0.17_8
   5468      1.1  mrg   x = erf(x)
   5469      1.1  mrg end program test_erf
   5470      1.1  mrg @end smallexample
   5471      1.1  mrg 
   5472      1.1  mrg @item @emph{Specific names}:
   5473  1.1.1.3  mrg @multitable @columnfractions .20 .23 .20 .33
   5474  1.1.1.3  mrg @headitem Name            @tab Argument          @tab Return type       @tab Standard
   5475      1.1  mrg @item @code{DERF(X)}  @tab @code{REAL(8) X}  @tab @code{REAL(8)}    @tab GNU extension
   5476      1.1  mrg @end multitable
   5477      1.1  mrg @end table
   5478      1.1  mrg 
   5479      1.1  mrg 
   5480      1.1  mrg 
   5481      1.1  mrg @node ERFC
   5482      1.1  mrg @section @code{ERFC} --- Error function 
   5483      1.1  mrg @fnindex ERFC
   5484      1.1  mrg @cindex error function, complementary
   5485      1.1  mrg 
   5486      1.1  mrg @table @asis
   5487      1.1  mrg @item @emph{Description}:
   5488      1.1  mrg @code{ERFC(X)} computes the complementary error function of @var{X}.
   5489      1.1  mrg 
   5490      1.1  mrg @item @emph{Standard}:
   5491      1.1  mrg Fortran 2008 and later
   5492      1.1  mrg 
   5493      1.1  mrg @item @emph{Class}:
   5494      1.1  mrg Elemental function
   5495      1.1  mrg 
   5496      1.1  mrg @item @emph{Syntax}:
   5497      1.1  mrg @code{RESULT = ERFC(X)}
   5498      1.1  mrg 
   5499      1.1  mrg @item @emph{Arguments}:
   5500      1.1  mrg @multitable @columnfractions .15 .70
   5501      1.1  mrg @item @var{X} @tab The type shall be @code{REAL}.
   5502      1.1  mrg @end multitable
   5503      1.1  mrg 
   5504      1.1  mrg @item @emph{Return value}:
   5505      1.1  mrg The return value is of type @code{REAL} and of the same kind as @var{X}.
   5506      1.1  mrg It lies in the range @math{ 0 \leq erfc (x) \leq 2 }.
   5507      1.1  mrg 
   5508      1.1  mrg @item @emph{Example}:
   5509      1.1  mrg @smallexample
   5510      1.1  mrg program test_erfc
   5511      1.1  mrg   real(8) :: x = 0.17_8
   5512      1.1  mrg   x = erfc(x)
   5513      1.1  mrg end program test_erfc
   5514      1.1  mrg @end smallexample
   5515      1.1  mrg 
   5516      1.1  mrg @item @emph{Specific names}:
   5517  1.1.1.3  mrg @multitable @columnfractions .20 .23 .20 .33
   5518  1.1.1.3  mrg @headitem Name            @tab Argument          @tab Return type       @tab Standard
   5519      1.1  mrg @item @code{DERFC(X)} @tab @code{REAL(8) X}  @tab @code{REAL(8)}    @tab GNU extension
   5520      1.1  mrg @end multitable
   5521      1.1  mrg @end table
   5522      1.1  mrg 
   5523      1.1  mrg 
   5524      1.1  mrg 
   5525      1.1  mrg @node ERFC_SCALED
   5526      1.1  mrg @section @code{ERFC_SCALED} --- Error function 
   5527      1.1  mrg @fnindex ERFC_SCALED
   5528      1.1  mrg @cindex error function, complementary, exponentially-scaled
   5529      1.1  mrg 
   5530      1.1  mrg @table @asis
   5531      1.1  mrg @item @emph{Description}:
   5532      1.1  mrg @code{ERFC_SCALED(X)} computes the exponentially-scaled complementary
   5533      1.1  mrg error function of @var{X}.
   5534      1.1  mrg 
   5535      1.1  mrg @item @emph{Standard}:
   5536      1.1  mrg Fortran 2008 and later
   5537      1.1  mrg 
   5538      1.1  mrg @item @emph{Class}:
   5539      1.1  mrg Elemental function
   5540      1.1  mrg 
   5541      1.1  mrg @item @emph{Syntax}:
   5542      1.1  mrg @code{RESULT = ERFC_SCALED(X)}
   5543      1.1  mrg 
   5544      1.1  mrg @item @emph{Arguments}:
   5545      1.1  mrg @multitable @columnfractions .15 .70
   5546      1.1  mrg @item @var{X} @tab The type shall be @code{REAL}.
   5547      1.1  mrg @end multitable
   5548      1.1  mrg 
   5549      1.1  mrg @item @emph{Return value}:
   5550      1.1  mrg The return value is of type @code{REAL} and of the same kind as @var{X}.
   5551      1.1  mrg 
   5552      1.1  mrg @item @emph{Example}:
   5553      1.1  mrg @smallexample
   5554      1.1  mrg program test_erfc_scaled
   5555      1.1  mrg   real(8) :: x = 0.17_8
   5556      1.1  mrg   x = erfc_scaled(x)
   5557      1.1  mrg end program test_erfc_scaled
   5558      1.1  mrg @end smallexample
   5559      1.1  mrg @end table
   5560      1.1  mrg 
   5561      1.1  mrg 
   5562      1.1  mrg 
   5563      1.1  mrg @node ETIME
   5564      1.1  mrg @section @code{ETIME} --- Execution time subroutine (or function)
   5565      1.1  mrg @fnindex ETIME
   5566      1.1  mrg @cindex time, elapsed
   5567      1.1  mrg 
   5568      1.1  mrg @table @asis
   5569      1.1  mrg @item @emph{Description}:
   5570      1.1  mrg @code{ETIME(VALUES, TIME)} returns the number of seconds of runtime
   5571      1.1  mrg since the start of the process's execution in @var{TIME}.  @var{VALUES}
   5572      1.1  mrg returns the user and system components of this time in @code{VALUES(1)} and
   5573      1.1  mrg @code{VALUES(2)} respectively. @var{TIME} is equal to @code{VALUES(1) + VALUES(2)}.
   5574      1.1  mrg 
   5575      1.1  mrg On some systems, the underlying timings are represented using types with
   5576      1.1  mrg sufficiently small limits that overflows (wrap around) are possible, such as
   5577      1.1  mrg 32-bit types. Therefore, the values returned by this intrinsic might be, or
   5578      1.1  mrg become, negative, or numerically less than previous values, during a single
   5579      1.1  mrg run of the compiled program.
   5580      1.1  mrg 
   5581      1.1  mrg This intrinsic is provided in both subroutine and function forms; however,
   5582      1.1  mrg only one form can be used in any given program unit.
   5583      1.1  mrg 
   5584      1.1  mrg @var{VALUES} and @var{TIME} are @code{INTENT(OUT)} and provide the following:
   5585      1.1  mrg 
   5586  1.1.1.3  mrg @multitable @columnfractions .15 .70
   5587  1.1.1.3  mrg @item @code{VALUES(1)}: @tab User time in seconds.
   5588  1.1.1.3  mrg @item @code{VALUES(2)}: @tab System time in seconds.
   5589  1.1.1.3  mrg @item @code{TIME}: @tab Run time since start in seconds.
   5590      1.1  mrg @end multitable
   5591      1.1  mrg 
   5592      1.1  mrg @item @emph{Standard}:
   5593      1.1  mrg GNU extension
   5594      1.1  mrg 
   5595      1.1  mrg @item @emph{Class}:
   5596      1.1  mrg Subroutine, function
   5597      1.1  mrg 
   5598      1.1  mrg @item @emph{Syntax}:
   5599      1.1  mrg @multitable @columnfractions .80
   5600      1.1  mrg @item @code{CALL ETIME(VALUES, TIME)}.
   5601      1.1  mrg @item @code{TIME = ETIME(VALUES)}, (not recommended).
   5602      1.1  mrg @end multitable
   5603      1.1  mrg 
   5604      1.1  mrg @item @emph{Arguments}:
   5605      1.1  mrg @multitable @columnfractions .15 .70
   5606      1.1  mrg @item @var{VALUES}@tab The type shall be @code{REAL(4), DIMENSION(2)}.
   5607      1.1  mrg @item @var{TIME}@tab The type shall be @code{REAL(4)}.
   5608      1.1  mrg @end multitable
   5609      1.1  mrg 
   5610      1.1  mrg @item @emph{Return value}:
   5611      1.1  mrg Elapsed time in seconds since the start of program execution.
   5612      1.1  mrg 
   5613      1.1  mrg @item @emph{Example}:
   5614      1.1  mrg @smallexample
   5615      1.1  mrg program test_etime
   5616      1.1  mrg     integer(8) :: i, j
   5617      1.1  mrg     real, dimension(2) :: tarray
   5618      1.1  mrg     real :: result
   5619      1.1  mrg     call ETIME(tarray, result)
   5620      1.1  mrg     print *, result
   5621      1.1  mrg     print *, tarray(1)
   5622      1.1  mrg     print *, tarray(2)   
   5623      1.1  mrg     do i=1,100000000    ! Just a delay
   5624      1.1  mrg         j = i * i - i
   5625      1.1  mrg     end do
   5626      1.1  mrg     call ETIME(tarray, result)
   5627      1.1  mrg     print *, result
   5628      1.1  mrg     print *, tarray(1)
   5629      1.1  mrg     print *, tarray(2)
   5630      1.1  mrg end program test_etime
   5631      1.1  mrg @end smallexample
   5632      1.1  mrg 
   5633      1.1  mrg @item @emph{See also}:
   5634      1.1  mrg @ref{CPU_TIME}
   5635      1.1  mrg 
   5636      1.1  mrg @end table
   5637      1.1  mrg 
   5638      1.1  mrg 
   5639      1.1  mrg 
   5640      1.1  mrg @node EVENT_QUERY
   5641      1.1  mrg @section @code{EVENT_QUERY} --- Query whether a coarray event has occurred
   5642      1.1  mrg @fnindex EVENT_QUERY
   5643      1.1  mrg @cindex Events, EVENT_QUERY
   5644      1.1  mrg 
   5645      1.1  mrg @table @asis
   5646      1.1  mrg @item @emph{Description}:
   5647      1.1  mrg @code{EVENT_QUERY} assignes the number of events to @var{COUNT} which have been
   5648      1.1  mrg posted to the @var{EVENT} variable and not yet been removed by calling
   5649      1.1  mrg @code{EVENT WAIT}. When @var{STAT} is present and the invocation was successful,
   5650      1.1  mrg it is assigned the value 0. If it is present and the invocation has failed,
   5651      1.1  mrg it is assigned a positive value and @var{COUNT} is assigned the value @math{-1}.
   5652      1.1  mrg 
   5653      1.1  mrg @item @emph{Standard}:
   5654      1.1  mrg TS 18508 or later
   5655      1.1  mrg 
   5656      1.1  mrg @item @emph{Class}:
   5657      1.1  mrg  subroutine
   5658      1.1  mrg 
   5659      1.1  mrg @item @emph{Syntax}:
   5660      1.1  mrg @code{CALL EVENT_QUERY (EVENT, COUNT [, STAT])}
   5661      1.1  mrg 
   5662      1.1  mrg @item @emph{Arguments}:
   5663      1.1  mrg @multitable @columnfractions .15 .70
   5664      1.1  mrg @item @var{EVENT}  @tab (intent(IN)) Scalar of type @code{EVENT_TYPE},
   5665      1.1  mrg defined in @code{ISO_FORTRAN_ENV}; shall not be coindexed.
   5666      1.1  mrg @item @var{COUNT}  @tab (intent(out))Scalar integer with at least the
   5667      1.1  mrg precision of default integer.
   5668      1.1  mrg @item @var{STAT}   @tab (optional) Scalar default-kind integer variable.
   5669      1.1  mrg @end multitable
   5670      1.1  mrg 
   5671      1.1  mrg @item @emph{Example}:
   5672      1.1  mrg @smallexample
   5673      1.1  mrg program atomic
   5674      1.1  mrg   use iso_fortran_env
   5675      1.1  mrg   implicit none
   5676      1.1  mrg   type(event_type) :: event_value_has_been_set[*]
   5677      1.1  mrg   integer :: cnt
   5678      1.1  mrg   if (this_image() == 1) then
   5679      1.1  mrg     call event_query (event_value_has_been_set, cnt)
   5680      1.1  mrg     if (cnt > 0) write(*,*) "Value has been set"
   5681      1.1  mrg   elseif (this_image() == 2) then
   5682      1.1  mrg     event post (event_value_has_been_set[1])
   5683      1.1  mrg   end if
   5684      1.1  mrg end program atomic
   5685      1.1  mrg @end smallexample
   5686      1.1  mrg 
   5687      1.1  mrg @end table
   5688      1.1  mrg 
   5689      1.1  mrg 
   5690      1.1  mrg 
   5691      1.1  mrg @node EXECUTE_COMMAND_LINE
   5692      1.1  mrg @section @code{EXECUTE_COMMAND_LINE} --- Execute a shell command
   5693      1.1  mrg @fnindex EXECUTE_COMMAND_LINE
   5694      1.1  mrg @cindex system, system call
   5695      1.1  mrg @cindex command line
   5696      1.1  mrg 
   5697      1.1  mrg @table @asis
   5698      1.1  mrg @item @emph{Description}:
   5699      1.1  mrg @code{EXECUTE_COMMAND_LINE} runs a shell command, synchronously or
   5700      1.1  mrg asynchronously.
   5701      1.1  mrg 
   5702      1.1  mrg The @code{COMMAND} argument is passed to the shell and executed (The
   5703      1.1  mrg shell is @code{sh} on Unix systems, and @code{cmd.exe} on Windows.).
   5704      1.1  mrg If @code{WAIT} is present and has the value false, the execution of
   5705      1.1  mrg the command is asynchronous if the system supports it; otherwise, the
   5706      1.1  mrg command is executed synchronously using the C library's @code{system}
   5707      1.1  mrg call.
   5708      1.1  mrg 
   5709      1.1  mrg The three last arguments allow the user to get status information.  After
   5710      1.1  mrg synchronous execution, @code{EXITSTAT} contains the integer exit code of
   5711      1.1  mrg the command, as returned by @code{system}.  @code{CMDSTAT} is set to zero
   5712      1.1  mrg if the command line was executed (whatever its exit status was).
   5713      1.1  mrg @code{CMDMSG} is assigned an error message if an error has occurred.
   5714      1.1  mrg 
   5715      1.1  mrg Note that the @code{system} function need not be thread-safe. It is
   5716      1.1  mrg the responsibility of the user to ensure that @code{system} is not
   5717      1.1  mrg called concurrently.
   5718      1.1  mrg 
   5719      1.1  mrg For asynchronous execution on supported targets, the POSIX
   5720      1.1  mrg @code{posix_spawn} or @code{fork} functions are used.  Also, a signal
   5721      1.1  mrg handler for the @code{SIGCHLD} signal is installed.
   5722      1.1  mrg 
   5723      1.1  mrg @item @emph{Standard}:
   5724      1.1  mrg Fortran 2008 and later
   5725      1.1  mrg 
   5726      1.1  mrg @item @emph{Class}:
   5727      1.1  mrg Subroutine
   5728      1.1  mrg 
   5729      1.1  mrg @item @emph{Syntax}:
   5730      1.1  mrg @code{CALL EXECUTE_COMMAND_LINE(COMMAND [, WAIT, EXITSTAT, CMDSTAT, CMDMSG ])}
   5731      1.1  mrg 
   5732      1.1  mrg @item @emph{Arguments}:
   5733      1.1  mrg @multitable @columnfractions .15 .70
   5734      1.1  mrg @item @var{COMMAND} @tab Shall be a default @code{CHARACTER} scalar.
   5735      1.1  mrg @item @var{WAIT} @tab (Optional) Shall be a default @code{LOGICAL} scalar.
   5736      1.1  mrg @item @var{EXITSTAT} @tab (Optional) Shall be an @code{INTEGER} of the
   5737      1.1  mrg default kind.
   5738      1.1  mrg @item @var{CMDSTAT} @tab (Optional) Shall be an @code{INTEGER} of the
   5739      1.1  mrg default kind.
   5740      1.1  mrg @item @var{CMDMSG} @tab (Optional) Shall be an @code{CHARACTER} scalar of the
   5741      1.1  mrg default kind.
   5742      1.1  mrg @end multitable
   5743      1.1  mrg 
   5744      1.1  mrg @item @emph{Example}:
   5745      1.1  mrg @smallexample
   5746      1.1  mrg program test_exec
   5747      1.1  mrg   integer :: i
   5748      1.1  mrg 
   5749      1.1  mrg   call execute_command_line ("external_prog.exe", exitstat=i)
   5750      1.1  mrg   print *, "Exit status of external_prog.exe was ", i
   5751      1.1  mrg 
   5752      1.1  mrg   call execute_command_line ("reindex_files.exe", wait=.false.)
   5753      1.1  mrg   print *, "Now reindexing files in the background"
   5754      1.1  mrg 
   5755      1.1  mrg end program test_exec
   5756      1.1  mrg @end smallexample
   5757      1.1  mrg 
   5758      1.1  mrg 
   5759      1.1  mrg @item @emph{Note}:
   5760      1.1  mrg 
   5761      1.1  mrg Because this intrinsic is implemented in terms of the @code{system}
   5762      1.1  mrg function call, its behavior with respect to signaling is processor
   5763      1.1  mrg dependent. In particular, on POSIX-compliant systems, the SIGINT and
   5764      1.1  mrg SIGQUIT signals will be ignored, and the SIGCHLD will be blocked. As
   5765      1.1  mrg such, if the parent process is terminated, the child process might not be
   5766      1.1  mrg terminated alongside.
   5767      1.1  mrg 
   5768      1.1  mrg 
   5769      1.1  mrg @item @emph{See also}:
   5770      1.1  mrg @ref{SYSTEM}
   5771      1.1  mrg @end table
   5772      1.1  mrg 
   5773      1.1  mrg 
   5774      1.1  mrg 
   5775      1.1  mrg @node EXIT
   5776      1.1  mrg @section @code{EXIT} --- Exit the program with status. 
   5777      1.1  mrg @fnindex EXIT
   5778      1.1  mrg @cindex program termination
   5779      1.1  mrg @cindex terminate program
   5780      1.1  mrg 
   5781      1.1  mrg @table @asis
   5782      1.1  mrg @item @emph{Description}:
   5783      1.1  mrg @code{EXIT} causes immediate termination of the program with status.  If status
   5784      1.1  mrg is omitted it returns the canonical @emph{success} for the system.  All Fortran
   5785      1.1  mrg I/O units are closed. 
   5786      1.1  mrg 
   5787      1.1  mrg @item @emph{Standard}:
   5788      1.1  mrg GNU extension
   5789      1.1  mrg 
   5790      1.1  mrg @item @emph{Class}:
   5791      1.1  mrg Subroutine
   5792      1.1  mrg 
   5793      1.1  mrg @item @emph{Syntax}:
   5794      1.1  mrg @code{CALL EXIT([STATUS])}
   5795      1.1  mrg 
   5796      1.1  mrg @item @emph{Arguments}:
   5797      1.1  mrg @multitable @columnfractions .15 .70
   5798      1.1  mrg @item @var{STATUS} @tab Shall be an @code{INTEGER} of the default kind.
   5799      1.1  mrg @end multitable
   5800      1.1  mrg 
   5801      1.1  mrg @item @emph{Return value}:
   5802      1.1  mrg @code{STATUS} is passed to the parent process on exit.
   5803      1.1  mrg 
   5804      1.1  mrg @item @emph{Example}:
   5805      1.1  mrg @smallexample
   5806      1.1  mrg program test_exit
   5807      1.1  mrg   integer :: STATUS = 0
   5808      1.1  mrg   print *, 'This program is going to exit.'
   5809      1.1  mrg   call EXIT(STATUS)
   5810      1.1  mrg end program test_exit
   5811      1.1  mrg @end smallexample
   5812      1.1  mrg 
   5813      1.1  mrg @item @emph{See also}:
   5814  1.1.1.2  mrg @ref{ABORT}, @gol
   5815  1.1.1.2  mrg @ref{KILL}
   5816      1.1  mrg @end table
   5817      1.1  mrg 
   5818      1.1  mrg 
   5819      1.1  mrg 
   5820      1.1  mrg @node EXP
   5821      1.1  mrg @section @code{EXP} --- Exponential function 
   5822      1.1  mrg @fnindex EXP
   5823      1.1  mrg @fnindex DEXP
   5824      1.1  mrg @fnindex CEXP
   5825      1.1  mrg @fnindex ZEXP
   5826      1.1  mrg @fnindex CDEXP
   5827      1.1  mrg @cindex exponential function
   5828      1.1  mrg @cindex logarithm function, inverse
   5829      1.1  mrg 
   5830      1.1  mrg @table @asis
   5831      1.1  mrg @item @emph{Description}:
   5832      1.1  mrg @code{EXP(X)} computes the base @math{e} exponential of @var{X}.
   5833      1.1  mrg 
   5834      1.1  mrg @item @emph{Standard}:
   5835      1.1  mrg Fortran 77 and later, has overloads that are GNU extensions
   5836      1.1  mrg 
   5837      1.1  mrg @item @emph{Class}:
   5838      1.1  mrg Elemental function
   5839      1.1  mrg 
   5840      1.1  mrg @item @emph{Syntax}:
   5841      1.1  mrg @code{RESULT = EXP(X)}
   5842      1.1  mrg 
   5843      1.1  mrg @item @emph{Arguments}:
   5844      1.1  mrg @multitable @columnfractions .15 .70
   5845      1.1  mrg @item @var{X} @tab The type shall be @code{REAL} or
   5846      1.1  mrg @code{COMPLEX}.
   5847      1.1  mrg @end multitable
   5848      1.1  mrg 
   5849      1.1  mrg @item @emph{Return value}:
   5850      1.1  mrg The return value has same type and kind as @var{X}.
   5851      1.1  mrg 
   5852      1.1  mrg @item @emph{Example}:
   5853      1.1  mrg @smallexample
   5854      1.1  mrg program test_exp
   5855      1.1  mrg   real :: x = 1.0
   5856      1.1  mrg   x = exp(x)
   5857      1.1  mrg end program test_exp
   5858      1.1  mrg @end smallexample
   5859      1.1  mrg 
   5860      1.1  mrg @item @emph{Specific names}:
   5861  1.1.1.3  mrg @multitable @columnfractions .20 .23 .20 .33
   5862  1.1.1.3  mrg @headitem Name            @tab Argument             @tab Return type         @tab Standard
   5863      1.1  mrg @item @code{EXP(X)}   @tab @code{REAL(4) X}     @tab @code{REAL(4)}      @tab Fortran 77 and later
   5864      1.1  mrg @item @code{DEXP(X)}  @tab @code{REAL(8) X}     @tab @code{REAL(8)}      @tab Fortran 77 and later
   5865      1.1  mrg @item @code{CEXP(X)}  @tab @code{COMPLEX(4) X}  @tab @code{COMPLEX(4)}   @tab Fortran 77 and later
   5866      1.1  mrg @item @code{ZEXP(X)}  @tab @code{COMPLEX(8) X}  @tab @code{COMPLEX(8)}   @tab GNU extension
   5867      1.1  mrg @item @code{CDEXP(X)} @tab @code{COMPLEX(8) X}  @tab @code{COMPLEX(8)}   @tab GNU extension
   5868      1.1  mrg @end multitable
   5869      1.1  mrg @end table
   5870      1.1  mrg 
   5871      1.1  mrg 
   5872      1.1  mrg 
   5873      1.1  mrg @node EXPONENT
   5874      1.1  mrg @section @code{EXPONENT} --- Exponent function 
   5875      1.1  mrg @fnindex EXPONENT
   5876      1.1  mrg @cindex real number, exponent
   5877      1.1  mrg @cindex floating point, exponent
   5878      1.1  mrg 
   5879      1.1  mrg @table @asis
   5880      1.1  mrg @item @emph{Description}:
   5881      1.1  mrg @code{EXPONENT(X)} returns the value of the exponent part of @var{X}. If @var{X}
   5882      1.1  mrg is zero the value returned is zero. 
   5883      1.1  mrg 
   5884      1.1  mrg @item @emph{Standard}:
   5885  1.1.1.2  mrg Fortran 90 and later
   5886      1.1  mrg 
   5887      1.1  mrg @item @emph{Class}:
   5888      1.1  mrg Elemental function
   5889      1.1  mrg 
   5890      1.1  mrg @item @emph{Syntax}:
   5891      1.1  mrg @code{RESULT = EXPONENT(X)}
   5892      1.1  mrg 
   5893      1.1  mrg @item @emph{Arguments}:
   5894      1.1  mrg @multitable @columnfractions .15 .70
   5895      1.1  mrg @item @var{X} @tab The type shall be @code{REAL}.
   5896      1.1  mrg @end multitable
   5897      1.1  mrg 
   5898      1.1  mrg @item @emph{Return value}:
   5899      1.1  mrg The return value is of type default @code{INTEGER}.
   5900      1.1  mrg 
   5901      1.1  mrg @item @emph{Example}:
   5902      1.1  mrg @smallexample
   5903      1.1  mrg program test_exponent
   5904      1.1  mrg   real :: x = 1.0
   5905      1.1  mrg   integer :: i
   5906      1.1  mrg   i = exponent(x)
   5907      1.1  mrg   print *, i
   5908      1.1  mrg   print *, exponent(0.0)
   5909      1.1  mrg end program test_exponent
   5910      1.1  mrg @end smallexample
   5911      1.1  mrg @end table
   5912      1.1  mrg 
   5913      1.1  mrg 
   5914      1.1  mrg 
   5915      1.1  mrg @node EXTENDS_TYPE_OF
   5916      1.1  mrg @section @code{EXTENDS_TYPE_OF} ---  Query dynamic type for extension
   5917      1.1  mrg @fnindex EXTENDS_TYPE_OF
   5918      1.1  mrg 
   5919      1.1  mrg @table @asis
   5920      1.1  mrg @item @emph{Description}:
   5921      1.1  mrg Query dynamic type for extension.
   5922      1.1  mrg 
   5923      1.1  mrg @item @emph{Standard}:
   5924      1.1  mrg Fortran 2003 and later
   5925      1.1  mrg 
   5926      1.1  mrg @item @emph{Class}:
   5927      1.1  mrg Inquiry function
   5928      1.1  mrg 
   5929      1.1  mrg @item @emph{Syntax}:
   5930      1.1  mrg @code{RESULT = EXTENDS_TYPE_OF(A, MOLD)}
   5931      1.1  mrg 
   5932      1.1  mrg @item @emph{Arguments}:
   5933      1.1  mrg @multitable @columnfractions .15 .70
   5934      1.1  mrg @item @var{A} @tab Shall be an object of extensible declared type or
   5935      1.1  mrg unlimited polymorphic. 
   5936      1.1  mrg @item @var{MOLD} @tab Shall be an object of extensible declared type or
   5937      1.1  mrg unlimited polymorphic. 
   5938      1.1  mrg @end multitable
   5939      1.1  mrg 
   5940      1.1  mrg @item @emph{Return value}:
   5941      1.1  mrg The return value is a scalar of type default logical. It is true if and only if
   5942      1.1  mrg the dynamic type of A is an extension type of the dynamic type of MOLD.
   5943      1.1  mrg 
   5944      1.1  mrg 
   5945      1.1  mrg @item @emph{See also}:
   5946      1.1  mrg @ref{SAME_TYPE_AS}
   5947      1.1  mrg @end table
   5948      1.1  mrg 
   5949      1.1  mrg 
   5950      1.1  mrg 
   5951      1.1  mrg @node FDATE
   5952      1.1  mrg @section @code{FDATE} --- Get the current time as a string
   5953      1.1  mrg @fnindex FDATE
   5954      1.1  mrg @cindex time, current
   5955      1.1  mrg @cindex current time
   5956      1.1  mrg @cindex date, current
   5957      1.1  mrg @cindex current date
   5958      1.1  mrg 
   5959      1.1  mrg @table @asis
   5960      1.1  mrg @item @emph{Description}:
   5961      1.1  mrg @code{FDATE(DATE)} returns the current date (using the same format as
   5962      1.1  mrg @ref{CTIME}) in @var{DATE}. It is equivalent to @code{CALL CTIME(DATE,
   5963      1.1  mrg TIME())}.
   5964      1.1  mrg 
   5965      1.1  mrg This intrinsic is provided in both subroutine and function forms; however,
   5966      1.1  mrg only one form can be used in any given program unit.
   5967      1.1  mrg 
   5968      1.1  mrg @item @emph{Standard}:
   5969      1.1  mrg GNU extension
   5970      1.1  mrg 
   5971      1.1  mrg @item @emph{Class}:
   5972      1.1  mrg Subroutine, function
   5973      1.1  mrg 
   5974      1.1  mrg @item @emph{Syntax}:
   5975      1.1  mrg @multitable @columnfractions .80
   5976      1.1  mrg @item @code{CALL FDATE(DATE)}.
   5977      1.1  mrg @item @code{DATE = FDATE()}.
   5978      1.1  mrg @end multitable
   5979      1.1  mrg 
   5980      1.1  mrg @item @emph{Arguments}:
   5981      1.1  mrg @multitable @columnfractions .15 .70
   5982      1.1  mrg @item @var{DATE}@tab The type shall be of type @code{CHARACTER} of the
   5983      1.1  mrg default kind. It is an @code{INTENT(OUT)} argument.  If the length of
   5984      1.1  mrg this variable is too short for the date and time string to fit
   5985      1.1  mrg completely, it will be blank on procedure return.
   5986      1.1  mrg @end multitable
   5987      1.1  mrg 
   5988      1.1  mrg @item @emph{Return value}:
   5989      1.1  mrg The current date and time as a string.
   5990      1.1  mrg 
   5991      1.1  mrg @item @emph{Example}:
   5992      1.1  mrg @smallexample
   5993      1.1  mrg program test_fdate
   5994      1.1  mrg     integer(8) :: i, j
   5995      1.1  mrg     character(len=30) :: date
   5996      1.1  mrg     call fdate(date)
   5997      1.1  mrg     print *, 'Program started on ', date
   5998      1.1  mrg     do i = 1, 100000000 ! Just a delay
   5999      1.1  mrg         j = i * i - i
   6000      1.1  mrg     end do
   6001      1.1  mrg     call fdate(date)
   6002      1.1  mrg     print *, 'Program ended on ', date
   6003      1.1  mrg end program test_fdate
   6004      1.1  mrg @end smallexample
   6005      1.1  mrg 
   6006      1.1  mrg @item @emph{See also}:
   6007  1.1.1.2  mrg @ref{DATE_AND_TIME}, @gol
   6008  1.1.1.2  mrg @ref{CTIME}
   6009      1.1  mrg @end table
   6010      1.1  mrg 
   6011      1.1  mrg 
   6012      1.1  mrg @node FGET
   6013      1.1  mrg @section @code{FGET} --- Read a single character in stream mode from stdin 
   6014      1.1  mrg @fnindex FGET
   6015      1.1  mrg @cindex read character, stream mode
   6016      1.1  mrg @cindex stream mode, read character
   6017      1.1  mrg @cindex file operation, read character
   6018      1.1  mrg 
   6019      1.1  mrg @table @asis
   6020      1.1  mrg @item @emph{Description}:
   6021      1.1  mrg Read a single character in stream mode from stdin by bypassing normal 
   6022      1.1  mrg formatted output. Stream I/O should not be mixed with normal record-oriented 
   6023      1.1  mrg (formatted or unformatted) I/O on the same unit; the results are unpredictable.
   6024      1.1  mrg 
   6025      1.1  mrg This intrinsic is provided in both subroutine and function forms; however,
   6026      1.1  mrg only one form can be used in any given program unit.
   6027      1.1  mrg 
   6028      1.1  mrg Note that the @code{FGET} intrinsic is provided for backwards compatibility with 
   6029      1.1  mrg @command{g77}.  GNU Fortran provides the Fortran 2003 Stream facility.
   6030      1.1  mrg Programmers should consider the use of new stream IO feature in new code 
   6031      1.1  mrg for future portability. See also @ref{Fortran 2003 status}.
   6032      1.1  mrg 
   6033      1.1  mrg @item @emph{Standard}:
   6034      1.1  mrg GNU extension
   6035      1.1  mrg 
   6036      1.1  mrg @item @emph{Class}:
   6037      1.1  mrg Subroutine, function
   6038      1.1  mrg 
   6039      1.1  mrg @item @emph{Syntax}:
   6040      1.1  mrg @multitable @columnfractions .80
   6041      1.1  mrg @item @code{CALL FGET(C [, STATUS])}
   6042      1.1  mrg @item @code{STATUS = FGET(C)}
   6043      1.1  mrg @end multitable
   6044      1.1  mrg 
   6045      1.1  mrg @item @emph{Arguments}:
   6046      1.1  mrg @multitable @columnfractions .15 .70
   6047      1.1  mrg @item @var{C}      @tab The type shall be @code{CHARACTER} and of default
   6048      1.1  mrg kind.
   6049      1.1  mrg @item @var{STATUS} @tab (Optional) status flag of type @code{INTEGER}.
   6050      1.1  mrg Returns 0 on success, -1 on end-of-file, and a system specific positive
   6051      1.1  mrg error code otherwise.
   6052      1.1  mrg @end multitable
   6053      1.1  mrg 
   6054      1.1  mrg @item @emph{Example}:
   6055      1.1  mrg @smallexample
   6056      1.1  mrg PROGRAM test_fget
   6057      1.1  mrg   INTEGER, PARAMETER :: strlen = 100
   6058      1.1  mrg   INTEGER :: status, i = 1
   6059      1.1  mrg   CHARACTER(len=strlen) :: str = ""
   6060      1.1  mrg 
   6061      1.1  mrg   WRITE (*,*) 'Enter text:'
   6062      1.1  mrg   DO
   6063      1.1  mrg     CALL fget(str(i:i), status)
   6064      1.1  mrg     if (status /= 0 .OR. i > strlen) exit
   6065      1.1  mrg     i = i + 1
   6066      1.1  mrg   END DO
   6067      1.1  mrg   WRITE (*,*) TRIM(str)
   6068      1.1  mrg END PROGRAM
   6069      1.1  mrg @end smallexample
   6070      1.1  mrg 
   6071      1.1  mrg @item @emph{See also}:
   6072  1.1.1.2  mrg @ref{FGETC}, @gol
   6073  1.1.1.2  mrg @ref{FPUT}, @gol
   6074  1.1.1.2  mrg @ref{FPUTC}
   6075      1.1  mrg @end table
   6076      1.1  mrg 
   6077      1.1  mrg 
   6078      1.1  mrg 
   6079      1.1  mrg @node FGETC
   6080      1.1  mrg @section @code{FGETC} --- Read a single character in stream mode
   6081      1.1  mrg @fnindex FGETC
   6082      1.1  mrg @cindex read character, stream mode
   6083      1.1  mrg @cindex stream mode, read character
   6084      1.1  mrg @cindex file operation, read character
   6085      1.1  mrg 
   6086      1.1  mrg @table @asis
   6087      1.1  mrg @item @emph{Description}:
   6088      1.1  mrg Read a single character in stream mode by bypassing normal formatted output. 
   6089      1.1  mrg Stream I/O should not be mixed with normal record-oriented (formatted or 
   6090      1.1  mrg unformatted) I/O on the same unit; the results are unpredictable.
   6091      1.1  mrg 
   6092      1.1  mrg This intrinsic is provided in both subroutine and function forms; however,
   6093      1.1  mrg only one form can be used in any given program unit.
   6094      1.1  mrg 
   6095      1.1  mrg Note that the @code{FGET} intrinsic is provided for backwards compatibility
   6096      1.1  mrg with @command{g77}.  GNU Fortran provides the Fortran 2003 Stream facility.
   6097      1.1  mrg Programmers should consider the use of new stream IO feature in new code 
   6098      1.1  mrg for future portability. See also @ref{Fortran 2003 status}.
   6099      1.1  mrg 
   6100      1.1  mrg @item @emph{Standard}:
   6101      1.1  mrg GNU extension
   6102      1.1  mrg 
   6103      1.1  mrg @item @emph{Class}:
   6104      1.1  mrg Subroutine, function
   6105      1.1  mrg 
   6106      1.1  mrg @item @emph{Syntax}:
   6107      1.1  mrg @multitable @columnfractions .80
   6108      1.1  mrg @item @code{CALL FGETC(UNIT, C [, STATUS])}
   6109      1.1  mrg @item @code{STATUS = FGETC(UNIT, C)}
   6110      1.1  mrg @end multitable
   6111      1.1  mrg 
   6112      1.1  mrg @item @emph{Arguments}:
   6113      1.1  mrg @multitable @columnfractions .15 .70
   6114      1.1  mrg @item @var{UNIT}   @tab The type shall be @code{INTEGER}.
   6115      1.1  mrg @item @var{C}      @tab The type shall be @code{CHARACTER} and of default
   6116      1.1  mrg kind.
   6117      1.1  mrg @item @var{STATUS} @tab (Optional) status flag of type @code{INTEGER}.
   6118      1.1  mrg Returns 0 on success, -1 on end-of-file and a system specific positive
   6119      1.1  mrg error code otherwise.
   6120      1.1  mrg @end multitable
   6121      1.1  mrg 
   6122      1.1  mrg @item @emph{Example}:
   6123      1.1  mrg @smallexample
   6124      1.1  mrg PROGRAM test_fgetc
   6125      1.1  mrg   INTEGER :: fd = 42, status
   6126      1.1  mrg   CHARACTER :: c
   6127      1.1  mrg 
   6128      1.1  mrg   OPEN(UNIT=fd, FILE="/etc/passwd", ACTION="READ", STATUS = "OLD")
   6129      1.1  mrg   DO
   6130      1.1  mrg     CALL fgetc(fd, c, status)
   6131      1.1  mrg     IF (status /= 0) EXIT
   6132      1.1  mrg     call fput(c)
   6133      1.1  mrg   END DO
   6134      1.1  mrg   CLOSE(UNIT=fd)
   6135      1.1  mrg END PROGRAM
   6136      1.1  mrg @end smallexample
   6137      1.1  mrg 
   6138      1.1  mrg @item @emph{See also}:
   6139  1.1.1.2  mrg @ref{FGET}, @gol
   6140  1.1.1.2  mrg @ref{FPUT}, @gol
   6141  1.1.1.2  mrg @ref{FPUTC}
   6142      1.1  mrg @end table
   6143      1.1  mrg 
   6144      1.1  mrg @node FINDLOC
   6145      1.1  mrg @section @code{FINDLOC} --- Search an array for a value
   6146      1.1  mrg @fnindex FINDLOC
   6147      1.1  mrg @cindex findloc
   6148      1.1  mrg 
   6149      1.1  mrg @table @asis
   6150      1.1  mrg @item @emph{Description}:
   6151      1.1  mrg Determines the location of the element in the array with the value
   6152      1.1  mrg given in the @var{VALUE} argument, or, if the @var{DIM} argument is
   6153  1.1.1.2  mrg supplied, determines the locations of the elements equal to the
   6154  1.1.1.2  mrg @var{VALUE} argument element along each
   6155      1.1  mrg row of the array in the @var{DIM} direction.  If @var{MASK} is
   6156      1.1  mrg present, only the elements for which @var{MASK} is @code{.TRUE.} are
   6157      1.1  mrg considered.  If more than one element in the array has the value
   6158      1.1  mrg @var{VALUE}, the location returned is that of the first such element
   6159      1.1  mrg in array element order if the @var{BACK} is not present or if it is
   6160      1.1  mrg @code{.FALSE.}. If @var{BACK} is true, the location returned is that
   6161      1.1  mrg of the last such element. If the array has zero size, or all of the
   6162      1.1  mrg elements of @var{MASK} are @code{.FALSE.}, then the result is an array
   6163      1.1  mrg of zeroes.  Similarly, if @var{DIM} is supplied and all of the
   6164      1.1  mrg elements of @var{MASK} along a given row are zero, the result value
   6165      1.1  mrg for that row is zero.
   6166      1.1  mrg 
   6167      1.1  mrg @item @emph{Standard}:
   6168      1.1  mrg Fortran 2008 and later.
   6169      1.1  mrg 
   6170      1.1  mrg @item @emph{Class}:
   6171      1.1  mrg Transformational function
   6172      1.1  mrg 
   6173      1.1  mrg @item @emph{Syntax}:
   6174      1.1  mrg @multitable @columnfractions .80
   6175      1.1  mrg @item @code{RESULT = FINDLOC(ARRAY, VALUE, DIM [, MASK] [,KIND] [,BACK])}
   6176      1.1  mrg @item @code{RESULT = FINDLOC(ARRAY, VALUE, [, MASK] [,KIND] [,BACK])}
   6177      1.1  mrg @end multitable
   6178      1.1  mrg 
   6179      1.1  mrg @item @emph{Arguments}:
   6180      1.1  mrg @multitable @columnfractions .15 .70
   6181      1.1  mrg @item @var{ARRAY} @tab Shall be an array of intrinsic type.
   6182      1.1  mrg @item @var{VALUE} @tab A scalar of intrinsic type which is in type
   6183      1.1  mrg conformance with @var{ARRAY}.
   6184      1.1  mrg @item @var{DIM} @tab (Optional) Shall be a scalar of type
   6185      1.1  mrg @code{INTEGER}, with a value between one and the rank of @var{ARRAY},
   6186      1.1  mrg inclusive.  It may not be an optional dummy argument.
   6187  1.1.1.3  mrg @item @var{MASK} @tab (Optional) Shall be of type @code{LOGICAL},
   6188  1.1.1.3  mrg and conformable with @var{ARRAY}.
   6189      1.1  mrg @item @var{KIND} @tab (Optional) An @code{INTEGER} initialization
   6190      1.1  mrg expression indicating the kind parameter of the result.
   6191      1.1  mrg @item @var{BACK} @tab (Optional) A scalar of type @code{LOGICAL}.
   6192      1.1  mrg @end multitable
   6193      1.1  mrg 
   6194      1.1  mrg @item @emph{Return value}:
   6195      1.1  mrg If @var{DIM} is absent, the result is a rank-one array with a length
   6196      1.1  mrg equal to the rank of @var{ARRAY}.  If @var{DIM} is present, the result
   6197      1.1  mrg is an array with a rank one less than the rank of @var{ARRAY}, and a
   6198      1.1  mrg size corresponding to the size of @var{ARRAY} with the @var{DIM}
   6199      1.1  mrg dimension removed.  If @var{DIM} is present and @var{ARRAY} has a rank
   6200      1.1  mrg of one, the result is a scalar.  If the optional argument @var{KIND}
   6201      1.1  mrg is present, the result is an integer of kind @var{KIND}, otherwise it
   6202      1.1  mrg is of default kind.
   6203      1.1  mrg 
   6204      1.1  mrg @item @emph{See also}:
   6205  1.1.1.2  mrg @ref{MAXLOC}, @gol
   6206  1.1.1.2  mrg @ref{MINLOC}
   6207      1.1  mrg 
   6208      1.1  mrg @end table
   6209      1.1  mrg 
   6210      1.1  mrg @node FLOOR
   6211      1.1  mrg @section @code{FLOOR} --- Integer floor function
   6212      1.1  mrg @fnindex FLOOR
   6213      1.1  mrg @cindex floor
   6214      1.1  mrg @cindex rounding, floor
   6215      1.1  mrg 
   6216      1.1  mrg @table @asis
   6217      1.1  mrg @item @emph{Description}:
   6218      1.1  mrg @code{FLOOR(A)} returns the greatest integer less than or equal to @var{X}.
   6219      1.1  mrg 
   6220      1.1  mrg @item @emph{Standard}:
   6221      1.1  mrg Fortran 95 and later
   6222      1.1  mrg 
   6223      1.1  mrg @item @emph{Class}:
   6224      1.1  mrg Elemental function
   6225      1.1  mrg 
   6226      1.1  mrg @item @emph{Syntax}:
   6227      1.1  mrg @code{RESULT = FLOOR(A [, KIND])}
   6228      1.1  mrg 
   6229      1.1  mrg @item @emph{Arguments}:
   6230      1.1  mrg @multitable @columnfractions .15 .70
   6231      1.1  mrg @item @var{A} @tab The type shall be @code{REAL}.
   6232      1.1  mrg @item @var{KIND} @tab (Optional) An @code{INTEGER} initialization
   6233      1.1  mrg expression indicating the kind parameter of the result.
   6234      1.1  mrg @end multitable
   6235      1.1  mrg 
   6236      1.1  mrg @item @emph{Return value}:
   6237      1.1  mrg The return value is of type @code{INTEGER(KIND)} if @var{KIND} is present
   6238      1.1  mrg and of default-kind @code{INTEGER} otherwise.
   6239      1.1  mrg 
   6240      1.1  mrg @item @emph{Example}:
   6241      1.1  mrg @smallexample
   6242      1.1  mrg program test_floor
   6243      1.1  mrg     real :: x = 63.29
   6244      1.1  mrg     real :: y = -63.59
   6245      1.1  mrg     print *, floor(x) ! returns 63
   6246      1.1  mrg     print *, floor(y) ! returns -64
   6247      1.1  mrg end program test_floor
   6248      1.1  mrg @end smallexample
   6249      1.1  mrg 
   6250      1.1  mrg @item @emph{See also}:
   6251  1.1.1.2  mrg @ref{CEILING}, @gol
   6252  1.1.1.2  mrg @ref{NINT}
   6253      1.1  mrg @end table
   6254      1.1  mrg 
   6255      1.1  mrg 
   6256      1.1  mrg 
   6257      1.1  mrg @node FLUSH
   6258      1.1  mrg @section @code{FLUSH} --- Flush I/O unit(s)
   6259      1.1  mrg @fnindex FLUSH
   6260      1.1  mrg @cindex file operation, flush
   6261      1.1  mrg 
   6262      1.1  mrg @table @asis
   6263      1.1  mrg @item @emph{Description}:
   6264      1.1  mrg Flushes Fortran unit(s) currently open for output. Without the optional
   6265      1.1  mrg argument, all units are flushed, otherwise just the unit specified.
   6266      1.1  mrg 
   6267      1.1  mrg @item @emph{Standard}:
   6268      1.1  mrg GNU extension
   6269      1.1  mrg 
   6270      1.1  mrg @item @emph{Class}:
   6271      1.1  mrg Subroutine
   6272      1.1  mrg 
   6273      1.1  mrg @item @emph{Syntax}:
   6274      1.1  mrg @code{CALL FLUSH(UNIT)}
   6275      1.1  mrg 
   6276      1.1  mrg @item @emph{Arguments}:
   6277      1.1  mrg @multitable @columnfractions .15 .70
   6278      1.1  mrg @item @var{UNIT} @tab (Optional) The type shall be @code{INTEGER}.
   6279      1.1  mrg @end multitable
   6280      1.1  mrg 
   6281      1.1  mrg @item @emph{Note}:
   6282      1.1  mrg Beginning with the Fortran 2003 standard, there is a @code{FLUSH}
   6283      1.1  mrg statement that should be preferred over the @code{FLUSH} intrinsic.
   6284      1.1  mrg 
   6285      1.1  mrg The @code{FLUSH} intrinsic and the Fortran 2003 @code{FLUSH} statement
   6286      1.1  mrg have identical effect: they flush the runtime library's I/O buffer so
   6287      1.1  mrg that the data becomes visible to other processes. This does not guarantee
   6288      1.1  mrg that the data is committed to disk.
   6289      1.1  mrg 
   6290      1.1  mrg On POSIX systems, you can request that all data is transferred  to  the
   6291      1.1  mrg storage device by calling the @code{fsync} function, with the POSIX file
   6292      1.1  mrg descriptor of the I/O unit as argument (retrieved with GNU intrinsic
   6293      1.1  mrg @code{FNUM}). The following example shows how:
   6294      1.1  mrg 
   6295      1.1  mrg @smallexample
   6296      1.1  mrg   ! Declare the interface for POSIX fsync function
   6297      1.1  mrg   interface
   6298      1.1  mrg     function fsync (fd) bind(c,name="fsync")
   6299      1.1  mrg     use iso_c_binding, only: c_int
   6300      1.1  mrg       integer(c_int), value :: fd
   6301      1.1  mrg       integer(c_int) :: fsync
   6302      1.1  mrg     end function fsync
   6303      1.1  mrg   end interface
   6304      1.1  mrg 
   6305      1.1  mrg   ! Variable declaration
   6306      1.1  mrg   integer :: ret
   6307      1.1  mrg 
   6308      1.1  mrg   ! Opening unit 10
   6309      1.1  mrg   open (10,file="foo")
   6310      1.1  mrg 
   6311      1.1  mrg   ! ...
   6312      1.1  mrg   ! Perform I/O on unit 10
   6313      1.1  mrg   ! ...
   6314      1.1  mrg 
   6315      1.1  mrg   ! Flush and sync
   6316      1.1  mrg   flush(10)
   6317      1.1  mrg   ret = fsync(fnum(10))
   6318      1.1  mrg 
   6319      1.1  mrg   ! Handle possible error
   6320      1.1  mrg   if (ret /= 0) stop "Error calling FSYNC"
   6321      1.1  mrg @end smallexample
   6322      1.1  mrg 
   6323      1.1  mrg @end table
   6324      1.1  mrg 
   6325      1.1  mrg 
   6326      1.1  mrg 
   6327      1.1  mrg @node FNUM
   6328      1.1  mrg @section @code{FNUM} --- File number function
   6329      1.1  mrg @fnindex FNUM
   6330      1.1  mrg @cindex file operation, file number
   6331      1.1  mrg 
   6332      1.1  mrg @table @asis
   6333      1.1  mrg @item @emph{Description}:
   6334      1.1  mrg @code{FNUM(UNIT)} returns the POSIX file descriptor number corresponding to the
   6335      1.1  mrg open Fortran I/O unit @code{UNIT}.
   6336      1.1  mrg 
   6337      1.1  mrg @item @emph{Standard}:
   6338      1.1  mrg GNU extension
   6339      1.1  mrg 
   6340      1.1  mrg @item @emph{Class}:
   6341      1.1  mrg Function
   6342      1.1  mrg 
   6343      1.1  mrg @item @emph{Syntax}:
   6344      1.1  mrg @code{RESULT = FNUM(UNIT)}
   6345      1.1  mrg 
   6346      1.1  mrg @item @emph{Arguments}:
   6347      1.1  mrg @multitable @columnfractions .15 .70
   6348      1.1  mrg @item @var{UNIT} @tab The type shall be @code{INTEGER}.
   6349      1.1  mrg @end multitable
   6350      1.1  mrg 
   6351      1.1  mrg @item @emph{Return value}:
   6352      1.1  mrg The return value is of type @code{INTEGER}
   6353      1.1  mrg 
   6354      1.1  mrg @item @emph{Example}:
   6355      1.1  mrg @smallexample
   6356      1.1  mrg program test_fnum
   6357      1.1  mrg   integer :: i
   6358      1.1  mrg   open (unit=10, status = "scratch")
   6359      1.1  mrg   i = fnum(10)
   6360      1.1  mrg   print *, i
   6361      1.1  mrg   close (10)
   6362      1.1  mrg end program test_fnum
   6363      1.1  mrg @end smallexample
   6364      1.1  mrg @end table
   6365      1.1  mrg 
   6366      1.1  mrg 
   6367      1.1  mrg 
   6368      1.1  mrg @node FPUT
   6369      1.1  mrg @section @code{FPUT} --- Write a single character in stream mode to stdout 
   6370      1.1  mrg @fnindex FPUT
   6371      1.1  mrg @cindex write character, stream mode
   6372      1.1  mrg @cindex stream mode, write character
   6373      1.1  mrg @cindex file operation, write character
   6374      1.1  mrg 
   6375      1.1  mrg @table @asis
   6376      1.1  mrg @item @emph{Description}:
   6377      1.1  mrg Write a single character in stream mode to stdout by bypassing normal 
   6378      1.1  mrg formatted output. Stream I/O should not be mixed with normal record-oriented 
   6379      1.1  mrg (formatted or unformatted) I/O on the same unit; the results are unpredictable.
   6380      1.1  mrg 
   6381      1.1  mrg This intrinsic is provided in both subroutine and function forms; however,
   6382      1.1  mrg only one form can be used in any given program unit.
   6383      1.1  mrg 
   6384      1.1  mrg Note that the @code{FGET} intrinsic is provided for backwards compatibility with 
   6385      1.1  mrg @command{g77}.  GNU Fortran provides the Fortran 2003 Stream facility.
   6386      1.1  mrg Programmers should consider the use of new stream IO feature in new code 
   6387      1.1  mrg for future portability. See also @ref{Fortran 2003 status}.
   6388      1.1  mrg 
   6389      1.1  mrg @item @emph{Standard}:
   6390      1.1  mrg GNU extension
   6391      1.1  mrg 
   6392      1.1  mrg @item @emph{Class}:
   6393      1.1  mrg Subroutine, function
   6394      1.1  mrg 
   6395      1.1  mrg @item @emph{Syntax}:
   6396      1.1  mrg @multitable @columnfractions .80
   6397      1.1  mrg @item @code{CALL FPUT(C [, STATUS])}
   6398      1.1  mrg @item @code{STATUS = FPUT(C)}
   6399      1.1  mrg @end multitable
   6400      1.1  mrg 
   6401      1.1  mrg @item @emph{Arguments}:
   6402      1.1  mrg @multitable @columnfractions .15 .70
   6403      1.1  mrg @item @var{C}      @tab The type shall be @code{CHARACTER} and of default
   6404      1.1  mrg kind.
   6405      1.1  mrg @item @var{STATUS} @tab (Optional) status flag of type @code{INTEGER}.
   6406      1.1  mrg Returns 0 on success, -1 on end-of-file and a system specific positive
   6407      1.1  mrg error code otherwise.
   6408      1.1  mrg @end multitable
   6409      1.1  mrg 
   6410      1.1  mrg @item @emph{Example}:
   6411      1.1  mrg @smallexample
   6412      1.1  mrg PROGRAM test_fput
   6413      1.1  mrg   CHARACTER(len=10) :: str = "gfortran"
   6414      1.1  mrg   INTEGER :: i
   6415      1.1  mrg   DO i = 1, len_trim(str)
   6416      1.1  mrg     CALL fput(str(i:i))
   6417      1.1  mrg   END DO
   6418      1.1  mrg END PROGRAM
   6419      1.1  mrg @end smallexample
   6420      1.1  mrg 
   6421      1.1  mrg @item @emph{See also}:
   6422  1.1.1.2  mrg @ref{FPUTC}, @gol
   6423  1.1.1.2  mrg @ref{FGET}, @gol
   6424  1.1.1.2  mrg @ref{FGETC}
   6425      1.1  mrg @end table
   6426      1.1  mrg 
   6427      1.1  mrg 
   6428      1.1  mrg 
   6429      1.1  mrg @node FPUTC
   6430      1.1  mrg @section @code{FPUTC} --- Write a single character in stream mode
   6431      1.1  mrg @fnindex FPUTC
   6432      1.1  mrg @cindex write character, stream mode
   6433      1.1  mrg @cindex stream mode, write character
   6434      1.1  mrg @cindex file operation, write character
   6435      1.1  mrg 
   6436      1.1  mrg @table @asis
   6437      1.1  mrg @item @emph{Description}:
   6438      1.1  mrg Write a single character in stream mode by bypassing normal formatted 
   6439      1.1  mrg output. Stream I/O should not be mixed with normal record-oriented 
   6440      1.1  mrg (formatted or unformatted) I/O on the same unit; the results are unpredictable.
   6441      1.1  mrg 
   6442      1.1  mrg This intrinsic is provided in both subroutine and function forms; however,
   6443      1.1  mrg only one form can be used in any given program unit.
   6444      1.1  mrg 
   6445      1.1  mrg Note that the @code{FGET} intrinsic is provided for backwards compatibility with 
   6446      1.1  mrg @command{g77}.  GNU Fortran provides the Fortran 2003 Stream facility.
   6447      1.1  mrg Programmers should consider the use of new stream IO feature in new code 
   6448      1.1  mrg for future portability. See also @ref{Fortran 2003 status}.
   6449      1.1  mrg 
   6450      1.1  mrg @item @emph{Standard}:
   6451      1.1  mrg GNU extension
   6452      1.1  mrg 
   6453      1.1  mrg @item @emph{Class}:
   6454      1.1  mrg Subroutine, function
   6455      1.1  mrg 
   6456      1.1  mrg @item @emph{Syntax}:
   6457      1.1  mrg @multitable @columnfractions .80
   6458      1.1  mrg @item @code{CALL FPUTC(UNIT, C [, STATUS])}
   6459      1.1  mrg @item @code{STATUS = FPUTC(UNIT, C)}
   6460      1.1  mrg @end multitable
   6461      1.1  mrg 
   6462      1.1  mrg @item @emph{Arguments}:
   6463      1.1  mrg @multitable @columnfractions .15 .70
   6464      1.1  mrg @item @var{UNIT}   @tab The type shall be @code{INTEGER}.
   6465      1.1  mrg @item @var{C}      @tab The type shall be @code{CHARACTER} and of default
   6466      1.1  mrg kind.
   6467      1.1  mrg @item @var{STATUS} @tab (Optional) status flag of type @code{INTEGER}.
   6468      1.1  mrg Returns 0 on success, -1 on end-of-file and a system specific positive
   6469      1.1  mrg error code otherwise.
   6470      1.1  mrg @end multitable
   6471      1.1  mrg 
   6472      1.1  mrg @item @emph{Example}:
   6473      1.1  mrg @smallexample
   6474      1.1  mrg PROGRAM test_fputc
   6475      1.1  mrg   CHARACTER(len=10) :: str = "gfortran"
   6476      1.1  mrg   INTEGER :: fd = 42, i
   6477      1.1  mrg 
   6478      1.1  mrg   OPEN(UNIT = fd, FILE = "out", ACTION = "WRITE", STATUS="NEW")
   6479      1.1  mrg   DO i = 1, len_trim(str)
   6480      1.1  mrg     CALL fputc(fd, str(i:i))
   6481      1.1  mrg   END DO
   6482      1.1  mrg   CLOSE(fd)
   6483      1.1  mrg END PROGRAM
   6484      1.1  mrg @end smallexample
   6485      1.1  mrg 
   6486      1.1  mrg @item @emph{See also}:
   6487  1.1.1.2  mrg @ref{FPUT}, @gol
   6488  1.1.1.2  mrg @ref{FGET}, @gol
   6489  1.1.1.2  mrg @ref{FGETC}
   6490      1.1  mrg @end table
   6491      1.1  mrg 
   6492      1.1  mrg 
   6493      1.1  mrg 
   6494      1.1  mrg @node FRACTION
   6495      1.1  mrg @section @code{FRACTION} --- Fractional part of the model representation
   6496      1.1  mrg @fnindex FRACTION
   6497      1.1  mrg @cindex real number, fraction
   6498      1.1  mrg @cindex floating point, fraction
   6499      1.1  mrg 
   6500      1.1  mrg @table @asis
   6501      1.1  mrg @item @emph{Description}:
   6502      1.1  mrg @code{FRACTION(X)} returns the fractional part of the model
   6503      1.1  mrg representation of @code{X}.
   6504      1.1  mrg 
   6505      1.1  mrg @item @emph{Standard}:
   6506  1.1.1.2  mrg Fortran 90 and later
   6507      1.1  mrg 
   6508      1.1  mrg @item @emph{Class}:
   6509      1.1  mrg Elemental function
   6510      1.1  mrg 
   6511      1.1  mrg @item @emph{Syntax}:
   6512      1.1  mrg @code{Y = FRACTION(X)}
   6513      1.1  mrg 
   6514      1.1  mrg @item @emph{Arguments}:
   6515      1.1  mrg @multitable @columnfractions .15 .70
   6516      1.1  mrg @item @var{X} @tab The type of the argument shall be a @code{REAL}.
   6517      1.1  mrg @end multitable
   6518      1.1  mrg 
   6519      1.1  mrg @item @emph{Return value}:
   6520      1.1  mrg The return value is of the same type and kind as the argument.
   6521      1.1  mrg The fractional part of the model representation of @code{X} is returned;
   6522      1.1  mrg it is @code{X * RADIX(X)**(-EXPONENT(X))}.
   6523      1.1  mrg 
   6524      1.1  mrg @item @emph{Example}:
   6525      1.1  mrg @smallexample
   6526      1.1  mrg program test_fraction
   6527      1.1  mrg   real :: x
   6528      1.1  mrg   x = 178.1387e-4
   6529      1.1  mrg   print *, fraction(x), x * radix(x)**(-exponent(x))
   6530      1.1  mrg end program test_fraction
   6531      1.1  mrg @end smallexample
   6532      1.1  mrg 
   6533      1.1  mrg @end table
   6534      1.1  mrg 
   6535      1.1  mrg 
   6536      1.1  mrg 
   6537      1.1  mrg @node FREE
   6538      1.1  mrg @section @code{FREE} --- Frees memory
   6539      1.1  mrg @fnindex FREE
   6540      1.1  mrg @cindex pointer, cray
   6541      1.1  mrg 
   6542      1.1  mrg @table @asis
   6543      1.1  mrg @item @emph{Description}:
   6544      1.1  mrg Frees memory previously allocated by @code{MALLOC}. The @code{FREE}
   6545      1.1  mrg intrinsic is an extension intended to be used with Cray pointers, and is
   6546      1.1  mrg provided in GNU Fortran to allow user to compile legacy code. For
   6547      1.1  mrg new code using Fortran 95 pointers, the memory de-allocation intrinsic is
   6548      1.1  mrg @code{DEALLOCATE}.
   6549      1.1  mrg 
   6550      1.1  mrg @item @emph{Standard}:
   6551      1.1  mrg GNU extension
   6552      1.1  mrg 
   6553      1.1  mrg @item @emph{Class}:
   6554      1.1  mrg Subroutine
   6555      1.1  mrg 
   6556      1.1  mrg @item @emph{Syntax}:
   6557      1.1  mrg @code{CALL FREE(PTR)}
   6558      1.1  mrg 
   6559      1.1  mrg @item @emph{Arguments}:
   6560      1.1  mrg @multitable @columnfractions .15 .70
   6561      1.1  mrg @item @var{PTR} @tab The type shall be @code{INTEGER}. It represents the
   6562      1.1  mrg location of the memory that should be de-allocated.
   6563      1.1  mrg @end multitable
   6564      1.1  mrg 
   6565      1.1  mrg @item @emph{Return value}:
   6566      1.1  mrg None
   6567      1.1  mrg 
   6568      1.1  mrg @item @emph{Example}:
   6569      1.1  mrg See @code{MALLOC} for an example.
   6570      1.1  mrg 
   6571      1.1  mrg @item @emph{See also}:
   6572      1.1  mrg @ref{MALLOC}
   6573      1.1  mrg @end table
   6574      1.1  mrg 
   6575      1.1  mrg 
   6576      1.1  mrg 
   6577      1.1  mrg @node FSEEK
   6578      1.1  mrg @section @code{FSEEK} --- Low level file positioning subroutine
   6579      1.1  mrg @fnindex FSEEK
   6580      1.1  mrg @cindex file operation, seek
   6581      1.1  mrg @cindex file operation, position
   6582      1.1  mrg 
   6583      1.1  mrg @table @asis
   6584      1.1  mrg @item @emph{Description}:
   6585      1.1  mrg Moves @var{UNIT} to the specified @var{OFFSET}. If @var{WHENCE} 
   6586      1.1  mrg is set to 0, the @var{OFFSET} is taken as an absolute value @code{SEEK_SET},
   6587      1.1  mrg if set to 1, @var{OFFSET} is taken to be relative to the current position 
   6588      1.1  mrg @code{SEEK_CUR}, and if set to 2 relative to the end of the file @code{SEEK_END}.
   6589      1.1  mrg On error, @var{STATUS} is set to a nonzero value. If @var{STATUS} the seek 
   6590      1.1  mrg fails silently.
   6591      1.1  mrg 
   6592      1.1  mrg This intrinsic routine is not fully backwards compatible with @command{g77}. 
   6593      1.1  mrg In @command{g77}, the @code{FSEEK} takes a statement label instead of a 
   6594      1.1  mrg @var{STATUS} variable. If FSEEK is used in old code, change
   6595      1.1  mrg @smallexample
   6596      1.1  mrg   CALL FSEEK(UNIT, OFFSET, WHENCE, *label)
   6597      1.1  mrg @end smallexample 
   6598      1.1  mrg to
   6599      1.1  mrg @smallexample
   6600      1.1  mrg   INTEGER :: status
   6601      1.1  mrg   CALL FSEEK(UNIT, OFFSET, WHENCE, status)
   6602      1.1  mrg   IF (status /= 0) GOTO label
   6603      1.1  mrg @end smallexample 
   6604      1.1  mrg 
   6605      1.1  mrg Please note that GNU Fortran provides the Fortran 2003 Stream facility.
   6606      1.1  mrg Programmers should consider the use of new stream IO feature in new code 
   6607      1.1  mrg for future portability. See also @ref{Fortran 2003 status}.
   6608      1.1  mrg 
   6609      1.1  mrg @item @emph{Standard}:
   6610      1.1  mrg GNU extension
   6611      1.1  mrg 
   6612      1.1  mrg @item @emph{Class}:
   6613      1.1  mrg Subroutine
   6614      1.1  mrg 
   6615      1.1  mrg @item @emph{Syntax}:
   6616      1.1  mrg @code{CALL FSEEK(UNIT, OFFSET, WHENCE[, STATUS])}
   6617      1.1  mrg 
   6618      1.1  mrg @item @emph{Arguments}:
   6619      1.1  mrg @multitable @columnfractions .15 .70
   6620      1.1  mrg @item @var{UNIT}   @tab Shall be a scalar of type @code{INTEGER}.
   6621      1.1  mrg @item @var{OFFSET} @tab Shall be a scalar of type @code{INTEGER}.
   6622      1.1  mrg @item @var{WHENCE} @tab Shall be a scalar of type @code{INTEGER}.
   6623      1.1  mrg Its value shall be either 0, 1 or 2.
   6624      1.1  mrg @item @var{STATUS} @tab (Optional) shall be a scalar of type 
   6625      1.1  mrg @code{INTEGER(4)}.
   6626      1.1  mrg @end multitable
   6627      1.1  mrg 
   6628      1.1  mrg @item @emph{Example}:
   6629      1.1  mrg @smallexample
   6630      1.1  mrg PROGRAM test_fseek
   6631      1.1  mrg   INTEGER, PARAMETER :: SEEK_SET = 0, SEEK_CUR = 1, SEEK_END = 2
   6632      1.1  mrg   INTEGER :: fd, offset, ierr
   6633      1.1  mrg 
   6634      1.1  mrg   ierr   = 0
   6635      1.1  mrg   offset = 5
   6636      1.1  mrg   fd     = 10
   6637      1.1  mrg 
   6638      1.1  mrg   OPEN(UNIT=fd, FILE="fseek.test")
   6639      1.1  mrg   CALL FSEEK(fd, offset, SEEK_SET, ierr)  ! move to OFFSET
   6640      1.1  mrg   print *, FTELL(fd), ierr
   6641      1.1  mrg 
   6642      1.1  mrg   CALL FSEEK(fd, 0, SEEK_END, ierr)       ! move to end
   6643      1.1  mrg   print *, FTELL(fd), ierr
   6644      1.1  mrg 
   6645      1.1  mrg   CALL FSEEK(fd, 0, SEEK_SET, ierr)       ! move to beginning
   6646      1.1  mrg   print *, FTELL(fd), ierr
   6647      1.1  mrg 
   6648      1.1  mrg   CLOSE(UNIT=fd)
   6649      1.1  mrg END PROGRAM
   6650      1.1  mrg @end smallexample
   6651      1.1  mrg 
   6652      1.1  mrg @item @emph{See also}:
   6653      1.1  mrg @ref{FTELL}
   6654      1.1  mrg @end table
   6655      1.1  mrg 
   6656      1.1  mrg 
   6657      1.1  mrg 
   6658      1.1  mrg @node FSTAT
   6659      1.1  mrg @section @code{FSTAT} --- Get file status
   6660      1.1  mrg @fnindex FSTAT
   6661      1.1  mrg @cindex file system, file status
   6662      1.1  mrg 
   6663      1.1  mrg @table @asis
   6664      1.1  mrg @item @emph{Description}:
   6665      1.1  mrg @code{FSTAT} is identical to @ref{STAT}, except that information about an 
   6666      1.1  mrg already opened file is obtained.
   6667      1.1  mrg 
   6668      1.1  mrg The elements in @code{VALUES} are the same as described by @ref{STAT}.
   6669      1.1  mrg 
   6670      1.1  mrg This intrinsic is provided in both subroutine and function forms; however,
   6671      1.1  mrg only one form can be used in any given program unit.
   6672      1.1  mrg 
   6673      1.1  mrg @item @emph{Standard}:
   6674      1.1  mrg GNU extension
   6675      1.1  mrg 
   6676      1.1  mrg @item @emph{Class}:
   6677      1.1  mrg Subroutine, function
   6678      1.1  mrg 
   6679      1.1  mrg @item @emph{Syntax}:
   6680      1.1  mrg @multitable @columnfractions .80
   6681      1.1  mrg @item @code{CALL FSTAT(UNIT, VALUES [, STATUS])}
   6682      1.1  mrg @item @code{STATUS = FSTAT(UNIT, VALUES)}
   6683      1.1  mrg @end multitable
   6684      1.1  mrg 
   6685      1.1  mrg @item @emph{Arguments}:
   6686      1.1  mrg @multitable @columnfractions .15 .70
   6687      1.1  mrg @item @var{UNIT}   @tab An open I/O unit number of type @code{INTEGER}.
   6688      1.1  mrg @item @var{VALUES} @tab The type shall be @code{INTEGER(4), DIMENSION(13)}.
   6689      1.1  mrg @item @var{STATUS} @tab (Optional) status flag of type @code{INTEGER(4)}. Returns 0 
   6690      1.1  mrg on success and a system specific error code otherwise.
   6691      1.1  mrg @end multitable
   6692      1.1  mrg 
   6693      1.1  mrg @item @emph{Example}:
   6694      1.1  mrg See @ref{STAT} for an example.
   6695      1.1  mrg 
   6696      1.1  mrg @item @emph{See also}:
   6697  1.1.1.2  mrg To stat a link: @gol
   6698  1.1.1.2  mrg @ref{LSTAT} @gol
   6699  1.1.1.2  mrg To stat a file: @gol
   6700  1.1.1.2  mrg @ref{STAT}
   6701      1.1  mrg @end table
   6702      1.1  mrg 
   6703      1.1  mrg 
   6704      1.1  mrg 
   6705      1.1  mrg @node FTELL
   6706      1.1  mrg @section @code{FTELL} --- Current stream position
   6707      1.1  mrg @fnindex FTELL
   6708      1.1  mrg @cindex file operation, position
   6709      1.1  mrg 
   6710      1.1  mrg @table @asis
   6711      1.1  mrg @item @emph{Description}:
   6712      1.1  mrg Retrieves the current position within an open file.
   6713      1.1  mrg 
   6714      1.1  mrg This intrinsic is provided in both subroutine and function forms; however,
   6715      1.1  mrg only one form can be used in any given program unit.
   6716      1.1  mrg 
   6717      1.1  mrg @item @emph{Standard}:
   6718      1.1  mrg GNU extension
   6719      1.1  mrg 
   6720      1.1  mrg @item @emph{Class}:
   6721      1.1  mrg Subroutine, function
   6722      1.1  mrg 
   6723      1.1  mrg @item @emph{Syntax}:
   6724      1.1  mrg @multitable @columnfractions .80
   6725      1.1  mrg @item @code{CALL FTELL(UNIT, OFFSET)}
   6726      1.1  mrg @item @code{OFFSET = FTELL(UNIT)}
   6727      1.1  mrg @end multitable
   6728      1.1  mrg 
   6729      1.1  mrg @item @emph{Arguments}:
   6730      1.1  mrg @multitable @columnfractions .15 .70
   6731      1.1  mrg @item @var{OFFSET}  @tab Shall of type @code{INTEGER}.
   6732      1.1  mrg @item @var{UNIT}    @tab Shall of type @code{INTEGER}.
   6733      1.1  mrg @end multitable
   6734      1.1  mrg 
   6735      1.1  mrg @item @emph{Return value}:
   6736      1.1  mrg In either syntax, @var{OFFSET} is set to the current offset of unit
   6737      1.1  mrg number @var{UNIT}, or to @math{-1} if the unit is not currently open.
   6738      1.1  mrg 
   6739      1.1  mrg @item @emph{Example}:
   6740      1.1  mrg @smallexample
   6741      1.1  mrg PROGRAM test_ftell
   6742      1.1  mrg   INTEGER :: i
   6743      1.1  mrg   OPEN(10, FILE="temp.dat")
   6744      1.1  mrg   CALL ftell(10,i)
   6745      1.1  mrg   WRITE(*,*) i
   6746      1.1  mrg END PROGRAM
   6747      1.1  mrg @end smallexample
   6748      1.1  mrg 
   6749      1.1  mrg @item @emph{See also}:
   6750      1.1  mrg @ref{FSEEK}
   6751      1.1  mrg @end table
   6752      1.1  mrg 
   6753      1.1  mrg 
   6754      1.1  mrg 
   6755      1.1  mrg @node GAMMA
   6756      1.1  mrg @section @code{GAMMA} --- Gamma function
   6757      1.1  mrg @fnindex GAMMA
   6758      1.1  mrg @fnindex DGAMMA
   6759      1.1  mrg @cindex Gamma function
   6760      1.1  mrg @cindex Factorial function
   6761      1.1  mrg 
   6762      1.1  mrg @table @asis
   6763      1.1  mrg @item @emph{Description}:
   6764      1.1  mrg @code{GAMMA(X)} computes Gamma (@math{\Gamma}) of @var{X}. For positive,
   6765      1.1  mrg integer values of @var{X} the Gamma function simplifies to the factorial
   6766      1.1  mrg function @math{\Gamma(x)=(x-1)!}.
   6767      1.1  mrg 
   6768      1.1  mrg @tex
   6769      1.1  mrg $$
   6770      1.1  mrg \Gamma(x) = \int_0^\infty t^{x-1}{\rm e}^{-t}\,{\rm d}t
   6771      1.1  mrg $$
   6772      1.1  mrg @end tex
   6773      1.1  mrg 
   6774      1.1  mrg @item @emph{Standard}:
   6775      1.1  mrg Fortran 2008 and later
   6776      1.1  mrg 
   6777      1.1  mrg @item @emph{Class}:
   6778      1.1  mrg Elemental function
   6779      1.1  mrg 
   6780      1.1  mrg @item @emph{Syntax}:
   6781      1.1  mrg @code{X = GAMMA(X)}
   6782      1.1  mrg 
   6783      1.1  mrg @item @emph{Arguments}:
   6784      1.1  mrg @multitable @columnfractions .15 .70
   6785      1.1  mrg @item @var{X} @tab Shall be of type @code{REAL} and neither zero
   6786      1.1  mrg nor a negative integer.
   6787      1.1  mrg @end multitable
   6788      1.1  mrg 
   6789      1.1  mrg @item @emph{Return value}:
   6790      1.1  mrg The return value is of type @code{REAL} of the same kind as @var{X}.
   6791      1.1  mrg 
   6792      1.1  mrg @item @emph{Example}:
   6793      1.1  mrg @smallexample
   6794      1.1  mrg program test_gamma
   6795      1.1  mrg   real :: x = 1.0
   6796      1.1  mrg   x = gamma(x) ! returns 1.0
   6797      1.1  mrg end program test_gamma
   6798      1.1  mrg @end smallexample
   6799      1.1  mrg 
   6800      1.1  mrg @item @emph{Specific names}:
   6801  1.1.1.3  mrg @multitable @columnfractions .20 .23 .20 .33
   6802  1.1.1.3  mrg @headitem Name             @tab Argument         @tab Return type       @tab Standard
   6803  1.1.1.2  mrg @item @code{DGAMMA(X)} @tab @code{REAL(8) X} @tab @code{REAL(8)}    @tab GNU extension
   6804      1.1  mrg @end multitable
   6805      1.1  mrg 
   6806      1.1  mrg @item @emph{See also}:
   6807  1.1.1.2  mrg Logarithm of the Gamma function: @gol
   6808  1.1.1.2  mrg @ref{LOG_GAMMA}
   6809      1.1  mrg @end table
   6810      1.1  mrg 
   6811      1.1  mrg 
   6812      1.1  mrg 
   6813      1.1  mrg @node GERROR
   6814      1.1  mrg @section @code{GERROR} --- Get last system error message
   6815      1.1  mrg @fnindex GERROR
   6816      1.1  mrg @cindex system, error handling
   6817      1.1  mrg 
   6818      1.1  mrg @table @asis
   6819      1.1  mrg @item @emph{Description}:
   6820      1.1  mrg Returns the system error message corresponding to the last system error.
   6821      1.1  mrg This resembles the functionality of @code{strerror(3)} in C.
   6822      1.1  mrg 
   6823      1.1  mrg @item @emph{Standard}:
   6824      1.1  mrg GNU extension
   6825      1.1  mrg 
   6826      1.1  mrg @item @emph{Class}:
   6827      1.1  mrg Subroutine
   6828      1.1  mrg 
   6829      1.1  mrg @item @emph{Syntax}:
   6830      1.1  mrg @code{CALL GERROR(RESULT)}
   6831      1.1  mrg 
   6832      1.1  mrg @item @emph{Arguments}:
   6833      1.1  mrg @multitable @columnfractions .15 .70
   6834  1.1.1.3  mrg @item @var{RESULT}  @tab Shall be of type @code{CHARACTER} and of default kind.
   6835      1.1  mrg @end multitable
   6836      1.1  mrg 
   6837      1.1  mrg @item @emph{Example}:
   6838      1.1  mrg @smallexample
   6839      1.1  mrg PROGRAM test_gerror
   6840      1.1  mrg   CHARACTER(len=100) :: msg
   6841      1.1  mrg   CALL gerror(msg)
   6842      1.1  mrg   WRITE(*,*) msg
   6843      1.1  mrg END PROGRAM
   6844      1.1  mrg @end smallexample
   6845      1.1  mrg 
   6846      1.1  mrg @item @emph{See also}:
   6847  1.1.1.2  mrg @ref{IERRNO}, @gol
   6848  1.1.1.2  mrg @ref{PERROR}
   6849      1.1  mrg @end table
   6850      1.1  mrg 
   6851      1.1  mrg 
   6852      1.1  mrg 
   6853      1.1  mrg @node GETARG
   6854      1.1  mrg @section @code{GETARG} --- Get command line arguments
   6855      1.1  mrg @fnindex GETARG
   6856      1.1  mrg @cindex command-line arguments
   6857      1.1  mrg @cindex arguments, to program
   6858      1.1  mrg 
   6859      1.1  mrg @table @asis
   6860      1.1  mrg @item @emph{Description}:
   6861      1.1  mrg Retrieve the @var{POS}-th argument that was passed on the
   6862      1.1  mrg command line when the containing program was invoked.
   6863      1.1  mrg 
   6864      1.1  mrg This intrinsic routine is provided for backwards compatibility with 
   6865      1.1  mrg GNU Fortran 77.  In new code, programmers should consider the use of 
   6866      1.1  mrg the @ref{GET_COMMAND_ARGUMENT} intrinsic defined by the Fortran 2003 
   6867      1.1  mrg standard.
   6868      1.1  mrg 
   6869      1.1  mrg @item @emph{Standard}:
   6870      1.1  mrg GNU extension
   6871      1.1  mrg 
   6872      1.1  mrg @item @emph{Class}:
   6873      1.1  mrg Subroutine
   6874      1.1  mrg 
   6875      1.1  mrg @item @emph{Syntax}:
   6876      1.1  mrg @code{CALL GETARG(POS, VALUE)}
   6877      1.1  mrg 
   6878      1.1  mrg @item @emph{Arguments}:
   6879      1.1  mrg @multitable @columnfractions .15 .70
   6880      1.1  mrg @item @var{POS}   @tab Shall be of type @code{INTEGER} and not wider than
   6881      1.1  mrg the default integer kind; @math{@var{POS} \geq 0}
   6882      1.1  mrg @item @var{VALUE} @tab Shall be of type @code{CHARACTER} and of default
   6883      1.1  mrg kind.
   6884      1.1  mrg @end multitable
   6885      1.1  mrg 
   6886      1.1  mrg @item @emph{Return value}:
   6887      1.1  mrg After @code{GETARG} returns, the @var{VALUE} argument holds the
   6888      1.1  mrg @var{POS}th command line argument. If @var{VALUE} cannot hold the
   6889      1.1  mrg argument, it is truncated to fit the length of @var{VALUE}. If there are
   6890      1.1  mrg less than @var{POS} arguments specified at the command line, @var{VALUE}
   6891      1.1  mrg will be filled with blanks. If @math{@var{POS} = 0}, @var{VALUE} is set
   6892      1.1  mrg to the name of the program (on systems that support this feature).
   6893      1.1  mrg 
   6894      1.1  mrg @item @emph{Example}:
   6895      1.1  mrg @smallexample
   6896      1.1  mrg PROGRAM test_getarg
   6897      1.1  mrg   INTEGER :: i
   6898      1.1  mrg   CHARACTER(len=32) :: arg
   6899      1.1  mrg 
   6900      1.1  mrg   DO i = 1, iargc()
   6901      1.1  mrg     CALL getarg(i, arg)
   6902      1.1  mrg     WRITE (*,*) arg
   6903      1.1  mrg   END DO
   6904      1.1  mrg END PROGRAM
   6905      1.1  mrg @end smallexample
   6906      1.1  mrg 
   6907      1.1  mrg @item @emph{See also}:
   6908  1.1.1.2  mrg GNU Fortran 77 compatibility function: @gol
   6909  1.1.1.2  mrg @ref{IARGC} @gol
   6910  1.1.1.2  mrg Fortran 2003 functions and subroutines: @gol
   6911  1.1.1.2  mrg @ref{GET_COMMAND}, @gol
   6912  1.1.1.2  mrg @ref{GET_COMMAND_ARGUMENT}, @gol
   6913  1.1.1.2  mrg @ref{COMMAND_ARGUMENT_COUNT}
   6914      1.1  mrg @end table
   6915      1.1  mrg 
   6916      1.1  mrg 
   6917      1.1  mrg 
   6918      1.1  mrg @node GET_COMMAND
   6919      1.1  mrg @section @code{GET_COMMAND} --- Get the entire command line
   6920      1.1  mrg @fnindex GET_COMMAND
   6921      1.1  mrg @cindex command-line arguments
   6922      1.1  mrg @cindex arguments, to program
   6923      1.1  mrg 
   6924      1.1  mrg @table @asis
   6925      1.1  mrg @item @emph{Description}:
   6926      1.1  mrg Retrieve the entire command line that was used to invoke the program.
   6927      1.1  mrg 
   6928      1.1  mrg @item @emph{Standard}:
   6929      1.1  mrg Fortran 2003 and later
   6930      1.1  mrg 
   6931      1.1  mrg @item @emph{Class}:
   6932      1.1  mrg Subroutine
   6933      1.1  mrg 
   6934      1.1  mrg @item @emph{Syntax}:
   6935      1.1  mrg @code{CALL GET_COMMAND([COMMAND, LENGTH, STATUS])}
   6936      1.1  mrg 
   6937      1.1  mrg @item @emph{Arguments}:
   6938      1.1  mrg @multitable @columnfractions .15 .70
   6939      1.1  mrg @item @var{COMMAND} @tab (Optional) shall be of type @code{CHARACTER} and
   6940      1.1  mrg of default kind.
   6941      1.1  mrg @item @var{LENGTH} @tab (Optional) Shall be of type @code{INTEGER} and of
   6942      1.1  mrg default kind.
   6943      1.1  mrg @item @var{STATUS} @tab (Optional) Shall be of type @code{INTEGER} and of
   6944      1.1  mrg default kind.
   6945      1.1  mrg @end multitable
   6946      1.1  mrg 
   6947      1.1  mrg @item @emph{Return value}:
   6948      1.1  mrg If @var{COMMAND} is present, stores the entire command line that was used
   6949      1.1  mrg to invoke the program in @var{COMMAND}. If @var{LENGTH} is present, it is
   6950      1.1  mrg assigned the length of the command line. If @var{STATUS} is present, it
   6951      1.1  mrg is assigned 0 upon success of the command, -1 if @var{COMMAND} is too
   6952      1.1  mrg short to store the command line, or a positive value in case of an error.
   6953      1.1  mrg 
   6954      1.1  mrg @item @emph{Example}:
   6955      1.1  mrg @smallexample
   6956      1.1  mrg PROGRAM test_get_command
   6957      1.1  mrg   CHARACTER(len=255) :: cmd
   6958      1.1  mrg   CALL get_command(cmd)
   6959      1.1  mrg   WRITE (*,*) TRIM(cmd)
   6960      1.1  mrg END PROGRAM
   6961      1.1  mrg @end smallexample
   6962      1.1  mrg 
   6963      1.1  mrg @item @emph{See also}:
   6964  1.1.1.2  mrg @ref{GET_COMMAND_ARGUMENT}, @gol
   6965  1.1.1.2  mrg @ref{COMMAND_ARGUMENT_COUNT}
   6966      1.1  mrg @end table
   6967      1.1  mrg 
   6968      1.1  mrg 
   6969      1.1  mrg 
   6970      1.1  mrg @node GET_COMMAND_ARGUMENT
   6971      1.1  mrg @section @code{GET_COMMAND_ARGUMENT} --- Get command line arguments
   6972      1.1  mrg @fnindex GET_COMMAND_ARGUMENT
   6973      1.1  mrg @cindex command-line arguments
   6974      1.1  mrg @cindex arguments, to program
   6975      1.1  mrg 
   6976      1.1  mrg @table @asis
   6977      1.1  mrg @item @emph{Description}:
   6978      1.1  mrg Retrieve the @var{NUMBER}-th argument that was passed on the
   6979      1.1  mrg command line when the containing program was invoked.
   6980      1.1  mrg 
   6981      1.1  mrg @item @emph{Standard}:
   6982      1.1  mrg Fortran 2003 and later
   6983      1.1  mrg 
   6984      1.1  mrg @item @emph{Class}:
   6985      1.1  mrg Subroutine
   6986      1.1  mrg 
   6987      1.1  mrg @item @emph{Syntax}:
   6988      1.1  mrg @code{CALL GET_COMMAND_ARGUMENT(NUMBER [, VALUE, LENGTH, STATUS])}
   6989      1.1  mrg 
   6990      1.1  mrg @item @emph{Arguments}:
   6991      1.1  mrg @multitable @columnfractions .15 .70
   6992      1.1  mrg @item @var{NUMBER} @tab Shall be a scalar of type @code{INTEGER} and of
   6993      1.1  mrg default kind, @math{@var{NUMBER} \geq 0}
   6994      1.1  mrg @item @var{VALUE}  @tab (Optional) Shall be a scalar of type @code{CHARACTER}
   6995      1.1  mrg and of default kind.
   6996      1.1  mrg @item @var{LENGTH} @tab (Optional) Shall be a scalar of type @code{INTEGER}
   6997      1.1  mrg and of default kind.
   6998      1.1  mrg @item @var{STATUS} @tab (Optional) Shall be a scalar of type @code{INTEGER}
   6999      1.1  mrg and of default kind.
   7000      1.1  mrg @end multitable
   7001      1.1  mrg 
   7002      1.1  mrg @item @emph{Return value}:
   7003      1.1  mrg After @code{GET_COMMAND_ARGUMENT} returns, the @var{VALUE} argument holds the 
   7004      1.1  mrg @var{NUMBER}-th command line argument. If @var{VALUE} cannot hold the argument, it is 
   7005      1.1  mrg truncated to fit the length of @var{VALUE}. If there are less than @var{NUMBER}
   7006      1.1  mrg arguments specified at the command line, @var{VALUE} will be filled with blanks. 
   7007      1.1  mrg If @math{@var{NUMBER} = 0}, @var{VALUE} is set to the name of the program (on
   7008      1.1  mrg systems that support this feature). The @var{LENGTH} argument contains the
   7009      1.1  mrg length of the @var{NUMBER}-th command line argument. If the argument retrieval
   7010      1.1  mrg fails, @var{STATUS} is a positive number; if @var{VALUE} contains a truncated
   7011      1.1  mrg command line argument, @var{STATUS} is -1; and otherwise the @var{STATUS} is
   7012      1.1  mrg zero.
   7013      1.1  mrg 
   7014      1.1  mrg @item @emph{Example}:
   7015      1.1  mrg @smallexample
   7016      1.1  mrg PROGRAM test_get_command_argument
   7017      1.1  mrg   INTEGER :: i
   7018      1.1  mrg   CHARACTER(len=32) :: arg
   7019      1.1  mrg 
   7020      1.1  mrg   i = 0
   7021      1.1  mrg   DO
   7022      1.1  mrg     CALL get_command_argument(i, arg)
   7023      1.1  mrg     IF (LEN_TRIM(arg) == 0) EXIT
   7024      1.1  mrg 
   7025      1.1  mrg     WRITE (*,*) TRIM(arg)
   7026      1.1  mrg     i = i+1
   7027      1.1  mrg   END DO
   7028      1.1  mrg END PROGRAM
   7029      1.1  mrg @end smallexample
   7030      1.1  mrg 
   7031      1.1  mrg @item @emph{See also}:
   7032  1.1.1.2  mrg @ref{GET_COMMAND}, @gol
   7033  1.1.1.2  mrg @ref{COMMAND_ARGUMENT_COUNT}
   7034      1.1  mrg @end table
   7035      1.1  mrg 
   7036      1.1  mrg 
   7037      1.1  mrg 
   7038      1.1  mrg @node GETCWD
   7039      1.1  mrg @section @code{GETCWD} --- Get current working directory
   7040      1.1  mrg @fnindex GETCWD
   7041      1.1  mrg @cindex system, working directory
   7042      1.1  mrg 
   7043      1.1  mrg @table @asis
   7044      1.1  mrg @item @emph{Description}:
   7045      1.1  mrg Get current working directory.
   7046      1.1  mrg 
   7047      1.1  mrg This intrinsic is provided in both subroutine and function forms; however,
   7048      1.1  mrg only one form can be used in any given program unit.
   7049      1.1  mrg 
   7050      1.1  mrg @item @emph{Standard}:
   7051      1.1  mrg GNU extension
   7052      1.1  mrg 
   7053      1.1  mrg @item @emph{Class}:
   7054      1.1  mrg Subroutine, function
   7055      1.1  mrg 
   7056      1.1  mrg @item @emph{Syntax}:
   7057      1.1  mrg @multitable @columnfractions .80
   7058      1.1  mrg @item @code{CALL GETCWD(C [, STATUS])}
   7059      1.1  mrg @item @code{STATUS = GETCWD(C)}
   7060      1.1  mrg @end multitable
   7061      1.1  mrg 
   7062      1.1  mrg @item @emph{Arguments}:
   7063      1.1  mrg @multitable @columnfractions .15 .70
   7064      1.1  mrg @item @var{C} @tab The type shall be @code{CHARACTER} and of default kind.
   7065      1.1  mrg @item @var{STATUS} @tab (Optional) status flag. Returns 0 on success, 
   7066      1.1  mrg a system specific and nonzero error code otherwise.
   7067      1.1  mrg @end multitable
   7068      1.1  mrg 
   7069      1.1  mrg @item @emph{Example}:
   7070      1.1  mrg @smallexample
   7071      1.1  mrg PROGRAM test_getcwd
   7072      1.1  mrg   CHARACTER(len=255) :: cwd
   7073      1.1  mrg   CALL getcwd(cwd)
   7074      1.1  mrg   WRITE(*,*) TRIM(cwd)
   7075      1.1  mrg END PROGRAM
   7076      1.1  mrg @end smallexample
   7077      1.1  mrg 
   7078      1.1  mrg @item @emph{See also}:
   7079      1.1  mrg @ref{CHDIR}
   7080      1.1  mrg @end table
   7081      1.1  mrg 
   7082      1.1  mrg 
   7083      1.1  mrg 
   7084      1.1  mrg @node GETENV
   7085      1.1  mrg @section @code{GETENV} --- Get an environmental variable
   7086      1.1  mrg @fnindex GETENV
   7087      1.1  mrg @cindex environment variable
   7088      1.1  mrg 
   7089      1.1  mrg @table @asis
   7090      1.1  mrg @item @emph{Description}:
   7091      1.1  mrg Get the @var{VALUE} of the environmental variable @var{NAME}.
   7092      1.1  mrg 
   7093      1.1  mrg This intrinsic routine is provided for backwards compatibility with
   7094      1.1  mrg GNU Fortran 77.  In new code, programmers should consider the use of
   7095      1.1  mrg the @ref{GET_ENVIRONMENT_VARIABLE} intrinsic defined by the Fortran
   7096      1.1  mrg 2003 standard.
   7097      1.1  mrg 
   7098      1.1  mrg Note that @code{GETENV} need not be thread-safe. It is the
   7099      1.1  mrg responsibility of the user to ensure that the environment is not being
   7100      1.1  mrg updated concurrently with a call to the @code{GETENV} intrinsic.
   7101      1.1  mrg 
   7102      1.1  mrg @item @emph{Standard}:
   7103      1.1  mrg GNU extension
   7104      1.1  mrg 
   7105      1.1  mrg @item @emph{Class}:
   7106      1.1  mrg Subroutine
   7107      1.1  mrg 
   7108      1.1  mrg @item @emph{Syntax}:
   7109      1.1  mrg @code{CALL GETENV(NAME, VALUE)}
   7110      1.1  mrg 
   7111      1.1  mrg @item @emph{Arguments}:
   7112      1.1  mrg @multitable @columnfractions .15 .70
   7113      1.1  mrg @item @var{NAME}  @tab Shall be of type @code{CHARACTER} and of default kind.
   7114      1.1  mrg @item @var{VALUE} @tab Shall be of type @code{CHARACTER} and of default kind.
   7115      1.1  mrg @end multitable
   7116      1.1  mrg 
   7117      1.1  mrg @item @emph{Return value}:
   7118      1.1  mrg Stores the value of @var{NAME} in @var{VALUE}. If @var{VALUE} is 
   7119      1.1  mrg not large enough to hold the data, it is truncated. If @var{NAME}
   7120      1.1  mrg is not set, @var{VALUE} will be filled with blanks.
   7121      1.1  mrg 
   7122      1.1  mrg @item @emph{Example}:
   7123      1.1  mrg @smallexample
   7124      1.1  mrg PROGRAM test_getenv
   7125      1.1  mrg   CHARACTER(len=255) :: homedir
   7126      1.1  mrg   CALL getenv("HOME", homedir)
   7127      1.1  mrg   WRITE (*,*) TRIM(homedir)
   7128      1.1  mrg END PROGRAM
   7129      1.1  mrg @end smallexample
   7130      1.1  mrg 
   7131      1.1  mrg @item @emph{See also}:
   7132      1.1  mrg @ref{GET_ENVIRONMENT_VARIABLE}
   7133      1.1  mrg @end table
   7134      1.1  mrg 
   7135      1.1  mrg 
   7136      1.1  mrg 
   7137      1.1  mrg @node GET_ENVIRONMENT_VARIABLE
   7138      1.1  mrg @section @code{GET_ENVIRONMENT_VARIABLE} --- Get an environmental variable
   7139      1.1  mrg @fnindex GET_ENVIRONMENT_VARIABLE
   7140      1.1  mrg @cindex environment variable
   7141      1.1  mrg 
   7142      1.1  mrg @table @asis
   7143      1.1  mrg @item @emph{Description}:
   7144      1.1  mrg Get the @var{VALUE} of the environmental variable @var{NAME}.
   7145      1.1  mrg 
   7146      1.1  mrg Note that @code{GET_ENVIRONMENT_VARIABLE} need not be thread-safe. It
   7147      1.1  mrg is the responsibility of the user to ensure that the environment is
   7148      1.1  mrg not being updated concurrently with a call to the
   7149      1.1  mrg @code{GET_ENVIRONMENT_VARIABLE} intrinsic.
   7150      1.1  mrg 
   7151      1.1  mrg @item @emph{Standard}:
   7152      1.1  mrg Fortran 2003 and later
   7153      1.1  mrg 
   7154      1.1  mrg @item @emph{Class}:
   7155      1.1  mrg Subroutine
   7156      1.1  mrg 
   7157      1.1  mrg @item @emph{Syntax}:
   7158      1.1  mrg @code{CALL GET_ENVIRONMENT_VARIABLE(NAME[, VALUE, LENGTH, STATUS, TRIM_NAME)}
   7159      1.1  mrg 
   7160      1.1  mrg @item @emph{Arguments}:
   7161      1.1  mrg @multitable @columnfractions .15 .70
   7162      1.1  mrg @item @var{NAME}      @tab Shall be a scalar of type @code{CHARACTER}
   7163      1.1  mrg and of default kind.
   7164      1.1  mrg @item @var{VALUE}     @tab (Optional) Shall be a scalar of type @code{CHARACTER}
   7165      1.1  mrg and of default kind.
   7166      1.1  mrg @item @var{LENGTH}    @tab (Optional) Shall be a scalar of type @code{INTEGER}
   7167      1.1  mrg and of default kind.
   7168      1.1  mrg @item @var{STATUS}    @tab (Optional) Shall be a scalar of type @code{INTEGER}
   7169      1.1  mrg and of default kind.
   7170      1.1  mrg @item @var{TRIM_NAME} @tab (Optional) Shall be a scalar of type @code{LOGICAL}
   7171      1.1  mrg and of default kind.
   7172      1.1  mrg @end multitable
   7173      1.1  mrg 
   7174      1.1  mrg @item @emph{Return value}:
   7175      1.1  mrg Stores the value of @var{NAME} in @var{VALUE}. If @var{VALUE} is 
   7176      1.1  mrg not large enough to hold the data, it is truncated. If @var{NAME}
   7177      1.1  mrg is not set, @var{VALUE} will be filled with blanks. Argument @var{LENGTH}
   7178      1.1  mrg contains the length needed for storing the environment variable @var{NAME}
   7179      1.1  mrg or zero if it is not present. @var{STATUS} is -1 if @var{VALUE} is present
   7180      1.1  mrg but too short for the environment variable; it is 1 if the environment
   7181      1.1  mrg variable does not exist and 2 if the processor does not support environment
   7182      1.1  mrg variables; in all other cases @var{STATUS} is zero. If @var{TRIM_NAME} is
   7183      1.1  mrg present with the value @code{.FALSE.}, the trailing blanks in @var{NAME}
   7184      1.1  mrg are significant; otherwise they are not part of the environment variable
   7185      1.1  mrg name.
   7186      1.1  mrg 
   7187      1.1  mrg @item @emph{Example}:
   7188      1.1  mrg @smallexample
   7189      1.1  mrg PROGRAM test_getenv
   7190      1.1  mrg   CHARACTER(len=255) :: homedir
   7191      1.1  mrg   CALL get_environment_variable("HOME", homedir)
   7192      1.1  mrg   WRITE (*,*) TRIM(homedir)
   7193      1.1  mrg END PROGRAM
   7194      1.1  mrg @end smallexample
   7195      1.1  mrg @end table
   7196      1.1  mrg 
   7197      1.1  mrg 
   7198      1.1  mrg 
   7199      1.1  mrg @node GETGID
   7200      1.1  mrg @section @code{GETGID} --- Group ID function
   7201      1.1  mrg @fnindex GETGID
   7202      1.1  mrg @cindex system, group ID
   7203      1.1  mrg 
   7204      1.1  mrg @table @asis
   7205      1.1  mrg @item @emph{Description}:
   7206      1.1  mrg Returns the numerical group ID of the current process.
   7207      1.1  mrg 
   7208      1.1  mrg @item @emph{Standard}:
   7209      1.1  mrg GNU extension
   7210      1.1  mrg 
   7211      1.1  mrg @item @emph{Class}:
   7212      1.1  mrg Function
   7213      1.1  mrg 
   7214      1.1  mrg @item @emph{Syntax}:
   7215      1.1  mrg @code{RESULT = GETGID()}
   7216      1.1  mrg 
   7217      1.1  mrg @item @emph{Return value}:
   7218      1.1  mrg The return value of @code{GETGID} is an @code{INTEGER} of the default
   7219      1.1  mrg kind.
   7220      1.1  mrg 
   7221      1.1  mrg 
   7222      1.1  mrg @item @emph{Example}:
   7223      1.1  mrg See @code{GETPID} for an example.
   7224      1.1  mrg 
   7225      1.1  mrg @item @emph{See also}:
   7226  1.1.1.2  mrg @ref{GETPID}, @gol
   7227  1.1.1.2  mrg @ref{GETUID}
   7228      1.1  mrg @end table
   7229      1.1  mrg 
   7230      1.1  mrg 
   7231      1.1  mrg 
   7232      1.1  mrg @node GETLOG
   7233      1.1  mrg @section @code{GETLOG} --- Get login name
   7234      1.1  mrg @fnindex GETLOG
   7235      1.1  mrg @cindex system, login name
   7236      1.1  mrg @cindex login name
   7237      1.1  mrg 
   7238      1.1  mrg @table @asis
   7239      1.1  mrg @item @emph{Description}:
   7240      1.1  mrg Gets the username under which the program is running.
   7241      1.1  mrg 
   7242      1.1  mrg @item @emph{Standard}:
   7243      1.1  mrg GNU extension
   7244      1.1  mrg 
   7245      1.1  mrg @item @emph{Class}:
   7246      1.1  mrg Subroutine
   7247      1.1  mrg 
   7248      1.1  mrg @item @emph{Syntax}:
   7249      1.1  mrg @code{CALL GETLOG(C)}
   7250      1.1  mrg 
   7251      1.1  mrg @item @emph{Arguments}:
   7252      1.1  mrg @multitable @columnfractions .15 .70
   7253      1.1  mrg @item @var{C} @tab Shall be of type @code{CHARACTER} and of default kind.
   7254      1.1  mrg @end multitable
   7255      1.1  mrg 
   7256      1.1  mrg @item @emph{Return value}:
   7257  1.1.1.3  mrg Stores the current user name in @var{C}.  (On systems where POSIX
   7258      1.1  mrg functions @code{geteuid} and @code{getpwuid} are not available, and 
   7259      1.1  mrg the @code{getlogin} function is not implemented either, this will
   7260      1.1  mrg return a blank string.)
   7261      1.1  mrg 
   7262      1.1  mrg @item @emph{Example}:
   7263      1.1  mrg @smallexample
   7264      1.1  mrg PROGRAM TEST_GETLOG
   7265      1.1  mrg   CHARACTER(32) :: login
   7266      1.1  mrg   CALL GETLOG(login)
   7267      1.1  mrg   WRITE(*,*) login
   7268      1.1  mrg END PROGRAM
   7269      1.1  mrg @end smallexample
   7270      1.1  mrg 
   7271      1.1  mrg @item @emph{See also}:
   7272      1.1  mrg @ref{GETUID}
   7273      1.1  mrg @end table
   7274      1.1  mrg 
   7275      1.1  mrg 
   7276      1.1  mrg 
   7277      1.1  mrg @node GETPID
   7278      1.1  mrg @section @code{GETPID} --- Process ID function
   7279      1.1  mrg @fnindex GETPID
   7280      1.1  mrg @cindex system, process ID
   7281      1.1  mrg @cindex process ID
   7282      1.1  mrg 
   7283      1.1  mrg @table @asis
   7284      1.1  mrg @item @emph{Description}:
   7285      1.1  mrg Returns the numerical process identifier of the current process.
   7286      1.1  mrg 
   7287      1.1  mrg @item @emph{Standard}:
   7288      1.1  mrg GNU extension
   7289      1.1  mrg 
   7290      1.1  mrg @item @emph{Class}:
   7291      1.1  mrg Function
   7292      1.1  mrg 
   7293      1.1  mrg @item @emph{Syntax}:
   7294      1.1  mrg @code{RESULT = GETPID()}
   7295      1.1  mrg 
   7296      1.1  mrg @item @emph{Return value}:
   7297      1.1  mrg The return value of @code{GETPID} is an @code{INTEGER} of the default
   7298      1.1  mrg kind.
   7299      1.1  mrg 
   7300      1.1  mrg 
   7301      1.1  mrg @item @emph{Example}:
   7302      1.1  mrg @smallexample
   7303      1.1  mrg program info
   7304      1.1  mrg   print *, "The current process ID is ", getpid()
   7305      1.1  mrg   print *, "Your numerical user ID is ", getuid()
   7306      1.1  mrg   print *, "Your numerical group ID is ", getgid()
   7307      1.1  mrg end program info
   7308      1.1  mrg @end smallexample
   7309      1.1  mrg 
   7310      1.1  mrg @item @emph{See also}:
   7311  1.1.1.2  mrg @ref{GETGID}, @gol
   7312  1.1.1.2  mrg @ref{GETUID}
   7313      1.1  mrg @end table
   7314      1.1  mrg 
   7315      1.1  mrg 
   7316      1.1  mrg 
   7317      1.1  mrg @node GETUID
   7318      1.1  mrg @section @code{GETUID} --- User ID function
   7319      1.1  mrg @fnindex GETUID
   7320      1.1  mrg @cindex system, user ID
   7321      1.1  mrg @cindex user id
   7322      1.1  mrg 
   7323      1.1  mrg @table @asis
   7324      1.1  mrg @item @emph{Description}:
   7325      1.1  mrg Returns the numerical user ID of the current process.
   7326      1.1  mrg 
   7327      1.1  mrg @item @emph{Standard}:
   7328      1.1  mrg GNU extension
   7329      1.1  mrg 
   7330      1.1  mrg @item @emph{Class}:
   7331      1.1  mrg Function
   7332      1.1  mrg 
   7333      1.1  mrg @item @emph{Syntax}:
   7334      1.1  mrg @code{RESULT = GETUID()}
   7335      1.1  mrg 
   7336      1.1  mrg @item @emph{Return value}:
   7337      1.1  mrg The return value of @code{GETUID} is an @code{INTEGER} of the default
   7338      1.1  mrg kind.
   7339      1.1  mrg 
   7340      1.1  mrg 
   7341      1.1  mrg @item @emph{Example}:
   7342      1.1  mrg See @code{GETPID} for an example.
   7343      1.1  mrg 
   7344      1.1  mrg @item @emph{See also}:
   7345  1.1.1.2  mrg @ref{GETPID}, @gol
   7346  1.1.1.2  mrg @ref{GETLOG}
   7347      1.1  mrg @end table
   7348      1.1  mrg 
   7349      1.1  mrg 
   7350      1.1  mrg 
   7351      1.1  mrg @node GMTIME
   7352      1.1  mrg @section @code{GMTIME} --- Convert time to GMT info
   7353      1.1  mrg @fnindex GMTIME
   7354      1.1  mrg @cindex time, conversion to GMT info
   7355      1.1  mrg 
   7356      1.1  mrg @table @asis
   7357      1.1  mrg @item @emph{Description}:
   7358      1.1  mrg Given a system time value @var{TIME} (as provided by the @ref{TIME}
   7359      1.1  mrg intrinsic), fills @var{VALUES} with values extracted from it appropriate
   7360      1.1  mrg to the UTC time zone (Universal Coordinated Time, also known in some
   7361      1.1  mrg countries as GMT, Greenwich Mean Time), using @code{gmtime(3)}.
   7362      1.1  mrg 
   7363      1.1  mrg This intrinsic routine is provided for backwards compatibility with 
   7364      1.1  mrg GNU Fortran 77.  In new code, programmers should consider the use of 
   7365      1.1  mrg the @ref{DATE_AND_TIME} intrinsic defined by the Fortran 95
   7366      1.1  mrg standard.
   7367      1.1  mrg 
   7368      1.1  mrg @item @emph{Standard}:
   7369      1.1  mrg GNU extension
   7370      1.1  mrg 
   7371      1.1  mrg @item @emph{Class}:
   7372      1.1  mrg Subroutine
   7373      1.1  mrg 
   7374      1.1  mrg @item @emph{Syntax}:
   7375      1.1  mrg @code{CALL GMTIME(TIME, VALUES)}
   7376      1.1  mrg 
   7377      1.1  mrg @item @emph{Arguments}:
   7378      1.1  mrg @multitable @columnfractions .15 .70
   7379      1.1  mrg @item @var{TIME}   @tab An @code{INTEGER} scalar expression
   7380      1.1  mrg corresponding to a system time, with @code{INTENT(IN)}.
   7381      1.1  mrg @item @var{VALUES} @tab A default @code{INTEGER} array with 9 elements,
   7382      1.1  mrg with @code{INTENT(OUT)}.
   7383      1.1  mrg @end multitable
   7384      1.1  mrg 
   7385      1.1  mrg @item @emph{Return value}:
   7386      1.1  mrg The elements of @var{VALUES} are assigned as follows:
   7387      1.1  mrg @enumerate
   7388      1.1  mrg @item Seconds after the minute, range 0--59 or 0--61 to allow for leap
   7389      1.1  mrg seconds
   7390      1.1  mrg @item Minutes after the hour, range 0--59
   7391      1.1  mrg @item Hours past midnight, range 0--23
   7392      1.1  mrg @item Day of month, range 1--31
   7393      1.1  mrg @item Number of months since January, range 0--11
   7394      1.1  mrg @item Years since 1900
   7395      1.1  mrg @item Number of days since Sunday, range 0--6
   7396      1.1  mrg @item Days since January 1, range 0--365
   7397      1.1  mrg @item Daylight savings indicator: positive if daylight savings is in
   7398      1.1  mrg effect, zero if not, and negative if the information is not available.
   7399      1.1  mrg @end enumerate
   7400      1.1  mrg 
   7401      1.1  mrg @item @emph{See also}:
   7402  1.1.1.2  mrg @ref{DATE_AND_TIME}, @gol
   7403  1.1.1.2  mrg @ref{CTIME}, @gol
   7404  1.1.1.2  mrg @ref{LTIME}, @gol
   7405  1.1.1.2  mrg @ref{TIME}, @gol
   7406  1.1.1.2  mrg @ref{TIME8}
   7407      1.1  mrg @end table
   7408      1.1  mrg 
   7409      1.1  mrg 
   7410      1.1  mrg 
   7411      1.1  mrg @node HOSTNM
   7412      1.1  mrg @section @code{HOSTNM} --- Get system host name
   7413      1.1  mrg @fnindex HOSTNM
   7414      1.1  mrg @cindex system, host name
   7415      1.1  mrg 
   7416      1.1  mrg @table @asis
   7417      1.1  mrg @item @emph{Description}:
   7418      1.1  mrg Retrieves the host name of the system on which the program is running.
   7419      1.1  mrg 
   7420      1.1  mrg This intrinsic is provided in both subroutine and function forms; however,
   7421      1.1  mrg only one form can be used in any given program unit.
   7422      1.1  mrg 
   7423      1.1  mrg @item @emph{Standard}:
   7424      1.1  mrg GNU extension
   7425      1.1  mrg 
   7426      1.1  mrg @item @emph{Class}:
   7427      1.1  mrg Subroutine, function
   7428      1.1  mrg 
   7429      1.1  mrg @item @emph{Syntax}:
   7430      1.1  mrg @multitable @columnfractions .80
   7431      1.1  mrg @item @code{CALL HOSTNM(C [, STATUS])}
   7432      1.1  mrg @item @code{STATUS = HOSTNM(NAME)}
   7433      1.1  mrg @end multitable
   7434      1.1  mrg 
   7435      1.1  mrg @item @emph{Arguments}:
   7436      1.1  mrg @multitable @columnfractions .15 .70
   7437      1.1  mrg @item @var{C}    @tab Shall of type @code{CHARACTER} and of default kind.
   7438      1.1  mrg @item @var{STATUS}  @tab (Optional) status flag of type @code{INTEGER}.
   7439      1.1  mrg Returns 0 on success, or a system specific error code otherwise.
   7440      1.1  mrg @end multitable
   7441      1.1  mrg 
   7442      1.1  mrg @item @emph{Return value}:
   7443      1.1  mrg In either syntax, @var{NAME} is set to the current hostname if it can
   7444      1.1  mrg be obtained, or to a blank string otherwise.
   7445      1.1  mrg 
   7446      1.1  mrg @end table
   7447      1.1  mrg 
   7448      1.1  mrg 
   7449      1.1  mrg 
   7450      1.1  mrg @node HUGE
   7451      1.1  mrg @section @code{HUGE} --- Largest number of a kind
   7452      1.1  mrg @fnindex HUGE
   7453      1.1  mrg @cindex limits, largest number
   7454      1.1  mrg @cindex model representation, largest number
   7455      1.1  mrg 
   7456      1.1  mrg @table @asis
   7457      1.1  mrg @item @emph{Description}:
   7458      1.1  mrg @code{HUGE(X)} returns the largest number that is not an infinity in
   7459      1.1  mrg the model of the type of @code{X}.
   7460      1.1  mrg 
   7461      1.1  mrg @item @emph{Standard}:
   7462  1.1.1.2  mrg Fortran 90 and later
   7463      1.1  mrg 
   7464      1.1  mrg @item @emph{Class}:
   7465      1.1  mrg Inquiry function
   7466      1.1  mrg 
   7467      1.1  mrg @item @emph{Syntax}:
   7468      1.1  mrg @code{RESULT = HUGE(X)}
   7469      1.1  mrg 
   7470      1.1  mrg @item @emph{Arguments}:
   7471      1.1  mrg @multitable @columnfractions .15 .70
   7472      1.1  mrg @item @var{X} @tab Shall be of type @code{REAL} or @code{INTEGER}.
   7473      1.1  mrg @end multitable
   7474      1.1  mrg 
   7475      1.1  mrg @item @emph{Return value}:
   7476      1.1  mrg The return value is of the same type and kind as @var{X}
   7477      1.1  mrg 
   7478      1.1  mrg @item @emph{Example}:
   7479      1.1  mrg @smallexample
   7480      1.1  mrg program test_huge_tiny
   7481      1.1  mrg   print *, huge(0), huge(0.0), huge(0.0d0)
   7482      1.1  mrg   print *, tiny(0.0), tiny(0.0d0)
   7483      1.1  mrg end program test_huge_tiny
   7484      1.1  mrg @end smallexample
   7485      1.1  mrg @end table
   7486      1.1  mrg 
   7487      1.1  mrg 
   7488      1.1  mrg 
   7489      1.1  mrg @node HYPOT
   7490      1.1  mrg @section @code{HYPOT} --- Euclidean distance function
   7491      1.1  mrg @fnindex HYPOT
   7492      1.1  mrg @cindex Euclidean distance
   7493      1.1  mrg 
   7494      1.1  mrg @table @asis
   7495      1.1  mrg @item @emph{Description}:
   7496      1.1  mrg @code{HYPOT(X,Y)} is the Euclidean distance function. It is equal to
   7497      1.1  mrg @math{\sqrt{X^2 + Y^2}}, without undue underflow or overflow.
   7498      1.1  mrg 
   7499      1.1  mrg @item @emph{Standard}:
   7500      1.1  mrg Fortran 2008 and later
   7501      1.1  mrg 
   7502      1.1  mrg @item @emph{Class}:
   7503      1.1  mrg Elemental function
   7504      1.1  mrg 
   7505      1.1  mrg @item @emph{Syntax}:
   7506      1.1  mrg @code{RESULT = HYPOT(X, Y)}
   7507      1.1  mrg 
   7508      1.1  mrg @item @emph{Arguments}:
   7509      1.1  mrg @multitable @columnfractions .15 .70
   7510      1.1  mrg @item @var{X} @tab The type shall be @code{REAL}.
   7511      1.1  mrg @item @var{Y} @tab The type and kind type parameter shall be the same as
   7512      1.1  mrg @var{X}.
   7513      1.1  mrg @end multitable
   7514      1.1  mrg 
   7515      1.1  mrg @item @emph{Return value}:
   7516      1.1  mrg The return value has the same type and kind type parameter as @var{X}.
   7517      1.1  mrg 
   7518      1.1  mrg @item @emph{Example}:
   7519      1.1  mrg @smallexample
   7520      1.1  mrg program test_hypot
   7521      1.1  mrg   real(4) :: x = 1.e0_4, y = 0.5e0_4
   7522      1.1  mrg   x = hypot(x,y)
   7523      1.1  mrg end program test_hypot
   7524      1.1  mrg @end smallexample
   7525      1.1  mrg @end table
   7526      1.1  mrg 
   7527      1.1  mrg 
   7528      1.1  mrg 
   7529      1.1  mrg @node IACHAR
   7530      1.1  mrg @section @code{IACHAR} --- Code in @acronym{ASCII} collating sequence 
   7531      1.1  mrg @fnindex IACHAR
   7532      1.1  mrg @cindex @acronym{ASCII} collating sequence
   7533      1.1  mrg @cindex collating sequence, @acronym{ASCII}
   7534      1.1  mrg @cindex conversion, to integer
   7535      1.1  mrg 
   7536      1.1  mrg @table @asis
   7537      1.1  mrg @item @emph{Description}:
   7538      1.1  mrg @code{IACHAR(C)} returns the code for the @acronym{ASCII} character
   7539      1.1  mrg in the first character position of @code{C}.
   7540      1.1  mrg 
   7541      1.1  mrg @item @emph{Standard}:
   7542      1.1  mrg Fortran 95 and later, with @var{KIND} argument Fortran 2003 and later
   7543      1.1  mrg 
   7544      1.1  mrg @item @emph{Class}:
   7545      1.1  mrg Elemental function
   7546      1.1  mrg 
   7547      1.1  mrg @item @emph{Syntax}:
   7548      1.1  mrg @code{RESULT = IACHAR(C [, KIND])}
   7549      1.1  mrg 
   7550      1.1  mrg @item @emph{Arguments}:
   7551      1.1  mrg @multitable @columnfractions .15 .70
   7552      1.1  mrg @item @var{C}    @tab Shall be a scalar @code{CHARACTER}, with @code{INTENT(IN)}
   7553      1.1  mrg @item @var{KIND} @tab (Optional) An @code{INTEGER} initialization
   7554      1.1  mrg expression indicating the kind parameter of the result.
   7555      1.1  mrg @end multitable
   7556      1.1  mrg 
   7557      1.1  mrg @item @emph{Return value}:
   7558      1.1  mrg The return value is of type @code{INTEGER} and of kind @var{KIND}. If
   7559      1.1  mrg @var{KIND} is absent, the return value is of default integer kind.
   7560      1.1  mrg 
   7561      1.1  mrg @item @emph{Example}:
   7562      1.1  mrg @smallexample
   7563      1.1  mrg program test_iachar
   7564      1.1  mrg   integer i
   7565      1.1  mrg   i = iachar(' ')
   7566      1.1  mrg end program test_iachar
   7567      1.1  mrg @end smallexample
   7568      1.1  mrg 
   7569      1.1  mrg @item @emph{Note}:
   7570      1.1  mrg See @ref{ICHAR} for a discussion of converting between numerical values
   7571      1.1  mrg and formatted string representations.
   7572      1.1  mrg 
   7573      1.1  mrg @item @emph{See also}:
   7574  1.1.1.2  mrg @ref{ACHAR}, @gol
   7575  1.1.1.2  mrg @ref{CHAR}, @gol
   7576  1.1.1.2  mrg @ref{ICHAR}
   7577      1.1  mrg @end table
   7578      1.1  mrg 
   7579      1.1  mrg 
   7580      1.1  mrg 
   7581      1.1  mrg @node IALL
   7582      1.1  mrg @section @code{IALL} --- Bitwise AND of array elements
   7583      1.1  mrg @fnindex IALL
   7584      1.1  mrg @cindex array, AND
   7585      1.1  mrg @cindex bits, AND of array elements
   7586      1.1  mrg 
   7587      1.1  mrg @table @asis
   7588      1.1  mrg @item @emph{Description}:
   7589      1.1  mrg Reduces with bitwise AND the elements of @var{ARRAY} along dimension @var{DIM}
   7590      1.1  mrg if the corresponding element in @var{MASK} is @code{TRUE}.
   7591      1.1  mrg 
   7592      1.1  mrg @item @emph{Standard}:
   7593      1.1  mrg Fortran 2008 and later
   7594      1.1  mrg 
   7595      1.1  mrg @item @emph{Class}:
   7596      1.1  mrg Transformational function
   7597      1.1  mrg 
   7598      1.1  mrg @item @emph{Syntax}:
   7599      1.1  mrg @multitable @columnfractions .80
   7600      1.1  mrg @item @code{RESULT = IALL(ARRAY[, MASK])}
   7601      1.1  mrg @item @code{RESULT = IALL(ARRAY, DIM[, MASK])}
   7602      1.1  mrg @end multitable
   7603      1.1  mrg 
   7604      1.1  mrg @item @emph{Arguments}:
   7605      1.1  mrg @multitable @columnfractions .15 .70
   7606      1.1  mrg @item @var{ARRAY} @tab Shall be an array of type @code{INTEGER}
   7607      1.1  mrg @item @var{DIM}   @tab (Optional) shall be a scalar of type 
   7608      1.1  mrg @code{INTEGER} with a value in the range from 1 to n, where n 
   7609      1.1  mrg equals the rank of @var{ARRAY}.
   7610      1.1  mrg @item @var{MASK}  @tab (Optional) shall be of type @code{LOGICAL} 
   7611      1.1  mrg and either be a scalar or an array of the same shape as @var{ARRAY}.
   7612      1.1  mrg @end multitable
   7613      1.1  mrg 
   7614      1.1  mrg @item @emph{Return value}:
   7615      1.1  mrg The result is of the same type as @var{ARRAY}.
   7616      1.1  mrg 
   7617      1.1  mrg If @var{DIM} is absent, a scalar with the bitwise ALL of all elements in
   7618      1.1  mrg @var{ARRAY} is returned. Otherwise, an array of rank n-1, where n equals
   7619      1.1  mrg the rank of @var{ARRAY}, and a shape similar to that of @var{ARRAY} with
   7620      1.1  mrg dimension @var{DIM} dropped is returned.
   7621      1.1  mrg 
   7622      1.1  mrg @item @emph{Example}:
   7623      1.1  mrg @smallexample
   7624      1.1  mrg PROGRAM test_iall
   7625      1.1  mrg   INTEGER(1) :: a(2)
   7626      1.1  mrg 
   7627      1.1  mrg   a(1) = b'00100100'
   7628      1.1  mrg   a(2) = b'01101010'
   7629      1.1  mrg 
   7630      1.1  mrg   ! prints 00100000
   7631      1.1  mrg   PRINT '(b8.8)', IALL(a)
   7632      1.1  mrg END PROGRAM
   7633      1.1  mrg @end smallexample
   7634      1.1  mrg 
   7635      1.1  mrg @item @emph{See also}:
   7636  1.1.1.2  mrg @ref{IANY}, @gol
   7637  1.1.1.2  mrg @ref{IPARITY}, @gol
   7638  1.1.1.2  mrg @ref{IAND}
   7639      1.1  mrg @end table
   7640      1.1  mrg 
   7641      1.1  mrg 
   7642      1.1  mrg 
   7643      1.1  mrg @node IAND
   7644      1.1  mrg @section @code{IAND} --- Bitwise logical and
   7645      1.1  mrg @fnindex IAND
   7646      1.1  mrg @fnindex BIAND
   7647      1.1  mrg @fnindex IIAND
   7648      1.1  mrg @fnindex JIAND
   7649      1.1  mrg @fnindex KIAND
   7650      1.1  mrg @cindex bitwise logical and
   7651      1.1  mrg @cindex logical and, bitwise
   7652      1.1  mrg 
   7653      1.1  mrg @table @asis
   7654      1.1  mrg @item @emph{Description}:
   7655      1.1  mrg Bitwise logical @code{AND}.
   7656      1.1  mrg 
   7657      1.1  mrg @item @emph{Standard}:
   7658  1.1.1.2  mrg Fortran 90 and later, with boz-literal-constant Fortran 2008 and later, has overloads that are GNU extensions
   7659      1.1  mrg 
   7660      1.1  mrg @item @emph{Class}:
   7661      1.1  mrg Elemental function
   7662      1.1  mrg 
   7663      1.1  mrg @item @emph{Syntax}:
   7664      1.1  mrg @code{RESULT = IAND(I, J)}
   7665      1.1  mrg 
   7666      1.1  mrg @item @emph{Arguments}:
   7667      1.1  mrg @multitable @columnfractions .15 .70
   7668      1.1  mrg @item @var{I} @tab The type shall be @code{INTEGER} or a boz-literal-constant.
   7669      1.1  mrg @item @var{J} @tab The type shall be @code{INTEGER} with the same
   7670      1.1  mrg kind type parameter as @var{I} or a boz-literal-constant.
   7671      1.1  mrg @var{I} and @var{J} shall not both be boz-literal-constants.
   7672      1.1  mrg @end multitable
   7673      1.1  mrg 
   7674      1.1  mrg @item @emph{Return value}:
   7675      1.1  mrg The return type is @code{INTEGER} with the kind type parameter of the
   7676      1.1  mrg arguments.
   7677      1.1  mrg A boz-literal-constant is converted to an @code{INTEGER} with the kind
   7678      1.1  mrg type parameter of the other argument as-if a call to @ref{INT} occurred.
   7679      1.1  mrg 
   7680      1.1  mrg @item @emph{Example}:
   7681      1.1  mrg @smallexample
   7682      1.1  mrg PROGRAM test_iand
   7683      1.1  mrg   INTEGER :: a, b
   7684      1.1  mrg   DATA a / Z'F' /, b / Z'3' /
   7685      1.1  mrg   WRITE (*,*) IAND(a, b)
   7686      1.1  mrg END PROGRAM
   7687      1.1  mrg @end smallexample
   7688      1.1  mrg 
   7689      1.1  mrg @item @emph{Specific names}:
   7690  1.1.1.3  mrg @multitable @columnfractions .20 .23 .20 .33
   7691  1.1.1.3  mrg @headitem Name            @tab Argument            @tab Return type       @tab Standard
   7692  1.1.1.2  mrg @item @code{IAND(A)}   @tab @code{INTEGER A}    @tab @code{INTEGER}    @tab Fortran 90 and later
   7693      1.1  mrg @item @code{BIAND(A)} @tab @code{INTEGER(1) A} @tab @code{INTEGER(1)} @tab GNU extension
   7694      1.1  mrg @item @code{IIAND(A)} @tab @code{INTEGER(2) A} @tab @code{INTEGER(2)} @tab GNU extension
   7695      1.1  mrg @item @code{JIAND(A)} @tab @code{INTEGER(4) A} @tab @code{INTEGER(4)} @tab GNU extension
   7696      1.1  mrg @item @code{KIAND(A)} @tab @code{INTEGER(8) A} @tab @code{INTEGER(8)} @tab GNU extension
   7697      1.1  mrg @end multitable
   7698      1.1  mrg 
   7699      1.1  mrg @item @emph{See also}:
   7700  1.1.1.2  mrg @ref{IOR}, @gol
   7701  1.1.1.2  mrg @ref{IEOR}, @gol
   7702  1.1.1.2  mrg @ref{IBITS}, @gol
   7703  1.1.1.2  mrg @ref{IBSET}, @gol
   7704  1.1.1.2  mrg @ref{IBCLR}, @gol
   7705  1.1.1.2  mrg @ref{NOT}
   7706      1.1  mrg @end table
   7707      1.1  mrg 
   7708      1.1  mrg 
   7709      1.1  mrg 
   7710      1.1  mrg @node IANY
   7711      1.1  mrg @section @code{IANY} --- Bitwise OR of array elements
   7712      1.1  mrg @fnindex IANY
   7713      1.1  mrg @cindex array, OR
   7714      1.1  mrg @cindex bits, OR of array elements
   7715      1.1  mrg 
   7716      1.1  mrg @table @asis
   7717      1.1  mrg @item @emph{Description}:
   7718      1.1  mrg Reduces with bitwise OR (inclusive or) the elements of @var{ARRAY} along
   7719      1.1  mrg dimension @var{DIM} if the corresponding element in @var{MASK} is @code{TRUE}.
   7720      1.1  mrg 
   7721      1.1  mrg @item @emph{Standard}:
   7722      1.1  mrg Fortran 2008 and later
   7723      1.1  mrg 
   7724      1.1  mrg @item @emph{Class}:
   7725      1.1  mrg Transformational function
   7726      1.1  mrg 
   7727      1.1  mrg @item @emph{Syntax}:
   7728      1.1  mrg @multitable @columnfractions .80
   7729      1.1  mrg @item @code{RESULT = IANY(ARRAY[, MASK])}
   7730      1.1  mrg @item @code{RESULT = IANY(ARRAY, DIM[, MASK])}
   7731      1.1  mrg @end multitable
   7732      1.1  mrg 
   7733      1.1  mrg @item @emph{Arguments}:
   7734      1.1  mrg @multitable @columnfractions .15 .70
   7735      1.1  mrg @item @var{ARRAY} @tab Shall be an array of type @code{INTEGER}
   7736      1.1  mrg @item @var{DIM}   @tab (Optional) shall be a scalar of type 
   7737      1.1  mrg @code{INTEGER} with a value in the range from 1 to n, where n 
   7738      1.1  mrg equals the rank of @var{ARRAY}.
   7739      1.1  mrg @item @var{MASK}  @tab (Optional) shall be of type @code{LOGICAL} 
   7740      1.1  mrg and either be a scalar or an array of the same shape as @var{ARRAY}.
   7741      1.1  mrg @end multitable
   7742      1.1  mrg 
   7743      1.1  mrg @item @emph{Return value}:
   7744      1.1  mrg The result is of the same type as @var{ARRAY}.
   7745      1.1  mrg 
   7746      1.1  mrg If @var{DIM} is absent, a scalar with the bitwise OR of all elements in
   7747      1.1  mrg @var{ARRAY} is returned. Otherwise, an array of rank n-1, where n equals
   7748      1.1  mrg the rank of @var{ARRAY}, and a shape similar to that of @var{ARRAY} with
   7749      1.1  mrg dimension @var{DIM} dropped is returned.
   7750      1.1  mrg 
   7751      1.1  mrg @item @emph{Example}:
   7752      1.1  mrg @smallexample
   7753      1.1  mrg PROGRAM test_iany
   7754      1.1  mrg   INTEGER(1) :: a(2)
   7755      1.1  mrg 
   7756      1.1  mrg   a(1) = b'00100100'
   7757      1.1  mrg   a(2) = b'01101010'
   7758      1.1  mrg 
   7759      1.1  mrg   ! prints 01101110
   7760      1.1  mrg   PRINT '(b8.8)', IANY(a)
   7761      1.1  mrg END PROGRAM
   7762      1.1  mrg @end smallexample
   7763      1.1  mrg 
   7764      1.1  mrg @item @emph{See also}:
   7765  1.1.1.2  mrg @ref{IPARITY}, @gol
   7766  1.1.1.2  mrg @ref{IALL}, @gol
   7767  1.1.1.2  mrg @ref{IOR}
   7768      1.1  mrg @end table
   7769      1.1  mrg 
   7770      1.1  mrg 
   7771      1.1  mrg 
   7772      1.1  mrg @node IARGC
   7773      1.1  mrg @section @code{IARGC} --- Get the number of command line arguments
   7774      1.1  mrg @fnindex IARGC
   7775      1.1  mrg @cindex command-line arguments
   7776      1.1  mrg @cindex command-line arguments, number of
   7777      1.1  mrg @cindex arguments, to program
   7778      1.1  mrg 
   7779      1.1  mrg @table @asis
   7780      1.1  mrg @item @emph{Description}:
   7781      1.1  mrg @code{IARGC} returns the number of arguments passed on the
   7782      1.1  mrg command line when the containing program was invoked.
   7783      1.1  mrg 
   7784      1.1  mrg This intrinsic routine is provided for backwards compatibility with 
   7785      1.1  mrg GNU Fortran 77.  In new code, programmers should consider the use of 
   7786      1.1  mrg the @ref{COMMAND_ARGUMENT_COUNT} intrinsic defined by the Fortran 2003 
   7787      1.1  mrg standard.
   7788      1.1  mrg 
   7789      1.1  mrg @item @emph{Standard}:
   7790      1.1  mrg GNU extension
   7791      1.1  mrg 
   7792      1.1  mrg @item @emph{Class}:
   7793      1.1  mrg Function
   7794      1.1  mrg 
   7795      1.1  mrg @item @emph{Syntax}:
   7796      1.1  mrg @code{RESULT = IARGC()}
   7797      1.1  mrg 
   7798      1.1  mrg @item @emph{Arguments}:
   7799  1.1.1.2  mrg None
   7800      1.1  mrg 
   7801      1.1  mrg @item @emph{Return value}:
   7802      1.1  mrg The number of command line arguments, type @code{INTEGER(4)}.
   7803      1.1  mrg 
   7804      1.1  mrg @item @emph{Example}:
   7805      1.1  mrg See @ref{GETARG}
   7806      1.1  mrg 
   7807      1.1  mrg @item @emph{See also}:
   7808  1.1.1.2  mrg GNU Fortran 77 compatibility subroutine: @gol
   7809  1.1.1.2  mrg @ref{GETARG} @gol
   7810  1.1.1.2  mrg Fortran 2003 functions and subroutines: @gol
   7811  1.1.1.2  mrg @ref{GET_COMMAND}, @gol
   7812  1.1.1.2  mrg @ref{GET_COMMAND_ARGUMENT}, @gol
   7813  1.1.1.2  mrg @ref{COMMAND_ARGUMENT_COUNT}
   7814      1.1  mrg @end table
   7815      1.1  mrg 
   7816      1.1  mrg 
   7817      1.1  mrg 
   7818      1.1  mrg @node IBCLR
   7819      1.1  mrg @section @code{IBCLR} --- Clear bit
   7820      1.1  mrg @fnindex IBCLR
   7821      1.1  mrg @fnindex BBCLR
   7822      1.1  mrg @fnindex IIBCLR
   7823      1.1  mrg @fnindex JIBCLR
   7824      1.1  mrg @fnindex KIBCLR
   7825      1.1  mrg @cindex bits, unset
   7826      1.1  mrg @cindex bits, clear
   7827      1.1  mrg 
   7828      1.1  mrg @table @asis
   7829      1.1  mrg @item @emph{Description}:
   7830      1.1  mrg @code{IBCLR} returns the value of @var{I} with the bit at position
   7831      1.1  mrg @var{POS} set to zero.
   7832      1.1  mrg 
   7833      1.1  mrg @item @emph{Standard}:
   7834  1.1.1.2  mrg Fortran 90 and later, has overloads that are GNU extensions
   7835      1.1  mrg 
   7836      1.1  mrg @item @emph{Class}:
   7837      1.1  mrg Elemental function
   7838      1.1  mrg 
   7839      1.1  mrg @item @emph{Syntax}:
   7840      1.1  mrg @code{RESULT = IBCLR(I, POS)}
   7841      1.1  mrg 
   7842      1.1  mrg @item @emph{Arguments}:
   7843      1.1  mrg @multitable @columnfractions .15 .70
   7844      1.1  mrg @item @var{I} @tab The type shall be @code{INTEGER}.
   7845      1.1  mrg @item @var{POS} @tab The type shall be @code{INTEGER}.
   7846      1.1  mrg @end multitable
   7847      1.1  mrg 
   7848      1.1  mrg @item @emph{Return value}:
   7849      1.1  mrg The return value is of type @code{INTEGER} and of the same kind as
   7850      1.1  mrg @var{I}.
   7851      1.1  mrg 
   7852      1.1  mrg @item @emph{Specific names}:
   7853  1.1.1.3  mrg @multitable @columnfractions .20 .23 .20 .33
   7854  1.1.1.3  mrg @headitem Name            @tab Argument            @tab Return type       @tab Standard
   7855  1.1.1.2  mrg @item @code{IBCLR(A)}   @tab @code{INTEGER A}    @tab @code{INTEGER}    @tab Fortran 90 and later
   7856      1.1  mrg @item @code{BBCLR(A)} @tab @code{INTEGER(1) A} @tab @code{INTEGER(1)} @tab GNU extension
   7857      1.1  mrg @item @code{IIBCLR(A)} @tab @code{INTEGER(2) A} @tab @code{INTEGER(2)} @tab GNU extension
   7858      1.1  mrg @item @code{JIBCLR(A)} @tab @code{INTEGER(4) A} @tab @code{INTEGER(4)} @tab GNU extension
   7859      1.1  mrg @item @code{KIBCLR(A)} @tab @code{INTEGER(8) A} @tab @code{INTEGER(8)} @tab GNU extension
   7860      1.1  mrg @end multitable
   7861      1.1  mrg 
   7862      1.1  mrg @item @emph{See also}:
   7863  1.1.1.2  mrg @ref{IBITS}, @gol
   7864  1.1.1.2  mrg @ref{IBSET}, @gol
   7865  1.1.1.2  mrg @ref{IAND}, @gol
   7866  1.1.1.2  mrg @ref{IOR}, @gol
   7867  1.1.1.2  mrg @ref{IEOR}, @gol
   7868  1.1.1.2  mrg @ref{MVBITS}
   7869      1.1  mrg @end table
   7870      1.1  mrg 
   7871      1.1  mrg 
   7872      1.1  mrg 
   7873      1.1  mrg @node IBITS
   7874      1.1  mrg @section @code{IBITS} --- Bit extraction
   7875      1.1  mrg @fnindex IBITS
   7876      1.1  mrg @fnindex BBITS
   7877      1.1  mrg @fnindex IIBITS
   7878      1.1  mrg @fnindex JIBITS
   7879      1.1  mrg @fnindex KIBITS
   7880      1.1  mrg @cindex bits, get
   7881      1.1  mrg @cindex bits, extract
   7882      1.1  mrg 
   7883      1.1  mrg @table @asis
   7884      1.1  mrg @item @emph{Description}:
   7885      1.1  mrg @code{IBITS} extracts a field of length @var{LEN} from @var{I},
   7886      1.1  mrg starting from bit position @var{POS} and extending left for @var{LEN}
   7887      1.1  mrg bits.  The result is right-justified and the remaining bits are
   7888      1.1  mrg zeroed.  The value of @code{POS+LEN} must be less than or equal to the
   7889      1.1  mrg value @code{BIT_SIZE(I)}.
   7890      1.1  mrg 
   7891      1.1  mrg @item @emph{Standard}:
   7892  1.1.1.2  mrg Fortran 90 and later, has overloads that are GNU extensions
   7893      1.1  mrg 
   7894      1.1  mrg @item @emph{Class}:
   7895      1.1  mrg Elemental function
   7896      1.1  mrg 
   7897      1.1  mrg @item @emph{Syntax}:
   7898      1.1  mrg @code{RESULT = IBITS(I, POS, LEN)}
   7899      1.1  mrg 
   7900      1.1  mrg @item @emph{Arguments}:
   7901      1.1  mrg @multitable @columnfractions .15 .70
   7902      1.1  mrg @item @var{I}   @tab The type shall be @code{INTEGER}.
   7903      1.1  mrg @item @var{POS} @tab The type shall be @code{INTEGER}.
   7904      1.1  mrg @item @var{LEN} @tab The type shall be @code{INTEGER}.
   7905      1.1  mrg @end multitable
   7906      1.1  mrg 
   7907      1.1  mrg @item @emph{Return value}:
   7908      1.1  mrg The return value is of type @code{INTEGER} and of the same kind as
   7909      1.1  mrg @var{I}.
   7910      1.1  mrg 
   7911      1.1  mrg @item @emph{Specific names}:
   7912  1.1.1.3  mrg @multitable @columnfractions .20 .23 .20 .33
   7913  1.1.1.3  mrg @headitem Name            @tab Argument            @tab Return type       @tab Standard
   7914  1.1.1.2  mrg @item @code{IBITS(A)}   @tab @code{INTEGER A}    @tab @code{INTEGER}    @tab Fortran 90 and later
   7915      1.1  mrg @item @code{BBITS(A)} @tab @code{INTEGER(1) A} @tab @code{INTEGER(1)} @tab GNU extension
   7916      1.1  mrg @item @code{IIBITS(A)} @tab @code{INTEGER(2) A} @tab @code{INTEGER(2)} @tab GNU extension
   7917      1.1  mrg @item @code{JIBITS(A)} @tab @code{INTEGER(4) A} @tab @code{INTEGER(4)} @tab GNU extension
   7918      1.1  mrg @item @code{KIBITS(A)} @tab @code{INTEGER(8) A} @tab @code{INTEGER(8)} @tab GNU extension
   7919      1.1  mrg @end multitable
   7920      1.1  mrg 
   7921      1.1  mrg @item @emph{See also}:
   7922  1.1.1.2  mrg @ref{BIT_SIZE}, @gol
   7923  1.1.1.2  mrg @ref{IBCLR}, @gol
   7924  1.1.1.2  mrg @ref{IBSET}, @gol
   7925  1.1.1.2  mrg @ref{IAND}, @gol
   7926  1.1.1.2  mrg @ref{IOR}, @gol
   7927  1.1.1.2  mrg @ref{IEOR}
   7928      1.1  mrg @end table
   7929      1.1  mrg 
   7930      1.1  mrg 
   7931      1.1  mrg 
   7932      1.1  mrg @node IBSET
   7933      1.1  mrg @section @code{IBSET} --- Set bit
   7934      1.1  mrg @fnindex IBSET
   7935      1.1  mrg @fnindex BBSET
   7936      1.1  mrg @fnindex IIBSET
   7937      1.1  mrg @fnindex JIBSET
   7938      1.1  mrg @fnindex KIBSET
   7939      1.1  mrg @cindex bits, set
   7940      1.1  mrg 
   7941      1.1  mrg @table @asis
   7942      1.1  mrg @item @emph{Description}:
   7943      1.1  mrg @code{IBSET} returns the value of @var{I} with the bit at position
   7944      1.1  mrg @var{POS} set to one.
   7945      1.1  mrg 
   7946      1.1  mrg @item @emph{Standard}:
   7947  1.1.1.2  mrg Fortran 90 and later, has overloads that are GNU extensions
   7948      1.1  mrg 
   7949      1.1  mrg @item @emph{Class}:
   7950      1.1  mrg Elemental function
   7951      1.1  mrg 
   7952      1.1  mrg @item @emph{Syntax}:
   7953      1.1  mrg @code{RESULT = IBSET(I, POS)}
   7954      1.1  mrg 
   7955      1.1  mrg @item @emph{Arguments}:
   7956      1.1  mrg @multitable @columnfractions .15 .70
   7957      1.1  mrg @item @var{I} @tab The type shall be @code{INTEGER}.
   7958      1.1  mrg @item @var{POS} @tab The type shall be @code{INTEGER}.
   7959      1.1  mrg @end multitable
   7960      1.1  mrg 
   7961      1.1  mrg @item @emph{Return value}:
   7962      1.1  mrg The return value is of type @code{INTEGER} and of the same kind as
   7963      1.1  mrg @var{I}.
   7964      1.1  mrg 
   7965      1.1  mrg @item @emph{Specific names}:
   7966  1.1.1.3  mrg @multitable @columnfractions .20 .23 .20 .33
   7967  1.1.1.3  mrg @headitem Name            @tab Argument            @tab Return type       @tab Standard
   7968  1.1.1.2  mrg @item @code{IBSET(A)}   @tab @code{INTEGER A}    @tab @code{INTEGER}    @tab Fortran 90 and later
   7969      1.1  mrg @item @code{BBSET(A)} @tab @code{INTEGER(1) A} @tab @code{INTEGER(1)} @tab GNU extension
   7970      1.1  mrg @item @code{IIBSET(A)} @tab @code{INTEGER(2) A} @tab @code{INTEGER(2)} @tab GNU extension
   7971      1.1  mrg @item @code{JIBSET(A)} @tab @code{INTEGER(4) A} @tab @code{INTEGER(4)} @tab GNU extension
   7972      1.1  mrg @item @code{KIBSET(A)} @tab @code{INTEGER(8) A} @tab @code{INTEGER(8)} @tab GNU extension
   7973      1.1  mrg @end multitable
   7974      1.1  mrg 
   7975      1.1  mrg @item @emph{See also}:
   7976  1.1.1.2  mrg @ref{IBCLR}, @gol
   7977  1.1.1.2  mrg @ref{IBITS}, @gol
   7978  1.1.1.2  mrg @ref{IAND}, @gol
   7979  1.1.1.2  mrg @ref{IOR}, @gol
   7980  1.1.1.2  mrg @ref{IEOR}, @gol
   7981  1.1.1.2  mrg @ref{MVBITS}
   7982      1.1  mrg @end table
   7983      1.1  mrg 
   7984      1.1  mrg 
   7985      1.1  mrg 
   7986      1.1  mrg @node ICHAR
   7987      1.1  mrg @section @code{ICHAR} --- Character-to-integer conversion function
   7988      1.1  mrg @fnindex ICHAR
   7989      1.1  mrg @cindex conversion, to integer
   7990      1.1  mrg 
   7991      1.1  mrg @table @asis
   7992      1.1  mrg @item @emph{Description}:
   7993      1.1  mrg @code{ICHAR(C)} returns the code for the character in the first character
   7994      1.1  mrg position of @code{C} in the system's native character set.
   7995      1.1  mrg The correspondence between characters and their codes is not necessarily
   7996      1.1  mrg the same across different GNU Fortran implementations.
   7997      1.1  mrg 
   7998      1.1  mrg @item @emph{Standard}:
   7999  1.1.1.2  mrg Fortran 77 and later, with @var{KIND} argument Fortran 2003 and later
   8000      1.1  mrg 
   8001      1.1  mrg @item @emph{Class}:
   8002      1.1  mrg Elemental function
   8003      1.1  mrg 
   8004      1.1  mrg @item @emph{Syntax}:
   8005      1.1  mrg @code{RESULT = ICHAR(C [, KIND])}
   8006      1.1  mrg 
   8007      1.1  mrg @item @emph{Arguments}:
   8008      1.1  mrg @multitable @columnfractions .15 .70
   8009      1.1  mrg @item @var{C}    @tab Shall be a scalar @code{CHARACTER}, with @code{INTENT(IN)}
   8010      1.1  mrg @item @var{KIND} @tab (Optional) An @code{INTEGER} initialization
   8011      1.1  mrg expression indicating the kind parameter of the result.
   8012      1.1  mrg @end multitable
   8013      1.1  mrg 
   8014      1.1  mrg @item @emph{Return value}:
   8015      1.1  mrg The return value is of type @code{INTEGER} and of kind @var{KIND}. If
   8016      1.1  mrg @var{KIND} is absent, the return value is of default integer kind.
   8017      1.1  mrg 
   8018      1.1  mrg @item @emph{Example}:
   8019      1.1  mrg @smallexample
   8020      1.1  mrg program test_ichar
   8021      1.1  mrg   integer i
   8022      1.1  mrg   i = ichar(' ')
   8023      1.1  mrg end program test_ichar
   8024      1.1  mrg @end smallexample
   8025      1.1  mrg 
   8026      1.1  mrg @item @emph{Specific names}:
   8027  1.1.1.3  mrg @multitable @columnfractions .20 .23 .20 .33
   8028  1.1.1.3  mrg @headitem Name             @tab Argument             @tab Return type       @tab Standard
   8029      1.1  mrg @item @code{ICHAR(C)}  @tab @code{CHARACTER C}   @tab @code{INTEGER(4)}    @tab Fortran 77 and later
   8030      1.1  mrg @end multitable
   8031      1.1  mrg 
   8032      1.1  mrg @item @emph{Note}:
   8033      1.1  mrg No intrinsic exists to convert between a numeric value and a formatted
   8034      1.1  mrg character string representation -- for instance, given the
   8035      1.1  mrg @code{CHARACTER} value @code{'154'}, obtaining an @code{INTEGER} or
   8036      1.1  mrg @code{REAL} value with the value 154, or vice versa. Instead, this
   8037      1.1  mrg functionality is provided by internal-file I/O, as in the following
   8038      1.1  mrg example:
   8039      1.1  mrg @smallexample
   8040      1.1  mrg program read_val
   8041      1.1  mrg   integer value
   8042      1.1  mrg   character(len=10) string, string2
   8043      1.1  mrg   string = '154'
   8044      1.1  mrg   
   8045      1.1  mrg   ! Convert a string to a numeric value
   8046      1.1  mrg   read (string,'(I10)') value
   8047      1.1  mrg   print *, value
   8048      1.1  mrg   
   8049      1.1  mrg   ! Convert a value to a formatted string
   8050      1.1  mrg   write (string2,'(I10)') value
   8051      1.1  mrg   print *, string2
   8052      1.1  mrg end program read_val
   8053      1.1  mrg @end smallexample
   8054      1.1  mrg 
   8055      1.1  mrg @item @emph{See also}:
   8056  1.1.1.2  mrg @ref{ACHAR}, @gol
   8057  1.1.1.2  mrg @ref{CHAR}, @gol
   8058  1.1.1.2  mrg @ref{IACHAR}
   8059      1.1  mrg @end table
   8060      1.1  mrg 
   8061      1.1  mrg 
   8062      1.1  mrg 
   8063      1.1  mrg @node IDATE
   8064      1.1  mrg @section @code{IDATE} --- Get current local time subroutine (day/month/year) 
   8065      1.1  mrg @fnindex IDATE
   8066      1.1  mrg @cindex date, current
   8067      1.1  mrg @cindex current date
   8068      1.1  mrg 
   8069      1.1  mrg @table @asis
   8070      1.1  mrg @item @emph{Description}:
   8071      1.1  mrg @code{IDATE(VALUES)} Fills @var{VALUES} with the numerical values at the  
   8072      1.1  mrg current local time. The day (in the range 1-31), month (in the range 1-12), 
   8073      1.1  mrg and year appear in elements 1, 2, and 3 of @var{VALUES}, respectively. 
   8074      1.1  mrg The year has four significant digits.
   8075      1.1  mrg 
   8076      1.1  mrg This intrinsic routine is provided for backwards compatibility with 
   8077      1.1  mrg GNU Fortran 77.  In new code, programmers should consider the use of 
   8078      1.1  mrg the @ref{DATE_AND_TIME} intrinsic defined by the Fortran 95
   8079      1.1  mrg standard.
   8080      1.1  mrg 
   8081      1.1  mrg @item @emph{Standard}:
   8082      1.1  mrg GNU extension
   8083      1.1  mrg 
   8084      1.1  mrg @item @emph{Class}:
   8085      1.1  mrg Subroutine
   8086      1.1  mrg 
   8087      1.1  mrg @item @emph{Syntax}:
   8088      1.1  mrg @code{CALL IDATE(VALUES)}
   8089      1.1  mrg 
   8090      1.1  mrg @item @emph{Arguments}:
   8091      1.1  mrg @multitable @columnfractions .15 .70
   8092      1.1  mrg @item @var{VALUES} @tab The type shall be @code{INTEGER, DIMENSION(3)} and
   8093      1.1  mrg the kind shall be the default integer kind.
   8094      1.1  mrg @end multitable
   8095      1.1  mrg 
   8096      1.1  mrg @item @emph{Return value}:
   8097      1.1  mrg Does not return anything.
   8098      1.1  mrg 
   8099      1.1  mrg @item @emph{Example}:
   8100      1.1  mrg @smallexample
   8101      1.1  mrg program test_idate
   8102      1.1  mrg   integer, dimension(3) :: tarray
   8103      1.1  mrg   call idate(tarray)
   8104      1.1  mrg   print *, tarray(1)
   8105      1.1  mrg   print *, tarray(2)
   8106      1.1  mrg   print *, tarray(3)
   8107      1.1  mrg end program test_idate
   8108      1.1  mrg @end smallexample
   8109      1.1  mrg 
   8110      1.1  mrg @item @emph{See also}:
   8111      1.1  mrg @ref{DATE_AND_TIME}
   8112      1.1  mrg @end table
   8113      1.1  mrg 
   8114      1.1  mrg 
   8115      1.1  mrg @node IEOR
   8116      1.1  mrg @section @code{IEOR} --- Bitwise logical exclusive or
   8117      1.1  mrg @fnindex IEOR
   8118      1.1  mrg @fnindex BIEOR
   8119      1.1  mrg @fnindex IIEOR
   8120      1.1  mrg @fnindex JIEOR
   8121      1.1  mrg @fnindex KIEOR
   8122      1.1  mrg @cindex bitwise logical exclusive or
   8123      1.1  mrg @cindex logical exclusive or, bitwise
   8124      1.1  mrg 
   8125      1.1  mrg @table @asis
   8126      1.1  mrg @item @emph{Description}:
   8127      1.1  mrg @code{IEOR} returns the bitwise Boolean exclusive-OR of @var{I} and
   8128      1.1  mrg @var{J}.
   8129      1.1  mrg 
   8130      1.1  mrg @item @emph{Standard}:
   8131  1.1.1.2  mrg Fortran 90 and later, with boz-literal-constant Fortran 2008 and later, has overloads that are GNU extensions
   8132      1.1  mrg 
   8133      1.1  mrg @item @emph{Class}:
   8134      1.1  mrg Elemental function
   8135      1.1  mrg 
   8136      1.1  mrg @item @emph{Syntax}:
   8137      1.1  mrg @code{RESULT = IEOR(I, J)}
   8138      1.1  mrg 
   8139      1.1  mrg @item @emph{Arguments}:
   8140      1.1  mrg @multitable @columnfractions .15 .70
   8141      1.1  mrg @item @var{I} @tab The type shall be @code{INTEGER} or a boz-literal-constant.
   8142      1.1  mrg @item @var{J} @tab The type shall be @code{INTEGER} with the same
   8143      1.1  mrg kind type parameter as @var{I} or a boz-literal-constant.
   8144      1.1  mrg @var{I} and @var{J} shall not both be boz-literal-constants.
   8145      1.1  mrg @end multitable
   8146      1.1  mrg 
   8147      1.1  mrg @item @emph{Return value}:
   8148      1.1  mrg The return type is @code{INTEGER} with the kind type parameter of the
   8149      1.1  mrg arguments.
   8150      1.1  mrg A boz-literal-constant is converted to an @code{INTEGER} with the kind
   8151      1.1  mrg type parameter of the other argument as-if a call to @ref{INT} occurred.
   8152      1.1  mrg 
   8153      1.1  mrg @item @emph{Specific names}:
   8154  1.1.1.3  mrg @multitable @columnfractions .20 .23 .20 .33
   8155  1.1.1.3  mrg @headitem Name            @tab Argument            @tab Return type       @tab Standard
   8156  1.1.1.2  mrg @item @code{IEOR(A)}  @tab @code{INTEGER A}    @tab @code{INTEGER}    @tab Fortran 90 and later
   8157      1.1  mrg @item @code{BIEOR(A)} @tab @code{INTEGER(1) A} @tab @code{INTEGER(1)} @tab GNU extension
   8158      1.1  mrg @item @code{IIEOR(A)} @tab @code{INTEGER(2) A} @tab @code{INTEGER(2)} @tab GNU extension
   8159      1.1  mrg @item @code{JIEOR(A)} @tab @code{INTEGER(4) A} @tab @code{INTEGER(4)} @tab GNU extension
   8160      1.1  mrg @item @code{KIEOR(A)} @tab @code{INTEGER(8) A} @tab @code{INTEGER(8)} @tab GNU extension
   8161      1.1  mrg @end multitable
   8162      1.1  mrg 
   8163      1.1  mrg @item @emph{See also}:
   8164  1.1.1.2  mrg @ref{IOR}, @gol
   8165  1.1.1.2  mrg @ref{IAND}, @gol
   8166  1.1.1.2  mrg @ref{IBITS}, @gol
   8167  1.1.1.2  mrg @ref{IBSET}, @gol
   8168  1.1.1.2  mrg @ref{IBCLR}, @gol
   8169  1.1.1.2  mrg @ref{NOT}
   8170      1.1  mrg @end table
   8171      1.1  mrg 
   8172      1.1  mrg 
   8173      1.1  mrg 
   8174      1.1  mrg @node IERRNO
   8175      1.1  mrg @section @code{IERRNO} --- Get the last system error number
   8176      1.1  mrg @fnindex IERRNO
   8177      1.1  mrg @cindex system, error handling
   8178      1.1  mrg 
   8179      1.1  mrg @table @asis
   8180      1.1  mrg @item @emph{Description}:
   8181      1.1  mrg Returns the last system error number, as given by the C @code{errno}
   8182      1.1  mrg variable.
   8183      1.1  mrg 
   8184      1.1  mrg @item @emph{Standard}:
   8185      1.1  mrg GNU extension
   8186      1.1  mrg 
   8187      1.1  mrg @item @emph{Class}:
   8188      1.1  mrg Function
   8189      1.1  mrg 
   8190      1.1  mrg @item @emph{Syntax}:
   8191      1.1  mrg @code{RESULT = IERRNO()}
   8192      1.1  mrg 
   8193      1.1  mrg @item @emph{Arguments}:
   8194  1.1.1.2  mrg None
   8195      1.1  mrg 
   8196      1.1  mrg @item @emph{Return value}:
   8197      1.1  mrg The return value is of type @code{INTEGER} and of the default integer
   8198      1.1  mrg kind.
   8199      1.1  mrg 
   8200      1.1  mrg @item @emph{See also}:
   8201      1.1  mrg @ref{PERROR}
   8202      1.1  mrg @end table
   8203      1.1  mrg 
   8204      1.1  mrg 
   8205      1.1  mrg 
   8206      1.1  mrg @node IMAGE_INDEX
   8207      1.1  mrg @section @code{IMAGE_INDEX} --- Function that converts a cosubscript to an image index
   8208      1.1  mrg @fnindex IMAGE_INDEX
   8209      1.1  mrg @cindex coarray, @code{IMAGE_INDEX}
   8210      1.1  mrg @cindex images, cosubscript to image index conversion
   8211      1.1  mrg 
   8212      1.1  mrg @table @asis
   8213      1.1  mrg @item @emph{Description}:
   8214      1.1  mrg Returns the image index belonging to a cosubscript.
   8215      1.1  mrg 
   8216      1.1  mrg @item @emph{Standard}:
   8217      1.1  mrg Fortran 2008 and later
   8218      1.1  mrg 
   8219      1.1  mrg @item @emph{Class}:
   8220      1.1  mrg Inquiry function.
   8221      1.1  mrg 
   8222      1.1  mrg @item @emph{Syntax}:
   8223      1.1  mrg @code{RESULT = IMAGE_INDEX(COARRAY, SUB)}
   8224      1.1  mrg 
   8225  1.1.1.2  mrg @item @emph{Arguments}:
   8226      1.1  mrg @multitable @columnfractions .15 .70
   8227      1.1  mrg @item @var{COARRAY} @tab Coarray of any type.
   8228      1.1  mrg @item @var{SUB}     @tab default integer rank-1 array of a size equal to
   8229      1.1  mrg the corank of @var{COARRAY}.
   8230      1.1  mrg @end multitable
   8231      1.1  mrg 
   8232      1.1  mrg 
   8233      1.1  mrg @item @emph{Return value}:
   8234      1.1  mrg Scalar default integer with the value of the image index which corresponds
   8235      1.1  mrg to the cosubscripts. For invalid cosubscripts the result is zero.
   8236      1.1  mrg 
   8237      1.1  mrg @item @emph{Example}:
   8238      1.1  mrg @smallexample
   8239      1.1  mrg INTEGER :: array[2,-1:4,8,*]
   8240      1.1  mrg ! Writes  28 (or 0 if there are fewer than 28 images)
   8241      1.1  mrg WRITE (*,*) IMAGE_INDEX (array, [2,0,3,1])
   8242      1.1  mrg @end smallexample
   8243      1.1  mrg 
   8244      1.1  mrg @item @emph{See also}:
   8245  1.1.1.2  mrg @ref{THIS_IMAGE}, @gol
   8246  1.1.1.2  mrg @ref{NUM_IMAGES}
   8247      1.1  mrg @end table
   8248      1.1  mrg 
   8249      1.1  mrg 
   8250      1.1  mrg 
   8251      1.1  mrg @node INDEX intrinsic
   8252      1.1  mrg @section @code{INDEX} --- Position of a substring within a string
   8253      1.1  mrg @fnindex INDEX
   8254      1.1  mrg @cindex substring position
   8255      1.1  mrg @cindex string, find substring
   8256      1.1  mrg 
   8257      1.1  mrg @table @asis
   8258      1.1  mrg @item @emph{Description}:
   8259      1.1  mrg Returns the position of the start of the first occurrence of string
   8260      1.1  mrg @var{SUBSTRING} as a substring in @var{STRING}, counting from one.  If
   8261      1.1  mrg @var{SUBSTRING} is not present in @var{STRING}, zero is returned.  If 
   8262      1.1  mrg the @var{BACK} argument is present and true, the return value is the
   8263      1.1  mrg start of the last occurrence rather than the first.
   8264      1.1  mrg 
   8265      1.1  mrg @item @emph{Standard}:
   8266      1.1  mrg Fortran 77 and later, with @var{KIND} argument Fortran 2003 and later
   8267      1.1  mrg 
   8268      1.1  mrg @item @emph{Class}:
   8269      1.1  mrg Elemental function
   8270      1.1  mrg 
   8271      1.1  mrg @item @emph{Syntax}:
   8272      1.1  mrg @code{RESULT = INDEX(STRING, SUBSTRING [, BACK [, KIND]])}
   8273      1.1  mrg 
   8274      1.1  mrg @item @emph{Arguments}:
   8275      1.1  mrg @multitable @columnfractions .15 .70
   8276      1.1  mrg @item @var{STRING} @tab Shall be a scalar @code{CHARACTER}, with
   8277      1.1  mrg @code{INTENT(IN)}
   8278      1.1  mrg @item @var{SUBSTRING} @tab Shall be a scalar @code{CHARACTER}, with
   8279      1.1  mrg @code{INTENT(IN)}
   8280      1.1  mrg @item @var{BACK} @tab (Optional) Shall be a scalar @code{LOGICAL}, with
   8281      1.1  mrg @code{INTENT(IN)}
   8282      1.1  mrg @item @var{KIND} @tab (Optional) An @code{INTEGER} initialization
   8283      1.1  mrg expression indicating the kind parameter of the result.
   8284      1.1  mrg @end multitable
   8285      1.1  mrg 
   8286      1.1  mrg @item @emph{Return value}:
   8287      1.1  mrg The return value is of type @code{INTEGER} and of kind @var{KIND}. If
   8288      1.1  mrg @var{KIND} is absent, the return value is of default integer kind.
   8289      1.1  mrg 
   8290      1.1  mrg @item @emph{Specific names}:
   8291  1.1.1.3  mrg @multitable @columnfractions .35 .15 .17 .30
   8292  1.1.1.3  mrg @headitem Name                            @tab Argument           @tab Return type       @tab Standard
   8293  1.1.1.3  mrg @item @code{INDEX(STRING,SUBSTRING)} @tab @code{CHARACTER}   @tab @code{INTEGER(4)} @tab Fortran 77 and later
   8294      1.1  mrg @end multitable
   8295      1.1  mrg 
   8296      1.1  mrg @item @emph{See also}:
   8297  1.1.1.2  mrg @ref{SCAN}, @gol
   8298  1.1.1.2  mrg @ref{VERIFY}
   8299      1.1  mrg @end table
   8300      1.1  mrg 
   8301      1.1  mrg 
   8302      1.1  mrg 
   8303      1.1  mrg @node INT
   8304      1.1  mrg @section @code{INT} --- Convert to integer type
   8305      1.1  mrg @fnindex INT
   8306      1.1  mrg @fnindex IFIX
   8307      1.1  mrg @fnindex IDINT
   8308      1.1  mrg @cindex conversion, to integer
   8309      1.1  mrg 
   8310      1.1  mrg @table @asis
   8311      1.1  mrg @item @emph{Description}:
   8312      1.1  mrg Convert to integer type
   8313      1.1  mrg 
   8314      1.1  mrg @item @emph{Standard}:
   8315  1.1.1.2  mrg Fortran 77 and later, with boz-literal-constant Fortran 2008 and later.
   8316      1.1  mrg 
   8317      1.1  mrg @item @emph{Class}:
   8318      1.1  mrg Elemental function
   8319      1.1  mrg 
   8320      1.1  mrg @item @emph{Syntax}:
   8321      1.1  mrg @code{RESULT = INT(A [, KIND))}
   8322      1.1  mrg 
   8323      1.1  mrg @item @emph{Arguments}:
   8324      1.1  mrg @multitable @columnfractions .15 .70
   8325      1.1  mrg @item @var{A}    @tab Shall be of type @code{INTEGER},
   8326  1.1.1.3  mrg @code{REAL}, or @code{COMPLEX} or a boz-literal-constant.
   8327      1.1  mrg @item @var{KIND} @tab (Optional) An @code{INTEGER} initialization
   8328      1.1  mrg expression indicating the kind parameter of the result.
   8329      1.1  mrg @end multitable
   8330      1.1  mrg 
   8331      1.1  mrg @item @emph{Return value}:
   8332      1.1  mrg These functions return a @code{INTEGER} variable or array under 
   8333      1.1  mrg the following rules: 
   8334      1.1  mrg 
   8335      1.1  mrg @table @asis
   8336      1.1  mrg @item (A)
   8337      1.1  mrg If @var{A} is of type @code{INTEGER}, @code{INT(A) = A} 
   8338      1.1  mrg @item (B)
   8339      1.1  mrg If @var{A} is of type @code{REAL} and @math{|A| < 1}, @code{INT(A)}
   8340      1.1  mrg equals @code{0}. If @math{|A| \geq 1}, then @code{INT(A)} is the integer
   8341      1.1  mrg whose magnitude is the largest integer that does not exceed the magnitude
   8342      1.1  mrg of @var{A} and whose sign is the same as the sign of @var{A}.
   8343      1.1  mrg @item (C)
   8344      1.1  mrg If @var{A} is of type @code{COMPLEX}, rule B is applied to the real part of @var{A}.
   8345      1.1  mrg @end table
   8346      1.1  mrg 
   8347      1.1  mrg @item @emph{Example}:
   8348      1.1  mrg @smallexample
   8349      1.1  mrg program test_int
   8350      1.1  mrg   integer :: i = 42
   8351      1.1  mrg   complex :: z = (-3.7, 1.0)
   8352      1.1  mrg   print *, int(i)
   8353      1.1  mrg   print *, int(z), int(z,8)
   8354      1.1  mrg end program
   8355      1.1  mrg @end smallexample
   8356      1.1  mrg 
   8357      1.1  mrg @item @emph{Specific names}:
   8358  1.1.1.3  mrg @multitable @columnfractions .20 .23 .20 .33
   8359  1.1.1.3  mrg @headitem Name            @tab Argument          @tab Return type       @tab Standard
   8360      1.1  mrg @item @code{INT(A)}   @tab @code{REAL(4) A}  @tab @code{INTEGER}    @tab Fortran 77 and later
   8361      1.1  mrg @item @code{IFIX(A)}  @tab @code{REAL(4) A}  @tab @code{INTEGER}    @tab Fortran 77 and later
   8362      1.1  mrg @item @code{IDINT(A)} @tab @code{REAL(8) A}  @tab @code{INTEGER}    @tab Fortran 77 and later
   8363      1.1  mrg @end multitable
   8364      1.1  mrg 
   8365      1.1  mrg @end table
   8366      1.1  mrg 
   8367      1.1  mrg 
   8368      1.1  mrg @node INT2
   8369      1.1  mrg @section @code{INT2} --- Convert to 16-bit integer type
   8370      1.1  mrg @fnindex INT2
   8371      1.1  mrg @cindex conversion, to integer
   8372      1.1  mrg 
   8373      1.1  mrg @table @asis
   8374      1.1  mrg @item @emph{Description}:
   8375      1.1  mrg Convert to a @code{KIND=2} integer type. This is equivalent to the
   8376      1.1  mrg standard @code{INT} intrinsic with an optional argument of
   8377      1.1  mrg @code{KIND=2}, and is only included for backwards compatibility.
   8378      1.1  mrg 
   8379      1.1  mrg @item @emph{Standard}:
   8380      1.1  mrg GNU extension
   8381      1.1  mrg 
   8382      1.1  mrg @item @emph{Class}:
   8383      1.1  mrg Elemental function
   8384      1.1  mrg 
   8385      1.1  mrg @item @emph{Syntax}:
   8386      1.1  mrg @code{RESULT = INT2(A)}
   8387      1.1  mrg 
   8388      1.1  mrg @item @emph{Arguments}:
   8389      1.1  mrg @multitable @columnfractions .15 .70
   8390      1.1  mrg @item @var{A}    @tab Shall be of type @code{INTEGER},
   8391      1.1  mrg @code{REAL}, or @code{COMPLEX}.
   8392      1.1  mrg @end multitable
   8393      1.1  mrg 
   8394      1.1  mrg @item @emph{Return value}:
   8395      1.1  mrg The return value is a @code{INTEGER(2)} variable.
   8396      1.1  mrg 
   8397      1.1  mrg @item @emph{See also}:
   8398  1.1.1.2  mrg @ref{INT}, @gol
   8399  1.1.1.3  mrg @ref{INT8}
   8400      1.1  mrg @end table
   8401      1.1  mrg 
   8402      1.1  mrg 
   8403      1.1  mrg 
   8404      1.1  mrg @node INT8
   8405      1.1  mrg @section @code{INT8} --- Convert to 64-bit integer type
   8406      1.1  mrg @fnindex INT8
   8407      1.1  mrg @cindex conversion, to integer
   8408      1.1  mrg 
   8409      1.1  mrg @table @asis
   8410      1.1  mrg @item @emph{Description}:
   8411      1.1  mrg Convert to a @code{KIND=8} integer type. This is equivalent to the
   8412      1.1  mrg standard @code{INT} intrinsic with an optional argument of
   8413      1.1  mrg @code{KIND=8}, and is only included for backwards compatibility.
   8414      1.1  mrg 
   8415      1.1  mrg @item @emph{Standard}:
   8416      1.1  mrg GNU extension
   8417      1.1  mrg 
   8418      1.1  mrg @item @emph{Class}:
   8419      1.1  mrg Elemental function
   8420      1.1  mrg 
   8421      1.1  mrg @item @emph{Syntax}:
   8422      1.1  mrg @code{RESULT = INT8(A)}
   8423      1.1  mrg 
   8424      1.1  mrg @item @emph{Arguments}:
   8425      1.1  mrg @multitable @columnfractions .15 .70
   8426      1.1  mrg @item @var{A}    @tab Shall be of type @code{INTEGER},
   8427      1.1  mrg @code{REAL}, or @code{COMPLEX}.
   8428      1.1  mrg @end multitable
   8429      1.1  mrg 
   8430      1.1  mrg @item @emph{Return value}:
   8431      1.1  mrg The return value is a @code{INTEGER(8)} variable.
   8432      1.1  mrg 
   8433      1.1  mrg @item @emph{See also}:
   8434  1.1.1.2  mrg @ref{INT}, @gol
   8435  1.1.1.3  mrg @ref{INT2}
   8436      1.1  mrg @end table
   8437      1.1  mrg 
   8438      1.1  mrg 
   8439      1.1  mrg 
   8440      1.1  mrg @node IOR
   8441      1.1  mrg @section @code{IOR} --- Bitwise logical or
   8442      1.1  mrg @fnindex IOR
   8443      1.1  mrg @fnindex BIOR
   8444      1.1  mrg @fnindex IIOR
   8445      1.1  mrg @fnindex JIOR
   8446      1.1  mrg @fnindex KIOR
   8447      1.1  mrg @cindex bitwise logical or
   8448      1.1  mrg @cindex logical or, bitwise
   8449      1.1  mrg 
   8450      1.1  mrg @table @asis
   8451      1.1  mrg @item @emph{Description}:
   8452      1.1  mrg @code{IOR} returns the bitwise Boolean inclusive-OR of @var{I} and
   8453      1.1  mrg @var{J}.
   8454      1.1  mrg 
   8455      1.1  mrg @item @emph{Standard}:
   8456  1.1.1.2  mrg Fortran 90 and later, with boz-literal-constant Fortran 2008 and later, has overloads that are GNU extensions
   8457      1.1  mrg 
   8458      1.1  mrg @item @emph{Class}:
   8459      1.1  mrg Elemental function
   8460      1.1  mrg 
   8461      1.1  mrg @item @emph{Syntax}:
   8462      1.1  mrg @code{RESULT = IOR(I, J)}
   8463      1.1  mrg 
   8464      1.1  mrg @item @emph{Arguments}:
   8465      1.1  mrg @multitable @columnfractions .15 .70
   8466      1.1  mrg @item @var{I} @tab The type shall be @code{INTEGER} or a boz-literal-constant.
   8467      1.1  mrg @item @var{J} @tab The type shall be @code{INTEGER} with the same
   8468      1.1  mrg kind type parameter as @var{I} or a boz-literal-constant.
   8469      1.1  mrg @var{I} and @var{J} shall not both be boz-literal-constants.
   8470      1.1  mrg @end multitable
   8471      1.1  mrg 
   8472      1.1  mrg @item @emph{Return value}:
   8473      1.1  mrg The return type is @code{INTEGER} with the kind type parameter of the
   8474      1.1  mrg arguments.
   8475      1.1  mrg A boz-literal-constant is converted to an @code{INTEGER} with the kind
   8476      1.1  mrg type parameter of the other argument as-if a call to @ref{INT} occurred.
   8477      1.1  mrg 
   8478      1.1  mrg @item @emph{Specific names}:
   8479  1.1.1.3  mrg @multitable @columnfractions .20 .23 .20 .33
   8480  1.1.1.3  mrg @headitem Name            @tab Argument            @tab Return type       @tab Standard
   8481  1.1.1.2  mrg @item @code{IOR(A)}   @tab @code{INTEGER A}    @tab @code{INTEGER}    @tab Fortran 90 and later
   8482      1.1  mrg @item @code{BIOR(A)} @tab @code{INTEGER(1) A} @tab @code{INTEGER(1)} @tab GNU extension
   8483      1.1  mrg @item @code{IIOR(A)} @tab @code{INTEGER(2) A} @tab @code{INTEGER(2)} @tab GNU extension
   8484      1.1  mrg @item @code{JIOR(A)} @tab @code{INTEGER(4) A} @tab @code{INTEGER(4)} @tab GNU extension
   8485      1.1  mrg @item @code{KIOR(A)} @tab @code{INTEGER(8) A} @tab @code{INTEGER(8)} @tab GNU extension
   8486      1.1  mrg @end multitable
   8487      1.1  mrg 
   8488      1.1  mrg @item @emph{See also}:
   8489  1.1.1.2  mrg @ref{IEOR}, @gol
   8490  1.1.1.2  mrg @ref{IAND}, @gol
   8491  1.1.1.2  mrg @ref{IBITS}, @gol
   8492  1.1.1.2  mrg @ref{IBSET}, @gol
   8493  1.1.1.2  mrg @ref{IBCLR}, @gol
   8494  1.1.1.2  mrg @ref{NOT}
   8495      1.1  mrg @end table
   8496      1.1  mrg 
   8497      1.1  mrg 
   8498      1.1  mrg 
   8499      1.1  mrg @node IPARITY
   8500      1.1  mrg @section @code{IPARITY} --- Bitwise XOR of array elements
   8501      1.1  mrg @fnindex IPARITY
   8502      1.1  mrg @cindex array, parity
   8503      1.1  mrg @cindex array, XOR
   8504      1.1  mrg @cindex bits, XOR of array elements
   8505      1.1  mrg 
   8506      1.1  mrg @table @asis
   8507      1.1  mrg @item @emph{Description}:
   8508      1.1  mrg Reduces with bitwise XOR (exclusive or) the elements of @var{ARRAY} along
   8509      1.1  mrg dimension @var{DIM} if the corresponding element in @var{MASK} is @code{TRUE}.
   8510      1.1  mrg 
   8511      1.1  mrg @item @emph{Standard}:
   8512      1.1  mrg Fortran 2008 and later
   8513      1.1  mrg 
   8514      1.1  mrg @item @emph{Class}:
   8515      1.1  mrg Transformational function
   8516      1.1  mrg 
   8517      1.1  mrg @item @emph{Syntax}:
   8518      1.1  mrg @multitable @columnfractions .80
   8519      1.1  mrg @item @code{RESULT = IPARITY(ARRAY[, MASK])}
   8520      1.1  mrg @item @code{RESULT = IPARITY(ARRAY, DIM[, MASK])}
   8521      1.1  mrg @end multitable
   8522      1.1  mrg 
   8523      1.1  mrg @item @emph{Arguments}:
   8524      1.1  mrg @multitable @columnfractions .15 .70
   8525      1.1  mrg @item @var{ARRAY} @tab Shall be an array of type @code{INTEGER}
   8526      1.1  mrg @item @var{DIM}   @tab (Optional) shall be a scalar of type 
   8527      1.1  mrg @code{INTEGER} with a value in the range from 1 to n, where n 
   8528      1.1  mrg equals the rank of @var{ARRAY}.
   8529      1.1  mrg @item @var{MASK}  @tab (Optional) shall be of type @code{LOGICAL} 
   8530      1.1  mrg and either be a scalar or an array of the same shape as @var{ARRAY}.
   8531      1.1  mrg @end multitable
   8532      1.1  mrg 
   8533      1.1  mrg @item @emph{Return value}:
   8534      1.1  mrg The result is of the same type as @var{ARRAY}.
   8535      1.1  mrg 
   8536      1.1  mrg If @var{DIM} is absent, a scalar with the bitwise XOR of all elements in
   8537      1.1  mrg @var{ARRAY} is returned. Otherwise, an array of rank n-1, where n equals
   8538      1.1  mrg the rank of @var{ARRAY}, and a shape similar to that of @var{ARRAY} with
   8539      1.1  mrg dimension @var{DIM} dropped is returned.
   8540      1.1  mrg 
   8541      1.1  mrg @item @emph{Example}:
   8542      1.1  mrg @smallexample
   8543      1.1  mrg PROGRAM test_iparity
   8544      1.1  mrg   INTEGER(1) :: a(2)
   8545      1.1  mrg 
   8546  1.1.1.2  mrg   a(1) = int(b'00100100', 1)
   8547  1.1.1.2  mrg   a(2) = int(b'01101010', 1)
   8548      1.1  mrg 
   8549      1.1  mrg   ! prints 01001110
   8550      1.1  mrg   PRINT '(b8.8)', IPARITY(a)
   8551      1.1  mrg END PROGRAM
   8552      1.1  mrg @end smallexample
   8553      1.1  mrg 
   8554      1.1  mrg @item @emph{See also}:
   8555  1.1.1.2  mrg @ref{IANY}, @gol
   8556  1.1.1.2  mrg @ref{IALL}, @gol
   8557  1.1.1.2  mrg @ref{IEOR}, @gol
   8558  1.1.1.2  mrg @ref{PARITY}
   8559      1.1  mrg @end table
   8560      1.1  mrg 
   8561      1.1  mrg 
   8562      1.1  mrg 
   8563      1.1  mrg @node IRAND
   8564      1.1  mrg @section @code{IRAND} --- Integer pseudo-random number
   8565      1.1  mrg @fnindex IRAND
   8566      1.1  mrg @cindex random number generation
   8567      1.1  mrg 
   8568      1.1  mrg @table @asis
   8569      1.1  mrg @item @emph{Description}:
   8570      1.1  mrg @code{IRAND(FLAG)} returns a pseudo-random number from a uniform
   8571      1.1  mrg distribution between 0 and a system-dependent limit (which is in most
   8572      1.1  mrg cases 2147483647). If @var{FLAG} is 0, the next number
   8573      1.1  mrg in the current sequence is returned; if @var{FLAG} is 1, the generator
   8574      1.1  mrg is restarted by @code{CALL SRAND(0)}; if @var{FLAG} has any other value,
   8575      1.1  mrg it is used as a new seed with @code{SRAND}.
   8576      1.1  mrg 
   8577      1.1  mrg This intrinsic routine is provided for backwards compatibility with
   8578      1.1  mrg GNU Fortran 77. It implements a simple modulo generator as provided 
   8579      1.1  mrg by @command{g77}. For new code, one should consider the use of 
   8580      1.1  mrg @ref{RANDOM_NUMBER} as it implements a superior algorithm.
   8581      1.1  mrg 
   8582      1.1  mrg @item @emph{Standard}:
   8583      1.1  mrg GNU extension
   8584      1.1  mrg 
   8585      1.1  mrg @item @emph{Class}:
   8586      1.1  mrg Function
   8587      1.1  mrg 
   8588      1.1  mrg @item @emph{Syntax}:
   8589      1.1  mrg @code{RESULT = IRAND(I)}
   8590      1.1  mrg 
   8591      1.1  mrg @item @emph{Arguments}:
   8592      1.1  mrg @multitable @columnfractions .15 .70
   8593      1.1  mrg @item @var{I} @tab Shall be a scalar @code{INTEGER} of kind 4.
   8594      1.1  mrg @end multitable
   8595      1.1  mrg 
   8596      1.1  mrg @item @emph{Return value}:
   8597      1.1  mrg The return value is of @code{INTEGER(kind=4)} type.
   8598      1.1  mrg 
   8599      1.1  mrg @item @emph{Example}:
   8600      1.1  mrg @smallexample
   8601      1.1  mrg program test_irand
   8602      1.1  mrg   integer,parameter :: seed = 86456
   8603      1.1  mrg   
   8604      1.1  mrg   call srand(seed)
   8605      1.1  mrg   print *, irand(), irand(), irand(), irand()
   8606      1.1  mrg   print *, irand(seed), irand(), irand(), irand()
   8607      1.1  mrg end program test_irand
   8608      1.1  mrg @end smallexample
   8609      1.1  mrg 
   8610      1.1  mrg @end table
   8611      1.1  mrg 
   8612      1.1  mrg 
   8613      1.1  mrg 
   8614      1.1  mrg @node IS_CONTIGUOUS
   8615      1.1  mrg @section @code{IS_CONTIGUOUS} --- Test whether an array is contiguous
   8616      1.1  mrg @fnindex IS_IOSTAT_EOR
   8617      1.1  mrg @cindex array, contiguity
   8618      1.1  mrg 
   8619      1.1  mrg @table @asis
   8620      1.1  mrg @item @emph{Description}:
   8621      1.1  mrg @code{IS_CONTIGUOUS} tests whether an array is contiguous.
   8622      1.1  mrg 
   8623      1.1  mrg @item @emph{Standard}:
   8624      1.1  mrg Fortran 2008 and later
   8625      1.1  mrg 
   8626      1.1  mrg @item @emph{Class}:
   8627      1.1  mrg Inquiry function
   8628      1.1  mrg 
   8629      1.1  mrg @item @emph{Syntax}:
   8630      1.1  mrg @code{RESULT = IS_CONTIGUOUS(ARRAY)}
   8631      1.1  mrg 
   8632      1.1  mrg @item @emph{Arguments}:
   8633      1.1  mrg @multitable @columnfractions .15 .70
   8634      1.1  mrg @item @var{ARRAY} @tab Shall be an array of any type.
   8635      1.1  mrg @end multitable
   8636      1.1  mrg 
   8637      1.1  mrg @item @emph{Return value}:
   8638      1.1  mrg Returns a @code{LOGICAL} of the default kind, which @code{.TRUE.} if
   8639      1.1  mrg @var{ARRAY} is contiguous and false otherwise.
   8640      1.1  mrg 
   8641      1.1  mrg @item @emph{Example}:
   8642      1.1  mrg @smallexample
   8643      1.1  mrg program test
   8644      1.1  mrg   integer :: a(10)
   8645      1.1  mrg   a = [1,2,3,4,5,6,7,8,9,10]
   8646      1.1  mrg   call sub (a)      ! every element, is contiguous
   8647      1.1  mrg   call sub (a(::2)) ! every other element, is noncontiguous
   8648      1.1  mrg contains
   8649      1.1  mrg   subroutine sub (x)
   8650      1.1  mrg     integer :: x(:)
   8651      1.1  mrg     if (is_contiguous (x)) then
   8652      1.1  mrg       write (*,*) 'X is contiguous'
   8653      1.1  mrg     else
   8654      1.1  mrg       write (*,*) 'X is not contiguous'
   8655      1.1  mrg     end if
   8656      1.1  mrg   end subroutine sub
   8657      1.1  mrg end program test
   8658      1.1  mrg @end smallexample
   8659      1.1  mrg @end table
   8660      1.1  mrg 
   8661      1.1  mrg 
   8662      1.1  mrg 
   8663      1.1  mrg @node IS_IOSTAT_END
   8664      1.1  mrg @section @code{IS_IOSTAT_END} --- Test for end-of-file value
   8665      1.1  mrg @fnindex IS_IOSTAT_END
   8666      1.1  mrg @cindex @code{IOSTAT}, end of file
   8667      1.1  mrg 
   8668      1.1  mrg @table @asis
   8669      1.1  mrg @item @emph{Description}:
   8670      1.1  mrg @code{IS_IOSTAT_END} tests whether an variable has the value of the I/O
   8671      1.1  mrg status ``end of file''. The function is equivalent to comparing the variable
   8672      1.1  mrg with the @code{IOSTAT_END} parameter of the intrinsic module
   8673      1.1  mrg @code{ISO_FORTRAN_ENV}.
   8674      1.1  mrg 
   8675      1.1  mrg @item @emph{Standard}:
   8676      1.1  mrg Fortran 2003 and later
   8677      1.1  mrg 
   8678      1.1  mrg @item @emph{Class}:
   8679      1.1  mrg Elemental function
   8680      1.1  mrg 
   8681      1.1  mrg @item @emph{Syntax}:
   8682      1.1  mrg @code{RESULT = IS_IOSTAT_END(I)}
   8683      1.1  mrg 
   8684      1.1  mrg @item @emph{Arguments}:
   8685      1.1  mrg @multitable @columnfractions .15 .70
   8686      1.1  mrg @item @var{I} @tab Shall be of the type @code{INTEGER}.
   8687      1.1  mrg @end multitable
   8688      1.1  mrg 
   8689      1.1  mrg @item @emph{Return value}:
   8690      1.1  mrg Returns a @code{LOGICAL} of the default kind, which @code{.TRUE.} if
   8691      1.1  mrg @var{I} has the value which indicates an end of file condition for
   8692      1.1  mrg @code{IOSTAT=} specifiers, and is @code{.FALSE.} otherwise.
   8693      1.1  mrg 
   8694      1.1  mrg @item @emph{Example}:
   8695      1.1  mrg @smallexample
   8696      1.1  mrg PROGRAM iostat
   8697      1.1  mrg   IMPLICIT NONE
   8698      1.1  mrg   INTEGER :: stat, i
   8699      1.1  mrg   OPEN(88, FILE='test.dat')
   8700      1.1  mrg   READ(88, *, IOSTAT=stat) i
   8701      1.1  mrg   IF(IS_IOSTAT_END(stat)) STOP 'END OF FILE'
   8702      1.1  mrg END PROGRAM
   8703      1.1  mrg @end smallexample
   8704      1.1  mrg @end table
   8705      1.1  mrg 
   8706      1.1  mrg 
   8707      1.1  mrg 
   8708      1.1  mrg @node IS_IOSTAT_EOR
   8709      1.1  mrg @section @code{IS_IOSTAT_EOR} --- Test for end-of-record value
   8710      1.1  mrg @fnindex IS_IOSTAT_EOR
   8711      1.1  mrg @cindex @code{IOSTAT}, end of record
   8712      1.1  mrg 
   8713      1.1  mrg @table @asis
   8714      1.1  mrg @item @emph{Description}:
   8715      1.1  mrg @code{IS_IOSTAT_EOR} tests whether an variable has the value of the I/O
   8716      1.1  mrg status ``end of record''. The function is equivalent to comparing the
   8717      1.1  mrg variable with the @code{IOSTAT_EOR} parameter of the intrinsic module
   8718      1.1  mrg @code{ISO_FORTRAN_ENV}.
   8719      1.1  mrg 
   8720      1.1  mrg @item @emph{Standard}:
   8721      1.1  mrg Fortran 2003 and later
   8722      1.1  mrg 
   8723      1.1  mrg @item @emph{Class}:
   8724      1.1  mrg Elemental function
   8725      1.1  mrg 
   8726      1.1  mrg @item @emph{Syntax}:
   8727      1.1  mrg @code{RESULT = IS_IOSTAT_EOR(I)}
   8728      1.1  mrg 
   8729      1.1  mrg @item @emph{Arguments}:
   8730      1.1  mrg @multitable @columnfractions .15 .70
   8731      1.1  mrg @item @var{I} @tab Shall be of the type @code{INTEGER}.
   8732      1.1  mrg @end multitable
   8733      1.1  mrg 
   8734      1.1  mrg @item @emph{Return value}:
   8735      1.1  mrg Returns a @code{LOGICAL} of the default kind, which @code{.TRUE.} if
   8736      1.1  mrg @var{I} has the value which indicates an end of file condition for
   8737      1.1  mrg @code{IOSTAT=} specifiers, and is @code{.FALSE.} otherwise.
   8738      1.1  mrg 
   8739      1.1  mrg @item @emph{Example}:
   8740      1.1  mrg @smallexample
   8741      1.1  mrg PROGRAM iostat
   8742      1.1  mrg   IMPLICIT NONE
   8743      1.1  mrg   INTEGER :: stat, i(50)
   8744      1.1  mrg   OPEN(88, FILE='test.dat', FORM='UNFORMATTED')
   8745      1.1  mrg   READ(88, IOSTAT=stat) i
   8746      1.1  mrg   IF(IS_IOSTAT_EOR(stat)) STOP 'END OF RECORD'
   8747      1.1  mrg END PROGRAM
   8748      1.1  mrg @end smallexample
   8749      1.1  mrg @end table
   8750      1.1  mrg 
   8751      1.1  mrg 
   8752      1.1  mrg @node ISATTY
   8753      1.1  mrg @section @code{ISATTY} --- Whether a unit is a terminal device.
   8754      1.1  mrg @fnindex ISATTY
   8755      1.1  mrg @cindex system, terminal
   8756      1.1  mrg 
   8757      1.1  mrg @table @asis
   8758      1.1  mrg @item @emph{Description}:
   8759      1.1  mrg Determine whether a unit is connected to a terminal device.
   8760      1.1  mrg 
   8761      1.1  mrg @item @emph{Standard}:
   8762      1.1  mrg GNU extension
   8763      1.1  mrg 
   8764      1.1  mrg @item @emph{Class}:
   8765      1.1  mrg Function
   8766      1.1  mrg 
   8767      1.1  mrg @item @emph{Syntax}:
   8768      1.1  mrg @code{RESULT = ISATTY(UNIT)}
   8769      1.1  mrg 
   8770      1.1  mrg @item @emph{Arguments}:
   8771      1.1  mrg @multitable @columnfractions .15 .70
   8772      1.1  mrg @item @var{UNIT} @tab Shall be a scalar @code{INTEGER}.
   8773      1.1  mrg @end multitable
   8774      1.1  mrg 
   8775      1.1  mrg @item @emph{Return value}:
   8776      1.1  mrg Returns @code{.TRUE.} if the @var{UNIT} is connected to a terminal 
   8777      1.1  mrg device, @code{.FALSE.} otherwise.
   8778      1.1  mrg 
   8779      1.1  mrg @item @emph{Example}:
   8780      1.1  mrg @smallexample
   8781      1.1  mrg PROGRAM test_isatty
   8782      1.1  mrg   INTEGER(kind=1) :: unit
   8783      1.1  mrg   DO unit = 1, 10
   8784      1.1  mrg     write(*,*) isatty(unit=unit)
   8785      1.1  mrg   END DO
   8786      1.1  mrg END PROGRAM
   8787      1.1  mrg @end smallexample
   8788      1.1  mrg @item @emph{See also}:
   8789      1.1  mrg @ref{TTYNAM}
   8790      1.1  mrg @end table
   8791      1.1  mrg 
   8792      1.1  mrg 
   8793      1.1  mrg 
   8794      1.1  mrg @node ISHFT
   8795      1.1  mrg @section @code{ISHFT} --- Shift bits
   8796      1.1  mrg @fnindex ISHFT
   8797      1.1  mrg @fnindex BSHFT
   8798      1.1  mrg @fnindex IISHFT
   8799      1.1  mrg @fnindex JISHFT
   8800      1.1  mrg @fnindex KISHFT
   8801      1.1  mrg @cindex bits, shift
   8802      1.1  mrg 
   8803      1.1  mrg @table @asis
   8804      1.1  mrg @item @emph{Description}:
   8805      1.1  mrg @code{ISHFT} returns a value corresponding to @var{I} with all of the
   8806      1.1  mrg bits shifted @var{SHIFT} places.  A value of @var{SHIFT} greater than
   8807      1.1  mrg zero corresponds to a left shift, a value of zero corresponds to no
   8808      1.1  mrg shift, and a value less than zero corresponds to a right shift.  If the
   8809      1.1  mrg absolute value of @var{SHIFT} is greater than @code{BIT_SIZE(I)}, the
   8810      1.1  mrg value is undefined.  Bits shifted out from the left end or right end are
   8811      1.1  mrg lost; zeros are shifted in from the opposite end.
   8812      1.1  mrg 
   8813      1.1  mrg @item @emph{Standard}:
   8814  1.1.1.2  mrg Fortran 90 and later, has overloads that are GNU extensions
   8815      1.1  mrg 
   8816      1.1  mrg @item @emph{Class}:
   8817      1.1  mrg Elemental function
   8818      1.1  mrg 
   8819      1.1  mrg @item @emph{Syntax}:
   8820      1.1  mrg @code{RESULT = ISHFT(I, SHIFT)}
   8821      1.1  mrg 
   8822      1.1  mrg @item @emph{Arguments}:
   8823      1.1  mrg @multitable @columnfractions .15 .70
   8824      1.1  mrg @item @var{I} @tab The type shall be @code{INTEGER}.
   8825      1.1  mrg @item @var{SHIFT} @tab The type shall be @code{INTEGER}.
   8826      1.1  mrg @end multitable
   8827      1.1  mrg 
   8828      1.1  mrg @item @emph{Return value}:
   8829      1.1  mrg The return value is of type @code{INTEGER} and of the same kind as
   8830      1.1  mrg @var{I}.
   8831      1.1  mrg 
   8832      1.1  mrg @item @emph{Specific names}:
   8833  1.1.1.3  mrg @multitable @columnfractions .20 .23 .20 .33
   8834  1.1.1.3  mrg @headitem Name            @tab Argument            @tab Return type       @tab Standard
   8835  1.1.1.2  mrg @item @code{ISHFT(A)}   @tab @code{INTEGER A}    @tab @code{INTEGER}    @tab Fortran 90 and later
   8836      1.1  mrg @item @code{BSHFT(A)} @tab @code{INTEGER(1) A} @tab @code{INTEGER(1)} @tab GNU extension
   8837      1.1  mrg @item @code{IISHFT(A)} @tab @code{INTEGER(2) A} @tab @code{INTEGER(2)} @tab GNU extension
   8838      1.1  mrg @item @code{JISHFT(A)} @tab @code{INTEGER(4) A} @tab @code{INTEGER(4)} @tab GNU extension
   8839      1.1  mrg @item @code{KISHFT(A)} @tab @code{INTEGER(8) A} @tab @code{INTEGER(8)} @tab GNU extension
   8840      1.1  mrg @end multitable
   8841      1.1  mrg 
   8842      1.1  mrg @item @emph{See also}:
   8843      1.1  mrg @ref{ISHFTC}
   8844      1.1  mrg @end table
   8845      1.1  mrg 
   8846      1.1  mrg 
   8847      1.1  mrg 
   8848      1.1  mrg @node ISHFTC
   8849      1.1  mrg @section @code{ISHFTC} --- Shift bits circularly
   8850      1.1  mrg @fnindex ISHFTC
   8851      1.1  mrg @fnindex BSHFTC
   8852      1.1  mrg @fnindex IISHFTC
   8853      1.1  mrg @fnindex JISHFTC
   8854      1.1  mrg @fnindex KISHFTC
   8855      1.1  mrg @cindex bits, shift circular
   8856      1.1  mrg 
   8857      1.1  mrg @table @asis
   8858      1.1  mrg @item @emph{Description}:
   8859      1.1  mrg @code{ISHFTC} returns a value corresponding to @var{I} with the
   8860      1.1  mrg rightmost @var{SIZE} bits shifted circularly @var{SHIFT} places; that
   8861      1.1  mrg is, bits shifted out one end are shifted into the opposite end.  A value
   8862      1.1  mrg of @var{SHIFT} greater than zero corresponds to a left shift, a value of
   8863      1.1  mrg zero corresponds to no shift, and a value less than zero corresponds to
   8864      1.1  mrg a right shift.  The absolute value of @var{SHIFT} must be less than
   8865      1.1  mrg @var{SIZE}.  If the @var{SIZE} argument is omitted, it is taken to be
   8866      1.1  mrg equivalent to @code{BIT_SIZE(I)}.
   8867      1.1  mrg 
   8868      1.1  mrg @item @emph{Standard}:
   8869  1.1.1.2  mrg Fortran 90 and later, has overloads that are GNU extensions
   8870      1.1  mrg 
   8871      1.1  mrg @item @emph{Class}:
   8872      1.1  mrg Elemental function
   8873      1.1  mrg 
   8874      1.1  mrg @item @emph{Syntax}:
   8875      1.1  mrg @code{RESULT = ISHFTC(I, SHIFT [, SIZE])}
   8876      1.1  mrg 
   8877      1.1  mrg @item @emph{Arguments}:
   8878      1.1  mrg @multitable @columnfractions .15 .70
   8879      1.1  mrg @item @var{I} @tab The type shall be @code{INTEGER}.
   8880      1.1  mrg @item @var{SHIFT} @tab The type shall be @code{INTEGER}.
   8881      1.1  mrg @item @var{SIZE} @tab (Optional) The type shall be @code{INTEGER};
   8882      1.1  mrg the value must be greater than zero and less than or equal to
   8883      1.1  mrg @code{BIT_SIZE(I)}.
   8884      1.1  mrg @end multitable
   8885      1.1  mrg 
   8886      1.1  mrg @item @emph{Return value}:
   8887      1.1  mrg The return value is of type @code{INTEGER} and of the same kind as
   8888      1.1  mrg @var{I}.
   8889      1.1  mrg 
   8890      1.1  mrg @item @emph{Specific names}:
   8891  1.1.1.3  mrg @multitable @columnfractions .20 .23 .20 .33
   8892  1.1.1.3  mrg @headitem Name            @tab Argument            @tab Return type       @tab Standard
   8893  1.1.1.2  mrg @item @code{ISHFTC(A)}   @tab @code{INTEGER A}    @tab @code{INTEGER}    @tab Fortran 90 and later
   8894      1.1  mrg @item @code{BSHFTC(A)} @tab @code{INTEGER(1) A} @tab @code{INTEGER(1)} @tab GNU extension
   8895      1.1  mrg @item @code{IISHFTC(A)} @tab @code{INTEGER(2) A} @tab @code{INTEGER(2)} @tab GNU extension
   8896      1.1  mrg @item @code{JISHFTC(A)} @tab @code{INTEGER(4) A} @tab @code{INTEGER(4)} @tab GNU extension
   8897      1.1  mrg @item @code{KISHFTC(A)} @tab @code{INTEGER(8) A} @tab @code{INTEGER(8)} @tab GNU extension
   8898      1.1  mrg @end multitable
   8899      1.1  mrg 
   8900      1.1  mrg @item @emph{See also}:
   8901      1.1  mrg @ref{ISHFT}
   8902      1.1  mrg @end table
   8903      1.1  mrg 
   8904      1.1  mrg 
   8905      1.1  mrg 
   8906      1.1  mrg @node ISNAN
   8907      1.1  mrg @section @code{ISNAN} --- Test for a NaN
   8908      1.1  mrg @fnindex ISNAN
   8909      1.1  mrg @cindex IEEE, ISNAN
   8910      1.1  mrg 
   8911      1.1  mrg @table @asis
   8912      1.1  mrg @item @emph{Description}:
   8913      1.1  mrg @code{ISNAN} tests whether a floating-point value is an IEEE
   8914      1.1  mrg Not-a-Number (NaN).
   8915      1.1  mrg @item @emph{Standard}:
   8916      1.1  mrg GNU extension
   8917      1.1  mrg 
   8918      1.1  mrg @item @emph{Class}:
   8919      1.1  mrg Elemental function
   8920      1.1  mrg 
   8921      1.1  mrg @item @emph{Syntax}:
   8922      1.1  mrg @code{ISNAN(X)}
   8923      1.1  mrg 
   8924      1.1  mrg @item @emph{Arguments}:
   8925      1.1  mrg @multitable @columnfractions .15 .70
   8926      1.1  mrg @item @var{X} @tab Variable of the type @code{REAL}.
   8927      1.1  mrg 
   8928      1.1  mrg @end multitable
   8929      1.1  mrg 
   8930      1.1  mrg @item @emph{Return value}:
   8931      1.1  mrg Returns a default-kind @code{LOGICAL}. The returned value is @code{TRUE}
   8932      1.1  mrg if @var{X} is a NaN and @code{FALSE} otherwise.
   8933      1.1  mrg 
   8934      1.1  mrg @item @emph{Example}:
   8935      1.1  mrg @smallexample
   8936      1.1  mrg program test_nan
   8937      1.1  mrg   implicit none
   8938      1.1  mrg   real :: x
   8939      1.1  mrg   x = -1.0
   8940      1.1  mrg   x = sqrt(x)
   8941      1.1  mrg   if (isnan(x)) stop '"x" is a NaN'
   8942      1.1  mrg end program test_nan
   8943      1.1  mrg @end smallexample
   8944      1.1  mrg @end table
   8945      1.1  mrg 
   8946      1.1  mrg 
   8947      1.1  mrg 
   8948      1.1  mrg @node ITIME
   8949      1.1  mrg @section @code{ITIME} --- Get current local time subroutine (hour/minutes/seconds) 
   8950      1.1  mrg @fnindex ITIME
   8951      1.1  mrg @cindex time, current
   8952      1.1  mrg @cindex current time
   8953      1.1  mrg 
   8954      1.1  mrg @table @asis
   8955      1.1  mrg @item @emph{Description}:
   8956      1.1  mrg @code{ITIME(VALUES)} Fills @var{VALUES} with the numerical values at the  
   8957      1.1  mrg current local time. The hour (in the range 1-24), minute (in the range 1-60), 
   8958      1.1  mrg and seconds (in the range 1-60) appear in elements 1, 2, and 3 of @var{VALUES}, 
   8959      1.1  mrg respectively.
   8960      1.1  mrg 
   8961      1.1  mrg This intrinsic routine is provided for backwards compatibility with 
   8962      1.1  mrg GNU Fortran 77.  In new code, programmers should consider the use of 
   8963      1.1  mrg the @ref{DATE_AND_TIME} intrinsic defined by the Fortran 95
   8964      1.1  mrg standard.
   8965      1.1  mrg 
   8966      1.1  mrg @item @emph{Standard}:
   8967      1.1  mrg GNU extension
   8968      1.1  mrg 
   8969      1.1  mrg @item @emph{Class}:
   8970      1.1  mrg Subroutine
   8971      1.1  mrg 
   8972      1.1  mrg @item @emph{Syntax}:
   8973      1.1  mrg @code{CALL ITIME(VALUES)}
   8974      1.1  mrg 
   8975      1.1  mrg @item @emph{Arguments}:
   8976      1.1  mrg @multitable @columnfractions .15 .70
   8977      1.1  mrg @item @var{VALUES} @tab The type shall be @code{INTEGER, DIMENSION(3)}
   8978      1.1  mrg and the kind shall be the default integer kind.
   8979      1.1  mrg @end multitable
   8980      1.1  mrg 
   8981      1.1  mrg @item @emph{Return value}:
   8982      1.1  mrg Does not return anything.
   8983      1.1  mrg 
   8984      1.1  mrg 
   8985      1.1  mrg @item @emph{Example}:
   8986      1.1  mrg @smallexample
   8987      1.1  mrg program test_itime
   8988      1.1  mrg   integer, dimension(3) :: tarray
   8989      1.1  mrg   call itime(tarray)
   8990      1.1  mrg   print *, tarray(1)
   8991      1.1  mrg   print *, tarray(2)
   8992      1.1  mrg   print *, tarray(3)
   8993      1.1  mrg end program test_itime
   8994      1.1  mrg @end smallexample
   8995      1.1  mrg 
   8996      1.1  mrg @item @emph{See also}:
   8997      1.1  mrg @ref{DATE_AND_TIME}
   8998      1.1  mrg @end table
   8999      1.1  mrg 
   9000      1.1  mrg 
   9001      1.1  mrg 
   9002      1.1  mrg @node KILL
   9003      1.1  mrg @section @code{KILL} --- Send a signal to a process
   9004      1.1  mrg @fnindex KILL
   9005      1.1  mrg 
   9006      1.1  mrg @table @asis
   9007      1.1  mrg @item @emph{Description}:
   9008      1.1  mrg Sends the signal specified by @var{SIG} to the process @var{PID}.
   9009      1.1  mrg See @code{kill(2)}.
   9010      1.1  mrg 
   9011      1.1  mrg This intrinsic is provided in both subroutine and function forms;
   9012      1.1  mrg however, only one form can be used in any given program unit.
   9013  1.1.1.2  mrg @item @emph{Standard}:
   9014  1.1.1.2  mrg GNU extension
   9015  1.1.1.2  mrg 
   9016  1.1.1.2  mrg @item @emph{Standard}:
   9017  1.1.1.2  mrg GNU extension
   9018      1.1  mrg 
   9019      1.1  mrg @item @emph{Class}:
   9020      1.1  mrg Subroutine, function
   9021      1.1  mrg 
   9022      1.1  mrg @item @emph{Syntax}:
   9023      1.1  mrg @multitable @columnfractions .80
   9024      1.1  mrg @item @code{CALL KILL(PID, SIG [, STATUS])}
   9025      1.1  mrg @item @code{STATUS = KILL(PID, SIG)}
   9026      1.1  mrg @end multitable
   9027      1.1  mrg 
   9028      1.1  mrg @item @emph{Arguments}:
   9029      1.1  mrg @multitable @columnfractions .15 .70
   9030      1.1  mrg @item @var{PID} @tab Shall be a scalar @code{INTEGER} with @code{INTENT(IN)}.
   9031      1.1  mrg @item @var{SIG} @tab Shall be a scalar @code{INTEGER} with @code{INTENT(IN)}.
   9032      1.1  mrg @item @var{STATUS} @tab [Subroutine](Optional)
   9033      1.1  mrg Shall be a scalar @code{INTEGER}.
   9034      1.1  mrg Returns 0 on success; otherwise a system-specific error code is returned.
   9035      1.1  mrg @item @var{STATUS} @tab [Function] The kind type parameter is that of
   9036      1.1  mrg @code{pid}.
   9037      1.1  mrg Returns 0 on success; otherwise a system-specific error code is returned.
   9038      1.1  mrg @end multitable
   9039      1.1  mrg 
   9040      1.1  mrg @item @emph{See also}:
   9041  1.1.1.2  mrg @ref{ABORT}, @gol
   9042  1.1.1.2  mrg @ref{EXIT}
   9043      1.1  mrg @end table
   9044      1.1  mrg 
   9045      1.1  mrg 
   9046      1.1  mrg @node KIND
   9047      1.1  mrg @section @code{KIND} --- Kind of an entity
   9048      1.1  mrg @fnindex KIND
   9049      1.1  mrg @cindex kind
   9050      1.1  mrg 
   9051      1.1  mrg @table @asis
   9052      1.1  mrg @item @emph{Description}:
   9053      1.1  mrg @code{KIND(X)} returns the kind value of the entity @var{X}.
   9054      1.1  mrg 
   9055      1.1  mrg @item @emph{Standard}:
   9056      1.1  mrg Fortran 95 and later
   9057      1.1  mrg 
   9058      1.1  mrg @item @emph{Class}:
   9059      1.1  mrg Inquiry function
   9060      1.1  mrg 
   9061      1.1  mrg @item @emph{Syntax}:
   9062      1.1  mrg @code{K = KIND(X)}
   9063      1.1  mrg 
   9064      1.1  mrg @item @emph{Arguments}:
   9065      1.1  mrg @multitable @columnfractions .15 .70
   9066      1.1  mrg @item @var{X} @tab Shall be of type @code{LOGICAL}, @code{INTEGER},
   9067  1.1.1.2  mrg @code{REAL}, @code{COMPLEX} or @code{CHARACTER}.  It may be scalar or
   9068  1.1.1.2  mrg array valued.
   9069      1.1  mrg @end multitable
   9070      1.1  mrg 
   9071      1.1  mrg @item @emph{Return value}:
   9072      1.1  mrg The return value is a scalar of type @code{INTEGER} and of the default
   9073      1.1  mrg integer kind.
   9074      1.1  mrg 
   9075      1.1  mrg @item @emph{Example}:
   9076      1.1  mrg @smallexample
   9077      1.1  mrg program test_kind
   9078      1.1  mrg   integer,parameter :: kc = kind(' ')
   9079      1.1  mrg   integer,parameter :: kl = kind(.true.)
   9080      1.1  mrg 
   9081      1.1  mrg   print *, "The default character kind is ", kc
   9082      1.1  mrg   print *, "The default logical kind is ", kl
   9083      1.1  mrg end program test_kind
   9084      1.1  mrg @end smallexample
   9085      1.1  mrg 
   9086      1.1  mrg @end table
   9087      1.1  mrg 
   9088      1.1  mrg 
   9089      1.1  mrg 
   9090      1.1  mrg @node LBOUND
   9091      1.1  mrg @section @code{LBOUND} --- Lower dimension bounds of an array
   9092      1.1  mrg @fnindex LBOUND
   9093      1.1  mrg @cindex array, lower bound
   9094      1.1  mrg 
   9095      1.1  mrg @table @asis
   9096      1.1  mrg @item @emph{Description}:
   9097      1.1  mrg Returns the lower bounds of an array, or a single lower bound
   9098      1.1  mrg along the @var{DIM} dimension.
   9099      1.1  mrg @item @emph{Standard}:
   9100  1.1.1.2  mrg Fortran 90 and later, with @var{KIND} argument Fortran 2003 and later
   9101      1.1  mrg 
   9102      1.1  mrg @item @emph{Class}:
   9103      1.1  mrg Inquiry function
   9104      1.1  mrg 
   9105      1.1  mrg @item @emph{Syntax}:
   9106      1.1  mrg @code{RESULT = LBOUND(ARRAY [, DIM [, KIND]])}
   9107      1.1  mrg 
   9108      1.1  mrg @item @emph{Arguments}:
   9109      1.1  mrg @multitable @columnfractions .15 .70
   9110      1.1  mrg @item @var{ARRAY} @tab Shall be an array, of any type.
   9111      1.1  mrg @item @var{DIM} @tab (Optional) Shall be a scalar @code{INTEGER}.
   9112      1.1  mrg @item @var{KIND} @tab (Optional) An @code{INTEGER} initialization
   9113      1.1  mrg expression indicating the kind parameter of the result.
   9114      1.1  mrg @end multitable
   9115      1.1  mrg 
   9116      1.1  mrg @item @emph{Return value}:
   9117      1.1  mrg The return value is of type @code{INTEGER} and of kind @var{KIND}. If
   9118      1.1  mrg @var{KIND} is absent, the return value is of default integer kind.
   9119      1.1  mrg If @var{DIM} is absent, the result is an array of the lower bounds of
   9120      1.1  mrg @var{ARRAY}.  If @var{DIM} is present, the result is a scalar
   9121      1.1  mrg corresponding to the lower bound of the array along that dimension.  If
   9122      1.1  mrg @var{ARRAY} is an expression rather than a whole array or array
   9123      1.1  mrg structure component, or if it has a zero extent along the relevant
   9124      1.1  mrg dimension, the lower bound is taken to be 1.
   9125      1.1  mrg 
   9126      1.1  mrg @item @emph{See also}:
   9127  1.1.1.2  mrg @ref{UBOUND}, @gol
   9128  1.1.1.2  mrg @ref{LCOBOUND}
   9129      1.1  mrg @end table
   9130      1.1  mrg 
   9131      1.1  mrg 
   9132      1.1  mrg 
   9133      1.1  mrg @node LCOBOUND
   9134      1.1  mrg @section @code{LCOBOUND} --- Lower codimension bounds of an array
   9135      1.1  mrg @fnindex LCOBOUND
   9136      1.1  mrg @cindex coarray, lower bound
   9137      1.1  mrg 
   9138      1.1  mrg @table @asis
   9139      1.1  mrg @item @emph{Description}:
   9140      1.1  mrg Returns the lower bounds of a coarray, or a single lower cobound
   9141      1.1  mrg along the @var{DIM} codimension.
   9142      1.1  mrg @item @emph{Standard}:
   9143      1.1  mrg Fortran 2008 and later
   9144      1.1  mrg 
   9145      1.1  mrg @item @emph{Class}:
   9146      1.1  mrg Inquiry function
   9147      1.1  mrg 
   9148      1.1  mrg @item @emph{Syntax}:
   9149      1.1  mrg @code{RESULT = LCOBOUND(COARRAY [, DIM [, KIND]])}
   9150      1.1  mrg 
   9151      1.1  mrg @item @emph{Arguments}:
   9152      1.1  mrg @multitable @columnfractions .15 .70
   9153      1.1  mrg @item @var{ARRAY} @tab Shall be an coarray, of any type.
   9154      1.1  mrg @item @var{DIM} @tab (Optional) Shall be a scalar @code{INTEGER}.
   9155      1.1  mrg @item @var{KIND} @tab (Optional) An @code{INTEGER} initialization
   9156      1.1  mrg expression indicating the kind parameter of the result.
   9157      1.1  mrg @end multitable
   9158      1.1  mrg 
   9159      1.1  mrg @item @emph{Return value}:
   9160      1.1  mrg The return value is of type @code{INTEGER} and of kind @var{KIND}. If
   9161      1.1  mrg @var{KIND} is absent, the return value is of default integer kind.
   9162      1.1  mrg If @var{DIM} is absent, the result is an array of the lower cobounds of
   9163      1.1  mrg @var{COARRAY}.  If @var{DIM} is present, the result is a scalar
   9164      1.1  mrg corresponding to the lower cobound of the array along that codimension.
   9165      1.1  mrg 
   9166      1.1  mrg @item @emph{See also}:
   9167  1.1.1.2  mrg @ref{UCOBOUND}, @gol
   9168  1.1.1.2  mrg @ref{LBOUND}
   9169      1.1  mrg @end table
   9170      1.1  mrg 
   9171      1.1  mrg 
   9172      1.1  mrg 
   9173      1.1  mrg @node LEADZ
   9174      1.1  mrg @section @code{LEADZ} --- Number of leading zero bits of an integer
   9175      1.1  mrg @fnindex LEADZ
   9176      1.1  mrg @cindex zero bits
   9177      1.1  mrg 
   9178      1.1  mrg @table @asis
   9179      1.1  mrg @item @emph{Description}:
   9180      1.1  mrg @code{LEADZ} returns the number of leading zero bits of an integer.
   9181      1.1  mrg 
   9182      1.1  mrg @item @emph{Standard}:
   9183      1.1  mrg Fortran 2008 and later
   9184      1.1  mrg 
   9185      1.1  mrg @item @emph{Class}:
   9186      1.1  mrg Elemental function
   9187      1.1  mrg 
   9188      1.1  mrg @item @emph{Syntax}:
   9189      1.1  mrg @code{RESULT = LEADZ(I)}
   9190      1.1  mrg 
   9191      1.1  mrg @item @emph{Arguments}:
   9192      1.1  mrg @multitable @columnfractions .15 .70
   9193      1.1  mrg @item @var{I} @tab Shall be of type @code{INTEGER}.
   9194      1.1  mrg @end multitable
   9195      1.1  mrg 
   9196      1.1  mrg @item @emph{Return value}:
   9197      1.1  mrg The type of the return value is the default @code{INTEGER}.
   9198      1.1  mrg If all the bits of @code{I} are zero, the result value is @code{BIT_SIZE(I)}.
   9199      1.1  mrg 
   9200      1.1  mrg @item @emph{Example}:
   9201      1.1  mrg @smallexample
   9202      1.1  mrg PROGRAM test_leadz
   9203      1.1  mrg   WRITE (*,*) BIT_SIZE(1)  ! prints 32
   9204      1.1  mrg   WRITE (*,*) LEADZ(1)     ! prints 31
   9205      1.1  mrg END PROGRAM
   9206      1.1  mrg @end smallexample
   9207      1.1  mrg 
   9208      1.1  mrg @item @emph{See also}:
   9209  1.1.1.2  mrg @ref{BIT_SIZE}, @gol
   9210  1.1.1.2  mrg @ref{TRAILZ}, @gol
   9211  1.1.1.2  mrg @ref{POPCNT}, @gol
   9212  1.1.1.2  mrg @ref{POPPAR}
   9213      1.1  mrg @end table
   9214      1.1  mrg 
   9215      1.1  mrg 
   9216      1.1  mrg 
   9217      1.1  mrg @node LEN
   9218      1.1  mrg @section @code{LEN} --- Length of a character entity
   9219      1.1  mrg @fnindex LEN
   9220      1.1  mrg @cindex string, length
   9221      1.1  mrg 
   9222      1.1  mrg @table @asis
   9223      1.1  mrg @item @emph{Description}:
   9224      1.1  mrg Returns the length of a character string.  If @var{STRING} is an array,
   9225      1.1  mrg the length of an element of @var{STRING} is returned.  Note that
   9226      1.1  mrg @var{STRING} need not be defined when this intrinsic is invoked, since
   9227      1.1  mrg only the length, not the content, of @var{STRING} is needed.
   9228      1.1  mrg 
   9229      1.1  mrg @item @emph{Standard}:
   9230      1.1  mrg Fortran 77 and later, with @var{KIND} argument Fortran 2003 and later
   9231      1.1  mrg 
   9232      1.1  mrg @item @emph{Class}:
   9233      1.1  mrg Inquiry function
   9234      1.1  mrg 
   9235      1.1  mrg @item @emph{Syntax}:
   9236      1.1  mrg @code{L = LEN(STRING [, KIND])}
   9237      1.1  mrg 
   9238      1.1  mrg @item @emph{Arguments}:
   9239      1.1  mrg @multitable @columnfractions .15 .70
   9240      1.1  mrg @item @var{STRING} @tab Shall be a scalar or array of type
   9241      1.1  mrg @code{CHARACTER}, with @code{INTENT(IN)}
   9242      1.1  mrg @item @var{KIND} @tab (Optional) An @code{INTEGER} initialization
   9243      1.1  mrg expression indicating the kind parameter of the result.
   9244      1.1  mrg @end multitable
   9245      1.1  mrg 
   9246      1.1  mrg @item @emph{Return value}:
   9247      1.1  mrg The return value is of type @code{INTEGER} and of kind @var{KIND}. If
   9248      1.1  mrg @var{KIND} is absent, the return value is of default integer kind.
   9249      1.1  mrg 
   9250      1.1  mrg 
   9251      1.1  mrg @item @emph{Specific names}:
   9252  1.1.1.3  mrg @multitable @columnfractions .20 .23 .20 .33
   9253  1.1.1.3  mrg @headitem Name               @tab Argument          @tab Return type       @tab Standard
   9254      1.1  mrg @item @code{LEN(STRING)} @tab @code{CHARACTER}  @tab @code{INTEGER}    @tab Fortran 77 and later
   9255      1.1  mrg @end multitable
   9256      1.1  mrg 
   9257      1.1  mrg 
   9258      1.1  mrg @item @emph{See also}:
   9259  1.1.1.2  mrg @ref{LEN_TRIM}, @gol
   9260  1.1.1.2  mrg @ref{ADJUSTL}, @gol
   9261  1.1.1.2  mrg @ref{ADJUSTR}
   9262      1.1  mrg @end table
   9263      1.1  mrg 
   9264      1.1  mrg 
   9265      1.1  mrg 
   9266      1.1  mrg @node LEN_TRIM
   9267      1.1  mrg @section @code{LEN_TRIM} --- Length of a character entity without trailing blank characters
   9268      1.1  mrg @fnindex LEN_TRIM
   9269      1.1  mrg @cindex string, length, without trailing whitespace
   9270      1.1  mrg 
   9271      1.1  mrg @table @asis
   9272      1.1  mrg @item @emph{Description}:
   9273      1.1  mrg Returns the length of a character string, ignoring any trailing blanks.
   9274      1.1  mrg 
   9275      1.1  mrg @item @emph{Standard}:
   9276  1.1.1.2  mrg Fortran 90 and later, with @var{KIND} argument Fortran 2003 and later
   9277      1.1  mrg 
   9278      1.1  mrg @item @emph{Class}:
   9279      1.1  mrg Elemental function
   9280      1.1  mrg 
   9281      1.1  mrg @item @emph{Syntax}:
   9282      1.1  mrg @code{RESULT = LEN_TRIM(STRING [, KIND])}
   9283      1.1  mrg 
   9284      1.1  mrg @item @emph{Arguments}:
   9285      1.1  mrg @multitable @columnfractions .15 .70
   9286      1.1  mrg @item @var{STRING} @tab Shall be a scalar of type @code{CHARACTER},
   9287      1.1  mrg with @code{INTENT(IN)}
   9288      1.1  mrg @item @var{KIND} @tab (Optional) An @code{INTEGER} initialization
   9289      1.1  mrg expression indicating the kind parameter of the result.
   9290      1.1  mrg @end multitable
   9291      1.1  mrg 
   9292      1.1  mrg @item @emph{Return value}:
   9293      1.1  mrg The return value is of type @code{INTEGER} and of kind @var{KIND}. If
   9294      1.1  mrg @var{KIND} is absent, the return value is of default integer kind.
   9295      1.1  mrg 
   9296      1.1  mrg @item @emph{See also}:
   9297  1.1.1.2  mrg @ref{LEN}, @gol
   9298  1.1.1.2  mrg @ref{ADJUSTL}, @gol
   9299  1.1.1.2  mrg @ref{ADJUSTR}
   9300      1.1  mrg @end table
   9301      1.1  mrg 
   9302      1.1  mrg 
   9303      1.1  mrg 
   9304      1.1  mrg @node LGE
   9305      1.1  mrg @section @code{LGE} --- Lexical greater than or equal
   9306      1.1  mrg @fnindex LGE
   9307      1.1  mrg @cindex lexical comparison of strings
   9308      1.1  mrg @cindex string, comparison
   9309      1.1  mrg 
   9310      1.1  mrg @table @asis
   9311      1.1  mrg @item @emph{Description}:
   9312      1.1  mrg Determines whether one string is lexically greater than or equal to
   9313      1.1  mrg another string, where the two strings are interpreted as containing
   9314      1.1  mrg ASCII character codes.  If the String A and String B are not the same
   9315      1.1  mrg length, the shorter is compared as if spaces were appended to it to form
   9316      1.1  mrg a value that has the same length as the longer.
   9317      1.1  mrg 
   9318      1.1  mrg In general, the lexical comparison intrinsics @code{LGE}, @code{LGT},
   9319      1.1  mrg @code{LLE}, and @code{LLT} differ from the corresponding intrinsic
   9320      1.1  mrg operators @code{.GE.}, @code{.GT.}, @code{.LE.}, and @code{.LT.}, in
   9321      1.1  mrg that the latter use the processor's character ordering (which is not
   9322      1.1  mrg ASCII on some targets), whereas the former always use the ASCII
   9323      1.1  mrg ordering.
   9324      1.1  mrg 
   9325      1.1  mrg @item @emph{Standard}:
   9326      1.1  mrg Fortran 77 and later
   9327      1.1  mrg 
   9328      1.1  mrg @item @emph{Class}:
   9329      1.1  mrg Elemental function
   9330      1.1  mrg 
   9331      1.1  mrg @item @emph{Syntax}:
   9332      1.1  mrg @code{RESULT = LGE(STRING_A, STRING_B)}
   9333      1.1  mrg 
   9334      1.1  mrg @item @emph{Arguments}:
   9335      1.1  mrg @multitable @columnfractions .15 .70
   9336      1.1  mrg @item @var{STRING_A} @tab Shall be of default @code{CHARACTER} type.
   9337      1.1  mrg @item @var{STRING_B} @tab Shall be of default @code{CHARACTER} type.
   9338      1.1  mrg @end multitable
   9339      1.1  mrg 
   9340      1.1  mrg @item @emph{Return value}:
   9341      1.1  mrg Returns @code{.TRUE.} if @code{STRING_A >= STRING_B}, and @code{.FALSE.}
   9342      1.1  mrg otherwise, based on the ASCII ordering.
   9343      1.1  mrg 
   9344      1.1  mrg @item @emph{Specific names}:
   9345  1.1.1.3  mrg @multitable @columnfractions .34 .16 .17 .30
   9346  1.1.1.3  mrg @headitem Name                           @tab Argument          @tab Return type       @tab Standard
   9347  1.1.1.3  mrg @item @code{LGE(STRING_A,STRING_B)} @tab @code{CHARACTER}  @tab @code{LOGICAL}    @tab Fortran 77 and later
   9348      1.1  mrg @end multitable
   9349      1.1  mrg 
   9350      1.1  mrg @item @emph{See also}:
   9351  1.1.1.2  mrg @ref{LGT}, @gol
   9352  1.1.1.2  mrg @ref{LLE}, @gol
   9353  1.1.1.2  mrg @ref{LLT}
   9354      1.1  mrg @end table
   9355      1.1  mrg 
   9356      1.1  mrg 
   9357      1.1  mrg 
   9358      1.1  mrg @node LGT
   9359      1.1  mrg @section @code{LGT} --- Lexical greater than
   9360      1.1  mrg @fnindex LGT
   9361      1.1  mrg @cindex lexical comparison of strings
   9362      1.1  mrg @cindex string, comparison
   9363      1.1  mrg 
   9364      1.1  mrg @table @asis
   9365      1.1  mrg @item @emph{Description}:
   9366      1.1  mrg Determines whether one string is lexically greater than another string,
   9367      1.1  mrg where the two strings are interpreted as containing ASCII character
   9368      1.1  mrg codes.  If the String A and String B are not the same length, the
   9369      1.1  mrg shorter is compared as if spaces were appended to it to form a value
   9370      1.1  mrg that has the same length as the longer.
   9371      1.1  mrg 
   9372      1.1  mrg In general, the lexical comparison intrinsics @code{LGE}, @code{LGT},
   9373      1.1  mrg @code{LLE}, and @code{LLT} differ from the corresponding intrinsic
   9374      1.1  mrg operators @code{.GE.}, @code{.GT.}, @code{.LE.}, and @code{.LT.}, in
   9375      1.1  mrg that the latter use the processor's character ordering (which is not
   9376      1.1  mrg ASCII on some targets), whereas the former always use the ASCII
   9377      1.1  mrg ordering.
   9378      1.1  mrg 
   9379      1.1  mrg @item @emph{Standard}:
   9380      1.1  mrg Fortran 77 and later
   9381      1.1  mrg 
   9382      1.1  mrg @item @emph{Class}:
   9383      1.1  mrg Elemental function
   9384      1.1  mrg 
   9385      1.1  mrg @item @emph{Syntax}:
   9386      1.1  mrg @code{RESULT = LGT(STRING_A, STRING_B)}
   9387      1.1  mrg 
   9388      1.1  mrg @item @emph{Arguments}:
   9389      1.1  mrg @multitable @columnfractions .15 .70
   9390      1.1  mrg @item @var{STRING_A} @tab Shall be of default @code{CHARACTER} type.
   9391      1.1  mrg @item @var{STRING_B} @tab Shall be of default @code{CHARACTER} type.
   9392      1.1  mrg @end multitable
   9393      1.1  mrg 
   9394      1.1  mrg @item @emph{Return value}:
   9395      1.1  mrg Returns @code{.TRUE.} if @code{STRING_A > STRING_B}, and @code{.FALSE.}
   9396      1.1  mrg otherwise, based on the ASCII ordering.
   9397      1.1  mrg 
   9398      1.1  mrg @item @emph{Specific names}:
   9399  1.1.1.3  mrg @multitable @columnfractions .34 .16 .17 .30
   9400  1.1.1.3  mrg @headitem Name                           @tab Argument          @tab Return type       @tab Standard
   9401  1.1.1.3  mrg @item @code{LGT(STRING_A,STRING_B)} @tab @code{CHARACTER}  @tab @code{LOGICAL}    @tab Fortran 77 and later
   9402      1.1  mrg @end multitable
   9403      1.1  mrg 
   9404      1.1  mrg @item @emph{See also}:
   9405  1.1.1.2  mrg @ref{LGE}, @gol
   9406  1.1.1.2  mrg @ref{LLE}, @gol
   9407  1.1.1.2  mrg @ref{LLT}
   9408      1.1  mrg @end table
   9409      1.1  mrg 
   9410      1.1  mrg 
   9411      1.1  mrg 
   9412      1.1  mrg @node LINK
   9413      1.1  mrg @section @code{LINK} --- Create a hard link
   9414      1.1  mrg @fnindex LINK
   9415      1.1  mrg @cindex file system, create link
   9416      1.1  mrg @cindex file system, hard link
   9417      1.1  mrg 
   9418      1.1  mrg @table @asis
   9419      1.1  mrg @item @emph{Description}:
   9420      1.1  mrg Makes a (hard) link from file @var{PATH1} to @var{PATH2}. A null
   9421      1.1  mrg character (@code{CHAR(0)}) can be used to mark the end of the names in
   9422      1.1  mrg @var{PATH1} and @var{PATH2}; otherwise, trailing blanks in the file
   9423      1.1  mrg names are ignored.  If the @var{STATUS} argument is supplied, it
   9424      1.1  mrg contains 0 on success or a nonzero error code upon return; see
   9425      1.1  mrg @code{link(2)}.
   9426      1.1  mrg 
   9427      1.1  mrg This intrinsic is provided in both subroutine and function forms;
   9428      1.1  mrg however, only one form can be used in any given program unit.
   9429      1.1  mrg 
   9430      1.1  mrg @item @emph{Standard}:
   9431      1.1  mrg GNU extension
   9432      1.1  mrg 
   9433      1.1  mrg @item @emph{Class}:
   9434      1.1  mrg Subroutine, function
   9435      1.1  mrg 
   9436      1.1  mrg @item @emph{Syntax}:
   9437      1.1  mrg @multitable @columnfractions .80
   9438      1.1  mrg @item @code{CALL LINK(PATH1, PATH2 [, STATUS])}
   9439      1.1  mrg @item @code{STATUS = LINK(PATH1, PATH2)}
   9440      1.1  mrg @end multitable
   9441      1.1  mrg 
   9442      1.1  mrg @item @emph{Arguments}:
   9443      1.1  mrg @multitable @columnfractions .15 .70
   9444      1.1  mrg @item @var{PATH1} @tab Shall be of default @code{CHARACTER} type.
   9445      1.1  mrg @item @var{PATH2} @tab Shall be of default @code{CHARACTER} type.
   9446      1.1  mrg @item @var{STATUS} @tab (Optional) Shall be of default @code{INTEGER} type.
   9447      1.1  mrg @end multitable
   9448      1.1  mrg 
   9449      1.1  mrg @item @emph{See also}:
   9450  1.1.1.2  mrg @ref{SYMLNK}, @gol
   9451  1.1.1.2  mrg @ref{UNLINK}
   9452      1.1  mrg @end table
   9453      1.1  mrg 
   9454      1.1  mrg 
   9455      1.1  mrg 
   9456      1.1  mrg @node LLE
   9457      1.1  mrg @section @code{LLE} --- Lexical less than or equal
   9458      1.1  mrg @fnindex LLE
   9459      1.1  mrg @cindex lexical comparison of strings
   9460      1.1  mrg @cindex string, comparison
   9461      1.1  mrg 
   9462      1.1  mrg @table @asis
   9463      1.1  mrg @item @emph{Description}:
   9464      1.1  mrg Determines whether one string is lexically less than or equal to another
   9465      1.1  mrg string, where the two strings are interpreted as containing ASCII
   9466      1.1  mrg character codes.  If the String A and String B are not the same length,
   9467      1.1  mrg the shorter is compared as if spaces were appended to it to form a value
   9468      1.1  mrg that has the same length as the longer.
   9469      1.1  mrg 
   9470      1.1  mrg In general, the lexical comparison intrinsics @code{LGE}, @code{LGT},
   9471      1.1  mrg @code{LLE}, and @code{LLT} differ from the corresponding intrinsic
   9472      1.1  mrg operators @code{.GE.}, @code{.GT.}, @code{.LE.}, and @code{.LT.}, in
   9473      1.1  mrg that the latter use the processor's character ordering (which is not
   9474      1.1  mrg ASCII on some targets), whereas the former always use the ASCII
   9475      1.1  mrg ordering.
   9476      1.1  mrg 
   9477      1.1  mrg @item @emph{Standard}:
   9478      1.1  mrg Fortran 77 and later
   9479      1.1  mrg 
   9480      1.1  mrg @item @emph{Class}:
   9481      1.1  mrg Elemental function
   9482      1.1  mrg 
   9483      1.1  mrg @item @emph{Syntax}:
   9484      1.1  mrg @code{RESULT = LLE(STRING_A, STRING_B)}
   9485      1.1  mrg 
   9486      1.1  mrg @item @emph{Arguments}:
   9487      1.1  mrg @multitable @columnfractions .15 .70
   9488      1.1  mrg @item @var{STRING_A} @tab Shall be of default @code{CHARACTER} type.
   9489      1.1  mrg @item @var{STRING_B} @tab Shall be of default @code{CHARACTER} type.
   9490      1.1  mrg @end multitable
   9491      1.1  mrg 
   9492      1.1  mrg @item @emph{Return value}:
   9493      1.1  mrg Returns @code{.TRUE.} if @code{STRING_A <= STRING_B}, and @code{.FALSE.}
   9494      1.1  mrg otherwise, based on the ASCII ordering.
   9495      1.1  mrg 
   9496      1.1  mrg @item @emph{Specific names}:
   9497  1.1.1.3  mrg @multitable @columnfractions .34 .16 .17 .30
   9498  1.1.1.3  mrg @headitem Name                           @tab Argument          @tab Return type       @tab Standard
   9499  1.1.1.3  mrg @item @code{LLE(STRING_A,STRING_B)} @tab @code{CHARACTER}  @tab @code{LOGICAL}    @tab Fortran 77 and later
   9500      1.1  mrg @end multitable
   9501      1.1  mrg 
   9502      1.1  mrg @item @emph{See also}:
   9503  1.1.1.2  mrg @ref{LGE}, @gol
   9504  1.1.1.2  mrg @ref{LGT}, @gol
   9505  1.1.1.2  mrg @ref{LLT}
   9506      1.1  mrg @end table
   9507      1.1  mrg 
   9508      1.1  mrg 
   9509      1.1  mrg 
   9510      1.1  mrg @node LLT
   9511      1.1  mrg @section @code{LLT} --- Lexical less than
   9512      1.1  mrg @fnindex LLT
   9513      1.1  mrg @cindex lexical comparison of strings
   9514      1.1  mrg @cindex string, comparison
   9515      1.1  mrg 
   9516      1.1  mrg @table @asis
   9517      1.1  mrg @item @emph{Description}:
   9518      1.1  mrg Determines whether one string is lexically less than another string,
   9519      1.1  mrg where the two strings are interpreted as containing ASCII character
   9520      1.1  mrg codes.  If the String A and String B are not the same length, the
   9521      1.1  mrg shorter is compared as if spaces were appended to it to form a value
   9522      1.1  mrg that has the same length as the longer.
   9523      1.1  mrg 
   9524      1.1  mrg In general, the lexical comparison intrinsics @code{LGE}, @code{LGT},
   9525      1.1  mrg @code{LLE}, and @code{LLT} differ from the corresponding intrinsic
   9526      1.1  mrg operators @code{.GE.}, @code{.GT.}, @code{.LE.}, and @code{.LT.}, in
   9527      1.1  mrg that the latter use the processor's character ordering (which is not
   9528      1.1  mrg ASCII on some targets), whereas the former always use the ASCII
   9529      1.1  mrg ordering.
   9530      1.1  mrg 
   9531      1.1  mrg @item @emph{Standard}:
   9532      1.1  mrg Fortran 77 and later
   9533      1.1  mrg 
   9534      1.1  mrg @item @emph{Class}:
   9535      1.1  mrg Elemental function
   9536      1.1  mrg 
   9537      1.1  mrg @item @emph{Syntax}:
   9538      1.1  mrg @code{RESULT = LLT(STRING_A, STRING_B)}
   9539      1.1  mrg 
   9540      1.1  mrg @item @emph{Arguments}:
   9541      1.1  mrg @multitable @columnfractions .15 .70
   9542      1.1  mrg @item @var{STRING_A} @tab Shall be of default @code{CHARACTER} type.
   9543      1.1  mrg @item @var{STRING_B} @tab Shall be of default @code{CHARACTER} type.
   9544      1.1  mrg @end multitable
   9545      1.1  mrg 
   9546      1.1  mrg @item @emph{Return value}:
   9547      1.1  mrg Returns @code{.TRUE.} if @code{STRING_A < STRING_B}, and @code{.FALSE.}
   9548      1.1  mrg otherwise, based on the ASCII ordering.
   9549      1.1  mrg 
   9550      1.1  mrg @item @emph{Specific names}:
   9551  1.1.1.3  mrg @multitable @columnfractions .34 .16 .17 .30
   9552  1.1.1.3  mrg @headitem Name                           @tab Argument          @tab Return type       @tab Standard
   9553  1.1.1.3  mrg @item @code{LLT(STRING_A,STRING_B)} @tab @code{CHARACTER}  @tab @code{LOGICAL}    @tab Fortran 77 and later
   9554      1.1  mrg @end multitable
   9555      1.1  mrg 
   9556      1.1  mrg @item @emph{See also}:
   9557  1.1.1.2  mrg @ref{LGE}, @gol
   9558  1.1.1.2  mrg @ref{LGT}, @gol
   9559  1.1.1.2  mrg @ref{LLE}
   9560      1.1  mrg @end table
   9561      1.1  mrg 
   9562      1.1  mrg 
   9563      1.1  mrg 
   9564      1.1  mrg @node LNBLNK
   9565      1.1  mrg @section @code{LNBLNK} --- Index of the last non-blank character in a string
   9566      1.1  mrg @fnindex LNBLNK
   9567      1.1  mrg @cindex string, find non-blank character
   9568      1.1  mrg 
   9569      1.1  mrg @table @asis
   9570      1.1  mrg @item @emph{Description}:
   9571      1.1  mrg Returns the length of a character string, ignoring any trailing blanks.
   9572      1.1  mrg This is identical to the standard @code{LEN_TRIM} intrinsic, and is only
   9573      1.1  mrg included for backwards compatibility.
   9574      1.1  mrg 
   9575      1.1  mrg @item @emph{Standard}:
   9576      1.1  mrg GNU extension
   9577      1.1  mrg 
   9578      1.1  mrg @item @emph{Class}:
   9579      1.1  mrg Elemental function
   9580      1.1  mrg 
   9581      1.1  mrg @item @emph{Syntax}:
   9582      1.1  mrg @code{RESULT = LNBLNK(STRING)}
   9583      1.1  mrg 
   9584      1.1  mrg @item @emph{Arguments}:
   9585      1.1  mrg @multitable @columnfractions .15 .70
   9586      1.1  mrg @item @var{STRING} @tab Shall be a scalar of type @code{CHARACTER},
   9587      1.1  mrg with @code{INTENT(IN)}
   9588      1.1  mrg @end multitable
   9589      1.1  mrg 
   9590      1.1  mrg @item @emph{Return value}:
   9591      1.1  mrg The return value is of @code{INTEGER(kind=4)} type.
   9592      1.1  mrg 
   9593      1.1  mrg @item @emph{See also}:
   9594  1.1.1.2  mrg @ref{INDEX intrinsic}, @gol
   9595  1.1.1.2  mrg @ref{LEN_TRIM}
   9596      1.1  mrg @end table
   9597      1.1  mrg 
   9598      1.1  mrg 
   9599      1.1  mrg 
   9600      1.1  mrg @node LOC
   9601      1.1  mrg @section @code{LOC} --- Returns the address of a variable
   9602      1.1  mrg @fnindex LOC
   9603      1.1  mrg @cindex location of a variable in memory
   9604      1.1  mrg 
   9605      1.1  mrg @table @asis
   9606      1.1  mrg @item @emph{Description}:
   9607      1.1  mrg @code{LOC(X)} returns the address of @var{X} as an integer.
   9608      1.1  mrg 
   9609      1.1  mrg @item @emph{Standard}:
   9610      1.1  mrg GNU extension
   9611      1.1  mrg 
   9612      1.1  mrg @item @emph{Class}:
   9613      1.1  mrg Inquiry function
   9614      1.1  mrg 
   9615      1.1  mrg @item @emph{Syntax}:
   9616      1.1  mrg @code{RESULT = LOC(X)}
   9617      1.1  mrg 
   9618      1.1  mrg @item @emph{Arguments}:
   9619      1.1  mrg @multitable @columnfractions .15 .70
   9620      1.1  mrg @item @var{X} @tab Variable of any type.
   9621      1.1  mrg @end multitable
   9622      1.1  mrg 
   9623      1.1  mrg @item @emph{Return value}:
   9624      1.1  mrg The return value is of type @code{INTEGER}, with a @code{KIND}
   9625      1.1  mrg corresponding to the size (in bytes) of a memory address on the target
   9626      1.1  mrg machine.
   9627      1.1  mrg 
   9628      1.1  mrg @item @emph{Example}:
   9629      1.1  mrg @smallexample
   9630      1.1  mrg program test_loc
   9631      1.1  mrg   integer :: i
   9632      1.1  mrg   real :: r
   9633      1.1  mrg   i = loc(r)
   9634      1.1  mrg   print *, i
   9635      1.1  mrg end program test_loc
   9636      1.1  mrg @end smallexample
   9637      1.1  mrg @end table
   9638      1.1  mrg 
   9639      1.1  mrg 
   9640      1.1  mrg 
   9641      1.1  mrg @node LOG
   9642      1.1  mrg @section @code{LOG} --- Natural logarithm function
   9643      1.1  mrg @fnindex LOG
   9644      1.1  mrg @fnindex ALOG
   9645      1.1  mrg @fnindex DLOG
   9646      1.1  mrg @fnindex CLOG
   9647      1.1  mrg @fnindex ZLOG
   9648      1.1  mrg @fnindex CDLOG
   9649      1.1  mrg @cindex exponential function, inverse
   9650      1.1  mrg @cindex logarithm function
   9651      1.1  mrg @cindex natural logarithm function
   9652      1.1  mrg 
   9653      1.1  mrg @table @asis
   9654      1.1  mrg @item @emph{Description}:
   9655      1.1  mrg @code{LOG(X)} computes the natural logarithm of @var{X}, i.e. the
   9656      1.1  mrg logarithm to the base @math{e}.
   9657      1.1  mrg 
   9658      1.1  mrg @item @emph{Standard}:
   9659  1.1.1.2  mrg Fortran 77 and later, has GNU extensions
   9660      1.1  mrg 
   9661      1.1  mrg @item @emph{Class}:
   9662      1.1  mrg Elemental function
   9663      1.1  mrg 
   9664      1.1  mrg @item @emph{Syntax}:
   9665      1.1  mrg @code{RESULT = LOG(X)}
   9666      1.1  mrg 
   9667      1.1  mrg @item @emph{Arguments}:
   9668      1.1  mrg @multitable @columnfractions .15 .70
   9669      1.1  mrg @item @var{X} @tab The type shall be @code{REAL} or
   9670      1.1  mrg @code{COMPLEX}.
   9671      1.1  mrg @end multitable
   9672      1.1  mrg 
   9673      1.1  mrg @item @emph{Return value}:
   9674      1.1  mrg The return value is of type @code{REAL} or @code{COMPLEX}.
   9675      1.1  mrg The kind type parameter is the same as @var{X}.
   9676      1.1  mrg If @var{X} is @code{COMPLEX}, the imaginary part @math{\omega} is in the range
   9677      1.1  mrg @math{-\pi < \omega \leq \pi}.
   9678      1.1  mrg 
   9679      1.1  mrg @item @emph{Example}:
   9680      1.1  mrg @smallexample
   9681      1.1  mrg program test_log
   9682      1.1  mrg   real(8) :: x = 2.7182818284590451_8
   9683      1.1  mrg   complex :: z = (1.0, 2.0)
   9684      1.1  mrg   x = log(x)    ! will yield (approximately) 1
   9685      1.1  mrg   z = log(z)
   9686      1.1  mrg end program test_log
   9687      1.1  mrg @end smallexample
   9688      1.1  mrg 
   9689      1.1  mrg @item @emph{Specific names}:
   9690  1.1.1.3  mrg @multitable @columnfractions .20 .23 .20 .33
   9691  1.1.1.3  mrg @headitem Name            @tab Argument          @tab Return type       @tab Standard
   9692  1.1.1.2  mrg @item @code{ALOG(X)}  @tab @code{REAL(4) X}  @tab @code{REAL(4)}    @tab Fortran 77 or later
   9693  1.1.1.2  mrg @item @code{DLOG(X)}  @tab @code{REAL(8) X}  @tab @code{REAL(8)}    @tab Fortran 77 or later
   9694  1.1.1.2  mrg @item @code{CLOG(X)}  @tab @code{COMPLEX(4) X}  @tab @code{COMPLEX(4)}    @tab Fortran 77 or later
   9695  1.1.1.2  mrg @item @code{ZLOG(X)}  @tab @code{COMPLEX(8) X}  @tab @code{COMPLEX(8)}    @tab GNU extension
   9696  1.1.1.2  mrg @item @code{CDLOG(X)} @tab @code{COMPLEX(8) X}  @tab @code{COMPLEX(8)}    @tab GNU extension
   9697      1.1  mrg @end multitable
   9698      1.1  mrg @end table
   9699      1.1  mrg 
   9700      1.1  mrg 
   9701      1.1  mrg 
   9702      1.1  mrg @node LOG10
   9703      1.1  mrg @section @code{LOG10} --- Base 10 logarithm function
   9704      1.1  mrg @fnindex LOG10
   9705      1.1  mrg @fnindex ALOG10
   9706      1.1  mrg @fnindex DLOG10
   9707      1.1  mrg @cindex exponential function, inverse
   9708      1.1  mrg @cindex logarithm function with base 10
   9709      1.1  mrg @cindex base 10 logarithm function
   9710      1.1  mrg 
   9711      1.1  mrg @table @asis
   9712      1.1  mrg @item @emph{Description}:
   9713      1.1  mrg @code{LOG10(X)} computes the base 10 logarithm of @var{X}.
   9714      1.1  mrg 
   9715      1.1  mrg @item @emph{Standard}:
   9716      1.1  mrg Fortran 77 and later
   9717      1.1  mrg 
   9718      1.1  mrg @item @emph{Class}:
   9719      1.1  mrg Elemental function
   9720      1.1  mrg 
   9721      1.1  mrg @item @emph{Syntax}:
   9722      1.1  mrg @code{RESULT = LOG10(X)}
   9723      1.1  mrg 
   9724      1.1  mrg @item @emph{Arguments}:
   9725      1.1  mrg @multitable @columnfractions .15 .70
   9726      1.1  mrg @item @var{X} @tab The type shall be @code{REAL}.
   9727      1.1  mrg @end multitable
   9728      1.1  mrg 
   9729      1.1  mrg @item @emph{Return value}:
   9730      1.1  mrg The return value is of type @code{REAL} or @code{COMPLEX}.
   9731      1.1  mrg The kind type parameter is the same as @var{X}.
   9732      1.1  mrg 
   9733      1.1  mrg @item @emph{Example}:
   9734      1.1  mrg @smallexample
   9735      1.1  mrg program test_log10
   9736      1.1  mrg   real(8) :: x = 10.0_8
   9737      1.1  mrg   x = log10(x)
   9738      1.1  mrg end program test_log10
   9739      1.1  mrg @end smallexample
   9740      1.1  mrg 
   9741      1.1  mrg @item @emph{Specific names}:
   9742  1.1.1.3  mrg @multitable @columnfractions .20 .23 .20 .33
   9743  1.1.1.3  mrg @headitem Name            @tab Argument          @tab Return type       @tab Standard
   9744  1.1.1.2  mrg @item @code{ALOG10(X)}  @tab @code{REAL(4) X}  @tab @code{REAL(4)}    @tab Fortran 77 and later
   9745  1.1.1.2  mrg @item @code{DLOG10(X)}  @tab @code{REAL(8) X}  @tab @code{REAL(8)}    @tab Fortran 77 and later
   9746      1.1  mrg @end multitable
   9747      1.1  mrg @end table
   9748      1.1  mrg 
   9749      1.1  mrg 
   9750      1.1  mrg 
   9751      1.1  mrg @node LOG_GAMMA
   9752      1.1  mrg @section @code{LOG_GAMMA} --- Logarithm of the Gamma function
   9753      1.1  mrg @fnindex LOG_GAMMA
   9754      1.1  mrg @fnindex LGAMMA
   9755      1.1  mrg @fnindex ALGAMA
   9756      1.1  mrg @fnindex DLGAMA
   9757      1.1  mrg @cindex Gamma function, logarithm of
   9758      1.1  mrg 
   9759      1.1  mrg @table @asis
   9760      1.1  mrg @item @emph{Description}:
   9761      1.1  mrg @code{LOG_GAMMA(X)} computes the natural logarithm of the absolute value
   9762      1.1  mrg of the Gamma (@math{\Gamma}) function.
   9763      1.1  mrg 
   9764      1.1  mrg @item @emph{Standard}:
   9765      1.1  mrg Fortran 2008 and later
   9766      1.1  mrg 
   9767      1.1  mrg @item @emph{Class}:
   9768      1.1  mrg Elemental function
   9769      1.1  mrg 
   9770      1.1  mrg @item @emph{Syntax}:
   9771      1.1  mrg @code{X = LOG_GAMMA(X)}
   9772      1.1  mrg 
   9773      1.1  mrg @item @emph{Arguments}:
   9774      1.1  mrg @multitable @columnfractions .15 .70
   9775      1.1  mrg @item @var{X} @tab Shall be of type @code{REAL} and neither zero
   9776      1.1  mrg nor a negative integer.
   9777      1.1  mrg @end multitable
   9778      1.1  mrg 
   9779      1.1  mrg @item @emph{Return value}:
   9780      1.1  mrg The return value is of type @code{REAL} of the same kind as @var{X}.
   9781      1.1  mrg 
   9782      1.1  mrg @item @emph{Example}:
   9783      1.1  mrg @smallexample
   9784      1.1  mrg program test_log_gamma
   9785      1.1  mrg   real :: x = 1.0
   9786      1.1  mrg   x = lgamma(x) ! returns 0.0
   9787      1.1  mrg end program test_log_gamma
   9788      1.1  mrg @end smallexample
   9789      1.1  mrg 
   9790      1.1  mrg @item @emph{Specific names}:
   9791  1.1.1.3  mrg @multitable @columnfractions .20 .23 .20 .33
   9792  1.1.1.3  mrg @headitem Name             @tab Argument         @tab Return type       @tab Standard
   9793  1.1.1.2  mrg @item @code{LGAMMA(X)} @tab @code{REAL(4) X} @tab @code{REAL(4)}    @tab GNU extension
   9794  1.1.1.2  mrg @item @code{ALGAMA(X)} @tab @code{REAL(4) X} @tab @code{REAL(4)}    @tab GNU extension
   9795  1.1.1.2  mrg @item @code{DLGAMA(X)} @tab @code{REAL(8) X} @tab @code{REAL(8)}    @tab GNU extension
   9796      1.1  mrg @end multitable
   9797      1.1  mrg 
   9798      1.1  mrg @item @emph{See also}:
   9799  1.1.1.2  mrg Gamma function: @gol
   9800  1.1.1.2  mrg @ref{GAMMA}
   9801      1.1  mrg @end table
   9802      1.1  mrg 
   9803      1.1  mrg 
   9804      1.1  mrg 
   9805      1.1  mrg @node LOGICAL
   9806      1.1  mrg @section @code{LOGICAL} --- Convert to logical type
   9807      1.1  mrg @fnindex LOGICAL
   9808      1.1  mrg @cindex conversion, to logical
   9809      1.1  mrg 
   9810      1.1  mrg @table @asis
   9811      1.1  mrg @item @emph{Description}:
   9812      1.1  mrg Converts one kind of @code{LOGICAL} variable to another.
   9813      1.1  mrg 
   9814      1.1  mrg @item @emph{Standard}:
   9815  1.1.1.2  mrg Fortran 90 and later
   9816      1.1  mrg 
   9817      1.1  mrg @item @emph{Class}:
   9818      1.1  mrg Elemental function
   9819      1.1  mrg 
   9820      1.1  mrg @item @emph{Syntax}:
   9821      1.1  mrg @code{RESULT = LOGICAL(L [, KIND])}
   9822      1.1  mrg 
   9823      1.1  mrg @item @emph{Arguments}:
   9824      1.1  mrg @multitable @columnfractions .15 .70
   9825      1.1  mrg @item @var{L}    @tab The type shall be @code{LOGICAL}.
   9826      1.1  mrg @item @var{KIND} @tab (Optional) An @code{INTEGER} initialization
   9827      1.1  mrg expression indicating the kind parameter of the result.
   9828      1.1  mrg @end multitable
   9829      1.1  mrg 
   9830      1.1  mrg @item @emph{Return value}:
   9831      1.1  mrg The return value is a @code{LOGICAL} value equal to @var{L}, with a
   9832      1.1  mrg kind corresponding to @var{KIND}, or of the default logical kind if
   9833      1.1  mrg @var{KIND} is not given.
   9834      1.1  mrg 
   9835      1.1  mrg @item @emph{See also}:
   9836  1.1.1.2  mrg @ref{INT}, @gol
   9837  1.1.1.2  mrg @ref{REAL}, @gol
   9838  1.1.1.2  mrg @ref{CMPLX}
   9839      1.1  mrg @end table
   9840      1.1  mrg 
   9841      1.1  mrg 
   9842      1.1  mrg 
   9843      1.1  mrg @node LSHIFT
   9844      1.1  mrg @section @code{LSHIFT} --- Left shift bits
   9845      1.1  mrg @fnindex LSHIFT
   9846      1.1  mrg @cindex bits, shift left
   9847      1.1  mrg 
   9848      1.1  mrg @table @asis
   9849      1.1  mrg @item @emph{Description}:
   9850      1.1  mrg @code{LSHIFT} returns a value corresponding to @var{I} with all of the
   9851      1.1  mrg bits shifted left by @var{SHIFT} places.  @var{SHIFT} shall be
   9852      1.1  mrg nonnegative and less than or equal to @code{BIT_SIZE(I)}, otherwise
   9853      1.1  mrg the result value is undefined.  Bits shifted out from the left end are
   9854      1.1  mrg lost; zeros are shifted in from the opposite end.
   9855      1.1  mrg 
   9856      1.1  mrg This function has been superseded by the @code{ISHFT} intrinsic, which
   9857      1.1  mrg is standard in Fortran 95 and later, and the @code{SHIFTL} intrinsic,
   9858      1.1  mrg which is standard in Fortran 2008 and later.
   9859      1.1  mrg 
   9860      1.1  mrg @item @emph{Standard}:
   9861      1.1  mrg GNU extension
   9862      1.1  mrg 
   9863      1.1  mrg @item @emph{Class}:
   9864      1.1  mrg Elemental function
   9865      1.1  mrg 
   9866      1.1  mrg @item @emph{Syntax}:
   9867      1.1  mrg @code{RESULT = LSHIFT(I, SHIFT)}
   9868      1.1  mrg 
   9869      1.1  mrg @item @emph{Arguments}:
   9870      1.1  mrg @multitable @columnfractions .15 .70
   9871      1.1  mrg @item @var{I} @tab The type shall be @code{INTEGER}.
   9872      1.1  mrg @item @var{SHIFT} @tab The type shall be @code{INTEGER}.
   9873      1.1  mrg @end multitable
   9874      1.1  mrg 
   9875      1.1  mrg @item @emph{Return value}:
   9876      1.1  mrg The return value is of type @code{INTEGER} and of the same kind as
   9877      1.1  mrg @var{I}.
   9878      1.1  mrg 
   9879      1.1  mrg @item @emph{See also}:
   9880  1.1.1.2  mrg @ref{ISHFT}, @gol
   9881  1.1.1.2  mrg @ref{ISHFTC}, @gol
   9882  1.1.1.2  mrg @ref{RSHIFT}, @gol
   9883  1.1.1.2  mrg @ref{SHIFTA}, @gol
   9884  1.1.1.2  mrg @ref{SHIFTL}, @gol
   9885      1.1  mrg @ref{SHIFTR}
   9886      1.1  mrg @end table
   9887      1.1  mrg 
   9888      1.1  mrg 
   9889      1.1  mrg 
   9890      1.1  mrg @node LSTAT
   9891      1.1  mrg @section @code{LSTAT} --- Get file status
   9892      1.1  mrg @fnindex LSTAT
   9893      1.1  mrg @cindex file system, file status
   9894      1.1  mrg 
   9895      1.1  mrg @table @asis
   9896      1.1  mrg @item @emph{Description}:
   9897      1.1  mrg @code{LSTAT} is identical to @ref{STAT}, except that if path is a
   9898      1.1  mrg symbolic link, then the link itself is statted, not the file that it
   9899      1.1  mrg refers to.
   9900      1.1  mrg 
   9901      1.1  mrg The elements in @code{VALUES} are the same as described by @ref{STAT}.
   9902      1.1  mrg 
   9903      1.1  mrg This intrinsic is provided in both subroutine and function forms;
   9904      1.1  mrg however, only one form can be used in any given program unit.
   9905      1.1  mrg 
   9906      1.1  mrg @item @emph{Standard}:
   9907      1.1  mrg GNU extension
   9908      1.1  mrg 
   9909      1.1  mrg @item @emph{Class}:
   9910      1.1  mrg Subroutine, function
   9911      1.1  mrg 
   9912      1.1  mrg @item @emph{Syntax}:
   9913      1.1  mrg @multitable @columnfractions .80
   9914      1.1  mrg @item @code{CALL LSTAT(NAME, VALUES [, STATUS])}
   9915      1.1  mrg @item @code{STATUS = LSTAT(NAME, VALUES)}
   9916      1.1  mrg @end multitable
   9917      1.1  mrg 
   9918      1.1  mrg @item @emph{Arguments}:
   9919      1.1  mrg @multitable @columnfractions .15 .70
   9920      1.1  mrg @item @var{NAME}   @tab The type shall be @code{CHARACTER} of the default
   9921      1.1  mrg kind, a valid path within the file system.
   9922      1.1  mrg @item @var{VALUES} @tab The type shall be @code{INTEGER(4), DIMENSION(13)}.
   9923      1.1  mrg @item @var{STATUS} @tab (Optional) status flag of type @code{INTEGER(4)}.
   9924      1.1  mrg Returns 0 on success and a system specific error code otherwise.
   9925      1.1  mrg @end multitable
   9926      1.1  mrg 
   9927      1.1  mrg @item @emph{Example}:
   9928      1.1  mrg See @ref{STAT} for an example.
   9929      1.1  mrg 
   9930      1.1  mrg @item @emph{See also}:
   9931  1.1.1.2  mrg To stat an open file: @gol
   9932  1.1.1.2  mrg @ref{FSTAT} @gol
   9933  1.1.1.2  mrg To stat a file: @gol
   9934  1.1.1.2  mrg @ref{STAT}
   9935      1.1  mrg @end table
   9936      1.1  mrg 
   9937      1.1  mrg 
   9938      1.1  mrg 
   9939      1.1  mrg @node LTIME
   9940      1.1  mrg @section @code{LTIME} --- Convert time to local time info
   9941      1.1  mrg @fnindex LTIME
   9942      1.1  mrg @cindex time, conversion to local time info
   9943      1.1  mrg 
   9944      1.1  mrg @table @asis
   9945      1.1  mrg @item @emph{Description}:
   9946      1.1  mrg Given a system time value @var{TIME} (as provided by the @ref{TIME}
   9947      1.1  mrg intrinsic), fills @var{VALUES} with values extracted from it appropriate
   9948      1.1  mrg to the local time zone using @code{localtime(3)}.
   9949      1.1  mrg 
   9950      1.1  mrg This intrinsic routine is provided for backwards compatibility with 
   9951      1.1  mrg GNU Fortran 77.  In new code, programmers should consider the use of 
   9952      1.1  mrg the @ref{DATE_AND_TIME} intrinsic defined by the Fortran 95
   9953      1.1  mrg standard.
   9954      1.1  mrg 
   9955      1.1  mrg @item @emph{Standard}:
   9956      1.1  mrg GNU extension
   9957      1.1  mrg 
   9958      1.1  mrg @item @emph{Class}:
   9959      1.1  mrg Subroutine
   9960      1.1  mrg 
   9961      1.1  mrg @item @emph{Syntax}:
   9962      1.1  mrg @code{CALL LTIME(TIME, VALUES)}
   9963      1.1  mrg 
   9964      1.1  mrg @item @emph{Arguments}:
   9965      1.1  mrg @multitable @columnfractions .15 .70
   9966      1.1  mrg @item @var{TIME}  @tab An @code{INTEGER} scalar expression
   9967      1.1  mrg corresponding to a system time, with @code{INTENT(IN)}.
   9968      1.1  mrg @item @var{VALUES} @tab A default @code{INTEGER} array with 9 elements,
   9969      1.1  mrg with @code{INTENT(OUT)}.
   9970      1.1  mrg @end multitable
   9971      1.1  mrg 
   9972      1.1  mrg @item @emph{Return value}:
   9973      1.1  mrg The elements of @var{VALUES} are assigned as follows:
   9974      1.1  mrg @enumerate
   9975      1.1  mrg @item Seconds after the minute, range 0--59 or 0--61 to allow for leap
   9976      1.1  mrg seconds
   9977      1.1  mrg @item Minutes after the hour, range 0--59
   9978      1.1  mrg @item Hours past midnight, range 0--23
   9979      1.1  mrg @item Day of month, range 1--31
   9980      1.1  mrg @item Number of months since January, range 0--11
   9981      1.1  mrg @item Years since 1900
   9982      1.1  mrg @item Number of days since Sunday, range 0--6
   9983      1.1  mrg @item Days since January 1, range 0--365
   9984      1.1  mrg @item Daylight savings indicator: positive if daylight savings is in
   9985      1.1  mrg effect, zero if not, and negative if the information is not available.
   9986      1.1  mrg @end enumerate
   9987      1.1  mrg 
   9988      1.1  mrg @item @emph{See also}:
   9989  1.1.1.2  mrg @ref{DATE_AND_TIME}, @gol
   9990  1.1.1.2  mrg @ref{CTIME}, @gol
   9991  1.1.1.2  mrg @ref{GMTIME}, @gol
   9992  1.1.1.2  mrg @ref{TIME}, @gol
   9993  1.1.1.2  mrg @ref{TIME8}
   9994      1.1  mrg @end table
   9995      1.1  mrg 
   9996      1.1  mrg 
   9997      1.1  mrg 
   9998      1.1  mrg @node MALLOC
   9999      1.1  mrg @section @code{MALLOC} --- Allocate dynamic memory
   10000      1.1  mrg @fnindex MALLOC
   10001      1.1  mrg @cindex pointer, cray
   10002      1.1  mrg 
   10003      1.1  mrg @table @asis
   10004      1.1  mrg @item @emph{Description}:
   10005      1.1  mrg @code{MALLOC(SIZE)} allocates @var{SIZE} bytes of dynamic memory and
   10006      1.1  mrg returns the address of the allocated memory. The @code{MALLOC} intrinsic
   10007      1.1  mrg is an extension intended to be used with Cray pointers, and is provided
   10008      1.1  mrg in GNU Fortran to allow the user to compile legacy code. For new code
   10009      1.1  mrg using Fortran 95 pointers, the memory allocation intrinsic is
   10010      1.1  mrg @code{ALLOCATE}.
   10011      1.1  mrg 
   10012      1.1  mrg @item @emph{Standard}:
   10013      1.1  mrg GNU extension
   10014      1.1  mrg 
   10015      1.1  mrg @item @emph{Class}:
   10016      1.1  mrg Function
   10017      1.1  mrg 
   10018      1.1  mrg @item @emph{Syntax}:
   10019      1.1  mrg @code{PTR = MALLOC(SIZE)}
   10020      1.1  mrg 
   10021      1.1  mrg @item @emph{Arguments}:
   10022      1.1  mrg @multitable @columnfractions .15 .70
   10023      1.1  mrg @item @var{SIZE} @tab The type shall be @code{INTEGER}.
   10024      1.1  mrg @end multitable
   10025      1.1  mrg 
   10026      1.1  mrg @item @emph{Return value}:
   10027      1.1  mrg The return value is of type @code{INTEGER(K)}, with @var{K} such that
   10028      1.1  mrg variables of type @code{INTEGER(K)} have the same size as
   10029      1.1  mrg C pointers (@code{sizeof(void *)}).
   10030      1.1  mrg 
   10031      1.1  mrg @item @emph{Example}:
   10032      1.1  mrg The following example demonstrates the use of @code{MALLOC} and
   10033      1.1  mrg @code{FREE} with Cray pointers.
   10034      1.1  mrg 
   10035      1.1  mrg @smallexample
   10036      1.1  mrg program test_malloc
   10037      1.1  mrg   implicit none
   10038      1.1  mrg   integer i
   10039      1.1  mrg   real*8 x(*), z
   10040      1.1  mrg   pointer(ptr_x,x)
   10041      1.1  mrg 
   10042      1.1  mrg   ptr_x = malloc(20*8)
   10043      1.1  mrg   do i = 1, 20
   10044      1.1  mrg     x(i) = sqrt(1.0d0 / i)
   10045      1.1  mrg   end do
   10046      1.1  mrg   z = 0
   10047      1.1  mrg   do i = 1, 20
   10048      1.1  mrg     z = z + x(i)
   10049      1.1  mrg     print *, z
   10050      1.1  mrg   end do
   10051      1.1  mrg   call free(ptr_x)
   10052      1.1  mrg end program test_malloc
   10053      1.1  mrg @end smallexample
   10054      1.1  mrg 
   10055      1.1  mrg @item @emph{See also}:
   10056      1.1  mrg @ref{FREE}
   10057      1.1  mrg @end table
   10058      1.1  mrg 
   10059      1.1  mrg 
   10060      1.1  mrg 
   10061      1.1  mrg @node MASKL
   10062      1.1  mrg @section @code{MASKL} --- Left justified mask
   10063      1.1  mrg @fnindex MASKL
   10064      1.1  mrg @cindex mask, left justified
   10065      1.1  mrg 
   10066      1.1  mrg @table @asis
   10067      1.1  mrg @item @emph{Description}:
   10068      1.1  mrg @code{MASKL(I[, KIND])} has its leftmost @var{I} bits set to 1, and the
   10069      1.1  mrg remaining bits set to 0.
   10070      1.1  mrg 
   10071      1.1  mrg @item @emph{Standard}:
   10072      1.1  mrg Fortran 2008 and later
   10073      1.1  mrg 
   10074      1.1  mrg @item @emph{Class}:
   10075      1.1  mrg Elemental function
   10076      1.1  mrg 
   10077      1.1  mrg @item @emph{Syntax}:
   10078      1.1  mrg @code{RESULT = MASKL(I[, KIND])}
   10079      1.1  mrg 
   10080      1.1  mrg @item @emph{Arguments}:
   10081      1.1  mrg @multitable @columnfractions .15 .70
   10082      1.1  mrg @item @var{I} @tab Shall be of type @code{INTEGER}.
   10083      1.1  mrg @item @var{KIND} @tab Shall be a scalar constant expression of type
   10084      1.1  mrg @code{INTEGER}.
   10085      1.1  mrg @end multitable
   10086      1.1  mrg 
   10087      1.1  mrg @item @emph{Return value}:
   10088      1.1  mrg The return value is of type @code{INTEGER}. If @var{KIND} is present, it
   10089      1.1  mrg specifies the kind value of the return type; otherwise, it is of the
   10090      1.1  mrg default integer kind.
   10091      1.1  mrg 
   10092      1.1  mrg @item @emph{See also}:
   10093      1.1  mrg @ref{MASKR}
   10094      1.1  mrg @end table
   10095      1.1  mrg 
   10096      1.1  mrg 
   10097      1.1  mrg 
   10098      1.1  mrg @node MASKR
   10099      1.1  mrg @section @code{MASKR} --- Right justified mask
   10100      1.1  mrg @fnindex MASKR
   10101      1.1  mrg @cindex mask, right justified
   10102      1.1  mrg 
   10103      1.1  mrg @table @asis
   10104      1.1  mrg @item @emph{Description}:
   10105      1.1  mrg @code{MASKL(I[, KIND])} has its rightmost @var{I} bits set to 1, and the
   10106      1.1  mrg remaining bits set to 0.
   10107      1.1  mrg 
   10108      1.1  mrg @item @emph{Standard}:
   10109      1.1  mrg Fortran 2008 and later
   10110      1.1  mrg 
   10111      1.1  mrg @item @emph{Class}:
   10112      1.1  mrg Elemental function
   10113      1.1  mrg 
   10114      1.1  mrg @item @emph{Syntax}:
   10115      1.1  mrg @code{RESULT = MASKR(I[, KIND])}
   10116      1.1  mrg 
   10117      1.1  mrg @item @emph{Arguments}:
   10118      1.1  mrg @multitable @columnfractions .15 .70
   10119      1.1  mrg @item @var{I} @tab Shall be of type @code{INTEGER}.
   10120      1.1  mrg @item @var{KIND} @tab Shall be a scalar constant expression of type
   10121      1.1  mrg @code{INTEGER}.
   10122      1.1  mrg @end multitable
   10123      1.1  mrg 
   10124      1.1  mrg @item @emph{Return value}:
   10125      1.1  mrg The return value is of type @code{INTEGER}. If @var{KIND} is present, it
   10126      1.1  mrg specifies the kind value of the return type; otherwise, it is of the
   10127      1.1  mrg default integer kind.
   10128      1.1  mrg 
   10129      1.1  mrg @item @emph{See also}:
   10130      1.1  mrg @ref{MASKL}
   10131      1.1  mrg @end table
   10132      1.1  mrg 
   10133      1.1  mrg 
   10134      1.1  mrg 
   10135      1.1  mrg @node MATMUL
   10136      1.1  mrg @section @code{MATMUL} --- matrix multiplication
   10137      1.1  mrg @fnindex MATMUL
   10138      1.1  mrg @cindex matrix multiplication
   10139      1.1  mrg @cindex product, matrix
   10140      1.1  mrg 
   10141      1.1  mrg @table @asis
   10142      1.1  mrg @item @emph{Description}:
   10143      1.1  mrg Performs a matrix multiplication on numeric or logical arguments.
   10144      1.1  mrg 
   10145      1.1  mrg @item @emph{Standard}:
   10146  1.1.1.2  mrg Fortran 90 and later
   10147      1.1  mrg 
   10148      1.1  mrg @item @emph{Class}:
   10149      1.1  mrg Transformational function
   10150      1.1  mrg 
   10151      1.1  mrg @item @emph{Syntax}:
   10152      1.1  mrg @code{RESULT = MATMUL(MATRIX_A, MATRIX_B)}
   10153      1.1  mrg 
   10154      1.1  mrg @item @emph{Arguments}:
   10155      1.1  mrg @multitable @columnfractions .15 .70
   10156      1.1  mrg @item @var{MATRIX_A} @tab An array of @code{INTEGER},
   10157      1.1  mrg @code{REAL}, @code{COMPLEX}, or @code{LOGICAL} type, with a rank of
   10158      1.1  mrg one or two.
   10159      1.1  mrg @item @var{MATRIX_B} @tab An array of @code{INTEGER},
   10160      1.1  mrg @code{REAL}, or @code{COMPLEX} type if @var{MATRIX_A} is of a numeric
   10161      1.1  mrg type; otherwise, an array of @code{LOGICAL} type. The rank shall be one
   10162      1.1  mrg or two, and the first (or only) dimension of @var{MATRIX_B} shall be
   10163      1.1  mrg equal to the last (or only) dimension of @var{MATRIX_A}.
   10164      1.1  mrg @var{MATRIX_A} and @var{MATRIX_B} shall not both be rank one arrays.
   10165      1.1  mrg @end multitable
   10166      1.1  mrg 
   10167      1.1  mrg @item @emph{Return value}:
   10168      1.1  mrg The matrix product of @var{MATRIX_A} and @var{MATRIX_B}.  The type and
   10169      1.1  mrg kind of the result follow the usual type and kind promotion rules, as
   10170      1.1  mrg for the @code{*} or @code{.AND.} operators.
   10171      1.1  mrg @end table
   10172      1.1  mrg 
   10173      1.1  mrg 
   10174      1.1  mrg 
   10175      1.1  mrg @node MAX
   10176      1.1  mrg @section @code{MAX} --- Maximum value of an argument list
   10177      1.1  mrg @fnindex MAX
   10178      1.1  mrg @fnindex MAX0
   10179      1.1  mrg @fnindex AMAX0
   10180      1.1  mrg @fnindex MAX1
   10181      1.1  mrg @fnindex AMAX1
   10182      1.1  mrg @fnindex DMAX1
   10183      1.1  mrg @cindex maximum value
   10184      1.1  mrg 
   10185      1.1  mrg @table @asis
   10186      1.1  mrg @item @emph{Description}:
   10187      1.1  mrg Returns the argument with the largest (most positive) value.
   10188      1.1  mrg 
   10189      1.1  mrg @item @emph{Standard}:
   10190      1.1  mrg Fortran 77 and later
   10191      1.1  mrg 
   10192      1.1  mrg @item @emph{Class}:
   10193      1.1  mrg Elemental function
   10194      1.1  mrg 
   10195      1.1  mrg @item @emph{Syntax}:
   10196      1.1  mrg @code{RESULT = MAX(A1, A2 [, A3 [, ...]])}
   10197      1.1  mrg 
   10198      1.1  mrg @item @emph{Arguments}:
   10199      1.1  mrg @multitable @columnfractions .15 .70
   10200      1.1  mrg @item @var{A1}          @tab The type shall be @code{INTEGER} or
   10201      1.1  mrg @code{REAL}.
   10202      1.1  mrg @item @var{A2}, @var{A3}, ... @tab An expression of the same type and kind
   10203      1.1  mrg as @var{A1}.  (As a GNU extension, arguments of different kinds are
   10204      1.1  mrg permitted.)
   10205      1.1  mrg @end multitable
   10206      1.1  mrg 
   10207      1.1  mrg @item @emph{Return value}:
   10208      1.1  mrg The return value corresponds to the maximum value among the arguments,
   10209      1.1  mrg and has the same type and kind as the first argument.
   10210      1.1  mrg 
   10211      1.1  mrg @item @emph{Specific names}:
   10212  1.1.1.3  mrg @multitable @columnfractions .20 .23 .20 .33
   10213  1.1.1.3  mrg @headitem Name             @tab Argument             @tab Return type         @tab Standard
   10214      1.1  mrg @item @code{MAX0(A1)}  @tab @code{INTEGER(4) A1} @tab @code{INTEGER(4)}   @tab Fortran 77 and later
   10215      1.1  mrg @item @code{AMAX0(A1)} @tab @code{INTEGER(4) A1} @tab @code{REAL(MAX(X))} @tab Fortran 77 and later
   10216      1.1  mrg @item @code{MAX1(A1)}  @tab @code{REAL A1}       @tab @code{INT(MAX(X))}  @tab Fortran 77 and later
   10217      1.1  mrg @item @code{AMAX1(A1)} @tab @code{REAL(4) A1}    @tab @code{REAL(4)}      @tab Fortran 77 and later
   10218      1.1  mrg @item @code{DMAX1(A1)} @tab @code{REAL(8) A1}    @tab @code{REAL(8)}      @tab Fortran 77 and later
   10219      1.1  mrg @end multitable
   10220      1.1  mrg 
   10221      1.1  mrg @item @emph{See also}:
   10222  1.1.1.2  mrg @ref{MAXLOC} @gol
   10223  1.1.1.2  mrg @ref{MAXVAL}, @gol
   10224  1.1.1.2  mrg @ref{MIN}
   10225      1.1  mrg @end table
   10226      1.1  mrg 
   10227      1.1  mrg 
   10228      1.1  mrg 
   10229      1.1  mrg @node MAXEXPONENT
   10230      1.1  mrg @section @code{MAXEXPONENT} --- Maximum exponent of a real kind
   10231      1.1  mrg @fnindex MAXEXPONENT
   10232      1.1  mrg @cindex model representation, maximum exponent
   10233      1.1  mrg 
   10234      1.1  mrg @table @asis
   10235      1.1  mrg @item @emph{Description}:
   10236      1.1  mrg @code{MAXEXPONENT(X)} returns the maximum exponent in the model of the
   10237      1.1  mrg type of @code{X}.
   10238      1.1  mrg 
   10239      1.1  mrg @item @emph{Standard}:
   10240  1.1.1.2  mrg Fortran 90 and later
   10241      1.1  mrg 
   10242      1.1  mrg @item @emph{Class}:
   10243      1.1  mrg Inquiry function
   10244      1.1  mrg 
   10245      1.1  mrg @item @emph{Syntax}:
   10246      1.1  mrg @code{RESULT = MAXEXPONENT(X)}
   10247      1.1  mrg 
   10248      1.1  mrg @item @emph{Arguments}:
   10249      1.1  mrg @multitable @columnfractions .15 .70
   10250      1.1  mrg @item @var{X} @tab Shall be of type @code{REAL}.
   10251      1.1  mrg @end multitable
   10252      1.1  mrg 
   10253      1.1  mrg @item @emph{Return value}:
   10254      1.1  mrg The return value is of type @code{INTEGER} and of the default integer
   10255      1.1  mrg kind.
   10256      1.1  mrg 
   10257      1.1  mrg @item @emph{Example}:
   10258      1.1  mrg @smallexample
   10259      1.1  mrg program exponents
   10260      1.1  mrg   real(kind=4) :: x
   10261      1.1  mrg   real(kind=8) :: y
   10262      1.1  mrg 
   10263      1.1  mrg   print *, minexponent(x), maxexponent(x)
   10264      1.1  mrg   print *, minexponent(y), maxexponent(y)
   10265      1.1  mrg end program exponents
   10266      1.1  mrg @end smallexample
   10267      1.1  mrg @end table
   10268      1.1  mrg 
   10269      1.1  mrg 
   10270      1.1  mrg 
   10271      1.1  mrg @node MAXLOC
   10272      1.1  mrg @section @code{MAXLOC} --- Location of the maximum value within an array
   10273      1.1  mrg @fnindex MAXLOC
   10274      1.1  mrg @cindex array, location of maximum element
   10275      1.1  mrg 
   10276      1.1  mrg @table @asis
   10277      1.1  mrg @item @emph{Description}:
   10278      1.1  mrg Determines the location of the element in the array with the maximum
   10279      1.1  mrg value, or, if the @var{DIM} argument is supplied, determines the
   10280      1.1  mrg locations of the maximum element along each row of the array in the
   10281      1.1  mrg @var{DIM} direction.  If @var{MASK} is present, only the elements for
   10282      1.1  mrg which @var{MASK} is @code{.TRUE.} are considered.  If more than one
   10283      1.1  mrg element in the array has the maximum value, the location returned is
   10284      1.1  mrg that of the first such element in array element order if the
   10285      1.1  mrg @var{BACK} is not present, or is false; if @var{BACK} is true, the location
   10286      1.1  mrg returned is that of the last such element. If the array has zero
   10287      1.1  mrg size, or all of the elements of @var{MASK} are @code{.FALSE.}, then
   10288      1.1  mrg the result is an array of zeroes.  Similarly, if @var{DIM} is supplied
   10289      1.1  mrg and all of the elements of @var{MASK} along a given row are zero, the
   10290      1.1  mrg result value for that row is zero.
   10291      1.1  mrg 
   10292      1.1  mrg @item @emph{Standard}:
   10293      1.1  mrg Fortran 95 and later; @var{ARRAY} of @code{CHARACTER} and the
   10294      1.1  mrg @var{KIND} argument are available in Fortran 2003 and later.
   10295      1.1  mrg The @var{BACK} argument is available in Fortran 2008 and later.
   10296      1.1  mrg 
   10297      1.1  mrg @item @emph{Class}:
   10298      1.1  mrg Transformational function
   10299      1.1  mrg 
   10300      1.1  mrg @item @emph{Syntax}:
   10301      1.1  mrg @multitable @columnfractions .80
   10302      1.1  mrg @item @code{RESULT = MAXLOC(ARRAY, DIM [, MASK] [,KIND] [,BACK])}
   10303      1.1  mrg @item @code{RESULT = MAXLOC(ARRAY [, MASK] [,KIND] [,BACK])}
   10304      1.1  mrg @end multitable
   10305      1.1  mrg 
   10306      1.1  mrg @item @emph{Arguments}:
   10307      1.1  mrg @multitable @columnfractions .15 .70
   10308      1.1  mrg @item @var{ARRAY} @tab Shall be an array of type @code{INTEGER} or
   10309      1.1  mrg @code{REAL}.
   10310      1.1  mrg @item @var{DIM}   @tab (Optional) Shall be a scalar of type
   10311      1.1  mrg @code{INTEGER}, with a value between one and the rank of @var{ARRAY},
   10312      1.1  mrg inclusive.  It may not be an optional dummy argument.
   10313  1.1.1.3  mrg @item @var{MASK}  @tab Shall be of type @code{LOGICAL},
   10314      1.1  mrg and conformable with @var{ARRAY}.
   10315      1.1  mrg @item @var{KIND} @tab (Optional) An @code{INTEGER} initialization
   10316      1.1  mrg expression indicating the kind parameter of the result.
   10317      1.1  mrg @item @var{BACK} @tab (Optional) A scalar of type @code{LOGICAL}.
   10318      1.1  mrg @end multitable
   10319      1.1  mrg 
   10320      1.1  mrg @item @emph{Return value}:
   10321      1.1  mrg If @var{DIM} is absent, the result is a rank-one array with a length
   10322      1.1  mrg equal to the rank of @var{ARRAY}.  If @var{DIM} is present, the result
   10323      1.1  mrg is an array with a rank one less than the rank of @var{ARRAY}, and a
   10324      1.1  mrg size corresponding to the size of @var{ARRAY} with the @var{DIM}
   10325      1.1  mrg dimension removed.  If @var{DIM} is present and @var{ARRAY} has a rank
   10326      1.1  mrg of one, the result is a scalar.   If the optional argument @var{KIND}
   10327      1.1  mrg is present, the result is an integer of kind @var{KIND}, otherwise it
   10328      1.1  mrg is of default kind.
   10329      1.1  mrg 
   10330      1.1  mrg @item @emph{See also}:
   10331  1.1.1.2  mrg @ref{FINDLOC}, @gol
   10332  1.1.1.2  mrg @ref{MAX}, @gol
   10333  1.1.1.2  mrg @ref{MAXVAL}
   10334      1.1  mrg @end table
   10335      1.1  mrg 
   10336      1.1  mrg 
   10337      1.1  mrg 
   10338      1.1  mrg @node MAXVAL
   10339      1.1  mrg @section @code{MAXVAL} --- Maximum value of an array
   10340      1.1  mrg @fnindex MAXVAL
   10341      1.1  mrg @cindex array, maximum value
   10342      1.1  mrg @cindex maximum value
   10343      1.1  mrg 
   10344      1.1  mrg @table @asis
   10345      1.1  mrg @item @emph{Description}:
   10346      1.1  mrg Determines the maximum value of the elements in an array value, or, if
   10347      1.1  mrg the @var{DIM} argument is supplied, determines the maximum value along
   10348      1.1  mrg each row of the array in the @var{DIM} direction.  If @var{MASK} is
   10349      1.1  mrg present, only the elements for which @var{MASK} is @code{.TRUE.} are
   10350      1.1  mrg considered.  If the array has zero size, or all of the elements of
   10351      1.1  mrg @var{MASK} are @code{.FALSE.}, then the result is @code{-HUGE(ARRAY)}
   10352      1.1  mrg if @var{ARRAY} is numeric, or a string of nulls if @var{ARRAY} is of character
   10353      1.1  mrg type.
   10354      1.1  mrg 
   10355      1.1  mrg @item @emph{Standard}:
   10356  1.1.1.2  mrg Fortran 90 and later
   10357      1.1  mrg 
   10358      1.1  mrg @item @emph{Class}:
   10359      1.1  mrg Transformational function
   10360      1.1  mrg 
   10361      1.1  mrg @item @emph{Syntax}:
   10362      1.1  mrg @multitable @columnfractions .80
   10363      1.1  mrg @item @code{RESULT = MAXVAL(ARRAY, DIM [, MASK])}
   10364      1.1  mrg @item @code{RESULT = MAXVAL(ARRAY [, MASK])}
   10365      1.1  mrg @end multitable
   10366      1.1  mrg 
   10367      1.1  mrg @item @emph{Arguments}:
   10368      1.1  mrg @multitable @columnfractions .15 .70
   10369      1.1  mrg @item @var{ARRAY} @tab Shall be an array of type @code{INTEGER} or
   10370      1.1  mrg @code{REAL}.
   10371      1.1  mrg @item @var{DIM}   @tab (Optional) Shall be a scalar of type
   10372      1.1  mrg @code{INTEGER}, with a value between one and the rank of @var{ARRAY},
   10373      1.1  mrg inclusive.  It may not be an optional dummy argument.
   10374  1.1.1.3  mrg @item @var{MASK}  @tab (Optional) Shall be of type @code{LOGICAL},
   10375      1.1  mrg and conformable with @var{ARRAY}.
   10376      1.1  mrg @end multitable
   10377      1.1  mrg 
   10378      1.1  mrg @item @emph{Return value}:
   10379      1.1  mrg If @var{DIM} is absent, or if @var{ARRAY} has a rank of one, the result
   10380      1.1  mrg is a scalar.  If @var{DIM} is present, the result is an array with a
   10381      1.1  mrg rank one less than the rank of @var{ARRAY}, and a size corresponding to
   10382      1.1  mrg the size of @var{ARRAY} with the @var{DIM} dimension removed.  In all
   10383      1.1  mrg cases, the result is of the same type and kind as @var{ARRAY}.
   10384      1.1  mrg 
   10385      1.1  mrg @item @emph{See also}:
   10386  1.1.1.2  mrg @ref{MAX}, @gol
   10387  1.1.1.2  mrg @ref{MAXLOC}
   10388      1.1  mrg @end table
   10389      1.1  mrg 
   10390      1.1  mrg 
   10391      1.1  mrg 
   10392      1.1  mrg @node MCLOCK
   10393      1.1  mrg @section @code{MCLOCK} --- Time function
   10394      1.1  mrg @fnindex MCLOCK
   10395      1.1  mrg @cindex time, clock ticks
   10396      1.1  mrg @cindex clock ticks
   10397      1.1  mrg 
   10398      1.1  mrg @table @asis
   10399      1.1  mrg @item @emph{Description}:
   10400      1.1  mrg Returns the number of clock ticks since the start of the process, based
   10401      1.1  mrg on the function @code{clock(3)} in the C standard library.
   10402      1.1  mrg 
   10403      1.1  mrg This intrinsic is not fully portable, such as to systems with 32-bit
   10404      1.1  mrg @code{INTEGER} types but supporting times wider than 32 bits. Therefore,
   10405      1.1  mrg the values returned by this intrinsic might be, or become, negative, or
   10406      1.1  mrg numerically less than previous values, during a single run of the
   10407      1.1  mrg compiled program.
   10408      1.1  mrg 
   10409      1.1  mrg @item @emph{Standard}:
   10410      1.1  mrg GNU extension
   10411      1.1  mrg 
   10412      1.1  mrg @item @emph{Class}:
   10413      1.1  mrg Function
   10414      1.1  mrg 
   10415      1.1  mrg @item @emph{Syntax}:
   10416      1.1  mrg @code{RESULT = MCLOCK()}
   10417      1.1  mrg 
   10418      1.1  mrg @item @emph{Return value}:
   10419      1.1  mrg The return value is a scalar of type @code{INTEGER(4)}, equal to the
   10420      1.1  mrg number of clock ticks since the start of the process, or @code{-1} if
   10421      1.1  mrg the system does not support @code{clock(3)}.
   10422      1.1  mrg 
   10423      1.1  mrg @item @emph{See also}:
   10424  1.1.1.2  mrg @ref{CTIME}, @gol
   10425  1.1.1.2  mrg @ref{GMTIME}, @gol
   10426  1.1.1.2  mrg @ref{LTIME}, @gol
   10427  1.1.1.2  mrg @ref{MCLOCK}, @gol
   10428  1.1.1.2  mrg @ref{TIME}
   10429      1.1  mrg @end table
   10430      1.1  mrg 
   10431      1.1  mrg 
   10432      1.1  mrg 
   10433      1.1  mrg @node MCLOCK8
   10434      1.1  mrg @section @code{MCLOCK8} --- Time function (64-bit)
   10435      1.1  mrg @fnindex MCLOCK8
   10436      1.1  mrg @cindex time, clock ticks
   10437      1.1  mrg @cindex clock ticks
   10438      1.1  mrg 
   10439      1.1  mrg @table @asis
   10440      1.1  mrg @item @emph{Description}:
   10441      1.1  mrg Returns the number of clock ticks since the start of the process, based
   10442      1.1  mrg on the function @code{clock(3)} in the C standard library.
   10443      1.1  mrg 
   10444      1.1  mrg @emph{Warning:} this intrinsic does not increase the range of the timing
   10445      1.1  mrg values over that returned by @code{clock(3)}. On a system with a 32-bit
   10446      1.1  mrg @code{clock(3)}, @code{MCLOCK8} will return a 32-bit value, even though
   10447      1.1  mrg it is converted to a 64-bit @code{INTEGER(8)} value. That means
   10448      1.1  mrg overflows of the 32-bit value can still occur. Therefore, the values
   10449      1.1  mrg returned by this intrinsic might be or become negative or numerically
   10450      1.1  mrg less than previous values during a single run of the compiled program.
   10451      1.1  mrg 
   10452      1.1  mrg @item @emph{Standard}:
   10453      1.1  mrg GNU extension
   10454      1.1  mrg 
   10455      1.1  mrg @item @emph{Class}:
   10456      1.1  mrg Function
   10457      1.1  mrg 
   10458      1.1  mrg @item @emph{Syntax}:
   10459      1.1  mrg @code{RESULT = MCLOCK8()}
   10460      1.1  mrg 
   10461      1.1  mrg @item @emph{Return value}:
   10462      1.1  mrg The return value is a scalar of type @code{INTEGER(8)}, equal to the
   10463      1.1  mrg number of clock ticks since the start of the process, or @code{-1} if
   10464      1.1  mrg the system does not support @code{clock(3)}.
   10465      1.1  mrg 
   10466      1.1  mrg @item @emph{See also}:
   10467  1.1.1.2  mrg @ref{CTIME}, @gol
   10468  1.1.1.2  mrg @ref{GMTIME}, @gol
   10469  1.1.1.2  mrg @ref{LTIME}, @gol
   10470  1.1.1.2  mrg @ref{MCLOCK}, @gol
   10471  1.1.1.2  mrg @ref{TIME8}
   10472      1.1  mrg @end table
   10473      1.1  mrg 
   10474      1.1  mrg 
   10475      1.1  mrg 
   10476      1.1  mrg @node MERGE
   10477      1.1  mrg @section @code{MERGE} --- Merge variables
   10478      1.1  mrg @fnindex MERGE
   10479      1.1  mrg @cindex array, merge arrays
   10480      1.1  mrg @cindex array, combine arrays
   10481      1.1  mrg 
   10482      1.1  mrg @table @asis
   10483      1.1  mrg @item @emph{Description}:
   10484      1.1  mrg Select values from two arrays according to a logical mask.  The result
   10485      1.1  mrg is equal to @var{TSOURCE} if @var{MASK} is @code{.TRUE.}, or equal to
   10486      1.1  mrg @var{FSOURCE} if it is @code{.FALSE.}.
   10487      1.1  mrg 
   10488      1.1  mrg @item @emph{Standard}:
   10489  1.1.1.2  mrg Fortran 90 and later
   10490      1.1  mrg 
   10491      1.1  mrg @item @emph{Class}:
   10492      1.1  mrg Elemental function
   10493      1.1  mrg 
   10494      1.1  mrg @item @emph{Syntax}:
   10495      1.1  mrg @code{RESULT = MERGE(TSOURCE, FSOURCE, MASK)}
   10496      1.1  mrg 
   10497      1.1  mrg @item @emph{Arguments}:
   10498      1.1  mrg @multitable @columnfractions .15 .70
   10499      1.1  mrg @item @var{TSOURCE} @tab May be of any type.
   10500      1.1  mrg @item @var{FSOURCE} @tab Shall be of the same type and type parameters
   10501      1.1  mrg as @var{TSOURCE}.
   10502      1.1  mrg @item @var{MASK}    @tab Shall be of type @code{LOGICAL}.
   10503      1.1  mrg @end multitable
   10504      1.1  mrg 
   10505      1.1  mrg @item @emph{Return value}:
   10506      1.1  mrg The result is of the same type and type parameters as @var{TSOURCE}.
   10507      1.1  mrg 
   10508      1.1  mrg @end table
   10509      1.1  mrg 
   10510      1.1  mrg 
   10511      1.1  mrg 
   10512      1.1  mrg @node MERGE_BITS
   10513      1.1  mrg @section @code{MERGE_BITS} --- Merge of bits under mask
   10514      1.1  mrg @fnindex MERGE_BITS
   10515      1.1  mrg @cindex bits, merge
   10516      1.1  mrg 
   10517      1.1  mrg @table @asis
   10518      1.1  mrg @item @emph{Description}:
   10519      1.1  mrg @code{MERGE_BITS(I, J, MASK)} merges the bits of @var{I} and @var{J}
   10520      1.1  mrg as determined by the mask.  The i-th bit of the result is equal to the 
   10521      1.1  mrg i-th bit of @var{I} if the i-th bit of @var{MASK} is 1; it is equal to
   10522      1.1  mrg the i-th bit of @var{J} otherwise.
   10523      1.1  mrg 
   10524      1.1  mrg @item @emph{Standard}:
   10525      1.1  mrg Fortran 2008 and later
   10526      1.1  mrg 
   10527      1.1  mrg @item @emph{Class}:
   10528      1.1  mrg Elemental function
   10529      1.1  mrg 
   10530      1.1  mrg @item @emph{Syntax}:
   10531      1.1  mrg @code{RESULT = MERGE_BITS(I, J, MASK)}
   10532      1.1  mrg 
   10533      1.1  mrg @item @emph{Arguments}:
   10534      1.1  mrg @multitable @columnfractions .15 .70
   10535      1.1  mrg @item @var{I} @tab Shall be of type @code{INTEGER} or a boz-literal-constant.
   10536      1.1  mrg @item @var{J} @tab Shall be of type @code{INTEGER} with the same
   10537      1.1  mrg kind type parameter as @var{I} or a boz-literal-constant.
   10538      1.1  mrg @var{I} and @var{J} shall not both be boz-literal-constants.
   10539      1.1  mrg @item @var{MASK} @tab Shall be of type @code{INTEGER} or a boz-literal-constant
   10540      1.1  mrg and of the same kind as @var{I}.
   10541      1.1  mrg @end multitable
   10542      1.1  mrg 
   10543      1.1  mrg @item @emph{Return value}:
   10544      1.1  mrg The result is of the same type and kind as @var{I}.
   10545      1.1  mrg 
   10546      1.1  mrg @end table
   10547      1.1  mrg 
   10548      1.1  mrg 
   10549      1.1  mrg 
   10550      1.1  mrg @node MIN
   10551      1.1  mrg @section @code{MIN} --- Minimum value of an argument list
   10552      1.1  mrg @fnindex MIN
   10553      1.1  mrg @fnindex MIN0
   10554      1.1  mrg @fnindex AMIN0
   10555      1.1  mrg @fnindex MIN1
   10556      1.1  mrg @fnindex AMIN1
   10557      1.1  mrg @fnindex DMIN1
   10558      1.1  mrg @cindex minimum value
   10559      1.1  mrg 
   10560      1.1  mrg @table @asis
   10561      1.1  mrg @item @emph{Description}:
   10562      1.1  mrg Returns the argument with the smallest (most negative) value.
   10563      1.1  mrg 
   10564      1.1  mrg @item @emph{Standard}:
   10565      1.1  mrg Fortran 77 and later
   10566      1.1  mrg 
   10567      1.1  mrg @item @emph{Class}:
   10568      1.1  mrg Elemental function
   10569      1.1  mrg 
   10570      1.1  mrg @item @emph{Syntax}:
   10571      1.1  mrg @code{RESULT = MIN(A1, A2 [, A3, ...])}
   10572      1.1  mrg 
   10573      1.1  mrg @item @emph{Arguments}:
   10574      1.1  mrg @multitable @columnfractions .15 .70
   10575      1.1  mrg @item @var{A1}          @tab The type shall be @code{INTEGER} or
   10576      1.1  mrg @code{REAL}.
   10577      1.1  mrg @item @var{A2}, @var{A3}, ... @tab An expression of the same type and kind
   10578      1.1  mrg as @var{A1}.  (As a GNU extension, arguments of different kinds are
   10579      1.1  mrg permitted.)
   10580      1.1  mrg @end multitable
   10581      1.1  mrg 
   10582      1.1  mrg @item @emph{Return value}:
   10583  1.1.1.3  mrg The return value corresponds to the minimum value among the arguments,
   10584      1.1  mrg and has the same type and kind as the first argument.
   10585      1.1  mrg 
   10586      1.1  mrg @item @emph{Specific names}:
   10587  1.1.1.3  mrg @multitable @columnfractions .20 .23 .20 .33
   10588  1.1.1.3  mrg @headitem Name              @tab Argument             @tab Return type        @tab Standard
   10589      1.1  mrg @item @code{MIN0(A1)}   @tab @code{INTEGER(4) A1} @tab @code{INTEGER(4)}  @tab Fortran 77 and later
   10590      1.1  mrg @item @code{AMIN0(A1)}  @tab @code{INTEGER(4) A1} @tab @code{REAL(4)}     @tab Fortran 77 and later
   10591      1.1  mrg @item @code{MIN1(A1)}   @tab @code{REAL A1}       @tab @code{INTEGER(4)}  @tab Fortran 77 and later
   10592      1.1  mrg @item @code{AMIN1(A1)}  @tab @code{REAL(4) A1}    @tab @code{REAL(4)}     @tab Fortran 77 and later
   10593      1.1  mrg @item @code{DMIN1(A1)}  @tab @code{REAL(8) A1}    @tab @code{REAL(8)}     @tab Fortran 77 and later
   10594      1.1  mrg @end multitable
   10595      1.1  mrg 
   10596      1.1  mrg @item @emph{See also}:
   10597  1.1.1.2  mrg @ref{MAX}, @gol
   10598  1.1.1.2  mrg @ref{MINLOC}, @gol
   10599  1.1.1.2  mrg @ref{MINVAL}
   10600      1.1  mrg @end table
   10601      1.1  mrg 
   10602      1.1  mrg 
   10603      1.1  mrg 
   10604      1.1  mrg @node MINEXPONENT
   10605      1.1  mrg @section @code{MINEXPONENT} --- Minimum exponent of a real kind
   10606      1.1  mrg @fnindex MINEXPONENT
   10607      1.1  mrg @cindex model representation, minimum exponent
   10608      1.1  mrg 
   10609      1.1  mrg @table @asis
   10610      1.1  mrg @item @emph{Description}:
   10611      1.1  mrg @code{MINEXPONENT(X)} returns the minimum exponent in the model of the
   10612      1.1  mrg type of @code{X}.
   10613      1.1  mrg 
   10614      1.1  mrg @item @emph{Standard}:
   10615  1.1.1.2  mrg Fortran 90 and later
   10616      1.1  mrg 
   10617      1.1  mrg @item @emph{Class}:
   10618      1.1  mrg Inquiry function
   10619      1.1  mrg 
   10620      1.1  mrg @item @emph{Syntax}:
   10621      1.1  mrg @code{RESULT = MINEXPONENT(X)}
   10622      1.1  mrg 
   10623      1.1  mrg @item @emph{Arguments}:
   10624      1.1  mrg @multitable @columnfractions .15 .70
   10625      1.1  mrg @item @var{X} @tab Shall be of type @code{REAL}.
   10626      1.1  mrg @end multitable
   10627      1.1  mrg 
   10628      1.1  mrg @item @emph{Return value}:
   10629      1.1  mrg The return value is of type @code{INTEGER} and of the default integer
   10630      1.1  mrg kind.
   10631      1.1  mrg 
   10632      1.1  mrg @item @emph{Example}:
   10633      1.1  mrg See @code{MAXEXPONENT} for an example.
   10634      1.1  mrg @end table
   10635      1.1  mrg 
   10636      1.1  mrg 
   10637      1.1  mrg 
   10638      1.1  mrg @node MINLOC
   10639      1.1  mrg @section @code{MINLOC} --- Location of the minimum value within an array
   10640      1.1  mrg @fnindex MINLOC
   10641      1.1  mrg @cindex array, location of minimum element
   10642      1.1  mrg 
   10643      1.1  mrg @table @asis
   10644      1.1  mrg @item @emph{Description}:
   10645      1.1  mrg Determines the location of the element in the array with the minimum
   10646      1.1  mrg value, or, if the @var{DIM} argument is supplied, determines the
   10647      1.1  mrg locations of the minimum element along each row of the array in the
   10648      1.1  mrg @var{DIM} direction.  If @var{MASK} is present, only the elements for
   10649      1.1  mrg which @var{MASK} is @code{.TRUE.} are considered.  If more than one
   10650      1.1  mrg element in the array has the minimum value, the location returned is
   10651      1.1  mrg that of the first such element in array element order if the
   10652      1.1  mrg @var{BACK} is not present, or is false; if @var{BACK} is true, the location
   10653      1.1  mrg returned is that of the last such element.  If the array has
   10654      1.1  mrg zero size, or all of the elements of @var{MASK} are @code{.FALSE.}, then
   10655      1.1  mrg the result is an array of zeroes.  Similarly, if @var{DIM} is supplied
   10656      1.1  mrg and all of the elements of @var{MASK} along a given row are zero, the
   10657      1.1  mrg result value for that row is zero.
   10658      1.1  mrg 
   10659      1.1  mrg @item @emph{Standard}:
   10660  1.1.1.2  mrg Fortran 90 and later; @var{ARRAY} of @code{CHARACTER} and the
   10661      1.1  mrg @var{KIND} argument are available in Fortran 2003 and later.
   10662      1.1  mrg The @var{BACK} argument is available in Fortran 2008 and later.
   10663      1.1  mrg 
   10664      1.1  mrg @item @emph{Class}:
   10665      1.1  mrg Transformational function
   10666      1.1  mrg 
   10667      1.1  mrg @item @emph{Syntax}:
   10668      1.1  mrg @multitable @columnfractions .80
   10669      1.1  mrg @item @code{RESULT = MINLOC(ARRAY, DIM [, MASK] [,KIND] [,BACK])}
   10670      1.1  mrg @item @code{RESULT = MINLOC(ARRAY [, MASK], [,KIND] [,BACK])}
   10671      1.1  mrg @end multitable
   10672      1.1  mrg 
   10673      1.1  mrg @item @emph{Arguments}:
   10674      1.1  mrg @multitable @columnfractions .15 .70
   10675      1.1  mrg @item @var{ARRAY} @tab Shall be an array of type @code{INTEGER},
   10676      1.1  mrg @code{REAL} or @code{CHARACTER}.
   10677      1.1  mrg @item @var{DIM}   @tab (Optional) Shall be a scalar of type
   10678      1.1  mrg @code{INTEGER}, with a value between one and the rank of @var{ARRAY},
   10679      1.1  mrg inclusive.  It may not be an optional dummy argument.
   10680  1.1.1.3  mrg @item @var{MASK}  @tab Shall be of type @code{LOGICAL},
   10681      1.1  mrg and conformable with @var{ARRAY}.
   10682      1.1  mrg @item @var{KIND} @tab (Optional) An @code{INTEGER} initialization
   10683      1.1  mrg expression indicating the kind parameter of the result.
   10684      1.1  mrg @item @var{BACK} @tab (Optional) A scalar of type @code{LOGICAL}.
   10685      1.1  mrg @end multitable
   10686      1.1  mrg 
   10687      1.1  mrg @item @emph{Return value}:
   10688      1.1  mrg If @var{DIM} is absent, the result is a rank-one array with a length
   10689      1.1  mrg equal to the rank of @var{ARRAY}.  If @var{DIM} is present, the result
   10690      1.1  mrg is an array with a rank one less than the rank of @var{ARRAY}, and a
   10691      1.1  mrg size corresponding to the size of @var{ARRAY} with the @var{DIM}
   10692      1.1  mrg dimension removed.  If @var{DIM} is present and @var{ARRAY} has a rank
   10693      1.1  mrg of one, the result is a scalar.  If the optional argument @var{KIND}
   10694      1.1  mrg is present, the result is an integer of kind @var{KIND}, otherwise it
   10695      1.1  mrg is of default kind.
   10696      1.1  mrg 
   10697      1.1  mrg @item @emph{See also}:
   10698  1.1.1.2  mrg @ref{FINDLOC}, @gol
   10699  1.1.1.2  mrg @ref{MIN}, @gol
   10700  1.1.1.2  mrg @ref{MINVAL}
   10701      1.1  mrg @end table
   10702      1.1  mrg 
   10703      1.1  mrg 
   10704      1.1  mrg 
   10705      1.1  mrg @node MINVAL
   10706      1.1  mrg @section @code{MINVAL} --- Minimum value of an array
   10707      1.1  mrg @fnindex MINVAL
   10708      1.1  mrg @cindex array, minimum value
   10709      1.1  mrg @cindex minimum value
   10710      1.1  mrg 
   10711      1.1  mrg @table @asis
   10712      1.1  mrg @item @emph{Description}:
   10713      1.1  mrg Determines the minimum value of the elements in an array value, or, if
   10714      1.1  mrg the @var{DIM} argument is supplied, determines the minimum value along
   10715      1.1  mrg each row of the array in the @var{DIM} direction.  If @var{MASK} is
   10716      1.1  mrg present, only the elements for which @var{MASK} is @code{.TRUE.} are
   10717      1.1  mrg considered.  If the array has zero size, or all of the elements of
   10718      1.1  mrg @var{MASK} are @code{.FALSE.}, then the result is @code{HUGE(ARRAY)} if
   10719      1.1  mrg @var{ARRAY} is numeric, or a string of @code{CHAR(255)} characters if
   10720      1.1  mrg @var{ARRAY} is of character type.
   10721      1.1  mrg 
   10722      1.1  mrg @item @emph{Standard}:
   10723  1.1.1.2  mrg Fortran 90 and later
   10724      1.1  mrg 
   10725      1.1  mrg @item @emph{Class}:
   10726      1.1  mrg Transformational function
   10727      1.1  mrg 
   10728      1.1  mrg @item @emph{Syntax}:
   10729      1.1  mrg @multitable @columnfractions .80
   10730      1.1  mrg @item @code{RESULT = MINVAL(ARRAY, DIM [, MASK])}
   10731      1.1  mrg @item @code{RESULT = MINVAL(ARRAY [, MASK])}
   10732      1.1  mrg @end multitable
   10733      1.1  mrg 
   10734      1.1  mrg @item @emph{Arguments}:
   10735      1.1  mrg @multitable @columnfractions .15 .70
   10736      1.1  mrg @item @var{ARRAY} @tab Shall be an array of type @code{INTEGER} or
   10737      1.1  mrg @code{REAL}.
   10738      1.1  mrg @item @var{DIM}   @tab (Optional) Shall be a scalar of type
   10739      1.1  mrg @code{INTEGER}, with a value between one and the rank of @var{ARRAY},
   10740      1.1  mrg inclusive.  It may not be an optional dummy argument.
   10741  1.1.1.3  mrg @item @var{MASK}  @tab Shall be of type @code{LOGICAL},
   10742      1.1  mrg and conformable with @var{ARRAY}.
   10743      1.1  mrg @end multitable
   10744      1.1  mrg 
   10745      1.1  mrg @item @emph{Return value}:
   10746      1.1  mrg If @var{DIM} is absent, or if @var{ARRAY} has a rank of one, the result
   10747      1.1  mrg is a scalar.  If @var{DIM} is present, the result is an array with a
   10748      1.1  mrg rank one less than the rank of @var{ARRAY}, and a size corresponding to
   10749      1.1  mrg the size of @var{ARRAY} with the @var{DIM} dimension removed.  In all
   10750      1.1  mrg cases, the result is of the same type and kind as @var{ARRAY}.
   10751      1.1  mrg 
   10752      1.1  mrg @item @emph{See also}:
   10753  1.1.1.2  mrg @ref{MIN}, @gol
   10754  1.1.1.2  mrg @ref{MINLOC}
   10755      1.1  mrg @end table
   10756      1.1  mrg 
   10757      1.1  mrg 
   10758      1.1  mrg 
   10759      1.1  mrg @node MOD
   10760      1.1  mrg @section @code{MOD} --- Remainder function
   10761      1.1  mrg @fnindex MOD
   10762      1.1  mrg @fnindex AMOD
   10763      1.1  mrg @fnindex DMOD
   10764      1.1  mrg @fnindex BMOD
   10765      1.1  mrg @fnindex IMOD
   10766      1.1  mrg @fnindex JMOD
   10767      1.1  mrg @fnindex KMOD
   10768      1.1  mrg @cindex remainder
   10769      1.1  mrg @cindex division, remainder
   10770      1.1  mrg 
   10771      1.1  mrg @table @asis
   10772      1.1  mrg @item @emph{Description}:
   10773      1.1  mrg @code{MOD(A,P)} computes the remainder of the division of A by P@. 
   10774      1.1  mrg 
   10775      1.1  mrg @item @emph{Standard}:
   10776      1.1  mrg Fortran 77 and later, has overloads that are GNU extensions
   10777      1.1  mrg 
   10778      1.1  mrg @item @emph{Class}:
   10779      1.1  mrg Elemental function
   10780      1.1  mrg 
   10781      1.1  mrg @item @emph{Syntax}:
   10782      1.1  mrg @code{RESULT = MOD(A, P)}
   10783      1.1  mrg 
   10784      1.1  mrg @item @emph{Arguments}:
   10785      1.1  mrg @multitable @columnfractions .15 .70
   10786      1.1  mrg @item @var{A} @tab Shall be a scalar of type @code{INTEGER} or @code{REAL}.
   10787      1.1  mrg @item @var{P} @tab Shall be a scalar of the same type and kind as @var{A} 
   10788  1.1.1.2  mrg and not equal to zero.  (As a GNU extension, arguments of different kinds are
   10789  1.1.1.2  mrg permitted.)
   10790      1.1  mrg @end multitable
   10791      1.1  mrg 
   10792      1.1  mrg @item @emph{Return value}:
   10793      1.1  mrg The return value is the result of @code{A - (INT(A/P) * P)}. The type
   10794      1.1  mrg and kind of the return value is the same as that of the arguments. The
   10795      1.1  mrg returned value has the same sign as A and a magnitude less than the
   10796  1.1.1.2  mrg magnitude of P.  (As a GNU extension, kind is the largest kind of the actual
   10797  1.1.1.2  mrg arguments.)
   10798      1.1  mrg 
   10799      1.1  mrg @item @emph{Example}:
   10800      1.1  mrg @smallexample
   10801      1.1  mrg program test_mod
   10802      1.1  mrg   print *, mod(17,3)
   10803      1.1  mrg   print *, mod(17.5,5.5)
   10804      1.1  mrg   print *, mod(17.5d0,5.5)
   10805      1.1  mrg   print *, mod(17.5,5.5d0)
   10806      1.1  mrg 
   10807      1.1  mrg   print *, mod(-17,3)
   10808      1.1  mrg   print *, mod(-17.5,5.5)
   10809      1.1  mrg   print *, mod(-17.5d0,5.5)
   10810      1.1  mrg   print *, mod(-17.5,5.5d0)
   10811      1.1  mrg 
   10812      1.1  mrg   print *, mod(17,-3)
   10813      1.1  mrg   print *, mod(17.5,-5.5)
   10814      1.1  mrg   print *, mod(17.5d0,-5.5)
   10815      1.1  mrg   print *, mod(17.5,-5.5d0)
   10816      1.1  mrg end program test_mod
   10817      1.1  mrg @end smallexample
   10818      1.1  mrg 
   10819      1.1  mrg @item @emph{Specific names}:
   10820  1.1.1.3  mrg @multitable @columnfractions .20 .25 .20 .31
   10821  1.1.1.3  mrg @headitem Name             @tab Arguments          @tab Return type    @tab Standard
   10822  1.1.1.2  mrg @item @code{MOD(A,P)}  @tab @code{INTEGER A,P} @tab @code{INTEGER} @tab Fortran 77 and later
   10823  1.1.1.2  mrg @item @code{AMOD(A,P)} @tab @code{REAL(4) A,P} @tab @code{REAL(4)} @tab Fortran 77 and later
   10824  1.1.1.2  mrg @item @code{DMOD(A,P)} @tab @code{REAL(8) A,P} @tab @code{REAL(8)} @tab Fortran 77 and later
   10825      1.1  mrg @item @code{BMOD(A,P)}  @tab @code{INTEGER(1) A,P} @tab @code{INTEGER(1)} @tab GNU extension
   10826      1.1  mrg @item @code{IMOD(A,P)}  @tab @code{INTEGER(2) A,P} @tab @code{INTEGER(2)} @tab GNU extension
   10827      1.1  mrg @item @code{JMOD(A,P)}  @tab @code{INTEGER(4) A,P} @tab @code{INTEGER(4)} @tab GNU extension
   10828      1.1  mrg @item @code{KMOD(A,P)}  @tab @code{INTEGER(8) A,P} @tab @code{INTEGER(8)} @tab GNU extension
   10829      1.1  mrg @end multitable
   10830      1.1  mrg 
   10831      1.1  mrg @item @emph{See also}:
   10832      1.1  mrg @ref{MODULO}
   10833      1.1  mrg 
   10834      1.1  mrg @end table
   10835      1.1  mrg 
   10836      1.1  mrg 
   10837      1.1  mrg 
   10838      1.1  mrg @node MODULO
   10839      1.1  mrg @section @code{MODULO} --- Modulo function
   10840      1.1  mrg @fnindex MODULO
   10841      1.1  mrg @cindex modulo
   10842      1.1  mrg @cindex division, modulo
   10843      1.1  mrg 
   10844      1.1  mrg @table @asis
   10845      1.1  mrg @item @emph{Description}:
   10846      1.1  mrg @code{MODULO(A,P)} computes the @var{A} modulo @var{P}.
   10847      1.1  mrg 
   10848      1.1  mrg @item @emph{Standard}:
   10849      1.1  mrg Fortran 95 and later
   10850      1.1  mrg 
   10851      1.1  mrg @item @emph{Class}:
   10852      1.1  mrg Elemental function
   10853      1.1  mrg 
   10854      1.1  mrg @item @emph{Syntax}:
   10855      1.1  mrg @code{RESULT = MODULO(A, P)}
   10856      1.1  mrg 
   10857      1.1  mrg @item @emph{Arguments}:
   10858      1.1  mrg @multitable @columnfractions .15 .70
   10859      1.1  mrg @item @var{A} @tab Shall be a scalar of type @code{INTEGER} or @code{REAL}.
   10860      1.1  mrg @item @var{P} @tab Shall be a scalar of the same type and kind as @var{A}. 
   10861  1.1.1.2  mrg It shall not be zero.  (As a GNU extension, arguments of different kinds are
   10862  1.1.1.2  mrg permitted.)
   10863      1.1  mrg @end multitable
   10864      1.1  mrg 
   10865      1.1  mrg @item @emph{Return value}:
   10866  1.1.1.2  mrg The type and kind of the result are those of the arguments.  (As a GNU
   10867  1.1.1.2  mrg extension, kind is the largest kind of the actual arguments.)
   10868      1.1  mrg @table @asis
   10869      1.1  mrg @item If @var{A} and @var{P} are of type @code{INTEGER}:
   10870      1.1  mrg @code{MODULO(A,P)} has the value @var{R} such that @code{A=Q*P+R}, where
   10871      1.1  mrg @var{Q} is an integer and @var{R} is between 0 (inclusive) and @var{P}
   10872      1.1  mrg (exclusive).
   10873      1.1  mrg @item If @var{A} and @var{P} are of type @code{REAL}:
   10874      1.1  mrg @code{MODULO(A,P)} has the value of @code{A - FLOOR (A / P) * P}.
   10875      1.1  mrg @end table
   10876      1.1  mrg The returned value has the same sign as P and a magnitude less than
   10877      1.1  mrg the magnitude of P.
   10878      1.1  mrg 
   10879      1.1  mrg @item @emph{Example}:
   10880      1.1  mrg @smallexample
   10881      1.1  mrg program test_modulo
   10882      1.1  mrg   print *, modulo(17,3)
   10883      1.1  mrg   print *, modulo(17.5,5.5)
   10884      1.1  mrg 
   10885      1.1  mrg   print *, modulo(-17,3)
   10886      1.1  mrg   print *, modulo(-17.5,5.5)
   10887      1.1  mrg 
   10888      1.1  mrg   print *, modulo(17,-3)
   10889      1.1  mrg   print *, modulo(17.5,-5.5)
   10890      1.1  mrg end program
   10891      1.1  mrg @end smallexample
   10892      1.1  mrg 
   10893      1.1  mrg @item @emph{See also}:
   10894      1.1  mrg @ref{MOD}
   10895      1.1  mrg 
   10896      1.1  mrg @end table
   10897      1.1  mrg 
   10898      1.1  mrg 
   10899      1.1  mrg 
   10900      1.1  mrg @node MOVE_ALLOC
   10901      1.1  mrg @section @code{MOVE_ALLOC} --- Move allocation from one object to another
   10902      1.1  mrg @fnindex MOVE_ALLOC
   10903      1.1  mrg @cindex moving allocation
   10904      1.1  mrg @cindex allocation, moving
   10905      1.1  mrg 
   10906      1.1  mrg @table @asis
   10907      1.1  mrg @item @emph{Description}:
   10908      1.1  mrg @code{MOVE_ALLOC(FROM, TO)} moves the allocation from @var{FROM} to
   10909      1.1  mrg @var{TO}.  @var{FROM} will become deallocated in the process.
   10910      1.1  mrg 
   10911      1.1  mrg @item @emph{Standard}:
   10912      1.1  mrg Fortran 2003 and later
   10913      1.1  mrg 
   10914      1.1  mrg @item @emph{Class}:
   10915      1.1  mrg Pure subroutine
   10916      1.1  mrg 
   10917      1.1  mrg @item @emph{Syntax}:
   10918      1.1  mrg @code{CALL MOVE_ALLOC(FROM, TO)}
   10919      1.1  mrg 
   10920      1.1  mrg @item @emph{Arguments}:
   10921      1.1  mrg @multitable @columnfractions .15 .70
   10922      1.1  mrg @item @var{FROM}  @tab @code{ALLOCATABLE}, @code{INTENT(INOUT)}, may be
   10923      1.1  mrg of any type and kind.
   10924      1.1  mrg @item @var{TO} @tab @code{ALLOCATABLE}, @code{INTENT(OUT)}, shall be
   10925      1.1  mrg of the same type, kind and rank as @var{FROM}.
   10926      1.1  mrg @end multitable
   10927      1.1  mrg 
   10928      1.1  mrg @item @emph{Return value}:
   10929      1.1  mrg None
   10930      1.1  mrg 
   10931      1.1  mrg @item @emph{Example}:
   10932      1.1  mrg @smallexample
   10933      1.1  mrg program test_move_alloc
   10934      1.1  mrg     integer, allocatable :: a(:), b(:)
   10935      1.1  mrg 
   10936      1.1  mrg     allocate(a(3))
   10937      1.1  mrg     a = [ 1, 2, 3 ]
   10938      1.1  mrg     call move_alloc(a, b)
   10939      1.1  mrg     print *, allocated(a), allocated(b)
   10940      1.1  mrg     print *, b
   10941      1.1  mrg end program test_move_alloc
   10942      1.1  mrg @end smallexample
   10943      1.1  mrg @end table
   10944      1.1  mrg 
   10945      1.1  mrg 
   10946      1.1  mrg 
   10947      1.1  mrg @node MVBITS
   10948      1.1  mrg @section @code{MVBITS} --- Move bits from one integer to another
   10949      1.1  mrg @fnindex MVBITS
   10950      1.1  mrg @fnindex BMVBITS
   10951      1.1  mrg @fnindex IMVBITS
   10952      1.1  mrg @fnindex JMVBITS
   10953      1.1  mrg @fnindex KMVBITS
   10954      1.1  mrg @cindex bits, move
   10955      1.1  mrg 
   10956      1.1  mrg @table @asis
   10957      1.1  mrg @item @emph{Description}:
   10958      1.1  mrg Moves @var{LEN} bits from positions @var{FROMPOS} through
   10959      1.1  mrg @code{FROMPOS+LEN-1} of @var{FROM} to positions @var{TOPOS} through
   10960      1.1  mrg @code{TOPOS+LEN-1} of @var{TO}. The portion of argument @var{TO} not
   10961      1.1  mrg affected by the movement of bits is unchanged. The values of
   10962      1.1  mrg @code{FROMPOS+LEN-1} and @code{TOPOS+LEN-1} must be less than
   10963      1.1  mrg @code{BIT_SIZE(FROM)}.
   10964      1.1  mrg 
   10965      1.1  mrg @item @emph{Standard}:
   10966  1.1.1.2  mrg Fortran 90 and later, has overloads that are GNU extensions
   10967      1.1  mrg 
   10968      1.1  mrg @item @emph{Class}:
   10969      1.1  mrg Elemental subroutine
   10970      1.1  mrg 
   10971      1.1  mrg @item @emph{Syntax}:
   10972      1.1  mrg @code{CALL MVBITS(FROM, FROMPOS, LEN, TO, TOPOS)}
   10973      1.1  mrg 
   10974      1.1  mrg @item @emph{Arguments}:
   10975      1.1  mrg @multitable @columnfractions .15 .70
   10976      1.1  mrg @item @var{FROM}    @tab The type shall be @code{INTEGER}.
   10977      1.1  mrg @item @var{FROMPOS} @tab The type shall be @code{INTEGER}.
   10978      1.1  mrg @item @var{LEN}     @tab The type shall be @code{INTEGER}.
   10979      1.1  mrg @item @var{TO}      @tab The type shall be @code{INTEGER}, of the
   10980      1.1  mrg same kind as @var{FROM}.
   10981      1.1  mrg @item @var{TOPOS}   @tab The type shall be @code{INTEGER}.
   10982      1.1  mrg @end multitable
   10983      1.1  mrg 
   10984      1.1  mrg @item @emph{Specific names}:
   10985  1.1.1.3  mrg @multitable @columnfractions .20 .23 .20 .33
   10986  1.1.1.3  mrg @headitem Name            @tab Argument            @tab Return type       @tab Standard
   10987  1.1.1.2  mrg @item @code{MVBITS(A)}   @tab @code{INTEGER A}    @tab @code{INTEGER}    @tab Fortran 90 and later
   10988      1.1  mrg @item @code{BMVBITS(A)} @tab @code{INTEGER(1) A} @tab @code{INTEGER(1)} @tab GNU extension
   10989      1.1  mrg @item @code{IMVBITS(A)} @tab @code{INTEGER(2) A} @tab @code{INTEGER(2)} @tab GNU extension
   10990      1.1  mrg @item @code{JMVBITS(A)} @tab @code{INTEGER(4) A} @tab @code{INTEGER(4)} @tab GNU extension
   10991      1.1  mrg @item @code{KMVBITS(A)} @tab @code{INTEGER(8) A} @tab @code{INTEGER(8)} @tab GNU extension
   10992      1.1  mrg @end multitable
   10993      1.1  mrg 
   10994      1.1  mrg @item @emph{See also}:
   10995  1.1.1.2  mrg @ref{IBCLR}, @gol
   10996  1.1.1.2  mrg @ref{IBSET}, @gol
   10997  1.1.1.2  mrg @ref{IBITS}, @gol
   10998  1.1.1.2  mrg @ref{IAND}, @gol
   10999  1.1.1.2  mrg @ref{IOR}, @gol
   11000  1.1.1.2  mrg @ref{IEOR}
   11001      1.1  mrg @end table
   11002      1.1  mrg 
   11003      1.1  mrg 
   11004      1.1  mrg 
   11005      1.1  mrg @node NEAREST
   11006      1.1  mrg @section @code{NEAREST} --- Nearest representable number
   11007      1.1  mrg @fnindex NEAREST
   11008      1.1  mrg @cindex real number, nearest different
   11009      1.1  mrg @cindex floating point, nearest different
   11010      1.1  mrg 
   11011      1.1  mrg @table @asis
   11012      1.1  mrg @item @emph{Description}:
   11013      1.1  mrg @code{NEAREST(X, S)} returns the processor-representable number nearest
   11014      1.1  mrg to @code{X} in the direction indicated by the sign of @code{S}.
   11015      1.1  mrg 
   11016      1.1  mrg @item @emph{Standard}:
   11017  1.1.1.2  mrg Fortran 90 and later
   11018      1.1  mrg 
   11019      1.1  mrg @item @emph{Class}:
   11020      1.1  mrg Elemental function
   11021      1.1  mrg 
   11022      1.1  mrg @item @emph{Syntax}:
   11023      1.1  mrg @code{RESULT = NEAREST(X, S)}
   11024      1.1  mrg 
   11025      1.1  mrg @item @emph{Arguments}:
   11026      1.1  mrg @multitable @columnfractions .15 .70
   11027      1.1  mrg @item @var{X} @tab Shall be of type @code{REAL}.
   11028      1.1  mrg @item @var{S} @tab Shall be of type @code{REAL} and
   11029      1.1  mrg not equal to zero.
   11030      1.1  mrg @end multitable
   11031      1.1  mrg 
   11032      1.1  mrg @item @emph{Return value}:
   11033      1.1  mrg The return value is of the same type as @code{X}. If @code{S} is
   11034      1.1  mrg positive, @code{NEAREST} returns the processor-representable number
   11035      1.1  mrg greater than @code{X} and nearest to it. If @code{S} is negative,
   11036      1.1  mrg @code{NEAREST} returns the processor-representable number smaller than
   11037      1.1  mrg @code{X} and nearest to it.
   11038      1.1  mrg 
   11039      1.1  mrg @item @emph{Example}:
   11040      1.1  mrg @smallexample
   11041      1.1  mrg program test_nearest
   11042      1.1  mrg   real :: x, y
   11043      1.1  mrg   x = nearest(42.0, 1.0)
   11044      1.1  mrg   y = nearest(42.0, -1.0)
   11045      1.1  mrg   write (*,"(3(G20.15))") x, y, x - y
   11046      1.1  mrg end program test_nearest
   11047      1.1  mrg @end smallexample
   11048      1.1  mrg @end table
   11049      1.1  mrg 
   11050      1.1  mrg 
   11051      1.1  mrg 
   11052      1.1  mrg @node NEW_LINE
   11053      1.1  mrg @section @code{NEW_LINE} --- New line character
   11054      1.1  mrg @fnindex NEW_LINE
   11055      1.1  mrg @cindex newline
   11056      1.1  mrg @cindex output, newline
   11057      1.1  mrg 
   11058      1.1  mrg @table @asis
   11059      1.1  mrg @item @emph{Description}:
   11060      1.1  mrg @code{NEW_LINE(C)} returns the new-line character.
   11061      1.1  mrg 
   11062      1.1  mrg @item @emph{Standard}:
   11063      1.1  mrg Fortran 2003 and later
   11064      1.1  mrg 
   11065      1.1  mrg @item @emph{Class}:
   11066      1.1  mrg Inquiry function
   11067      1.1  mrg 
   11068      1.1  mrg @item @emph{Syntax}:
   11069      1.1  mrg @code{RESULT = NEW_LINE(C)}
   11070      1.1  mrg 
   11071      1.1  mrg @item @emph{Arguments}:
   11072      1.1  mrg @multitable @columnfractions .15 .70
   11073      1.1  mrg @item @var{C}    @tab The argument shall be a scalar or array of the
   11074      1.1  mrg type @code{CHARACTER}.
   11075      1.1  mrg @end multitable
   11076      1.1  mrg 
   11077      1.1  mrg @item @emph{Return value}:
   11078      1.1  mrg Returns a @var{CHARACTER} scalar of length one with the new-line character of
   11079      1.1  mrg the same kind as parameter @var{C}.
   11080      1.1  mrg 
   11081      1.1  mrg @item @emph{Example}:
   11082      1.1  mrg @smallexample
   11083      1.1  mrg program newline
   11084      1.1  mrg   implicit none
   11085      1.1  mrg   write(*,'(A)') 'This is record 1.'//NEW_LINE('A')//'This is record 2.'
   11086      1.1  mrg end program newline
   11087      1.1  mrg @end smallexample
   11088      1.1  mrg @end table
   11089      1.1  mrg 
   11090      1.1  mrg 
   11091      1.1  mrg 
   11092      1.1  mrg @node NINT
   11093      1.1  mrg @section @code{NINT} --- Nearest whole number
   11094      1.1  mrg @fnindex NINT
   11095      1.1  mrg @fnindex IDNINT
   11096      1.1  mrg @cindex rounding, nearest whole number
   11097      1.1  mrg 
   11098      1.1  mrg @table @asis
   11099      1.1  mrg @item @emph{Description}:
   11100      1.1  mrg @code{NINT(A)} rounds its argument to the nearest whole number.
   11101      1.1  mrg 
   11102      1.1  mrg @item @emph{Standard}:
   11103      1.1  mrg Fortran 77 and later, with @var{KIND} argument Fortran 90 and later
   11104      1.1  mrg 
   11105      1.1  mrg @item @emph{Class}:
   11106      1.1  mrg Elemental function
   11107      1.1  mrg 
   11108      1.1  mrg @item @emph{Syntax}:
   11109      1.1  mrg @code{RESULT = NINT(A [, KIND])}
   11110      1.1  mrg 
   11111      1.1  mrg @item @emph{Arguments}:
   11112      1.1  mrg @multitable @columnfractions .15 .70
   11113      1.1  mrg @item @var{A}    @tab The type of the argument shall be @code{REAL}.
   11114      1.1  mrg @item @var{KIND} @tab (Optional) An @code{INTEGER} initialization
   11115      1.1  mrg expression indicating the kind parameter of the result.
   11116      1.1  mrg @end multitable
   11117      1.1  mrg 
   11118      1.1  mrg @item @emph{Return value}:
   11119      1.1  mrg Returns @var{A} with the fractional portion of its magnitude eliminated by
   11120      1.1  mrg rounding to the nearest whole number and with its sign preserved,
   11121      1.1  mrg converted to an @code{INTEGER} of the default kind.
   11122      1.1  mrg 
   11123      1.1  mrg @item @emph{Example}:
   11124      1.1  mrg @smallexample
   11125      1.1  mrg program test_nint
   11126      1.1  mrg   real(4) x4
   11127      1.1  mrg   real(8) x8
   11128      1.1  mrg   x4 = 1.234E0_4
   11129      1.1  mrg   x8 = 4.321_8
   11130      1.1  mrg   print *, nint(x4), idnint(x8)
   11131      1.1  mrg end program test_nint
   11132      1.1  mrg @end smallexample
   11133      1.1  mrg 
   11134      1.1  mrg @item @emph{Specific names}:
   11135  1.1.1.3  mrg @multitable @columnfractions .20 .23 .20 .33
   11136  1.1.1.3  mrg @headitem Name             @tab Argument           @tab Return Type     @tab Standard
   11137  1.1.1.2  mrg @item @code{NINT(A)}   @tab @code{REAL(4) A}   @tab  @code{INTEGER} @tab Fortran 77 and later
   11138  1.1.1.2  mrg @item @code{IDNINT(A)} @tab @code{REAL(8) A}   @tab  @code{INTEGER} @tab Fortran 77 and later
   11139      1.1  mrg @end multitable
   11140      1.1  mrg 
   11141      1.1  mrg @item @emph{See also}:
   11142  1.1.1.2  mrg @ref{CEILING}, @gol
   11143  1.1.1.2  mrg @ref{FLOOR}
   11144      1.1  mrg @end table
   11145      1.1  mrg 
   11146      1.1  mrg 
   11147      1.1  mrg 
   11148      1.1  mrg @node NORM2
   11149      1.1  mrg @section @code{NORM2} --- Euclidean vector norms
   11150      1.1  mrg @fnindex NORM2
   11151      1.1  mrg @cindex Euclidean vector norm
   11152      1.1  mrg @cindex L2 vector norm
   11153      1.1  mrg @cindex norm, Euclidean
   11154      1.1  mrg 
   11155      1.1  mrg @table @asis
   11156      1.1  mrg @item @emph{Description}:
   11157  1.1.1.3  mrg Calculates the Euclidean vector norm (@math{L_2} norm)
   11158      1.1  mrg of @var{ARRAY} along dimension @var{DIM}.
   11159      1.1  mrg 
   11160      1.1  mrg @item @emph{Standard}:
   11161      1.1  mrg Fortran 2008 and later
   11162      1.1  mrg 
   11163      1.1  mrg @item @emph{Class}:
   11164      1.1  mrg Transformational function
   11165      1.1  mrg 
   11166      1.1  mrg @item @emph{Syntax}:
   11167      1.1  mrg @multitable @columnfractions .80
   11168      1.1  mrg @item @code{RESULT = NORM2(ARRAY[, DIM])}
   11169      1.1  mrg @end multitable
   11170      1.1  mrg 
   11171      1.1  mrg @item @emph{Arguments}:
   11172      1.1  mrg @multitable @columnfractions .15 .70
   11173      1.1  mrg @item @var{ARRAY} @tab Shall be an array of type @code{REAL}
   11174      1.1  mrg @item @var{DIM}   @tab (Optional) shall be a scalar of type 
   11175      1.1  mrg @code{INTEGER} with a value in the range from 1 to n, where n 
   11176      1.1  mrg equals the rank of @var{ARRAY}.
   11177      1.1  mrg @end multitable
   11178      1.1  mrg 
   11179      1.1  mrg @item @emph{Return value}:
   11180      1.1  mrg The result is of the same type as @var{ARRAY}.
   11181      1.1  mrg 
   11182      1.1  mrg If @var{DIM} is absent, a scalar with the square root of the sum of all
   11183      1.1  mrg elements in @var{ARRAY} squared  is returned. Otherwise, an array of
   11184      1.1  mrg rank @math{n-1}, where @math{n} equals the rank of @var{ARRAY}, and a
   11185      1.1  mrg shape similar to that of @var{ARRAY} with dimension @var{DIM} dropped
   11186      1.1  mrg is returned.
   11187      1.1  mrg 
   11188      1.1  mrg @item @emph{Example}:
   11189      1.1  mrg @smallexample
   11190      1.1  mrg PROGRAM test_sum
   11191      1.1  mrg   REAL :: x(5) = [ real :: 1, 2, 3, 4, 5 ]
   11192      1.1  mrg   print *, NORM2(x)  ! = sqrt(55.) ~ 7.416
   11193      1.1  mrg END PROGRAM
   11194      1.1  mrg @end smallexample
   11195      1.1  mrg @end table
   11196      1.1  mrg 
   11197      1.1  mrg 
   11198      1.1  mrg 
   11199      1.1  mrg @node NOT
   11200      1.1  mrg @section @code{NOT} --- Logical negation
   11201      1.1  mrg @fnindex NOT
   11202      1.1  mrg @fnindex BNOT
   11203      1.1  mrg @fnindex INOT
   11204      1.1  mrg @fnindex JNOT
   11205      1.1  mrg @fnindex KNOT
   11206      1.1  mrg @cindex bits, negate
   11207      1.1  mrg @cindex bitwise logical not
   11208      1.1  mrg @cindex logical not, bitwise
   11209      1.1  mrg 
   11210      1.1  mrg @table @asis
   11211      1.1  mrg @item @emph{Description}:
   11212      1.1  mrg @code{NOT} returns the bitwise Boolean inverse of @var{I}.
   11213      1.1  mrg 
   11214      1.1  mrg @item @emph{Standard}:
   11215  1.1.1.2  mrg Fortran 90 and later, has overloads that are GNU extensions
   11216      1.1  mrg 
   11217      1.1  mrg @item @emph{Class}:
   11218      1.1  mrg Elemental function
   11219      1.1  mrg 
   11220      1.1  mrg @item @emph{Syntax}:
   11221      1.1  mrg @code{RESULT = NOT(I)}
   11222      1.1  mrg 
   11223      1.1  mrg @item @emph{Arguments}:
   11224      1.1  mrg @multitable @columnfractions .15 .70
   11225      1.1  mrg @item @var{I} @tab The type shall be @code{INTEGER}.
   11226      1.1  mrg @end multitable
   11227      1.1  mrg 
   11228      1.1  mrg @item @emph{Return value}:
   11229      1.1  mrg The return type is @code{INTEGER}, of the same kind as the
   11230      1.1  mrg argument.
   11231      1.1  mrg 
   11232      1.1  mrg @item @emph{Specific names}:
   11233  1.1.1.3  mrg @multitable @columnfractions .20 .23 .20 .33
   11234  1.1.1.3  mrg @headitem Name            @tab Argument            @tab Return type       @tab Standard
   11235      1.1  mrg @item @code{NOT(A)}   @tab @code{INTEGER A}    @tab @code{INTEGER}    @tab Fortran 95 and later
   11236      1.1  mrg @item @code{BNOT(A)} @tab @code{INTEGER(1) A} @tab @code{INTEGER(1)} @tab GNU extension
   11237      1.1  mrg @item @code{INOT(A)} @tab @code{INTEGER(2) A} @tab @code{INTEGER(2)} @tab GNU extension
   11238      1.1  mrg @item @code{JNOT(A)} @tab @code{INTEGER(4) A} @tab @code{INTEGER(4)} @tab GNU extension
   11239      1.1  mrg @item @code{KNOT(A)} @tab @code{INTEGER(8) A} @tab @code{INTEGER(8)} @tab GNU extension
   11240      1.1  mrg @end multitable
   11241      1.1  mrg 
   11242      1.1  mrg @item @emph{See also}:
   11243  1.1.1.2  mrg @ref{IAND}, @gol
   11244  1.1.1.2  mrg @ref{IEOR}, @gol
   11245  1.1.1.2  mrg @ref{IOR}, @gol
   11246  1.1.1.2  mrg @ref{IBITS}, @gol
   11247  1.1.1.2  mrg @ref{IBSET}, @gol
   11248  1.1.1.2  mrg @ref{IBCLR}
   11249      1.1  mrg @end table
   11250      1.1  mrg 
   11251      1.1  mrg 
   11252      1.1  mrg 
   11253      1.1  mrg @node NULL
   11254      1.1  mrg @section @code{NULL} --- Function that returns an disassociated pointer
   11255      1.1  mrg @fnindex NULL
   11256      1.1  mrg @cindex pointer, status
   11257      1.1  mrg @cindex pointer, disassociated
   11258      1.1  mrg 
   11259      1.1  mrg @table @asis
   11260      1.1  mrg @item @emph{Description}:
   11261      1.1  mrg Returns a disassociated pointer.
   11262      1.1  mrg 
   11263      1.1  mrg If @var{MOLD} is present, a disassociated pointer of the same type is
   11264      1.1  mrg returned, otherwise the type is determined by context.
   11265      1.1  mrg 
   11266      1.1  mrg In Fortran 95, @var{MOLD} is optional. Please note that Fortran 2003
   11267      1.1  mrg includes cases where it is required.
   11268      1.1  mrg 
   11269      1.1  mrg @item @emph{Standard}:
   11270      1.1  mrg Fortran 95 and later
   11271      1.1  mrg 
   11272      1.1  mrg @item @emph{Class}:
   11273      1.1  mrg Transformational function
   11274      1.1  mrg 
   11275      1.1  mrg @item @emph{Syntax}:
   11276      1.1  mrg @code{PTR => NULL([MOLD])}
   11277      1.1  mrg 
   11278      1.1  mrg @item @emph{Arguments}:
   11279      1.1  mrg @multitable @columnfractions .15 .70
   11280      1.1  mrg @item @var{MOLD} @tab (Optional) shall be a pointer of any association
   11281      1.1  mrg status and of any type.
   11282      1.1  mrg @end multitable
   11283      1.1  mrg 
   11284      1.1  mrg @item @emph{Return value}:
   11285      1.1  mrg A disassociated pointer.
   11286      1.1  mrg 
   11287      1.1  mrg @item @emph{Example}:
   11288      1.1  mrg @smallexample
   11289      1.1  mrg REAL, POINTER, DIMENSION(:) :: VEC => NULL ()
   11290      1.1  mrg @end smallexample
   11291      1.1  mrg 
   11292      1.1  mrg @item @emph{See also}:
   11293      1.1  mrg @ref{ASSOCIATED}
   11294      1.1  mrg @end table
   11295      1.1  mrg 
   11296      1.1  mrg 
   11297      1.1  mrg 
   11298      1.1  mrg @node NUM_IMAGES
   11299      1.1  mrg @section @code{NUM_IMAGES} --- Function that returns the number of images
   11300      1.1  mrg @fnindex NUM_IMAGES
   11301      1.1  mrg @cindex coarray, @code{NUM_IMAGES}
   11302      1.1  mrg @cindex images, number of
   11303      1.1  mrg 
   11304      1.1  mrg @table @asis
   11305      1.1  mrg @item @emph{Description}:
   11306      1.1  mrg Returns the number of images.
   11307      1.1  mrg 
   11308      1.1  mrg @item @emph{Standard}:
   11309      1.1  mrg Fortran 2008 and later. With @var{DISTANCE} or @var{FAILED} argument, 
   11310      1.1  mrg Technical Specification (TS) 18508 or later
   11311      1.1  mrg 
   11312      1.1  mrg 
   11313      1.1  mrg @item @emph{Class}:
   11314      1.1  mrg Transformational function
   11315      1.1  mrg 
   11316      1.1  mrg @item @emph{Syntax}:
   11317      1.1  mrg @code{RESULT = NUM_IMAGES(DISTANCE, FAILED)}
   11318      1.1  mrg 
   11319      1.1  mrg @item @emph{Arguments}:
   11320      1.1  mrg @multitable @columnfractions .15 .70
   11321      1.1  mrg @item @var{DISTANCE} @tab (optional, intent(in)) Nonnegative scalar integer
   11322      1.1  mrg @item @var{FAILED}   @tab (optional, intent(in)) Scalar logical expression
   11323      1.1  mrg @end multitable
   11324      1.1  mrg 
   11325      1.1  mrg @item @emph{Return value}:
   11326      1.1  mrg Scalar default-kind integer.  If @var{DISTANCE} is not present or has value 0,
   11327      1.1  mrg the number of images in the current team is returned. For values smaller or
   11328      1.1  mrg equal distance to the initial team, it returns the number of images index
   11329      1.1  mrg on the ancestor team which has a distance of @var{DISTANCE} from the invoking
   11330      1.1  mrg team. If @var{DISTANCE} is larger than the distance to the initial team, the
   11331      1.1  mrg number of images of the initial team is returned. If @var{FAILED} is not present
   11332      1.1  mrg the total number of images is returned; if it has the value @code{.TRUE.},
   11333      1.1  mrg the number of failed images is returned, otherwise, the number of images which
   11334      1.1  mrg do have not the failed status.
   11335      1.1  mrg 
   11336      1.1  mrg @item @emph{Example}:
   11337      1.1  mrg @smallexample
   11338      1.1  mrg INTEGER :: value[*]
   11339      1.1  mrg INTEGER :: i
   11340      1.1  mrg value = THIS_IMAGE()
   11341      1.1  mrg SYNC ALL
   11342      1.1  mrg IF (THIS_IMAGE() == 1) THEN
   11343      1.1  mrg   DO i = 1, NUM_IMAGES()
   11344      1.1  mrg     WRITE(*,'(2(a,i0))') 'value[', i, '] is ', value[i]
   11345      1.1  mrg   END DO
   11346      1.1  mrg END IF
   11347      1.1  mrg @end smallexample
   11348      1.1  mrg 
   11349      1.1  mrg @item @emph{See also}:
   11350  1.1.1.2  mrg @ref{THIS_IMAGE}, @gol
   11351  1.1.1.2  mrg @ref{IMAGE_INDEX}
   11352      1.1  mrg @end table
   11353      1.1  mrg 
   11354      1.1  mrg 
   11355      1.1  mrg 
   11356      1.1  mrg @node OR
   11357      1.1  mrg @section @code{OR} --- Bitwise logical OR
   11358      1.1  mrg @fnindex OR
   11359      1.1  mrg @cindex bitwise logical or
   11360      1.1  mrg @cindex logical or, bitwise
   11361      1.1  mrg 
   11362      1.1  mrg @table @asis
   11363      1.1  mrg @item @emph{Description}:
   11364      1.1  mrg Bitwise logical @code{OR}.
   11365      1.1  mrg 
   11366      1.1  mrg This intrinsic routine is provided for backwards compatibility with 
   11367      1.1  mrg GNU Fortran 77.  For integer arguments, programmers should consider
   11368      1.1  mrg the use of the @ref{IOR} intrinsic defined by the Fortran standard.
   11369      1.1  mrg 
   11370      1.1  mrg @item @emph{Standard}:
   11371      1.1  mrg GNU extension
   11372      1.1  mrg 
   11373      1.1  mrg @item @emph{Class}:
   11374      1.1  mrg Function
   11375      1.1  mrg 
   11376      1.1  mrg @item @emph{Syntax}:
   11377      1.1  mrg @code{RESULT = OR(I, J)}
   11378      1.1  mrg 
   11379      1.1  mrg @item @emph{Arguments}:
   11380      1.1  mrg @multitable @columnfractions .15 .70
   11381      1.1  mrg @item @var{I} @tab The type shall be either a scalar @code{INTEGER}
   11382      1.1  mrg type or a scalar @code{LOGICAL} type or a boz-literal-constant.
   11383      1.1  mrg @item @var{J} @tab The type shall be the same as the type of @var{I} or
   11384      1.1  mrg a boz-literal-constant. @var{I} and @var{J} shall not both be
   11385      1.1  mrg boz-literal-constants.  If either @var{I} and @var{J} is a
   11386      1.1  mrg boz-literal-constant, then the other argument must be a scalar @code{INTEGER}.
   11387      1.1  mrg @end multitable
   11388      1.1  mrg 
   11389      1.1  mrg @item @emph{Return value}:
   11390      1.1  mrg The return type is either a scalar @code{INTEGER} or a scalar
   11391      1.1  mrg @code{LOGICAL}.  If the kind type parameters differ, then the
   11392      1.1  mrg smaller kind type is implicitly converted to larger kind, and the 
   11393      1.1  mrg return has the larger kind.  A boz-literal-constant is 
   11394      1.1  mrg converted to an @code{INTEGER} with the kind type parameter of
   11395      1.1  mrg the other argument as-if a call to @ref{INT} occurred.
   11396      1.1  mrg 
   11397      1.1  mrg @item @emph{Example}:
   11398      1.1  mrg @smallexample
   11399      1.1  mrg PROGRAM test_or
   11400      1.1  mrg   LOGICAL :: T = .TRUE., F = .FALSE.
   11401      1.1  mrg   INTEGER :: a, b
   11402      1.1  mrg   DATA a / Z'F' /, b / Z'3' /
   11403      1.1  mrg 
   11404      1.1  mrg   WRITE (*,*) OR(T, T), OR(T, F), OR(F, T), OR(F, F)
   11405      1.1  mrg   WRITE (*,*) OR(a, b)
   11406      1.1  mrg END PROGRAM
   11407      1.1  mrg @end smallexample
   11408      1.1  mrg 
   11409      1.1  mrg @item @emph{See also}:
   11410  1.1.1.2  mrg Fortran 95 elemental function: @gol
   11411  1.1.1.2  mrg @ref{IOR}
   11412      1.1  mrg @end table
   11413      1.1  mrg 
   11414      1.1  mrg 
   11415      1.1  mrg 
   11416      1.1  mrg @node PACK
   11417      1.1  mrg @section @code{PACK} --- Pack an array into an array of rank one
   11418      1.1  mrg @fnindex PACK
   11419      1.1  mrg @cindex array, packing
   11420      1.1  mrg @cindex array, reduce dimension
   11421      1.1  mrg @cindex array, gather elements
   11422      1.1  mrg 
   11423      1.1  mrg @table @asis
   11424      1.1  mrg @item @emph{Description}:
   11425      1.1  mrg Stores the elements of @var{ARRAY} in an array of rank one.
   11426      1.1  mrg 
   11427      1.1  mrg The beginning of the resulting array is made up of elements whose @var{MASK} 
   11428      1.1  mrg equals @code{TRUE}. Afterwards, positions are filled with elements taken from
   11429      1.1  mrg @var{VECTOR}.
   11430      1.1  mrg 
   11431      1.1  mrg @item @emph{Standard}:
   11432  1.1.1.2  mrg Fortran 90 and later
   11433      1.1  mrg 
   11434      1.1  mrg @item @emph{Class}:
   11435      1.1  mrg Transformational function
   11436      1.1  mrg 
   11437      1.1  mrg @item @emph{Syntax}:
   11438      1.1  mrg @code{RESULT = PACK(ARRAY, MASK[,VECTOR])}
   11439      1.1  mrg 
   11440      1.1  mrg @item @emph{Arguments}:
   11441      1.1  mrg @multitable @columnfractions .15 .70
   11442      1.1  mrg @item @var{ARRAY}  @tab Shall be an array of any type.
   11443      1.1  mrg @item @var{MASK}   @tab Shall be an array of type @code{LOGICAL} and 
   11444      1.1  mrg of the same size as @var{ARRAY}. Alternatively, it may be a @code{LOGICAL} 
   11445      1.1  mrg scalar.
   11446      1.1  mrg @item @var{VECTOR} @tab (Optional) shall be an array of the same type 
   11447      1.1  mrg as @var{ARRAY} and of rank one. If present, the number of elements in 
   11448      1.1  mrg @var{VECTOR} shall be equal to or greater than the number of true elements 
   11449      1.1  mrg in @var{MASK}. If @var{MASK} is scalar, the number of elements in 
   11450      1.1  mrg @var{VECTOR} shall be equal to or greater than the number of elements in
   11451      1.1  mrg @var{ARRAY}.
   11452      1.1  mrg @end multitable
   11453      1.1  mrg 
   11454      1.1  mrg @item @emph{Return value}:
   11455      1.1  mrg The result is an array of rank one and the same type as that of @var{ARRAY}.
   11456      1.1  mrg If @var{VECTOR} is present, the result size is that of @var{VECTOR}, the
   11457      1.1  mrg number of @code{TRUE} values in @var{MASK} otherwise.
   11458      1.1  mrg 
   11459      1.1  mrg @item @emph{Example}:
   11460      1.1  mrg Gathering nonzero elements from an array:
   11461      1.1  mrg @smallexample
   11462      1.1  mrg PROGRAM test_pack_1
   11463      1.1  mrg   INTEGER :: m(6)
   11464      1.1  mrg   m = (/ 1, 0, 0, 0, 5, 0 /)
   11465      1.1  mrg   WRITE(*, FMT="(6(I0, ' '))") pack(m, m /= 0)  ! "1 5"
   11466      1.1  mrg END PROGRAM
   11467      1.1  mrg @end smallexample
   11468      1.1  mrg 
   11469      1.1  mrg Gathering nonzero elements from an array and appending elements from @var{VECTOR}:
   11470      1.1  mrg @smallexample
   11471      1.1  mrg PROGRAM test_pack_2
   11472      1.1  mrg   INTEGER :: m(4)
   11473      1.1  mrg   m = (/ 1, 0, 0, 2 /)
   11474  1.1.1.2  mrg   ! The following results in "1 2 3 4"
   11475  1.1.1.2  mrg   WRITE(*, FMT="(4(I0, ' '))") pack(m, m /= 0, (/ 0, 0, 3, 4 /))
   11476      1.1  mrg END PROGRAM
   11477      1.1  mrg @end smallexample
   11478      1.1  mrg 
   11479      1.1  mrg @item @emph{See also}:
   11480      1.1  mrg @ref{UNPACK}
   11481      1.1  mrg @end table
   11482      1.1  mrg 
   11483      1.1  mrg 
   11484      1.1  mrg 
   11485      1.1  mrg @node PARITY
   11486      1.1  mrg @section @code{PARITY} --- Reduction with exclusive OR
   11487      1.1  mrg @fnindex PARITY
   11488      1.1  mrg @cindex Parity
   11489      1.1  mrg @cindex Reduction, XOR
   11490      1.1  mrg @cindex XOR reduction
   11491      1.1  mrg 
   11492      1.1  mrg @table @asis
   11493      1.1  mrg @item @emph{Description}:
   11494      1.1  mrg Calculates the parity, i.e. the reduction using @code{.XOR.},
   11495      1.1  mrg of @var{MASK} along dimension @var{DIM}.
   11496      1.1  mrg 
   11497      1.1  mrg @item @emph{Standard}:
   11498      1.1  mrg Fortran 2008 and later
   11499      1.1  mrg 
   11500      1.1  mrg @item @emph{Class}:
   11501      1.1  mrg Transformational function
   11502      1.1  mrg 
   11503      1.1  mrg @item @emph{Syntax}:
   11504      1.1  mrg @multitable @columnfractions .80
   11505      1.1  mrg @item @code{RESULT = PARITY(MASK[, DIM])}
   11506      1.1  mrg @end multitable
   11507      1.1  mrg 
   11508      1.1  mrg @item @emph{Arguments}:
   11509      1.1  mrg @multitable @columnfractions .15 .70
   11510  1.1.1.3  mrg @item @var{MASK} @tab Shall be an array of type @code{LOGICAL}
   11511      1.1  mrg @item @var{DIM}   @tab (Optional) shall be a scalar of type 
   11512      1.1  mrg @code{INTEGER} with a value in the range from 1 to n, where n 
   11513      1.1  mrg equals the rank of @var{MASK}.
   11514      1.1  mrg @end multitable
   11515      1.1  mrg 
   11516      1.1  mrg @item @emph{Return value}:
   11517      1.1  mrg The result is of the same type as @var{MASK}.
   11518      1.1  mrg 
   11519      1.1  mrg If @var{DIM} is absent, a scalar with the parity of all elements in
   11520      1.1  mrg @var{MASK} is returned, i.e. true if an odd number of elements is
   11521      1.1  mrg @code{.true.} and false otherwise.  If @var{DIM} is present, an array
   11522      1.1  mrg of rank @math{n-1}, where @math{n} equals the rank of @var{ARRAY},
   11523      1.1  mrg and a shape similar to that of @var{MASK} with dimension @var{DIM}
   11524      1.1  mrg dropped is returned.
   11525      1.1  mrg 
   11526      1.1  mrg @item @emph{Example}:
   11527      1.1  mrg @smallexample
   11528      1.1  mrg PROGRAM test_sum
   11529      1.1  mrg   LOGICAL :: x(2) = [ .true., .false. ]
   11530      1.1  mrg   print *, PARITY(x) ! prints "T" (true).
   11531      1.1  mrg END PROGRAM
   11532      1.1  mrg @end smallexample
   11533      1.1  mrg @end table
   11534      1.1  mrg 
   11535      1.1  mrg 
   11536      1.1  mrg 
   11537      1.1  mrg @node PERROR
   11538      1.1  mrg @section @code{PERROR} --- Print system error message
   11539      1.1  mrg @fnindex PERROR
   11540      1.1  mrg @cindex system, error handling
   11541      1.1  mrg 
   11542      1.1  mrg @table @asis
   11543      1.1  mrg @item @emph{Description}:
   11544      1.1  mrg Prints (on the C @code{stderr} stream) a newline-terminated error
   11545      1.1  mrg message corresponding to the last system error. This is prefixed by
   11546      1.1  mrg @var{STRING}, a colon and a space. See @code{perror(3)}.
   11547      1.1  mrg 
   11548      1.1  mrg @item @emph{Standard}:
   11549      1.1  mrg GNU extension
   11550      1.1  mrg 
   11551      1.1  mrg @item @emph{Class}:
   11552      1.1  mrg Subroutine
   11553      1.1  mrg 
   11554      1.1  mrg @item @emph{Syntax}:
   11555      1.1  mrg @code{CALL PERROR(STRING)}
   11556      1.1  mrg 
   11557      1.1  mrg @item @emph{Arguments}:
   11558      1.1  mrg @multitable @columnfractions .15 .70
   11559      1.1  mrg @item @var{STRING} @tab A scalar of type @code{CHARACTER} and of the
   11560      1.1  mrg default kind.
   11561      1.1  mrg @end multitable
   11562      1.1  mrg 
   11563      1.1  mrg @item @emph{See also}:
   11564      1.1  mrg @ref{IERRNO}
   11565      1.1  mrg @end table
   11566      1.1  mrg 
   11567      1.1  mrg 
   11568      1.1  mrg 
   11569      1.1  mrg @node POPCNT
   11570      1.1  mrg @section @code{POPCNT} --- Number of bits set
   11571      1.1  mrg @fnindex POPCNT
   11572      1.1  mrg @cindex binary representation
   11573      1.1  mrg @cindex bits set
   11574      1.1  mrg 
   11575      1.1  mrg @table @asis
   11576      1.1  mrg @item @emph{Description}:
   11577      1.1  mrg @code{POPCNT(I)} returns the number of bits set ('1' bits) in the binary
   11578      1.1  mrg representation of @code{I}.
   11579      1.1  mrg 
   11580      1.1  mrg @item @emph{Standard}:
   11581      1.1  mrg Fortran 2008 and later
   11582      1.1  mrg 
   11583      1.1  mrg @item @emph{Class}:
   11584      1.1  mrg Elemental function
   11585      1.1  mrg 
   11586      1.1  mrg @item @emph{Syntax}:
   11587      1.1  mrg @code{RESULT = POPCNT(I)}
   11588      1.1  mrg 
   11589      1.1  mrg @item @emph{Arguments}:
   11590      1.1  mrg @multitable @columnfractions .15 .70
   11591      1.1  mrg @item @var{I} @tab Shall be of type @code{INTEGER}.
   11592      1.1  mrg @end multitable
   11593      1.1  mrg 
   11594      1.1  mrg @item @emph{Return value}:
   11595      1.1  mrg The return value is of type @code{INTEGER} and of the default integer
   11596      1.1  mrg kind.
   11597      1.1  mrg 
   11598      1.1  mrg @item @emph{Example}:
   11599      1.1  mrg @smallexample
   11600      1.1  mrg program test_population
   11601      1.1  mrg   print *, popcnt(127),       poppar(127)
   11602      1.1  mrg   print *, popcnt(huge(0_4)), poppar(huge(0_4))
   11603      1.1  mrg   print *, popcnt(huge(0_8)), poppar(huge(0_8))
   11604      1.1  mrg end program test_population
   11605      1.1  mrg @end smallexample
   11606  1.1.1.2  mrg @item @emph{See also}:
   11607  1.1.1.2  mrg @ref{POPPAR}, @gol
   11608  1.1.1.2  mrg @ref{LEADZ}, @gol
   11609  1.1.1.2  mrg @ref{TRAILZ}
   11610      1.1  mrg @end table
   11611      1.1  mrg 
   11612      1.1  mrg 
   11613  1.1.1.2  mrg 
   11614      1.1  mrg @node POPPAR
   11615      1.1  mrg @section @code{POPPAR} --- Parity of the number of bits set
   11616      1.1  mrg @fnindex POPPAR
   11617      1.1  mrg @cindex binary representation
   11618      1.1  mrg @cindex parity
   11619      1.1  mrg 
   11620      1.1  mrg @table @asis
   11621      1.1  mrg @item @emph{Description}:
   11622      1.1  mrg @code{POPPAR(I)} returns parity of the integer @code{I}, i.e. the parity
   11623      1.1  mrg of the number of bits set ('1' bits) in the binary representation of
   11624      1.1  mrg @code{I}. It is equal to 0 if @code{I} has an even number of bits set,
   11625      1.1  mrg and 1 for an odd number of '1' bits.
   11626      1.1  mrg 
   11627      1.1  mrg @item @emph{Standard}:
   11628      1.1  mrg Fortran 2008 and later
   11629      1.1  mrg 
   11630      1.1  mrg @item @emph{Class}:
   11631      1.1  mrg Elemental function
   11632      1.1  mrg 
   11633      1.1  mrg @item @emph{Syntax}:
   11634      1.1  mrg @code{RESULT = POPPAR(I)}
   11635      1.1  mrg 
   11636      1.1  mrg @item @emph{Arguments}:
   11637      1.1  mrg @multitable @columnfractions .15 .70
   11638      1.1  mrg @item @var{I} @tab Shall be of type @code{INTEGER}.
   11639      1.1  mrg @end multitable
   11640      1.1  mrg 
   11641      1.1  mrg @item @emph{Return value}:
   11642      1.1  mrg The return value is of type @code{INTEGER} and of the default integer
   11643      1.1  mrg kind.
   11644      1.1  mrg 
   11645      1.1  mrg @item @emph{Example}:
   11646      1.1  mrg @smallexample
   11647      1.1  mrg program test_population
   11648      1.1  mrg   print *, popcnt(127),       poppar(127)
   11649      1.1  mrg   print *, popcnt(huge(0_4)), poppar(huge(0_4))
   11650      1.1  mrg   print *, popcnt(huge(0_8)), poppar(huge(0_8))
   11651      1.1  mrg end program test_population
   11652      1.1  mrg @end smallexample
   11653  1.1.1.2  mrg @item @emph{See also}:
   11654  1.1.1.2  mrg @ref{POPCNT}, @gol
   11655  1.1.1.2  mrg @ref{LEADZ}, @gol
   11656  1.1.1.2  mrg @ref{TRAILZ}
   11657      1.1  mrg @end table
   11658      1.1  mrg 
   11659      1.1  mrg 
   11660      1.1  mrg 
   11661      1.1  mrg @node PRECISION
   11662      1.1  mrg @section @code{PRECISION} --- Decimal precision of a real kind
   11663      1.1  mrg @fnindex PRECISION
   11664      1.1  mrg @cindex model representation, precision
   11665      1.1  mrg 
   11666      1.1  mrg @table @asis
   11667      1.1  mrg @item @emph{Description}:
   11668      1.1  mrg @code{PRECISION(X)} returns the decimal precision in the model of the
   11669      1.1  mrg type of @code{X}.
   11670      1.1  mrg 
   11671      1.1  mrg @item @emph{Standard}:
   11672  1.1.1.2  mrg Fortran 90 and later
   11673      1.1  mrg 
   11674      1.1  mrg @item @emph{Class}:
   11675      1.1  mrg Inquiry function
   11676      1.1  mrg 
   11677      1.1  mrg @item @emph{Syntax}:
   11678      1.1  mrg @code{RESULT = PRECISION(X)}
   11679      1.1  mrg 
   11680      1.1  mrg @item @emph{Arguments}:
   11681      1.1  mrg @multitable @columnfractions .15 .70
   11682  1.1.1.2  mrg @item @var{X} @tab Shall be of type @code{REAL} or @code{COMPLEX}. It may
   11683  1.1.1.2  mrg be scalar or valued.
   11684      1.1  mrg @end multitable
   11685      1.1  mrg 
   11686      1.1  mrg @item @emph{Return value}:
   11687      1.1  mrg The return value is of type @code{INTEGER} and of the default integer
   11688      1.1  mrg kind.
   11689      1.1  mrg 
   11690      1.1  mrg @item @emph{Example}:
   11691      1.1  mrg @smallexample
   11692      1.1  mrg program prec_and_range
   11693      1.1  mrg   real(kind=4) :: x(2)
   11694      1.1  mrg   complex(kind=8) :: y
   11695      1.1  mrg 
   11696      1.1  mrg   print *, precision(x), range(x)
   11697      1.1  mrg   print *, precision(y), range(y)
   11698      1.1  mrg end program prec_and_range
   11699      1.1  mrg @end smallexample
   11700  1.1.1.2  mrg @item @emph{See also}:
   11701  1.1.1.2  mrg @ref{SELECTED_REAL_KIND}, @gol
   11702  1.1.1.2  mrg @ref{RANGE}
   11703      1.1  mrg @end table
   11704      1.1  mrg 
   11705      1.1  mrg 
   11706      1.1  mrg 
   11707      1.1  mrg @node PRESENT
   11708      1.1  mrg @section @code{PRESENT} --- Determine whether an optional dummy argument is specified
   11709      1.1  mrg @fnindex PRESENT
   11710      1.1  mrg 
   11711      1.1  mrg @table @asis
   11712      1.1  mrg @item @emph{Description}:
   11713      1.1  mrg Determines whether an optional dummy argument is present.
   11714      1.1  mrg 
   11715      1.1  mrg @item @emph{Standard}:
   11716  1.1.1.2  mrg Fortran 90 and later
   11717      1.1  mrg 
   11718      1.1  mrg @item @emph{Class}:
   11719      1.1  mrg Inquiry function
   11720      1.1  mrg 
   11721      1.1  mrg @item @emph{Syntax}:
   11722      1.1  mrg @code{RESULT = PRESENT(A)}
   11723      1.1  mrg 
   11724      1.1  mrg @item @emph{Arguments}:
   11725      1.1  mrg @multitable @columnfractions .15 .70
   11726      1.1  mrg @item @var{A} @tab May be of any type and may be a pointer, scalar or array
   11727      1.1  mrg value, or a dummy procedure. It shall be the name of an optional dummy argument
   11728      1.1  mrg accessible within the current subroutine or function.
   11729      1.1  mrg @end multitable
   11730      1.1  mrg 
   11731      1.1  mrg @item @emph{Return value}:
   11732      1.1  mrg Returns either @code{TRUE} if the optional argument @var{A} is present, or
   11733      1.1  mrg @code{FALSE} otherwise.
   11734      1.1  mrg 
   11735      1.1  mrg @item @emph{Example}:
   11736      1.1  mrg @smallexample
   11737      1.1  mrg PROGRAM test_present
   11738      1.1  mrg   WRITE(*,*) f(), f(42)      ! "F T"
   11739      1.1  mrg CONTAINS
   11740      1.1  mrg   LOGICAL FUNCTION f(x)
   11741      1.1  mrg     INTEGER, INTENT(IN), OPTIONAL :: x
   11742      1.1  mrg     f = PRESENT(x)
   11743      1.1  mrg   END FUNCTION
   11744      1.1  mrg END PROGRAM
   11745      1.1  mrg @end smallexample
   11746      1.1  mrg @end table
   11747      1.1  mrg 
   11748      1.1  mrg 
   11749      1.1  mrg 
   11750      1.1  mrg @node PRODUCT
   11751      1.1  mrg @section @code{PRODUCT} --- Product of array elements
   11752      1.1  mrg @fnindex PRODUCT
   11753      1.1  mrg @cindex array, product
   11754      1.1  mrg @cindex array, multiply elements
   11755      1.1  mrg @cindex array, conditionally multiply elements
   11756      1.1  mrg @cindex multiply array elements
   11757      1.1  mrg 
   11758      1.1  mrg @table @asis
   11759      1.1  mrg @item @emph{Description}:
   11760      1.1  mrg Multiplies the elements of @var{ARRAY} along dimension @var{DIM} if
   11761      1.1  mrg the corresponding element in @var{MASK} is @code{TRUE}.
   11762      1.1  mrg 
   11763      1.1  mrg @item @emph{Standard}:
   11764  1.1.1.2  mrg Fortran 90 and later
   11765      1.1  mrg 
   11766      1.1  mrg @item @emph{Class}:
   11767      1.1  mrg Transformational function
   11768      1.1  mrg 
   11769      1.1  mrg @item @emph{Syntax}:
   11770      1.1  mrg @multitable @columnfractions .80
   11771      1.1  mrg @item @code{RESULT = PRODUCT(ARRAY[, MASK])}
   11772      1.1  mrg @item @code{RESULT = PRODUCT(ARRAY, DIM[, MASK])}
   11773      1.1  mrg @end multitable
   11774      1.1  mrg 
   11775      1.1  mrg @item @emph{Arguments}:
   11776      1.1  mrg @multitable @columnfractions .15 .70
   11777      1.1  mrg @item @var{ARRAY} @tab Shall be an array of type @code{INTEGER}, 
   11778      1.1  mrg @code{REAL} or @code{COMPLEX}.
   11779      1.1  mrg @item @var{DIM}   @tab (Optional) shall be a scalar of type 
   11780      1.1  mrg @code{INTEGER} with a value in the range from 1 to n, where n 
   11781      1.1  mrg equals the rank of @var{ARRAY}.
   11782      1.1  mrg @item @var{MASK}  @tab (Optional) shall be of type @code{LOGICAL} 
   11783      1.1  mrg and either be a scalar or an array of the same shape as @var{ARRAY}.
   11784      1.1  mrg @end multitable
   11785      1.1  mrg 
   11786      1.1  mrg @item @emph{Return value}:
   11787      1.1  mrg The result is of the same type as @var{ARRAY}.
   11788      1.1  mrg 
   11789      1.1  mrg If @var{DIM} is absent, a scalar with the product of all elements in 
   11790      1.1  mrg @var{ARRAY} is returned. Otherwise, an array of rank n-1, where n equals 
   11791      1.1  mrg the rank of @var{ARRAY}, and a shape similar to that of @var{ARRAY} with 
   11792      1.1  mrg dimension @var{DIM} dropped is returned.
   11793      1.1  mrg 
   11794      1.1  mrg 
   11795      1.1  mrg @item @emph{Example}:
   11796      1.1  mrg @smallexample
   11797      1.1  mrg PROGRAM test_product
   11798      1.1  mrg   INTEGER :: x(5) = (/ 1, 2, 3, 4 ,5 /)
   11799      1.1  mrg   print *, PRODUCT(x)                    ! all elements, product = 120
   11800      1.1  mrg   print *, PRODUCT(x, MASK=MOD(x, 2)==1) ! odd elements, product = 15
   11801      1.1  mrg END PROGRAM
   11802      1.1  mrg @end smallexample
   11803      1.1  mrg 
   11804      1.1  mrg @item @emph{See also}:
   11805      1.1  mrg @ref{SUM}
   11806      1.1  mrg @end table
   11807      1.1  mrg 
   11808      1.1  mrg 
   11809      1.1  mrg 
   11810      1.1  mrg @node RADIX
   11811      1.1  mrg @section @code{RADIX} --- Base of a model number
   11812      1.1  mrg @fnindex RADIX
   11813      1.1  mrg @cindex model representation, base
   11814      1.1  mrg @cindex model representation, radix
   11815      1.1  mrg 
   11816      1.1  mrg @table @asis
   11817      1.1  mrg @item @emph{Description}:
   11818      1.1  mrg @code{RADIX(X)} returns the base of the model representing the entity @var{X}.
   11819      1.1  mrg 
   11820      1.1  mrg @item @emph{Standard}:
   11821  1.1.1.2  mrg Fortran 90 and later
   11822      1.1  mrg 
   11823      1.1  mrg @item @emph{Class}:
   11824      1.1  mrg Inquiry function
   11825      1.1  mrg 
   11826      1.1  mrg @item @emph{Syntax}:
   11827      1.1  mrg @code{RESULT = RADIX(X)}
   11828      1.1  mrg 
   11829      1.1  mrg @item @emph{Arguments}:
   11830      1.1  mrg @multitable @columnfractions .15 .70
   11831      1.1  mrg @item @var{X} @tab Shall be of type @code{INTEGER} or @code{REAL}
   11832      1.1  mrg @end multitable
   11833      1.1  mrg 
   11834      1.1  mrg @item @emph{Return value}:
   11835      1.1  mrg The return value is a scalar of type @code{INTEGER} and of the default
   11836      1.1  mrg integer kind.
   11837      1.1  mrg 
   11838      1.1  mrg @item @emph{Example}:
   11839      1.1  mrg @smallexample
   11840      1.1  mrg program test_radix
   11841      1.1  mrg   print *, "The radix for the default integer kind is", radix(0)
   11842      1.1  mrg   print *, "The radix for the default real kind is", radix(0.0)
   11843      1.1  mrg end program test_radix
   11844      1.1  mrg @end smallexample
   11845  1.1.1.2  mrg @item @emph{See also}:
   11846  1.1.1.2  mrg @ref{SELECTED_REAL_KIND}
   11847      1.1  mrg @end table
   11848      1.1  mrg 
   11849      1.1  mrg 
   11850      1.1  mrg 
   11851      1.1  mrg @node RAN
   11852      1.1  mrg @section @code{RAN} --- Real pseudo-random number
   11853      1.1  mrg @fnindex RAN
   11854      1.1  mrg @cindex random number generation
   11855      1.1  mrg 
   11856      1.1  mrg @table @asis
   11857      1.1  mrg @item @emph{Description}:
   11858      1.1  mrg For compatibility with HP FORTRAN 77/iX, the @code{RAN} intrinsic is
   11859      1.1  mrg provided as an alias for @code{RAND}.  See @ref{RAND} for complete
   11860      1.1  mrg documentation.
   11861      1.1  mrg 
   11862      1.1  mrg @item @emph{Standard}:
   11863      1.1  mrg GNU extension
   11864      1.1  mrg 
   11865      1.1  mrg @item @emph{Class}:
   11866      1.1  mrg Function
   11867      1.1  mrg 
   11868      1.1  mrg @item @emph{See also}:
   11869  1.1.1.2  mrg @ref{RAND}, @gol
   11870  1.1.1.2  mrg @ref{RANDOM_NUMBER}
   11871      1.1  mrg @end table
   11872      1.1  mrg 
   11873      1.1  mrg 
   11874      1.1  mrg 
   11875      1.1  mrg @node RAND
   11876      1.1  mrg @section @code{RAND} --- Real pseudo-random number
   11877      1.1  mrg @fnindex RAND
   11878      1.1  mrg @cindex random number generation
   11879      1.1  mrg 
   11880      1.1  mrg @table @asis
   11881      1.1  mrg @item @emph{Description}:
   11882      1.1  mrg @code{RAND(FLAG)} returns a pseudo-random number from a uniform
   11883      1.1  mrg distribution between 0 and 1. If @var{FLAG} is 0, the next number
   11884      1.1  mrg in the current sequence is returned; if @var{FLAG} is 1, the generator
   11885      1.1  mrg is restarted by @code{CALL SRAND(0)}; if @var{FLAG} has any other value,
   11886      1.1  mrg it is used as a new seed with @code{SRAND}.
   11887      1.1  mrg 
   11888      1.1  mrg This intrinsic routine is provided for backwards compatibility with
   11889      1.1  mrg GNU Fortran 77. It implements a simple modulo generator as provided 
   11890      1.1  mrg by @command{g77}. For new code, one should consider the use of 
   11891      1.1  mrg @ref{RANDOM_NUMBER} as it implements a superior algorithm.
   11892      1.1  mrg 
   11893      1.1  mrg @item @emph{Standard}:
   11894      1.1  mrg GNU extension
   11895      1.1  mrg 
   11896      1.1  mrg @item @emph{Class}:
   11897      1.1  mrg Function
   11898      1.1  mrg 
   11899      1.1  mrg @item @emph{Syntax}:
   11900      1.1  mrg @code{RESULT = RAND(I)}
   11901      1.1  mrg 
   11902      1.1  mrg @item @emph{Arguments}:
   11903      1.1  mrg @multitable @columnfractions .15 .70
   11904      1.1  mrg @item @var{I} @tab Shall be a scalar @code{INTEGER} of kind 4.
   11905      1.1  mrg @end multitable
   11906      1.1  mrg 
   11907      1.1  mrg @item @emph{Return value}:
   11908      1.1  mrg The return value is of @code{REAL} type and the default kind.
   11909      1.1  mrg 
   11910      1.1  mrg @item @emph{Example}:
   11911      1.1  mrg @smallexample
   11912      1.1  mrg program test_rand
   11913      1.1  mrg   integer,parameter :: seed = 86456
   11914      1.1  mrg   
   11915      1.1  mrg   call srand(seed)
   11916      1.1  mrg   print *, rand(), rand(), rand(), rand()
   11917      1.1  mrg   print *, rand(seed), rand(), rand(), rand()
   11918      1.1  mrg end program test_rand
   11919      1.1  mrg @end smallexample
   11920      1.1  mrg 
   11921      1.1  mrg @item @emph{See also}:
   11922  1.1.1.2  mrg @ref{SRAND}, @gol
   11923  1.1.1.2  mrg @ref{RANDOM_NUMBER}
   11924      1.1  mrg 
   11925      1.1  mrg @end table
   11926      1.1  mrg 
   11927      1.1  mrg 
   11928      1.1  mrg @node RANDOM_INIT
   11929      1.1  mrg @section @code{RANDOM_INIT} --- Initialize a pseudo-random number generator
   11930      1.1  mrg @fnindex RANDOM_INIT
   11931      1.1  mrg @cindex random number generation, initialization
   11932      1.1  mrg 
   11933      1.1  mrg @table @asis
   11934      1.1  mrg @item @emph{Description}:
   11935      1.1  mrg Initializes the state of the pseudorandom number generator used by 
   11936      1.1  mrg @code{RANDOM_NUMBER}.
   11937      1.1  mrg 
   11938      1.1  mrg @item @emph{Standard}:
   11939      1.1  mrg Fortran 2018
   11940      1.1  mrg 
   11941      1.1  mrg @item @emph{Class}:
   11942      1.1  mrg Subroutine
   11943      1.1  mrg 
   11944      1.1  mrg @item @emph{Syntax}:
   11945      1.1  mrg @code{CALL RANDOM_INIT(REPEATABLE, IMAGE_DISTINCT)}
   11946      1.1  mrg 
   11947      1.1  mrg @item @emph{Arguments}:
   11948  1.1.1.2  mrg @multitable @columnfractions .25 .70
   11949      1.1  mrg @item @var{REPEATABLE} @tab Shall be a scalar with a @code{LOGICAL} type,
   11950      1.1  mrg and it is @code{INTENT(IN)}.  If it is @code{.true.}, the seed is set to
   11951      1.1  mrg a processor-dependent value that is the same each time @code{RANDOM_INIT}
   11952      1.1  mrg is called from the same image.  The term ``same image'' means a single
   11953      1.1  mrg instance of program execution.  The sequence of random numbers is different
   11954      1.1  mrg for repeated execution of the program.  If it is @code{.false.}, the seed
   11955      1.1  mrg is set to a processor-dependent value.
   11956      1.1  mrg @item @var{IMAGE_DISTINCT} @tab Shall be a scalar with a
   11957      1.1  mrg @code{LOGICAL} type, and it is @code{INTENT(IN)}.  If it is @code{.true.},
   11958      1.1  mrg the seed is set to a processor-dependent value that is distinct from th
   11959      1.1  mrg seed set by a call to @code{RANDOM_INIT} in another image.  If it is
   11960  1.1.1.3  mrg @code{.false.}, the seed is set to a value that does depend which image called
   11961      1.1  mrg @code{RANDOM_INIT}.
   11962      1.1  mrg @end multitable
   11963      1.1  mrg 
   11964      1.1  mrg @item @emph{Example}:
   11965      1.1  mrg @smallexample
   11966      1.1  mrg program test_random_seed
   11967      1.1  mrg   implicit none
   11968      1.1  mrg   real x(3), y(3)
   11969      1.1  mrg   call random_init(.true., .true.)
   11970      1.1  mrg   call random_number(x)
   11971      1.1  mrg   call random_init(.true., .true.)
   11972      1.1  mrg   call random_number(y)
   11973      1.1  mrg   ! x and y are the same sequence
   11974      1.1  mrg   if (any(x /= y)) call abort
   11975      1.1  mrg end program test_random_seed
   11976      1.1  mrg @end smallexample
   11977      1.1  mrg 
   11978      1.1  mrg @item @emph{See also}:
   11979  1.1.1.2  mrg @ref{RANDOM_NUMBER}, @gol
   11980  1.1.1.2  mrg @ref{RANDOM_SEED}
   11981      1.1  mrg @end table
   11982      1.1  mrg 
   11983      1.1  mrg 
   11984      1.1  mrg @node RANDOM_NUMBER
   11985      1.1  mrg @section @code{RANDOM_NUMBER} --- Pseudo-random number
   11986      1.1  mrg @fnindex RANDOM_NUMBER
   11987      1.1  mrg @cindex random number generation
   11988      1.1  mrg 
   11989      1.1  mrg @table @asis
   11990      1.1  mrg @item @emph{Description}:
   11991      1.1  mrg Returns a single pseudorandom number or an array of pseudorandom numbers
   11992      1.1  mrg from the uniform distribution over the range @math{ 0 \leq x < 1}.
   11993      1.1  mrg 
   11994  1.1.1.2  mrg The runtime-library implements the xoshiro256** pseudorandom number
   11995  1.1.1.2  mrg generator (PRNG). This generator has a period of @math{2^{256} - 1},
   11996  1.1.1.2  mrg and when using multiple threads up to @math{2^{128}} threads can each
   11997  1.1.1.2  mrg generate @math{2^{128}} random numbers before any aliasing occurs.
   11998      1.1  mrg 
   11999      1.1  mrg Note that in a multi-threaded program (e.g. using OpenMP directives),
   12000      1.1  mrg each thread will have its own random number state. For details of the
   12001      1.1  mrg seeding procedure, see the documentation for the @code{RANDOM_SEED}
   12002      1.1  mrg intrinsic.
   12003      1.1  mrg 
   12004      1.1  mrg 
   12005      1.1  mrg @item @emph{Standard}:
   12006  1.1.1.2  mrg Fortran 90 and later
   12007      1.1  mrg 
   12008      1.1  mrg @item @emph{Class}:
   12009      1.1  mrg Subroutine
   12010      1.1  mrg 
   12011      1.1  mrg @item @emph{Syntax}:
   12012  1.1.1.3  mrg @code{CALL RANDOM_NUMBER(HARVEST)}
   12013      1.1  mrg 
   12014      1.1  mrg @item @emph{Arguments}:
   12015      1.1  mrg @multitable @columnfractions .15 .70
   12016      1.1  mrg @item @var{HARVEST} @tab Shall be a scalar or an array of type @code{REAL}.
   12017      1.1  mrg @end multitable
   12018      1.1  mrg 
   12019      1.1  mrg @item @emph{Example}:
   12020      1.1  mrg @smallexample
   12021      1.1  mrg program test_random_number
   12022      1.1  mrg   REAL :: r(5,5)
   12023      1.1  mrg   CALL RANDOM_NUMBER(r)
   12024      1.1  mrg end program
   12025      1.1  mrg @end smallexample
   12026      1.1  mrg 
   12027      1.1  mrg @item @emph{See also}:
   12028  1.1.1.2  mrg @ref{RANDOM_SEED}, @gol
   12029  1.1.1.2  mrg @ref{RANDOM_INIT}
   12030      1.1  mrg @end table
   12031      1.1  mrg 
   12032      1.1  mrg 
   12033      1.1  mrg 
   12034      1.1  mrg @node RANDOM_SEED
   12035      1.1  mrg @section @code{RANDOM_SEED} --- Initialize a pseudo-random number sequence
   12036      1.1  mrg @fnindex RANDOM_SEED
   12037      1.1  mrg @cindex random number generation, seeding
   12038      1.1  mrg @cindex seeding a random number generator
   12039      1.1  mrg 
   12040      1.1  mrg @table @asis
   12041      1.1  mrg @item @emph{Description}:
   12042      1.1  mrg Restarts or queries the state of the pseudorandom number generator used by 
   12043      1.1  mrg @code{RANDOM_NUMBER}.
   12044      1.1  mrg 
   12045      1.1  mrg If @code{RANDOM_SEED} is called without arguments, it is seeded with
   12046      1.1  mrg random data retrieved from the operating system.
   12047      1.1  mrg 
   12048      1.1  mrg As an extension to the Fortran standard, the GFortran
   12049      1.1  mrg @code{RANDOM_NUMBER} supports multiple threads. Each thread in a
   12050      1.1  mrg multi-threaded program has its own seed.  When @code{RANDOM_SEED} is
   12051      1.1  mrg called either without arguments or with the @var{PUT} argument, the
   12052      1.1  mrg given seed is copied into a master seed as well as the seed of the
   12053      1.1  mrg current thread. When a new thread uses @code{RANDOM_NUMBER} for the
   12054      1.1  mrg first time, the seed is copied from the master seed, and forwarded
   12055  1.1.1.2  mrg @math{N * 2^{128}} steps to guarantee that the random stream does not
   12056      1.1  mrg alias any other stream in the system, where @var{N} is the number of
   12057      1.1  mrg threads that have used @code{RANDOM_NUMBER} so far during the program
   12058      1.1  mrg execution.
   12059      1.1  mrg 
   12060      1.1  mrg @item @emph{Standard}:
   12061  1.1.1.2  mrg Fortran 90 and later
   12062      1.1  mrg 
   12063      1.1  mrg @item @emph{Class}:
   12064      1.1  mrg Subroutine
   12065      1.1  mrg 
   12066      1.1  mrg @item @emph{Syntax}:
   12067      1.1  mrg @code{CALL RANDOM_SEED([SIZE, PUT, GET])}
   12068      1.1  mrg 
   12069      1.1  mrg @item @emph{Arguments}:
   12070      1.1  mrg @multitable @columnfractions .15 .70
   12071      1.1  mrg @item @var{SIZE} @tab (Optional) Shall be a scalar and of type default 
   12072      1.1  mrg @code{INTEGER}, with @code{INTENT(OUT)}. It specifies the minimum size 
   12073      1.1  mrg of the arrays used with the @var{PUT} and @var{GET} arguments.
   12074      1.1  mrg @item @var{PUT}  @tab (Optional) Shall be an array of type default 
   12075      1.1  mrg @code{INTEGER} and rank one. It is @code{INTENT(IN)} and the size of 
   12076      1.1  mrg the array must be larger than or equal to the number returned by the 
   12077      1.1  mrg @var{SIZE} argument.
   12078      1.1  mrg @item @var{GET}  @tab (Optional) Shall be an array of type default 
   12079      1.1  mrg @code{INTEGER} and rank one. It is @code{INTENT(OUT)} and the size 
   12080      1.1  mrg of the array must be larger than or equal to the number returned by 
   12081      1.1  mrg the @var{SIZE} argument.
   12082      1.1  mrg @end multitable
   12083      1.1  mrg 
   12084      1.1  mrg @item @emph{Example}:
   12085      1.1  mrg @smallexample
   12086      1.1  mrg program test_random_seed
   12087      1.1  mrg   implicit none
   12088      1.1  mrg   integer, allocatable :: seed(:)
   12089      1.1  mrg   integer :: n
   12090      1.1  mrg 
   12091      1.1  mrg   call random_seed(size = n)
   12092      1.1  mrg   allocate(seed(n))
   12093      1.1  mrg   call random_seed(get=seed)
   12094      1.1  mrg   write (*, *) seed
   12095      1.1  mrg end program test_random_seed
   12096      1.1  mrg @end smallexample
   12097      1.1  mrg 
   12098      1.1  mrg @item @emph{See also}:
   12099  1.1.1.2  mrg @ref{RANDOM_NUMBER}, @gol
   12100  1.1.1.2  mrg @ref{RANDOM_INIT}
   12101      1.1  mrg @end table
   12102      1.1  mrg 
   12103      1.1  mrg 
   12104      1.1  mrg 
   12105      1.1  mrg @node RANGE
   12106      1.1  mrg @section @code{RANGE} --- Decimal exponent range
   12107      1.1  mrg @fnindex RANGE
   12108      1.1  mrg @cindex model representation, range
   12109      1.1  mrg 
   12110      1.1  mrg @table @asis
   12111      1.1  mrg @item @emph{Description}:
   12112      1.1  mrg @code{RANGE(X)} returns the decimal exponent range in the model of the
   12113      1.1  mrg type of @code{X}.
   12114      1.1  mrg 
   12115      1.1  mrg @item @emph{Standard}:
   12116  1.1.1.2  mrg Fortran 90 and later
   12117      1.1  mrg 
   12118      1.1  mrg @item @emph{Class}:
   12119      1.1  mrg Inquiry function
   12120      1.1  mrg 
   12121      1.1  mrg @item @emph{Syntax}:
   12122      1.1  mrg @code{RESULT = RANGE(X)}
   12123      1.1  mrg 
   12124      1.1  mrg @item @emph{Arguments}:
   12125      1.1  mrg @multitable @columnfractions .15 .70
   12126      1.1  mrg @item @var{X} @tab Shall be of type @code{INTEGER}, @code{REAL}
   12127      1.1  mrg or @code{COMPLEX}.
   12128      1.1  mrg @end multitable
   12129      1.1  mrg 
   12130      1.1  mrg @item @emph{Return value}:
   12131      1.1  mrg The return value is of type @code{INTEGER} and of the default integer
   12132      1.1  mrg kind.
   12133      1.1  mrg 
   12134      1.1  mrg @item @emph{Example}:
   12135      1.1  mrg See @code{PRECISION} for an example.
   12136  1.1.1.2  mrg @item @emph{See also}:
   12137  1.1.1.2  mrg @ref{SELECTED_REAL_KIND}, @gol
   12138  1.1.1.2  mrg @ref{PRECISION}
   12139      1.1  mrg @end table
   12140      1.1  mrg 
   12141      1.1  mrg 
   12142      1.1  mrg 
   12143      1.1  mrg @node RANK
   12144      1.1  mrg @section @code{RANK} --- Rank of a data object
   12145      1.1  mrg @fnindex RANK
   12146      1.1  mrg @cindex rank
   12147      1.1  mrg 
   12148      1.1  mrg @table @asis
   12149      1.1  mrg @item @emph{Description}:
   12150      1.1  mrg @code{RANK(A)} returns the rank of a scalar or array data object.
   12151      1.1  mrg 
   12152      1.1  mrg @item @emph{Standard}:
   12153      1.1  mrg Technical Specification (TS) 29113
   12154      1.1  mrg 
   12155      1.1  mrg @item @emph{Class}:
   12156      1.1  mrg Inquiry function
   12157      1.1  mrg 
   12158      1.1  mrg @item @emph{Syntax}:
   12159      1.1  mrg @code{RESULT = RANK(A)}
   12160      1.1  mrg 
   12161      1.1  mrg @item @emph{Arguments}:
   12162      1.1  mrg @multitable @columnfractions .15 .70
   12163      1.1  mrg @item @var{A} @tab can be of any type
   12164      1.1  mrg @end multitable
   12165      1.1  mrg 
   12166      1.1  mrg @item @emph{Return value}:
   12167      1.1  mrg The return value is of type @code{INTEGER} and of the default integer
   12168      1.1  mrg kind. For arrays, their rank is returned; for scalars zero is returned.
   12169      1.1  mrg 
   12170      1.1  mrg @item @emph{Example}:
   12171      1.1  mrg @smallexample
   12172      1.1  mrg program test_rank
   12173      1.1  mrg   integer :: a
   12174      1.1  mrg   real, allocatable :: b(:,:)
   12175      1.1  mrg 
   12176      1.1  mrg   print *, rank(a), rank(b) ! Prints:  0  2
   12177      1.1  mrg end program test_rank
   12178      1.1  mrg @end smallexample
   12179      1.1  mrg 
   12180      1.1  mrg @end table
   12181      1.1  mrg 
   12182      1.1  mrg 
   12183      1.1  mrg 
   12184      1.1  mrg @node REAL
   12185      1.1  mrg @section @code{REAL} --- Convert to real type 
   12186      1.1  mrg @fnindex REAL
   12187      1.1  mrg @fnindex REALPART
   12188      1.1  mrg @fnindex FLOAT
   12189      1.1  mrg @fnindex DFLOAT
   12190      1.1  mrg @fnindex FLOATI
   12191      1.1  mrg @fnindex FLOATJ
   12192      1.1  mrg @fnindex FLOATK
   12193      1.1  mrg @fnindex SNGL
   12194      1.1  mrg @cindex conversion, to real
   12195      1.1  mrg @cindex complex numbers, real part
   12196      1.1  mrg 
   12197      1.1  mrg @table @asis
   12198      1.1  mrg @item @emph{Description}:
   12199      1.1  mrg @code{REAL(A [, KIND])} converts its argument @var{A} to a real type.  The
   12200      1.1  mrg @code{REALPART} function is provided for compatibility with @command{g77},
   12201      1.1  mrg and its use is strongly discouraged.
   12202      1.1  mrg 
   12203      1.1  mrg @item @emph{Standard}:
   12204  1.1.1.2  mrg Fortran 77 and later, with @var{KIND} argument Fortran 90 and later, has GNU extensions
   12205      1.1  mrg 
   12206      1.1  mrg @item @emph{Class}:
   12207      1.1  mrg Elemental function
   12208      1.1  mrg 
   12209      1.1  mrg @item @emph{Syntax}:
   12210      1.1  mrg @multitable @columnfractions .80
   12211      1.1  mrg @item @code{RESULT = REAL(A [, KIND])}
   12212      1.1  mrg @item @code{RESULT = REALPART(Z)}
   12213      1.1  mrg @end multitable
   12214      1.1  mrg 
   12215      1.1  mrg @item @emph{Arguments}:
   12216      1.1  mrg @multitable @columnfractions .15 .70
   12217      1.1  mrg @item @var{A}    @tab Shall be @code{INTEGER}, @code{REAL}, or
   12218      1.1  mrg @code{COMPLEX}.
   12219      1.1  mrg @item @var{KIND} @tab (Optional) An @code{INTEGER} initialization
   12220      1.1  mrg expression indicating the kind parameter of the result.
   12221      1.1  mrg @end multitable
   12222      1.1  mrg 
   12223      1.1  mrg @item @emph{Return value}:
   12224      1.1  mrg These functions return a @code{REAL} variable or array under
   12225      1.1  mrg the following rules: 
   12226      1.1  mrg 
   12227      1.1  mrg @table @asis
   12228      1.1  mrg @item (A)
   12229      1.1  mrg @code{REAL(A)} is converted to a default real type if @var{A} is an 
   12230      1.1  mrg integer or real variable.
   12231      1.1  mrg @item (B)
   12232      1.1  mrg @code{REAL(A)} is converted to a real type with the kind type parameter
   12233      1.1  mrg of @var{A} if @var{A} is a complex variable.
   12234      1.1  mrg @item (C)
   12235      1.1  mrg @code{REAL(A, KIND)} is converted to a real type with kind type
   12236      1.1  mrg parameter @var{KIND} if @var{A} is a complex, integer, or real
   12237      1.1  mrg variable.
   12238      1.1  mrg @end table
   12239      1.1  mrg 
   12240      1.1  mrg @item @emph{Example}:
   12241      1.1  mrg @smallexample
   12242      1.1  mrg program test_real
   12243      1.1  mrg   complex :: x = (1.0, 2.0)
   12244      1.1  mrg   print *, real(x), real(x,8), realpart(x)
   12245      1.1  mrg end program test_real
   12246      1.1  mrg @end smallexample
   12247      1.1  mrg 
   12248      1.1  mrg @item @emph{Specific names}:
   12249  1.1.1.3  mrg @multitable @columnfractions .20 .23 .20 .33
   12250  1.1.1.3  mrg @headitem Name             @tab Argument           @tab Return type     @tab Standard
   12251  1.1.1.3  mrg @item @code{FLOAT(A)}  @tab @code{INTEGER(4)}  @tab @code{REAL(4)}  @tab Fortran 77 and later
   12252      1.1  mrg @item @code{DFLOAT(A)} @tab @code{INTEGER(4)}  @tab @code{REAL(8)}  @tab GNU extension
   12253  1.1.1.3  mrg @item @code{FLOATI(A)} @tab @code{INTEGER(2)}  @tab @code{REAL(4)}  @tab GNU extension (-fdec)
   12254  1.1.1.3  mrg @item @code{FLOATJ(A)} @tab @code{INTEGER(4)}  @tab @code{REAL(4)}  @tab GNU extension (-fdec)
   12255  1.1.1.3  mrg @item @code{FLOATK(A)} @tab @code{INTEGER(8)}  @tab @code{REAL(4)}  @tab GNU extension (-fdec)
   12256  1.1.1.3  mrg @item @code{SNGL(A)}   @tab @code{REAL(8)}     @tab @code{REAL(4)}  @tab Fortran 77 and later
   12257      1.1  mrg @end multitable
   12258      1.1  mrg 
   12259      1.1  mrg 
   12260      1.1  mrg @item @emph{See also}:
   12261      1.1  mrg @ref{DBLE}
   12262      1.1  mrg 
   12263      1.1  mrg @end table
   12264      1.1  mrg 
   12265      1.1  mrg 
   12266      1.1  mrg 
   12267      1.1  mrg @node RENAME
   12268      1.1  mrg @section @code{RENAME} --- Rename a file
   12269      1.1  mrg @fnindex RENAME
   12270      1.1  mrg @cindex file system, rename file
   12271      1.1  mrg 
   12272      1.1  mrg @table @asis
   12273      1.1  mrg @item @emph{Description}:
   12274      1.1  mrg Renames a file from file @var{PATH1} to @var{PATH2}. A null
   12275      1.1  mrg character (@code{CHAR(0)}) can be used to mark the end of the names in
   12276      1.1  mrg @var{PATH1} and @var{PATH2}; otherwise, trailing blanks in the file
   12277      1.1  mrg names are ignored.  If the @var{STATUS} argument is supplied, it
   12278      1.1  mrg contains 0 on success or a nonzero error code upon return; see
   12279      1.1  mrg @code{rename(2)}.
   12280      1.1  mrg 
   12281      1.1  mrg This intrinsic is provided in both subroutine and function forms;
   12282      1.1  mrg however, only one form can be used in any given program unit.
   12283      1.1  mrg 
   12284      1.1  mrg @item @emph{Standard}:
   12285      1.1  mrg GNU extension
   12286      1.1  mrg 
   12287      1.1  mrg @item @emph{Class}:
   12288      1.1  mrg Subroutine, function
   12289      1.1  mrg 
   12290      1.1  mrg @item @emph{Syntax}:
   12291      1.1  mrg @multitable @columnfractions .80
   12292      1.1  mrg @item @code{CALL RENAME(PATH1, PATH2 [, STATUS])}
   12293      1.1  mrg @item @code{STATUS = RENAME(PATH1, PATH2)}
   12294      1.1  mrg @end multitable
   12295      1.1  mrg 
   12296      1.1  mrg @item @emph{Arguments}:
   12297      1.1  mrg @multitable @columnfractions .15 .70
   12298      1.1  mrg @item @var{PATH1} @tab Shall be of default @code{CHARACTER} type.
   12299      1.1  mrg @item @var{PATH2} @tab Shall be of default @code{CHARACTER} type.
   12300      1.1  mrg @item @var{STATUS} @tab (Optional) Shall be of default @code{INTEGER} type.
   12301      1.1  mrg @end multitable
   12302      1.1  mrg 
   12303      1.1  mrg @item @emph{See also}:
   12304      1.1  mrg @ref{LINK}
   12305      1.1  mrg 
   12306      1.1  mrg @end table
   12307      1.1  mrg 
   12308      1.1  mrg 
   12309      1.1  mrg 
   12310      1.1  mrg @node REPEAT
   12311      1.1  mrg @section @code{REPEAT} --- Repeated string concatenation 
   12312      1.1  mrg @fnindex REPEAT
   12313      1.1  mrg @cindex string, repeat
   12314      1.1  mrg @cindex string, concatenate
   12315      1.1  mrg 
   12316      1.1  mrg @table @asis
   12317      1.1  mrg @item @emph{Description}:
   12318      1.1  mrg Concatenates @var{NCOPIES} copies of a string.
   12319      1.1  mrg 
   12320      1.1  mrg @item @emph{Standard}:
   12321  1.1.1.2  mrg Fortran 90 and later
   12322      1.1  mrg 
   12323      1.1  mrg @item @emph{Class}:
   12324      1.1  mrg Transformational function
   12325      1.1  mrg 
   12326      1.1  mrg @item @emph{Syntax}:
   12327      1.1  mrg @code{RESULT = REPEAT(STRING, NCOPIES)}
   12328      1.1  mrg 
   12329      1.1  mrg @item @emph{Arguments}:
   12330      1.1  mrg @multitable @columnfractions .15 .70
   12331      1.1  mrg @item @var{STRING}  @tab Shall be scalar and of type @code{CHARACTER}.
   12332      1.1  mrg @item @var{NCOPIES} @tab Shall be scalar and of type @code{INTEGER}.
   12333      1.1  mrg @end multitable
   12334      1.1  mrg 
   12335      1.1  mrg @item @emph{Return value}:
   12336      1.1  mrg A new scalar of type @code{CHARACTER} built up from @var{NCOPIES} copies 
   12337      1.1  mrg of @var{STRING}.
   12338      1.1  mrg 
   12339      1.1  mrg @item @emph{Example}:
   12340      1.1  mrg @smallexample
   12341      1.1  mrg program test_repeat
   12342      1.1  mrg   write(*,*) repeat("x", 5)   ! "xxxxx"
   12343      1.1  mrg end program
   12344      1.1  mrg @end smallexample
   12345      1.1  mrg @end table
   12346      1.1  mrg 
   12347      1.1  mrg 
   12348      1.1  mrg 
   12349      1.1  mrg @node RESHAPE
   12350      1.1  mrg @section @code{RESHAPE} --- Function to reshape an array
   12351      1.1  mrg @fnindex RESHAPE
   12352      1.1  mrg @cindex array, change dimensions
   12353      1.1  mrg @cindex array, transmogrify
   12354      1.1  mrg 
   12355      1.1  mrg @table @asis
   12356      1.1  mrg @item @emph{Description}:
   12357      1.1  mrg Reshapes @var{SOURCE} to correspond to @var{SHAPE}. If necessary,
   12358      1.1  mrg the new array may be padded with elements from @var{PAD} or permuted
   12359      1.1  mrg as defined by @var{ORDER}.
   12360      1.1  mrg 
   12361      1.1  mrg @item @emph{Standard}:
   12362  1.1.1.2  mrg Fortran 90 and later
   12363      1.1  mrg 
   12364      1.1  mrg @item @emph{Class}:
   12365      1.1  mrg Transformational function
   12366      1.1  mrg 
   12367      1.1  mrg @item @emph{Syntax}:
   12368      1.1  mrg @code{RESULT = RESHAPE(SOURCE, SHAPE[, PAD, ORDER])}
   12369      1.1  mrg 
   12370      1.1  mrg @item @emph{Arguments}:
   12371      1.1  mrg @multitable @columnfractions .15 .70
   12372      1.1  mrg @item @var{SOURCE} @tab Shall be an array of any type.
   12373      1.1  mrg @item @var{SHAPE}  @tab Shall be of type @code{INTEGER} and an 
   12374      1.1  mrg array of rank one. Its values must be positive or zero.
   12375      1.1  mrg @item @var{PAD}    @tab (Optional) shall be an array of the same 
   12376      1.1  mrg type as @var{SOURCE}.
   12377      1.1  mrg @item @var{ORDER}  @tab (Optional) shall be of type @code{INTEGER}
   12378      1.1  mrg and an array of the same shape as @var{SHAPE}. Its values shall
   12379      1.1  mrg be a permutation of the numbers from 1 to n, where n is the size of 
   12380      1.1  mrg @var{SHAPE}. If @var{ORDER} is absent, the natural ordering shall
   12381      1.1  mrg be assumed.
   12382      1.1  mrg @end multitable
   12383      1.1  mrg 
   12384      1.1  mrg @item @emph{Return value}:
   12385      1.1  mrg The result is an array of shape @var{SHAPE} with the same type as 
   12386      1.1  mrg @var{SOURCE}. 
   12387      1.1  mrg 
   12388      1.1  mrg @item @emph{Example}:
   12389      1.1  mrg @smallexample
   12390      1.1  mrg PROGRAM test_reshape
   12391      1.1  mrg   INTEGER, DIMENSION(4) :: x
   12392      1.1  mrg   WRITE(*,*) SHAPE(x)                       ! prints "4"
   12393      1.1  mrg   WRITE(*,*) SHAPE(RESHAPE(x, (/2, 2/)))    ! prints "2 2"
   12394      1.1  mrg END PROGRAM
   12395      1.1  mrg @end smallexample
   12396      1.1  mrg 
   12397      1.1  mrg @item @emph{See also}:
   12398      1.1  mrg @ref{SHAPE}
   12399      1.1  mrg @end table
   12400      1.1  mrg 
   12401      1.1  mrg 
   12402      1.1  mrg 
   12403      1.1  mrg @node RRSPACING
   12404      1.1  mrg @section @code{RRSPACING} --- Reciprocal of the relative spacing
   12405      1.1  mrg @fnindex RRSPACING
   12406      1.1  mrg @cindex real number, relative spacing
   12407      1.1  mrg @cindex floating point, relative spacing
   12408      1.1  mrg 
   12409      1.1  mrg 
   12410      1.1  mrg @table @asis
   12411      1.1  mrg @item @emph{Description}:
   12412      1.1  mrg @code{RRSPACING(X)} returns the  reciprocal of the relative spacing of
   12413      1.1  mrg model numbers near @var{X}.
   12414      1.1  mrg 
   12415      1.1  mrg @item @emph{Standard}:
   12416  1.1.1.2  mrg Fortran 90 and later
   12417      1.1  mrg 
   12418      1.1  mrg @item @emph{Class}:
   12419      1.1  mrg Elemental function
   12420      1.1  mrg 
   12421      1.1  mrg @item @emph{Syntax}:
   12422      1.1  mrg @code{RESULT = RRSPACING(X)}
   12423      1.1  mrg 
   12424      1.1  mrg @item @emph{Arguments}:
   12425      1.1  mrg @multitable @columnfractions .15 .70
   12426      1.1  mrg @item @var{X} @tab Shall be of type @code{REAL}.
   12427      1.1  mrg @end multitable
   12428      1.1  mrg 
   12429      1.1  mrg @item @emph{Return value}:
   12430      1.1  mrg The return value is of the same type and kind as @var{X}.
   12431      1.1  mrg The value returned is equal to
   12432      1.1  mrg @code{ABS(FRACTION(X)) * FLOAT(RADIX(X))**DIGITS(X)}.
   12433      1.1  mrg 
   12434      1.1  mrg @item @emph{See also}:
   12435      1.1  mrg @ref{SPACING}
   12436      1.1  mrg @end table
   12437      1.1  mrg 
   12438      1.1  mrg 
   12439      1.1  mrg 
   12440      1.1  mrg @node RSHIFT
   12441      1.1  mrg @section @code{RSHIFT} --- Right shift bits
   12442      1.1  mrg @fnindex RSHIFT
   12443      1.1  mrg @cindex bits, shift right
   12444      1.1  mrg 
   12445      1.1  mrg @table @asis
   12446      1.1  mrg @item @emph{Description}:
   12447      1.1  mrg @code{RSHIFT} returns a value corresponding to @var{I} with all of the
   12448      1.1  mrg bits shifted right by @var{SHIFT} places.  @var{SHIFT} shall be
   12449      1.1  mrg nonnegative and less than or equal to @code{BIT_SIZE(I)}, otherwise
   12450      1.1  mrg the result value is undefined.  Bits shifted out from the right end
   12451      1.1  mrg are lost. The fill is arithmetic: the bits shifted in from the left
   12452      1.1  mrg end are equal to the leftmost bit, which in two's complement
   12453      1.1  mrg representation is the sign bit.
   12454      1.1  mrg 
   12455      1.1  mrg This function has been superseded by the @code{SHIFTA} intrinsic, which
   12456      1.1  mrg is standard in Fortran 2008 and later.
   12457      1.1  mrg 
   12458      1.1  mrg @item @emph{Standard}:
   12459      1.1  mrg GNU extension
   12460      1.1  mrg 
   12461      1.1  mrg @item @emph{Class}:
   12462      1.1  mrg Elemental function
   12463      1.1  mrg 
   12464      1.1  mrg @item @emph{Syntax}:
   12465      1.1  mrg @code{RESULT = RSHIFT(I, SHIFT)}
   12466      1.1  mrg 
   12467      1.1  mrg @item @emph{Arguments}:
   12468      1.1  mrg @multitable @columnfractions .15 .70
   12469      1.1  mrg @item @var{I} @tab The type shall be @code{INTEGER}.
   12470      1.1  mrg @item @var{SHIFT} @tab The type shall be @code{INTEGER}.
   12471      1.1  mrg @end multitable
   12472      1.1  mrg 
   12473      1.1  mrg @item @emph{Return value}:
   12474      1.1  mrg The return value is of type @code{INTEGER} and of the same kind as
   12475      1.1  mrg @var{I}.
   12476      1.1  mrg 
   12477      1.1  mrg @item @emph{See also}:
   12478  1.1.1.2  mrg @ref{ISHFT}, @gol
   12479  1.1.1.2  mrg @ref{ISHFTC}, @gol
   12480  1.1.1.2  mrg @ref{LSHIFT}, @gol
   12481  1.1.1.2  mrg @ref{SHIFTA}, @gol
   12482  1.1.1.2  mrg @ref{SHIFTR}, @gol
   12483      1.1  mrg @ref{SHIFTL}
   12484      1.1  mrg 
   12485      1.1  mrg @end table
   12486      1.1  mrg 
   12487      1.1  mrg 
   12488      1.1  mrg 
   12489      1.1  mrg @node SAME_TYPE_AS
   12490      1.1  mrg @section @code{SAME_TYPE_AS} ---  Query dynamic types for equality
   12491      1.1  mrg @fnindex SAME_TYPE_AS
   12492      1.1  mrg 
   12493      1.1  mrg @table @asis
   12494      1.1  mrg @item @emph{Description}:
   12495      1.1  mrg Query dynamic types for equality.
   12496      1.1  mrg 
   12497      1.1  mrg @item @emph{Standard}:
   12498      1.1  mrg Fortran 2003 and later
   12499      1.1  mrg 
   12500      1.1  mrg @item @emph{Class}:
   12501      1.1  mrg Inquiry function
   12502      1.1  mrg 
   12503      1.1  mrg @item @emph{Syntax}:
   12504      1.1  mrg @code{RESULT = SAME_TYPE_AS(A, B)}
   12505      1.1  mrg 
   12506      1.1  mrg @item @emph{Arguments}:
   12507      1.1  mrg @multitable @columnfractions .15 .70
   12508      1.1  mrg @item @var{A} @tab Shall be an object of extensible declared type or
   12509      1.1  mrg unlimited polymorphic.
   12510      1.1  mrg @item @var{B} @tab Shall be an object of extensible declared type or
   12511      1.1  mrg unlimited polymorphic.
   12512      1.1  mrg @end multitable
   12513      1.1  mrg 
   12514      1.1  mrg @item @emph{Return value}:
   12515      1.1  mrg The return value is a scalar of type default logical. It is true if and
   12516      1.1  mrg only if the dynamic type of A is the same as the dynamic type of B.
   12517      1.1  mrg 
   12518      1.1  mrg @item @emph{See also}:
   12519      1.1  mrg @ref{EXTENDS_TYPE_OF}
   12520      1.1  mrg 
   12521      1.1  mrg @end table
   12522      1.1  mrg 
   12523      1.1  mrg 
   12524      1.1  mrg 
   12525      1.1  mrg @node SCALE
   12526      1.1  mrg @section @code{SCALE} --- Scale a real value
   12527      1.1  mrg @fnindex SCALE
   12528      1.1  mrg @cindex real number, scale
   12529      1.1  mrg @cindex floating point, scale
   12530      1.1  mrg 
   12531      1.1  mrg @table @asis
   12532      1.1  mrg @item @emph{Description}:
   12533      1.1  mrg @code{SCALE(X,I)} returns @code{X * RADIX(X)**I}.
   12534      1.1  mrg 
   12535      1.1  mrg @item @emph{Standard}:
   12536  1.1.1.2  mrg Fortran 90 and later
   12537      1.1  mrg 
   12538      1.1  mrg @item @emph{Class}:
   12539      1.1  mrg Elemental function
   12540      1.1  mrg 
   12541      1.1  mrg @item @emph{Syntax}:
   12542      1.1  mrg @code{RESULT = SCALE(X, I)}
   12543      1.1  mrg 
   12544      1.1  mrg @item @emph{Arguments}:
   12545      1.1  mrg @multitable @columnfractions .15 .70
   12546      1.1  mrg @item @var{X} @tab The type of the argument shall be a @code{REAL}.
   12547      1.1  mrg @item @var{I} @tab The type of the argument shall be a @code{INTEGER}.
   12548      1.1  mrg @end multitable
   12549      1.1  mrg 
   12550      1.1  mrg @item @emph{Return value}:
   12551      1.1  mrg The return value is of the same type and kind as @var{X}.
   12552      1.1  mrg Its value is @code{X * RADIX(X)**I}.
   12553      1.1  mrg 
   12554      1.1  mrg @item @emph{Example}:
   12555      1.1  mrg @smallexample
   12556      1.1  mrg program test_scale
   12557      1.1  mrg   real :: x = 178.1387e-4
   12558      1.1  mrg   integer :: i = 5
   12559      1.1  mrg   print *, scale(x,i), x*radix(x)**i
   12560      1.1  mrg end program test_scale
   12561      1.1  mrg @end smallexample
   12562      1.1  mrg 
   12563      1.1  mrg @end table
   12564      1.1  mrg 
   12565      1.1  mrg 
   12566      1.1  mrg 
   12567      1.1  mrg @node SCAN
   12568      1.1  mrg @section @code{SCAN} --- Scan a string for the presence of a set of characters
   12569      1.1  mrg @fnindex SCAN
   12570      1.1  mrg @cindex string, find subset
   12571      1.1  mrg 
   12572      1.1  mrg @table @asis
   12573      1.1  mrg @item @emph{Description}:
   12574      1.1  mrg Scans a @var{STRING} for any of the characters in a @var{SET} 
   12575      1.1  mrg of characters.
   12576      1.1  mrg 
   12577      1.1  mrg If @var{BACK} is either absent or equals @code{FALSE}, this function
   12578      1.1  mrg returns the position of the leftmost character of @var{STRING} that is
   12579      1.1  mrg in @var{SET}. If @var{BACK} equals @code{TRUE}, the rightmost position
   12580      1.1  mrg is returned. If no character of @var{SET} is found in @var{STRING}, the 
   12581      1.1  mrg result is zero.
   12582      1.1  mrg 
   12583      1.1  mrg @item @emph{Standard}:
   12584  1.1.1.2  mrg Fortran 90 and later, with @var{KIND} argument Fortran 2003 and later
   12585      1.1  mrg 
   12586      1.1  mrg @item @emph{Class}:
   12587      1.1  mrg Elemental function
   12588      1.1  mrg 
   12589      1.1  mrg @item @emph{Syntax}:
   12590      1.1  mrg @code{RESULT = SCAN(STRING, SET[, BACK [, KIND]])}
   12591      1.1  mrg 
   12592      1.1  mrg @item @emph{Arguments}:
   12593      1.1  mrg @multitable @columnfractions .15 .70
   12594      1.1  mrg @item @var{STRING} @tab Shall be of type @code{CHARACTER}.
   12595      1.1  mrg @item @var{SET}    @tab Shall be of type @code{CHARACTER}.
   12596      1.1  mrg @item @var{BACK}   @tab (Optional) shall be of type @code{LOGICAL}.
   12597      1.1  mrg @item @var{KIND}   @tab (Optional) An @code{INTEGER} initialization
   12598      1.1  mrg expression indicating the kind parameter of the result.
   12599      1.1  mrg @end multitable
   12600      1.1  mrg 
   12601      1.1  mrg @item @emph{Return value}:
   12602      1.1  mrg The return value is of type @code{INTEGER} and of kind @var{KIND}. If
   12603      1.1  mrg @var{KIND} is absent, the return value is of default integer kind.
   12604      1.1  mrg 
   12605      1.1  mrg @item @emph{Example}:
   12606      1.1  mrg @smallexample
   12607      1.1  mrg PROGRAM test_scan
   12608      1.1  mrg   WRITE(*,*) SCAN("FORTRAN", "AO")          ! 2, found 'O'
   12609      1.1  mrg   WRITE(*,*) SCAN("FORTRAN", "AO", .TRUE.)  ! 6, found 'A'
   12610      1.1  mrg   WRITE(*,*) SCAN("FORTRAN", "C++")         ! 0, found none
   12611      1.1  mrg END PROGRAM
   12612      1.1  mrg @end smallexample
   12613      1.1  mrg 
   12614      1.1  mrg @item @emph{See also}:
   12615  1.1.1.2  mrg @ref{INDEX intrinsic}, @gol
   12616  1.1.1.2  mrg @ref{VERIFY}
   12617      1.1  mrg @end table
   12618      1.1  mrg 
   12619      1.1  mrg 
   12620      1.1  mrg 
   12621      1.1  mrg @node SECNDS
   12622      1.1  mrg @section @code{SECNDS} --- Time function
   12623      1.1  mrg @fnindex SECNDS
   12624      1.1  mrg @cindex time, elapsed
   12625      1.1  mrg @cindex elapsed time
   12626      1.1  mrg 
   12627      1.1  mrg @table @asis
   12628      1.1  mrg @item @emph{Description}:
   12629      1.1  mrg @code{SECNDS(X)} gets the time in seconds from the real-time system clock.
   12630      1.1  mrg @var{X} is a reference time, also in seconds. If this is zero, the time in
   12631      1.1  mrg seconds from midnight is returned. This function is non-standard and its
   12632      1.1  mrg use is discouraged.
   12633      1.1  mrg 
   12634      1.1  mrg @item @emph{Standard}:
   12635      1.1  mrg GNU extension
   12636      1.1  mrg 
   12637      1.1  mrg @item @emph{Class}:
   12638      1.1  mrg Function
   12639      1.1  mrg 
   12640      1.1  mrg @item @emph{Syntax}:
   12641      1.1  mrg @code{RESULT = SECNDS (X)}
   12642      1.1  mrg 
   12643      1.1  mrg @item @emph{Arguments}:
   12644      1.1  mrg @multitable @columnfractions .15 .70
   12645      1.1  mrg @item @var{T}     @tab Shall be of type @code{REAL(4)}.
   12646      1.1  mrg @item @var{X}     @tab Shall be of type @code{REAL(4)}.
   12647      1.1  mrg @end multitable
   12648      1.1  mrg 
   12649      1.1  mrg @item @emph{Return value}:
   12650      1.1  mrg None
   12651      1.1  mrg 
   12652      1.1  mrg @item @emph{Example}:
   12653      1.1  mrg @smallexample
   12654      1.1  mrg program test_secnds
   12655      1.1  mrg     integer :: i
   12656      1.1  mrg     real(4) :: t1, t2
   12657      1.1  mrg     print *, secnds (0.0)   ! seconds since midnight
   12658      1.1  mrg     t1 = secnds (0.0)       ! reference time
   12659      1.1  mrg     do i = 1, 10000000      ! do something
   12660      1.1  mrg     end do
   12661      1.1  mrg     t2 = secnds (t1)        ! elapsed time
   12662      1.1  mrg     print *, "Something took ", t2, " seconds."
   12663      1.1  mrg end program test_secnds
   12664      1.1  mrg @end smallexample
   12665      1.1  mrg @end table
   12666      1.1  mrg 
   12667      1.1  mrg 
   12668      1.1  mrg 
   12669      1.1  mrg @node SECOND
   12670      1.1  mrg @section @code{SECOND} --- CPU time function
   12671      1.1  mrg @fnindex SECOND
   12672      1.1  mrg @cindex time, elapsed
   12673      1.1  mrg @cindex elapsed time
   12674      1.1  mrg 
   12675      1.1  mrg @table @asis
   12676      1.1  mrg @item @emph{Description}:
   12677      1.1  mrg Returns a @code{REAL(4)} value representing the elapsed CPU time in
   12678      1.1  mrg seconds.  This provides the same functionality as the standard
   12679      1.1  mrg @code{CPU_TIME} intrinsic, and is only included for backwards
   12680      1.1  mrg compatibility.
   12681      1.1  mrg 
   12682      1.1  mrg This intrinsic is provided in both subroutine and function forms;
   12683      1.1  mrg however, only one form can be used in any given program unit.
   12684      1.1  mrg 
   12685      1.1  mrg @item @emph{Standard}:
   12686      1.1  mrg GNU extension
   12687      1.1  mrg 
   12688      1.1  mrg @item @emph{Class}:
   12689      1.1  mrg Subroutine, function
   12690      1.1  mrg 
   12691      1.1  mrg @item @emph{Syntax}:
   12692      1.1  mrg @multitable @columnfractions .80
   12693      1.1  mrg @item @code{CALL SECOND(TIME)}
   12694      1.1  mrg @item @code{TIME = SECOND()}
   12695      1.1  mrg @end multitable
   12696      1.1  mrg 
   12697      1.1  mrg @item @emph{Arguments}:
   12698      1.1  mrg @multitable @columnfractions .15 .70
   12699      1.1  mrg @item @var{TIME}  @tab Shall be of type @code{REAL(4)}.
   12700      1.1  mrg @end multitable
   12701      1.1  mrg 
   12702      1.1  mrg @item @emph{Return value}:
   12703      1.1  mrg In either syntax, @var{TIME} is set to the process's current runtime in
   12704      1.1  mrg seconds.
   12705      1.1  mrg 
   12706      1.1  mrg @item @emph{See also}:
   12707      1.1  mrg @ref{CPU_TIME}
   12708      1.1  mrg 
   12709      1.1  mrg @end table
   12710      1.1  mrg 
   12711      1.1  mrg 
   12712      1.1  mrg 
   12713      1.1  mrg @node SELECTED_CHAR_KIND
   12714      1.1  mrg @section @code{SELECTED_CHAR_KIND} --- Choose character kind
   12715      1.1  mrg @fnindex SELECTED_CHAR_KIND
   12716      1.1  mrg @cindex character kind
   12717      1.1  mrg @cindex kind, character
   12718      1.1  mrg 
   12719      1.1  mrg @table @asis
   12720      1.1  mrg @item @emph{Description}:
   12721      1.1  mrg 
   12722      1.1  mrg @code{SELECTED_CHAR_KIND(NAME)} returns the kind value for the character
   12723      1.1  mrg set named @var{NAME}, if a character set with such a name is supported,
   12724      1.1  mrg or @math{-1} otherwise. Currently, supported character sets include
   12725      1.1  mrg ``ASCII'' and ``DEFAULT'', which are equivalent, and ``ISO_10646''
   12726      1.1  mrg (Universal Character Set, UCS-4) which is commonly known as Unicode.
   12727      1.1  mrg 
   12728      1.1  mrg @item @emph{Standard}:
   12729      1.1  mrg Fortran 2003 and later
   12730      1.1  mrg 
   12731      1.1  mrg @item @emph{Class}:
   12732      1.1  mrg Transformational function
   12733      1.1  mrg 
   12734      1.1  mrg @item @emph{Syntax}:
   12735      1.1  mrg @code{RESULT = SELECTED_CHAR_KIND(NAME)}
   12736      1.1  mrg 
   12737      1.1  mrg @item @emph{Arguments}:
   12738      1.1  mrg @multitable @columnfractions .15 .70
   12739      1.1  mrg @item @var{NAME} @tab Shall be a scalar and of the default character type.
   12740      1.1  mrg @end multitable
   12741      1.1  mrg 
   12742      1.1  mrg @item @emph{Example}:
   12743      1.1  mrg @smallexample
   12744      1.1  mrg program character_kind
   12745      1.1  mrg   use iso_fortran_env
   12746      1.1  mrg   implicit none
   12747      1.1  mrg   integer, parameter :: ascii = selected_char_kind ("ascii")
   12748      1.1  mrg   integer, parameter :: ucs4  = selected_char_kind ('ISO_10646')
   12749      1.1  mrg 
   12750      1.1  mrg   character(kind=ascii, len=26) :: alphabet
   12751      1.1  mrg   character(kind=ucs4,  len=30) :: hello_world
   12752      1.1  mrg 
   12753      1.1  mrg   alphabet = ascii_"abcdefghijklmnopqrstuvwxyz"
   12754      1.1  mrg   hello_world = ucs4_'Hello World and Ni Hao -- ' &
   12755      1.1  mrg                 // char (int (z'4F60'), ucs4)     &
   12756      1.1  mrg                 // char (int (z'597D'), ucs4)
   12757      1.1  mrg 
   12758      1.1  mrg   write (*,*) alphabet
   12759      1.1  mrg 
   12760      1.1  mrg   open (output_unit, encoding='UTF-8')
   12761      1.1  mrg   write (*,*) trim (hello_world)
   12762      1.1  mrg end program character_kind
   12763      1.1  mrg @end smallexample
   12764      1.1  mrg @end table
   12765      1.1  mrg 
   12766      1.1  mrg 
   12767      1.1  mrg 
   12768      1.1  mrg @node SELECTED_INT_KIND
   12769      1.1  mrg @section @code{SELECTED_INT_KIND} --- Choose integer kind
   12770      1.1  mrg @fnindex SELECTED_INT_KIND
   12771      1.1  mrg @cindex integer kind
   12772      1.1  mrg @cindex kind, integer
   12773      1.1  mrg 
   12774      1.1  mrg @table @asis
   12775      1.1  mrg @item @emph{Description}:
   12776      1.1  mrg @code{SELECTED_INT_KIND(R)} return the kind value of the smallest integer
   12777      1.1  mrg type that can represent all values ranging from @math{-10^R} (exclusive)
   12778      1.1  mrg to @math{10^R} (exclusive). If there is no integer kind that accommodates
   12779      1.1  mrg this range, @code{SELECTED_INT_KIND} returns @math{-1}.
   12780      1.1  mrg 
   12781      1.1  mrg @item @emph{Standard}:
   12782  1.1.1.2  mrg Fortran 90 and later
   12783      1.1  mrg 
   12784      1.1  mrg @item @emph{Class}:
   12785      1.1  mrg Transformational function
   12786      1.1  mrg 
   12787      1.1  mrg @item @emph{Syntax}:
   12788      1.1  mrg @code{RESULT = SELECTED_INT_KIND(R)}
   12789      1.1  mrg 
   12790      1.1  mrg @item @emph{Arguments}:
   12791      1.1  mrg @multitable @columnfractions .15 .70
   12792      1.1  mrg @item @var{R} @tab Shall be a scalar and of type @code{INTEGER}.
   12793      1.1  mrg @end multitable
   12794      1.1  mrg 
   12795      1.1  mrg @item @emph{Example}:
   12796      1.1  mrg @smallexample
   12797      1.1  mrg program large_integers
   12798      1.1  mrg   integer,parameter :: k5 = selected_int_kind(5)
   12799      1.1  mrg   integer,parameter :: k15 = selected_int_kind(15)
   12800      1.1  mrg   integer(kind=k5) :: i5
   12801      1.1  mrg   integer(kind=k15) :: i15
   12802      1.1  mrg 
   12803      1.1  mrg   print *, huge(i5), huge(i15)
   12804      1.1  mrg 
   12805      1.1  mrg   ! The following inequalities are always true
   12806      1.1  mrg   print *, huge(i5) >= 10_k5**5-1
   12807      1.1  mrg   print *, huge(i15) >= 10_k15**15-1
   12808      1.1  mrg end program large_integers
   12809      1.1  mrg @end smallexample
   12810      1.1  mrg @end table
   12811      1.1  mrg 
   12812      1.1  mrg 
   12813      1.1  mrg 
   12814      1.1  mrg @node SELECTED_REAL_KIND
   12815      1.1  mrg @section @code{SELECTED_REAL_KIND} --- Choose real kind
   12816      1.1  mrg @fnindex SELECTED_REAL_KIND
   12817      1.1  mrg @cindex real kind
   12818      1.1  mrg @cindex kind, real
   12819      1.1  mrg @cindex radix, real
   12820      1.1  mrg 
   12821      1.1  mrg @table @asis
   12822      1.1  mrg @item @emph{Description}:
   12823      1.1  mrg @code{SELECTED_REAL_KIND(P,R)} returns the kind value of a real data type
   12824      1.1  mrg with decimal precision of at least @code{P} digits, exponent range of
   12825      1.1  mrg at least @code{R}, and with a radix of @code{RADIX}.
   12826      1.1  mrg 
   12827      1.1  mrg @item @emph{Standard}:
   12828  1.1.1.2  mrg Fortran 90 and later, with @code{RADIX} Fortran 2008 or later
   12829      1.1  mrg 
   12830      1.1  mrg @item @emph{Class}:
   12831      1.1  mrg Transformational function
   12832      1.1  mrg 
   12833      1.1  mrg @item @emph{Syntax}:
   12834      1.1  mrg @code{RESULT = SELECTED_REAL_KIND([P, R, RADIX])}
   12835      1.1  mrg 
   12836      1.1  mrg @item @emph{Arguments}:
   12837      1.1  mrg @multitable @columnfractions .15 .70
   12838      1.1  mrg @item @var{P} @tab (Optional) shall be a scalar and of type @code{INTEGER}.
   12839      1.1  mrg @item @var{R} @tab (Optional) shall be a scalar and of type @code{INTEGER}.
   12840      1.1  mrg @item @var{RADIX} @tab (Optional) shall be a scalar and of type @code{INTEGER}.
   12841      1.1  mrg @end multitable
   12842      1.1  mrg Before Fortran 2008, at least one of the arguments @var{R} or @var{P} shall
   12843      1.1  mrg be present; since Fortran 2008, they are assumed to be zero if absent.
   12844      1.1  mrg 
   12845      1.1  mrg @item @emph{Return value}:
   12846      1.1  mrg 
   12847      1.1  mrg @code{SELECTED_REAL_KIND} returns the value of the kind type parameter of
   12848      1.1  mrg a real data type with decimal precision of at least @code{P} digits, a
   12849      1.1  mrg decimal exponent range of at least @code{R}, and with the requested
   12850      1.1  mrg @code{RADIX}. If the @code{RADIX} parameter is absent, real kinds with
   12851      1.1  mrg any radix can be returned. If more than one real data type meet the
   12852      1.1  mrg criteria, the kind of the data type with the smallest decimal precision
   12853      1.1  mrg is returned. If no real data type matches the criteria, the result is
   12854      1.1  mrg @table @asis
   12855      1.1  mrg @item -1 if the processor does not support a real data type with a
   12856      1.1  mrg precision greater than or equal to @code{P}, but the @code{R} and
   12857      1.1  mrg @code{RADIX} requirements can be fulfilled
   12858      1.1  mrg @item -2 if the processor does not support a real type with an exponent
   12859      1.1  mrg range greater than or equal to @code{R}, but @code{P} and @code{RADIX}
   12860      1.1  mrg are fulfillable
   12861      1.1  mrg @item -3 if @code{RADIX} but not @code{P} and @code{R} requirements
   12862      1.1  mrg are fulfillable
   12863      1.1  mrg @item -4 if @code{RADIX} and either @code{P} or @code{R} requirements
   12864      1.1  mrg are fulfillable
   12865      1.1  mrg @item -5 if there is no real type with the given @code{RADIX}
   12866      1.1  mrg @end table
   12867      1.1  mrg 
   12868      1.1  mrg @item @emph{Example}:
   12869      1.1  mrg @smallexample
   12870      1.1  mrg program real_kinds
   12871      1.1  mrg   integer,parameter :: p6 = selected_real_kind(6)
   12872      1.1  mrg   integer,parameter :: p10r100 = selected_real_kind(10,100)
   12873      1.1  mrg   integer,parameter :: r400 = selected_real_kind(r=400)
   12874      1.1  mrg   real(kind=p6) :: x
   12875      1.1  mrg   real(kind=p10r100) :: y
   12876      1.1  mrg   real(kind=r400) :: z
   12877      1.1  mrg 
   12878      1.1  mrg   print *, precision(x), range(x)
   12879      1.1  mrg   print *, precision(y), range(y)
   12880      1.1  mrg   print *, precision(z), range(z)
   12881      1.1  mrg end program real_kinds
   12882      1.1  mrg @end smallexample
   12883  1.1.1.2  mrg @item @emph{See also}:
   12884  1.1.1.2  mrg @ref{PRECISION}, @gol
   12885  1.1.1.2  mrg @ref{RANGE}, @gol
   12886  1.1.1.2  mrg @ref{RADIX}
   12887      1.1  mrg @end table
   12888      1.1  mrg 
   12889      1.1  mrg 
   12890      1.1  mrg 
   12891      1.1  mrg @node SET_EXPONENT
   12892      1.1  mrg @section @code{SET_EXPONENT} --- Set the exponent of the model
   12893      1.1  mrg @fnindex SET_EXPONENT
   12894      1.1  mrg @cindex real number, set exponent
   12895      1.1  mrg @cindex floating point, set exponent
   12896      1.1  mrg 
   12897      1.1  mrg @table @asis
   12898      1.1  mrg @item @emph{Description}:
   12899      1.1  mrg @code{SET_EXPONENT(X, I)} returns the real number whose fractional part
   12900  1.1.1.3  mrg is that of @var{X} and whose exponent part is @var{I}.
   12901      1.1  mrg 
   12902      1.1  mrg @item @emph{Standard}:
   12903  1.1.1.2  mrg Fortran 90 and later
   12904      1.1  mrg 
   12905      1.1  mrg @item @emph{Class}:
   12906      1.1  mrg Elemental function
   12907      1.1  mrg 
   12908      1.1  mrg @item @emph{Syntax}:
   12909      1.1  mrg @code{RESULT = SET_EXPONENT(X, I)}
   12910      1.1  mrg 
   12911      1.1  mrg @item @emph{Arguments}:
   12912      1.1  mrg @multitable @columnfractions .15 .70
   12913      1.1  mrg @item @var{X} @tab Shall be of type @code{REAL}.
   12914      1.1  mrg @item @var{I} @tab Shall be of type @code{INTEGER}.
   12915      1.1  mrg @end multitable
   12916      1.1  mrg 
   12917      1.1  mrg @item @emph{Return value}:
   12918      1.1  mrg The return value is of the same type and kind as @var{X}.
   12919      1.1  mrg The real number whose fractional part
   12920  1.1.1.3  mrg is that of @var{X} and whose exponent part if @var{I} is returned;
   12921      1.1  mrg it is @code{FRACTION(X) * RADIX(X)**I}.
   12922      1.1  mrg 
   12923      1.1  mrg @item @emph{Example}:
   12924      1.1  mrg @smallexample
   12925      1.1  mrg PROGRAM test_setexp
   12926      1.1  mrg   REAL :: x = 178.1387e-4
   12927      1.1  mrg   INTEGER :: i = 17
   12928      1.1  mrg   PRINT *, SET_EXPONENT(x, i), FRACTION(x) * RADIX(x)**i
   12929      1.1  mrg END PROGRAM
   12930      1.1  mrg @end smallexample
   12931      1.1  mrg 
   12932      1.1  mrg @end table
   12933      1.1  mrg 
   12934      1.1  mrg 
   12935      1.1  mrg 
   12936      1.1  mrg @node SHAPE
   12937      1.1  mrg @section @code{SHAPE} --- Determine the shape of an array
   12938      1.1  mrg @fnindex SHAPE
   12939      1.1  mrg @cindex array, shape
   12940      1.1  mrg 
   12941      1.1  mrg @table @asis
   12942      1.1  mrg @item @emph{Description}:
   12943      1.1  mrg Determines the shape of an array.
   12944      1.1  mrg 
   12945      1.1  mrg @item @emph{Standard}:
   12946  1.1.1.2  mrg Fortran 90 and later, with @var{KIND} argument Fortran 2003 and later
   12947      1.1  mrg 
   12948      1.1  mrg @item @emph{Class}:
   12949      1.1  mrg Inquiry function
   12950      1.1  mrg 
   12951      1.1  mrg @item @emph{Syntax}:
   12952      1.1  mrg @code{RESULT = SHAPE(SOURCE [, KIND])}
   12953      1.1  mrg 
   12954      1.1  mrg @item @emph{Arguments}:
   12955      1.1  mrg @multitable @columnfractions .15 .70
   12956      1.1  mrg @item @var{SOURCE} @tab Shall be an array or scalar of any type. 
   12957      1.1  mrg If @var{SOURCE} is a pointer it must be associated and allocatable 
   12958      1.1  mrg arrays must be allocated.
   12959      1.1  mrg @item @var{KIND}   @tab (Optional) An @code{INTEGER} initialization
   12960      1.1  mrg expression indicating the kind parameter of the result.
   12961      1.1  mrg @end multitable
   12962      1.1  mrg 
   12963      1.1  mrg @item @emph{Return value}:
   12964      1.1  mrg An @code{INTEGER} array of rank one with as many elements as @var{SOURCE} 
   12965      1.1  mrg has dimensions. The elements of the resulting array correspond to the extend
   12966      1.1  mrg of @var{SOURCE} along the respective dimensions. If @var{SOURCE} is a scalar,
   12967      1.1  mrg the result is the rank one array of size zero. If @var{KIND} is absent, the
   12968      1.1  mrg return value has the default integer kind otherwise the specified kind.
   12969      1.1  mrg 
   12970      1.1  mrg @item @emph{Example}:
   12971      1.1  mrg @smallexample
   12972      1.1  mrg PROGRAM test_shape
   12973      1.1  mrg   INTEGER, DIMENSION(-1:1, -1:2) :: A
   12974      1.1  mrg   WRITE(*,*) SHAPE(A)             ! (/ 3, 4 /)
   12975      1.1  mrg   WRITE(*,*) SIZE(SHAPE(42))      ! (/ /)
   12976      1.1  mrg END PROGRAM
   12977      1.1  mrg @end smallexample
   12978      1.1  mrg 
   12979      1.1  mrg @item @emph{See also}:
   12980  1.1.1.2  mrg @ref{RESHAPE}, @gol
   12981  1.1.1.2  mrg @ref{SIZE}
   12982      1.1  mrg @end table
   12983      1.1  mrg 
   12984      1.1  mrg 
   12985      1.1  mrg 
   12986      1.1  mrg @node SHIFTA
   12987      1.1  mrg @section @code{SHIFTA} --- Right shift with fill
   12988      1.1  mrg @fnindex SHIFTA
   12989      1.1  mrg @cindex bits, shift right
   12990      1.1  mrg @cindex shift, right with fill
   12991      1.1  mrg 
   12992      1.1  mrg @table @asis
   12993      1.1  mrg @item @emph{Description}:
   12994      1.1  mrg @code{SHIFTA} returns a value corresponding to @var{I} with all of the
   12995      1.1  mrg bits shifted right by @var{SHIFT} places.  @var{SHIFT} that be
   12996      1.1  mrg nonnegative and less than or equal to @code{BIT_SIZE(I)}, otherwise
   12997      1.1  mrg the result value is undefined.  Bits shifted out from the right end
   12998      1.1  mrg are lost. The fill is arithmetic: the bits shifted in from the left
   12999      1.1  mrg end are equal to the leftmost bit, which in two's complement
   13000      1.1  mrg representation is the sign bit.
   13001      1.1  mrg 
   13002      1.1  mrg @item @emph{Standard}:
   13003      1.1  mrg Fortran 2008 and later
   13004      1.1  mrg 
   13005      1.1  mrg @item @emph{Class}:
   13006      1.1  mrg Elemental function
   13007      1.1  mrg 
   13008      1.1  mrg @item @emph{Syntax}:
   13009      1.1  mrg @code{RESULT = SHIFTA(I, SHIFT)}
   13010      1.1  mrg 
   13011      1.1  mrg @item @emph{Arguments}:
   13012      1.1  mrg @multitable @columnfractions .15 .70
   13013      1.1  mrg @item @var{I} @tab The type shall be @code{INTEGER}.
   13014      1.1  mrg @item @var{SHIFT} @tab The type shall be @code{INTEGER}.
   13015      1.1  mrg @end multitable
   13016      1.1  mrg 
   13017      1.1  mrg @item @emph{Return value}:
   13018      1.1  mrg The return value is of type @code{INTEGER} and of the same kind as
   13019      1.1  mrg @var{I}.
   13020      1.1  mrg 
   13021      1.1  mrg @item @emph{See also}:
   13022  1.1.1.2  mrg @ref{SHIFTL}, @gol
   13023  1.1.1.2  mrg @ref{SHIFTR}
   13024      1.1  mrg @end table
   13025      1.1  mrg 
   13026      1.1  mrg 
   13027      1.1  mrg 
   13028      1.1  mrg @node SHIFTL
   13029      1.1  mrg @section @code{SHIFTL} --- Left shift
   13030      1.1  mrg @fnindex SHIFTL
   13031      1.1  mrg @cindex bits, shift left
   13032      1.1  mrg @cindex shift, left
   13033      1.1  mrg 
   13034      1.1  mrg @table @asis
   13035      1.1  mrg @item @emph{Description}:
   13036      1.1  mrg @code{SHIFTL} returns a value corresponding to @var{I} with all of the
   13037      1.1  mrg bits shifted left by @var{SHIFT} places.  @var{SHIFT} shall be
   13038      1.1  mrg nonnegative and less than or equal to @code{BIT_SIZE(I)}, otherwise
   13039      1.1  mrg the result value is undefined.  Bits shifted out from the left end are
   13040      1.1  mrg lost, and bits shifted in from the right end are set to 0.
   13041      1.1  mrg 
   13042      1.1  mrg @item @emph{Standard}:
   13043      1.1  mrg Fortran 2008 and later
   13044      1.1  mrg 
   13045      1.1  mrg @item @emph{Class}:
   13046      1.1  mrg Elemental function
   13047      1.1  mrg 
   13048      1.1  mrg @item @emph{Syntax}:
   13049      1.1  mrg @code{RESULT = SHIFTL(I, SHIFT)}
   13050      1.1  mrg 
   13051      1.1  mrg @item @emph{Arguments}:
   13052      1.1  mrg @multitable @columnfractions .15 .70
   13053      1.1  mrg @item @var{I} @tab The type shall be @code{INTEGER}.
   13054      1.1  mrg @item @var{SHIFT} @tab The type shall be @code{INTEGER}.
   13055      1.1  mrg @end multitable
   13056      1.1  mrg 
   13057      1.1  mrg @item @emph{Return value}:
   13058      1.1  mrg The return value is of type @code{INTEGER} and of the same kind as
   13059      1.1  mrg @var{I}.
   13060      1.1  mrg 
   13061      1.1  mrg @item @emph{See also}:
   13062  1.1.1.2  mrg @ref{SHIFTA}, @gol
   13063  1.1.1.2  mrg @ref{SHIFTR}
   13064      1.1  mrg @end table
   13065      1.1  mrg 
   13066      1.1  mrg 
   13067      1.1  mrg 
   13068      1.1  mrg @node SHIFTR
   13069      1.1  mrg @section @code{SHIFTR} --- Right shift
   13070      1.1  mrg @fnindex SHIFTR
   13071      1.1  mrg @cindex bits, shift right
   13072      1.1  mrg @cindex shift, right
   13073      1.1  mrg 
   13074      1.1  mrg @table @asis
   13075      1.1  mrg @item @emph{Description}:
   13076      1.1  mrg @code{SHIFTR} returns a value corresponding to @var{I} with all of the
   13077      1.1  mrg bits shifted right by @var{SHIFT} places.  @var{SHIFT} shall be
   13078      1.1  mrg nonnegative and less than or equal to @code{BIT_SIZE(I)}, otherwise
   13079      1.1  mrg the result value is undefined.  Bits shifted out from the right end
   13080      1.1  mrg are lost, and bits shifted in from the left end are set to 0.
   13081      1.1  mrg 
   13082      1.1  mrg @item @emph{Standard}:
   13083      1.1  mrg Fortran 2008 and later
   13084      1.1  mrg 
   13085      1.1  mrg @item @emph{Class}:
   13086      1.1  mrg Elemental function
   13087      1.1  mrg 
   13088      1.1  mrg @item @emph{Syntax}:
   13089      1.1  mrg @code{RESULT = SHIFTR(I, SHIFT)}
   13090      1.1  mrg 
   13091      1.1  mrg @item @emph{Arguments}:
   13092      1.1  mrg @multitable @columnfractions .15 .70
   13093      1.1  mrg @item @var{I} @tab The type shall be @code{INTEGER}.
   13094      1.1  mrg @item @var{SHIFT} @tab The type shall be @code{INTEGER}.
   13095      1.1  mrg @end multitable
   13096      1.1  mrg 
   13097      1.1  mrg @item @emph{Return value}:
   13098      1.1  mrg The return value is of type @code{INTEGER} and of the same kind as
   13099      1.1  mrg @var{I}.
   13100      1.1  mrg 
   13101      1.1  mrg @item @emph{See also}:
   13102  1.1.1.2  mrg @ref{SHIFTA}, @gol
   13103  1.1.1.2  mrg @ref{SHIFTL}
   13104      1.1  mrg @end table
   13105      1.1  mrg 
   13106      1.1  mrg 
   13107      1.1  mrg 
   13108      1.1  mrg @node SIGN
   13109      1.1  mrg @section @code{SIGN} --- Sign copying function
   13110      1.1  mrg @fnindex SIGN
   13111      1.1  mrg @fnindex ISIGN
   13112      1.1  mrg @fnindex DSIGN
   13113      1.1  mrg @cindex sign copying
   13114      1.1  mrg 
   13115      1.1  mrg @table @asis
   13116      1.1  mrg @item @emph{Description}:
   13117      1.1  mrg @code{SIGN(A,B)} returns the value of @var{A} with the sign of @var{B}.
   13118      1.1  mrg 
   13119      1.1  mrg @item @emph{Standard}:
   13120      1.1  mrg Fortran 77 and later
   13121      1.1  mrg 
   13122      1.1  mrg @item @emph{Class}:
   13123      1.1  mrg Elemental function
   13124      1.1  mrg 
   13125      1.1  mrg @item @emph{Syntax}:
   13126      1.1  mrg @code{RESULT = SIGN(A, B)}
   13127      1.1  mrg 
   13128      1.1  mrg @item @emph{Arguments}:
   13129      1.1  mrg @multitable @columnfractions .15 .70
   13130      1.1  mrg @item @var{A} @tab Shall be of type @code{INTEGER} or @code{REAL}
   13131  1.1.1.2  mrg @item @var{B} @tab Shall be of the same type and kind as @var{A}.
   13132      1.1  mrg @end multitable
   13133      1.1  mrg 
   13134      1.1  mrg @item @emph{Return value}:
   13135      1.1  mrg The kind of the return value is that of @var{A} and @var{B}.
   13136  1.1.1.3  mrg If @math{B \ge 0} then the result is @code{ABS(A)}, else
   13137      1.1  mrg it is @code{-ABS(A)}.
   13138      1.1  mrg 
   13139      1.1  mrg @item @emph{Example}:
   13140      1.1  mrg @smallexample
   13141      1.1  mrg program test_sign
   13142      1.1  mrg   print *, sign(-12,1)
   13143      1.1  mrg   print *, sign(-12,0)
   13144      1.1  mrg   print *, sign(-12,-1)
   13145      1.1  mrg 
   13146      1.1  mrg   print *, sign(-12.,1.)
   13147      1.1  mrg   print *, sign(-12.,0.)
   13148      1.1  mrg   print *, sign(-12.,-1.)
   13149      1.1  mrg end program test_sign
   13150      1.1  mrg @end smallexample
   13151      1.1  mrg 
   13152      1.1  mrg @item @emph{Specific names}:
   13153  1.1.1.3  mrg @multitable @columnfractions .20 .26 .20 .30
   13154  1.1.1.3  mrg @headitem Name              @tab Arguments              @tab Return type       @tab Standard
   13155  1.1.1.2  mrg @item @code{SIGN(A,B)}  @tab @code{REAL(4) A, B}    @tab @code{REAL(4)}    @tab Fortran 77 and later
   13156  1.1.1.2  mrg @item @code{ISIGN(A,B)} @tab @code{INTEGER(4) A, B} @tab @code{INTEGER(4)} @tab Fortran 77 and later
   13157  1.1.1.2  mrg @item @code{DSIGN(A,B)} @tab @code{REAL(8) A, B}    @tab @code{REAL(8)}    @tab Fortran 77 and later
   13158      1.1  mrg @end multitable
   13159      1.1  mrg @end table
   13160      1.1  mrg 
   13161      1.1  mrg 
   13162      1.1  mrg 
   13163      1.1  mrg @node SIGNAL
   13164      1.1  mrg @section @code{SIGNAL} --- Signal handling subroutine (or function)
   13165      1.1  mrg @fnindex SIGNAL
   13166      1.1  mrg @cindex system, signal handling
   13167      1.1  mrg 
   13168      1.1  mrg @table @asis
   13169      1.1  mrg @item @emph{Description}:
   13170      1.1  mrg @code{SIGNAL(NUMBER, HANDLER [, STATUS])} causes external subroutine
   13171      1.1  mrg @var{HANDLER} to be executed with a single integer argument when signal
   13172      1.1  mrg @var{NUMBER} occurs.  If @var{HANDLER} is an integer, it can be used to
   13173      1.1  mrg turn off handling of signal @var{NUMBER} or revert to its default
   13174      1.1  mrg action.  See @code{signal(2)}.
   13175      1.1  mrg 
   13176      1.1  mrg If @code{SIGNAL} is called as a subroutine and the @var{STATUS} argument
   13177      1.1  mrg is supplied, it is set to the value returned by @code{signal(2)}.
   13178      1.1  mrg 
   13179      1.1  mrg @item @emph{Standard}:
   13180      1.1  mrg GNU extension
   13181      1.1  mrg 
   13182      1.1  mrg @item @emph{Class}:
   13183      1.1  mrg Subroutine, function
   13184      1.1  mrg 
   13185      1.1  mrg @item @emph{Syntax}:
   13186      1.1  mrg @multitable @columnfractions .80
   13187      1.1  mrg @item @code{CALL SIGNAL(NUMBER, HANDLER [, STATUS])}
   13188      1.1  mrg @item @code{STATUS = SIGNAL(NUMBER, HANDLER)}
   13189      1.1  mrg @end multitable
   13190      1.1  mrg 
   13191      1.1  mrg @item @emph{Arguments}:
   13192      1.1  mrg @multitable @columnfractions .15 .70
   13193      1.1  mrg @item @var{NUMBER} @tab Shall be a scalar integer, with @code{INTENT(IN)}
   13194      1.1  mrg @item @var{HANDLER}@tab Signal handler (@code{INTEGER FUNCTION} or
   13195      1.1  mrg @code{SUBROUTINE}) or dummy/global @code{INTEGER} scalar.
   13196      1.1  mrg @code{INTEGER}. It is @code{INTENT(IN)}.
   13197      1.1  mrg @item @var{STATUS} @tab (Optional) @var{STATUS} shall be a scalar
   13198      1.1  mrg integer. It has @code{INTENT(OUT)}.
   13199      1.1  mrg @end multitable
   13200      1.1  mrg @c TODO: What should the interface of the handler be?  Does it take arguments?
   13201      1.1  mrg 
   13202      1.1  mrg @item @emph{Return value}:
   13203      1.1  mrg The @code{SIGNAL} function returns the value returned by @code{signal(2)}.
   13204      1.1  mrg 
   13205      1.1  mrg @item @emph{Example}:
   13206      1.1  mrg @smallexample
   13207      1.1  mrg program test_signal
   13208      1.1  mrg   intrinsic signal
   13209      1.1  mrg   external handler_print
   13210      1.1  mrg 
   13211      1.1  mrg   call signal (12, handler_print)
   13212      1.1  mrg   call signal (10, 1)
   13213      1.1  mrg 
   13214      1.1  mrg   call sleep (30)
   13215      1.1  mrg end program test_signal
   13216      1.1  mrg @end smallexample
   13217      1.1  mrg @end table
   13218      1.1  mrg 
   13219      1.1  mrg 
   13220      1.1  mrg 
   13221      1.1  mrg @node SIN
   13222      1.1  mrg @section @code{SIN} --- Sine function 
   13223      1.1  mrg @fnindex SIN
   13224      1.1  mrg @fnindex DSIN
   13225      1.1  mrg @fnindex CSIN
   13226      1.1  mrg @fnindex ZSIN
   13227      1.1  mrg @fnindex CDSIN
   13228      1.1  mrg @cindex trigonometric function, sine
   13229      1.1  mrg @cindex sine
   13230      1.1  mrg 
   13231      1.1  mrg @table @asis
   13232      1.1  mrg @item @emph{Description}:
   13233      1.1  mrg @code{SIN(X)} computes the sine of @var{X}.
   13234      1.1  mrg 
   13235      1.1  mrg @item @emph{Standard}:
   13236      1.1  mrg Fortran 77 and later
   13237      1.1  mrg 
   13238      1.1  mrg @item @emph{Class}:
   13239      1.1  mrg Elemental function
   13240      1.1  mrg 
   13241      1.1  mrg @item @emph{Syntax}:
   13242      1.1  mrg @code{RESULT = SIN(X)}
   13243      1.1  mrg 
   13244      1.1  mrg @item @emph{Arguments}:
   13245      1.1  mrg @multitable @columnfractions .15 .70
   13246      1.1  mrg @item @var{X} @tab The type shall be @code{REAL} or
   13247      1.1  mrg @code{COMPLEX}.
   13248      1.1  mrg @end multitable
   13249      1.1  mrg 
   13250      1.1  mrg @item @emph{Return value}:
   13251      1.1  mrg The return value has same type and kind as @var{X}.
   13252      1.1  mrg 
   13253      1.1  mrg @item @emph{Example}:
   13254      1.1  mrg @smallexample
   13255      1.1  mrg program test_sin
   13256      1.1  mrg   real :: x = 0.0
   13257      1.1  mrg   x = sin(x)
   13258      1.1  mrg end program test_sin
   13259      1.1  mrg @end smallexample
   13260      1.1  mrg 
   13261      1.1  mrg @item @emph{Specific names}:
   13262  1.1.1.3  mrg @multitable @columnfractions .20 .23 .20 .33
   13263  1.1.1.3  mrg @headitem Name            @tab Argument             @tab Return type       @tab Standard
   13264  1.1.1.2  mrg @item @code{SIN(X)}   @tab @code{REAL(4) X}     @tab @code{REAL(4)}    @tab Fortran 77 and later
   13265  1.1.1.2  mrg @item @code{DSIN(X)}  @tab @code{REAL(8) X}     @tab @code{REAL(8)}    @tab Fortran 77 and later
   13266  1.1.1.2  mrg @item @code{CSIN(X)}  @tab @code{COMPLEX(4) X}  @tab @code{COMPLEX(4)} @tab Fortran 77 and later
   13267  1.1.1.2  mrg @item @code{ZSIN(X)}  @tab @code{COMPLEX(8) X}  @tab @code{COMPLEX(8)} @tab GNU extension
   13268  1.1.1.2  mrg @item @code{CDSIN(X)} @tab @code{COMPLEX(8) X}  @tab @code{COMPLEX(8)} @tab GNU extension
   13269      1.1  mrg @end multitable
   13270      1.1  mrg 
   13271      1.1  mrg @item @emph{See also}:
   13272  1.1.1.2  mrg Inverse function: @gol
   13273  1.1.1.2  mrg @ref{ASIN} @gol
   13274  1.1.1.2  mrg Degrees function: @gol
   13275  1.1.1.2  mrg @ref{SIND}
   13276      1.1  mrg @end table
   13277      1.1  mrg 
   13278      1.1  mrg 
   13279      1.1  mrg 
   13280      1.1  mrg @node SIND
   13281      1.1  mrg @section @code{SIND} --- Sine function, degrees
   13282      1.1  mrg @fnindex SIND
   13283      1.1  mrg @fnindex DSIND
   13284      1.1  mrg @fnindex CSIND
   13285      1.1  mrg @fnindex ZSIND
   13286      1.1  mrg @fnindex CDSIND
   13287      1.1  mrg @cindex trigonometric function, sine, degrees
   13288      1.1  mrg @cindex sine, degrees
   13289      1.1  mrg 
   13290      1.1  mrg @table @asis
   13291      1.1  mrg @item @emph{Description}:
   13292      1.1  mrg @code{SIND(X)} computes the sine of @var{X} in degrees.
   13293      1.1  mrg 
   13294      1.1  mrg This function is for compatibility only and should be avoided in favor of
   13295      1.1  mrg standard constructs wherever possible.
   13296      1.1  mrg 
   13297      1.1  mrg @item @emph{Standard}:
   13298  1.1.1.2  mrg GNU extension, enabled with @option{-fdec-math}.
   13299      1.1  mrg 
   13300      1.1  mrg @item @emph{Class}:
   13301      1.1  mrg Elemental function
   13302      1.1  mrg 
   13303      1.1  mrg @item @emph{Syntax}:
   13304      1.1  mrg @code{RESULT = SIND(X)}
   13305      1.1  mrg 
   13306      1.1  mrg @item @emph{Arguments}:
   13307      1.1  mrg @multitable @columnfractions .15 .70
   13308      1.1  mrg @item @var{X} @tab The type shall be @code{REAL} or
   13309      1.1  mrg @code{COMPLEX}.
   13310      1.1  mrg @end multitable
   13311      1.1  mrg 
   13312      1.1  mrg @item @emph{Return value}:
   13313      1.1  mrg The return value has same type and kind as @var{X}, and its value is in degrees.
   13314      1.1  mrg 
   13315      1.1  mrg @item @emph{Example}:
   13316      1.1  mrg @smallexample
   13317      1.1  mrg program test_sind
   13318      1.1  mrg   real :: x = 0.0
   13319      1.1  mrg   x = sind(x)
   13320      1.1  mrg end program test_sind
   13321      1.1  mrg @end smallexample
   13322      1.1  mrg 
   13323      1.1  mrg @item @emph{Specific names}:
   13324  1.1.1.3  mrg @multitable @columnfractions .20 .23 .20 .33
   13325  1.1.1.3  mrg @headitem Name            @tab Argument             @tab Return type       @tab Standard
   13326  1.1.1.2  mrg @item @code{SIND(X)}   @tab @code{REAL(4) X}     @tab @code{REAL(4)}    @tab GNU extension
   13327  1.1.1.2  mrg @item @code{DSIND(X)}  @tab @code{REAL(8) X}     @tab @code{REAL(8)}    @tab GNU extension
   13328  1.1.1.2  mrg @item @code{CSIND(X)}  @tab @code{COMPLEX(4) X}  @tab @code{COMPLEX(4)} @tab GNU extension
   13329  1.1.1.2  mrg @item @code{ZSIND(X)}  @tab @code{COMPLEX(8) X}  @tab @code{COMPLEX(8)} @tab GNU extension
   13330  1.1.1.2  mrg @item @code{CDSIND(X)} @tab @code{COMPLEX(8) X}  @tab @code{COMPLEX(8)} @tab GNU extension
   13331      1.1  mrg @end multitable
   13332      1.1  mrg 
   13333      1.1  mrg @item @emph{See also}:
   13334  1.1.1.2  mrg Inverse function: @gol
   13335  1.1.1.2  mrg @ref{ASIND} @gol
   13336  1.1.1.2  mrg Radians function: @gol
   13337  1.1.1.2  mrg @ref{SIN} @gol
   13338      1.1  mrg @end table
   13339      1.1  mrg 
   13340      1.1  mrg 
   13341      1.1  mrg 
   13342      1.1  mrg @node SINH
   13343      1.1  mrg @section @code{SINH} --- Hyperbolic sine function 
   13344      1.1  mrg @fnindex SINH
   13345      1.1  mrg @fnindex DSINH
   13346      1.1  mrg @cindex hyperbolic sine
   13347      1.1  mrg @cindex hyperbolic function, sine
   13348      1.1  mrg @cindex sine, hyperbolic
   13349      1.1  mrg 
   13350      1.1  mrg @table @asis
   13351      1.1  mrg @item @emph{Description}:
   13352      1.1  mrg @code{SINH(X)} computes the hyperbolic sine of @var{X}.
   13353      1.1  mrg 
   13354      1.1  mrg @item @emph{Standard}:
   13355  1.1.1.2  mrg Fortran 90 and later, for a complex argument Fortran 2008 or later, has
   13356  1.1.1.2  mrg a GNU extension
   13357      1.1  mrg 
   13358      1.1  mrg @item @emph{Class}:
   13359      1.1  mrg Elemental function
   13360      1.1  mrg 
   13361      1.1  mrg @item @emph{Syntax}:
   13362      1.1  mrg @code{RESULT = SINH(X)}
   13363      1.1  mrg 
   13364      1.1  mrg @item @emph{Arguments}:
   13365      1.1  mrg @multitable @columnfractions .15 .70
   13366      1.1  mrg @item @var{X} @tab The type shall be @code{REAL} or @code{COMPLEX}.
   13367      1.1  mrg @end multitable
   13368      1.1  mrg 
   13369      1.1  mrg @item @emph{Return value}:
   13370      1.1  mrg The return value has same type and kind as @var{X}.
   13371      1.1  mrg 
   13372      1.1  mrg @item @emph{Example}:
   13373      1.1  mrg @smallexample
   13374      1.1  mrg program test_sinh
   13375      1.1  mrg   real(8) :: x = - 1.0_8
   13376      1.1  mrg   x = sinh(x)
   13377      1.1  mrg end program test_sinh
   13378      1.1  mrg @end smallexample
   13379      1.1  mrg 
   13380      1.1  mrg @item @emph{Specific names}:
   13381  1.1.1.3  mrg @multitable @columnfractions .20 .23 .20 .33
   13382  1.1.1.3  mrg @headitem Name            @tab Argument          @tab Return type       @tab Standard
   13383  1.1.1.2  mrg @item @code{DSINH(X)} @tab @code{REAL(8) X}  @tab @code{REAL(8)}    @tab Fortran 90 and later
   13384      1.1  mrg @end multitable
   13385      1.1  mrg 
   13386      1.1  mrg @item @emph{See also}:
   13387      1.1  mrg @ref{ASINH}
   13388      1.1  mrg @end table
   13389      1.1  mrg 
   13390      1.1  mrg 
   13391      1.1  mrg 
   13392      1.1  mrg @node SIZE
   13393      1.1  mrg @section @code{SIZE} --- Determine the size of an array
   13394      1.1  mrg @fnindex SIZE
   13395      1.1  mrg @cindex array, size
   13396      1.1  mrg @cindex array, number of elements
   13397      1.1  mrg @cindex array, count elements
   13398      1.1  mrg 
   13399      1.1  mrg @table @asis
   13400      1.1  mrg @item @emph{Description}:
   13401      1.1  mrg Determine the extent of @var{ARRAY} along a specified dimension @var{DIM},
   13402      1.1  mrg or the total number of elements in @var{ARRAY} if @var{DIM} is absent.
   13403      1.1  mrg 
   13404      1.1  mrg @item @emph{Standard}:
   13405  1.1.1.2  mrg Fortran 90 and later, with @var{KIND} argument Fortran 2003 and later
   13406      1.1  mrg 
   13407      1.1  mrg @item @emph{Class}:
   13408      1.1  mrg Inquiry function
   13409      1.1  mrg 
   13410      1.1  mrg @item @emph{Syntax}:
   13411      1.1  mrg @code{RESULT = SIZE(ARRAY[, DIM [, KIND]])}
   13412      1.1  mrg 
   13413      1.1  mrg @item @emph{Arguments}:
   13414      1.1  mrg @multitable @columnfractions .15 .70
   13415      1.1  mrg @item @var{ARRAY} @tab Shall be an array of any type. If @var{ARRAY} is
   13416      1.1  mrg a pointer it must be associated and allocatable arrays must be allocated.
   13417      1.1  mrg @item @var{DIM}   @tab (Optional) shall be a scalar of type @code{INTEGER} 
   13418      1.1  mrg and its value shall be in the range from 1 to n, where n equals the rank 
   13419      1.1  mrg of @var{ARRAY}.
   13420      1.1  mrg @item @var{KIND} @tab (Optional) An @code{INTEGER} initialization
   13421      1.1  mrg expression indicating the kind parameter of the result.
   13422      1.1  mrg @end multitable
   13423      1.1  mrg 
   13424      1.1  mrg @item @emph{Return value}:
   13425      1.1  mrg The return value is of type @code{INTEGER} and of kind @var{KIND}. If
   13426      1.1  mrg @var{KIND} is absent, the return value is of default integer kind.
   13427      1.1  mrg 
   13428      1.1  mrg @item @emph{Example}:
   13429      1.1  mrg @smallexample
   13430      1.1  mrg PROGRAM test_size
   13431      1.1  mrg   WRITE(*,*) SIZE((/ 1, 2 /))    ! 2
   13432      1.1  mrg END PROGRAM
   13433      1.1  mrg @end smallexample
   13434      1.1  mrg 
   13435      1.1  mrg @item @emph{See also}:
   13436  1.1.1.2  mrg @ref{SHAPE}, @gol
   13437  1.1.1.2  mrg @ref{RESHAPE}
   13438      1.1  mrg @end table
   13439      1.1  mrg 
   13440      1.1  mrg 
   13441      1.1  mrg @node SIZEOF
   13442      1.1  mrg @section @code{SIZEOF} --- Size in bytes of an expression
   13443      1.1  mrg @fnindex SIZEOF
   13444      1.1  mrg @cindex expression size
   13445      1.1  mrg @cindex size of an expression
   13446      1.1  mrg 
   13447      1.1  mrg @table @asis
   13448      1.1  mrg @item @emph{Description}:
   13449      1.1  mrg @code{SIZEOF(X)} calculates the number of bytes of storage the
   13450      1.1  mrg expression @code{X} occupies.
   13451      1.1  mrg 
   13452      1.1  mrg @item @emph{Standard}:
   13453      1.1  mrg GNU extension
   13454      1.1  mrg 
   13455      1.1  mrg @item @emph{Class}:
   13456      1.1  mrg Inquiry function
   13457      1.1  mrg 
   13458      1.1  mrg @item @emph{Syntax}:
   13459      1.1  mrg @code{N = SIZEOF(X)}
   13460      1.1  mrg 
   13461      1.1  mrg @item @emph{Arguments}:
   13462      1.1  mrg @multitable @columnfractions .15 .70
   13463      1.1  mrg @item @var{X} @tab The argument shall be of any type, rank or shape.
   13464      1.1  mrg @end multitable
   13465      1.1  mrg 
   13466      1.1  mrg @item @emph{Return value}:
   13467      1.1  mrg The return value is of type integer and of the system-dependent kind
   13468      1.1  mrg @var{C_SIZE_T} (from the @var{ISO_C_BINDING} module). Its value is the
   13469      1.1  mrg number of bytes occupied by the argument.  If the argument has the
   13470      1.1  mrg @code{POINTER} attribute, the number of bytes of the storage area pointed
   13471      1.1  mrg to is returned.  If the argument is of a derived type with @code{POINTER}
   13472      1.1  mrg or @code{ALLOCATABLE} components, the return value does not account for
   13473      1.1  mrg the sizes of the data pointed to by these components. If the argument is
   13474      1.1  mrg polymorphic, the size according to the dynamic type is returned. The argument
   13475      1.1  mrg may not be a procedure or procedure pointer. Note that the code assumes for
   13476      1.1  mrg arrays that those are contiguous; for contiguous arrays, it returns the
   13477      1.1  mrg storage or an array element multiplied by the size of the array.
   13478      1.1  mrg 
   13479      1.1  mrg @item @emph{Example}:
   13480      1.1  mrg @smallexample
   13481      1.1  mrg    integer :: i
   13482      1.1  mrg    real :: r, s(5)
   13483      1.1  mrg    print *, (sizeof(s)/sizeof(r) == 5)
   13484      1.1  mrg    end
   13485      1.1  mrg @end smallexample
   13486      1.1  mrg The example will print @code{.TRUE.} unless you are using a platform
   13487      1.1  mrg where default @code{REAL} variables are unusually padded.
   13488      1.1  mrg 
   13489      1.1  mrg @item @emph{See also}:
   13490  1.1.1.2  mrg @ref{C_SIZEOF}, @gol
   13491  1.1.1.2  mrg @ref{STORAGE_SIZE}
   13492      1.1  mrg @end table
   13493      1.1  mrg 
   13494      1.1  mrg 
   13495      1.1  mrg @node SLEEP
   13496      1.1  mrg @section @code{SLEEP} --- Sleep for the specified number of seconds
   13497      1.1  mrg @fnindex SLEEP
   13498      1.1  mrg @cindex delayed execution
   13499      1.1  mrg 
   13500      1.1  mrg @table @asis
   13501      1.1  mrg @item @emph{Description}:
   13502      1.1  mrg Calling this subroutine causes the process to pause for @var{SECONDS} seconds.
   13503      1.1  mrg 
   13504      1.1  mrg @item @emph{Standard}:
   13505      1.1  mrg GNU extension
   13506      1.1  mrg 
   13507      1.1  mrg @item @emph{Class}:
   13508      1.1  mrg Subroutine
   13509      1.1  mrg 
   13510      1.1  mrg @item @emph{Syntax}:
   13511      1.1  mrg @code{CALL SLEEP(SECONDS)}
   13512      1.1  mrg 
   13513      1.1  mrg @item @emph{Arguments}:
   13514      1.1  mrg @multitable @columnfractions .15 .70
   13515      1.1  mrg @item @var{SECONDS} @tab The type shall be of default @code{INTEGER}.
   13516      1.1  mrg @end multitable
   13517      1.1  mrg 
   13518      1.1  mrg @item @emph{Example}:
   13519      1.1  mrg @smallexample
   13520      1.1  mrg program test_sleep
   13521      1.1  mrg   call sleep(5)
   13522      1.1  mrg end
   13523      1.1  mrg @end smallexample
   13524      1.1  mrg @end table
   13525      1.1  mrg 
   13526      1.1  mrg 
   13527      1.1  mrg 
   13528      1.1  mrg @node SPACING
   13529      1.1  mrg @section @code{SPACING} --- Smallest distance between two numbers of a given type
   13530      1.1  mrg @fnindex SPACING
   13531      1.1  mrg @cindex real number, relative spacing
   13532      1.1  mrg @cindex floating point, relative spacing
   13533      1.1  mrg 
   13534      1.1  mrg @table @asis
   13535      1.1  mrg @item @emph{Description}:
   13536      1.1  mrg Determines the distance between the argument @var{X} and the nearest 
   13537      1.1  mrg adjacent number of the same type.
   13538      1.1  mrg 
   13539      1.1  mrg @item @emph{Standard}:
   13540  1.1.1.2  mrg Fortran 90 and later
   13541      1.1  mrg 
   13542      1.1  mrg @item @emph{Class}:
   13543      1.1  mrg Elemental function
   13544      1.1  mrg 
   13545      1.1  mrg @item @emph{Syntax}:
   13546      1.1  mrg @code{RESULT = SPACING(X)}
   13547      1.1  mrg 
   13548      1.1  mrg @item @emph{Arguments}:
   13549      1.1  mrg @multitable @columnfractions .15 .70
   13550      1.1  mrg @item @var{X} @tab Shall be of type @code{REAL}.
   13551      1.1  mrg @end multitable
   13552      1.1  mrg 
   13553      1.1  mrg @item @emph{Return value}:
   13554      1.1  mrg The result is of the same type as the input argument @var{X}.
   13555      1.1  mrg 
   13556      1.1  mrg @item @emph{Example}:
   13557      1.1  mrg @smallexample
   13558      1.1  mrg PROGRAM test_spacing
   13559      1.1  mrg   INTEGER, PARAMETER :: SGL = SELECTED_REAL_KIND(p=6, r=37)
   13560      1.1  mrg   INTEGER, PARAMETER :: DBL = SELECTED_REAL_KIND(p=13, r=200)
   13561      1.1  mrg 
   13562      1.1  mrg   WRITE(*,*) spacing(1.0_SGL)      ! "1.1920929E-07"          on i686
   13563      1.1  mrg   WRITE(*,*) spacing(1.0_DBL)      ! "2.220446049250313E-016" on i686
   13564      1.1  mrg END PROGRAM
   13565      1.1  mrg @end smallexample
   13566      1.1  mrg 
   13567      1.1  mrg @item @emph{See also}:
   13568      1.1  mrg @ref{RRSPACING}
   13569      1.1  mrg @end table
   13570      1.1  mrg 
   13571      1.1  mrg 
   13572      1.1  mrg 
   13573      1.1  mrg @node SPREAD
   13574      1.1  mrg @section @code{SPREAD} --- Add a dimension to an array
   13575      1.1  mrg @fnindex SPREAD
   13576      1.1  mrg @cindex array, increase dimension
   13577      1.1  mrg @cindex array, duplicate elements
   13578      1.1  mrg @cindex array, duplicate dimensions
   13579      1.1  mrg 
   13580      1.1  mrg @table @asis
   13581      1.1  mrg @item @emph{Description}:
   13582      1.1  mrg Replicates a @var{SOURCE} array @var{NCOPIES} times along a specified 
   13583      1.1  mrg dimension @var{DIM}.
   13584      1.1  mrg 
   13585      1.1  mrg @item @emph{Standard}:
   13586  1.1.1.2  mrg Fortran 90 and later
   13587      1.1  mrg 
   13588      1.1  mrg @item @emph{Class}:
   13589      1.1  mrg Transformational function
   13590      1.1  mrg 
   13591      1.1  mrg @item @emph{Syntax}:
   13592      1.1  mrg @code{RESULT = SPREAD(SOURCE, DIM, NCOPIES)}
   13593      1.1  mrg 
   13594      1.1  mrg @item @emph{Arguments}:
   13595      1.1  mrg @multitable @columnfractions .15 .70
   13596      1.1  mrg @item @var{SOURCE}  @tab Shall be a scalar or an array of any type and 
   13597      1.1  mrg a rank less than seven.
   13598      1.1  mrg @item @var{DIM}     @tab Shall be a scalar of type @code{INTEGER} with a 
   13599      1.1  mrg value in the range from 1 to n+1, where n equals the rank of @var{SOURCE}.
   13600      1.1  mrg @item @var{NCOPIES} @tab Shall be a scalar of type @code{INTEGER}.
   13601      1.1  mrg @end multitable
   13602      1.1  mrg 
   13603      1.1  mrg @item @emph{Return value}:
   13604      1.1  mrg The result is an array of the same type as @var{SOURCE} and has rank n+1
   13605      1.1  mrg where n equals the rank of @var{SOURCE}.
   13606      1.1  mrg 
   13607      1.1  mrg @item @emph{Example}:
   13608      1.1  mrg @smallexample
   13609      1.1  mrg PROGRAM test_spread
   13610      1.1  mrg   INTEGER :: a = 1, b(2) = (/ 1, 2 /)
   13611      1.1  mrg   WRITE(*,*) SPREAD(A, 1, 2)            ! "1 1"
   13612      1.1  mrg   WRITE(*,*) SPREAD(B, 1, 2)            ! "1 1 2 2"
   13613      1.1  mrg END PROGRAM
   13614      1.1  mrg @end smallexample
   13615      1.1  mrg 
   13616      1.1  mrg @item @emph{See also}:
   13617      1.1  mrg @ref{UNPACK}
   13618      1.1  mrg @end table
   13619      1.1  mrg 
   13620      1.1  mrg 
   13621      1.1  mrg 
   13622      1.1  mrg @node SQRT
   13623      1.1  mrg @section @code{SQRT} --- Square-root function
   13624      1.1  mrg @fnindex SQRT
   13625      1.1  mrg @fnindex DSQRT
   13626      1.1  mrg @fnindex CSQRT
   13627      1.1  mrg @fnindex ZSQRT
   13628      1.1  mrg @fnindex CDSQRT
   13629      1.1  mrg @cindex root
   13630      1.1  mrg @cindex square-root
   13631      1.1  mrg 
   13632      1.1  mrg @table @asis
   13633      1.1  mrg @item @emph{Description}:
   13634      1.1  mrg @code{SQRT(X)} computes the square root of @var{X}.
   13635      1.1  mrg 
   13636      1.1  mrg @item @emph{Standard}:
   13637      1.1  mrg Fortran 77 and later
   13638      1.1  mrg 
   13639      1.1  mrg @item @emph{Class}:
   13640      1.1  mrg Elemental function
   13641      1.1  mrg 
   13642      1.1  mrg @item @emph{Syntax}:
   13643      1.1  mrg @code{RESULT = SQRT(X)}
   13644      1.1  mrg 
   13645      1.1  mrg @item @emph{Arguments}:
   13646      1.1  mrg @multitable @columnfractions .15 .70
   13647      1.1  mrg @item @var{X} @tab The type shall be @code{REAL} or
   13648      1.1  mrg @code{COMPLEX}.
   13649      1.1  mrg @end multitable
   13650      1.1  mrg 
   13651      1.1  mrg @item @emph{Return value}:
   13652      1.1  mrg The return value is of type @code{REAL} or @code{COMPLEX}.
   13653      1.1  mrg The kind type parameter is the same as @var{X}.
   13654      1.1  mrg 
   13655      1.1  mrg @item @emph{Example}:
   13656      1.1  mrg @smallexample
   13657      1.1  mrg program test_sqrt
   13658      1.1  mrg   real(8) :: x = 2.0_8
   13659      1.1  mrg   complex :: z = (1.0, 2.0)
   13660      1.1  mrg   x = sqrt(x)
   13661      1.1  mrg   z = sqrt(z)
   13662      1.1  mrg end program test_sqrt
   13663      1.1  mrg @end smallexample
   13664      1.1  mrg 
   13665      1.1  mrg @item @emph{Specific names}:
   13666  1.1.1.3  mrg @multitable @columnfractions .20 .23 .20 .33
   13667  1.1.1.3  mrg @headitem Name             @tab Argument             @tab Return type          @tab Standard
   13668  1.1.1.2  mrg @item @code{SQRT(X)}   @tab @code{REAL(4) X}     @tab @code{REAL(4)}       @tab Fortran 77 and later
   13669  1.1.1.2  mrg @item @code{DSQRT(X)}  @tab @code{REAL(8) X}     @tab @code{REAL(8)}       @tab Fortran 77 and later
   13670  1.1.1.2  mrg @item @code{CSQRT(X)}  @tab @code{COMPLEX(4) X}  @tab @code{COMPLEX(4)}    @tab Fortran 77 and later
   13671      1.1  mrg @item @code{ZSQRT(X)}  @tab @code{COMPLEX(8) X}  @tab @code{COMPLEX(8)}    @tab GNU extension
   13672      1.1  mrg @item @code{CDSQRT(X)} @tab @code{COMPLEX(8) X}  @tab @code{COMPLEX(8)}    @tab GNU extension
   13673      1.1  mrg @end multitable
   13674      1.1  mrg @end table
   13675      1.1  mrg 
   13676      1.1  mrg 
   13677      1.1  mrg 
   13678      1.1  mrg @node SRAND
   13679      1.1  mrg @section @code{SRAND} --- Reinitialize the random number generator
   13680      1.1  mrg @fnindex SRAND
   13681      1.1  mrg @cindex random number generation, seeding
   13682      1.1  mrg @cindex seeding a random number generator
   13683      1.1  mrg 
   13684      1.1  mrg @table @asis
   13685      1.1  mrg @item @emph{Description}:
   13686      1.1  mrg @code{SRAND} reinitializes the pseudo-random number generator
   13687      1.1  mrg called by @code{RAND} and @code{IRAND}. The new seed used by the
   13688      1.1  mrg generator is specified by the required argument @var{SEED}.
   13689      1.1  mrg 
   13690      1.1  mrg @item @emph{Standard}:
   13691      1.1  mrg GNU extension
   13692      1.1  mrg 
   13693      1.1  mrg @item @emph{Class}:
   13694      1.1  mrg Subroutine
   13695      1.1  mrg 
   13696      1.1  mrg @item @emph{Syntax}:
   13697      1.1  mrg @code{CALL SRAND(SEED)}
   13698      1.1  mrg 
   13699      1.1  mrg @item @emph{Arguments}:
   13700      1.1  mrg @multitable @columnfractions .15 .70
   13701      1.1  mrg @item @var{SEED} @tab Shall be a scalar @code{INTEGER(kind=4)}.
   13702      1.1  mrg @end multitable
   13703      1.1  mrg 
   13704      1.1  mrg @item @emph{Return value}:
   13705      1.1  mrg Does not return anything.
   13706      1.1  mrg 
   13707      1.1  mrg @item @emph{Example}:
   13708      1.1  mrg See @code{RAND} and @code{IRAND} for examples.
   13709      1.1  mrg 
   13710      1.1  mrg @item @emph{Notes}:
   13711      1.1  mrg The Fortran standard specifies the intrinsic subroutines
   13712      1.1  mrg @code{RANDOM_SEED} to initialize the pseudo-random number
   13713      1.1  mrg generator and @code{RANDOM_NUMBER} to generate pseudo-random numbers.
   13714      1.1  mrg These subroutines should be used in new codes.
   13715      1.1  mrg 
   13716      1.1  mrg Please note that in GNU Fortran, these two sets of intrinsics (@code{RAND},
   13717      1.1  mrg @code{IRAND} and @code{SRAND} on the one hand, @code{RANDOM_NUMBER} and
   13718      1.1  mrg @code{RANDOM_SEED} on the other hand) access two independent
   13719      1.1  mrg pseudo-random number generators.
   13720      1.1  mrg 
   13721      1.1  mrg @item @emph{See also}:
   13722  1.1.1.2  mrg @ref{RAND}, @gol
   13723  1.1.1.2  mrg @ref{RANDOM_SEED}, @gol
   13724  1.1.1.2  mrg @ref{RANDOM_NUMBER}
   13725      1.1  mrg @end table
   13726      1.1  mrg 
   13727      1.1  mrg 
   13728      1.1  mrg 
   13729      1.1  mrg @node STAT
   13730      1.1  mrg @section @code{STAT} --- Get file status
   13731      1.1  mrg @fnindex STAT
   13732      1.1  mrg @cindex file system, file status
   13733      1.1  mrg 
   13734      1.1  mrg @table @asis
   13735      1.1  mrg @item @emph{Description}:
   13736      1.1  mrg This function returns information about a file. No permissions are required on 
   13737      1.1  mrg the file itself, but execute (search) permission is required on all of the 
   13738      1.1  mrg directories in path that lead to the file.
   13739      1.1  mrg 
   13740      1.1  mrg The elements that are obtained and stored in the array @code{VALUES}:
   13741      1.1  mrg @multitable @columnfractions .15 .70
   13742      1.1  mrg @item @code{VALUES(1)}   @tab  Device ID 
   13743      1.1  mrg @item @code{VALUES(2)}   @tab  Inode number 
   13744      1.1  mrg @item @code{VALUES(3)}   @tab  File mode 
   13745      1.1  mrg @item @code{VALUES(4)}   @tab  Number of links 
   13746      1.1  mrg @item @code{VALUES(5)}   @tab  Owner's uid 
   13747      1.1  mrg @item @code{VALUES(6)}   @tab  Owner's gid 
   13748      1.1  mrg @item @code{VALUES(7)}   @tab  ID of device containing directory entry for file (0 if not available) 
   13749      1.1  mrg @item @code{VALUES(8)}   @tab  File size (bytes) 
   13750      1.1  mrg @item @code{VALUES(9)}   @tab  Last access time 
   13751      1.1  mrg @item @code{VALUES(10)}  @tab  Last modification time 
   13752      1.1  mrg @item @code{VALUES(11)}  @tab  Last file status change time 
   13753      1.1  mrg @item @code{VALUES(12)}  @tab  Preferred I/O block size (-1 if not available) 
   13754      1.1  mrg @item @code{VALUES(13)}  @tab  Number of blocks allocated (-1 if not available)
   13755      1.1  mrg @end multitable
   13756      1.1  mrg 
   13757      1.1  mrg Not all these elements are relevant on all systems. 
   13758      1.1  mrg If an element is not relevant, it is returned as 0.
   13759      1.1  mrg 
   13760      1.1  mrg This intrinsic is provided in both subroutine and function forms; however,
   13761      1.1  mrg only one form can be used in any given program unit.
   13762      1.1  mrg 
   13763      1.1  mrg @item @emph{Standard}:
   13764      1.1  mrg GNU extension
   13765      1.1  mrg 
   13766      1.1  mrg @item @emph{Class}:
   13767      1.1  mrg Subroutine, function
   13768      1.1  mrg 
   13769      1.1  mrg @item @emph{Syntax}:
   13770      1.1  mrg @multitable @columnfractions .80
   13771      1.1  mrg @item @code{CALL STAT(NAME, VALUES [, STATUS])}
   13772      1.1  mrg @item @code{STATUS = STAT(NAME, VALUES)}
   13773      1.1  mrg @end multitable
   13774      1.1  mrg 
   13775      1.1  mrg @item @emph{Arguments}:
   13776      1.1  mrg @multitable @columnfractions .15 .70
   13777      1.1  mrg @item @var{NAME}   @tab The type shall be @code{CHARACTER}, of the
   13778      1.1  mrg default kind and a valid path within the file system.
   13779      1.1  mrg @item @var{VALUES} @tab The type shall be @code{INTEGER(4), DIMENSION(13)}.
   13780      1.1  mrg @item @var{STATUS} @tab (Optional) status flag of type @code{INTEGER(4)}. Returns 0 
   13781      1.1  mrg on success and a system specific error code otherwise.
   13782      1.1  mrg @end multitable
   13783      1.1  mrg 
   13784      1.1  mrg @item @emph{Example}:
   13785      1.1  mrg @smallexample
   13786      1.1  mrg PROGRAM test_stat
   13787      1.1  mrg   INTEGER, DIMENSION(13) :: buff
   13788      1.1  mrg   INTEGER :: status
   13789      1.1  mrg 
   13790      1.1  mrg   CALL STAT("/etc/passwd", buff, status)
   13791      1.1  mrg 
   13792      1.1  mrg   IF (status == 0) THEN
   13793      1.1  mrg     WRITE (*, FMT="('Device ID:',               T30, I19)") buff(1)
   13794      1.1  mrg     WRITE (*, FMT="('Inode number:',            T30, I19)") buff(2)
   13795      1.1  mrg     WRITE (*, FMT="('File mode (octal):',       T30, O19)") buff(3)
   13796      1.1  mrg     WRITE (*, FMT="('Number of links:',         T30, I19)") buff(4)
   13797      1.1  mrg     WRITE (*, FMT="('Owner''s uid:',            T30, I19)") buff(5)
   13798      1.1  mrg     WRITE (*, FMT="('Owner''s gid:',            T30, I19)") buff(6)
   13799      1.1  mrg     WRITE (*, FMT="('Device where located:',    T30, I19)") buff(7)
   13800      1.1  mrg     WRITE (*, FMT="('File size:',               T30, I19)") buff(8)
   13801      1.1  mrg     WRITE (*, FMT="('Last access time:',        T30, A19)") CTIME(buff(9))
   13802      1.1  mrg     WRITE (*, FMT="('Last modification time',   T30, A19)") CTIME(buff(10))
   13803      1.1  mrg     WRITE (*, FMT="('Last status change time:', T30, A19)") CTIME(buff(11))
   13804      1.1  mrg     WRITE (*, FMT="('Preferred block size:',    T30, I19)") buff(12)
   13805      1.1  mrg     WRITE (*, FMT="('No. of blocks allocated:', T30, I19)") buff(13)
   13806      1.1  mrg   END IF
   13807      1.1  mrg END PROGRAM
   13808      1.1  mrg @end smallexample
   13809      1.1  mrg 
   13810      1.1  mrg @item @emph{See also}:
   13811  1.1.1.2  mrg To stat an open file: @gol
   13812  1.1.1.2  mrg @ref{FSTAT} @gol
   13813  1.1.1.2  mrg To stat a link: @gol
   13814  1.1.1.2  mrg @ref{LSTAT}
   13815      1.1  mrg @end table
   13816      1.1  mrg 
   13817      1.1  mrg 
   13818      1.1  mrg 
   13819      1.1  mrg @node STORAGE_SIZE
   13820      1.1  mrg @section @code{STORAGE_SIZE} --- Storage size in bits
   13821      1.1  mrg @fnindex STORAGE_SIZE
   13822      1.1  mrg @cindex storage size
   13823      1.1  mrg 
   13824      1.1  mrg @table @asis
   13825      1.1  mrg @item @emph{Description}:
   13826      1.1  mrg Returns the storage size of argument @var{A} in bits.
   13827      1.1  mrg @item @emph{Standard}:
   13828      1.1  mrg Fortran 2008 and later
   13829      1.1  mrg @item @emph{Class}:
   13830      1.1  mrg Inquiry function
   13831      1.1  mrg @item @emph{Syntax}:
   13832      1.1  mrg @code{RESULT = STORAGE_SIZE(A [, KIND])}
   13833      1.1  mrg 
   13834      1.1  mrg @item @emph{Arguments}:
   13835      1.1  mrg @multitable @columnfractions .15 .70
   13836      1.1  mrg @item @var{A} @tab Shall be a scalar or array of any type.
   13837      1.1  mrg @item @var{KIND} @tab (Optional) shall be a scalar integer constant expression.
   13838      1.1  mrg @end multitable
   13839      1.1  mrg 
   13840      1.1  mrg @item @emph{Return Value}:
   13841      1.1  mrg The result is a scalar integer with the kind type parameter specified by KIND
   13842      1.1  mrg (or default integer type if KIND is missing). The result value is the size
   13843      1.1  mrg expressed in bits for an element of an array that has the dynamic type and type
   13844      1.1  mrg parameters of A.
   13845      1.1  mrg 
   13846      1.1  mrg @item @emph{See also}:
   13847  1.1.1.2  mrg @ref{C_SIZEOF}, @gol
   13848  1.1.1.2  mrg @ref{SIZEOF}
   13849      1.1  mrg @end table
   13850      1.1  mrg 
   13851      1.1  mrg 
   13852      1.1  mrg 
   13853      1.1  mrg @node SUM
   13854      1.1  mrg @section @code{SUM} --- Sum of array elements
   13855      1.1  mrg @fnindex SUM
   13856      1.1  mrg @cindex array, sum
   13857      1.1  mrg @cindex array, add elements
   13858      1.1  mrg @cindex array, conditionally add elements
   13859      1.1  mrg @cindex sum array elements
   13860      1.1  mrg 
   13861      1.1  mrg @table @asis
   13862      1.1  mrg @item @emph{Description}:
   13863      1.1  mrg Adds the elements of @var{ARRAY} along dimension @var{DIM} if
   13864      1.1  mrg the corresponding element in @var{MASK} is @code{TRUE}.
   13865      1.1  mrg 
   13866      1.1  mrg @item @emph{Standard}:
   13867  1.1.1.2  mrg Fortran 90 and later
   13868      1.1  mrg 
   13869      1.1  mrg @item @emph{Class}:
   13870      1.1  mrg Transformational function
   13871      1.1  mrg 
   13872      1.1  mrg @item @emph{Syntax}:
   13873      1.1  mrg @multitable @columnfractions .80
   13874      1.1  mrg @item @code{RESULT = SUM(ARRAY[, MASK])}
   13875      1.1  mrg @item @code{RESULT = SUM(ARRAY, DIM[, MASK])}
   13876      1.1  mrg @end multitable
   13877      1.1  mrg 
   13878      1.1  mrg @item @emph{Arguments}:
   13879      1.1  mrg @multitable @columnfractions .15 .70
   13880      1.1  mrg @item @var{ARRAY} @tab Shall be an array of type @code{INTEGER}, 
   13881      1.1  mrg @code{REAL} or @code{COMPLEX}.
   13882      1.1  mrg @item @var{DIM}   @tab (Optional) shall be a scalar of type 
   13883      1.1  mrg @code{INTEGER} with a value in the range from 1 to n, where n 
   13884      1.1  mrg equals the rank of @var{ARRAY}.
   13885      1.1  mrg @item @var{MASK}  @tab (Optional) shall be of type @code{LOGICAL} 
   13886      1.1  mrg and either be a scalar or an array of the same shape as @var{ARRAY}.
   13887      1.1  mrg @end multitable
   13888      1.1  mrg 
   13889      1.1  mrg @item @emph{Return value}:
   13890      1.1  mrg The result is of the same type as @var{ARRAY}.
   13891      1.1  mrg 
   13892      1.1  mrg If @var{DIM} is absent, a scalar with the sum of all elements in @var{ARRAY}
   13893      1.1  mrg is returned. Otherwise, an array of rank n-1, where n equals the rank of 
   13894      1.1  mrg @var{ARRAY}, and a shape similar to that of @var{ARRAY} with dimension @var{DIM} 
   13895      1.1  mrg dropped is returned.
   13896      1.1  mrg 
   13897      1.1  mrg @item @emph{Example}:
   13898      1.1  mrg @smallexample
   13899      1.1  mrg PROGRAM test_sum
   13900      1.1  mrg   INTEGER :: x(5) = (/ 1, 2, 3, 4 ,5 /)
   13901      1.1  mrg   print *, SUM(x)                        ! all elements, sum = 15
   13902      1.1  mrg   print *, SUM(x, MASK=MOD(x, 2)==1)     ! odd elements, sum = 9
   13903      1.1  mrg END PROGRAM
   13904      1.1  mrg @end smallexample
   13905      1.1  mrg 
   13906      1.1  mrg @item @emph{See also}:
   13907      1.1  mrg @ref{PRODUCT}
   13908      1.1  mrg @end table
   13909      1.1  mrg 
   13910      1.1  mrg 
   13911      1.1  mrg 
   13912      1.1  mrg @node SYMLNK
   13913      1.1  mrg @section @code{SYMLNK} --- Create a symbolic link
   13914      1.1  mrg @fnindex SYMLNK
   13915      1.1  mrg @cindex file system, create link
   13916      1.1  mrg @cindex file system, soft link
   13917      1.1  mrg 
   13918      1.1  mrg @table @asis
   13919      1.1  mrg @item @emph{Description}:
   13920      1.1  mrg Makes a symbolic link from file @var{PATH1} to @var{PATH2}. A null
   13921      1.1  mrg character (@code{CHAR(0)}) can be used to mark the end of the names in
   13922      1.1  mrg @var{PATH1} and @var{PATH2}; otherwise, trailing blanks in the file
   13923      1.1  mrg names are ignored.  If the @var{STATUS} argument is supplied, it
   13924      1.1  mrg contains 0 on success or a nonzero error code upon return; see
   13925      1.1  mrg @code{symlink(2)}.  If the system does not supply @code{symlink(2)}, 
   13926      1.1  mrg @code{ENOSYS} is returned.
   13927      1.1  mrg 
   13928      1.1  mrg This intrinsic is provided in both subroutine and function forms;
   13929      1.1  mrg however, only one form can be used in any given program unit.
   13930      1.1  mrg 
   13931      1.1  mrg @item @emph{Standard}:
   13932      1.1  mrg GNU extension
   13933      1.1  mrg 
   13934      1.1  mrg @item @emph{Class}:
   13935      1.1  mrg Subroutine, function
   13936      1.1  mrg 
   13937      1.1  mrg @item @emph{Syntax}:
   13938      1.1  mrg @multitable @columnfractions .80
   13939      1.1  mrg @item @code{CALL SYMLNK(PATH1, PATH2 [, STATUS])}
   13940      1.1  mrg @item @code{STATUS = SYMLNK(PATH1, PATH2)}
   13941      1.1  mrg @end multitable
   13942      1.1  mrg 
   13943      1.1  mrg @item @emph{Arguments}:
   13944      1.1  mrg @multitable @columnfractions .15 .70
   13945      1.1  mrg @item @var{PATH1} @tab Shall be of default @code{CHARACTER} type.
   13946      1.1  mrg @item @var{PATH2} @tab Shall be of default @code{CHARACTER} type.
   13947      1.1  mrg @item @var{STATUS} @tab (Optional) Shall be of default @code{INTEGER} type.
   13948      1.1  mrg @end multitable
   13949      1.1  mrg 
   13950      1.1  mrg @item @emph{See also}:
   13951  1.1.1.2  mrg @ref{LINK}, @gol
   13952  1.1.1.2  mrg @ref{UNLINK}
   13953      1.1  mrg @end table
   13954      1.1  mrg 
   13955      1.1  mrg 
   13956      1.1  mrg 
   13957      1.1  mrg @node SYSTEM
   13958      1.1  mrg @section @code{SYSTEM} --- Execute a shell command
   13959      1.1  mrg @fnindex SYSTEM
   13960      1.1  mrg @cindex system, system call
   13961      1.1  mrg 
   13962      1.1  mrg @table @asis
   13963      1.1  mrg @item @emph{Description}:
   13964      1.1  mrg Passes the command @var{COMMAND} to a shell (see @code{system(3)}). If
   13965      1.1  mrg argument @var{STATUS} is present, it contains the value returned by
   13966      1.1  mrg @code{system(3)}, which is presumably 0 if the shell command succeeded.
   13967      1.1  mrg Note that which shell is used to invoke the command is system-dependent
   13968      1.1  mrg and environment-dependent.
   13969      1.1  mrg 
   13970      1.1  mrg This intrinsic is provided in both subroutine and function forms;
   13971      1.1  mrg however, only one form can be used in any given program unit.
   13972      1.1  mrg 
   13973      1.1  mrg Note that the @code{system} function need not be thread-safe. It is
   13974      1.1  mrg the responsibility of the user to ensure that @code{system} is not
   13975      1.1  mrg called concurrently.
   13976      1.1  mrg 
   13977      1.1  mrg @item @emph{Standard}:
   13978      1.1  mrg GNU extension
   13979      1.1  mrg 
   13980      1.1  mrg @item @emph{Class}:
   13981      1.1  mrg Subroutine, function
   13982      1.1  mrg 
   13983      1.1  mrg @item @emph{Syntax}:
   13984      1.1  mrg @multitable @columnfractions .80
   13985      1.1  mrg @item @code{CALL SYSTEM(COMMAND [, STATUS])}
   13986      1.1  mrg @item @code{STATUS = SYSTEM(COMMAND)}
   13987      1.1  mrg @end multitable
   13988      1.1  mrg 
   13989      1.1  mrg @item @emph{Arguments}:
   13990      1.1  mrg @multitable @columnfractions .15 .70
   13991      1.1  mrg @item @var{COMMAND} @tab Shall be of default @code{CHARACTER} type.
   13992      1.1  mrg @item @var{STATUS}  @tab (Optional) Shall be of default @code{INTEGER} type.
   13993      1.1  mrg @end multitable
   13994      1.1  mrg 
   13995      1.1  mrg @item @emph{See also}:
   13996      1.1  mrg @ref{EXECUTE_COMMAND_LINE}, which is part of the Fortran 2008 standard
   13997      1.1  mrg and should considered in new code for future portability.
   13998      1.1  mrg @end table
   13999      1.1  mrg 
   14000      1.1  mrg 
   14001      1.1  mrg 
   14002      1.1  mrg @node SYSTEM_CLOCK
   14003      1.1  mrg @section @code{SYSTEM_CLOCK} --- Time function
   14004      1.1  mrg @fnindex SYSTEM_CLOCK
   14005      1.1  mrg @cindex time, clock ticks
   14006      1.1  mrg @cindex clock ticks
   14007      1.1  mrg 
   14008      1.1  mrg @table @asis
   14009      1.1  mrg @item @emph{Description}:
   14010      1.1  mrg Determines the @var{COUNT} of a processor clock since an unspecified
   14011      1.1  mrg time in the past modulo @var{COUNT_MAX}, @var{COUNT_RATE} determines
   14012      1.1  mrg the number of clock ticks per second.  If the platform supports a
   14013      1.1  mrg monotonic clock, that clock is used and can, depending on the platform
   14014      1.1  mrg clock implementation, provide up to nanosecond resolution.  If a
   14015      1.1  mrg monotonic clock is not available, the implementation falls back to a
   14016      1.1  mrg realtime clock.
   14017      1.1  mrg 
   14018      1.1  mrg @var{COUNT_RATE} is system dependent and can vary depending on the kind of
   14019      1.1  mrg the arguments. For @var{kind=4} arguments (and smaller integer kinds),
   14020      1.1  mrg @var{COUNT} represents milliseconds, while for @var{kind=8} arguments (and
   14021      1.1  mrg larger integer kinds), @var{COUNT} typically represents micro- or
   14022      1.1  mrg nanoseconds depending on resolution of the underlying platform clock.
   14023      1.1  mrg @var{COUNT_MAX} usually equals @code{HUGE(COUNT_MAX)}. Note that the
   14024      1.1  mrg millisecond resolution of the @var{kind=4} version implies that the
   14025      1.1  mrg @var{COUNT} will wrap around in roughly 25 days. In order to avoid issues
   14026      1.1  mrg with the wrap around and for more precise timing, please use the
   14027      1.1  mrg @var{kind=8} version.
   14028      1.1  mrg 
   14029      1.1  mrg If there is no clock, or querying the clock fails, @var{COUNT} is set
   14030      1.1  mrg to @code{-HUGE(COUNT)}, and @var{COUNT_RATE} and @var{COUNT_MAX} are
   14031      1.1  mrg set to zero.
   14032      1.1  mrg 
   14033      1.1  mrg When running on a platform using the GNU C library (glibc) version
   14034      1.1  mrg 2.16 or older, or a derivative thereof, the high resolution monotonic
   14035      1.1  mrg clock is available only when linking with the @var{rt} library.  This
   14036      1.1  mrg can be done explicitly by adding the @code{-lrt} flag when linking the
   14037      1.1  mrg application, but is also done implicitly when using OpenMP.
   14038      1.1  mrg 
   14039      1.1  mrg On the Windows platform, the version with @var{kind=4} arguments uses
   14040      1.1  mrg the @code{GetTickCount} function, whereas the @var{kind=8} version
   14041      1.1  mrg uses @code{QueryPerformanceCounter} and
   14042      1.1  mrg @code{QueryPerformanceCounterFrequency}. For more information, and
   14043      1.1  mrg potential caveats, please see the platform documentation.
   14044      1.1  mrg 
   14045      1.1  mrg @item @emph{Standard}:
   14046  1.1.1.2  mrg Fortran 90 and later
   14047      1.1  mrg 
   14048      1.1  mrg @item @emph{Class}:
   14049      1.1  mrg Subroutine
   14050      1.1  mrg 
   14051      1.1  mrg @item @emph{Syntax}:
   14052      1.1  mrg @code{CALL SYSTEM_CLOCK([COUNT, COUNT_RATE, COUNT_MAX])}
   14053      1.1  mrg 
   14054      1.1  mrg @item @emph{Arguments}:
   14055  1.1.1.2  mrg @multitable @columnfractions .20 .65
   14056      1.1  mrg @item @var{COUNT}      @tab (Optional) shall be a scalar of type 
   14057      1.1  mrg @code{INTEGER} with @code{INTENT(OUT)}.
   14058      1.1  mrg @item @var{COUNT_RATE} @tab (Optional) shall be a scalar of type 
   14059      1.1  mrg @code{INTEGER} or @code{REAL}, with @code{INTENT(OUT)}.
   14060      1.1  mrg @item @var{COUNT_MAX}  @tab (Optional) shall be a scalar of type 
   14061      1.1  mrg @code{INTEGER} with @code{INTENT(OUT)}.
   14062      1.1  mrg @end multitable
   14063      1.1  mrg 
   14064      1.1  mrg @item @emph{Example}:
   14065      1.1  mrg @smallexample
   14066      1.1  mrg PROGRAM test_system_clock
   14067      1.1  mrg   INTEGER :: count, count_rate, count_max
   14068      1.1  mrg   CALL SYSTEM_CLOCK(count, count_rate, count_max)
   14069      1.1  mrg   WRITE(*,*) count, count_rate, count_max
   14070      1.1  mrg END PROGRAM
   14071      1.1  mrg @end smallexample
   14072      1.1  mrg 
   14073      1.1  mrg @item @emph{See also}:
   14074  1.1.1.2  mrg @ref{DATE_AND_TIME}, @gol
   14075  1.1.1.2  mrg @ref{CPU_TIME}
   14076      1.1  mrg @end table
   14077      1.1  mrg 
   14078      1.1  mrg 
   14079      1.1  mrg 
   14080      1.1  mrg @node TAN
   14081      1.1  mrg @section @code{TAN} --- Tangent function
   14082      1.1  mrg @fnindex TAN
   14083      1.1  mrg @fnindex DTAN
   14084      1.1  mrg @cindex trigonometric function, tangent
   14085      1.1  mrg @cindex tangent
   14086      1.1  mrg 
   14087      1.1  mrg @table @asis
   14088      1.1  mrg @item @emph{Description}:
   14089      1.1  mrg @code{TAN(X)} computes the tangent of @var{X}.
   14090      1.1  mrg 
   14091      1.1  mrg @item @emph{Standard}:
   14092      1.1  mrg Fortran 77 and later, for a complex argument Fortran 2008 or later
   14093      1.1  mrg 
   14094      1.1  mrg @item @emph{Class}:
   14095      1.1  mrg Elemental function
   14096      1.1  mrg 
   14097      1.1  mrg @item @emph{Syntax}:
   14098      1.1  mrg @code{RESULT = TAN(X)}
   14099      1.1  mrg 
   14100      1.1  mrg @item @emph{Arguments}:
   14101      1.1  mrg @multitable @columnfractions .15 .70
   14102      1.1  mrg @item @var{X} @tab The type shall be @code{REAL} or @code{COMPLEX}.
   14103      1.1  mrg @end multitable
   14104      1.1  mrg 
   14105      1.1  mrg @item @emph{Return value}:
   14106      1.1  mrg The return value has same type and kind as @var{X}, and its value is in radians.
   14107      1.1  mrg 
   14108      1.1  mrg @item @emph{Example}:
   14109      1.1  mrg @smallexample
   14110      1.1  mrg program test_tan
   14111      1.1  mrg   real(8) :: x = 0.165_8
   14112      1.1  mrg   x = tan(x)
   14113      1.1  mrg end program test_tan
   14114      1.1  mrg @end smallexample
   14115      1.1  mrg 
   14116      1.1  mrg @item @emph{Specific names}:
   14117  1.1.1.3  mrg @multitable @columnfractions .20 .23 .20 .33
   14118  1.1.1.3  mrg @headitem Name            @tab Argument          @tab Return type     @tab Standard
   14119  1.1.1.2  mrg @item @code{TAN(X)}   @tab @code{REAL(4) X}  @tab @code{REAL(4)}  @tab Fortran 77 and later
   14120  1.1.1.2  mrg @item @code{DTAN(X)}  @tab @code{REAL(8) X}  @tab @code{REAL(8)}  @tab Fortran 77 and later
   14121      1.1  mrg @end multitable
   14122      1.1  mrg 
   14123      1.1  mrg @item @emph{See also}:
   14124  1.1.1.2  mrg Inverse function: @gol
   14125  1.1.1.2  mrg @ref{ATAN} @gol
   14126  1.1.1.2  mrg Degrees function: @gol
   14127  1.1.1.2  mrg @ref{TAND}
   14128      1.1  mrg @end table
   14129      1.1  mrg 
   14130      1.1  mrg 
   14131      1.1  mrg 
   14132      1.1  mrg @node TAND
   14133      1.1  mrg @section @code{TAND} --- Tangent function, degrees
   14134      1.1  mrg @fnindex TAND
   14135      1.1  mrg @fnindex DTAND
   14136      1.1  mrg @cindex trigonometric function, tangent, degrees
   14137      1.1  mrg @cindex tangent, degrees
   14138      1.1  mrg 
   14139      1.1  mrg @table @asis
   14140      1.1  mrg @item @emph{Description}:
   14141      1.1  mrg @code{TAND(X)} computes the tangent of @var{X} in degrees.
   14142      1.1  mrg 
   14143      1.1  mrg This function is for compatibility only and should be avoided in favor of
   14144      1.1  mrg standard constructs wherever possible.
   14145      1.1  mrg 
   14146      1.1  mrg @item @emph{Standard}:
   14147  1.1.1.2  mrg GNU extension, enabled with @option{-fdec-math}.
   14148      1.1  mrg 
   14149      1.1  mrg @item @emph{Class}:
   14150      1.1  mrg Elemental function
   14151      1.1  mrg 
   14152      1.1  mrg @item @emph{Syntax}:
   14153      1.1  mrg @code{RESULT = TAND(X)}
   14154      1.1  mrg 
   14155      1.1  mrg @item @emph{Arguments}:
   14156      1.1  mrg @multitable @columnfractions .15 .70
   14157      1.1  mrg @item @var{X} @tab The type shall be @code{REAL} or @code{COMPLEX}.
   14158      1.1  mrg @end multitable
   14159      1.1  mrg 
   14160      1.1  mrg @item @emph{Return value}:
   14161      1.1  mrg The return value has same type and kind as @var{X}, and its value is in degrees.
   14162      1.1  mrg 
   14163      1.1  mrg @item @emph{Example}:
   14164      1.1  mrg @smallexample
   14165      1.1  mrg program test_tand
   14166      1.1  mrg   real(8) :: x = 0.165_8
   14167      1.1  mrg   x = tand(x)
   14168      1.1  mrg end program test_tand
   14169      1.1  mrg @end smallexample
   14170      1.1  mrg 
   14171      1.1  mrg @item @emph{Specific names}:
   14172  1.1.1.3  mrg @multitable @columnfractions .20 .23 .20 .33
   14173  1.1.1.3  mrg @headitem Name            @tab Argument          @tab Return type     @tab Standard
   14174  1.1.1.2  mrg @item @code{TAND(X)}   @tab @code{REAL(4) X}  @tab @code{REAL(4)}  @tab GNU extension
   14175  1.1.1.2  mrg @item @code{DTAND(X)}  @tab @code{REAL(8) X}  @tab @code{REAL(8)}  @tab GNU extension
   14176      1.1  mrg @end multitable
   14177      1.1  mrg 
   14178      1.1  mrg @item @emph{See also}:
   14179  1.1.1.2  mrg Inverse function: @gol
   14180  1.1.1.2  mrg @ref{ATAND} @gol
   14181  1.1.1.2  mrg Radians function: @gol
   14182  1.1.1.2  mrg @ref{TAN}
   14183      1.1  mrg @end table
   14184      1.1  mrg 
   14185      1.1  mrg 
   14186      1.1  mrg 
   14187      1.1  mrg @node TANH
   14188      1.1  mrg @section @code{TANH} --- Hyperbolic tangent function 
   14189      1.1  mrg @fnindex TANH
   14190      1.1  mrg @fnindex DTANH
   14191      1.1  mrg @cindex hyperbolic tangent
   14192      1.1  mrg @cindex hyperbolic function, tangent
   14193      1.1  mrg @cindex tangent, hyperbolic
   14194      1.1  mrg 
   14195      1.1  mrg @table @asis
   14196      1.1  mrg @item @emph{Description}:
   14197      1.1  mrg @code{TANH(X)} computes the hyperbolic tangent of @var{X}.
   14198      1.1  mrg 
   14199      1.1  mrg @item @emph{Standard}:
   14200      1.1  mrg Fortran 77 and later, for a complex argument Fortran 2008 or later
   14201      1.1  mrg 
   14202      1.1  mrg @item @emph{Class}:
   14203      1.1  mrg Elemental function
   14204      1.1  mrg 
   14205      1.1  mrg @item @emph{Syntax}:
   14206      1.1  mrg @code{X = TANH(X)}
   14207      1.1  mrg 
   14208      1.1  mrg @item @emph{Arguments}:
   14209      1.1  mrg @multitable @columnfractions .15 .70
   14210      1.1  mrg @item @var{X} @tab The type shall be @code{REAL} or @code{COMPLEX}.
   14211      1.1  mrg @end multitable
   14212      1.1  mrg 
   14213      1.1  mrg @item @emph{Return value}:
   14214      1.1  mrg The return value has same type and kind as @var{X}. If @var{X} is
   14215      1.1  mrg complex, the imaginary part of the result is in radians. If @var{X}
   14216      1.1  mrg is @code{REAL}, the return value lies in the range
   14217      1.1  mrg @math{ - 1 \leq tanh(x) \leq 1 }.
   14218      1.1  mrg 
   14219      1.1  mrg @item @emph{Example}:
   14220      1.1  mrg @smallexample
   14221      1.1  mrg program test_tanh
   14222      1.1  mrg   real(8) :: x = 2.1_8
   14223      1.1  mrg   x = tanh(x)
   14224      1.1  mrg end program test_tanh
   14225      1.1  mrg @end smallexample
   14226      1.1  mrg 
   14227      1.1  mrg @item @emph{Specific names}:
   14228  1.1.1.3  mrg @multitable @columnfractions .20 .23 .20 .33
   14229  1.1.1.3  mrg @headitem Name            @tab Argument          @tab Return type       @tab Standard
   14230  1.1.1.2  mrg @item @code{TANH(X)}  @tab @code{REAL(4) X}  @tab @code{REAL(4)}    @tab Fortran 77 and later
   14231  1.1.1.2  mrg @item @code{DTANH(X)} @tab @code{REAL(8) X}  @tab @code{REAL(8)}    @tab Fortran 77 and later
   14232      1.1  mrg @end multitable
   14233      1.1  mrg 
   14234      1.1  mrg @item @emph{See also}:
   14235      1.1  mrg @ref{ATANH}
   14236      1.1  mrg @end table
   14237      1.1  mrg 
   14238      1.1  mrg 
   14239      1.1  mrg 
   14240      1.1  mrg @node THIS_IMAGE
   14241      1.1  mrg @section @code{THIS_IMAGE} --- Function that returns the cosubscript index of this image
   14242      1.1  mrg @fnindex THIS_IMAGE
   14243      1.1  mrg @cindex coarray, @code{THIS_IMAGE}
   14244      1.1  mrg @cindex images, index of this image
   14245      1.1  mrg 
   14246      1.1  mrg @table @asis
   14247      1.1  mrg @item @emph{Description}:
   14248      1.1  mrg Returns the cosubscript for this image.
   14249      1.1  mrg 
   14250      1.1  mrg @item @emph{Standard}:
   14251      1.1  mrg Fortran 2008 and later. With @var{DISTANCE} argument, 
   14252      1.1  mrg Technical Specification (TS) 18508 or later
   14253      1.1  mrg 
   14254      1.1  mrg @item @emph{Class}:
   14255      1.1  mrg Transformational function
   14256      1.1  mrg 
   14257      1.1  mrg @item @emph{Syntax}:
   14258      1.1  mrg @multitable @columnfractions .80
   14259      1.1  mrg @item @code{RESULT = THIS_IMAGE()}
   14260      1.1  mrg @item @code{RESULT = THIS_IMAGE(DISTANCE)}
   14261      1.1  mrg @item @code{RESULT = THIS_IMAGE(COARRAY [, DIM])}
   14262      1.1  mrg @end multitable
   14263      1.1  mrg 
   14264      1.1  mrg @item @emph{Arguments}:
   14265      1.1  mrg @multitable @columnfractions .15 .70
   14266      1.1  mrg @item @var{DISTANCE} @tab (optional, intent(in)) Nonnegative scalar integer
   14267      1.1  mrg (not permitted together with @var{COARRAY}).
   14268      1.1  mrg @item @var{COARRAY} @tab Coarray of any type  (optional; if @var{DIM}
   14269      1.1  mrg present, required).
   14270      1.1  mrg @item @var{DIM}     @tab default integer scalar (optional). If present,
   14271      1.1  mrg @var{DIM} shall be between one and the corank of @var{COARRAY}.
   14272      1.1  mrg @end multitable
   14273      1.1  mrg 
   14274      1.1  mrg 
   14275      1.1  mrg @item @emph{Return value}:
   14276      1.1  mrg Default integer. If @var{COARRAY} is not present, it is scalar; if
   14277      1.1  mrg @var{DISTANCE} is not present or has value 0, its value is the image index on
   14278      1.1  mrg the invoking image for the current team, for values smaller or equal
   14279      1.1  mrg distance to the initial team, it returns the image index on the ancestor team
   14280      1.1  mrg which has a distance of @var{DISTANCE} from the invoking team. If
   14281      1.1  mrg @var{DISTANCE} is larger than the distance to the initial team, the image
   14282      1.1  mrg index of the initial team is returned. Otherwise when the @var{COARRAY} is
   14283      1.1  mrg present, if @var{DIM} is not present, a rank-1 array with corank elements is
   14284      1.1  mrg returned, containing the cosubscripts for @var{COARRAY} specifying the invoking
   14285      1.1  mrg image. If @var{DIM} is present, a scalar is returned, with the value of
   14286      1.1  mrg the @var{DIM} element of @code{THIS_IMAGE(COARRAY)}.
   14287      1.1  mrg 
   14288      1.1  mrg @item @emph{Example}:
   14289      1.1  mrg @smallexample
   14290      1.1  mrg INTEGER :: value[*]
   14291      1.1  mrg INTEGER :: i
   14292      1.1  mrg value = THIS_IMAGE()
   14293      1.1  mrg SYNC ALL
   14294      1.1  mrg IF (THIS_IMAGE() == 1) THEN
   14295      1.1  mrg   DO i = 1, NUM_IMAGES()
   14296      1.1  mrg     WRITE(*,'(2(a,i0))') 'value[', i, '] is ', value[i]
   14297      1.1  mrg   END DO
   14298      1.1  mrg END IF
   14299      1.1  mrg 
   14300      1.1  mrg ! Check whether the current image is the initial image
   14301      1.1  mrg IF (THIS_IMAGE(HUGE(1)) /= THIS_IMAGE())
   14302      1.1  mrg   error stop "something is rotten here"
   14303      1.1  mrg @end smallexample
   14304      1.1  mrg 
   14305      1.1  mrg @item @emph{See also}:
   14306  1.1.1.2  mrg @ref{NUM_IMAGES}, @gol
   14307  1.1.1.2  mrg @ref{IMAGE_INDEX}
   14308      1.1  mrg @end table
   14309      1.1  mrg 
   14310      1.1  mrg 
   14311      1.1  mrg 
   14312      1.1  mrg @node TIME
   14313      1.1  mrg @section @code{TIME} --- Time function
   14314      1.1  mrg @fnindex TIME
   14315      1.1  mrg @cindex time, current
   14316      1.1  mrg @cindex current time
   14317      1.1  mrg 
   14318      1.1  mrg @table @asis
   14319      1.1  mrg @item @emph{Description}:
   14320      1.1  mrg Returns the current time encoded as an integer (in the manner of the
   14321      1.1  mrg function @code{time(3)} in the C standard library). This value is
   14322      1.1  mrg suitable for passing to @ref{CTIME}, @ref{GMTIME}, and @ref{LTIME}.
   14323      1.1  mrg 
   14324      1.1  mrg This intrinsic is not fully portable, such as to systems with 32-bit
   14325      1.1  mrg @code{INTEGER} types but supporting times wider than 32 bits. Therefore,
   14326      1.1  mrg the values returned by this intrinsic might be, or become, negative, or
   14327      1.1  mrg numerically less than previous values, during a single run of the
   14328      1.1  mrg compiled program.
   14329      1.1  mrg 
   14330      1.1  mrg See @ref{TIME8}, for information on a similar intrinsic that might be
   14331      1.1  mrg portable to more GNU Fortran implementations, though to fewer Fortran
   14332      1.1  mrg compilers.
   14333      1.1  mrg 
   14334      1.1  mrg @item @emph{Standard}:
   14335      1.1  mrg GNU extension
   14336      1.1  mrg 
   14337      1.1  mrg @item @emph{Class}:
   14338      1.1  mrg Function
   14339      1.1  mrg 
   14340      1.1  mrg @item @emph{Syntax}:
   14341      1.1  mrg @code{RESULT = TIME()}
   14342      1.1  mrg 
   14343      1.1  mrg @item @emph{Return value}:
   14344      1.1  mrg The return value is a scalar of type @code{INTEGER(4)}.
   14345      1.1  mrg 
   14346      1.1  mrg @item @emph{See also}:
   14347  1.1.1.2  mrg @ref{DATE_AND_TIME}, @gol
   14348  1.1.1.2  mrg @ref{CTIME}, @gol
   14349  1.1.1.2  mrg @ref{GMTIME}, @gol
   14350  1.1.1.2  mrg @ref{LTIME}, @gol
   14351  1.1.1.2  mrg @ref{MCLOCK}, @gol
   14352  1.1.1.2  mrg @ref{TIME8}
   14353      1.1  mrg @end table
   14354      1.1  mrg 
   14355      1.1  mrg 
   14356      1.1  mrg 
   14357      1.1  mrg @node TIME8
   14358      1.1  mrg @section @code{TIME8} --- Time function (64-bit)
   14359      1.1  mrg @fnindex TIME8
   14360      1.1  mrg @cindex time, current
   14361      1.1  mrg @cindex current time
   14362      1.1  mrg 
   14363      1.1  mrg @table @asis
   14364      1.1  mrg @item @emph{Description}:
   14365      1.1  mrg Returns the current time encoded as an integer (in the manner of the
   14366      1.1  mrg function @code{time(3)} in the C standard library). This value is
   14367      1.1  mrg suitable for passing to @ref{CTIME}, @ref{GMTIME}, and @ref{LTIME}.
   14368      1.1  mrg 
   14369      1.1  mrg @emph{Warning:} this intrinsic does not increase the range of the timing
   14370      1.1  mrg values over that returned by @code{time(3)}. On a system with a 32-bit
   14371      1.1  mrg @code{time(3)}, @code{TIME8} will return a 32-bit value, even though
   14372      1.1  mrg it is converted to a 64-bit @code{INTEGER(8)} value. That means
   14373      1.1  mrg overflows of the 32-bit value can still occur. Therefore, the values
   14374      1.1  mrg returned by this intrinsic might be or become negative or numerically
   14375      1.1  mrg less than previous values during a single run of the compiled program.
   14376      1.1  mrg 
   14377      1.1  mrg @item @emph{Standard}:
   14378      1.1  mrg GNU extension
   14379      1.1  mrg 
   14380      1.1  mrg @item @emph{Class}:
   14381      1.1  mrg Function
   14382      1.1  mrg 
   14383      1.1  mrg @item @emph{Syntax}:
   14384      1.1  mrg @code{RESULT = TIME8()}
   14385      1.1  mrg 
   14386      1.1  mrg @item @emph{Return value}:
   14387      1.1  mrg The return value is a scalar of type @code{INTEGER(8)}.
   14388      1.1  mrg 
   14389      1.1  mrg @item @emph{See also}:
   14390  1.1.1.2  mrg @ref{DATE_AND_TIME}, @gol
   14391  1.1.1.2  mrg @ref{CTIME}, @gol
   14392  1.1.1.2  mrg @ref{GMTIME}, @gol
   14393  1.1.1.2  mrg @ref{LTIME}, @gol
   14394  1.1.1.2  mrg @ref{MCLOCK8}, @gol
   14395  1.1.1.2  mrg @ref{TIME}
   14396      1.1  mrg @end table
   14397      1.1  mrg 
   14398      1.1  mrg 
   14399      1.1  mrg 
   14400      1.1  mrg @node TINY
   14401      1.1  mrg @section @code{TINY} --- Smallest positive number of a real kind
   14402      1.1  mrg @fnindex TINY
   14403      1.1  mrg @cindex limits, smallest number
   14404      1.1  mrg @cindex model representation, smallest number
   14405      1.1  mrg 
   14406      1.1  mrg @table @asis
   14407      1.1  mrg @item @emph{Description}:
   14408      1.1  mrg @code{TINY(X)} returns the smallest positive (non zero) number
   14409      1.1  mrg in the model of the type of @code{X}.
   14410      1.1  mrg 
   14411      1.1  mrg @item @emph{Standard}:
   14412  1.1.1.2  mrg Fortran 90 and later
   14413      1.1  mrg 
   14414      1.1  mrg @item @emph{Class}:
   14415      1.1  mrg Inquiry function
   14416      1.1  mrg 
   14417      1.1  mrg @item @emph{Syntax}:
   14418      1.1  mrg @code{RESULT = TINY(X)}
   14419      1.1  mrg 
   14420      1.1  mrg @item @emph{Arguments}:
   14421      1.1  mrg @multitable @columnfractions .15 .70
   14422      1.1  mrg @item @var{X} @tab Shall be of type @code{REAL}.
   14423      1.1  mrg @end multitable
   14424      1.1  mrg 
   14425      1.1  mrg @item @emph{Return value}:
   14426      1.1  mrg The return value is of the same type and kind as @var{X}
   14427      1.1  mrg 
   14428      1.1  mrg @item @emph{Example}:
   14429      1.1  mrg See @code{HUGE} for an example.
   14430      1.1  mrg @end table
   14431      1.1  mrg 
   14432      1.1  mrg 
   14433      1.1  mrg 
   14434      1.1  mrg @node TRAILZ
   14435      1.1  mrg @section @code{TRAILZ} --- Number of trailing zero bits of an integer
   14436      1.1  mrg @fnindex TRAILZ
   14437      1.1  mrg @cindex zero bits
   14438      1.1  mrg 
   14439      1.1  mrg @table @asis
   14440      1.1  mrg @item @emph{Description}:
   14441      1.1  mrg @code{TRAILZ} returns the number of trailing zero bits of an integer.
   14442      1.1  mrg 
   14443      1.1  mrg @item @emph{Standard}:
   14444      1.1  mrg Fortran 2008 and later
   14445      1.1  mrg 
   14446      1.1  mrg @item @emph{Class}:
   14447      1.1  mrg Elemental function
   14448      1.1  mrg 
   14449      1.1  mrg @item @emph{Syntax}:
   14450      1.1  mrg @code{RESULT = TRAILZ(I)}
   14451      1.1  mrg 
   14452      1.1  mrg @item @emph{Arguments}:
   14453      1.1  mrg @multitable @columnfractions .15 .70
   14454      1.1  mrg @item @var{I} @tab Shall be of type @code{INTEGER}.
   14455      1.1  mrg @end multitable
   14456      1.1  mrg 
   14457      1.1  mrg @item @emph{Return value}:
   14458      1.1  mrg The type of the return value is the default @code{INTEGER}.
   14459      1.1  mrg If all the bits of @code{I} are zero, the result value is @code{BIT_SIZE(I)}.
   14460      1.1  mrg 
   14461      1.1  mrg @item @emph{Example}:
   14462      1.1  mrg @smallexample
   14463      1.1  mrg PROGRAM test_trailz
   14464      1.1  mrg   WRITE (*,*) TRAILZ(8)  ! prints 3
   14465      1.1  mrg END PROGRAM
   14466      1.1  mrg @end smallexample
   14467      1.1  mrg 
   14468      1.1  mrg @item @emph{See also}:
   14469  1.1.1.2  mrg @ref{BIT_SIZE}, @gol
   14470  1.1.1.2  mrg @ref{LEADZ}, @gol
   14471  1.1.1.2  mrg @ref{POPPAR}, @gol
   14472  1.1.1.2  mrg @ref{POPCNT}
   14473      1.1  mrg @end table
   14474      1.1  mrg 
   14475      1.1  mrg 
   14476      1.1  mrg 
   14477      1.1  mrg @node TRANSFER
   14478      1.1  mrg @section @code{TRANSFER} --- Transfer bit patterns
   14479      1.1  mrg @fnindex TRANSFER
   14480      1.1  mrg @cindex bits, move
   14481      1.1  mrg @cindex type cast
   14482      1.1  mrg 
   14483      1.1  mrg @table @asis
   14484      1.1  mrg @item @emph{Description}:
   14485      1.1  mrg Interprets the bitwise representation of @var{SOURCE} in memory as if it
   14486      1.1  mrg is the representation of a variable or array of the same type and type
   14487      1.1  mrg parameters as @var{MOLD}.
   14488      1.1  mrg 
   14489      1.1  mrg This is approximately equivalent to the C concept of @emph{casting} one
   14490      1.1  mrg type to another.
   14491      1.1  mrg 
   14492      1.1  mrg @item @emph{Standard}:
   14493  1.1.1.2  mrg Fortran 90 and later
   14494      1.1  mrg 
   14495      1.1  mrg @item @emph{Class}:
   14496      1.1  mrg Transformational function
   14497      1.1  mrg 
   14498      1.1  mrg @item @emph{Syntax}:
   14499      1.1  mrg @code{RESULT = TRANSFER(SOURCE, MOLD[, SIZE])}
   14500      1.1  mrg 
   14501      1.1  mrg @item @emph{Arguments}:
   14502      1.1  mrg @multitable @columnfractions .15 .70
   14503      1.1  mrg @item @var{SOURCE} @tab Shall be a scalar or an array of any type.
   14504      1.1  mrg @item @var{MOLD}   @tab Shall be a scalar or an array of any type.
   14505      1.1  mrg @item @var{SIZE}   @tab (Optional) shall be a scalar of type 
   14506      1.1  mrg @code{INTEGER}.
   14507      1.1  mrg @end multitable
   14508      1.1  mrg 
   14509      1.1  mrg @item @emph{Return value}:
   14510      1.1  mrg The result has the same type as @var{MOLD}, with the bit level
   14511      1.1  mrg representation of @var{SOURCE}.  If @var{SIZE} is present, the result is
   14512      1.1  mrg a one-dimensional array of length @var{SIZE}.  If @var{SIZE} is absent
   14513      1.1  mrg but @var{MOLD} is an array (of any size or shape), the result is a one-
   14514      1.1  mrg dimensional array of the minimum length needed to contain the entirety
   14515      1.1  mrg of the bitwise representation of @var{SOURCE}.   If @var{SIZE} is absent
   14516      1.1  mrg and @var{MOLD} is a scalar, the result is a scalar.
   14517      1.1  mrg 
   14518      1.1  mrg If the bitwise representation of the result is longer than that of
   14519      1.1  mrg @var{SOURCE}, then the leading bits of the result correspond to those of
   14520      1.1  mrg @var{SOURCE} and any trailing bits are filled arbitrarily.
   14521      1.1  mrg 
   14522      1.1  mrg When the resulting bit representation does not correspond to a valid
   14523      1.1  mrg representation of a variable of the same type as @var{MOLD}, the results
   14524      1.1  mrg are undefined, and subsequent operations on the result cannot be
   14525      1.1  mrg guaranteed to produce sensible behavior.  For example, it is possible to
   14526      1.1  mrg create @code{LOGICAL} variables for which @code{@var{VAR}} and
   14527      1.1  mrg @code{.NOT.@var{VAR}} both appear to be true.
   14528      1.1  mrg 
   14529      1.1  mrg @item @emph{Example}:
   14530      1.1  mrg @smallexample
   14531      1.1  mrg PROGRAM test_transfer
   14532      1.1  mrg   integer :: x = 2143289344
   14533      1.1  mrg   print *, transfer(x, 1.0)    ! prints "NaN" on i686
   14534      1.1  mrg END PROGRAM
   14535      1.1  mrg @end smallexample
   14536      1.1  mrg @end table
   14537      1.1  mrg 
   14538      1.1  mrg 
   14539      1.1  mrg 
   14540      1.1  mrg @node TRANSPOSE
   14541      1.1  mrg @section @code{TRANSPOSE} --- Transpose an array of rank two
   14542      1.1  mrg @fnindex TRANSPOSE
   14543      1.1  mrg @cindex array, transpose
   14544      1.1  mrg @cindex matrix, transpose
   14545      1.1  mrg @cindex transpose
   14546      1.1  mrg 
   14547      1.1  mrg @table @asis
   14548      1.1  mrg @item @emph{Description}:
   14549      1.1  mrg Transpose an array of rank two. Element (i, j) of the result has the value 
   14550      1.1  mrg @code{MATRIX(j, i)}, for all i, j.
   14551      1.1  mrg 
   14552      1.1  mrg @item @emph{Standard}:
   14553  1.1.1.2  mrg Fortran 90 and later
   14554      1.1  mrg 
   14555      1.1  mrg @item @emph{Class}:
   14556      1.1  mrg Transformational function
   14557      1.1  mrg 
   14558      1.1  mrg @item @emph{Syntax}:
   14559      1.1  mrg @code{RESULT = TRANSPOSE(MATRIX)}
   14560      1.1  mrg 
   14561      1.1  mrg @item @emph{Arguments}:
   14562      1.1  mrg @multitable @columnfractions .15 .70
   14563      1.1  mrg @item @var{MATRIX} @tab Shall be an array of any type and have a rank of two.
   14564      1.1  mrg @end multitable
   14565      1.1  mrg 
   14566      1.1  mrg @item @emph{Return value}:
   14567      1.1  mrg The result has the same type as @var{MATRIX}, and has shape 
   14568      1.1  mrg @code{(/ m, n /)} if @var{MATRIX} has shape @code{(/ n, m /)}.
   14569      1.1  mrg @end table
   14570      1.1  mrg 
   14571      1.1  mrg 
   14572      1.1  mrg 
   14573      1.1  mrg @node TRIM
   14574      1.1  mrg @section @code{TRIM} --- Remove trailing blank characters of a string
   14575      1.1  mrg @fnindex TRIM
   14576      1.1  mrg @cindex string, remove trailing whitespace
   14577      1.1  mrg 
   14578      1.1  mrg @table @asis
   14579      1.1  mrg @item @emph{Description}:
   14580      1.1  mrg Removes trailing blank characters of a string.
   14581      1.1  mrg 
   14582      1.1  mrg @item @emph{Standard}:
   14583  1.1.1.2  mrg Fortran 90 and later
   14584      1.1  mrg 
   14585      1.1  mrg @item @emph{Class}:
   14586      1.1  mrg Transformational function
   14587      1.1  mrg 
   14588      1.1  mrg @item @emph{Syntax}:
   14589      1.1  mrg @code{RESULT = TRIM(STRING)}
   14590      1.1  mrg 
   14591      1.1  mrg @item @emph{Arguments}:
   14592      1.1  mrg @multitable @columnfractions .15 .70
   14593      1.1  mrg @item @var{STRING} @tab Shall be a scalar of type @code{CHARACTER}.
   14594      1.1  mrg @end multitable
   14595      1.1  mrg 
   14596      1.1  mrg @item @emph{Return value}:
   14597      1.1  mrg A scalar of type @code{CHARACTER} which length is that of @var{STRING}
   14598      1.1  mrg less the number of trailing blanks.
   14599      1.1  mrg 
   14600      1.1  mrg @item @emph{Example}:
   14601      1.1  mrg @smallexample
   14602      1.1  mrg PROGRAM test_trim
   14603      1.1  mrg   CHARACTER(len=10), PARAMETER :: s = "GFORTRAN  "
   14604      1.1  mrg   WRITE(*,*) LEN(s), LEN(TRIM(s))  ! "10 8", with/without trailing blanks
   14605      1.1  mrg END PROGRAM
   14606      1.1  mrg @end smallexample
   14607      1.1  mrg 
   14608      1.1  mrg @item @emph{See also}:
   14609  1.1.1.2  mrg @ref{ADJUSTL}, @gol
   14610  1.1.1.2  mrg @ref{ADJUSTR}
   14611      1.1  mrg @end table
   14612      1.1  mrg 
   14613      1.1  mrg 
   14614      1.1  mrg 
   14615      1.1  mrg @node TTYNAM
   14616      1.1  mrg @section @code{TTYNAM} --- Get the name of a terminal device.
   14617      1.1  mrg @fnindex TTYNAM
   14618      1.1  mrg @cindex system, terminal
   14619      1.1  mrg 
   14620      1.1  mrg @table @asis
   14621      1.1  mrg @item @emph{Description}:
   14622      1.1  mrg Get the name of a terminal device. For more information, 
   14623      1.1  mrg see @code{ttyname(3)}.
   14624      1.1  mrg 
   14625      1.1  mrg This intrinsic is provided in both subroutine and function forms; 
   14626      1.1  mrg however, only one form can be used in any given program unit. 
   14627      1.1  mrg 
   14628      1.1  mrg @item @emph{Standard}:
   14629      1.1  mrg GNU extension
   14630      1.1  mrg 
   14631      1.1  mrg @item @emph{Class}:
   14632      1.1  mrg Subroutine, function
   14633      1.1  mrg 
   14634      1.1  mrg @item @emph{Syntax}:
   14635      1.1  mrg @multitable @columnfractions .80
   14636      1.1  mrg @item @code{CALL TTYNAM(UNIT, NAME)}
   14637      1.1  mrg @item @code{NAME = TTYNAM(UNIT)}
   14638      1.1  mrg @end multitable
   14639      1.1  mrg 
   14640      1.1  mrg @item @emph{Arguments}:
   14641      1.1  mrg @multitable @columnfractions .15 .70
   14642      1.1  mrg @item @var{UNIT} @tab Shall be a scalar @code{INTEGER}.
   14643      1.1  mrg @item @var{NAME} @tab Shall be of type @code{CHARACTER}.
   14644      1.1  mrg @end multitable
   14645      1.1  mrg 
   14646      1.1  mrg @item @emph{Example}:
   14647      1.1  mrg @smallexample
   14648      1.1  mrg PROGRAM test_ttynam
   14649      1.1  mrg   INTEGER :: unit
   14650      1.1  mrg   DO unit = 1, 10
   14651      1.1  mrg     IF (isatty(unit=unit)) write(*,*) ttynam(unit)
   14652      1.1  mrg   END DO
   14653      1.1  mrg END PROGRAM
   14654      1.1  mrg @end smallexample
   14655      1.1  mrg 
   14656      1.1  mrg @item @emph{See also}:
   14657      1.1  mrg @ref{ISATTY}
   14658      1.1  mrg @end table
   14659      1.1  mrg 
   14660      1.1  mrg 
   14661      1.1  mrg 
   14662      1.1  mrg @node UBOUND
   14663      1.1  mrg @section @code{UBOUND} --- Upper dimension bounds of an array
   14664      1.1  mrg @fnindex UBOUND
   14665      1.1  mrg @cindex array, upper bound
   14666      1.1  mrg 
   14667      1.1  mrg @table @asis
   14668      1.1  mrg @item @emph{Description}:
   14669      1.1  mrg Returns the upper bounds of an array, or a single upper bound
   14670      1.1  mrg along the @var{DIM} dimension.
   14671      1.1  mrg @item @emph{Standard}:
   14672  1.1.1.2  mrg Fortran 90 and later, with @var{KIND} argument Fortran 2003 and later
   14673      1.1  mrg 
   14674      1.1  mrg @item @emph{Class}:
   14675      1.1  mrg Inquiry function
   14676      1.1  mrg 
   14677      1.1  mrg @item @emph{Syntax}:
   14678      1.1  mrg @code{RESULT = UBOUND(ARRAY [, DIM [, KIND]])}
   14679      1.1  mrg 
   14680      1.1  mrg @item @emph{Arguments}:
   14681      1.1  mrg @multitable @columnfractions .15 .70
   14682      1.1  mrg @item @var{ARRAY} @tab Shall be an array, of any type.
   14683      1.1  mrg @item @var{DIM} @tab (Optional) Shall be a scalar @code{INTEGER}.
   14684      1.1  mrg @item @var{KIND}@tab (Optional) An @code{INTEGER} initialization
   14685      1.1  mrg expression indicating the kind parameter of the result.
   14686      1.1  mrg @end multitable
   14687      1.1  mrg 
   14688      1.1  mrg @item @emph{Return value}:
   14689      1.1  mrg The return value is of type @code{INTEGER} and of kind @var{KIND}. If
   14690      1.1  mrg @var{KIND} is absent, the return value is of default integer kind.
   14691      1.1  mrg If @var{DIM} is absent, the result is an array of the upper bounds of
   14692      1.1  mrg @var{ARRAY}.  If @var{DIM} is present, the result is a scalar
   14693      1.1  mrg corresponding to the upper bound of the array along that dimension.  If
   14694      1.1  mrg @var{ARRAY} is an expression rather than a whole array or array
   14695      1.1  mrg structure component, or if it has a zero extent along the relevant
   14696      1.1  mrg dimension, the upper bound is taken to be the number of elements along
   14697      1.1  mrg the relevant dimension.
   14698      1.1  mrg 
   14699      1.1  mrg @item @emph{See also}:
   14700  1.1.1.2  mrg @ref{LBOUND}, @gol
   14701  1.1.1.2  mrg @ref{LCOBOUND}
   14702      1.1  mrg @end table
   14703      1.1  mrg 
   14704      1.1  mrg 
   14705      1.1  mrg 
   14706      1.1  mrg @node UCOBOUND
   14707      1.1  mrg @section @code{UCOBOUND} --- Upper codimension bounds of an array
   14708      1.1  mrg @fnindex UCOBOUND
   14709      1.1  mrg @cindex coarray, upper bound
   14710      1.1  mrg 
   14711      1.1  mrg @table @asis
   14712      1.1  mrg @item @emph{Description}:
   14713      1.1  mrg Returns the upper cobounds of a coarray, or a single upper cobound
   14714      1.1  mrg along the @var{DIM} codimension.
   14715      1.1  mrg @item @emph{Standard}:
   14716      1.1  mrg Fortran 2008 and later
   14717      1.1  mrg 
   14718      1.1  mrg @item @emph{Class}:
   14719      1.1  mrg Inquiry function
   14720      1.1  mrg 
   14721      1.1  mrg @item @emph{Syntax}:
   14722      1.1  mrg @code{RESULT = UCOBOUND(COARRAY [, DIM [, KIND]])}
   14723      1.1  mrg 
   14724      1.1  mrg @item @emph{Arguments}:
   14725      1.1  mrg @multitable @columnfractions .15 .70
   14726      1.1  mrg @item @var{ARRAY} @tab Shall be an coarray, of any type.
   14727      1.1  mrg @item @var{DIM} @tab (Optional) Shall be a scalar @code{INTEGER}.
   14728      1.1  mrg @item @var{KIND} @tab (Optional) An @code{INTEGER} initialization
   14729      1.1  mrg expression indicating the kind parameter of the result.
   14730      1.1  mrg @end multitable
   14731      1.1  mrg 
   14732      1.1  mrg @item @emph{Return value}:
   14733      1.1  mrg The return value is of type @code{INTEGER} and of kind @var{KIND}. If
   14734      1.1  mrg @var{KIND} is absent, the return value is of default integer kind.
   14735      1.1  mrg If @var{DIM} is absent, the result is an array of the lower cobounds of
   14736      1.1  mrg @var{COARRAY}.  If @var{DIM} is present, the result is a scalar
   14737      1.1  mrg corresponding to the lower cobound of the array along that codimension.
   14738      1.1  mrg 
   14739      1.1  mrg @item @emph{See also}:
   14740  1.1.1.2  mrg @ref{LCOBOUND}, @gol
   14741  1.1.1.2  mrg @ref{LBOUND}
   14742      1.1  mrg @end table
   14743      1.1  mrg 
   14744      1.1  mrg 
   14745      1.1  mrg 
   14746      1.1  mrg @node UMASK
   14747      1.1  mrg @section @code{UMASK} --- Set the file creation mask
   14748      1.1  mrg @fnindex UMASK
   14749      1.1  mrg @cindex file system, file creation mask
   14750      1.1  mrg 
   14751      1.1  mrg @table @asis
   14752      1.1  mrg @item @emph{Description}:
   14753      1.1  mrg Sets the file creation mask to @var{MASK}. If called as a function, it
   14754      1.1  mrg returns the old value. If called as a subroutine and argument @var{OLD}
   14755      1.1  mrg if it is supplied, it is set to the old value. See @code{umask(2)}.
   14756      1.1  mrg 
   14757      1.1  mrg @item @emph{Standard}:
   14758      1.1  mrg GNU extension
   14759      1.1  mrg 
   14760      1.1  mrg @item @emph{Class}:
   14761      1.1  mrg Subroutine, function
   14762      1.1  mrg 
   14763      1.1  mrg @item @emph{Syntax}:
   14764      1.1  mrg @multitable @columnfractions .80
   14765      1.1  mrg @item @code{CALL UMASK(MASK [, OLD])}
   14766      1.1  mrg @item @code{OLD = UMASK(MASK)}
   14767      1.1  mrg @end multitable
   14768      1.1  mrg 
   14769      1.1  mrg @item @emph{Arguments}:
   14770      1.1  mrg @multitable @columnfractions .15 .70
   14771      1.1  mrg @item @var{MASK} @tab Shall be a scalar of type @code{INTEGER}.
   14772      1.1  mrg @item @var{OLD} @tab (Optional) Shall be a scalar of type
   14773      1.1  mrg @code{INTEGER}.
   14774      1.1  mrg @end multitable
   14775      1.1  mrg 
   14776      1.1  mrg @end table
   14777      1.1  mrg 
   14778      1.1  mrg 
   14779      1.1  mrg 
   14780      1.1  mrg @node UNLINK
   14781      1.1  mrg @section @code{UNLINK} --- Remove a file from the file system
   14782      1.1  mrg @fnindex UNLINK
   14783      1.1  mrg @cindex file system, remove file
   14784      1.1  mrg 
   14785      1.1  mrg @table @asis
   14786      1.1  mrg @item @emph{Description}:
   14787      1.1  mrg Unlinks the file @var{PATH}. A null character (@code{CHAR(0)}) can be
   14788      1.1  mrg used to mark the end of the name in @var{PATH}; otherwise, trailing
   14789      1.1  mrg blanks in the file name are ignored.  If the @var{STATUS} argument is
   14790      1.1  mrg supplied, it contains 0 on success or a nonzero error code upon return;
   14791      1.1  mrg see @code{unlink(2)}.
   14792      1.1  mrg 
   14793      1.1  mrg This intrinsic is provided in both subroutine and function forms;
   14794      1.1  mrg however, only one form can be used in any given program unit.
   14795      1.1  mrg 
   14796      1.1  mrg @item @emph{Standard}:
   14797      1.1  mrg GNU extension
   14798      1.1  mrg 
   14799      1.1  mrg @item @emph{Class}:
   14800      1.1  mrg Subroutine, function
   14801      1.1  mrg 
   14802      1.1  mrg @item @emph{Syntax}:
   14803      1.1  mrg @multitable @columnfractions .80
   14804      1.1  mrg @item @code{CALL UNLINK(PATH [, STATUS])}
   14805      1.1  mrg @item @code{STATUS = UNLINK(PATH)}
   14806      1.1  mrg @end multitable
   14807      1.1  mrg 
   14808      1.1  mrg @item @emph{Arguments}:
   14809      1.1  mrg @multitable @columnfractions .15 .70
   14810      1.1  mrg @item @var{PATH} @tab Shall be of default @code{CHARACTER} type.
   14811      1.1  mrg @item @var{STATUS} @tab (Optional) Shall be of default @code{INTEGER} type.
   14812      1.1  mrg @end multitable
   14813      1.1  mrg 
   14814      1.1  mrg @item @emph{See also}:
   14815  1.1.1.2  mrg @ref{LINK}, @gol
   14816  1.1.1.2  mrg @ref{SYMLNK}
   14817      1.1  mrg @end table
   14818      1.1  mrg 
   14819      1.1  mrg 
   14820      1.1  mrg 
   14821      1.1  mrg @node UNPACK
   14822      1.1  mrg @section @code{UNPACK} --- Unpack an array of rank one into an array
   14823      1.1  mrg @fnindex UNPACK
   14824      1.1  mrg @cindex array, unpacking
   14825      1.1  mrg @cindex array, increase dimension
   14826      1.1  mrg @cindex array, scatter elements
   14827      1.1  mrg 
   14828      1.1  mrg @table @asis
   14829      1.1  mrg @item @emph{Description}:
   14830      1.1  mrg Store the elements of @var{VECTOR} in an array of higher rank.
   14831      1.1  mrg 
   14832      1.1  mrg @item @emph{Standard}:
   14833  1.1.1.2  mrg Fortran 90 and later
   14834      1.1  mrg 
   14835      1.1  mrg @item @emph{Class}:
   14836      1.1  mrg Transformational function
   14837      1.1  mrg 
   14838      1.1  mrg @item @emph{Syntax}:
   14839      1.1  mrg @code{RESULT = UNPACK(VECTOR, MASK, FIELD)}
   14840      1.1  mrg 
   14841      1.1  mrg @item @emph{Arguments}:
   14842      1.1  mrg @multitable @columnfractions .15 .70
   14843      1.1  mrg @item @var{VECTOR} @tab Shall be an array of any type and rank one. It 
   14844      1.1  mrg shall have at least as many elements as @var{MASK} has @code{TRUE} values.
   14845      1.1  mrg @item @var{MASK}   @tab Shall be an array of type @code{LOGICAL}.
   14846      1.1  mrg @item @var{FIELD}  @tab Shall be of the same type as @var{VECTOR} and have
   14847      1.1  mrg the same shape as @var{MASK}.
   14848      1.1  mrg @end multitable
   14849      1.1  mrg 
   14850      1.1  mrg @item @emph{Return value}:
   14851      1.1  mrg The resulting array corresponds to @var{FIELD} with @code{TRUE} elements
   14852      1.1  mrg of @var{MASK} replaced by values from @var{VECTOR} in array element order.
   14853      1.1  mrg 
   14854      1.1  mrg @item @emph{Example}:
   14855      1.1  mrg @smallexample
   14856      1.1  mrg PROGRAM test_unpack
   14857      1.1  mrg   integer :: vector(2)  = (/1,1/)
   14858      1.1  mrg   logical :: mask(4)  = (/ .TRUE., .FALSE., .FALSE., .TRUE. /)
   14859      1.1  mrg   integer :: field(2,2) = 0, unity(2,2)
   14860      1.1  mrg 
   14861      1.1  mrg   ! result: unity matrix
   14862      1.1  mrg   unity = unpack(vector, reshape(mask, (/2,2/)), field)
   14863      1.1  mrg END PROGRAM
   14864      1.1  mrg @end smallexample
   14865      1.1  mrg 
   14866      1.1  mrg @item @emph{See also}:
   14867  1.1.1.2  mrg @ref{PACK}, @gol
   14868  1.1.1.2  mrg @ref{SPREAD}
   14869      1.1  mrg @end table
   14870      1.1  mrg 
   14871      1.1  mrg 
   14872      1.1  mrg 
   14873      1.1  mrg @node VERIFY
   14874      1.1  mrg @section @code{VERIFY} --- Scan a string for characters not a given set
   14875      1.1  mrg @fnindex VERIFY
   14876      1.1  mrg @cindex string, find missing set
   14877      1.1  mrg 
   14878      1.1  mrg @table @asis
   14879      1.1  mrg @item @emph{Description}:
   14880      1.1  mrg Verifies that all the characters in @var{STRING} belong to the set of
   14881      1.1  mrg characters in @var{SET}.
   14882      1.1  mrg 
   14883      1.1  mrg If @var{BACK} is either absent or equals @code{FALSE}, this function
   14884      1.1  mrg returns the position of the leftmost character of @var{STRING} that is
   14885      1.1  mrg not in @var{SET}. If @var{BACK} equals @code{TRUE}, the rightmost
   14886      1.1  mrg position is returned. If all characters of @var{STRING} are found in
   14887      1.1  mrg @var{SET}, the result is zero.
   14888      1.1  mrg 
   14889      1.1  mrg @item @emph{Standard}:
   14890  1.1.1.2  mrg Fortran 90 and later, with @var{KIND} argument Fortran 2003 and later
   14891      1.1  mrg 
   14892      1.1  mrg @item @emph{Class}:
   14893      1.1  mrg Elemental function
   14894      1.1  mrg 
   14895      1.1  mrg @item @emph{Syntax}:
   14896      1.1  mrg @code{RESULT = VERIFY(STRING, SET[, BACK [, KIND]])}
   14897      1.1  mrg 
   14898      1.1  mrg @item @emph{Arguments}:
   14899      1.1  mrg @multitable @columnfractions .15 .70
   14900      1.1  mrg @item @var{STRING} @tab Shall be of type @code{CHARACTER}.
   14901      1.1  mrg @item @var{SET}    @tab Shall be of type @code{CHARACTER}.
   14902      1.1  mrg @item @var{BACK}   @tab (Optional) shall be of type @code{LOGICAL}.
   14903      1.1  mrg @item @var{KIND}   @tab (Optional) An @code{INTEGER} initialization
   14904      1.1  mrg expression indicating the kind parameter of the result.
   14905      1.1  mrg @end multitable
   14906      1.1  mrg 
   14907      1.1  mrg @item @emph{Return value}:
   14908      1.1  mrg The return value is of type @code{INTEGER} and of kind @var{KIND}. If
   14909      1.1  mrg @var{KIND} is absent, the return value is of default integer kind.
   14910      1.1  mrg 
   14911      1.1  mrg @item @emph{Example}:
   14912      1.1  mrg @smallexample
   14913      1.1  mrg PROGRAM test_verify
   14914      1.1  mrg   WRITE(*,*) VERIFY("FORTRAN", "AO")           ! 1, found 'F'
   14915      1.1  mrg   WRITE(*,*) VERIFY("FORTRAN", "FOO")          ! 3, found 'R'
   14916      1.1  mrg   WRITE(*,*) VERIFY("FORTRAN", "C++")          ! 1, found 'F'
   14917      1.1  mrg   WRITE(*,*) VERIFY("FORTRAN", "C++", .TRUE.)  ! 7, found 'N'
   14918      1.1  mrg   WRITE(*,*) VERIFY("FORTRAN", "FORTRAN")      ! 0' found none
   14919      1.1  mrg END PROGRAM
   14920      1.1  mrg @end smallexample
   14921      1.1  mrg 
   14922      1.1  mrg @item @emph{See also}:
   14923  1.1.1.2  mrg @ref{SCAN}, @gol
   14924  1.1.1.2  mrg @ref{INDEX intrinsic}
   14925      1.1  mrg @end table
   14926      1.1  mrg 
   14927      1.1  mrg 
   14928      1.1  mrg 
   14929      1.1  mrg @node XOR
   14930      1.1  mrg @section @code{XOR} --- Bitwise logical exclusive OR
   14931      1.1  mrg @fnindex XOR
   14932      1.1  mrg @cindex bitwise logical exclusive or
   14933      1.1  mrg @cindex logical exclusive or, bitwise
   14934      1.1  mrg 
   14935      1.1  mrg @table @asis
   14936      1.1  mrg @item @emph{Description}:
   14937      1.1  mrg Bitwise logical exclusive or. 
   14938      1.1  mrg 
   14939      1.1  mrg This intrinsic routine is provided for backwards compatibility with 
   14940      1.1  mrg GNU Fortran 77.  For integer arguments, programmers should consider
   14941      1.1  mrg the use of the @ref{IEOR} intrinsic and for logical arguments the
   14942      1.1  mrg @code{.NEQV.} operator, which are both defined by the Fortran standard.
   14943      1.1  mrg 
   14944      1.1  mrg @item @emph{Standard}:
   14945      1.1  mrg GNU extension
   14946      1.1  mrg 
   14947      1.1  mrg @item @emph{Class}:
   14948      1.1  mrg Function
   14949      1.1  mrg 
   14950      1.1  mrg @item @emph{Syntax}:
   14951      1.1  mrg @code{RESULT = XOR(I, J)}
   14952      1.1  mrg 
   14953      1.1  mrg @item @emph{Arguments}:
   14954      1.1  mrg @multitable @columnfractions .15 .70
   14955      1.1  mrg @item @var{I} @tab The type shall be either a scalar @code{INTEGER}
   14956      1.1  mrg type or a scalar @code{LOGICAL} type or a boz-literal-constant.
   14957      1.1  mrg @item @var{J} @tab The type shall be the same as the type of @var{I} or
   14958      1.1  mrg a boz-literal-constant. @var{I} and @var{J} shall not both be
   14959      1.1  mrg boz-literal-constants.  If either @var{I} and @var{J} is a
   14960      1.1  mrg boz-literal-constant, then the other argument must be a scalar @code{INTEGER}.
   14961      1.1  mrg @end multitable
   14962      1.1  mrg 
   14963      1.1  mrg @item @emph{Return value}:
   14964      1.1  mrg The return type is either a scalar @code{INTEGER} or a scalar
   14965      1.1  mrg @code{LOGICAL}.  If the kind type parameters differ, then the
   14966      1.1  mrg smaller kind type is implicitly converted to larger kind, and the 
   14967      1.1  mrg return has the larger kind.  A boz-literal-constant is 
   14968      1.1  mrg converted to an @code{INTEGER} with the kind type parameter of
   14969      1.1  mrg the other argument as-if a call to @ref{INT} occurred.
   14970      1.1  mrg 
   14971      1.1  mrg @item @emph{Example}:
   14972      1.1  mrg @smallexample
   14973      1.1  mrg PROGRAM test_xor
   14974      1.1  mrg   LOGICAL :: T = .TRUE., F = .FALSE.
   14975      1.1  mrg   INTEGER :: a, b
   14976      1.1  mrg   DATA a / Z'F' /, b / Z'3' /
   14977      1.1  mrg 
   14978      1.1  mrg   WRITE (*,*) XOR(T, T), XOR(T, F), XOR(F, T), XOR(F, F)
   14979      1.1  mrg   WRITE (*,*) XOR(a, b)
   14980      1.1  mrg END PROGRAM
   14981      1.1  mrg @end smallexample
   14982      1.1  mrg 
   14983      1.1  mrg @item @emph{See also}:
   14984  1.1.1.2  mrg Fortran 95 elemental function: @gol
   14985  1.1.1.2  mrg @ref{IEOR}
   14986      1.1  mrg @end table
   14987      1.1  mrg 
   14988      1.1  mrg 
   14989      1.1  mrg 
   14990      1.1  mrg @node Intrinsic Modules
   14991      1.1  mrg @chapter Intrinsic Modules
   14992      1.1  mrg @cindex intrinsic Modules
   14993      1.1  mrg 
   14994      1.1  mrg @menu
   14995      1.1  mrg * ISO_FORTRAN_ENV::
   14996      1.1  mrg * ISO_C_BINDING::
   14997      1.1  mrg * IEEE modules::
   14998      1.1  mrg * OpenMP Modules OMP_LIB and OMP_LIB_KINDS::
   14999      1.1  mrg * OpenACC Module OPENACC::
   15000      1.1  mrg @end menu
   15001      1.1  mrg 
   15002      1.1  mrg @node ISO_FORTRAN_ENV
   15003      1.1  mrg @section @code{ISO_FORTRAN_ENV}
   15004      1.1  mrg @table @asis
   15005      1.1  mrg @item @emph{Standard}:
   15006      1.1  mrg Fortran 2003 and later, except when otherwise noted
   15007      1.1  mrg @end table
   15008      1.1  mrg 
   15009      1.1  mrg The @code{ISO_FORTRAN_ENV} module provides the following scalar default-integer
   15010      1.1  mrg named constants:
   15011      1.1  mrg 
   15012      1.1  mrg @table @asis
   15013      1.1  mrg @item @code{ATOMIC_INT_KIND}:
   15014      1.1  mrg Default-kind integer constant to be used as kind parameter when defining
   15015      1.1  mrg integer variables used in atomic operations. (Fortran 2008 or later.)
   15016      1.1  mrg 
   15017      1.1  mrg @item @code{ATOMIC_LOGICAL_KIND}:
   15018      1.1  mrg Default-kind integer constant to be used as kind parameter when defining
   15019      1.1  mrg logical variables used in atomic operations. (Fortran 2008 or later.)
   15020      1.1  mrg 
   15021      1.1  mrg @item @code{CHARACTER_KINDS}:
   15022      1.1  mrg Default-kind integer constant array of rank one containing the supported kind
   15023      1.1  mrg parameters of the @code{CHARACTER} type. (Fortran 2008 or later.)
   15024      1.1  mrg 
   15025      1.1  mrg @item @code{CHARACTER_STORAGE_SIZE}:
   15026      1.1  mrg Size in bits of the character storage unit.
   15027      1.1  mrg 
   15028      1.1  mrg @item @code{ERROR_UNIT}:
   15029      1.1  mrg Identifies the preconnected unit used for error reporting.
   15030      1.1  mrg 
   15031      1.1  mrg @item @code{FILE_STORAGE_SIZE}:
   15032      1.1  mrg Size in bits of the file-storage unit.
   15033      1.1  mrg 
   15034      1.1  mrg @item @code{INPUT_UNIT}:
   15035      1.1  mrg Identifies the preconnected unit identified by the asterisk
   15036      1.1  mrg (@code{*}) in @code{READ} statement.
   15037      1.1  mrg 
   15038      1.1  mrg @item @code{INT8}, @code{INT16}, @code{INT32}, @code{INT64}:
   15039      1.1  mrg Kind type parameters to specify an INTEGER type with a storage
   15040      1.1  mrg size of 16, 32, and 64 bits. It is negative if a target platform
   15041      1.1  mrg does not support the particular kind. (Fortran 2008 or later.)
   15042      1.1  mrg 
   15043      1.1  mrg @item @code{INTEGER_KINDS}:
   15044      1.1  mrg Default-kind integer constant array of rank one containing the supported kind
   15045      1.1  mrg parameters of the @code{INTEGER} type. (Fortran 2008 or later.)
   15046      1.1  mrg 
   15047      1.1  mrg @item @code{IOSTAT_END}:
   15048      1.1  mrg The value assigned to the variable passed to the @code{IOSTAT=} specifier of
   15049      1.1  mrg an input/output statement if an end-of-file condition occurred.
   15050      1.1  mrg 
   15051      1.1  mrg @item @code{IOSTAT_EOR}:
   15052      1.1  mrg The value assigned to the variable passed to the @code{IOSTAT=} specifier of
   15053      1.1  mrg an input/output statement if an end-of-record condition occurred.
   15054      1.1  mrg 
   15055      1.1  mrg @item @code{IOSTAT_INQUIRE_INTERNAL_UNIT}:
   15056      1.1  mrg Scalar default-integer constant, used by @code{INQUIRE} for the
   15057      1.1  mrg @code{IOSTAT=} specifier to denote an that a unit number identifies an
   15058      1.1  mrg internal unit. (Fortran 2008 or later.)
   15059      1.1  mrg 
   15060      1.1  mrg @item @code{NUMERIC_STORAGE_SIZE}:
   15061      1.1  mrg The size in bits of the numeric storage unit.
   15062      1.1  mrg 
   15063      1.1  mrg @item @code{LOGICAL_KINDS}:
   15064      1.1  mrg Default-kind integer constant array of rank one containing the supported kind
   15065      1.1  mrg parameters of the @code{LOGICAL} type. (Fortran 2008 or later.)
   15066      1.1  mrg 
   15067      1.1  mrg @item @code{OUTPUT_UNIT}:
   15068      1.1  mrg Identifies the preconnected unit identified by the asterisk
   15069      1.1  mrg (@code{*}) in @code{WRITE} statement.
   15070      1.1  mrg 
   15071      1.1  mrg @item @code{REAL32}, @code{REAL64}, @code{REAL128}:
   15072      1.1  mrg Kind type parameters to specify a REAL type with a storage
   15073      1.1  mrg size of 32, 64, and 128 bits. It is negative if a target platform
   15074      1.1  mrg does not support the particular kind. (Fortran 2008 or later.)
   15075      1.1  mrg 
   15076      1.1  mrg @item @code{REAL_KINDS}:
   15077      1.1  mrg Default-kind integer constant array of rank one containing the supported kind
   15078      1.1  mrg parameters of the @code{REAL} type. (Fortran 2008 or later.)
   15079      1.1  mrg 
   15080      1.1  mrg @item @code{STAT_LOCKED}:
   15081      1.1  mrg Scalar default-integer constant used as STAT= return value by @code{LOCK} to
   15082      1.1  mrg denote that the lock variable is locked by the executing image. (Fortran 2008
   15083      1.1  mrg or later.)
   15084      1.1  mrg 
   15085      1.1  mrg @item @code{STAT_LOCKED_OTHER_IMAGE}:
   15086      1.1  mrg Scalar default-integer constant used as STAT= return value by @code{UNLOCK} to
   15087      1.1  mrg denote that the lock variable is locked by another image. (Fortran 2008 or
   15088      1.1  mrg later.)
   15089      1.1  mrg 
   15090      1.1  mrg @item @code{STAT_STOPPED_IMAGE}:
   15091      1.1  mrg Positive, scalar default-integer constant used as STAT= return value if the
   15092      1.1  mrg argument in the statement requires synchronisation with an image, which has
   15093      1.1  mrg initiated the termination of the execution. (Fortran 2008 or later.)
   15094      1.1  mrg 
   15095      1.1  mrg @item @code{STAT_FAILED_IMAGE}:
   15096      1.1  mrg Positive, scalar default-integer constant used as STAT= return value if the
   15097      1.1  mrg argument in the statement requires communication with an image, which has
   15098      1.1  mrg is in the failed state. (TS 18508 or later.)
   15099      1.1  mrg 
   15100      1.1  mrg @item @code{STAT_UNLOCKED}:
   15101      1.1  mrg Scalar default-integer constant used as STAT= return value by @code{UNLOCK} to
   15102      1.1  mrg denote that the lock variable is unlocked. (Fortran 2008 or later.)
   15103      1.1  mrg @end table
   15104      1.1  mrg 
   15105      1.1  mrg The module provides the following derived type:
   15106      1.1  mrg 
   15107      1.1  mrg @table @asis
   15108      1.1  mrg @item @code{LOCK_TYPE}:
   15109      1.1  mrg Derived type with private components to be use with the @code{LOCK} and
   15110      1.1  mrg @code{UNLOCK} statement. A variable of its type has to be always declared
   15111      1.1  mrg as coarray and may not appear in a variable-definition context.
   15112      1.1  mrg (Fortran 2008 or later.)
   15113      1.1  mrg @end table
   15114      1.1  mrg 
   15115      1.1  mrg The module also provides the following intrinsic procedures:
   15116      1.1  mrg @ref{COMPILER_OPTIONS} and @ref{COMPILER_VERSION}.
   15117      1.1  mrg 
   15118      1.1  mrg 
   15119      1.1  mrg 
   15120      1.1  mrg @node ISO_C_BINDING
   15121      1.1  mrg @section @code{ISO_C_BINDING}
   15122      1.1  mrg @table @asis
   15123      1.1  mrg @item @emph{Standard}:
   15124      1.1  mrg Fortran 2003 and later, GNU extensions
   15125      1.1  mrg @end table
   15126      1.1  mrg 
   15127      1.1  mrg The following intrinsic procedures are provided by the module; their
   15128      1.1  mrg definition can be found in the section Intrinsic Procedures of this
   15129      1.1  mrg manual.
   15130      1.1  mrg 
   15131      1.1  mrg @table @asis
   15132      1.1  mrg @item @code{C_ASSOCIATED}
   15133      1.1  mrg @item @code{C_F_POINTER}
   15134      1.1  mrg @item @code{C_F_PROCPOINTER}
   15135      1.1  mrg @item @code{C_FUNLOC}
   15136      1.1  mrg @item @code{C_LOC}
   15137      1.1  mrg @item @code{C_SIZEOF}
   15138      1.1  mrg @end table
   15139      1.1  mrg @c TODO: Vertical spacing between C_FUNLOC and C_LOC wrong in PDF,
   15140      1.1  mrg @c don't really know why.
   15141      1.1  mrg 
   15142      1.1  mrg The @code{ISO_C_BINDING} module provides the following named constants of
   15143      1.1  mrg type default integer, which can be used as KIND type parameters.
   15144      1.1  mrg 
   15145      1.1  mrg In addition to the integer named constants required by the Fortran 2003 
   15146      1.1  mrg standard and @code{C_PTRDIFF_T} of TS 29113, GNU Fortran provides as an
   15147      1.1  mrg extension named constants for the 128-bit integer types supported by the
   15148      1.1  mrg C compiler: @code{C_INT128_T, C_INT_LEAST128_T, C_INT_FAST128_T}.
   15149  1.1.1.3  mrg Furthermore, if @code{_Float128} is supported in C, the named constants
   15150  1.1.1.3  mrg @code{C_FLOAT128} and @code{C_FLOAT128_COMPLEX} are defined.
   15151      1.1  mrg 
   15152  1.1.1.3  mrg @multitable @columnfractions .19 .32 .34 .15
   15153  1.1.1.3  mrg @headitem Fortran Type  @tab Named constant         @tab C type                                @tab Extension
   15154      1.1  mrg @item @code{INTEGER}@tab @code{C_INT}           @tab @code{int}
   15155      1.1  mrg @item @code{INTEGER}@tab @code{C_SHORT}         @tab @code{short int}
   15156      1.1  mrg @item @code{INTEGER}@tab @code{C_LONG}          @tab @code{long int}
   15157      1.1  mrg @item @code{INTEGER}@tab @code{C_LONG_LONG}     @tab @code{long long int}
   15158      1.1  mrg @item @code{INTEGER}@tab @code{C_SIGNED_CHAR}   @tab @code{signed char}/@code{unsigned char}
   15159      1.1  mrg @item @code{INTEGER}@tab @code{C_SIZE_T}        @tab @code{size_t}
   15160      1.1  mrg @item @code{INTEGER}@tab @code{C_INT8_T}        @tab @code{int8_t}
   15161      1.1  mrg @item @code{INTEGER}@tab @code{C_INT16_T}       @tab @code{int16_t}
   15162      1.1  mrg @item @code{INTEGER}@tab @code{C_INT32_T}       @tab @code{int32_t}
   15163      1.1  mrg @item @code{INTEGER}@tab @code{C_INT64_T}       @tab @code{int64_t}
   15164      1.1  mrg @item @code{INTEGER}@tab @code{C_INT128_T}      @tab @code{int128_t}                      @tab Ext.
   15165      1.1  mrg @item @code{INTEGER}@tab @code{C_INT_LEAST8_T}  @tab @code{int_least8_t}
   15166      1.1  mrg @item @code{INTEGER}@tab @code{C_INT_LEAST16_T} @tab @code{int_least16_t}
   15167      1.1  mrg @item @code{INTEGER}@tab @code{C_INT_LEAST32_T} @tab @code{int_least32_t}
   15168      1.1  mrg @item @code{INTEGER}@tab @code{C_INT_LEAST64_T} @tab @code{int_least64_t}
   15169      1.1  mrg @item @code{INTEGER}@tab @code{C_INT_LEAST128_T}@tab @code{int_least128_t}                @tab Ext.
   15170      1.1  mrg @item @code{INTEGER}@tab @code{C_INT_FAST8_T}   @tab @code{int_fast8_t}
   15171      1.1  mrg @item @code{INTEGER}@tab @code{C_INT_FAST16_T}  @tab @code{int_fast16_t}
   15172      1.1  mrg @item @code{INTEGER}@tab @code{C_INT_FAST32_T}  @tab @code{int_fast32_t}
   15173      1.1  mrg @item @code{INTEGER}@tab @code{C_INT_FAST64_T}  @tab @code{int_fast64_t}
   15174      1.1  mrg @item @code{INTEGER}@tab @code{C_INT_FAST128_T} @tab @code{int_fast128_t}                 @tab Ext.
   15175      1.1  mrg @item @code{INTEGER}@tab @code{C_INTMAX_T}      @tab @code{intmax_t}
   15176      1.1  mrg @item @code{INTEGER}@tab @code{C_INTPTR_T}      @tab @code{intptr_t}
   15177      1.1  mrg @item @code{INTEGER}@tab @code{C_PTRDIFF_T}     @tab @code{ptrdiff_t}                     @tab TS 29113
   15178      1.1  mrg @item @code{REAL}   @tab @code{C_FLOAT}         @tab @code{float}
   15179      1.1  mrg @item @code{REAL}   @tab @code{C_DOUBLE}        @tab @code{double}
   15180      1.1  mrg @item @code{REAL}   @tab @code{C_LONG_DOUBLE}   @tab @code{long double}
   15181  1.1.1.3  mrg @item @code{REAL}   @tab @code{C_FLOAT128}      @tab @code{_Float128}                    @tab Ext.
   15182      1.1  mrg @item @code{COMPLEX}@tab @code{C_FLOAT_COMPLEX} @tab @code{float _Complex}
   15183      1.1  mrg @item @code{COMPLEX}@tab @code{C_DOUBLE_COMPLEX}@tab @code{double _Complex}
   15184      1.1  mrg @item @code{COMPLEX}@tab @code{C_LONG_DOUBLE_COMPLEX}@tab @code{long double _Complex}
   15185  1.1.1.3  mrg @item @code{COMPLEX}@tab @code{C_FLOAT128_COMPLEX}   @tab @code{_Float128 _Complex}      @tab Ext.
   15186      1.1  mrg @item @code{LOGICAL}@tab @code{C_BOOL}          @tab @code{_Bool}
   15187      1.1  mrg @item @code{CHARACTER}@tab @code{C_CHAR}        @tab @code{char}
   15188      1.1  mrg @end multitable
   15189      1.1  mrg 
   15190      1.1  mrg Additionally, the following parameters of type @code{CHARACTER(KIND=C_CHAR)}
   15191      1.1  mrg are defined.
   15192      1.1  mrg 
   15193      1.1  mrg @multitable @columnfractions .20 .45 .15
   15194  1.1.1.3  mrg @headitem Name                     @tab C definition    @tab Value
   15195      1.1  mrg @item @code{C_NULL_CHAR}       @tab null character  @tab @code{'\0'}
   15196      1.1  mrg @item @code{C_ALERT}           @tab alert           @tab @code{'\a'}
   15197      1.1  mrg @item @code{C_BACKSPACE}       @tab backspace       @tab @code{'\b'}
   15198      1.1  mrg @item @code{C_FORM_FEED}       @tab form feed       @tab @code{'\f'}
   15199      1.1  mrg @item @code{C_NEW_LINE}        @tab new line        @tab @code{'\n'}
   15200      1.1  mrg @item @code{C_CARRIAGE_RETURN} @tab carriage return @tab @code{'\r'}
   15201      1.1  mrg @item @code{C_HORIZONTAL_TAB}  @tab horizontal tab  @tab @code{'\t'}
   15202      1.1  mrg @item @code{C_VERTICAL_TAB}    @tab vertical tab    @tab @code{'\v'}
   15203      1.1  mrg @end multitable
   15204      1.1  mrg 
   15205      1.1  mrg Moreover, the following two named constants are defined:
   15206      1.1  mrg 
   15207      1.1  mrg @multitable @columnfractions .20 .80
   15208  1.1.1.3  mrg @headitem Name                 @tab Type
   15209      1.1  mrg @item @code{C_NULL_PTR}    @tab @code{C_PTR}
   15210      1.1  mrg @item @code{C_NULL_FUNPTR} @tab @code{C_FUNPTR}
   15211      1.1  mrg @end multitable
   15212      1.1  mrg 
   15213      1.1  mrg Both are equivalent to the value @code{NULL} in C.
   15214      1.1  mrg 
   15215      1.1  mrg 
   15216      1.1  mrg 
   15217      1.1  mrg @node IEEE modules
   15218      1.1  mrg @section IEEE modules: @code{IEEE_EXCEPTIONS}, @code{IEEE_ARITHMETIC}, and @code{IEEE_FEATURES}
   15219      1.1  mrg @table @asis
   15220      1.1  mrg @item @emph{Standard}:
   15221      1.1  mrg Fortran 2003 and later
   15222      1.1  mrg @end table
   15223      1.1  mrg 
   15224      1.1  mrg The @code{IEEE_EXCEPTIONS}, @code{IEEE_ARITHMETIC}, and @code{IEEE_FEATURES}
   15225      1.1  mrg intrinsic modules provide support for exceptions and IEEE arithmetic, as
   15226      1.1  mrg defined in Fortran 2003 and later standards, and the IEC 60559:1989 standard
   15227      1.1  mrg (@emph{Binary floating-point arithmetic for microprocessor systems}). These
   15228      1.1  mrg modules are only provided on the following supported platforms:
   15229      1.1  mrg 
   15230      1.1  mrg @itemize @bullet
   15231      1.1  mrg @item i386 and x86_64 processors
   15232      1.1  mrg @item platforms which use the GNU C Library (glibc)
   15233      1.1  mrg @item platforms with support for SysV/386 routines for floating point
   15234      1.1  mrg interface (including Solaris and BSDs)
   15235      1.1  mrg @item platforms with the AIX OS
   15236      1.1  mrg @end itemize
   15237      1.1  mrg 
   15238      1.1  mrg For full compliance with the Fortran standards, code using the
   15239      1.1  mrg @code{IEEE_EXCEPTIONS} or @code{IEEE_ARITHMETIC} modules should be compiled
   15240      1.1  mrg with the following options: @code{-fno-unsafe-math-optimizations
   15241      1.1  mrg -frounding-math -fsignaling-nans}.
   15242      1.1  mrg 
   15243      1.1  mrg 
   15244      1.1  mrg 
   15245      1.1  mrg @node OpenMP Modules OMP_LIB and OMP_LIB_KINDS
   15246      1.1  mrg @section OpenMP Modules @code{OMP_LIB} and @code{OMP_LIB_KINDS}
   15247      1.1  mrg @table @asis
   15248      1.1  mrg @item @emph{Standard}:
   15249  1.1.1.3  mrg OpenMP Application Program Interface v4.5,
   15250  1.1.1.3  mrg OpenMP Application Program Interface v5.0 (partially supported) and
   15251  1.1.1.3  mrg OpenMP Application Program Interface v5.1 (partially supported).
   15252      1.1  mrg @end table
   15253      1.1  mrg 
   15254      1.1  mrg The OpenMP Fortran runtime library routines are provided both in
   15255  1.1.1.3  mrg a form of two Fortran modules, named @code{OMP_LIB} and
   15256      1.1  mrg @code{OMP_LIB_KINDS}, and in a form of a Fortran @code{include} file named
   15257      1.1  mrg @file{omp_lib.h}. The procedures provided by @code{OMP_LIB} can be found
   15258      1.1  mrg in the @ref{Top,,Introduction,libgomp,GNU Offloading and Multi
   15259      1.1  mrg Processing Runtime Library} manual,
   15260      1.1  mrg the named constants defined in the modules are listed
   15261      1.1  mrg below.
   15262      1.1  mrg 
   15263      1.1  mrg For details refer to the actual
   15264  1.1.1.3  mrg @uref{https://www.openmp.org/wp-content/uploads/openmp-4.5.pdf,
   15265  1.1.1.3  mrg OpenMP Application Program Interface v4.5} and
   15266  1.1.1.3  mrg @uref{https://www.openmp.org/wp-content/uploads/OpenMP-API-Specification-5.0.pdf,
   15267  1.1.1.3  mrg OpenMP Application Program Interface v5.0}.
   15268      1.1  mrg 
   15269      1.1  mrg @code{OMP_LIB_KINDS} provides the following scalar default-integer
   15270      1.1  mrg named constants:
   15271      1.1  mrg 
   15272      1.1  mrg @table @asis
   15273  1.1.1.3  mrg @item @code{omp_allocator_handle_kind}
   15274  1.1.1.3  mrg @item @code{omp_alloctrait_key_kind}
   15275  1.1.1.3  mrg @item @code{omp_alloctrait_val_kind}
   15276  1.1.1.3  mrg @item @code{omp_depend_kind}
   15277      1.1  mrg @item @code{omp_lock_kind}
   15278      1.1  mrg @item @code{omp_lock_hint_kind}
   15279      1.1  mrg @item @code{omp_nest_lock_kind}
   15280      1.1  mrg @item @code{omp_pause_resource_kind}
   15281  1.1.1.3  mrg @item @code{omp_memspace_handle_kind}
   15282      1.1  mrg @item @code{omp_proc_bind_kind}
   15283      1.1  mrg @item @code{omp_sched_kind}
   15284  1.1.1.3  mrg @item @code{omp_sync_hint_kind}
   15285      1.1  mrg @end table
   15286      1.1  mrg 
   15287      1.1  mrg @code{OMP_LIB} provides the scalar default-integer
   15288      1.1  mrg named constant @code{openmp_version} with a value of the form
   15289      1.1  mrg @var{yyyymm}, where @code{yyyy} is the year and @var{mm} the month
   15290      1.1  mrg of the OpenMP version; for OpenMP v4.5 the value is @code{201511}.
   15291      1.1  mrg 
   15292  1.1.1.3  mrg The following derived type:
   15293  1.1.1.3  mrg 
   15294  1.1.1.3  mrg @table @asis
   15295  1.1.1.3  mrg @item @code{omp_alloctrait}
   15296  1.1.1.3  mrg @end table
   15297  1.1.1.3  mrg 
   15298      1.1  mrg The following scalar integer named constants of the
   15299      1.1  mrg kind @code{omp_sched_kind}:
   15300      1.1  mrg 
   15301      1.1  mrg @table @asis
   15302      1.1  mrg @item @code{omp_sched_static}
   15303      1.1  mrg @item @code{omp_sched_dynamic}
   15304      1.1  mrg @item @code{omp_sched_guided}
   15305      1.1  mrg @item @code{omp_sched_auto}
   15306      1.1  mrg @end table
   15307      1.1  mrg 
   15308  1.1.1.3  mrg And the following scalar integer named constants of the
   15309      1.1  mrg kind @code{omp_proc_bind_kind}:
   15310      1.1  mrg 
   15311      1.1  mrg @table @asis
   15312      1.1  mrg @item @code{omp_proc_bind_false}
   15313      1.1  mrg @item @code{omp_proc_bind_true}
   15314  1.1.1.3  mrg @item @code{omp_proc_bind_primary}
   15315      1.1  mrg @item @code{omp_proc_bind_master}
   15316      1.1  mrg @item @code{omp_proc_bind_close}
   15317      1.1  mrg @item @code{omp_proc_bind_spread}
   15318      1.1  mrg @end table
   15319      1.1  mrg 
   15320      1.1  mrg The following scalar integer named constants are of the
   15321      1.1  mrg kind @code{omp_lock_hint_kind}:
   15322      1.1  mrg 
   15323      1.1  mrg @table @asis
   15324      1.1  mrg @item @code{omp_lock_hint_none}
   15325      1.1  mrg @item @code{omp_lock_hint_uncontended}
   15326      1.1  mrg @item @code{omp_lock_hint_contended}
   15327      1.1  mrg @item @code{omp_lock_hint_nonspeculative}
   15328      1.1  mrg @item @code{omp_lock_hint_speculative}
   15329  1.1.1.3  mrg @item @code{omp_sync_hint_none}
   15330  1.1.1.3  mrg @item @code{omp_sync_hint_uncontended}
   15331  1.1.1.3  mrg @item @code{omp_sync_hint_contended}
   15332  1.1.1.3  mrg @item @code{omp_sync_hint_nonspeculative}
   15333  1.1.1.3  mrg @item @code{omp_sync_hint_speculative}
   15334      1.1  mrg @end table
   15335      1.1  mrg 
   15336      1.1  mrg And the following two scalar integer named constants are of the
   15337      1.1  mrg kind @code{omp_pause_resource_kind}:
   15338      1.1  mrg 
   15339      1.1  mrg @table @asis
   15340      1.1  mrg @item @code{omp_pause_soft}
   15341      1.1  mrg @item @code{omp_pause_hard}
   15342      1.1  mrg @end table
   15343      1.1  mrg 
   15344  1.1.1.3  mrg The following scalar integer named constants are of the kind
   15345  1.1.1.3  mrg @code{omp_alloctrait_key_kind}:
   15346  1.1.1.3  mrg 
   15347  1.1.1.3  mrg @table @asis
   15348  1.1.1.3  mrg @item @code{omp_atk_sync_hint}
   15349  1.1.1.3  mrg @item @code{omp_atk_alignment}
   15350  1.1.1.3  mrg @item @code{omp_atk_access}
   15351  1.1.1.3  mrg @item @code{omp_atk_pool_size}
   15352  1.1.1.3  mrg @item @code{omp_atk_fallback}
   15353  1.1.1.3  mrg @item @code{omp_atk_fb_data}
   15354  1.1.1.3  mrg @item @code{omp_atk_pinned}
   15355  1.1.1.3  mrg @item @code{omp_atk_partition}
   15356  1.1.1.3  mrg @end table
   15357  1.1.1.3  mrg 
   15358  1.1.1.3  mrg The following scalar integer named constants are of the kind
   15359  1.1.1.3  mrg @code{omp_alloctrait_val_kind}:
   15360  1.1.1.3  mrg 
   15361  1.1.1.3  mrg @table @asis
   15362  1.1.1.3  mrg @code{omp_alloctrait_key_kind}:
   15363  1.1.1.3  mrg @item @code{omp_atv_default}
   15364  1.1.1.3  mrg @item @code{omp_atv_false}
   15365  1.1.1.3  mrg @item @code{omp_atv_true}
   15366  1.1.1.3  mrg @item @code{omp_atv_contended}
   15367  1.1.1.3  mrg @item @code{omp_atv_uncontended}
   15368  1.1.1.3  mrg @item @code{omp_atv_serialized}
   15369  1.1.1.3  mrg @item @code{omp_atv_sequential}
   15370  1.1.1.3  mrg @item @code{omp_atv_private}
   15371  1.1.1.3  mrg @item @code{omp_atv_all}
   15372  1.1.1.3  mrg @item @code{omp_atv_thread}
   15373  1.1.1.3  mrg @item @code{omp_atv_pteam}
   15374  1.1.1.3  mrg @item @code{omp_atv_cgroup}
   15375  1.1.1.3  mrg @item @code{omp_atv_default_mem_fb}
   15376  1.1.1.3  mrg @item @code{omp_atv_null_fb}
   15377  1.1.1.3  mrg @item @code{omp_atv_abort_fb}
   15378  1.1.1.3  mrg @item @code{omp_atv_allocator_fb}
   15379  1.1.1.3  mrg @item @code{omp_atv_environment}
   15380  1.1.1.3  mrg @item @code{omp_atv_nearest}
   15381  1.1.1.3  mrg @item @code{omp_atv_blocked}
   15382  1.1.1.3  mrg @end table
   15383  1.1.1.3  mrg 
   15384  1.1.1.3  mrg The following scalar integer named constants are of the kind
   15385  1.1.1.3  mrg @code{omp_allocator_handle_kind}:
   15386  1.1.1.3  mrg 
   15387  1.1.1.3  mrg @table @asis
   15388  1.1.1.3  mrg @item @code{omp_null_allocator}
   15389  1.1.1.3  mrg @item @code{omp_default_mem_alloc}
   15390  1.1.1.3  mrg @item @code{omp_large_cap_mem_alloc}
   15391  1.1.1.3  mrg @item @code{omp_const_mem_alloc}
   15392  1.1.1.3  mrg @item @code{omp_high_bw_mem_alloc}
   15393  1.1.1.3  mrg @item @code{omp_low_lat_mem_alloc}
   15394  1.1.1.3  mrg @item @code{omp_cgroup_mem_alloc}
   15395  1.1.1.3  mrg @item @code{omp_pteam_mem_alloc}
   15396  1.1.1.3  mrg @item @code{omp_thread_mem_alloc}
   15397  1.1.1.3  mrg @end table
   15398  1.1.1.3  mrg 
   15399  1.1.1.3  mrg The following scalar integer named constants are of the kind
   15400  1.1.1.3  mrg @code{omp_memspace_handle_kind}:
   15401  1.1.1.3  mrg 
   15402  1.1.1.3  mrg @table @asis
   15403  1.1.1.3  mrg @item @code{omp_default_mem_space}
   15404  1.1.1.3  mrg @item @code{omp_large_cap_mem_space}
   15405  1.1.1.3  mrg @item @code{omp_const_mem_space}
   15406  1.1.1.3  mrg @item @code{omp_high_bw_mem_space}
   15407  1.1.1.3  mrg @item @code{omp_low_lat_mem_space}
   15408  1.1.1.3  mrg @end table
   15409  1.1.1.3  mrg 
   15410  1.1.1.3  mrg 
   15411      1.1  mrg 
   15412      1.1  mrg @node OpenACC Module OPENACC
   15413      1.1  mrg @section OpenACC Module @code{OPENACC}
   15414      1.1  mrg @table @asis
   15415      1.1  mrg @item @emph{Standard}:
   15416  1.1.1.2  mrg OpenACC Application Programming Interface v2.6
   15417      1.1  mrg @end table
   15418      1.1  mrg 
   15419      1.1  mrg 
   15420      1.1  mrg The OpenACC Fortran runtime library routines are provided both in a
   15421      1.1  mrg form of a Fortran 90 module, named @code{OPENACC}, and in form of a
   15422      1.1  mrg Fortran @code{include} file named @file{openacc_lib.h}.  The
   15423      1.1  mrg procedures provided by @code{OPENACC} can be found in the
   15424      1.1  mrg @ref{Top,,Introduction,libgomp,GNU Offloading and Multi Processing
   15425      1.1  mrg Runtime Library} manual, the named constants defined in the modules
   15426      1.1  mrg are listed below.
   15427      1.1  mrg 
   15428      1.1  mrg For details refer to the actual
   15429  1.1.1.3  mrg @uref{https://www.openacc.org/,
   15430  1.1.1.2  mrg OpenACC Application Programming Interface v2.6}.
   15431      1.1  mrg 
   15432      1.1  mrg @code{OPENACC} provides the scalar default-integer
   15433      1.1  mrg named constant @code{openacc_version} with a value of the form
   15434      1.1  mrg @var{yyyymm}, where @code{yyyy} is the year and @var{mm} the month
   15435  1.1.1.2  mrg of the OpenACC version; for OpenACC v2.6 the value is @code{201711}.
   15436