libflame revision_anchor
|
00001 /* 00002 libflame 00003 An object-based infrastructure for developing high-performance 00004 dense linear algebra libraries. 00005 00006 Copyright (C) 2011, The University of Texas 00007 00008 libflame is free software; you can redistribute it and/or modify 00009 it under the terms of the GNU Lesser General Public License as 00010 published by the Free Software Foundation; either version 2.1 of 00011 the License, or (at your option) any later version. 00012 00013 libflame is distributed in the hope that it will be useful, but 00014 WITHOUT ANY WARRANTY; without even the implied warranty of 00015 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00016 Lesser General Public License for more details. 00017 00018 You should have received a copy of the GNU Lesser General Public 00019 License along with libflame; if you did not receive a copy, see 00020 http://www.gnu.org/licenses/. 00021 00022 For more information, please contact us at flame@cs.utexas.edu or 00023 send mail to: 00024 00025 Field G. Van Zee and/or 00026 Robert A. van de Geijn 00027 The University of Texas at Austin 00028 Department of Computer Sciences 00029 1 University Station C0500 00030 Austin TX 78712 00031 */ 00032 00033 // ----------------------------------------------------------------------------- 00034 00035 fla_blocksize_t* FLA_Blocksize_create( dim_t b_s, dim_t b_d, dim_t b_c, dim_t b_z ); 00036 fla_blocksize_t* FLA_Blocksize_create_copy( fla_blocksize_t* bp ); 00037 void FLA_Blocksize_set( fla_blocksize_t* bp, dim_t b_s, dim_t b_d, dim_t b_c, dim_t b_z ); 00038 void FLA_Blocksize_scale( fla_blocksize_t* bp, double factor ); 00039 void FLA_Blocksize_free( fla_blocksize_t* bp ); 00040 dim_t FLA_Blocksize_extract( FLA_Datatype dt, fla_blocksize_t* bp ); 00041 00042 fla_blocksize_t* FLA_Query_blocksizes( FLA_Dimension dim ); 00043 dim_t FLA_Query_blocksize( FLA_Datatype dt, FLA_Dimension dim ); 00044 00045 dim_t FLA_Determine_blocksize( FLA_Obj A_unproc, FLA_Quadrant to_dir, fla_blocksize_t* cntl_blocksizes ); 00046 dim_t FLA_determine_matrix_size( FLA_Obj A_unproc, FLA_Quadrant to_dir ); 00047 00048 00049 00050 // ----------------------------------------------------------------------------- 00051 00052 unsigned int FLA_Check_error_level( void ); 00053 unsigned int FLA_Check_error_level_set( unsigned int level ); 00054 FLA_Error FLA_Check_error_code_helper( int code, char* file, int line ); 00055 FLA_Error FLA_Check_valid_side( FLA_Side side ); 00056 FLA_Error FLA_Check_valid_uplo( FLA_Uplo uplo ); 00057 FLA_Error FLA_Check_valid_trans( FLA_Trans trans ); 00058 FLA_Error FLA_Check_valid_diag( FLA_Diag diag ); 00059 FLA_Error FLA_Check_valid_conj( FLA_Conj conj ); 00060 FLA_Error FLA_Check_valid_direct( FLA_Conj direct ); 00061 FLA_Error FLA_Check_valid_storev( FLA_Conj storev ); 00062 FLA_Error FLA_Check_valid_inverse( FLA_Inv inv ); 00063 FLA_Error FLA_Check_valid_datatype( FLA_Datatype datatype ); 00064 FLA_Error FLA_Check_valid_object_datatype( FLA_Obj A ); 00065 FLA_Error FLA_Check_valid_evd_type( FLA_Evd_type evd_type ); 00066 FLA_Error FLA_Check_valid_svd_type( FLA_Svd_type svd_type ); 00067 FLA_Error FLA_Check_floating_datatype( FLA_Datatype datatype ); 00068 FLA_Error FLA_Check_int_datatype( FLA_Datatype datatype ); 00069 FLA_Error FLA_Check_real_datatype( FLA_Datatype datatype ); 00070 FLA_Error FLA_Check_complex_datatype( FLA_Datatype datatype ); 00071 FLA_Error FLA_Check_floating_object( FLA_Obj A ); 00072 FLA_Error FLA_Check_int_object( FLA_Obj A ); 00073 FLA_Error FLA_Check_real_object( FLA_Obj A ); 00074 FLA_Error FLA_Check_complex_object( FLA_Obj A ); 00075 FLA_Error FLA_Check_consistent_datatype( FLA_Datatype datatype, FLA_Obj A ); 00076 FLA_Error FLA_Check_consistent_object_datatype( FLA_Obj A, FLA_Obj B ); 00077 FLA_Error FLA_Check_identical_object_precision( FLA_Obj A, FLA_Obj B ); 00078 FLA_Error FLA_Check_square( FLA_Obj A ); 00079 FLA_Error FLA_Check_if_scalar( FLA_Obj A ); 00080 FLA_Error FLA_Check_if_vector( FLA_Obj A ); 00081 FLA_Error FLA_Check_conformal_dims( FLA_Trans trans, FLA_Obj A, FLA_Obj B ); 00082 FLA_Error FLA_Check_matrix_matrix_dims( FLA_Trans transa, FLA_Trans transb, FLA_Obj A, FLA_Obj B, FLA_Obj C ); 00083 FLA_Error FLA_Check_matrix_vector_dims( FLA_Trans trans, FLA_Obj A, FLA_Obj x, FLA_Obj y ); 00084 FLA_Error FLA_Check_equal_vector_dims( FLA_Obj x, FLA_Obj y ); 00085 FLA_Error FLA_Check_conj_trans_and_datatype( FLA_Trans trans, FLA_Obj A ); 00086 FLA_Error FLA_Check_hess_indices( FLA_Obj A, int ilo, int ihi ); 00087 FLA_Error FLA_Check_null_pointer( void* ptr ); 00088 FLA_Error FLA_Check_object_dims( FLA_Trans trans, dim_t m, dim_t n, FLA_Obj A ); 00089 FLA_Error FLA_Check_valid_pivot_type( FLA_Pivot_type ptype ); 00090 FLA_Error FLA_Check_malloc_pointer( void* ptr ); 00091 FLA_Error FLA_Check_base_buffer_mismatch( FLA_Obj A, FLA_Obj B ); 00092 FLA_Error FLA_Check_adjacent_objects_2x2( FLA_Obj A11, FLA_Obj A12, 00093 FLA_Obj A21, FLA_Obj A22 ); 00094 FLA_Error FLA_Check_adjacent_objects_2x1( FLA_Obj AT, 00095 FLA_Obj AB ); 00096 FLA_Error FLA_Check_adjacent_objects_1x2( FLA_Obj AL, FLA_Obj AR ); 00097 FLA_Error FLA_Check_blocksize_value( dim_t b ); 00098 FLA_Error FLA_Check_blocksize_object( FLA_Datatype datatype, fla_blocksize_t* bp ); 00099 FLA_Error FLA_Check_file_descriptor( int fd ); 00100 FLA_Error FLA_Check_lseek_result( int requested_offset, int lseek_r_val ); 00101 FLA_Error FLA_Check_close_result( int close_r_val ); 00102 FLA_Error FLA_Check_unlink_result( int unlink_r_val ); 00103 FLA_Error FLA_Check_read_result( int requested_size, int read_r_val ); 00104 FLA_Error FLA_Check_write_result( int requested_size, int write_r_val ); 00105 FLA_Error FLA_Check_valid_quadrant( FLA_Quadrant quad ); 00106 FLA_Error FLA_Check_vector_dim_min( FLA_Obj x, dim_t min_dim ); 00107 FLA_Error FLA_Check_pthread_create_result( int pthread_create_r_val ); 00108 FLA_Error FLA_Check_pthread_join_result( int pthread_join_r_val ); 00109 FLA_Error FLA_Check_valid_isgn_value( FLA_Obj isgn ); 00110 FLA_Error FLA_Check_sylv_matrix_dims( FLA_Obj A, FLA_Obj B, FLA_Obj C ); 00111 FLA_Error FLA_Check_chol_failure( FLA_Error r_val ); 00112 FLA_Error FLA_Check_valid_elemtype( FLA_Elemtype elemtype ); 00113 FLA_Error FLA_Check_posix_memalign_failure( int r_val ); 00114 FLA_Error FLA_Check_submatrix_dims_and_offset( dim_t m, dim_t n, dim_t i, dim_t j, FLA_Obj A ); 00115 FLA_Error FLA_Check_object_scalar_elemtype( FLA_Obj A ); 00116 FLA_Error FLA_Check_object_matrix_elemtype( FLA_Obj A ); 00117 FLA_Error FLA_Check_num_threads( unsigned int n_threads ); 00118 FLA_Error FLA_Check_conj_and_datatype( FLA_Conj conj, FLA_Obj A ); 00119 FLA_Error FLA_Check_valid_complex_trans( FLA_Trans trans ); 00120 FLA_Error FLA_Check_valid_real_trans( FLA_Trans trans ); 00121 FLA_Error FLA_Check_valid_blas_trans( FLA_Trans trans ); 00122 FLA_Error FLA_Check_nonconstant_datatype( FLA_Datatype datatype ); 00123 FLA_Error FLA_Check_nonconstant_object( FLA_Obj A ); 00124 FLA_Error FLA_Check_identical_object_datatype( FLA_Obj A, FLA_Obj B ); 00125 FLA_Error FLA_Check_divide_by_zero( FLA_Obj alpha ); 00126 FLA_Error FLA_Check_identical_object_elemtype( FLA_Obj A, FLA_Obj B ); 00127 FLA_Error FLA_Check_pivot_index_range( FLA_Obj p, dim_t k1, dim_t k2 ); 00128 FLA_Error FLA_Check_householder_panel_dims( FLA_Obj A, FLA_Obj T ); 00129 FLA_Error FLA_Check_object_length_equals( FLA_Obj A, dim_t m ); 00130 FLA_Error FLA_Check_object_width_equals( FLA_Obj A, dim_t n ); 00131 FLA_Error FLA_Check_object_length_min( FLA_Obj A, dim_t m ); 00132 FLA_Error FLA_Check_object_width_min( FLA_Obj A, dim_t n ); 00133 FLA_Error FLA_Check_valid_error_level( unsigned int level ); 00134 FLA_Error FLA_Check_attempted_repart_2x2( FLA_Obj A_quad, dim_t b_m, dim_t b_n ); 00135 FLA_Error FLA_Check_attempted_repart_2x1( FLA_Obj A_side, dim_t b_m ); 00136 FLA_Error FLA_Check_attempted_repart_1x2( FLA_Obj A_side, dim_t b_n ); 00137 FLA_Error FLA_Check_valid_leftright_side( FLA_Side side ); 00138 FLA_Error FLA_Check_valid_topbottom_side( FLA_Side side ); 00139 FLA_Error FLA_Check_matrix_strides( dim_t m, dim_t n, dim_t rs, dim_t cs ); 00140 FLA_Error FLA_Check_vector_dim( FLA_Obj x, dim_t expected_length ); 00141 FLA_Error FLA_Check_row_vector( FLA_Obj x ); 00142 FLA_Error FLA_Check_col_vector( FLA_Obj x ); 00143 00144 00145 00146 // ----------------------------------------------------------------------------- 00147 00148 char* FLA_Error_string_for_code( int code ); 00149 void FLA_Error_messages_init( void ); 00150 void FLA_Print_message( char *str, char *file, int line ); 00151 void FLA_Abort( void ); 00152 00153 00154 00155 // ----------------------------------------------------------------------------- 00156 00157 void FLA_Init( void ); 00158 void FLA_Finalize( void ); 00159 FLA_Bool FLA_Initialized( void ); 00160 00161 void FLA_Init_safe( FLA_Error* init_result ); 00162 void FLA_Finalize_safe( FLA_Error init_result ); 00163 00164 void FLA_Init_constants( void ); 00165 void FLA_Finalize_constants( void ); 00166 00167 00168 00169 //------------------------------------------------------------------------------ 00170 00171 void FLA_Lock_init( FLA_Lock* fla_lock_ptr ); 00172 void FLA_Lock_destroy( FLA_Lock* fla_lock_ptr ); 00173 void FLA_Lock_acquire( FLA_Lock* fla_lock_ptr ); 00174 void FLA_Lock_release( FLA_Lock* fla_lock_ptr ); 00175 00176 00177 00178 // ----------------------------------------------------------------------------- 00179 00180 void FLA_Memory_leak_counter_init( void ); 00181 void FLA_Memory_leak_counter_finalize( void ); 00182 FLA_Bool FLA_Memory_leak_counter_status( void ); 00183 FLA_Bool FLA_Memory_leak_counter_set( FLA_Bool new_status ); 00184 00185 void* FLA_malloc( size_t size ); 00186 void* FLA_realloc( void* old_ptr, size_t size ); 00187 void FLA_free( void *ptr ); 00188 00189 00190 00191 // ----------------------------------------------------------------------------- 00192 00193 FLA_Error FLA_Obj_set_to_scalar( FLA_Obj alpha, FLA_Obj A ); 00194 void FLA_Obj_extract_real_scalar( FLA_Obj alpha, double* alpha_value ); 00195 void FLA_Obj_extract_complex_scalar( FLA_Obj alpha, dcomplex* alpha_value ); 00196 void FLA_Obj_extract_real_part( FLA_Obj alpha, FLA_Obj beta ); 00197 void FLA_Obj_extract_imag_part( FLA_Obj alpha, FLA_Obj beta ); 00198 void FLA_Obj_set_real_part( FLA_Obj alpha, FLA_Obj beta ); 00199 void FLA_Obj_set_imag_part( FLA_Obj alpha, FLA_Obj beta ); 00200 FLA_Error FLA_Obj_set_diagonal_to_scalar( FLA_Obj alpha, FLA_Obj A ); 00201 FLA_Error FLA_Obj_set_to_identity( FLA_Obj A ); 00202 FLA_Error FLA_Obj_add_to_diagonal( void *diag_value, FLA_Obj A ); 00203 FLA_Error FLA_Obj_shift_diagonal( FLA_Conj conj, FLA_Obj sigma, FLA_Obj A ); 00204 FLA_Error FLA_Obj_scale_diagonal( FLA_Conj conj, FLA_Obj alpha, FLA_Obj A ); 00205 FLA_Error FLA_Obj_show( char *s1, FLA_Obj A, char *format, char *s2 ); 00206 FLA_Error FLA_Obj_fshow( FILE* file, char *s1, FLA_Obj A, char *format, char *s2 ); 00207 00208 FLA_Error FLA_Obj_set_to_scalar_check( FLA_Obj alpha, FLA_Obj A ); 00209 FLA_Error FLA_Obj_extract_real_scalar_check( FLA_Obj alpha, double* alpha_value ); 00210 FLA_Error FLA_Obj_extract_complex_scalar_check( FLA_Obj alpha, dcomplex* alpha_value ); 00211 FLA_Error FLA_Obj_extract_real_part_check( FLA_Obj alpha, FLA_Obj beta ); 00212 FLA_Error FLA_Obj_extract_imag_part_check( FLA_Obj alpha, FLA_Obj beta ); 00213 FLA_Error FLA_Obj_set_real_part_check( FLA_Obj alpha, FLA_Obj beta ); 00214 FLA_Error FLA_Obj_set_imag_part_check( FLA_Obj alpha, FLA_Obj beta ); 00215 FLA_Error FLA_Obj_set_diagonal_to_scalar_check( FLA_Obj alpha, FLA_Obj A ); 00216 FLA_Error FLA_Obj_set_to_identity_check( FLA_Obj A ); 00217 FLA_Error FLA_Obj_add_to_diagonal_check( void *diag_value, FLA_Obj A ); 00218 FLA_Error FLA_Obj_shift_diagonal_check( FLA_Conj conj, FLA_Obj sigma, FLA_Obj A ); 00219 FLA_Error FLA_Obj_scale_diagonal_check( FLA_Conj conj, FLA_Obj alpha, FLA_Obj A ); 00220 FLA_Error FLA_Obj_show_check( char* s1, FLA_Obj obj, char* format, char* s2 ); 00221 FLA_Error FLA_Obj_fshow_check( FILE* file, char* s1, FLA_Obj obj, char* format, char* s2 ); 00222 00223 00224 00225 // ----------------------------------------------------------------------------- 00226 00227 FLA_Error FLA_Copy_buffer_to_object( FLA_Trans trans, dim_t m, dim_t n, void* buffer, dim_t rs, dim_t cs, dim_t i, dim_t j, FLA_Obj obj ); 00228 FLA_Error FLA_Copy_object_to_buffer( FLA_Trans trans, dim_t i, dim_t j, FLA_Obj obj, dim_t m, dim_t n, void* buffer, dim_t rs, dim_t cs ); 00229 FLA_Error FLA_Copy_buffer_to_object_check( FLA_Trans trans, dim_t m, dim_t n, void* buffer, dim_t rs, dim_t cs, dim_t i, dim_t j, FLA_Obj obj ); 00230 FLA_Error FLA_Copy_object_to_buffer_check( FLA_Trans trans, dim_t i, dim_t j, FLA_Obj obj, dim_t m, dim_t n, void* buffer, dim_t rs, dim_t cs ); 00231 00232 00233 00234 // ----------------------------------------------------------------------------- 00235 00236 FLA_Error FLA_Axpy_buffer_to_object( FLA_Trans trans, FLA_Obj alpha, dim_t m, dim_t n, void* buffer, dim_t rs, dim_t cs, dim_t i, dim_t j, FLA_Obj C ); 00237 FLA_Error FLA_Axpy_object_to_buffer( FLA_Trans trans, FLA_Obj alpha, dim_t i, dim_t j, FLA_Obj C, dim_t m, dim_t n, void* buffer, dim_t rs, dim_t cs ); 00238 00239 FLA_Error FLA_Axpy_buffer_to_object_check( FLA_Trans trans, FLA_Obj alpha, dim_t m, dim_t n, void* buffer, dim_t rs, dim_t cs, dim_t i, dim_t j, FLA_Obj C ); 00240 FLA_Error FLA_Axpy_object_to_buffer_check( FLA_Trans trans, FLA_Obj alpha, dim_t i, dim_t j, FLA_Obj C, dim_t m, dim_t n, void* buffer, dim_t rs, dim_t cs ); 00241 00242 00243 00244 // ----------------------------------------------------------------------------- 00245 00246 #ifdef FLA_ENABLE_SCC 00247 void* FLA_shmalloc( size_t size ); 00248 void FLA_shfree( void* ptr ); 00249 FLA_Bool FLA_is_owner( void ); 00250 #endif 00251 FLA_Error FLA_Obj_create( FLA_Datatype datatype, dim_t m, dim_t n, dim_t rs, dim_t cs, FLA_Obj *obj ); 00252 FLA_Error FLA_Obj_create_ext( FLA_Datatype datatype, FLA_Elemtype elemtype, dim_t m, dim_t n, dim_t m_inner, dim_t n_inner, dim_t rs, dim_t cs, FLA_Obj *obj ); 00253 FLA_Error FLA_Obj_create_conf_to( FLA_Trans trans, FLA_Obj old, FLA_Obj *obj ); 00254 FLA_Error FLA_Obj_create_copy_of( FLA_Trans trans, FLA_Obj old, FLA_Obj *obj ); 00255 FLA_Error FLA_Obj_create_without_buffer( FLA_Datatype datatype, dim_t m, dim_t n, FLA_Obj *obj ); 00256 FLA_Error FLA_Obj_create_constant( double const_real, FLA_Obj *obj ); 00257 FLA_Error FLA_Obj_create_complex_constant( double const_real, double const_imag, FLA_Obj *obj ); 00258 FLA_Error FLA_Obj_attach_buffer( void *buffer, dim_t rs, dim_t cs, FLA_Obj *obj ); 00259 FLA_Error FLA_Obj_create_buffer( dim_t rs, dim_t cs, FLA_Obj *obj ); 00260 FLA_Error FLA_Obj_free( FLA_Obj *obj ); 00261 FLA_Error FLA_Obj_free_without_buffer( FLA_Obj *obj ); 00262 FLA_Error FLA_Obj_free_buffer( FLA_Obj *obj ); 00263 dim_t FLA_align_ldim( dim_t ldim, dim_t elem_size ); 00264 void FLA_adjust_strides( dim_t m, dim_t n, dim_t* rs, dim_t* cs ); 00265 00266 FLA_Error FLA_Obj_create_ext_check( FLA_Datatype datatype, FLA_Elemtype elemtype, dim_t m, dim_t n, dim_t m_inner, dim_t n_inner, dim_t rs, dim_t cs, FLA_Obj *obj ); 00267 FLA_Error FLA_Obj_create_conf_to_check( FLA_Trans trans, FLA_Obj obj_old, FLA_Obj *obj ); 00268 FLA_Error FLA_Obj_create_without_buffer_check( FLA_Datatype datatype, dim_t m, dim_t n, FLA_Obj *obj ); 00269 FLA_Error FLA_Obj_create_constant_check( double const_real, FLA_Obj *obj ); 00270 FLA_Error FLA_Obj_create_complex_constant_check( double const_real, double const_imag, FLA_Obj *obj ); 00271 FLA_Error FLA_Obj_attach_buffer_check( void *buffer, dim_t rs, dim_t cs, FLA_Obj *obj ); 00272 FLA_Error FLA_Obj_create_buffer_check( dim_t rs, dim_t cs, FLA_Obj *obj ); 00273 FLA_Error FLA_Obj_free_check( FLA_Obj *obj ); 00274 FLA_Error FLA_Obj_free_without_buffer_check( FLA_Obj *obj ); 00275 FLA_Error FLA_Obj_free_buffer_check( FLA_Obj *obj ); 00276 00277 FLA_Error FLA_Obj_create_buffer_task( dim_t rs, dim_t cs, FLA_Obj obj, void* cntl ); 00278 FLA_Error FLA_Obj_free_buffer_task( FLA_Obj obj, void* cntl ); 00279 00280 00281 // ----------------------------------------------------------------------------- 00282 00283 FLA_Datatype FLA_Obj_datatype( FLA_Obj obj ); 00284 FLA_Datatype FLA_Obj_datatype_proj_to_real( FLA_Obj A ); 00285 FLA_Elemtype FLA_Obj_elemtype( FLA_Obj obj ); 00286 dim_t FLA_Obj_datatype_size( FLA_Datatype datatype ); 00287 dim_t FLA_Obj_elem_size( FLA_Obj obj ); 00288 dim_t FLA_Obj_length( FLA_Obj obj ); 00289 dim_t FLA_Obj_width( FLA_Obj obj ); 00290 dim_t FLA_Obj_vector_dim( FLA_Obj obj ); 00291 dim_t FLA_Obj_vector_inc( FLA_Obj obj ); 00292 dim_t FLA_Obj_min_dim( FLA_Obj obj ); 00293 dim_t FLA_Obj_max_dim( FLA_Obj obj ); 00294 dim_t FLA_Obj_row_stride( FLA_Obj obj ); 00295 dim_t FLA_Obj_col_stride( FLA_Obj obj ); 00296 dim_t FLA_Obj_row_offset( FLA_Obj obj ); 00297 dim_t FLA_Obj_col_offset( FLA_Obj obj ); 00298 dim_t FLA_Obj_base_length( FLA_Obj obj ); 00299 dim_t FLA_Obj_base_width( FLA_Obj obj ); 00300 dim_t FLA_Obj_num_elem_alloc( FLA_Obj obj ); 00301 void* FLA_Obj_buffer_alloc( FLA_Obj obj ); 00302 void* FLA_Obj_buffer( FLA_Obj obj ); 00303 FLA_Bool FLA_Obj_buffer_is_null( FLA_Obj obj ); 00304 FLA_Bool FLA_Obj_is_int( FLA_Obj A ); 00305 FLA_Bool FLA_Obj_is_floating_point( FLA_Obj A ); 00306 FLA_Bool FLA_Obj_is_constant( FLA_Obj A ); 00307 FLA_Bool FLA_Obj_is_real( FLA_Obj A ); 00308 FLA_Bool FLA_Obj_is_complex( FLA_Obj A ); 00309 FLA_Bool FLA_Obj_is_single_precision( FLA_Obj A ); 00310 FLA_Bool FLA_Obj_is_double_precision( FLA_Obj A ); 00311 FLA_Bool FLA_Obj_is_scalar( FLA_Obj A ); 00312 FLA_Bool FLA_Obj_is_vector( FLA_Obj A ); 00313 FLA_Bool FLA_Obj_has_zero_dim( FLA_Obj A ); 00314 FLA_Bool FLA_Obj_is_row_major( FLA_Obj A ); 00315 FLA_Bool FLA_Obj_is_col_major( FLA_Obj A ); 00316 FLA_Bool FLA_Obj_is_conformal_to( FLA_Trans trans, FLA_Obj A, FLA_Obj B ); 00317 FLA_Bool FLA_Obj_is( FLA_Obj A, FLA_Obj B ); 00318 FLA_Bool FLA_Obj_equals( FLA_Obj A, FLA_Obj B ); 00319 void* FLA_Submatrix_at( FLA_Datatype datatype, void* buffer, dim_t i, dim_t j, dim_t rs, dim_t cs ); 00320 00321 FLA_Error FLA_Obj_datatype_check( FLA_Obj obj ); 00322 FLA_Error FLA_Obj_datatype_proj_to_real_check( FLA_Obj obj ); 00323 FLA_Error FLA_Obj_elemtype_check( FLA_Obj obj ); 00324 FLA_Error FLA_Obj_datatype_size_check( FLA_Datatype datatype ); 00325 FLA_Error FLA_Obj_elem_size_check( FLA_Obj obj ); 00326 FLA_Error FLA_Obj_buffer_check( FLA_Obj obj ); 00327 FLA_Error FLA_Obj_equals_check( FLA_Obj A, FLA_Obj B ); 00328 FLA_Error FLA_Submatrix_at_check( FLA_Datatype datatype, void* buffer, dim_t i, dim_t j, dim_t rs, dim_t cs ); 00329 00330 00331 00332 // ----------------------------------------------------------------------------- 00333 00334 void FLA_Param_map_flame_to_netlib_trans( FLA_Trans trans, void* blas_trans ); 00335 void FLA_Param_map_flame_to_netlib_uplo( FLA_Uplo uplo, void* blas_uplo ); 00336 void FLA_Param_map_flame_to_netlib_side( FLA_Uplo side, void* blas_side ); 00337 void FLA_Param_map_flame_to_netlib_diag( FLA_Diag diag, void* blas_diag ); 00338 void FLA_Param_map_flame_to_netlib_direct( FLA_Direct direct, void* lapack_direct ); 00339 void FLA_Param_map_flame_to_netlib_storev( FLA_Store storev, void* lapack_storev ); 00340 void FLA_Param_map_flame_to_netlib_evd_type( FLA_Evd_type evd_type, void* lapack_evd_type ); 00341 void FLA_Param_map_flame_to_netlib_svd_type( FLA_Svd_type svd_type, void* lapack_svd_type ); 00342 00343 void FLA_Param_map_flame_to_blis_trans( FLA_Trans trans, char* blis_trans ); 00344 void FLA_Param_map_flame_to_blis_conj( FLA_Conj conj, char* blis_conj ); 00345 void FLA_Param_map_flame_to_blis_uplo( FLA_Uplo uplo, char* blis_uplo ); 00346 void FLA_Param_map_flame_to_blis_side( FLA_Uplo side, char* blis_side ); 00347 void FLA_Param_map_flame_to_blis_diag( FLA_Diag diag, char* blis_diag ); 00348 00349 void FLA_Param_map_blis_to_flame_trans( char* trans, FLA_Trans* flame_trans ); 00350 void FLA_Param_map_blis_to_flame_uplo( char* uplo, FLA_Uplo* flame_uplo ); 00351 void FLA_Param_map_blis_to_flame_side( char* side, FLA_Side* flame_side ); 00352 void FLA_Param_map_blis_to_flame_diag( char* diag, FLA_Diag* flame_diag ); 00353 void FLA_Param_map_blis_to_flame_storev( char* storev, FLA_Direct* flame_storev ); 00354 void FLA_Param_map_blis_to_flame_direct( char* direct, FLA_Direct* flame_direct ); 00355 void FLA_Param_map_blis_to_flame_inv( char* inv, FLA_Inv* flame_inv ); 00356 00357 /* 00358 void FLA_Param_map_blis_to_netlib_trans( char blis_trans, void* blas_trans ); 00359 void FLA_Param_map_blis_to_netlib_uplo( char blis_uplo, void* blas_uplo ); 00360 void FLA_Param_map_blis_to_netlib_side( char blis_side, void* blas_side ); 00361 void FLA_Param_map_blis_to_netlib_diag( char blis_diag, void* blas_diag ); 00362 */ 00363 00364 void FLA_Param_map_netlib_to_flame_trans( char* trans, FLA_Trans* flame_trans ); 00365 void FLA_Param_map_netlib_to_flame_uplo( char* uplo, FLA_Uplo* flame_uplo ); 00366 void FLA_Param_map_netlib_to_flame_side( char* side, FLA_Side* flame_side ); 00367 void FLA_Param_map_netlib_to_flame_diag( char* diag, FLA_Diag* flame_diag ); 00368 void FLA_Param_map_netlib_to_flame_inv( int* itype, FLA_Inv* flame_inv ); 00369 00370 00371 00372 00373 // ----------------------------------------------------------------------------- 00374 00375 FLA_Error FLA_Merge_2x2( FLA_Obj A11, FLA_Obj A12, 00376 FLA_Obj A21, FLA_Obj A22, FLA_Obj *A ); 00377 00378 FLA_Error FLA_Merge_2x1( FLA_Obj AT, 00379 FLA_Obj AB, FLA_Obj *A ); 00380 00381 FLA_Error FLA_Merge_1x2( FLA_Obj AL, FLA_Obj AR, FLA_Obj *A ); 00382 00383 FLA_Error FLA_Part_2x2( FLA_Obj A, FLA_Obj *A11, FLA_Obj *A12, 00384 FLA_Obj *A21, FLA_Obj *A22, 00385 dim_t mb, dim_t nb, FLA_Quadrant quadrant ); 00386 00387 FLA_Error FLA_Part_2x1 ( FLA_Obj A, FLA_Obj *A1, 00388 FLA_Obj *A2, 00389 dim_t mb, FLA_Side side ); 00390 00391 FLA_Error FLA_Part_1x2( FLA_Obj A, FLA_Obj *A1, FLA_Obj *A2, 00392 dim_t nb, FLA_Side side ); 00393 00394 FLA_Error FLA_Repart_2x2_to_3x3( FLA_Obj ATL, FLA_Obj ATR, FLA_Obj *A00, FLA_Obj *A01, FLA_Obj *A02, 00395 FLA_Obj *A10, FLA_Obj *A11, FLA_Obj *A12, 00396 FLA_Obj ABL, FLA_Obj ABR, FLA_Obj *A20, FLA_Obj *A21, FLA_Obj *A22, 00397 dim_t mb, dim_t nb, FLA_Quadrant quadrant ); 00398 00399 FLA_Error FLA_Repart_2x1_to_3x1( FLA_Obj AT, FLA_Obj *A0, 00400 FLA_Obj *A1, 00401 FLA_Obj AB, FLA_Obj *A2, 00402 dim_t mb, FLA_Side side ); 00403 00404 FLA_Error FLA_Repart_1x2_to_1x3( FLA_Obj AL, FLA_Obj AR, 00405 FLA_Obj *A0, FLA_Obj *A1, FLA_Obj *A2, 00406 dim_t nb, FLA_Side side ); 00407 00408 FLA_Error FLA_Cont_with_3x3_to_2x2( FLA_Obj *ATL, FLA_Obj *ATR, FLA_Obj A00, FLA_Obj A01, FLA_Obj A02, 00409 FLA_Obj A10, FLA_Obj A11, FLA_Obj A12, 00410 FLA_Obj *ABL, FLA_Obj *ABR, FLA_Obj A20, FLA_Obj A21, FLA_Obj A22, 00411 FLA_Quadrant quadrant ); 00412 00413 FLA_Error FLA_Cont_with_3x1_to_2x1( FLA_Obj *AT, FLA_Obj A0, 00414 FLA_Obj A1, 00415 FLA_Obj *AB, FLA_Obj A2, 00416 FLA_Side side ); 00417 00418 FLA_Error FLA_Cont_with_1x3_to_1x2( FLA_Obj *AL, FLA_Obj *AR, 00419 FLA_Obj A0, FLA_Obj A1, FLA_Obj A2, 00420 FLA_Side side ); 00421 00422 00423 00424 00425 00426 FLA_Error FLA_Part_2x2_check( FLA_Obj A, FLA_Obj *A11, FLA_Obj *A12, 00427 FLA_Obj *A21, FLA_Obj *A22, 00428 dim_t mb, dim_t nb, FLA_Quadrant quadrant ); 00429 00430 FLA_Error FLA_Part_2x1_check( FLA_Obj A, FLA_Obj *A1, 00431 FLA_Obj *A2, 00432 dim_t mb, FLA_Side side ); 00433 00434 FLA_Error FLA_Part_1x2_check( FLA_Obj A, FLA_Obj *A1, FLA_Obj *A2, 00435 dim_t nb, FLA_Side side ); 00436 00437 FLA_Error FLA_Repart_2x2_to_3x3_check( FLA_Obj ATL, FLA_Obj ATR, FLA_Obj *A00, FLA_Obj *A01, FLA_Obj *A02, 00438 FLA_Obj *A10, FLA_Obj *A11, FLA_Obj *A12, 00439 FLA_Obj ABL, FLA_Obj ABR, FLA_Obj *A20, FLA_Obj *A21, FLA_Obj *A22, 00440 dim_t mb, dim_t nb, FLA_Quadrant quadrant ); 00441 00442 FLA_Error FLA_Repart_2x1_to_3x1_check( FLA_Obj AT, FLA_Obj *A0, 00443 FLA_Obj *A1, 00444 FLA_Obj AB, FLA_Obj *A2, 00445 dim_t mb, FLA_Side side ); 00446 00447 FLA_Error FLA_Repart_1x2_to_1x3_check( FLA_Obj AL, FLA_Obj AR, 00448 FLA_Obj *A0, FLA_Obj *A1, FLA_Obj *A2, 00449 dim_t nb, FLA_Side side ); 00450 00451 FLA_Error FLA_Cont_with_3x3_to_2x2_check( FLA_Obj *ATL, FLA_Obj *ATR, FLA_Obj A00, FLA_Obj A01, FLA_Obj A02, 00452 FLA_Obj A10, FLA_Obj A11, FLA_Obj A12, 00453 FLA_Obj *ABL, FLA_Obj *ABR, FLA_Obj A20, FLA_Obj A21, FLA_Obj A22, 00454 FLA_Quadrant quadrant ); 00455 00456 FLA_Error FLA_Cont_with_3x1_to_2x1_check( FLA_Obj *AT, FLA_Obj A0, 00457 FLA_Obj A1, 00458 FLA_Obj *AB, FLA_Obj A2, 00459 FLA_Side side ); 00460 00461 FLA_Error FLA_Cont_with_1x3_to_1x2_check( FLA_Obj *AL, FLA_Obj *AR, 00462 FLA_Obj A0, FLA_Obj A1, FLA_Obj A2, 00463 FLA_Side side ); 00464 00465 FLA_Error FLA_Merge_2x2_check( FLA_Obj A11, FLA_Obj A12, 00466 FLA_Obj A21, FLA_Obj A22, FLA_Obj *A ); 00467 00468 FLA_Error FLA_Merge_2x1_check( FLA_Obj AT, 00469 FLA_Obj AB, FLA_Obj *A ); 00470 00471 FLA_Error FLA_Merge_1x2_check( FLA_Obj AL, FLA_Obj AR, FLA_Obj *A ); 00472