Calling a subroutine in Fortran 77

  • Fortran
  • Thread starter vjvaibhu
  • Start date
  • #1
2
0

Main Question or Discussion Point

I am calling a fortran 77 subroutine in a fortran 90 code and the results i am getting are wrong as confirmed from matlab. Can anybody please let me know where is the problem?

Fortran:
do isss=1,5
    do ig=1,10
        dat0=dat(:,ig,isss)
        do iss=1,5                 
                if ((ig>isss) .and. (ig>iss) .and. (iss>isss)) then
                    dat1=dat(:,ig,iss)
                    temp=dat1(10:1:-1)
                    call convolvef77(dat0, m, temp, m, xcorr)
                    vshot(:,isss,iss)=xcorr(10:19)+vshot(:,isss,iss)
                end if
        end do
    end do
end do
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Fortran:
    subroutine convolvef77 (x, lx, y, ly, xy)
c
c A basic implementation of convolution algorithm for two vectors
c I use zero-based arrays here.
c
      integer lx, ly, i, j
      real x(0:lx-1), y(0:ly-1), xy(0:lx+ly-2)
 
      do 20 i = 0, (lx-1)
         do 15 j = 0, (ly-1)
            xy(i+j) = xy(i+j) + x(i) * y(j)
  15     continue
  20  continue

      end
 
Last edited by a moderator:

Answers and Replies

  • #2
DrClaude
Mentor
7,339
3,520
Your problem has nothing to do with F77 vs F90, but rather because array xy is not initialized to 0 in convolvef77.
 
  • #3
2
0
Your problem has nothing to do with F77 vs F90, but rather because array xy is not initialized to 0 in convolvef77.
Thank you for your quick reply. When i am initializing xy to 0, only first and last terms of the array are getting correct value because every time j iterates it makes xy(i+j)=0. How should I initialize it then?
 
  • #4
DrClaude
Mentor
7,339
3,520
Thank you for your quick reply. When i am initializing xy to 0, only first and last terms of the array are getting correct value because every time j iterates it makes xy(i+j)=0. How should I initialize it then?
You need to set xy to 0 before the main loop.
 
  • Like
Likes harborsparrow

Related Threads on Calling a subroutine in Fortran 77

Replies
3
Views
19K
Replies
4
Views
9K
Replies
3
Views
3K
Replies
2
Views
638
  • Last Post
Replies
1
Views
2K
Replies
10
Views
6K
  • Last Post
Replies
1
Views
4K
Top