HP OpenVMS Systems Documentation 
HP Fortran for OpenVMS

Previous  Contents  Index 
Description:  Selects between two values or between corresponding elements in two arrays, according to the condition specified by a logical mask.  
Class:  Elemental function; Generic  
Arguments:  TSOURCE  Must be a scalar or array (of any data type).  
FSOURCE  Must be a scalar or array of the same type and type parameters as TSOURCE.  
MASK  Must be a logical array.  
Results:  The result type is the same as TSOURCE. The value of MASK determines whether the result value is taken from TSOURCE (if MASK is true) or FSOURCE (if MASK is false). 
Examples
For MERGE (1.0, 0.0, R < 0), if R is 3, the merge has the value 1.0, while if R is 7, the merge has the value 0.0.
TSOURCE is the array <left[ symbol><matrix symbol> 1&3&5<cr symbol> 2&4&6<cr symbol> <right] symbol> , FSOURCE is the array <left[ symbol><matrix symbol> 8&9&0<cr symbol> 1&2&3<cr symbol> <right] symbol> , and MASK is the array <left[ symbol><matrix symbol> F&T&T<cr symbol> T&T&F<cr symbol> <right] symbol> .
MERGE (TSOURCE, FSOURCE, MASK) produces the result: <left[ symbol><matrix symbol> 8&3&5<cr symbol> 2&4&3<cr symbol> <right] symbol> .
Description:  Returns the minimum value of the arguments.  
Class:  Elemental function; Generic  
Arguments:  A1, A2, and A3 (opt) must all have the same type (integer or real) and kind parameters.  
Results:  For MIN0, AMIN1, DMIN1, QMIN1, IMIN0, JMIN0, and KMIN0, the result type is the same as the arguments. For MIN1, IMIN1, JMIN1, and KMIN1, the result is of type integer. For AMIN0, AIMIN0, AJMIN0, and AKMIN0, the result is of type real. The value of the result is that of the smallest argument. 
Specific Name^{1}  Argument Type  Result Type 

INTEGER(1)  INTEGER(1)  
INTEGER(1)  REAL(4)  
IMIN0  INTEGER(2)  INTEGER(2) 
AIMIN0  INTEGER(2)  REAL(4) 
MIN0 ^{2}  INTEGER(4)  INTEGER(4) 
AMIN0 ^{3,4}  INTEGER(4)  REAL(4) 
KMIN0  INTEGER(8)  INTEGER(8) 
AKMIN0  INTEGER(8)  REAL(4) 
IMIN1  REAL(4)  INTEGER(2) 
MIN1 ^{4,5,6}  REAL(4)  INTEGER(4) 
KMIN1  REAL(4)  INTEGER(8) 
AMIN1 ^{7}  REAL(4)  REAL(4) 
DMIN1  REAL(8)  REAL(8) 
QMIN1  REAL(16)  REAL(16) 
Examples
MIN (2.0, 8.0, 6.0) has the value 8.0.
MIN (14, 32, 50) has the value 50.
Description:  Returns the minimum exponent in the model representing the same type and kind parameters as the argument.  
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 type default integer. The result has the value e _{min} , as defined in Section D.2. 
Examples
If X is of type REAL(4), MINEXPONENT (X) has the value 125.
Description:  Returns the location of the minimum value of all elements in an array, a set of elements in an array, or elements in a specified dimension of an array.  
Class:  Transformational function; Generic  
Arguments:  ARRAY  Must be an array of type integer or real.  
DIM (opt)  Must be a scalar integer with a value in the range 1 to n, where n is the rank of ARRAY. This argument is a Fortran 95 feature.  
MASK (opt)  Must be a logical array that is conformable with ARRAY.  
KIND (opt)  Must be a scalar integer initialization expression.  
Results: 
The result is an array of type integer.
If KIND is present, the kind parameter of the result
is that specified by KIND; otherwise, the kind parameter of the result
is that of default integer. If the processor cannot represent the
result value in the kind of the result, the result is undefined.
The following rules apply if DIM is omitted:
The following rules apply if DIM is specified:
If more than one element has minimum value, the element whose subscripts are returned is the first such element, taken in array element order. If ARRAY has size zero, or every element of MASK has the value .FALSE., the value of the result is undefined. 
Examples
The value of MINLOC ((/3, 1, 4, 1/)) is (2), which is the subscript of the location of the first occurrence of the minimum value in the rankone array.
A is the array <left[ symbol><matrix symbol> 4& 0&3& 2<cr symbol> 3& 1&2& 6<cr symbol> 1&4& 5&5<cr symbol> <right] symbol> .
MINLOC (A, MASK=A .GT. 5) has the value (3, 2) because these are the subscripts of the location of the minimum value (4) that is greater than 5.
MINLOC (A, DIM=1) has the value (3, 3, 1, 3). 3 is the subscript of the location of the minimum value (1) in column 1; 3 is the subscript of the location of the minimum value (4) in column 2; and so forth.
MINLOC (A, DIM=2) has the value (3, 3, 4). 3 is the subscript of the location of the minimum value (3) in row 1; 3 is the subscript of the location of the minimum value (2) in row 2; and so forth.
Description:  Returns the minimum value of all elements in an array, a set of elements in an array, or elements in a specified dimension of an array.  
Class:  Transformational function; Generic  
Arguments:  ARRAY  Must be an array of type integer or real.  
DIM (opt)  Must be a scalar integer with a value in the range 1 to n, where n is the rank of ARRAY.  
MASK (opt)  Must be a logical array that is conformable with ARRAY.  
Results: 
The result is an array or a scalar of the same data type as ARRAY.
The result is a scalar if DIM is omitted or ARRAY has rank one. The following rules apply if DIM is omitted:
The following rules apply if DIM is specified:
If ARRAY has size zero or if there are no true elements in MASK, the result (if DIM is omitted), or each element in the result array (if DIM is specified), has the value of the positive number of the largest magnitude supported by the processor for numbers of the type and kind parameters of ARRAY. 
Examples
The value of MINVAL ((/2, 3, 4/)) is 2 because that is the minimum value in the rankone array.
The value of MINVAL (B, MASK=B .GT. 0.0) finds the minimum value of the positive elements of B.
C is the array <left[ symbol><matrix symbol> 2&3&4<cr symbol> 5&6&7<cr symbol> <right] symbol> .
MINVAL (C, DIM=1) has the value (2, 3, 4). 2 is the minimum value in column 1; 3 is the minimum value in column 2; and so forth.
MINVAL (C, DIM=2) has the value (2, 5). 2 is the minimum value in row 1 and 5 is the minimum value in row 2.
Description:  Returns the remainder when the first argument is divided by the second argument.  
Class:  Elemental function; Generic  
Arguments:  A  Must be of type integer or real.  
P  Must have the same type and kind parameters as A.  
Results:  The result type is the same as A. If P is not equal to zero, the value of the result is A  INT(A/P) * P . If P is equal to zero, the result is undefined. 
Specific Name  Argument Type  Result Type 

