Functions | |
FLA_Error | FLA_Trsv_external (FLA_Uplo uplo, FLA_Trans transa, FLA_Diag diag, FLA_Obj A, FLA_Obj x) |
void FLA_F2C() | fla_trsv_external_f (F_INT *uplo, F_INT *transa, F_INT *diag, F_INT *A, F_INT *x, F_INT *IERROR) |
FLA_Error | FLA_Trsv_lc_external (FLA_Diag diag, FLA_Obj A, FLA_Obj x) |
FLA_Error | FLA_Trsv_ln_external (FLA_Diag diag, FLA_Obj A, FLA_Obj x) |
FLA_Error | FLA_Trsv_lt_external (FLA_Diag diag, FLA_Obj A, FLA_Obj x) |
FLA_Error | FLA_Trsv_uc_external (FLA_Diag diag, FLA_Obj A, FLA_Obj x) |
FLA_Error | FLA_Trsv_un_external (FLA_Diag diag, FLA_Obj A, FLA_Obj x) |
FLA_Error | FLA_Trsv_ut_external (FLA_Diag diag, FLA_Obj A, FLA_Obj x) |
FLA_Error FLA_Trsv_external | ( | FLA_Uplo | uplo, | |
FLA_Trans | transa, | |||
FLA_Diag | diag, | |||
FLA_Obj | A, | |||
FLA_Obj | x | |||
) |
References cblas_ctrsv(), cblas_dtrsv(), cblas_strsv(), cblas_ztrsv(), CblasColMajor, ctrsv(), dtrsv(), FLA_Check_error_level(), FLA_Copyt_external(), FLA_Obj_create_conf_to(), FLA_Obj_datatype(), FLA_Obj_free(), FLA_Obj_has_zero_dim(), FLA_Obj_ldim(), FLA_Obj_length(), FLA_Param_map_to_blas_diag(), FLA_Param_map_to_blas_trans(), FLA_Param_map_to_blas_uplo(), FLA_Trsv_check(), strsv(), and ztrsv().
Referenced by FLA_Chol_l_unb_var1(), FLA_Chol_u_unb_var1(), FLA_LU_nopiv_unb_var1(), FLA_LU_nopiv_unb_var2(), FLA_LU_nopiv_unb_var3(), FLA_LU_piv_unb_var3(), FLA_LU_piv_unb_var3b(), FLA_Trinv_l_unb_var2(), FLA_Trinv_l_unb_var4(), FLA_Trinv_u_unb_var2(), FLA_Trinv_u_unb_var4(), FLA_Trsm_llh_unb_var3(), FLA_Trsm_llh_unb_var4(), FLA_Trsm_lln_unb_var3(), FLA_Trsm_lln_unb_var4(), FLA_Trsm_llt_unb_var3(), FLA_Trsm_llt_unb_var4(), FLA_Trsm_luh_unb_var3(), FLA_Trsm_luh_unb_var4(), FLA_Trsm_lun_unb_var3(), FLA_Trsm_lun_unb_var4(), FLA_Trsm_lut_unb_var3(), FLA_Trsm_lut_unb_var4(), FLA_Trsm_rlh_unb_var3(), FLA_Trsm_rlh_unb_var4(), FLA_Trsm_rln_unb_var3(), FLA_Trsm_rln_unb_var4(), FLA_Trsm_rlt_unb_var3(), FLA_Trsm_rlt_unb_var4(), FLA_Trsm_ruh_unb_var3(), FLA_Trsm_ruh_unb_var4(), FLA_Trsm_run_unb_var3(), FLA_Trsm_run_unb_var4(), FLA_Trsm_rut_unb_var3(), FLA_Trsm_rut_unb_var4(), FLA_Trsv(), fla_trsv_external_f(), FLA_Trsv_lc_external(), FLA_Trsv_lc_task(), FLA_Trsv_ln_external(), FLA_Trsv_ln_task(), FLA_Trsv_lt_external(), FLA_Trsv_lt_task(), FLA_Trsv_task(), FLA_Trsv_uc_external(), FLA_Trsv_uc_task(), FLA_Trsv_un_external(), FLA_Trsv_un_task(), FLA_Trsv_ut_external(), FLA_Trsv_ut_task(), FLA_Trsvsx_external(), and FLASH_FS_incpiv_aux1().
00036 { 00037 FLA_Datatype datatype; 00038 int m_A, ldim_A; 00039 int m_x, ldim_x, inc_x; 00040 #ifdef FLA_ENABLE_CBLAS_INTERFACE 00041 CBLAS_ORDER cblas_order = CblasColMajor; 00042 CBLAS_UPLO blas_uplo; 00043 CBLAS_TRANSPOSE blas_transa; 00044 CBLAS_DIAG blas_diag; 00045 #else 00046 char blas_uplo; 00047 char blas_transa; 00048 char blas_diag; 00049 #endif 00050 FLA_Obj x_copy; 00051 FLA_Trans transa_copy; 00052 00053 if ( FLA_Check_error_level() == FLA_FULL_ERROR_CHECKING ) 00054 FLA_Trsv_check( uplo, transa, diag, A, x ); 00055 00056 if ( FLA_Obj_has_zero_dim( A ) ) return FLA_SUCCESS; 00057 00058 datatype = FLA_Obj_datatype( A ); 00059 00060 m_A = FLA_Obj_length( A ); 00061 ldim_A = FLA_Obj_ldim( A ); 00062 00063 m_x = FLA_Obj_length( x ); 00064 ldim_x = FLA_Obj_ldim( x ); 00065 00066 inc_x = ( m_x == 1 ? ldim_x : 1 ); 00067 00068 if ( transa == FLA_CONJ_NO_TRANSPOSE ) 00069 { 00070 FLA_Obj_create_conf_to( FLA_NO_TRANSPOSE, x, &x_copy ); 00071 FLA_Copyt_external( FLA_CONJ_NO_TRANSPOSE, x, x_copy ); 00072 transa_copy = FLA_NO_TRANSPOSE; 00073 00074 m_x = FLA_Obj_length( x_copy ); 00075 ldim_x = FLA_Obj_ldim( x_copy ); 00076 inc_x = ( m_x == 1 ? ldim_x : 1 ); 00077 } 00078 else 00079 { 00080 x_copy = x; 00081 transa_copy = transa; 00082 } 00083 00084 FLA_Param_map_to_blas_uplo( uplo, &blas_uplo ); 00085 FLA_Param_map_to_blas_trans( transa_copy, &blas_transa ); 00086 FLA_Param_map_to_blas_diag( diag, &blas_diag ); 00087 00088 00089 switch( datatype ){ 00090 00091 case FLA_FLOAT: 00092 { 00093 float *buff_A = ( float * ) FLA_FLOAT_PTR( A ); 00094 float *buff_x = ( float * ) FLA_FLOAT_PTR( x ); 00095 00096 #ifdef FLA_ENABLE_CBLAS_INTERFACE 00097 cblas_strsv( cblas_order, 00098 blas_uplo, 00099 blas_transa, 00100 blas_diag, 00101 m_A, 00102 buff_A, ldim_A, 00103 buff_x, inc_x ); 00104 #else 00105 FLA_C2F( strsv )( &blas_uplo, 00106 &blas_transa, 00107 &blas_diag, 00108 &m_A, 00109 buff_A, &ldim_A, 00110 buff_x, &inc_x ); 00111 #endif 00112 break; 00113 } 00114 00115 case FLA_DOUBLE: 00116 { 00117 double *buff_A = ( double * ) FLA_DOUBLE_PTR( A ); 00118 double *buff_x = ( double * ) FLA_DOUBLE_PTR( x ); 00119 00120 #ifdef FLA_ENABLE_CBLAS_INTERFACE 00121 cblas_dtrsv( cblas_order, 00122 blas_uplo, 00123 blas_transa, 00124 blas_diag, 00125 m_A, 00126 buff_A, ldim_A, 00127 buff_x, inc_x ); 00128 #else 00129 FLA_C2F( dtrsv )( &blas_uplo, 00130 &blas_transa, 00131 &blas_diag, 00132 &m_A, 00133 buff_A, &ldim_A, 00134 buff_x, &inc_x ); 00135 #endif 00136 break; 00137 } 00138 00139 case FLA_COMPLEX: 00140 { 00141 scomplex *buff_A = ( scomplex * ) FLA_COMPLEX_PTR( A ); 00142 scomplex *buff_x = ( scomplex * ) FLA_COMPLEX_PTR( x_copy ); 00143 00144 #ifdef FLA_ENABLE_CBLAS_INTERFACE 00145 cblas_ctrsv( cblas_order, 00146 blas_uplo, 00147 blas_transa, 00148 blas_diag, 00149 m_A, 00150 buff_A, ldim_A, 00151 buff_x, inc_x ); 00152 #else 00153 FLA_C2F( ctrsv )( &blas_uplo, 00154 &blas_transa, 00155 &blas_diag, 00156 &m_A, 00157 buff_A, &ldim_A, 00158 buff_x, &inc_x ); 00159 #endif 00160 break; 00161 } 00162 00163 case FLA_DOUBLE_COMPLEX: 00164 { 00165 dcomplex *buff_A = ( dcomplex * ) FLA_DOUBLE_COMPLEX_PTR( A ); 00166 dcomplex *buff_x = ( dcomplex * ) FLA_DOUBLE_COMPLEX_PTR( x_copy ); 00167 00168 #ifdef FLA_ENABLE_CBLAS_INTERFACE 00169 cblas_ztrsv( cblas_order, 00170 blas_uplo, 00171 blas_transa, 00172 blas_diag, 00173 m_A, 00174 buff_A, ldim_A, 00175 buff_x, inc_x ); 00176 #else 00177 FLA_C2F( ztrsv )( &blas_uplo, 00178 &blas_transa, 00179 &blas_diag, 00180 &m_A, 00181 buff_A, &ldim_A, 00182 buff_x, &inc_x ); 00183 #endif 00184 break; 00185 } 00186 00187 } 00188 00189 if ( transa == FLA_CONJ_NO_TRANSPOSE ) 00190 { 00191 FLA_Copyt_external( FLA_CONJ_NO_TRANSPOSE, x_copy, x ); 00192 FLA_Obj_free( &x_copy ); 00193 } 00194 00195 return FLA_SUCCESS; 00196 }
void FLA_F2C() fla_trsv_external_f | ( | F_INT * | uplo, | |
F_INT * | transa, | |||
F_INT * | diag, | |||
F_INT * | A, | |||
F_INT * | x, | |||
F_INT * | IERROR | |||
) |
References FLA_Trsv_external().
00200 { 00201 *IERROR = FLA_Trsv_external( *( ( FLA_Uplo * ) uplo ), 00202 *( ( FLA_Trans * ) transa ), 00203 *( ( FLA_Diag * ) diag ), 00204 *( ( FLA_Obj * ) A ), 00205 *( ( FLA_Obj * ) x ) ); 00206 }
References FLA_Trsv_external().
00209 { 00210 return FLA_Trsv_external( FLA_LOWER_TRIANGULAR, FLA_CONJ_TRANSPOSE, diag, A, x ); 00211 }
References FLA_Trsv_external().
00214 { 00215 return FLA_Trsv_external( FLA_LOWER_TRIANGULAR, FLA_NO_TRANSPOSE, diag, A, x ); 00216 }
References FLA_Trsv_external().
00219 { 00220 return FLA_Trsv_external( FLA_LOWER_TRIANGULAR, FLA_TRANSPOSE, diag, A, x ); 00221 }
References FLA_Trsv_external().
00224 { 00225 return FLA_Trsv_external( FLA_UPPER_TRIANGULAR, FLA_CONJ_TRANSPOSE, diag, A, x ); 00226 }
References FLA_Trsv_external().
00229 { 00230 return FLA_Trsv_external( FLA_UPPER_TRIANGULAR, FLA_NO_TRANSPOSE, diag, A, x ); 00231 }
References FLA_Trsv_external().
00234 { 00235 return FLA_Trsv_external( FLA_UPPER_TRIANGULAR, FLA_TRANSPOSE, diag, A, x ); 00236 }