DenseMatrix64F B = new DenseMatrix64F(A);
DenseMatrix64F C = new DenseMatrix64F(m,n);
DenseMatrix64F u = new DenseMatrix64F(n,1);
RowD1Matrix64F UBV = alg.getUBV();
// A.print();
for( int i = 0; i < n-2; i++ ) {
alg.computeV(i);
u.zero();
SpecializedOps.subvector(UBV,i,i+2,n-i-2,true,i+2,u);
u.data[i+1] = 1;
DenseMatrix64F Q = SpecializedOps.createReflector(u,alg.getGammasV()[i]);
// Q.print();
CommonOps.mult(B,Q,C);
// u.print();
// B.print();
// UBV.print();
// C.print();
B.set(C);
// make sure everything is as expected
for( int j = i+2; j < n; j++ ) {
assertEquals(0,C.get(i,j),1e-8);
}
for( int j = i+2; j < m; j++ ) {
assertEquals(UBV.get(j,i),C.get(j,i),1e-8);
}
u.data[i] = 0;
}
}