|
libflame
12600
|
Functions | |
| FLA_Error | FLA_Random_unitary_matrix (FLA_Obj A) |
References FLA_Check_error_level(), FLA_Obj_create_conf_to(), FLA_Obj_free(), FLA_QR_UT(), FLA_QR_UT_create_T(), FLA_QR_UT_form_Q(), FLA_Random_matrix(), and FLA_Random_unitary_matrix_check().
{
FLA_Obj B, T;
if ( FLA_Check_error_level() >= FLA_MIN_ERROR_CHECKING )
FLA_Random_unitary_matrix_check( A );
FLA_Obj_create_conf_to( FLA_NO_TRANSPOSE, A, &B );
FLA_Random_matrix( B );
FLA_QR_UT_create_T( B, &T );
FLA_QR_UT( B, T );
FLA_QR_UT_form_Q( B, T, A );
//FLA_Apply_Q_UT_create_workspace( A, T, &W );
//FLA_Apply_Q_UT( FLA_LEFT, FLA_NO_TRANSPOSE, FLA_FORWARD, FLA_COLUMNWISE, B, T, W, A );
//FLA_Obj_free( &W );
FLA_Obj_free( &T );
FLA_Obj_free( &B );
/*
FLA_Datatype datatype;
FLA_Obj v, tau;
FLA_Obj aT,
AB;
int i, mn;
int k;
datatype = FLA_Obj_datatype( A );
mn = FLA_Obj_length( A );
k = 1;
FLA_Obj_create( datatype, mn-1, 1, 0, 0, &v );
FLA_Obj_create( datatype, 1, 1, 0, 0, &tau );
FLA_Obj_set_to_identity( A );
FLA_Part_2x1( A, &aT,
&AB, 1, FLA_TOP );
for ( i = 0; i < k; ++i )
{
FLA_Random_matrix( tau );
FLA_Random_matrix( v );
FLA_Apply_H2_UT( FLA_LEFT, tau, v, aT,
AB );
}
FLA_Obj_free( &tau );
FLA_Obj_free( &v );
*/
return FLA_SUCCESS;
}
1.7.6.1