@@ -576,12 +576,15 @@ xL <- c(2^(1000+ c(1:23, 23.5, 23.9, 24-1e-13)), L, MxM, Inf)
576576(pP <- ppois(xL , mu )) # all 1
577577stopifnot(dP == 0 , pP == 1 , identical(pP , pgamma(mu , xL + 1 , 1 . , lower.tail = FALSE )))
578578# # cbind(xL, dP, pP)
579-
579+ # # dbinom(*, size=Inf, ..):
580+ stopifnot(dbinom(2 ^ c(0 : 1023 , 1023.999 ), size = Inf , prob = .1 ) == 0 ) # were all NaN
580581(dLmI <- dnbinom(xL , mu = 1 , size = Inf )) # all == 0
581- # # FIXME (boundary case, still!); MxM/2 seems +- ok ??
582- (dLmM <- dnbinom(xL , mu = 1 , size = MxM )) # all NaN but the last
583- (dLpI <- dnbinom(xL , prob = 1 / 2 , size = Inf ))# ditto
584- (dLpM <- dnbinom(xL , prob = 1 / 2 , size = MxM ))# ditto
582+ stopifnot(exprs = { # # boundary case, had all NaN (but the last one)
583+ dLmI == 0
584+ dnbinom(xL , mu = 1 , size = MxM ) == 0
585+ dnbinom(xL , prob = 1 / 2 , size = Inf ) == 0
586+ dnbinom(xL , prob = 1 / 2 , size = MxM ) == 0
587+ })
585588
586589d <- dnbinom(x , mu = mu , size = Inf ) # gave NaN (for 0 and L), now 0 for large x
587590p <- pnbinom(x , mu = mu , size = Inf ) # gave all NaN, now uses ppois(x, mu)
@@ -607,6 +610,25 @@ stopifnot( exprs = {# the x < 1e-10*size case; "easily" fixed now
607610 # # size = Inf (and not so large x
608611 dnbinom(x = 10 ^ (0 : 298 ), size = Inf , prob = .999 ) == 0 # had NaN from 10^155 on
609612})
613+ # # Now, more size=<Large> (normal case, mostly x >= 1e-10*size)
614+ prob <- 0.999
615+ mu <- 5
616+ str(x <- MxM * 2 ^ seq(- 4 , 0 , by = 1 / 8 ))# MxM/16 .... MxM
617+ cat(format(head(log2(x ), 4 )), " .. " , format(tail(log2(x ), 3 ))," \n " )
618+ head(x. <- outer(x , 2 ^- c(8 , 4 , 0 ))); tail(x. , 3 )
619+ stopifnot( exprs = {# the x < 1e-10*size case; "easily" fixed now
620+ dnbinom(x , prob = prob , size = Inf ) == 0 # was all NaN
621+ dnbinom(x , prob = prob , size = MxM ) == 0 # " "
622+ dnbinom(x , prob = prob , size = MxM / 4 ) == 0 # was 0 ... 0 NaN NaN NaN NaN
623+ dnbinom(x , prob = prob , size = MxM / 8 ) == 0 # was 0 ... 0 0 0 NaN NaN
624+ # # the "same" with mu
625+ dnbinom(x. , mu = mu , size = Inf ) == 0 # (already)
626+ dnbinom(x. , mu = mu , size = MxM ) == 0 # was NaN
627+ dnbinom(x. , mu = mu , size = MxM / 2 ) == 0 # most 0, some NaN
628+ dnbinom(x. , mu = mu , size = MxM / 4 ) == 0 # 0 0 ... 0 NaN NaN NaN NaN
629+ dnbinom(x. , mu = mu , size = MxM / 8 ) == 0 # 0 0 ... 0 0 0 NaN NaN
630+ })
631+
610632options(op )
611633# # size = Inf -- mostly gave NaN in R <= 3.2.3
612634
0 commit comments