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> .
9.4.99 MIN (A1, A2 [,A3,...])
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 Name1 | 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.
9.4.100 MINEXPONENT (X)
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.
9.4.101 MINLOC (ARRAY [,DIM] [,MASK] [,KIND])
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 rank-one 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.
9.4.102 MINVAL (ARRAY [,DIM] [,MASK])
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 rank-one 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.
9.4.103 MOD (A, P)
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.
9.4.104 MODULO (A, P)
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.
Examples
Consider the following:
This example prints the following:
9.4.105 MULT_HIGH (I, J)
Description:
Multiplies two 64-bit 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 128-bit unsigned result.
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
9007199254740992 2251799813685248 1099511627776
20000000000000 8000000000000 10000000000
9.4.106 MVBITS (FROM, FROMPOS, LEN, TO, TOPOS)
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 |