4000.11. FORTRAN Code for coupling constants with QUAD precision output (28 to 31 decimal digits precision).

This FORTRAN code computes coupling constants from K-39.0 to K+18.5

 

      PROGRAM ALFA_GENERAL

     

      IMPLICIT NONE

     

      COMPLEX*32 EXPM, ALFA_MINUS_HALF, ALFA_SQUARE

      COMPLEX*32 ALFA_FINAL, C_0, C_87, C_8

      REAL*16 B_1, B_2, B_3

      REAL*16 C_1, C_2

      COMPLEX*32 A, B, C

      COMPLEX*32 ALFA_MINUS_HALF_1, ALFA_MINUS_HALF_3

      REAL*16 ALFA_MINUS_HALF_2

      REAL*16 REAL_PART, ABSOL_VALUE

      COMPLEX*32 IMAG_PART

      COMPLEX*32 THETA, THETA_DEG

     

C      REAL*8 A, B, C

     

      REAL*16 X

     

      INTEGER*8 COUNTER, I

     

      C_0 = 0.98697635038435719239551219363426327409509390153844Q+00

C PI/E

C      C_87 = 0.3141592653589793238462643383279502797D+01 / 0.27182818284&

C     &59045235360287471352662314D+01

      C_87 = ( 0.31415926535897932384626433832795027974790680981373Q+01 &

     &/  0.27182818284590452353602874713526623143584218671935Q+01 )

