public static void mergeRonQ(double[][] r1, double[][] r2, double[][] qt1, double[][] qt2) { int kp = r1[0].length; assert kp == r2[0].length; assert kp == qt1.length; assert kp == qt2.length; int r = qt1[0].length; assert qt2[0].length == r; double[] cs = new double[2]; /* * pairwise givens(a,b) so that a come off main diagonal in r1 and bs come * off u-th upper subdiagonal in r2. */ for (int v = 0; v < kp; v++) { for (int u = v; u < kp; u++) { givens(r1[u][u], r2[u - v][u], cs); applyGivensInPlace(cs[0], cs[1], r1[u], r2[u - v], u, kp - u); applyGivensInPlace(cs[0], cs[1], qt1[u], qt2[u - v], 0, r); } } }
public static void mergeRonQ(double[][] r1, double[][] r2, double[][] qt1, double[][] qt2) { int kp = r1[0].length; assert kp == r2[0].length; assert kp == qt1.length; assert kp == qt2.length; int r = qt1[0].length; assert qt2[0].length == r; double[] cs = new double[2]; /* * pairwise givens(a,b) so that a come off main diagonal in r1 and bs come * off u-th upper subdiagonal in r2. */ for (int v = 0; v < kp; v++) { for (int u = v; u < kp; u++) { givens(r1[u][u], r2[u - v][u], cs); applyGivensInPlace(cs[0], cs[1], r1[u], r2[u - v], u, kp - u); applyGivensInPlace(cs[0], cs[1], qt1[u], qt2[u - v], 0, r); } } }
public static void mergeRonQ(double[][] r1, double[][] r2, double[][] qt1, double[][] qt2) { int kp = r1[0].length; assert kp == r2[0].length; assert kp == qt1.length; assert kp == qt2.length; int r = qt1[0].length; assert qt2[0].length == r; double[] cs = new double[2]; /* * pairwise givens(a,b) so that a come off main diagonal in r1 and bs come * off u-th upper subdiagonal in r2. */ for (int v = 0; v < kp; v++) { for (int u = v; u < kp; u++) { givens(r1[u][u], r2[u - v][u], cs); applyGivensInPlace(cs[0], cs[1], r1[u], r2[u - v], u, kp - u); applyGivensInPlace(cs[0], cs[1], qt1[u], qt2[u - v], 0, r); } } }
public static void mergeR(double[][] r1, double[][] r2) { int kp = r1[0].length; assert kp == r2[0].length; double[] cs = new double[2]; for (int v = 0; v < kp; v++) { for (int u = v; u < kp; u++) { givens(r1[u][u], r2[u - v][u], cs); applyGivensInPlace(cs[0], cs[1], r1[u], r2[u - v], u, kp - u); } } }
public static void mergeR(double[][] r1, double[][] r2) { int kp = r1[0].length; assert kp == r2[0].length; double[] cs = new double[2]; for (int v = 0; v < kp; v++) { for (int u = v; u < kp; u++) { givens(r1[u][u], r2[u - v][u], cs); applyGivensInPlace(cs[0], cs[1], r1[u], r2[u - v], u, kp - u); } } }
public static void mergeR(double[][] r1, double[][] r2) { int kp = r1[0].length; assert kp == r2[0].length; double[] cs = new double[2]; for (int v = 0; v < kp; v++) { for (int u = v; u < kp; u++) { givens(r1[u][u], r2[u - v][u], cs); applyGivensInPlace(cs[0], cs[1], r1[u], r2[u - v], u, kp - u); } } }
public static void mergeRonQ(UpperTriangular r1, UpperTriangular r2, double[][] qt1, double[][] qt2) { TriangularRowView r1Row = new TriangularRowView(r1); TriangularRowView r2Row = new TriangularRowView(r2); int kp = r1Row.size(); assert kp == r2Row.size(); assert kp == qt1.length; assert kp == qt2.length; int r = qt1[0].length; assert qt2[0].length == r; double[] cs = new double[2]; for (int v = 0; v < kp; v++) { for (int u = v; u < kp; u++) { givens(r1Row.setViewedRow(u).get(u), r2Row.setViewedRow(u - v).get(u), cs); applyGivensInPlace(cs[0], cs[1], r1Row, r2Row, u, kp - u); applyGivensInPlace(cs[0], cs[1], qt1[u], qt2[u - v], 0, r); } } }
public static void mergeRonQ(UpperTriangular r1, UpperTriangular r2, double[][] qt1, double[][] qt2) { TriangularRowView r1Row = new TriangularRowView(r1); TriangularRowView r2Row = new TriangularRowView(r2); int kp = r1Row.size(); assert kp == r2Row.size(); assert kp == qt1.length; assert kp == qt2.length; int r = qt1[0].length; assert qt2[0].length == r; double[] cs = new double[2]; for (int v = 0; v < kp; v++) { for (int u = v; u < kp; u++) { givens(r1Row.setViewedRow(u).get(u), r2Row.setViewedRow(u - v).get(u), cs); applyGivensInPlace(cs[0], cs[1], r1Row, r2Row, u, kp - u); applyGivensInPlace(cs[0], cs[1], qt1[u], qt2[u - v], 0, r); } } }
public static void mergeRonQ(UpperTriangular r1, UpperTriangular r2, double[][] qt1, double[][] qt2) { TriangularRowView r1Row = new TriangularRowView(r1); TriangularRowView r2Row = new TriangularRowView(r2); int kp = r1Row.size(); assert kp == r2Row.size(); assert kp == qt1.length; assert kp == qt2.length; int r = qt1[0].length; assert qt2[0].length == r; double[] cs = new double[2]; for (int v = 0; v < kp; v++) { for (int u = v; u < kp; u++) { givens(r1Row.setViewedRow(u).get(u), r2Row.setViewedRow(u - v).get(u), cs); applyGivensInPlace(cs[0], cs[1], r1Row, r2Row, u, kp - u); applyGivensInPlace(cs[0], cs[1], qt1[u], qt2[u - v], 0, r); } } }
applyGivensInPlace(cs[0], cs[1], vARow, getRRow(0), 0, n); applyGivensInPlace(cs[0], cs[1], vQtRow, getQtRow(0), 0, m); applyGivensInPlace(cs[0], cs[1], getRRow(i - 1), getRRow(i), i, n - i); applyGivensInPlace(cs[0], cs[1], getQtRow(i - 1), getQtRow(i), 0, m);
applyGivensInPlace(cs[0], cs[1], vARow, getRRow(0), 0, n); applyGivensInPlace(cs[0], cs[1], vQtRow, getQtRow(0), 0, m); applyGivensInPlace(cs[0], cs[1], getRRow(i - 1), getRRow(i), i, n - i); applyGivensInPlace(cs[0], cs[1], getQtRow(i - 1), getQtRow(i), 0, m);
applyGivensInPlace(cs[0], cs[1], vARow, getRRow(0), 0, n); applyGivensInPlace(cs[0], cs[1], vQtRow, getQtRow(0), 0, m); applyGivensInPlace(cs[0], cs[1], getRRow(i - 1), getRRow(i), i, n - i); applyGivensInPlace(cs[0], cs[1], getQtRow(i - 1), getQtRow(i), 0, m);
public static void mergeR(UpperTriangular r1, UpperTriangular r2) { TriangularRowView r1Row = new TriangularRowView(r1); TriangularRowView r2Row = new TriangularRowView(r2); int kp = r1Row.size(); assert kp == r2Row.size(); double[] cs = new double[2]; for (int v = 0; v < kp; v++) { for (int u = v; u < kp; u++) { givens(r1Row.setViewedRow(u).get(u), r2Row.setViewedRow(u - v).get(u), cs); applyGivensInPlace(cs[0], cs[1], r1Row, r2Row, u, kp - u); } } }
public static void mergeR(UpperTriangular r1, UpperTriangular r2) { TriangularRowView r1Row = new TriangularRowView(r1); TriangularRowView r2Row = new TriangularRowView(r2); int kp = r1Row.size(); assert kp == r2Row.size(); double[] cs = new double[2]; for (int v = 0; v < kp; v++) { for (int u = v; u < kp; u++) { givens(r1Row.setViewedRow(u).get(u), r2Row.setViewedRow(u - v).get(u), cs); applyGivensInPlace(cs[0], cs[1], r1Row, r2Row, u, kp - u); } } }
public static void mergeR(UpperTriangular r1, UpperTriangular r2) { TriangularRowView r1Row = new TriangularRowView(r1); TriangularRowView r2Row = new TriangularRowView(r2); int kp = r1Row.size(); assert kp == r2Row.size(); double[] cs = new double[2]; for (int v = 0; v < kp; v++) { for (int u = v; u < kp; u++) { givens(r1Row.setViewedRow(u).get(u), r2Row.setViewedRow(u - v).get(u), cs); applyGivensInPlace(cs[0], cs[1], r1Row, r2Row, u, kp - u); } } }