File: intrinsics_234.f90

package info (click to toggle)
lfortran 0.45.0-1
  • links: PTS, VCS
  • area: main
  • in suites: sid, trixie
  • size: 46,332 kB
  • sloc: cpp: 137,068; f90: 51,260; python: 6,444; ansic: 4,277; yacc: 2,285; fortran: 806; sh: 524; makefile: 30; javascript: 15
file content (111 lines) | stat: -rw-r--r-- 3,050 bytes parent folder | download
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