R Under development (unstable) (2023-12-09 r85665 ucrt) -- "Unsuffered Consequences" Copyright (C) 2023 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. > suppressPackageStartupMessages(library(float)) > set.seed(1234) > > testd = function(test, truth) all.equal(dbl(test$d), truth$d, tol=tol) > testu = function(test, truth) all.equal(dbl(abs(test$u)), abs(truth$u), tol=tol) > testv = function(test, truth) all.equal(dbl(abs(test$v)), abs(truth$v), tol=tol) > same = function(test, truth) + { + stopifnot(testd(test, truth)) + stopifnot(ifelse(is.null(test$u), is.null(truth$u), testu(test, truth))) + stopifnot(ifelse(is.null(test$v), is.null(truth$v), testv(test, truth))) + } > > tester = function(s, x, ...) + { + test = La.svd(s, ...) + truth = La.svd(x, ...) + same(test, truth) + } > > tol = 1e-5 > > > > ### m > n > m = 10 > n = 3 > > s = flrnorm(m, n) > x = dbl(s) > > tester(s, x, nu=0, nv=0) > > tester(s, x, nv=0) > tester(s, x, nu=m, nv=0) > tester(s, x, nu=m-1, nv=0) > tester(s, x, nu=n, nv=0) > tester(s, x, nu=n-1, nv=0) > > tester(s, x, nu=0) > tester(s, x, nu=0, nv=n) > tester(s, x, nu=0, nv=n-1) > > tester(s, x, nu=m, nv=n) > tester(s, x) > > > > ### svd() driver > test = svd(s) > truth = svd(x) > same(test, truth) > > > > ### m < n > m = 3 > n = 10 > > s = t(s) > x = t(x) > > tester(s, x, nu=0, nv=0) > > tester(s, x, nv=0) > tester(s, x, nu=m, nv=0) > tester(s, x, nu=m-1, nv=0) > > tester(s, x, nu=0, nv=n) > tester(s, x, nu=0, nv=n-1) > tester(s, x, nu=0, nv=m) > tester(s, x, nu=0, nv=m-1) > > tester(s, x, nu=m, nv=n) > tester(s, x) > > proc.time() user system elapsed 0.39 0.03 0.40