Hello, I experienced some unexpected behaviour while determining the rank of matrices (sometimes 1x1 matrices): base::qr(matrix(1e-20))$rank returns 1 (incorrect) base::qr(diag(c(1, 1e-20)))$rank returns 2 (incorrect) Best regards, Bernd > R.version _ platform x86_64-w64-mingw32 arch x86_64 os mingw32 system x86_64, mingw32 status major 3 minor 4.0 year 2017 month 04 day 21 svn rev 72570 language R version.string R version 3.4.0 (2017-04-21) nickname You Stupid Darkness
On 22.06.2017 17:11, Bernd Funovits wrote:> Hello, > > I experienced some unexpected behaviour while determining the rank of > matrices (sometimes 1x1 matrices): > base::qr(matrix(1e-20))$rank returns 1 (incorrect) > base::qr(diag(c(1, 1e-20)))$rank returns 2 (incorrect)Why do you believe this is incorrect? 0 != 1e-20 and 1e-20 is well representable without significant rounding errors given > .Machine$double.xmin [1] 2.225074e-308 Best, Uwe Ligges> > Best regards, > Bernd > > > R.version > _ > platform x86_64-w64-mingw32 > arch x86_64 > os mingw32 > system x86_64, mingw32 > status > major 3 > minor 4.0 > year 2017 > month 04 > day 21 > svn rev 72570 > language R > version.string R version 3.4.0 (2017-04-21) > nickname You Stupid Darkness > > ______________________________________________ > R-devel at r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel
2017-06-22 19:49 GMT+02:00 Uwe Ligges <ligges at statistik.tu-dortmund.de>:> On 22.06.2017 17:11, Bernd Funovits wrote: >> >> Hello, >> >> I experienced some unexpected behaviour while determining the rank of matrices (sometimes 1x1 matrices): >> base::qr(matrix(1e-20))$rank returns 1 (incorrect) >> base::qr(diag(c(1, 1e-20)))$rank returns 2 (incorrect) > > > Why do you believe this is incorrect? > > 0 != 1e-20 > > and 1e-20 is well representable without significant rounding errors given > > > .Machine$double.xmin > [1] 2.225074e-308 > > > Best, > Uwe Liggesqr() has a tolerance argument which by default is tol=1e-07. Regards, I?aki