INTEGER(1)  INTEGER(1)  
IMOD  INTEGER(2)  INTEGER(2) 
MOD ^{1}  INTEGER(4)  INTEGER(4) 
KMOD  INTEGER(8)  INTEGER(8) 
AMOD ^{2}  REAL(4)  REAL(4) 
DMOD  REAL(8)  REAL(8) 
QMOD  REAL(16)  REAL(16) 
Examples
MOD (7, 3) has the value 1.
MOD (9, 6) has the value 3.
MOD (9, 6) has the value 3.
Description:  Returns the modulo of the arguments.  
Class:  Elemental function; Generic  
Arguments:  A  Must be of type integer or real.  
P  Must have the same type and kind parameters as A.  
Results: 
The result type is the same as A. The result value depends on the type
of A, as follows:
If P is equal to zero (regardless of the type of A), the result is undefined. 
Examples
MODULO (7, 3) has the value 1.
MODULO (9, 6) has the value 3.
MODULO (9, 6) has the value 3.
Description:  Multiplies two 64bit unsigned integers. 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  
Arguments:  I  Must be of type INTEGER(8).  
J  Must be of type INTEGER(8).  
Results:  The result is of type INTEGER(8). The result value is the upper (leftmost) 64 bits of the 128bit unsigned result. 
Examples
Consider the following:
INTEGER(8) I,J,K I=2_8**53 J=2_8**51 K = MULT_HIGH (I,J) PRINT *,I,J,K WRITE (6,1000)I,J,K 1000 FORMAT (' ', 3(Z,1X)) END 
This example prints the following:
9007199254740992 2251799813685248 1099511627776 20000000000000 8000000000000 10000000000 
Description:  Copies a sequence of bits (a bit field) from one location to another.  
Class:  Elemental subroutine  
Arguments:  There are five arguments ^{1}:  
FROM  Can be of any integer type. It represents the location from which a bit field is transferred.  
FROMPOS  Can be of any integer type; it must not be negative. It identifies the first bit position in the field transferred from FROM. FROMPOS + LEN must be less than or equal to BIT_SIZE (FROM). ^{2}  
LEN  Can be of any integer type; it must not be negative. It identifies the length of the field transferred from FROM.  
TO 
Can be of any integer type, but must have the same kind parameter as
FROM. It represents the location to which a bit field is transferred.
TO is set by copying the sequence of bits of length LEN, starting at
position FROMPOS of FROM to position TOPOS of TO. No other bits of TO
are altered.
On return, the LEN bits of TO (starting at TOPOS) are equal to the value that LEN bits of FROM (starting at FROMPOS) had on entry. ^{2} 

TOPOS  Can be of any integer type; it must not be negative. It identifies the starting position (within TO) for the bits being transferred. TOPOS + LEN must be less than or equal to BIT_SIZE (TO). 
You can also use the following specific subroutines:
IMVBITS  All arguments must be INTEGER(2). 
JMVBITS  Arguments can be INTEGER(2) or INTEGER(4); at least one must be INTEGER(4). 
KMVBITS  Arguments can be INTEGER(2), INTEGER(4), or INTEGER(8); at least one must be INTEGER(8). 
Examples
If TO has the initial value of 6, its value after a call to MVBITS with arguments (7, 2, 2, TO, 0) is 5.
Previous  Next  Contents  Index 