File: array_section_04.f90

package info (click to toggle)
lfortran 0.58.0-4
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 54,512 kB
  • sloc: cpp: 162,179; f90: 68,251; python: 17,476; ansic: 6,278; yacc: 2,334; sh: 1,317; fortran: 892; makefile: 33; javascript: 15
file content (38 lines) | stat: -rw-r--r-- 858 bytes parent folder | download | duplicates (2)
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
module function_32_mod_array_section_04
contains
subroutine istril(y)
    real(8), intent(inout) :: y(:, :)
    print *, y(2, 2)
    if ( abs(y(2,2) - 3.0) > 1e-8 ) error stop
    y(2, 2) = 4.0

end subroutine

function istril_func(y) result(z)
    real(8), intent(inout) :: y(:, :)
    logical :: z
    print *, y(2, 2)
    z = .true.
    if ( abs(y(2,2) - 4.0) > 1e-8 )  z = .false.
    y(1,2) = 4.0
end function

subroutine matprod(y)
    real(8), intent(inout) :: y(:, :)
    call istril(y)
    if(.not. istril_func(y)) error stop
end subroutine 
end module


program array_section_04
    use function_32_mod_array_section_04
    real(8) :: A(5, 3)
    A = 1.0_8
    A(1,2) = 0
    A(2,2) = 3.0
    call matprod(A(1:2,1:2))
    print *, A(2,2)
    if ( abs(A(2,2) - 4.0_8) > 1e-8 ) error stop
    if ( abs(A(1,2) - 4.0_8) > 1e-8 ) error stop
end program