R Under development (unstable) (2025-10-07 r88904 ucrt) -- "Unsuffered Consequences" Copyright (C) 2025 The R Foundation for Statistical Computing Platform: x86_64-w64-mingw32/x64 R is free software and comes with ABSOLUTELY NO WARRANTY. You are welcome to redistribute it under certain conditions. Type 'license()' or 'licence()' for distribution details. R is a collaborative project with many contributors. Type 'contributors()' for more information and 'citation()' on how to cite R or R packages in publications. Type 'demo()' for some demos, 'help()' for on-line help, or 'help.start()' for an HTML browser interface to help. Type 'q()' to quit R. > library(flint) > > zapnames <- + function (x) { + is.empty <- function (.) !is.null(.) && length(.) == 0L + if (is.empty(names(x))) + names(x) <- NULL + if (!is.null(a <- dimnames(x))) { + if (any(e <- vapply(a, is.empty, FALSE))) + a[e] <- list(NULL) + dimnames(x) <- + if (is.null(names(a)) && all(vapply(a, is.null, FALSE))) + NULL + else a + } + x + } > > zapidentical <- + function (x, y, ...) + identical(zapnames(x), zapnames(y), ...) > > ok0 <- + function (...) + tryCatch({ x[ ... ]; x.[ ... ]; FALSE }, error = function (e) TRUE) && + tryCatch({ x[[...]]; x.[[...]]; FALSE }, error = function (e) TRUE) > ok1 <- + function (...) + zapidentical(x[ ... ], flint(.cl, x.[ ... ])) && + tryCatch({ x[[...]]; x.[[...]]; FALSE }, error = function (e) TRUE) > ok2 <- + function (...) + tryCatch({ x[ ... ]; x.[ ... ]; FALSE }, error = function (e) TRUE) && + zapidentical(x[[...]], flint(.cl, x.[[...]])) > ok3 <- + function (...) + zapidentical(x[ ... ], flint(.cl, x.[ ... ])) && + zapidentical(x[[...]], flint(.cl, x.[[...]])) > > for (.cl in c("ulong", "slong", "fmpz", "fmpq", "mag", "arf", "acf", + "arb", "acb")) { + for (.n in 0L:2L) { + x. <- seq_len(.n) + names(x.) <- letters[seq_len(.n)] + x <- flint(.cl, x.) + stopifnot(ok0("?"), + ok0(NULL, NULL), + ok0(NA), + ok0(NA_integer_), + ok0(NA_real_), + ok0(complex(0L)), + ok1(), + ok1(NULL), + ok1(logical(0L)), + ok1(logical(.n)), + ok1(logical(.n + 2L)), + ok1(integer(0L)), + ok1(integer(.n + 2L)), + ok1(double(0L)), + ok1(double(.n + 2L)), + ok1(rep(-0.9, .n + 2L)), + ok1(rep( 0.9, .n + 2L)), + ok1(character(0L))) + if (.n >= 1L) + stopifnot(ok0(c(-1L, 1L)), + ok1(c( 1L, 1L)), + (if (.n == 1L) ok3 else ok1)(TRUE), + ok1(c(TRUE, logical(.n + 1L))), + ok3(1L), + ok1(c(1L, integer(.n + 1L))), + ok3(1), + ok1(c(1, double(.n + 1L))), + ok3(1.9), + ok1(c(1.9, rep(-0.9, .n + 1L))), + ok1(c(1.9, rep( 0.9, .n + 1L))), + ok3(names(x.)[1L]), + (if (.n == 2L) ok3 else ok1)(-.n)) + else + stopifnot(ok0(TRUE), + ok0(1L), + ok0(1), + ok0(-1L)) + if (.n >= 2L) + stopifnot(ok1(c(TRUE, TRUE, logical(.n))), + ok1(c(1L, 2L, integer(.n))), + ok1(c(1, 2, double(.n))), + ok1(c(1.9, 2.9, rep(-0.9, .n))), + ok1(c(1.9, 2.9, rep( 0.9, .n))), + ok1(names(x.)[c(1L, 2L)]), + ok1(-c(.n, .n - 1L)), + ok3(-seq_len(.n)[-1L])) + else + stopifnot(ok0(c(FALSE, TRUE)), + ok0(2L), + ok0(2), + ok0(-2L)) + } + } > > proc.time() user system elapsed 0.95 0.12 1.03