+++ /dev/null
-*
-* $Id$
-*
-* $Log$
-* Revision 1.1.1.1 1996/04/01 15:01:46 mclareni
-* Mathlib gen
-*
-*
-#include "gen/pilot.h"
-#if (defined(CERNLIB_IBM))&&(defined(CERNLIB_F4))
- FUNCTION CLEBSG(/A/,/B/,/C/,/XX/,/YY/,/ZZ/,/GG/,/HH/,/PP/)
-#endif
-#if !defined(CERNLIB_IBM)||!defined(CERNLIB_F4)
- FUNCTION CLEBSG( A , B , C , XX , YY , ZZ , GG , HH , PP )
-#endif
-C
-C ADAPTED FROM HARWELL LIBRARY BY T. LINDELOF AND F. JAMES
-C 08/01/74 LAST UPDATE OF HARWELL LIBRARY
-C
-C WIGN3J- WIGNER 3-J SYMBOL
-C CLEBSG- CLEBSCH-GORDAN COEFFICIENT
-C WIGN6J- WIGNER 6-J SYMBOL
-C RACAHC- RACAH COEFFICIENT
-C JAHNUF- U-FUNCTION (JAHN)
-C WIGN9J- WIGNER 9-J SYMBOL
-C
-#if !defined(CERNLIB_F4)
- REAL JAHNUF
-#endif
- DIMENSION H(101),J(101)
- DIMENSION AY(4),IAY(4)
- COMMON/FGERCM/IERR,IERCT
- DATA JJJ/0/
- INTPTF(Q)=Q+Q+SIGN(.10,Q)
- IPARF(I)=4*(I/4)-I+1
-C*IA Q
- DATA Q/0/
- IERR= 0
- KEY= 2
- CALL NOARG(NARG)
- IF (NARG.EQ.3) KEY=4
- GO TO 1
-C
-#if (defined(CERNLIB_CDC))&&(defined(CERNLIB_F4))
- ENTRY WIGN3J
-#endif
-#if (defined(CERNLIB_IBM))&&(defined(CERNLIB_F4))
- ENTRY WIGN3J(/A/,/B/,/C/,/XX/,/YY/,/ZZ/,/GG/,/HH/,/PP/)
-#endif
-#if (!defined(CERNLIB_CDC)||!defined(CERNLIB_F4))&&(!defined(CERNLIB_IBM)||!defined(CERNLIB_F4))
- ENTRY WIGN3J(A,B,C,XX,YY,ZZ,GG,HH,PP)
-#endif
- IERR=0
- CALL NOARG(NARG)
- IF(NARG.EQ.3) GOTO 2
- KEY=1
- GOTO 1
- 2 KEY=3
- GOTO 1
-C
-#if (defined(CERNLIB_CDC))&&(defined(CERNLIB_F4))
- ENTRY RACAHC
-#endif
-#if (defined(CERNLIB_IBM))&&(defined(CERNLIB_F4))
- ENTRY RACAHC(/A/,/B/,/C/,/XX/,/YY/,/ZZ/,/GG/,/HH/,/PP/)
-#endif
-#if (!defined(CERNLIB_CDC)||!defined(CERNLIB_F4))&&(!defined(CERNLIB_IBM)||!defined(CERNLIB_F4))
- ENTRY RACAHC(A,B,C,XX,YY,ZZ,GG,HH,PP)
-#endif
- KEY=12
- IERR=0
- GOTO 100
-C
-#if (defined(CERNLIB_CDC))&&(defined(CERNLIB_F4))
- ENTRY WIGN6J
-#endif
-#if (defined(CERNLIB_IBM))&&(defined(CERNLIB_F4))
- ENTRY WIGN6J(/A/,/B/,/C/,/XX/,/YY/,/ZZ/,/GG/,/HH/,/PP/)
-#endif
-#if (!defined(CERNLIB_CDC)||!defined(CERNLIB_F4))&&(!defined(CERNLIB_IBM)||!defined(CERNLIB_F4))
- ENTRY WIGN6J(A,B,C,XX,YY,ZZ,GG,HH,PP)
-#endif
- KEY=11
- IERR=0
- GOTO 100
-C
-#if (defined(CERNLIB_CDC))&&(defined(CERNLIB_F4))
- ENTRY JAHNUF
-#endif
-#if (defined(CERNLIB_IBM))&&(defined(CERNLIB_F4))
- ENTRY JAHNUF(/A/,/B/,/C/,/XX/,/YY/,/ZZ/,/GG/,/HH/,/PP/)
-#endif
-#if (!defined(CERNLIB_CDC)||!defined(CERNLIB_F4))&&(!defined(CERNLIB_IBM)||!defined(CERNLIB_F4))
- ENTRY JAHNUF(A,B,C,XX,YY,ZZ,GG,HH,PP)
-#endif
- KEY=13
- IERR=0
- GOTO 100
-C
- 1 K1=INTPTF(A)
- K2=INTPTF(B)
- K3=INTPTF(C)
- IF(KEY.GE.3) GOTO 100
- K4=INTPTF(XX)
- K5=INTPTF(YY)
- K6= INTPTF(ZZ)
- IF (KEY.EQ.1) K6= -K6
-C
- 100 IF(JJJ.NE.0) GOTO 500
- JJJ=1
- IERCT=0
- H(1)=1.0
- J(1)=0
- X=0.
- DO 400 I=2,101
- X=X+1.0
- H(I)=H(I-1)*X
- J(I)=J(I-1)
- 200 IF(H(I).LT.10.0) GOTO 400
- H(I)=0.01*H(I)
- J(I)=J(I)+2
- GOTO 200
- 400 CONTINUE
-C
- 500 IF(KEY.LT.-5) GOTO 750
- IF(KEY.GE.3) GOTO 320
- IF((K4+K5-K6).NE.0) GOTO 710
- M1=K1+K2-K3
- M2=K2+K3-K1
- M3=K3+K1-K2
- M4=K1+K4
- M5=K1-K4
- M6=K2+K5
- M7=K2-K5
- M8=K3+K6
- M9=K3-K6
- M10=K1+K2+K3+2
-C
- IF(M1.LT.0) GOTO 710
- IF(M2.LT.0) GOTO 710
- IF(M3.LT.0) GOTO 710
- IF(M4.LT.0) GOTO 710
- IF(M5.LT.0) GOTO 710
- IF(M6.LT.0) GOTO 710
- IF(M7.LT.0) GOTO 710
- IF(M8.LT.0) GOTO 710
- IF(M9.LT.0) GOTO 710
- IF((M4-(M4/2)-(M4/2)).NE.0) GOTO 710
- IF((M6-(M6/2)-(M6/2)).NE.0) GOTO 710
- IF((M8-(M8/2)-(M8/2)).NE.0) GOTO 710
- IF((M10-(M10/2)-(M10/2)).NE.0) GOTO 710
-C
- Y=K3+1
- M1=M1/2+1
- M2=M2/2+1
- M3=M3/2+1
- M4=M4/2+1
- M5=M5/2+1
- M6=M6/2+1
- M7=M7/2+1
- M8=M8/2+1
- M9=M9/2+1
- M10=M10/2+1
-C
- Y= SQRT(Y*H(M1)*H(M2)*H(M3)*H(M4)*H(M5)*
- X H(M6)*H(M7)*H(M8)*H(M9)/H(M10))
- IY=(J(M1)+J(M2)+J(M3)+J(M4)+J(M5)+
- X J(M6)+J(M7)+J(M8)+J(M9)-J(M10))/2
-C
- N4=M1
- IF(N4.GT.M5)N4=M5
- IF(N4.GT.M6)N4=M6
- N4=N4-1
- M2=K2-K3-K4
- M3=K1+K5-K3
- N5=0
- IF(N5.LT.M2) N5=M2
- IF(N5.LT.M3) N5=M3
- N5PAR=IPARF(N5)
- N5=N5/2
- Z=0.0
- GOTO 610
-C
- 700 MM1=M1-N5
- MM2=M5-N5
- MM3=M6-N5
- MM4=N5-(M2/2)+1
- MM5=N5-(M3/2)+1
-C
- X=1./(H(MM1)*H(MM2)*H(MM3)*H(MM4)*H(MM5)*H(N5+1))
- IX=-J(MM1)-J(MM2)-J(MM3)-J(MM4)-J(MM5)-J(N5+1)
-C
- 800 IF(IX+IY)900,210,110
- 900 X=0.1*X
- IX=IX+1
- GOTO 800
- 110 X=10.0 *X
- IX=IX-1
- GOTO 800
-C
- 210 IF(N5PAR.LT.0) X=-X
- Z=Z+X
-C*UL 510 N5PAR=-N5PAR
- N5PAR=-N5PAR
- N5=N5+1
-C
- 610 IF(N5-N4)700,700,810
-C
- 710 CLEBSH=0.0
- IERR=1
- IERCT=IERCT+1
- GOTO 220
-C
- 810 CLEBSH=Z*Y
-C*UL 910 GOTO(120,220),KEY
- GOTO(120,220),KEY
-C
- 220 CLEBSG=CLEBSH
- RETURN
-C
- 120 JS=K1-K2+K6
- IF(JS.LT.0) JS=-JS
- JSPAR=IPARF(JS)
- CLEBSG=JSPAR*CLEBSH/ SQRT(K3+1.0 )
- RETURN
-C
- 320 IF(KEY.GE.10) GOTO 130
- KEY=KEY-2
- IF((K1-(K1/2)-(K1/2)).NE.0) GOTO 420
- IF((K2-(K2/2)-(K2/2)).NE.0) GOTO 420
- IF((K3-(K3/2)-(K3/2)).NE.0) GOTO 420
- IJ=K1+K2+K3
- IJPAR=IPARF(IJ)
- IF(IJPAR.LE.0) GOTO 420
- M1=IJ-K1-K1
- M2=IJ-K2-K2
- M3=IJ-K3-K3
- M4=IJ+2
- IF(M1.LT.0) GOTO 420
- IF(M2.LT.0) GOTO 420
- IF(M3.LT.0) GOTO 420
- M1=M1/2+1
- M2=M2/2+1
- M3=M3/2+1
- M4=IJ/2+2
- Y= SQRT(H(M1)*H(M2)*H(M3)/H(M4))
- IY=(J(M1)+J(M2)+J(M3)-J(M4))/2
- IJ=IJ/2
- IJPAR=IPARF(IJ)
- IJ=IJ/2+1
- M1=M1/2+1
- M2=M2/2+1
- M3=M3/2+1
- Z=H(IJ)/(H(M1)*H(M2)*H(M3))
- IZ=J(IJ)-J(M1)-J(M2)-J(M3)
- IZ=IZ+IY
- CLEBSH=IJPAR*Y*Z*10.0 **IZ
- GOTO(220,720),KEY
-C
- 720 JQ=K2-K1
- IF(JQ.LT.0) JQ=-JQ
- IJPAR=IPARF(JQ)
- CLEBSG=CLEBSH*IJPAR* SQRT(K3+1.0 )
- RETURN
-C
- 420 CLEBSH=0.0
- IERR=1
- IERCT=IERCT+1
- GOTO(220,720),KEY
-C
- 130 IF(KEY.EQ.11) GOTO 450
- IF(KEY.GT.19) GOTO 750
-C*UL 550 K1=INTPTF(A)
- K1=INTPTF(A)
- K2=INTPTF(B)
- K3=INTPTF(YY)
- K4=INTPTF(XX)
- K5=INTPTF(C)
- K6=INTPTF(ZZ)
-C
- 750 KA=K1
- KB=K2
- KC=K3
- KEYTRI=1
- GOTO 630
-C
- 230 KA=K4
- KB=K5
- KEYTRI=2
- GOTO 630
-C
- 330 KB=K2
- KC=K6
- KEYTRI=3
- GOTO 630
-C
- 430 KA=K1
- KB=K5
- KEYTRI=4
- GOTO 630
-C
- 530 Y=AY(1)*AY(2)*AY(3)*AY(4)
- IYY=IAY(1)+IAY(2)+IAY(3)+IAY(4)
- M1=(K1+K2+K4+K5)/2+2
- M2=(K1+K2-K3)/2+1
- M3=(K4+K5-K3)/2+1
- M4=(K1+K5-K6)/2+1
- M5=(K2+K4-K6)/2+1
- M6=K1+K4-K3-K6
- M7=K2+K5-K3-K6
-C
- N4=M1
- IF(N4.GT.M2) N4=M2
- IF(N4.GT.M3) N4=M3
- IF(N4.GT.M4) N4=M4
- IF(N4.GT.M5) N4=M5
- N4=N4-1
- N5=0
- IF(N5.LT.M6) N5=M6
- IF(N5.LT.M7) N5=M7
- N5PAR=IPARF(N5)
- N5=N5/2
- M6=M6/2-1
- M7=M7/2-1
- Z=0.0
- GOTO 730
-C
- 140 X=H(M1-N5)/(H(N5+1)*H(M2-N5)*H(M3-N5)*H(M4-N5)
- X *H(M5-N5)*H(N5-M6)*H(N5-M7))
- IX=J(M1-N5)-J(N5+1)-J(M2-N5)-J(M3-N5)-J(M4-N5)
- X -J(M5-N5)-J(N5-M6)-J(N5-M7)
- 240 IF(IX+IYY)340,440,540
- 340 X=0.1*X
- IX=IX+1
- GOTO 240
- 540 X=10.0 *X
- IX=IX-1
- GOTO 240
- 440 IF(N5PAR.LT.0) X=-X
- Z=Z+X
- N5PAR=-N5PAR
- N5=N5+1
-C
- 730 IF(N5.LE.N4) GOTO 140
-C
- RACAH=Z*Y
- 840 IF(KEY.LT.-5) GOTO 160
- KEY=KEY-10
- GOTO(150,250,350),KEY
-C
- 830 RACAH=0.0
- IERR=1
- IERCT=IERCT+1
- GOTO 840
-C
- 150 IJPAR=IPARF(K1+K2+K4+K5)
- IF(IJPAR.LT.0) RACAH=-RACAH
- 250 CLEBSG=RACAH
- RETURN
-C
- 350 FACTOR= SQRT((K3+1.0 )*(K6+1))
- CLEBSG=FACTOR*RACAH
- RETURN
- 450 K1=INTPTF(A)
- K2=INTPTF(B)
- K3=INTPTF(C)
- K4=INTPTF(XX)
- K5=INTPTF(YY)
- K6=INTPTF(ZZ)
- GOTO 750
-C
-C TRIANGLE FUNCTION
-C
- 630 MA=KA+KB-KC
- MB=KA-KB+KC
- MC=-KA+KB+KC
- MD=KA+KB+KC+2
- IF(MA.LT.0) GOTO 830
- IF(MB.LT.0) GOTO 830
- IF(MC.LT.0) GOTO 830
- IF((MD-(MD/2)-(MD/2)).NE.0) GOTO 830
- MA=MA/2+1
- MB=MB/2+1
- MC=MC/2+1
- MD=MD/2+1
- AY(KEYTRI)= SQRT(H(MA)*H(MB)*H(MC)/H(MD))
- IAY(KEYTRI)=(J(MA)+J(MB)+J(MC)-J(MD))/2
- GOTO(230,330,430,530),KEYTRI
-C
-#if (defined(CERNLIB_CDC))&&(defined(CERNLIB_F4))
- ENTRY WIGN9J
-#endif
-#if (defined(CERNLIB_IBM))&&(defined(CERNLIB_F4))
- ENTRY WIGN9J(/A/,/B/,/C/,/XX/,/YY/,/ZZ/,/GG/,/HH/,/PP/)
-#endif
-#if (!defined(CERNLIB_CDC)||!defined(CERNLIB_F4))&&(!defined(CERNLIB_IBM)||!defined(CERNLIB_F4))
- ENTRY WIGN9J(A,B,C,XX,YY,ZZ,GG,HH,PP)
-#endif
-C
- KEY=-10
- IERR=0
-C
- KK1=INTPTF(A)
- KK2=INTPTF(B)
- KK3=INTPTF(C)
- KK4=INTPTF(XX)
- KK5=INTPTF(YY)
- KK6=INTPTF(ZZ)
- KK7=INTPTF(GG)
- KK8=INTPTF(HH)
- KK9=INTPTF(PP)
-C
- KUP=KK1+KK9
- M1=KK4+KK8
- M2=KK2+KK6
- IF(KUP.GT.M1) KUP=M1
- IF(KUP.GT.M2) KUP=M2
-C
- K=KK1-KK9
- IF(K.LT.0) K=-K
- M1=KK4-KK8
- IF(M1.LT.0) M1=-M1
- M2=KK2-KK6
- IF(M2.LT.0) M2=-M2
- IF(K.LT.M1) K=M1
- IF(K.LT.M2) K=M2
-C
- ANINE=0.0
-C
- 660 IF(K.GT.KUP) GOTO 260
- K1=KK1
- K2=KK4
- K3=KK7
- K4=KK8
- K5=KK9
- K6=K
- KEYRAC=1
- GOTO 100
-C
- 160 GOTO(360,460,560),KEYRAC
-C
- 360 RA=RACAH
- K1=KK2
- K2=KK8
- K3=KK5
- K4=KK4
- K5=KK6
- KEYRAC=2
- GOTO 750
-C
- 460 RB=RACAH
- K1=KK9
- K2=KK6
- K3=KK3
- K4=KK2
- K5=KK1
- KEYRAC=3
- GOTO 750
-C
- 560 ANINE=ANINE+RA*RB*RACAH*(K+1)
- K=K+2
- GOTO 660
-C
- 260 CLEBSG=ANINE
- RETURN
- END