C PI

      C_8 =  0.31415926535897932384626433832795027974790680981373Q+01

     

     

     

      OPEN(UNIT=11, FILE='C:/FORTRAN/ALFA & THETA GENERAL QUAD PRECISION&

     &ONE HALF.TXT')

     

     

     

     

     

     

C      COUNTER = 0

C      I = 1

     

      DO 100 I = -240, 40

     

     

      X = QEXT(I) / 2.0Q+00

     

C      COUNTER = COUNTER + 1

     

C PART A OF EXPM = (A/B)^C

      A =  ((C_0) ** (((X - 8.00Q+00) / 8.00Q+00)) )

     

     

C PART B OF EXPM = (A/B)^C

C PART B_1 IS EQUAL TO THE CONSTANT C WITH INDEX I

      B_1 = (( C_0 ) * (( C_87 )** (X)))

     

      B_2 =  (( X - 8.00Q+00 ) / ( X** 2.00Q+00 - 16.00Q+00 * X + 80.00Q&

     &+00 ) )

    

      B_3 =  (( 11.00Q+00 * X - 88.00Q+00 ) / 24.00Q+00 )

     

C FINAL RESULT FOR B

      B =  (( (B_1) * (B_2) ) ** QCMPLX (B_3) )

     

     

C c PART OF THE EQUATION (A/B) **C

      C_1 = (( C_0 ) * ((C_87 ) ** QCMPLX ( X )))

     

      C_2 =   QCMPLX (( ( X ) - 8.00Q+00) / 24.00Q+00 )

     

      C =  QCMPLX (( ( C_1)) * ( ( C_2)))

     

C EXPM = (A/B)**C

      EXPM = QCMPLX ((QCMPLX  (A) /  QCMPLX (B)) ** QCMPLX (C))

     

     

COMPUTE ALFA_MINUS_HALF_1 PART = RECIPROCAL OF ALPHA ^ 1/2

      ALFA_MINUS_HALF_1 = QCMPLX ((C_0) * ((C_87) ** (QCMPLX (X + (EXPM)&

     & ) ) ))

    

COMPUTE ALFA_MINUS_HALF_2 PART = RECIPROCAL OF ALPHA ^ 1/2

      ALFA_MINUS_HALF_2 = (( X - 8.00Q+00 ) / (( X*X ) - 16.00Q+00 *X +8&

     &0.00Q+00) )

    

C COMPUTE ALFA_MINUS_HALF_3 PART OF RECIPROCAL OF ALPHA ^ (-1/2)

      ALFA_MINUS_HALF_3 =  ( ((9.00Q+00 * X ) - 8.00Q+00 ) / ( 8.00Q+00 &

     &* EXPM ) )

    

C COMPUTE FINAL ALFA MINUS HALF = (PART18PART2)**PART3

      ALFA_MINUS_HALF =  ((( ( ALFA_MINUS_HALF_1 )) * (( ALFA_MINUS_HALF&

     &_2 )) ) ** (  QCMPLX ( ALFA_MINUS_HALF_3 )) )

    

C ALFA_MINUS_HALF SQUARED = RECIPROCAL OF ALFA

      ALFA_SQUARE =  ( ( ALFA_MINUS_HALF ) ** 2.00Q+00 )

    

C FINAL ALFA = 1 / ALFA_SQUARE

      ALFA_FINAL =  ( 1.00Q+00 /  ( ALFA_SQUARE ) )

     

C REAL PART OF ALFA

      REAL_PART = QREAL (ALFA_FINAL)

     

C IMAGINARY PART OF ALFA

      IMAG_PART = QIMAG (ALFA_FINAL)

     

C ABSOLUTE VALUE OF ALFA (MODULUS)

      ABSOL_VALUE = ABS  (ALFA_FINAL)

     

C ARCTAN OF THE POLAR FORM = THETA = Y/X

      THETA = ATAN2 ( QIMAG (ALFA_FINAL) , QREAL (ALFA_FINAL ))

     

C ANGLE THETA IN DEGREES

      THETA_DEG = ( THETA * 180.00Q+00 ) / C_8

     

     

      WRITE(11,*)'LOOP VARIABLE X = X-AXIS CONSTANT....................'

      WRITE(11,*) X

      WRITE(11,*)'_____________________________________________________'

     

     

      WRITE(11,*)'PART A...............................................'

      WRITE(11, *) X, QCMPLX (A)

      WRITE(11,*)'_____________________________________________________'

     

C      WRITE(11,*) I, X

C      WRITE (11,*) C_87

     

C      WRITE (11,200) I, A

     

     

      WRITE(11,*)'PART B...............................................'

      WRITE (11,*) X,  (B_1)

     

      WRITE (11,*) X,  (B_2)

     

      WRITE (11,*) X,  (B_3)

     

      WRITE (11,*) X, QCMPLX (B)

     

      WRITE(11,*)'_____________________________________________________'

     

      WRITE(11,*)'PART C...............................................'

     

      WRITE (11, *) X, QCMPLX (C_1)

      WRITE (11, *) X, QCMPLX (C_2)

     

      WRITE (11, *) X, QCMPLX (C)

     

      WRITE(11,*)'_____________________________________________________'

      WRITE(11,*)'EXPONENT MAIN = (A/B)**C.............................'

     

      WRITE(11,*) X, QCMPLX (EXPM)

     

      WRITE(11,*)'_____________________________________________________'

      WRITE(11,*)'ALFA ^ ( -1/2 ) PART.................................'

     

      WRITE(11,*) X, QCMPLX (ALFA_MINUS_HALF_1)

     

      WRITE(11,*) X, QCMPLX (ALFA_MINUS_HALF_2)

     

      WRITE(11,*) X, QCMPLX (ALFA_MINUS_HALF_3)

     

      WRITE(11,*) X, QCMPLX (ALFA_MINUS_HALF)

     

      WRITE (11,*)'ALFA SQUARE_________________________________________'

     

      WRITE(11,*) X,  (ALFA_SQUARE)

     

      WRITE(11,*)'_____________________________________________________'

     

      WRITE(11,*)'ALPHA FINAL = RECIPROCAL OF ALFA MINUS 1_____________'

     

      WRITE(11,*) X, ( ALFA_FINAL )

     

      WRITE(11,*)'_____________________________________________________'

     

      WRITE(11,*)'REAL PART OF ALPHA...................................'

      WRITE(11,*) X, REAL_PART

     

      WRITE(11,*)'IMAGINARY PART OF ALPHA..............................'

      WRITE(11,*) X, IMAG_PART

     

      WRITE(11,*)'_____________________________________________________'

     

      WRITE(11,*)'ABSOLUTE VALUE = MODULUS OF ALFA.....................'

     

      WRITE(11,*) X, ABSOL_VALUE

     

      WRITE(11,*)'ANGLE THETA OF POLAR FORM............................'

     

      WRITE(11,*) (THETA)

     

      WRITE(11,*)'ANGLE THETA IN DEGREES...............................'

     

      WRITE(11,*) THETA_DEG

     

      WRITE(11,*)'_____________________________________________________'

     

     

     

     

     

     

     

     

100   CONTINUE

     

     

      CLOSE(11)

     

      STOP

     

200   FORMAT (I5, (F40.25, E40.25))

300   FORMAT (I5, E40.25)

     

     

      END PROGRAM ALFA_GENERAL

Comments powered by CComment