File: c_ptr_01.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 (35 lines) | stat: -rw-r--r-- 743 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
subroutine idz_realcomp(n,a)
   integer n
   real*8 a(n)
   a = 12.5d0
   return
end

subroutine idzp_svd(ls, w)
   use iso_c_binding, only: c_f_pointer, c_loc
   real*8 eps
   complex*16, target :: w(*)
   integer :: ls, isi, i
   real(8), pointer :: w_cast(:)
   isi = 1
   call c_f_pointer(c_loc(w(isi)), w_cast, [ls])
   call idz_realcomp(ls,w_cast)
   do i = 1, ls
      if (abs(w_cast(i) - 12.5d0) > 1e-12) error stop
   end do
   print *, w_cast
   return
end

program main
   complex*16, target :: w(5)
   interface
      subroutine idzp_svd(ls, w)
         use iso_c_binding, only: c_f_pointer, c_loc
         complex*16, target :: w(*)
         integer :: ls
      end subroutine
   end interface
   call idzp_svd(5, w)
end program