Guest User

Untitled

a guest
Oct 17th, 2018
188
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.41 KB | None | 0 0
  1. PROGRAM RINOTT
  2. C
  3. C PROGRAM TO CALCULATE G(T,PSTAR,NU) OF RINOTT PROCEDURE
  4. C
  5. DOUBLE PRECISION ZCDF,CHIPDF
  6. DOUBLE PRECISION PSTAR,H
  7. DOUBLE PRECISION X(32),W(32),WEX(32),DUMMY,LNGAM(50),
  8. *LOWERH,UPPERH,ANS,TMP
  9. INTEGER I,T,NU,LOOPH
  10. EXTERNAL ZCDF
  11. C
  12. INCLUDE 'GLQUAD'
  13. C
  14. C CALCULATE LNGAM(K) = LN(GAMMA(K/2))
  15. C
  16. LNGAM(1) = 0.5723649429
  17. LNGAM(2) = 0.0
  18. DO 100 I = 2,25
  19. LNGAM(2*I - 1) = DLOG(DBLE(I)-1.50D0) + LNGAM(2*I - 3)
  20. LNGAM(2*I) = DLOG(DBLE(I) - 1.0D0) + LNGAM(2*I - 2)
  21. 100 CONTINUE
  22. C
  23. C READ PARAMETERS FOR WHICH TO DETERMINE G(T,PSTAR,\NU)
  24. C
  25. 110 WRITE(6,*) 'ENTER T,P-STAR AND NU'
  26. READ(5,*) T,PSTAR,NU
  27. IF (NU .LT. 5) THEN
  28. WRITE(6,520)
  29. STOP
  30. ELSE
  31. IF (T .LT. 2) THEN
  32. WRITE(6,530)
  33. STOP
  34. ENDIF
  35. ENDIF
  36. DUMMY = 1.0D0
  37. C
  38. C
  39. H = 4.0D0
  40. LOWERH = 0.0D0
  41. UPPERH = 20.00
  42. C
  43. DO 120 LOOPH = 1,50
  44. C
  45. ANS = 0.0D0
  46. DO 130 J = 1,32
  47. TMP = 0.0D0
  48. DO 140 I = 1,32
  49. TMP = TMP + WEX(I)
  50. * * ZCDF(H/DSQRT(DBLE(NU)*(1.0D0/X(I) + 1.0D0/X(J))/DUMMY))
  51. * * CHIPDF(NU,DUMMY*X(I),LNGAM) * DUMMY
  52. 140 CONTINUE
  53. TMP = TMP ** (T-1)
  54. 130 ANS = ANS + WEX(J) * TMP * CHIPDF(NU,DUMMY*X(J),LNGAM)*DUMMY
  55. C
  56. IF(DABS(ANS-PSTAR) .GT. 0.000001D0) GOTO 150
  57. C
  58. C IF NOT, THEN DONE SO WRITE G(T,PSTAR,\NU)
  59. C
  60. WRITE(6,500) PSTAR,T,NU,H
  61. WRITE(6,*) 'DO YOU WANT TO CONTINUE? PLEASE ANSWER Y/N'
  62. READ(5,510) CHOICE2
  63. IF (CHOICE2 .EQ. 'Y' .OR. CHOICE2 .EQ. 'y') GOTO 110
  64. STOP
  65. 150 IF(ANS .GT. PSTAR) GOTO 160
  66. LOWERH = H
  67. H = (LOWERH + UPPERH)/2.0D0
  68. GOTO 120
  69. 160 UPPERH = H
  70. H = (LOWERH + UPPERH)/2.0D0
  71. 120 CONTINUE
  72. C
  73. 500 FORMAT(1X,' G^{',F5.3,'}_{',I3,',',I3,'} = ',F6.3)
  74. 510 FORMAT(A1)
  75. 520 FORMAT(1X,'THIS PROGRAM WILL NOT COMPUTE G FOR LESS',/,
  76. *' THAN 5 DEGREES OF FREEDOM')
  77. 530 FORMAT(1X,' T MUST BE AN INTEGER GREATER THAN OR EQUAL TO 2')
  78. C
  79. END
  80. C
  81. C
  82. DOUBLE PRECISION FUNCTION CHIPDF(N,C,LNGAM)
  83. C
  84. C THIS GIVES THE PDF OF THE CHI^2 DISTN WITH N DF FOR N .LE. 50.
  85. C LNGAM(N) IS LN(GAMMA(N/2))
  86. C
  87. DOUBLE PRECISION C,TMP,LNGAM(50),FLN2
  88. INTEGER N
  89. FLN2 = DBLE(N)/2.
  90. TMP = -FLN2*DLOG(2.0D0) - LNGAM(N) +
  91. * (FLN2 - 1.0D0)*DLOG(C) - C/2.0D0
  92. CHIPDF = DEXP(TMP)
  93. RETURN
  94. END
Add Comment
Please, Sign In to add comment