From 0531f339e851528167b190207230162afb410d9d Mon Sep 17 00:00:00 2001 From: Joe Taylor Date: Wed, 31 Jan 2024 14:16:40 -0500 Subject: [PATCH] Use ran1 instead of random_number(). --- lib/superfox/ran1.f90 | 28 ++++++++++++++++++++++++++++ lib/superfox/synctest.f90 | 9 ++++++--- 2 files changed, 34 insertions(+), 3 deletions(-) create mode 100644 lib/superfox/ran1.f90 diff --git a/lib/superfox/ran1.f90 b/lib/superfox/ran1.f90 new file mode 100644 index 000000000..b09b9baba --- /dev/null +++ b/lib/superfox/ran1.f90 @@ -0,0 +1,28 @@ +FUNCTION ran1(idum) + INTEGER idum,IA,IM,IQ,IR,NTAB,NDIV + REAL ran1,AM,EPS,RNMX + PARAMETER (IA=16807,IM=2147483647,AM=1./IM,IQ=127773,IR=2836, & + NTAB=32,NDIV=1+(IM-1)/NTAB,EPS=1.2e-7,RNMX=1.-EPS) + INTEGER j,k,iv(NTAB),iy + SAVE iv,iy + DATA iv /NTAB*0/, iy /0/ + if (idum.le.0.or.iy.eq.0) then + idum=max(-idum,1) + do j=NTAB+8,1,-1 + k=idum/IQ + idum=IA*(idum-k*IQ)-IR*k + if (idum.lt.0) idum=idum+IM + if (j.le.NTAB) iv(j)=idum + enddo + iy=iv(1) + endif + k=idum/IQ + idum=IA*(idum-k*IQ)-IR*k + if (idum.lt.0) idum=idum+IM + j=1+iy/NDIV + iy=iv(j) + iv(j)=idum + ran1=min(AM*iy,RNMX) + + return +END FUNCTION ran1 diff --git a/lib/superfox/synctest.f90 b/lib/superfox/synctest.f90 index 916caaee3..2e57c1713 100644 --- a/lib/superfox/synctest.f90 +++ b/lib/superfox/synctest.f90 @@ -12,7 +12,7 @@ program synctest complex clo(NMAX) !Complex Local Oscillator complex cnoise(NMAX) !Complex noise complex crcvd(NMAX) !Signal as received - real xdat(ND) !Temporary: for generating idat +! real xdat(ND) !Temporary: for generating idat integer*1 idat(ND) !Encoded data, 7-bit integers integer*1 jdat(ND) !Recovered hard-decision symbols character fname*17,arg*12 @@ -39,9 +39,11 @@ program synctest rms=100. fsample=12000.0 !Sample rate (Hz) baud=12000.0/nsps !Keying rate, 11.719 baud for nsps=1024 + idummy=0 - call random_number(xdat) - idat=int(127.9999*xdat) + do i=1,ND + idat(i)=128*ran1(idummy) + enddo h=default_header(12000,NMAX) fname='000000_000001.wav' @@ -99,3 +101,4 @@ program synctest include 'gen_sfox.f90' include 'sync_sf.f90' include 'hard_symbols.f90' + include 'ran1.f90'