Nothing
# Unit tests for matrix creation and implicit size reuse
test_that("matrix", {
fn <- function(a, b) {
declare(type(a = integer(1)))
declare(type(b = integer(1)))
out <- matrix(0, a, b)
out
}
fsub <- r2f(fn)
make_c_bridge(fsub)
(r2f(fn))
expect_snapshot(r2f(fn))
qfn <- quick(fn)
# expect_identical(qfn(3, 4), fn(3, 4)) ## strict = TRUE by default
# expect_identical(qfn(3L, 4), fn(3L, 4))
expect_identical(qfn(3L, 4L), fn(3L, 4L))
fn <- function(val, nc, nr) {
# declare({
# type(val = double(1))
# type(a = integer(1))
# type(b = integer(1))
# })
declare(
type(val = double(1)),
type(nc = integer(1)),
type(nr = integer(1))
)
out <- matrix(val, nc, nr)
out
}
qfn <- quick(fn)
qfn(1.1, 3L, 3L)
expect_identical(qfn(2.3, 3L, 4L), fn(2.3, 3L, 4L))
expect_identical(qfn(2.3, 3L, 4L), matrix(2.3, 3L, 4L))
# bench::mark(fn(2.3, 3, 4), matrix(2.3, 3, 4), qfn(2.3, 3, 4)) -> r; print(r); plot(r)
})
test_that("reuse implicit size", {
fn <- function(a1, a2) {
declare(type(a1 = double(n)))
declare(type(a2 = double(n, n)))
out <- a1 + a2[1, ]
out
}
fsub <- r2f(fn)
c_wrapper <- make_c_bridge(fsub)
qfn <- quick(fn)
expect_snapshot({
print(fsub)
cat(c_wrapper)
})
n <- 1000
a1 <- as.double(1:n)
a2 <- matrix(runif(n), n, n)
expect_identical(fn(a1, a2), qfn(a1, a2))
# bench::mark(fn(a1, a2), qfn(a1, a2)) |> print() |> plot()
})
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.