]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - MINICERN/mathlib/gen/u/clebsg.F.ori
This commit was generated by cvs2svn to compensate for changes in r2,
[u/mrichter/AliRoot.git] / MINICERN / mathlib / gen / u / clebsg.F.ori
diff --git a/MINICERN/mathlib/gen/u/clebsg.F.ori b/MINICERN/mathlib/gen/u/clebsg.F.ori
new file mode 100644 (file)
index 0000000..3caf948
--- /dev/null
@@ -0,0 +1,466 @@
+*
+* $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