mirror of
				https://github.com/saitohirga/WSJT-X.git
				synced 2025-10-31 13:10:19 -04:00 
			
		
		
		
	Use a table lookup for exp(i*phi) in gen_ft8wave.f90.
This commit is contained in:
		
							parent
							
								
									761ee1cd85
								
							
						
					
					
						commit
						02eb4fe90b
					
				| @ -2,15 +2,15 @@ subroutine gen_ft8wave(itone,nsym,nsps,bt,fsample,f0,cwave,wave,icmplx,nwave) | ||||
| ! | ||||
| ! generate ft8 waveform using Gaussian-filtered frequency pulses. | ||||
| ! | ||||
| 
 | ||||
|   parameter(MAX_SECONDS=20) | ||||
|   use timer_module, only: timer | ||||
|   parameter(MAX_SECONDS=20,NTAB=65536) | ||||
|   real wave(nwave) | ||||
|   complex cwave(nwave) | ||||
|   complex cwave(nwave),ctab(0:NTAB-1) | ||||
|   real pulse(23040) | ||||
|   real dphi(0:(nsym+2)*nsps-1) | ||||
|   integer itone(nsym) | ||||
|   data ibt0/0/ | ||||
|   save pulse,twopi,dt,hmod,ibt0 | ||||
|   save pulse,twopi,dt,hmod,ibt0,ctab | ||||
| 
 | ||||
|   ibt=nint(10*bt) | ||||
|   if(ibt0.ne.ibt) then | ||||
| @ -23,6 +23,10 @@ subroutine gen_ft8wave(itone,nsym,nsps,bt,fsample,f0,cwave,wave,icmplx,nwave) | ||||
|         pulse(i)=gfsk_pulse(bt,tt) | ||||
|      enddo | ||||
|      ibt0=nint(10*bt) | ||||
|      do i=0,NTAB-1 | ||||
|         phi=i*twopi/NTAB | ||||
|         ctab(i)=cmplx(cos(phi),sin(phi)) | ||||
|      enddo | ||||
|   endif | ||||
| 
 | ||||
| ! Compute the smoothed frequency waveform. | ||||
| @ -42,17 +46,21 @@ subroutine gen_ft8wave(itone,nsym,nsps,bt,fsample,f0,cwave,wave,icmplx,nwave) | ||||
|   phi=0.0 | ||||
|   dphi = dphi + twopi*f0*dt                      !Shift frequency up by f0 | ||||
|   wave=0. | ||||
|   if (icmplx .ne. 0) cwave=0. ! avoid writing to memory we may not have access to | ||||
|   if(icmplx .ne. 0) cwave=0. !Avoid writing to memory we may not have access to | ||||
| 
 | ||||
|   call timer('gen_loop',0) | ||||
|   k=0 | ||||
|   do j=nsps,nsps+nwave-1                         !Don't include dummy symbols | ||||
|      k=k+1 | ||||
|      if(icmplx.eq.0) then | ||||
|         wave(k)=sin(phi) | ||||
|      else | ||||
|         cwave(k)=cmplx(cos(phi),sin(phi)) | ||||
|         i=phi*float(NTAB)/twopi | ||||
|         cwave(k)=ctab(i) | ||||
|      endif | ||||
|      phi=mod(phi+dphi(j),twopi) | ||||
|   enddo | ||||
|   call timer('gen_loop',1) | ||||
| 
 | ||||
| ! Apply envelope shaping to the first and last symbols | ||||
|   nramp=nint(nsps/8.0) | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user