File indexing completed on 2025-08-05 08:15:45
0001
0002
0003
0004 FUNCTION PYHISPEN(XREIN,XIMIN,IREIM)
0005
0006
0007
0008 COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
0009 SAVE /LUDAT1/
0010 DIMENSION B(0:14)
0011
0012 DATA B/
0013 & 1.000000E+00, -5.000000E-01, 1.666667E-01,
0014 & 0.000000E+00, -3.333333E-02, 0.000000E+00,
0015 & 2.380952E-02, 0.000000E+00, -3.333333E-02,
0016 & 0.000000E+00, 7.575757E-02, 0.000000E+00,
0017 &-2.531135E-01, 0.000000E+00, 1.166667E+00/
0018
0019 XRE=XREIN
0020 XIM=XIMIN
0021 IF(ABS(1.-XRE).LT.1.E-6.AND.ABS(XIM).LT.1.E-6) THEN
0022 IF(IREIM.EQ.1) PYHISPEN=PARU(1)**2/6.
0023 IF(IREIM.EQ.2) PYHISPEN=0.
0024 RETURN
0025 ENDIF
0026
0027 XMOD=SQRT(XRE**2+XIM**2)
0028 IF(XMOD.LT.1.E-6) THEN
0029 IF(IREIM.EQ.1) PYHISPEN=0.
0030 IF(IREIM.EQ.2) PYHISPEN=0.
0031 RETURN
0032 ENDIF
0033
0034 XARG=SIGN(ACOS(XRE/XMOD),XIM)
0035 SP0RE=0.
0036 SP0IM=0.
0037 SGN=1.
0038 IF(XMOD.GT.1.) THEN
0039 ALGXRE=LOG(XMOD)
0040 ALGXIM=XARG-SIGN(PARU(1),XARG)
0041 SP0RE=-PARU(1)**2/6.-(ALGXRE**2-ALGXIM**2)/2.
0042 SP0IM=-ALGXRE*ALGXIM
0043 SGN=-1.
0044 XMOD=1./XMOD
0045 XARG=-XARG
0046 XRE=XMOD*COS(XARG)
0047 XIM=XMOD*SIN(XARG)
0048 ENDIF
0049 IF(XRE.GT.0.5) THEN
0050 ALGXRE=LOG(XMOD)
0051 ALGXIM=XARG
0052 XRE=1.-XRE
0053 XIM=-XIM
0054 XMOD=SQRT(XRE**2+XIM**2)
0055 XARG=SIGN(ACOS(XRE/XMOD),XIM)
0056 ALGYRE=LOG(XMOD)
0057 ALGYIM=XARG
0058 SP0RE=SP0RE+SGN*(PARU(1)**2/6.-(ALGXRE*ALGYRE-ALGXIM*ALGYIM))
0059 SP0IM=SP0IM-SGN*(ALGXRE*ALGYIM+ALGXIM*ALGYRE)
0060 SGN=-SGN
0061 ENDIF
0062
0063 XRE=1.-XRE
0064 XIM=-XIM
0065 XMOD=SQRT(XRE**2+XIM**2)
0066 XARG=SIGN(ACOS(XRE/XMOD),XIM)
0067 ZRE=-LOG(XMOD)
0068 ZIM=-XARG
0069
0070 SPRE=0.
0071 SPIM=0.
0072 SAVERE=1.
0073 SAVEIM=0.
0074 DO 100 I=0,14
0075 TERMRE=(SAVERE*ZRE-SAVEIM*ZIM)/FLOAT(I+1)
0076 TERMIM=(SAVERE*ZIM+SAVEIM*ZRE)/FLOAT(I+1)
0077 SAVERE=TERMRE
0078 SAVEIM=TERMIM
0079 SPRE=SPRE+B(I)*TERMRE
0080 100 SPIM=SPIM+B(I)*TERMIM
0081
0082 IF(IREIM.EQ.1) PYHISPEN=SP0RE+SGN*SPRE
0083 IF(IREIM.EQ.2) PYHISPEN=SP0IM+SGN*SPIM
0084
0085 RETURN
0086 END