MODULE FMZMCOMMON ! Define the array sizes: INTEGER NDIGMX,NBITS,LPACK,LUNPCK,LMWA,LJSUMS,LMBUFF,LPACKZ, & LUNPKZ,KPTIMP,KPTIMU,LMBUFZ PARAMETER ( NDIGMX=256 , NBITS=64 , & LPACK = (NDIGMX+1)/2+1 , LUNPCK = (6*NDIGMX)/5+20, & LMWA = 2*LUNPCK , LJSUMS = 8*(LUNPCK+2), & LMBUFF = ((LUNPCK+3)*(NBITS-1)*301)/2000+6, & LPACKZ = 2*LPACK+1 , LUNPKZ = 2*LUNPCK+1, & KPTIMP = LPACK+1 , KPTIMU = LUNPCK+1, & LMBUFZ = 2*LMBUFF+10 ) ! Here are the common blocks used in FM and ZM. ! /FMUSER/, /FM/, /FMSAVE/, /FMBUFF/, and /ZMUSER/ should be declared ! in the main program. ! FMUSER contains values that may need to be ! changed by the calling program. INTEGER NDIG,JFORM1,JFORM2,KRAD,KW,NTRACE,LVLTRC,KFLAG, & KWARN,KROUND,KSWIDE,KESWCH,KDEBUG DOUBLE PRECISION MBASE COMMON /FMUSER/ MBASE,NDIG,JFORM1,JFORM2,KRAD,KW,NTRACE,LVLTRC, & KFLAG,KWARN,KROUND,KSWIDE,KESWCH,KDEBUG ! FM contains the work array used by the low-level ! arithmetic routines, definitions for overflow ! and underflow thresholds, and other ! machine-dependent values. DOUBLE PRECISION DPMAX INTEGER NCALL,KACCSW,IUNKNO,NDG2MX,INTMAX,KSUB REAL RUNKNO,SPMAX DOUBLE PRECISION MWA,MXEXP,MXEXP2,MEXPUN,MEXPOV,MUNKNO,MXBASE, & MAXINT COMMON /FM/ MWA(LMWA),NCALL,KACCSW,MXEXP,MXEXP2,MEXPUN,MEXPOV, & MUNKNO,IUNKNO,RUNKNO,MXBASE,NDG2MX,SPMAX,DPMAX, & MAXINT,INTMAX,KSUB ! FMSAVE contains information about saved constants. INTEGER LHASH1,LHASH2 PARAMETER (LHASH1=0 , LHASH2=256) DOUBLE PRECISION DLOGMB,DLOGTN,DLOGTW,DLOGTP,DLOGPI,DPPI, & DPEPS,DLOGEB INTEGER NDIGPI,NDIGE,NDIGLB,NDIGLI,KHASHT,KHASHV, & NGRD21,NGRD52,NGRD22 DOUBLE PRECISION MBSPI,MBSE,MBSLB,MBSLI,MPISAV,MESAV,MLBSAV, & MLN1,MLN2,MLN3,MLN4,MBLOGS,MEXPAB REAL ALOGMB,ALOGMT,ALOGM2,ALOGMX COMMON /FMSAVE/ NDIGPI,NDIGE,NDIGLB,NDIGLI,MBSPI,MBSE,MBSLB,MBSLI, & MPISAV(0:LUNPCK),MESAV(0:LUNPCK),MLBSAV(0:LUNPCK), & MLN1(0:LUNPCK),MLN2(0:LUNPCK),MLN3(0:LUNPCK), & MLN4(0:LUNPCK),MBLOGS,MEXPAB,ALOGMB,ALOGM2,ALOGMX, & ALOGMT,DLOGMB,DLOGTN,DLOGTW,DLOGTP,DLOGPI,DPPI, & DPEPS,DLOGEB,KHASHT(LHASH1:LHASH2), & KHASHV(LHASH1:LHASH2),NGRD21,NGRD52,NGRD22 ! MJSUMS is an array that can contain several FM numbers ! being used to accumulate concurrent sums in exponential ! and trigonometric functions. When NDIGMX = 256, eight is ! about the maximum number of sums needed (but this depends ! on MBASE). For larger NDIGMX, dimensioning MJSUMS to hold ! more than eight FM numbers could increase the speed of the ! functions. DOUBLE PRECISION MJSUMS COMMON /FMSUMS/ MJSUMS(0:LJSUMS) ! FMWA contains two work arrays similar to MWA. They are ! used in routines FMDIVD, FMMPYD, and FMMPYE. DOUBLE PRECISION MWD,MWE COMMON /FMWA/ MWD(LMWA),MWE(LMWA) ! CMBUFF is a character array used by FMPRNT for printing ! output from FMOUT. This array may also be used ! for calls to FMOUT from outside the FM package. ! CMCHAR is the letter used before the exponent field ! in FMOUT. It is defined in FMSET. ! NAMEST is a stack for names of the routines. It is ! used for trace printing and error messages. CHARACTER CMBUFF,CMCHAR CHARACTER *6 NAMEST COMMON /FMBUFF/ CMBUFF(LMBUFF),NAMEST(0:50),CMCHAR ! FM1 contains scratch arrays for temporary storage of FM ! numbers while computing various functions. DOUBLE PRECISION M01,M02,M03,M04,M05,M06 COMMON /FM1/ M01(0:LUNPCK),M02(0:LUNPCK),M03(0:LUNPCK), & M04(0:LUNPCK),M05(0:LUNPCK),M06(0:LUNPCK) ! FMPCK contains scratch arrays used to hold input arguments ! in unpacked format when the packed versions of functions ! are used. DOUBLE PRECISION MPA,MPB,MPC COMMON /FMPCK/ MPA(0:LUNPCK),MPB(0:LUNPCK),MPC(0:LUNPCK) ! Common blocks used by ZMLIB for complex operations. ! ZMUSER contains values that may need to be ! changed by the calling program. INTEGER JFORMZ,JPRNTZ ! COMMON /ZMUSER/ JFORMZ,JPRNTZ ! ZM1 contains scratch arrays for temporary storage of ZM ! numbers while computing various functions. DOUBLE PRECISION MZ01,MZ02,MZ03,MZ04 ! COMMON /ZM1/ MZ01(0:LUNPKZ),MZ02(0:LUNPKZ),MZ03(0:LUNPKZ), & MZ04(0:LUNPKZ) ! ZMPCK contains scratch arrays used to hold input arguments ! in unpacked format when the packed versions of functions ! are used. DOUBLE PRECISION MZX,MZY ! COMMON /ZMPCK/ MZX(0:LUNPKZ),MZY(0:LUNPKZ) ! ZMBUFF contains the complex i/o buffer. CHARACTER CMBUFZ COMMON /ZMBUFF/ CMBUFZ(LMBUFZ) END MODULE