Rank-Revealing QR factorization of an array. The mex-functions are using the rank-revealing QR routines xGEQPX and xGEQPY from ACM Algorithm 782. Can also handle complex and single precision array's.
Ivo Houtzager (2021). Rank-Revealing QR factorization (https://www.mathworks.com/matlabcentral/fileexchange/18591-rank-revealing-qr-factorization), MATLAB Central File Exchange. Retrieved .
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!Create scripts with code, output, and formatted text in a single executable document.
Here's how I managed to compile librrqr.a
# first download the package (it is actually a shell script that creates a bunch of files)
wget http://www.netlib.org/netlib/toms/782 -O 782.sh
# remove the top 3 lines with the ACM info
sed -i '1,3d' 782.sh
# replace all $( and $?in the cat areas for makefiles with \$( and \$?to work with newer versions of sh
sed -i 's/\$[\(]/\\$\(/g' 782.sh
sed -i 's/\$[\?]/\\$?/g' 782.sh
# now extract the rrqr_acm directory
sh 782.sh
To compile go into rrqr_acm/lib and run make. You will probably need to first edit the Makefile and change the fortran compiler from f77 to gfortran and add -fPIC to the OPTS. After running make, there should be a file rrqr.a in the rrqr_acm directory. Move this to librrqr.a in the directory with the matlab and c files and now you should be able to compile the mex file.
I had difficulty in compiling the ACM 782 algorithm on Linux (the "make" instructions seem to be out of date).
You should create an m-file called rrqr_install.m that compiles this code and the RRQR algorithm from the ACM - all using the "mex" command from inside MATLAB. That way, your installation should work on any MATLAB. The one-line instructions you give using rrqr.lib assume you're on Windows (there would be an rrqr.a on Linux/Unix, or a rrqr.so, not a Windows rrqr.lib).
You should also provide instructions on where to find the ACM algorithm (I found it here:
http://portal.acm.org/citation.cfm?doid=290200.287638
or
http://www.netlib.org/netlib/toms/782
but that detail should be in your installation instructions.