]>
Commit | Line | Data |
---|---|---|
fe4da5cc | 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 |