]> git.uio.no Git - u/mrichter/AliRoot.git/blob - MINICERN/mathlib/gen/u/djmnb64.F
This commit was generated by cvs2svn to compensate for changes in r2,
[u/mrichter/AliRoot.git] / MINICERN / mathlib / gen / u / djmnb64.F
1 *
2 * $Id$
3 *
4 * $Log$
5 * Revision 1.1.1.1  1996/04/01 15:01:49  mclareni
6 * Mathlib gen
7 *
8 *
9 #include "gen/pilot.h"
10 #if !defined(CERNLIB_DOUBLE)
11       FUNCTION RDJMNB(AJ,AM,AN,BETA)
12 #endif
13 #if defined(CERNLIB_DOUBLE)
14       FUNCTION DDJMNB(AJ,AM,AN,BETA)
15 #include "gen/imp64.inc"
16 #endif
17 C     Calculates the beta-term
18 C                         d j mn (beta)
19 C     in the matrix element of the finite rotation operator
20 C     (Wigner's D-function), according to formula 4.3.1(3) in
21 C     D.A. Varshalovich, A.N. Moskalev, and V.K. Khersonskii,
22 C     Quantum Theory of Angular Momentum, World Scientific,
23 C     Singapore 1988
24
25
26       CHARACTER NAME*(*)
27       CHARACTER*80 ERRTXT
28 #if !defined(CERNLIB_DOUBLE)
29       PARAMETER (NAME = 'DJMNB')
30 #endif
31 #if defined(CERNLIB_DOUBLE)
32       PARAMETER (NAME = 'DDJMNB')
33 #endif
34       DIMENSION FCL(0:50)
35
36       PARAMETER (Z1 = 1, HF = Z1/2)
37       PARAMETER (F = 8.72664 62599 71647 88D-3)
38
39       DATA FCL( 0) /0/
40       DATA FCL( 1) /0/
41       DATA FCL( 2) /6.93147180559945309D-01/
42       DATA FCL( 3) /1.79175946922805500D+00/
43       DATA FCL( 4) /3.17805383034794562D+00/
44       DATA FCL( 5) /4.78749174278204599D+00/
45       DATA FCL( 6) /6.57925121201010100D+00/
46       DATA FCL( 7) /8.52516136106541430D+00/
47       DATA FCL( 8) /1.06046029027452502D+01/
48       DATA FCL( 9) /1.28018274800814696D+01/
49       DATA FCL(10) /1.51044125730755153D+01/
50       DATA FCL(11) /1.75023078458738858D+01/
51       DATA FCL(12) /1.99872144956618861D+01/
52       DATA FCL(13) /2.25521638531234229D+01/
53       DATA FCL(14) /2.51912211827386815D+01/
54       DATA FCL(15) /2.78992713838408916D+01/
55       DATA FCL(16) /3.06718601060806728D+01/
56       DATA FCL(17) /3.35050734501368889D+01/
57       DATA FCL(18) /3.63954452080330536D+01/
58       DATA FCL(19) /3.93398841871994940D+01/
59       DATA FCL(20) /4.23356164607534850D+01/
60       DATA FCL(21) /4.53801388984769080D+01/
61       DATA FCL(22) /4.84711813518352239D+01/
62       DATA FCL(23) /5.16066755677643736D+01/
63       DATA FCL(24) /5.47847293981123192D+01/
64       DATA FCL(25) /5.80036052229805199D+01/
65       DATA FCL(26) /6.12617017610020020D+01/
66       DATA FCL(27) /6.45575386270063311D+01/
67       DATA FCL(28) /6.78897431371815350D+01/
68       DATA FCL(29) /7.12570389671680090D+01/
69       DATA FCL(30) /7.46582363488301644D+01/
70       DATA FCL(31) /7.80922235533153106D+01/
71       DATA FCL(32) /8.15579594561150372D+01/
72       DATA FCL(33) /8.50544670175815174D+01/
73       DATA FCL(34) /8.85808275421976788D+01/
74       DATA FCL(35) /9.21361756036870925D+01/
75       DATA FCL(36) /9.57196945421432025D+01/
76       DATA FCL(37) /9.93306124547874269D+01/
77       DATA FCL(38) /1.02968198614513813D+02/
78       DATA FCL(39) /1.06631760260643459D+02/
79       DATA FCL(40) /1.10320639714757395D+02/
80       DATA FCL(41) /1.14034211781461703D+02/
81       DATA FCL(42) /1.17771881399745072D+02/
82       DATA FCL(43) /1.21533081515438634D+02/
83       DATA FCL(44) /1.25317271149356895D+02/
84       DATA FCL(45) /1.29123933639127215D+02/
85       DATA FCL(46) /1.32952575035616310D+02/
86       DATA FCL(47) /1.36802722637326368D+02/
87       DATA FCL(48) /1.40673923648234259D+02/
88       DATA FCL(49) /1.44565743946344886D+02/
89       DATA FCL(50) /1.48477766951773032D+02/
90
91       JPM=NINT(AJ+AM)
92       JPN=NINT(AJ+AN)
93       JMM=NINT(AJ-AM)
94       JMN=NINT(AJ-AN)
95       MPN=NINT(AM+AN)
96
97       IF(JPM .LT. 0 .OR. JPN .LT. 0 .OR. JMM .LT. 0 .OR. JMN .LT. 0
98      1 .OR. AJ .LT. 0 .OR. AJ .GT. 25
99      2 .OR. BETA .LT. 0 .OR. BETA .GT. 360) THEN
100        R=0
101        WRITE(ERRTXT,101) AJ,AM,AN,BETA
102        CALL MTLPRT(NAME,'U501.1',ERRTXT)
103       ELSEIF(BETA .EQ. 0) THEN
104        R=0
105        IF(JPM .EQ. JPN) R=1
106       ELSEIF(BETA .EQ. 180) THEN
107        R=0
108        IF(JPM .EQ. JMN) R=(-1)**MOD(ABS(JPM),2)
109       ELSEIF(BETA .EQ. 360) THEN
110        R=0
111        IF(JPM .EQ. JPN) R=(-1)**MOD(ABS(MPN),2)
112       ELSE
113        B=F*BETA
114        S=LOG(SIN(B))
115        C=LOG(ABS(COS(B)))
116        RT=HF*(FCL(JPM)+FCL(JMM)+FCL(JPN)+FCL(JMN))
117        K0=MAX(0,MPN)
118        KQ=K0+JPM
119        IF(BETA .GT. 180) KQ=KQ+MPN
120        Q=(-1)**KQ
121        KQ=K0+K0
122        CX=KQ-MPN
123        SX=JPM+JPN-KQ
124        R=0
125        DO 1 K = K0,MIN(JPM,JPN)
126        R=R+Q*EXP(RT-FCL(K)-FCL(JPM-K)-FCL(JPN-K)-FCL(K-MPN)+
127      1           CX*C+SX*S)
128        CX=CX+2
129        SX=SX-2
130     1  Q=-Q
131       ENDIF
132 #if !defined(CERNLIB_DOUBLE)
133       RDJMNB=R
134 #endif
135 #if defined(CERNLIB_DOUBLE)
136       DDJMNB=R
137 #endif
138       RETURN
139   101 FORMAT('ILLEGAL ARGUMENT(S) AJ = ',F6.1,' AM = ',F6.1,' AN = ',
140      1        F6.1,' BETA = ',F8.2)
141       END