4 integer, parameter :: a
= 6
6 !$omp declare reduction (foo : integer : omp_out = omp_out + omp_in)
7 !$omp declare reduction (.add. : integer : &
8 !$omp & omp_out = omp_out .add. iand (omp_in, -4)) &
9 !$omp & initializer (omp_priv = 3)
10 interface operator (.add
.)
14 integer function f1 (x
, y
)
15 integer, intent (in
) :: x
, y
24 !$omp declare reduction (+ : dt : omp_out = omp_out + omp_in) &
25 !$omp & initializer (omp_priv = dt (0))
26 interface operator (+)
30 type(dt
) function f2 (x
, y
)
31 type(dt
), intent (in
) :: x
, y
40 !$omp parallel do reduction (.add.: j) reduction (+ : d)
42 j
= j
.add
.iand (i
, -4)
45 if (d
%x
/= 5050 .or
. j
/= 4903) STOP 1