tests/testthat/test-crossprod.R

test_that("test crossprod", {

    mat1 <- Matrix::rsparsematrix(500, 100, 0.5)
    mat2 <- Matrix::rsparsematrix(500, 1000, 0.5)

    prod1 <- proxyC:::crossprod(mat1, mat2)
    prod2 <- Matrix::crossprod(mat1, mat2)

    expect_identical(
        dim(prod1), dim(prod2)
    )

    expect_equal(
        as.matrix(prod1), as.matrix(prod2),
        tol = 1e-10
    )

    # with min_prod
    prod1_min <- proxyC:::crossprod(mat1, mat2, min_prod = 1.0)
    prod2_min <- prod2
    prod2_min[prod2_min < 1.0] <- 0.0

    expect_equal(
        as.matrix(prod1_min), as.matrix(prod2_min),
        tol = 1e-10
    )

})


test_that("test tcrossprod", {

    mat1 <- Matrix::rsparsematrix(100, 500, 0.5)
    mat2 <- Matrix::rsparsematrix(1000, 500, 0.5)

    prod1 <- proxyC:::tcrossprod(mat1, mat2)
    prod2 <- Matrix::tcrossprod(mat1, mat2)

    expect_identical(
        dim(prod1), dim(prod2)
    )

    expect_equal(
        as.matrix(prod1), as.matrix(prod2),
        tol = 1e-10
    )

    # with min_prod
    prod1_min <- proxyC:::tcrossprod(mat1, mat2, min_prod = 1.0)
    prod2_min <- prod2
    prod2_min[prod2_min < 1.0] <- 0.0

    expect_equal(
        as.matrix(prod1_min), as.matrix(prod2_min),
        tol = 1e-10
    )

})

Try the proxyC package in your browser

Any scripts or data that you put into this service are public.

proxyC documentation built on June 8, 2025, 11:32 a.m.