x <- 800:1200
bd0x1k <- bd0(x, np = 1000)
plot(x, bd0x1k, type="l", ylab = "bd0(x, np=1000)")
bd0x1kC <- bd0C(x, np = 1000)
lines(x, bd0x1kC, col=2)
bd0.1d1 <- bd0_p1l1d1(x, 1000)
bd0.1d <- bd0_p1l1d (x, 1000)
bd0.1p1 <- bd0_p1l1 (x, 1000)
bd0.1pm <- bd0_l1pm (x, 1000)
stopifnot(exprs = {
all.equal(bd0x1kC, bd0x1k, tol=1e-14) # even tol=0 currently ..
all.equal(bd0x1kC, bd0.1d1, tol=1e-14)
all.equal(bd0x1kC, bd0.1d , tol=1e-14)
all.equal(bd0x1kC, bd0.1p1, tol=1e-14)
all.equal(bd0x1kC, bd0.1pm, tol=1e-14)
})
str(log1pmx) #--> play with { tol_logcf, eps2, minL1, trace.lcf, logCF } --> vignette
ebd0x1k <- ebd0 (x, 1000)
exC <- ebd0C(x, 1000)
stopifnot(all.equal(exC, ebd0x1k, tol = 4e-16),
all.equal(bd0x1kC, rowSums(exC), tol = 2e-15))
lines(x, rowSums(ebd0x1k), col=adjustcolor(4, 1/2), lwd=4)
## very large args --> need new version "R_2025..."
np <- 117e306; np / .Machine$double.xmax # 0.65
x <- (1:116)*1e306
tail(bd0L <- bd0C(x, np, version = "R4")) # underflow to 0
tail(bd0Ln <- bd0C(x, np, version = "R_2025_0510"))
bd0L.R <- bd0(x, np)
all.equal(bd0Ln, bd0L.R, tolerance = 0) # see TRUE
stopifnot(exprs = {
is.finite(bd0Ln)
bd0Ln > 4e303
tail(bd0L, 54) == 0
all.equal(bd0Ln, np*p1l1((x-np)/np), tolerance = 5e-16)
all.equal(bd0Ln, bd0L.R, tolerance = 5e-16)
})
Run the code above in your browser using DataLab