| 
    libflame
    12600
    
   
   | 
  
  
  
 
Functions | |
| FLA_Error | FLA_QR_UT_copy_task (FLA_Obj A, FLA_Obj T, FLA_Obj U, fla_qrut_t *cntl) | 
Variables | |
| fla_qrut_t * | fla_qrut_cntl_leaf | 
| FLA_Error FLA_QR_UT_copy_task | ( | FLA_Obj | A, | 
| FLA_Obj | T, | ||
| FLA_Obj | U, | ||
| fla_qrut_t * | cntl | ||
| ) | 
References FLA_Copyr_external(), FLA_Obj_min_dim(), FLA_Part_2x1(), and FLA_QR_UT_internal().
Referenced by FLA_QR_UT_copy_internal(), and FLASH_Queue_exec_task().
{
  FLA_Error r_val;
  FLA_Obj   AT,
            AB;
  // Perform a QR factorization as we normally would.
  r_val = FLA_QR_UT_internal( A, T,
                              fla_qrut_cntl_leaf );
  // Partition away the bottom part of the matrix, if there is any, so that
  // the dimensions match that of U. This step is only necessary so that
  // the copyr operation below works normally for the last iteration of
  // incremental QR. The whole point of making a copy of the lower triangle
  // of A is to allow stage 2 to proceed without a dependency leading into
  // stage 3. But the last iteration does not perform stage 2, and thus U
  // is never read and so the copyr does not need to happen.
  FLA_Part_2x1( A,   &AT,
                     &AB,    FLA_Obj_min_dim( A ), FLA_TOP );
  // Copy the Householder vectors into U.
  FLA_Copyr_external( FLA_LOWER_TRIANGULAR, AT, U );
  return r_val;
}
 1.7.6.1