docs: public static void computeY( final int blockLength ,
                                   final DSubmatrixD1 A ,
                                   final DSubmatrixD1 V ,
                                   int row ,
                                   double gamma )
      {
          // Elements in 'y' before 'row' are known to be zero and the element at 'row'
          // is not used. Thus only elements after row and after are computed.
          // y = A*u
          multA_u(blockLength,A,V,row);
  
          for( int i = 0; i < row; i++ ) {
              // y = y + u_i*v_i^t*u + v_i*u_i^t*u
  
              // v_i^t*u
              double dot_v_u = BlockHouseHolder_DDRB.innerProdRow(blockLength,A,row,V,i,1);
  
              // u_i^t*u
              double dot_u_u = BlockHouseHolder_DDRB.innerProdRow(blockLength,A,row,A,i,1);
  
              // y = y + u_i*(v_i^t*u)
              // the ones in these 'u' are skipped over since the next submatrix of A
              // is only updated
              VectorOps_DDRB.add_row(blockLength,V,row,1,A,i,dot_v_u,V,row,row+1,A.col1-A.col0);
  
              // y = y + v_i*(u_i^t*u)
              // the 1 in U is taken account above
              VectorOps_DDRB.add_row(blockLength,V,row,1,V,i,dot_u_u,V,row,row+1,A.col1-A.col0);
          }
  
          // y = -gamma*y
          VectorOps_DDRB.scale_row(blockLength,V,row,-gamma,V,row,row+1,V.col1-V.col0);
      }