]> git.uio.no Git - u/mrichter/AliRoot.git/blob - MINICERN/mathlib/gen/g/studis.F
This commit was generated by cvs2svn to compensate for changes in r2,
[u/mrichter/AliRoot.git] / MINICERN / mathlib / gen / g / studis.F
1 *
2 * $Id$
3 *
4 * $Log$
5 * Revision 1.1.1.1  1996/04/01 15:02:42  mclareni
6 * Mathlib gen
7 *
8 *
9 #include "gen/pilot.h"
10       FUNCTION STUDIS(T,N)
11 C    THIS ROUTINE COMPUTES THE DISTRIBUTION FUNCTION OF THE
12 C    STUDENT DISTRIBUTION WITH N DEGREES OF FREEDOM.
13 C    T=VALUE OF THE INDEPENDENT VARIABLE,
14 C    N=INTEGER GREATER THAN ZERO.
15 C    THE ROUTINE WAS WRITTEN  BY B.E. COOPER,APPLIED STATISTICS,
16 C     17(1968)189-190
17 C    ALGORITHM AS3. THE METHOD WHICH IS THEORETICALLY EXACT WAS GIVEN BY
18 C    D.B. OWEN,BIOMETRIKA,52(1965),437-446.
19 C    AT LEAST 9 DECIMAL PLACES ARE CORRECT.
20       DATA G1/0.31830988618379/
21       IF(N-1) 1,2,3
22     2 STUDIS=0.5+G1*ATAN(T)
23       RETURN
24     3 FN=N
25       A=T/SQRT(FN)
26       B=FN/(FN+T*T)
27       S=1.
28       N2=N-2
29       N3=MOD(N,2)
30       IF(N2 .LT. 2) GO TO 4
31       C=1.
32       K=2+N3
33       FK=K
34       DO 5 I=K,N2,2
35            C=C*B*(FK-1.)/FK
36            S=S+C
37     5      FK=FK+2.
38     4 IF(N3 .NE. 0) GO TO 6
39       STUDIS=0.5+0.5*A*SQRT(B)*S
40       RETURN
41     6 STUDIS=0.5+(A*B*S+ATAN(A))*G1
42       RETURN
43     1 WRITE(6,7) N
44       STOP
45     7 FORMAT(/10X,'DEGREE OF FREEDOM N=',I5,' IN STUDIS ILLEGAL'/)
46       END