Class QrHelperFunctions_MT_DDRM
Contains different functions that are useful for computing the QR decomposition of a matrix.
Two different families of functions are provided for help in computing reflectors. Internally both of these functions switch between normalization by division or multiplication. Multiplication is most often significantly faster than division (2 or 3 times) but produces less accurate results on very small numbers. It checks to see if round off error is significant and decides which one it should do.
Tests were done using the stability benchmark in jmatbench and there doesn't seem to be any advantage to always dividing by the max instead of checking and deciding. The most noticeable difference between the two methods is with very small numbers.
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionstatic void
rank1UpdateMultL
(DMatrixRMaj A, double[] u, double gamma, int colA0, int w0, int w1) Performs a rank-1 update operation on the submatrix specified by w with the multiply on the left.
A = A(I - γ*u*uT)static void
rank1UpdateMultR
(DMatrixRMaj A, double[] u, double gamma, int colA0, int w0, int w1, double[] _temp) Performs a rank-1 update operation on the submatrix specified by w with the multiply on the right.
A = (I - γ*u*uT)*Astatic void
rank1UpdateMultR
(DMatrixRMaj A, double[] u, int offsetU, double gamma, int colA0, int w0, int w1, double[] _temp) static void
rank1UpdateMultR_u0
(DMatrixRMaj A, double[] u, double u_0, double gamma, int colA0, int w0, int w1, double[] _temp)
-
Constructor Details
-
QrHelperFunctions_MT_DDRM
public QrHelperFunctions_MT_DDRM()
-
-
Method Details
-
rank1UpdateMultR
public static void rank1UpdateMultR(DMatrixRMaj A, double[] u, double gamma, int colA0, int w0, int w1, double[] _temp) Performs a rank-1 update operation on the submatrix specified by w with the multiply on the right.
A = (I - γ*u*uT)*A
The order that matrix multiplies are performed has been carefully selected to minimize the number of operations.
Before this can become a truly generic operation the submatrix specification needs to be made more generic.
-
rank1UpdateMultR_u0
public static void rank1UpdateMultR_u0(DMatrixRMaj A, double[] u, double u_0, double gamma, int colA0, int w0, int w1, double[] _temp) -
rank1UpdateMultR
public static void rank1UpdateMultR(DMatrixRMaj A, double[] u, int offsetU, double gamma, int colA0, int w0, int w1, double[] _temp) -
rank1UpdateMultL
public static void rank1UpdateMultL(DMatrixRMaj A, double[] u, double gamma, int colA0, int w0, int w1) Performs a rank-1 update operation on the submatrix specified by w with the multiply on the left.
A = A(I - γ*u*uT)
The order that matrix multiplies are performed has been carefully selected to minimize the number of operations.
Before this can become a truly generic operation the submatrix specification needs to be made more generic.
-