The R Project SVN R

Rev

Rev 30227 | Rev 37598 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 30227 Rev 34956
Line 35... Line 35...
35
    if (ISNAN(p) || ISNAN(NR) || ISNAN(NB) || ISNAN(n))
35
    if (ISNAN(p) || ISNAN(NR) || ISNAN(NB) || ISNAN(n))
36
	return p + NR + NB + n;
36
	return p + NR + NB + n;
37
#endif
37
#endif
38
    if(!R_FINITE(p) || !R_FINITE(NR) || !R_FINITE(NB) || !R_FINITE(n))
38
    if(!R_FINITE(p) || !R_FINITE(NR) || !R_FINITE(NB) || !R_FINITE(n))
39
	ML_ERR_return_NAN;
39
	ML_ERR_return_NAN;
40
    R_Q_P01_check(p);
-
 
41
 
40
 
42
    NR = floor(NR + 0.5);
41
    NR = floor(NR + 0.5);
43
    NB = floor(NB + 0.5);
42
    NB = floor(NB + 0.5);
44
    N = NR + NB;
43
    N = NR + NB;
45
    n = floor(n + 0.5);
44
    n = floor(n + 0.5);
Line 50... Line 49...
50
     *   phyper(xr,  NR,NB, n) >= p > phyper(xr - 1,  NR,NB, n)
49
     *   phyper(xr,  NR,NB, n) >= p > phyper(xr - 1,  NR,NB, n)
51
     */
50
     */
52
 
51
 
53
    xstart = fmax2(0, n - NB);
52
    xstart = fmax2(0, n - NB);
54
    xend = fmin2(n, NR);
53
    xend = fmin2(n, NR);
-
 
54
 
55
    if(p == R_DT_0) return xstart;
55
    R_Q_P01_boundaries(p, xstart, xend);
56
    if(p == R_DT_1) return xend;
-
 
57
 
56
 
58
    xr = xstart;
57
    xr = xstart;
59
    xb = n - xr;/* always ( = #{black balls in sample} ) */
58
    xb = n - xr;/* always ( = #{black balls in sample} ) */
60
 
59
 
61
    small_N = (N < 1000); /* won't have underflow in product below */
60
    small_N = (N < 1000); /* won't have underflow in product below */