Functions | |
FLA_Error | FLA_Symmetrize (FLA_Uplo uplo, FLA_Obj A) |
void FLA_F2C() | fla_symmetrize_f (F_INT *uplo, F_INT *A, F_INT *IERROR) |
References cblas_ccopy(), cblas_dcopy(), cblas_scopy(), cblas_zcopy(), ccopy(), dcopy(), FLA_Check_error_level(), FLA_Obj_datatype(), FLA_Obj_ldim(), FLA_Obj_width(), FLA_Symmetrize_check(), scopy(), and zcopy().
Referenced by FLA_Hermitianize(), FLA_Random_spd_matrix(), and fla_symmetrize_f().
00036 { 00037 FLA_Datatype datatype; 00038 int j; 00039 int n_A, ldim_A; 00040 int ldim_src, inc_src; 00041 int ldim_dst, inc_dst; 00042 00043 if ( FLA_Check_error_level() >= FLA_MIN_ERROR_CHECKING ) 00044 FLA_Symmetrize_check( uplo, A ); 00045 00046 datatype = FLA_Obj_datatype( A ); 00047 00048 n_A = FLA_Obj_width( A ); 00049 ldim_A = FLA_Obj_ldim( A ); 00050 00051 if ( uplo == FLA_LOWER_TRIANGULAR ) 00052 { 00053 ldim_src = 1; 00054 ldim_dst = ldim_A; 00055 inc_src = ldim_A; 00056 inc_dst = 1; 00057 } 00058 else 00059 { 00060 ldim_src = ldim_A; 00061 ldim_dst = 1; 00062 inc_src = 1; 00063 inc_dst = ldim_A; 00064 } 00065 00066 switch ( datatype ){ 00067 00068 case FLA_FLOAT: 00069 { 00070 float *buff_A = ( float * ) FLA_FLOAT_PTR( A ); 00071 00072 for ( j = 1; j < n_A; j++ ) 00073 { 00074 #ifdef FLA_ENABLE_CBLAS_INTERFACE 00075 cblas_scopy( j, 00076 buff_A + j*ldim_src, inc_src, 00077 buff_A + j*ldim_dst, inc_dst ); 00078 #else 00079 FLA_C2F( scopy )( &j, 00080 buff_A + j*ldim_src, &inc_src, 00081 buff_A + j*ldim_dst, &inc_dst ); 00082 #endif 00083 } 00084 00085 break; 00086 } 00087 00088 case FLA_DOUBLE: 00089 { 00090 double *buff_A = ( double * ) FLA_DOUBLE_PTR( A ); 00091 00092 for ( j = 1; j < n_A; j++ ) 00093 { 00094 #ifdef FLA_ENABLE_CBLAS_INTERFACE 00095 cblas_dcopy( j, 00096 buff_A + j*ldim_src, inc_src, 00097 buff_A + j*ldim_dst, inc_dst ); 00098 #else 00099 FLA_C2F( dcopy )( &j, 00100 buff_A + j*ldim_src, &inc_src, 00101 buff_A + j*ldim_dst, &inc_dst ); 00102 #endif 00103 } 00104 00105 break; 00106 } 00107 00108 case FLA_COMPLEX: 00109 { 00110 scomplex *buff_A = ( scomplex * ) FLA_COMPLEX_PTR( A ); 00111 00112 for ( j = 1; j < n_A; j++ ) 00113 { 00114 #ifdef FLA_ENABLE_CBLAS_INTERFACE 00115 cblas_ccopy( j, 00116 buff_A + j*ldim_src, inc_src, 00117 buff_A + j*ldim_dst, inc_dst ); 00118 #else 00119 FLA_C2F( ccopy )( &j, 00120 buff_A + j*ldim_src, &inc_src, 00121 buff_A + j*ldim_dst, &inc_dst ); 00122 #endif 00123 } 00124 00125 break; 00126 } 00127 00128 case FLA_DOUBLE_COMPLEX: 00129 { 00130 dcomplex *buff_A = ( dcomplex * ) FLA_DOUBLE_COMPLEX_PTR( A ); 00131 00132 for ( j = 1; j < n_A; j++ ) 00133 { 00134 #ifdef FLA_ENABLE_CBLAS_INTERFACE 00135 cblas_zcopy( j, 00136 buff_A + j*ldim_src, inc_src, 00137 buff_A + j*ldim_dst, inc_dst ); 00138 #else 00139 FLA_C2F( zcopy )( &j, 00140 buff_A + j*ldim_src, &inc_src, 00141 buff_A + j*ldim_dst, &inc_dst ); 00142 #endif 00143 } 00144 00145 break; 00146 } 00147 00148 } 00149 00150 return FLA_SUCCESS; 00151 }
void FLA_F2C() fla_symmetrize_f | ( | F_INT * | uplo, | |
F_INT * | A, | |||
F_INT * | IERROR | |||
) |
References FLA_Symmetrize().
00155 { 00156 *IERROR = FLA_Symmetrize( *( ( FLA_Uplo * ) uplo ), 00157 *( ( FLA_Obj * ) A ) ); 00158 }