C #CLEBSH V1A 15-FEB-72. C LAST UPDATE: C FUNCTION CLEBSH(J1,M1,J2,M2,J3,M3) C C *PURPOSE. C TO CALCULATE THE CLEBSCH-GORDAN RECOUPLING COEFFICIENT C C *PARAMETERS: C C J1 - ANGULAR MOMENTUM QUANTUM NUMBER FOR FIRST STATE C M1 - AZIMUTHAL PROJECTION ANGULAR MOMENTUM QUANTUM NUMBER C FOR THE FIRST STATE. C J2 - AS J1 FOR THE SECOND STATE C M2 - AS M1 FOR THE SECOND STATE. C J3 - AS J1 FOR THE THIRD STATE. C M3 - AS M1 FOR THE THIRD STATE. C C !!NOTE!! BY CONVENTION ALL ANGULAR MOMENTUM QUANTUM NUMBERS C HAVE TWICE THEIR PHYSICAL VALUES!!. C C THE VALUE RETURNED IS FOR THE COUPLING OF STATES ONE C AND TWO TO THE ANGULAR MOMENTUM QUANTUM NUMBERS OF THREE. C C INPUT PARAMETERS: C J1, M1, J2, M2, J3, M3 C OUTPUT PARAMETERS: C (FUNCTION VALUE ONLY.) C C *METHOD. C IF THE "J" AND "M" VALUES ARE UNPHYSICAL IN THE SENSE C THAT THEY CANNOT EXIST OR CANNOT COUPLE THE VALUE ZERO IS C RETURNED. IF EITHER "J1" OR "J2" IS ZERO THE VALUE "1." CAN C BE RETURNED IMMEDIATELY, OTHERWISE THE FULL FORMULA IS USED C AS GIVEN ORIGINALLY BY G.RACAH, PHYS REV 62(1942)438. IT IS A C SUM OF TERMS INVOLVING FACTORIALS. C THE SUMMATION IS DONE BY FIRST CALCULATING THE FIRST TERM C IN FULL, AND CALCULATING SUCCESSIVE TERMS BY A RECURRENCE C FORMULA. MAXIMUM USE IS MADE OF INTEGER MULTIPLICATION IN C CASE THIS IS FASTER THAN FLOATING POINT. THIS METHOD SEEMS C QUITE STABLE AND IS MUCH BETTER THAN THE SIMPLE TECHNIQUE C OF CALCULATING EVERY TERM FROM SCRATCH WITH ITS POTENTIAL FOR C OVERFLOW. C C *ACCURACY. C THOROUGH TESTS HAVE NOT BEEN CARRIED OUT BUT IN ALL CASES C WHICH HAVE BEEN TESTED 5 OR MORE SIGNIFICANT FIGURES HAVE C BEEN ACHIEVED. C C *RESTRICTIONS. C IT IS UP TO THE CALLER TO ENSURE THAT THE "J" VALUES ARE C PHYSICALLY POSSIBLE. C C *ERROR CONDITIONS. C C *NON STANDARD ROUTINES CALLED. C TRIANG - TRIANGLE FUNCTION OF FACTORIALS - MRMLIB. C FAC2 - FACTORIAL OF HALF ARGUMENT - MRMLIB. C PARITY - + OR -1 AS ARGUMENT EVEN OR ODD - MRMLIB. C C *TYPICAL TIMES C C *ORIGIN. C M.R.MANNING. C C *COMMENTS. C C #END. C CLEBSH=0. IF(M1+M2-M3) 30,5,30 5 IF(IABS(M1)-J1) 7,7,30 7 IF(IABS(M2)-J2) 8,8,30 8 IF(IABS(M3)-J3) 9,9,30 C NOTE THAT IF THE J'S DO NOT COUPLE "TRIANG" IS ZERO LATER. 9 CLEBSH=1. IF(MIN0(J1,J2)) 30,30,10 10 IC1=J1+J2-J3 IC2=J1-M1 IC3=J2+M2 IND=MIN0(IC1,IC2,IC3) JC1=J2-J3-M1 JC2=J1-J3+M2 J=MAX0(JC1,JC2,0) CLEBSH=SQRT(FLOAT(J3+1)*TRIANG(J1,J2,J3)*FAC2(J1+M1)*FAC2(IC2) X *FAC2(IC3)*FAC2(J2-M2)*FAC2(J3+M3)*FAC2(J3-M3) ) SUM=0. TRM=PARITY(J/2)/(FAC2(J)*FAC2(IC1-J)*FAC2(IC2-J)*FAC2(IC3-J)* X FAC2(J-JC1)*FAC2(J-JC2) ) 11 I=J SUM=SUM+TRM IF(I-IND) 12,20,20 12 J=I+2 TRM=-TRM*FLOAT( (IC1-I)*(IC2-I)*(IC3-I))/FLOAT( J*(J-JC1)*(J-JC2)) GO TO 11 C 20 CLEBSH=CLEBSH*SUM 30 RETURN END