1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111
|
program intrinsics_234
implicit none
logical :: mask(3, 4)
logical :: mask_(6, 9)
logical :: mask_3(3, 4, 3)
logical :: mask_4(4, 5, 3, 1)
logical :: res
integer, dimension(2,3) :: a, b
logical, dimension(2,3) :: mask2
logical, parameter :: c1 = parity([.true., .false., .true., .false.])
logical, parameter :: c2 = parity([.true., .false., .true., .false., .true., .false.])
mask = reshape([ .true., .false., .true., .false., &
.true., .false., .true., .false., &
.true., .false., .true., .true.], [3, 4])
mask_ = .false.
mask_(1, 1) = .true.
mask_(1, 2) = .true.
mask_(5, 1) = .true.
mask_(5, 2) = .true.
mask_(6, 7) = .true.
mask_(4, 8) = .true.
mask_3 = .false.
mask_3(1, 1, :) = .true.
mask_3(1, 2, :) = .true.
mask_3(3, 1, :) = .true.
mask_3(2, 2, :) = .true.
mask_3(2, 4, :) = .true.
mask_3(3, 3, :) = .true.
mask_4 = .true.
mask_4(1, 1, 1, 1) = .false.
mask_4(1, 1, 1, :) = .false.
mask_4(1, 1, 1, :) = .false.
mask_4(1, 2, 1, :) = .false.
mask_4(1, 2, 3, :) = .false.
print *, parity(mask)
if (parity(mask) .neqv. .true.) error stop
print *, parity(mask_)
if (parity(mask_) .neqv. .false.) error stop
print *, parity(mask_3)
if (parity(mask_3) .neqv. .false.) error stop
print *, parity(mask, 1)
if (any(parity(mask, 1)) .neqv. .true.) error stop
print *, parity(mask, 2)
if (any(parity(mask, 2)) .neqv. .true.) error stop
print *, any(parity(mask_, 1))
if (any(parity(mask_, 1)) .neqv. .true.) error stop
print *, shape(parity(mask_, 1))
print *, any(parity(mask_, 2))
if (any(parity(mask_, 2)) .neqv. .true.) error stop
print *, shape(parity(mask_, 2))
print *, any(parity(mask_3, 1))
if (any(parity(mask_3, 1)) .neqv. .true.) error stop
print *, shape(parity(mask_3, 1))
print *, any(parity(mask_3, 2))
if (any(parity(mask_3, 2)) .neqv. .false.) error stop
print *, shape(parity(mask_3, 2))
print *, any(parity(mask_3, 3))
if (any(parity(mask_3, 3)) .neqv. .true.) error stop
print *, any(parity(mask_4, 1))
if (any(parity(mask_4, 1)) .neqv. .true.) error stop
print *, shape(parity(mask_4, 1))
res = parity(mask_4)
if (res .neqv. .true.) error stop
res = parity(mask_4)
if (res .neqv. .true.) error stop
a = reshape( [ 1, 2, 3, 4, 5, 6 ], [ 2, 3 ])
b = reshape( [ 0, 7, 3, 4, 5, 8 ], [ 2, 3 ])
print *, a(1,:)
print *, a(2,:)
print *
print *, b(1,:)
print *, b(2,:)
print *
mask2 = a.ne.b
print '(3l3)', mask2(1,:)
print '(3l3)', mask2(2,:)
print *
print *, parity(mask2)
if (parity(mask2) .neqv. .true.) error stop
print *
print *, parity(mask2, 1)
print *
print *, parity(mask2, 2)
print*, c1
if (c1 .neqv. .false.) error stop
print*, c2
if (c2 .neqv. .true.) error stop
print*, kind(c2)
if (kind(c2) /= 4) error stop
end program
|