tests/qr.r

suppressPackageStartupMessages(library(float))
set.seed(1234)

tol = 1e-6

cmp = function(qr_x, qr_xs)
{
  test = dbl(qr.R(qr_xs))
  truth = qr.R(qr_x)
  stopifnot(all.equal(test, truth, tol=tol))
  
  test = dbl(qr.Q(qr_xs))
  truth = qr.Q(qr_x)
  stopifnot(all.equal(test, truth, tol=tol))

  test = dbl(qr.R(qr_xs, complete=TRUE))
  truth = qr.R(qr_x, complete=TRUE)
  stopifnot(all.equal(test, truth, tol=tol))
  
  test = dbl(qr.Q(qr_xs, complete=TRUE))
  truth = qr.Q(qr_x, complete=TRUE)
  stopifnot(all.equal(test, truth, tol=tol))
}


# m > n
x = matrix(stats::rnorm(30), 10)
xs = fl(x)
qr_x = qr(x, LAPACK=TRUE)
qr_xs = qr(xs)

stopifnot(identical(qr_xs$rank, 3L))
cmp(qr_x, qr_xs)



# NOTE: m < n and rank degenerate cases not well-defined

Try the float package in your browser

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

float documentation built on May 29, 2024, 8:13 a.m.