3 ! Check simplification of MERGE.
6 INTEGER, PARAMETER :: array(3) = [1, 2, 3]
7 LOGICAL, PARAMETER :: mask(3) = [ .TRUE
., .FALSE
., .TRUE
. ]
9 INTEGER, PARAMETER :: scalar_1
= MERGE (1, 0, .TRUE
.)
10 INTEGER, PARAMETER :: scalar_2
= MERGE (0, 1, .FALSE
.)
12 INTEGER, PARAMETER :: array_1(3) = MERGE (array
, 0, .TRUE
.)
13 INTEGER, PARAMETER :: array_2(3) = MERGE (array
, 0, .FALSE
.)
14 INTEGER, PARAMETER :: array_3(3) = MERGE (0, array
, .TRUE
.)
15 INTEGER, PARAMETER :: array_4(3) = MERGE (0, array
, .FALSE
.)
16 INTEGER, PARAMETER :: array_5(3) = MERGE (1, 0, mask
)
17 INTEGER, PARAMETER :: array_6(3) = MERGE (array
, -array
, mask
)
19 INTEGER, PARAMETER :: array_7(3) = MERGE ([1,2,3], -array
, mask
)
21 IF (scalar_1
/= 1 .OR
. scalar_2
/= 1) CALL abort
22 IF (.NOT
. ALL (array_1
== array
)) CALL abort
23 IF (.NOT
. ALL (array_2
== [0, 0, 0])) CALL abort
24 IF (.NOT
. ALL (array_3
== [0, 0, 0])) CALL abort
25 IF (.NOT
. ALL (array_4
== array
)) CALL abort
26 IF (.NOT
. ALL (array_5
== [1, 0, 1])) CALL abort
27 IF (.NOT
. ALL (array_6
== [1, -2, 3])) CALL abort