HP OpenVMS Systems Documentation |
HP Fortran for OpenVMS
|
Previous | Contents | Index |
Description: | Returns the number of significant binary digits for numbers of the same type and kind parameters as the argument. | ||
Class: | Inquiry function; Generic | ||
Arguments: | X must be of type integer or real; it can be scalar or array valued. | ||
Results: |
The result is a scalar of type default integer.
The result has the value q if X is of type integer; it has the value p if X is of type real. Integer parameter q is defined in Section D.1; real parameter p is defined in Section D.2. |
Examples
If X is of type REAL(4), DIGITS (X) has the value 24.
9.4.41 DIM (X, Y)
Description: | Returns the difference between two numbers (if the difference is positive). | ||
Class: | Elemental function; Generic | ||
Arguments: | X | Must be of type integer or real. | |
Y | Must have the same type and kind parameters as X. | ||
Results: | The result type is the same as X. The value of the result is X - Y if X is greater than Y; otherwise, the value of the result is zero. |
Specific Name | Argument Type | Result Type |
---|---|---|
INTEGER(1) | INTEGER(1) | |
IIDIM | INTEGER(2) | INTEGER(2) |
IDIM 1 | INTEGER(4) | INTEGER(4) |
KIDIM | INTEGER(8) | INTEGER(8) |
DIM | REAL(4) | REAL(4) |
DDIM | REAL(8) | REAL(8) |
QDIM | REAL(16) | REAL(16) |
Examples
DIM (6, 2) has the value 4.
DIM (--4.0, 3.0) has the value 0.0.
9.4.42 DOT_PRODUCT (VECTOR_A, VECTOR_B)
Description: | Performs dot-product multiplication of numeric or logical vectors (rank-one arrays). | ||
Class: | Transformational function; Generic | ||
Arguments: | VECTOR_A | Must be a rank-one array of numeric (integer, real, or complex) or logical type. | |
VECTOR_B | Must be a rank-one array of numeric type if VECTOR_A is of numeric type, or of logical type if VECTOR_A is of logical type. It must be the same size as VECTOR_A. | ||
Results: |
The result is a scalar whose type depends on the types of VECTOR_A and
VECTOR_B.
If VECTOR_A is of type integer or real, the result value is SUM (VECTOR_A*VECTOR_B). If VECTOR_A is of type complex, the result value is SUM (CONJG (VECTOR_A)*VECTOR_B). If VECTOR_A is of type logical, the result has the value ANY (VECTOR_A .AND. VECTOR_B). If either rank-one array has size zero, the result is zero if the array is of numeric type, and false if the array is of logical type. (For more information on expressions, see Section 4.1.) |
Examples
DOT_PRODUCT ((/1, 2, 3/), (/3, 4, 5/)) has the value 26 (calculated as follows: ( (1 x 3) + (2 x 4) + (3 x 5)) = 26 ).
DOT_PRODUCT ((/ (1.0, 2.0), (2.0, 3.0) /), (/ (1.0, 1.0), (1.0, 4.0) /)) has the value (17.0, 4.0).
DOT_PRODUCT ((/ .TRUE., .FALSE. /), (/ .FALSE., .TRUE. /)) has the
value false.
9.4.43 DPROD (X, Y)
Description: | Produces a higher precision product. This is a specific function that has no generic function associated with it. It must not be passed as an actual argument. | ||
Class: | Elemental function; Specific | ||
Arguments: | X | Must be of type REAL(4) or REAL(8). | |
Y | Must be the same type and kind parameter as X. | ||
Results: | If X and Y are of type REAL(4), the result is of type double-precision real. If X and Y are of type REAL(8), the result is of type REAL(16). The result value is equal to X*Y. |
Examples
DPROD (2.0, --4.0) has the value --8.00D0.
DPROD (5.0D0, 3.0D0) has the value 15.00Q0.
The following shows another example:
REAL(4) e REAL(8) d e = 123456.7 d = 123456.7D0 ! DPROD (e,e) returns 15241557546.4944 ! DPROD (d,d) returns 15241556774.8899992813874268904328 |
Description: | Converts the real part of a double-complex argument to double-precision type. This is a specific function that has no generic function associated with it. It must not be passed as an actual argument. | ||
Class: | Elemental function; Specific | ||
Arguments: | A must be of type double complex (COMPLEX(8) or COMPLEX*16). | ||
Results: | The result is of type double-precision real (REAL(8) or REAL*8). |
Examples
DREAL ((2.0d0, 3.0d0)) has the value 2.0d0.
Description: | Checks whether a file is at or beyond the end-of-file record. This is a specific function that has no generic function associated with it. It must not be passed as an actual argument. | ||
Class: | Inquiry function; Specific | ||
Arguments: | A must be of type integer. It represents a unit specifier corresponding to an open file. It cannot be zero unless you have reconnected unit zero to a unit other than the screen or keyboard. | ||
Results: | The result is of type logical. The value of the result is .TRUE. if the file connected to A is at or beyond the end-of-file record; otherwise, .FALSE.. |
Examples
Consider the following:
! Creates a file of random numbers, reads them back REAL x, total INTEGER count OPEN (1, FILE = 'TEST.DAT') DO I = 1, 20 CALL RANDOM_NUMBER(x) WRITE (1, '(F6.3)') x * 100.0 END DO CLOSE(1) OPEN (1, FILE = 'TEST.DAT') DO WHILE (.NOT. EOF(1)) count = count + 1 READ (1, *) value total = total + value END DO 100 IF ( count .GT. 0) THEN WRITE (*,*) 'Average is: ', total / count ELSE WRITE (*,*) 'Input file is empty ' END IF STOP END |
Description: |
Performs an
end-off shift on a rank-one array, or performs end-off shifts
on all the complete rank-one sections along a given dimension of an
array of rank two or greater.
Elements are shifted off at one end of a section and copies of a boundary value are filled in at the other end. Different sections can have different boundary values and can be shifted by different amounts and in different directions. |
||
Class: | Transformational function; Generic | ||
Arguments: | ARRAY | Must be an array (of any data type). | |
SHIFT | Must be a scalar integer or an array with a rank that is one less than ARRAY, and shape (d 1, d 2, ..., d DIM-1, d DIM+1, ..., d n), where (d 1, d 2,..., d n) is the shape of ARRAY. | ||
BOUNDARY
(opt) |
Must have the same type and kind parameters as ARRAY. It must be a scalar or an array with a rank that is one less than ARRAY, and shape (d 1, d 2, ..., d DIM-1, d DIM+1, ..., d n). If BOUNDARY is not specified, it is assumed to have the following default values (depending on the data type of ARRAY): | ||
ARRAY Type | BOUNDARY Value | ||
Integer | 0 | ||
Real | 0.0 | ||
Complex | (0.0, 0.0) | ||
Logical | false | ||
Character ( len) | len blanks | ||
DIM (opt) | Must be a scalar integer with a value in the range 1 to n, where n is the rank of ARRAY. If DIM is omitted, it is assumed to be 1. | ||
Results: |
The result is an array with the same type and kind parameters, and
shape as ARRAY.
If ARRAY has rank one, the same shift is applied to each element. If an element is shifted off one end of the array, the BOUNDARY value is placed at the other end the array. If ARRAY has rank greater than one, each section (s 1, s 2, ..., s DIM-1, :, s DIM+1, ..., s n) of the result is shifted as follows:
If an element is shifted off one end of a section, the BOUNDARY value is placed at the other end of the section. The value of SHIFT determines the amount and direction of the end-off shift. A positive SHIFT value causes a shift to the left (in rows) or up (in columns). A negative SHIFT value causes a shift to the right (in rows) or down (in columns). |
Examples
V is the array (1, 2, 3, 4, 5, 6).
EOSHIFT (V, SHIFT=2) shifts the elements in V to the left by two positions, producing the value (3, 4, 5, 6, 0, 0). 1 and 2 are shifted off the beginning and two elements with the default BOUNDARY value are placed at the end.
EOSHIFT (V, SHIFT= --3, BOUNDARY= 99) shifts the elements in V to the right by 3 positions, producing the value (99, 99, 99, 1, 2, 3). 4, 5, and 6 are shifted off the end and three elements with BOUNDARY value 99 are placed at the beginning.
M is the array <left[ symbol><matrix symbol> 1&2&3<cr symbol> 4&5&6<cr symbol> 7&8&9<cr symbol> <right] symbol> .
EOSHIFT (M, SHIFT = 1, BOUNDARY = ' * ' , DIM = 2) produces the result <left[ symbol><matrix symbol> 2&3&*<cr symbol> 5&6&*<cr symbol> 8&9&*<cr symbol> <right] symbol> .
Each element in rows 1, 2, and 3 is shifted to the left by one position. This causes the first element in each row to be shifted off the beginning, and the BOUNDARY value to be placed at the end.
EOSHIFT (M, SHIFT = --1, DIM = 1) produces the result <left[ symbol><matrix symbol> 0&0&0<cr symbol> 1&2&3<cr symbol> 4&5&6<cr symbol> <right] symbol> .
Each element in columns 1, 2, and 3 is shifted down by 1 position. This causes the last element in each column to be shifted off the end and the BOUNDARY value to be placed at the beginning.
EOSHIFT (M, SHIFT = (/1, --1, 0/), BOUNDARY = (/ ' * ' , ' ? ' , ' / ' /), DIM = 2) produces the result <left[ symbol><matrix symbol> 2&3&*<cr symbol> ?&4&5<cr symbol> 7&8&9<cr symbol> <right] symbol> .
Each element in row 1 is shifted to the left by one position, causing
the first element to be shifted off the beginning and the BOUNDARY
value * to be placed at the end. Each element in row 2 is shifted to
the right by 1 position, causing the last element to be
shifted off the end and the BOUNDARY value ? to be placed at the
beginning. No element in row 3 is shifted at all, so the specified
BOUNDARY value is not used.
9.4.47 EPSILON (X)
Description: |
Returns the difference (for scalars of the same type and kind
parameters) between 1.0 and the next larger model number. EPSILON is a
guide to the precision with which values near unity can be represented.
EPSILON(1.0) is about 1.19E-7, EPSILON(1.0_8) is about 2.22E-16, and EPSILON(1.0_16) is about 1.93E-34. |
||
Class: | Inquiry function; Generic | ||
Arguments: | X must be of type real; it can be scalar or array valued. | ||
Results: | The result is a scalar of the same type and kind parameters as X. The result has the value b 1-p. Parameters b and p are defined in Section D.2. |
Examples
If X is of type REAL(4), EPSILON (X) has the value 2-23 .
A zero indicates no error has occurred since the last call to
ERRSNS or since the start of program execution.
The saved error information is set to zero after each call to
ERRSNS.
Examples
Any of the arguments can be omitted. For example, the following is
valid:
Examples
CALL EXIT (100)
9.4.48 ERRSNS ([IO_ERR] [,SYS_ERR] [,STAT] [,UNIT] [,COND])
Description:
Returns information about the most recently detected I/O system error
condition.
Class:
Subroutine
Arguments:
There are five optional arguments:
IO_ERR (opt)
Is an integer variable or array element that stores the most recent
HP Fortran RTL error number that occurred during program execution.
(For a listing of error numbers, see the HP Fortran for OpenVMS User Manual.)
SYS_ERR
(opt)
Is an integer variable or array element that stores the most recent
system error number associated with IO_ERR. This code is an RMS STS
value.
STAT (opt)
Is an integer variable or array element that stores a status value that
occurred during program execution. This value is an RMS STV value.
UNIT (opt)
Is an integer variable or array element that stores the logical unit
number, if the last error was an I/O error.
COND (opt)
Is an integer variable or array element that stores the actual
processor value. This value is always zero.
If you specify INTEGER(2) arguments, only the low-order 16 bits of
information are returned or adjacent data can be overwritten. Because
of this, it is best to use INTEGER(4) arguments.
CALL ERRSNS (SYS_ERR, STAT, , UNIT)
9.4.49 EXIT ([STATUS])
Description:
Terminates program execution, closes all files, and returns control to
the operating system.
Class:
Subroutine
Arguments:
STATUS is an optional integer argument you can use to specify the image
exit-status value.
9.4.50 EXP (X)
Description: | Computes an exponential value. | ||
Class: | Elemental function; Generic | ||
Arguments: | X must be of type real or complex. | ||
Results: | The result type is the same as X. The value of the result is e x. If X is of type complex, its imaginary part is regarded as a value in radians. |
Specific Name | Argument Type | Result Type |
---|---|---|
EXP | REAL(4) | REAL(4) |
DEXP | REAL(8) | REAL(8) |
QEXP | REAL(16) | REAL(16) |
CEXP 1 | COMPLEX(4) | COMPLEX(4) |
CDEXP 2 | COMPLEX(8) | COMPLEX(8) |
CQEXP | COMPLEX(16) | COMPLEX(16) |
Examples
EXP (2.0) has the value 7.389056.
EXP (1.3) has the value 3.669297.
Previous | Next | Contents | Index |