0byt3m1n1
Path:
C:
/
Program Files
/
R
/
R-4.4.1
/
library
/
compiler
/
tests
/
[
Home
]
File: const.R
library(compiler) ## ## Test code for constant folding ## makeCenv <- compiler:::makeCenv checkConst <- compiler:::checkConst constantFoldSym <- compiler:::constantFoldSym constantFold <- compiler:::constantFold ## using a global environment ce <- makeCenv(.GlobalEnv) stopifnot(identical(constantFoldSym(quote(pi), list(env = ce, optimize = 3)), checkConst(base::pi))) stopifnot(identical(constantFoldSym(quote(pi), list(env = ce, optimize = 2)), NULL)) stopifnot(identical(constantFoldSym(quote(pi), list(env = ce, optimize = 1)), NULL)) stopifnot(identical(constantFoldSym(quote(pi), list(env = ce, optimize = 0)), NULL)) stopifnot(identical(constantFold(quote(1 + 2), list(optimize = 3, env = ce)), checkConst(1 + 2))) stopifnot(identical(constantFold(quote(1 + 2), list(optimize = 2, env = ce)), checkConst(1 + 2))) stopifnot(identical(constantFold(quote(1 + 2), list(optimize = 1, env = ce)), NULL)) stopifnot(identical(constantFold(quote(1 + 2), list(optimize = 0, env = ce)), NULL)) stopifnot(identical(constantFold(quote(sqrt(2)), list(optimize = 3, env = ce)), checkConst(sqrt(2)))) stopifnot(identical(constantFold(quote(sqrt(2)), list(optimize = 2, env = ce)), NULL)) stopifnot(identical(constantFold(quote(sqrt(2)), list(optimize = 1, env = ce)), NULL)) stopifnot(identical(constantFold(quote(sqrt(2)), list(optimize = 0, env = ce)), NULL)) ## using a namespace environment ce <- makeCenv(getNamespace("stats")) stopifnot(identical(constantFoldSym(quote(pi), list(env = ce, optimize = 3)), list(value = base::pi))) stopifnot(identical(constantFoldSym(quote(pi), list(env = ce, optimize = 2)), list(value = base::pi))) stopifnot(identical(constantFoldSym(quote(pi), list(env = ce, optimize = 1)), checkConst(base::pi))) stopifnot(identical(constantFoldSym(quote(pi), list(env = ce, optimize = 0)), NULL)) stopifnot(identical(constantFold(quote(1 + 2), list(optimize = 3, env = ce)), checkConst(1 + 2))) stopifnot(identical(constantFold(quote(1 + 2), list(optimize = 2, env = ce)), checkConst(1 + 2))) stopifnot(identical(constantFold(quote(1 + 2), list(optimize = 1, env = ce)), checkConst(1 + 2))) stopifnot(identical(constantFold(quote(1 + 2), list(optimize = 0, env = ce)), NULL)) stopifnot(identical(constantFold(quote(sqrt(2)), list(optimize = 3, env = ce)), checkConst(sqrt(2)))) stopifnot(identical(constantFold(quote(sqrt(2)), list(optimize = 2, env = ce)), checkConst(sqrt(2)))) stopifnot(identical(constantFold(quote(sqrt(2)), list(optimize = 1, env = ce)), checkConst(sqrt(2)))) stopifnot(identical(constantFold(quote(sqrt(2)), list(optimize = 0, env = ce)), NULL))