28 lines
		
	
	
		
			440 B
		
	
	
	
		
			Fortran
		
	
	
	
	
	
		
		
			
		
	
	
			28 lines
		
	
	
		
			440 B
		
	
	
	
		
			Fortran
		
	
	
	
	
	
|   | subroutine ps4(dat,nfft,s)
 | ||
|  | 
 | ||
|  |   parameter (NMAX=2520+2)
 | ||
|  |   parameter (NHMAX=NMAX/2-1)
 | ||
|  |   real dat(nfft)
 | ||
|  |   real dat2(NMAX)
 | ||
|  |   real s(NHMAX)
 | ||
|  |   complex c(0:NMAX)
 | ||
|  |   equivalence(dat2,c)
 | ||
|  | 
 | ||
|  |   nh=nfft/2
 | ||
|  |   do i=1,nh
 | ||
|  |      dat2(i)=dat(i)/128.0       !### Why 128 ??
 | ||
|  |   enddo
 | ||
|  |   do i=nh+1,nfft
 | ||
|  |      dat2(i)=0.
 | ||
|  |   enddo
 | ||
|  | 
 | ||
|  |   call four2a(c,nfft,1,-1,0)
 | ||
|  | 
 | ||
|  |   fac=1.0/nfft
 | ||
|  |   do i=1,nh
 | ||
|  |      s(i)=fac*(real(c(i))**2 + aimag(c(i))**2)
 | ||
|  |   enddo
 | ||
|  | 
 | ||
|  |   return
 | ||
|  | end subroutine ps4
 |