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); } } }
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); } } }