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 FLA_Error FLA_Check_valid_machval( FLA_Machval val ); 00144 FLA_Error FLA_Check_valid_evd_type( FLA_Evd_type evd_type ); 00145 FLA_Error FLA_Check_valid_svd_type( FLA_Svd_type svd_type ); 00146 FLA_Error FLA_Check_valid_diag_offset( FLA_Obj A, FLA_Diag_off offset ); 00147 FLA_Error FLA_Check_col_storage( FLA_Obj A ); 00148 FLA_Error FLA_Check_row_storage( FLA_Obj A ); 00149 00150 00151 00152 00153 // ----------------------------------------------------------------------------- 00154 00155 char* FLA_Error_string_for_code( int code ); 00156 void FLA_Error_messages_init( void ); 00157 void FLA_Print_message( char *str, char *file, int line ); 00158 void FLA_Abort( void ); 00159 00160 00161 00162 // ----------------------------------------------------------------------------- 00163 00164 void FLA_Init( void ); 00165 void FLA_Finalize( void ); 00166 FLA_Bool FLA_Initialized( void ); 00167 00168 void FLA_Init_safe( FLA_Error* init_result ); 00169 void FLA_Finalize_safe( FLA_Error init_result ); 00170 00171 void FLA_Init_constants( void ); 00172 void FLA_Finalize_constants( void ); 00173 00174 void FLA_Init_numerical_constants( void ); 00175 void FLA_Finalize_numerical_constants( void ); 00176 00177 00178 00179 //------------------------------------------------------------------------------ 00180 00181 void FLA_Lock_init( FLA_Lock* fla_lock_ptr ); 00182 void FLA_Lock_destroy( FLA_Lock* fla_lock_ptr ); 00183 void FLA_Lock_acquire( FLA_Lock* fla_lock_ptr ); 00184 void FLA_Lock_release( FLA_Lock* fla_lock_ptr ); 00185 00186 00187 00188 // ----------------------------------------------------------------------------- 00189 00190 void FLA_Memory_leak_counter_init( void ); 00191 void FLA_Memory_leak_counter_finalize( void ); 00192 FLA_Bool FLA_Memory_leak_counter_status( void ); 00193 FLA_Bool FLA_Memory_leak_counter_set( FLA_Bool new_status ); 00194 00195 void* FLA_malloc( size_t size ); 00196 void* FLA_realloc( void* old_ptr, size_t size ); 00197 void FLA_free( void *ptr ); 00198 00199 00200 00201 // ----------------------------------------------------------------------------- 00202 00203 FLA_Error FLA_Obj_copy_view( FLA_Obj A, FLA_Obj* B ); 00204 void FLA_Obj_extract_real_scalar( FLA_Obj alpha, double* alpha_value ); 00205 void FLA_Obj_extract_complex_scalar( FLA_Obj alpha, dcomplex* alpha_value ); 00206 void FLA_Obj_extract_real_part( FLA_Obj alpha, FLA_Obj beta ); 00207 void FLA_Obj_extract_imag_part( FLA_Obj alpha, FLA_Obj beta ); 00208 void FLA_Obj_set_real_part( FLA_Obj alpha, FLA_Obj beta ); 00209 void FLA_Obj_set_imag_part( FLA_Obj alpha, FLA_Obj beta ); 00210 FLA_Error FLA_Obj_show( char *s1, FLA_Obj A, char *format, char *s2 ); 00211 FLA_Error FLA_Obj_fshow( FILE* file, char *s1, FLA_Obj A, char *format, char *s2 ); 00212 00213 FLA_Error FLA_Obj_copy_view_check( FLA_Obj A, FLA_Obj* B ); 00214 FLA_Error FLA_Obj_extract_real_scalar_check( FLA_Obj alpha, double* alpha_value ); 00215 FLA_Error FLA_Obj_extract_complex_scalar_check( FLA_Obj alpha, dcomplex* alpha_value ); 00216 FLA_Error FLA_Obj_extract_real_part_check( FLA_Obj alpha, FLA_Obj beta ); 00217 FLA_Error FLA_Obj_extract_imag_part_check( FLA_Obj alpha, FLA_Obj beta ); 00218 FLA_Error FLA_Obj_set_real_part_check( FLA_Obj alpha, FLA_Obj beta ); 00219 FLA_Error FLA_Obj_set_imag_part_check( FLA_Obj alpha, FLA_Obj beta ); 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 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 ); 00227 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 ); 00228 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 ); 00229 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 ); 00230 00231 00232 00233 // ----------------------------------------------------------------------------- 00234 00235 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 ); 00236 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 ); 00237 00238 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 ); 00239 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 ); 00240 00241 00242 00243 // ----------------------------------------------------------------------------- 00244 00245 #ifdef FLA_ENABLE_SCC 00246 void* FLA_shmalloc( size_t size ); 00247 void FLA_shfree( void* ptr ); 00248 FLA_Bool FLA_is_owner( void ); 00249 #endif 00250 FLA_Error FLA_Obj_create( FLA_Datatype datatype, dim_t m, dim_t n, dim_t rs, dim_t cs, FLA_Obj *obj ); 00251 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 ); 00252 FLA_Error FLA_Obj_create_conf_to( FLA_Trans trans, FLA_Obj old, FLA_Obj *obj ); 00253 FLA_Error FLA_Obj_create_copy_of( FLA_Trans trans, FLA_Obj old, FLA_Obj *obj ); 00254 FLA_Error FLA_Obj_create_without_buffer( FLA_Datatype datatype, dim_t m, dim_t n, FLA_Obj *obj ); 00255 FLA_Error FLA_Obj_create_constant( double const_real, FLA_Obj *obj ); 00256 FLA_Error FLA_Obj_create_constant_ext( float const_s, double const_d, 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 dim_t FLA_compute_num_elem( dim_t elem_size, dim_t m, dim_t n, dim_t* rs, dim_t* cs ); 00265 void FLA_adjust_strides( dim_t m, dim_t n, dim_t* rs, dim_t* cs ); 00266 00267 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 ); 00268 FLA_Error FLA_Obj_create_conf_to_check( FLA_Trans trans, FLA_Obj obj_old, FLA_Obj *obj ); 00269 FLA_Error FLA_Obj_create_without_buffer_check( FLA_Datatype datatype, dim_t m, dim_t n, FLA_Obj *obj ); 00270 FLA_Error FLA_Obj_create_constant_check( double const_real, FLA_Obj *obj ); 00271 FLA_Error FLA_Obj_create_constant_ext_check( float const_s, double const_d, FLA_Obj *obj ); 00272 FLA_Error FLA_Obj_create_complex_constant_check( double const_real, double const_imag, FLA_Obj *obj ); 00273 FLA_Error FLA_Obj_attach_buffer_check( void *buffer, dim_t rs, dim_t cs, FLA_Obj *obj ); 00274 FLA_Error FLA_Obj_create_buffer_check( dim_t rs, dim_t cs, FLA_Obj *obj ); 00275 FLA_Error FLA_Obj_free_check( FLA_Obj *obj ); 00276 FLA_Error FLA_Obj_free_without_buffer_check( FLA_Obj *obj ); 00277 FLA_Error FLA_Obj_free_buffer_check( FLA_Obj *obj ); 00278 00279 FLA_Error FLA_Obj_create_buffer_task( dim_t rs, dim_t cs, FLA_Obj obj, void* cntl ); 00280 FLA_Error FLA_Obj_free_buffer_task( FLA_Obj obj, void* cntl ); 00281 00282 00283 // ----------------------------------------------------------------------------- 00284 00285 FLA_Datatype FLA_Obj_datatype( FLA_Obj obj ); 00286 FLA_Datatype FLA_Obj_datatype_proj_to_real( FLA_Obj A ); 00287 FLA_Datatype FLA_Obj_datatype_proj_to_complex( FLA_Obj A ); 00288 FLA_Elemtype FLA_Obj_elemtype( FLA_Obj obj ); 00289 dim_t FLA_Obj_datatype_size( FLA_Datatype datatype ); 00290 dim_t FLA_Obj_elem_size( FLA_Obj obj ); 00291 dim_t FLA_Obj_length( FLA_Obj obj ); 00292 dim_t FLA_Obj_width( FLA_Obj obj ); 00293 FLA_Uplo FLA_Obj_structure( FLA_Obj obj ); 00294 dim_t FLA_Obj_vector_dim( FLA_Obj obj ); 00295 dim_t FLA_Obj_vector_inc( FLA_Obj obj ); 00296 dim_t FLA_Obj_min_dim( FLA_Obj obj ); 00297 dim_t FLA_Obj_max_dim( FLA_Obj obj ); 00298 dim_t FLA_Obj_row_stride( FLA_Obj obj ); 00299 dim_t FLA_Obj_col_stride( FLA_Obj obj ); 00300 dim_t FLA_Obj_row_offset( FLA_Obj obj ); 00301 dim_t FLA_Obj_col_offset( FLA_Obj obj ); 00302 dim_t FLA_Obj_base_length( FLA_Obj obj ); 00303 dim_t FLA_Obj_base_width( FLA_Obj obj ); 00304 dim_t FLA_Obj_num_elem_alloc( FLA_Obj obj ); 00305 void* FLA_Obj_base_buffer( FLA_Obj obj ); 00306 void* FLA_Obj_buffer_at_view( FLA_Obj obj ); 00307 FLA_Bool FLA_Obj_buffer_is_null( FLA_Obj obj ); 00308 FLA_Bool FLA_Obj_is_int( FLA_Obj A ); 00309 FLA_Bool FLA_Obj_is_floating_point( FLA_Obj A ); 00310 FLA_Bool FLA_Obj_is_constant( FLA_Obj A ); 00311 FLA_Bool FLA_Obj_is_real( FLA_Obj A ); 00312 FLA_Bool FLA_Obj_is_complex( FLA_Obj A ); 00313 FLA_Bool FLA_Obj_is_single_precision( FLA_Obj A ); 00314 FLA_Bool FLA_Obj_is_double_precision( FLA_Obj A ); 00315 FLA_Bool FLA_Obj_is_scalar( FLA_Obj A ); 00316 FLA_Bool FLA_Obj_is_vector( FLA_Obj A ); 00317 FLA_Bool FLA_Obj_has_zero_dim( FLA_Obj A ); 00318 FLA_Bool FLA_Obj_is_row_major( FLA_Obj A ); 00319 FLA_Bool FLA_Obj_is_col_major( FLA_Obj A ); 00320 FLA_Bool FLA_Obj_is_conformal_to( FLA_Trans trans, FLA_Obj A, FLA_Obj B ); 00321 FLA_Bool FLA_Obj_is( FLA_Obj A, FLA_Obj B ); 00322 FLA_Bool FLA_Obj_equals( FLA_Obj A, FLA_Obj B ); 00323 FLA_Bool FLA_Obj_gt( FLA_Obj A, FLA_Obj B ); 00324 FLA_Bool FLA_Obj_ge( FLA_Obj A, FLA_Obj B ); 00325 FLA_Bool FLA_Obj_lt( FLA_Obj A, FLA_Obj B ); 00326 FLA_Bool FLA_Obj_le( FLA_Obj A, FLA_Obj B ); 00327 void* FLA_Submatrix_at( FLA_Datatype datatype, void* buffer, dim_t i, dim_t j, dim_t rs, dim_t cs ); 00328 00329 FLA_Error FLA_Obj_datatype_check( FLA_Obj obj ); 00330 FLA_Error FLA_Obj_datatype_proj_to_real_check( FLA_Obj obj ); 00331 FLA_Error FLA_Obj_elemtype_check( FLA_Obj obj ); 00332 FLA_Error FLA_Obj_datatype_size_check( FLA_Datatype datatype ); 00333 FLA_Error FLA_Obj_elem_size_check( FLA_Obj obj ); 00334 FLA_Error FLA_Obj_buffer_at_view_check( FLA_Obj obj ); 00335 FLA_Error FLA_Obj_equals_check( FLA_Obj A, FLA_Obj B ); 00336 FLA_Bool FLA_Obj_gt_check( FLA_Obj A, FLA_Obj B ); 00337 FLA_Bool FLA_Obj_ge_check( FLA_Obj A, FLA_Obj B ); 00338 FLA_Bool FLA_Obj_lt_check( FLA_Obj A, FLA_Obj B ); 00339 FLA_Bool FLA_Obj_le_check( FLA_Obj A, FLA_Obj B ); 00340 FLA_Error FLA_Submatrix_at_check( FLA_Datatype datatype, void* buffer, dim_t i, dim_t j, dim_t rs, dim_t cs ); 00341 00342 00343 00344 // ----------------------------------------------------------------------------- 00345 00346 void FLA_Param_map_flame_to_netlib_trans( FLA_Trans trans, void* blas_trans ); 00347 void FLA_Param_map_flame_to_netlib_uplo( FLA_Uplo uplo, void* blas_uplo ); 00348 void FLA_Param_map_flame_to_netlib_side( FLA_Uplo side, void* blas_side ); 00349 void FLA_Param_map_flame_to_netlib_diag( FLA_Diag diag, void* blas_diag ); 00350 void FLA_Param_map_flame_to_netlib_direct( FLA_Direct direct, void* lapack_direct ); 00351 void FLA_Param_map_flame_to_netlib_storev( FLA_Store storev, void* lapack_storev ); 00352 void FLA_Param_map_flame_to_netlib_evd_type( FLA_Evd_type evd_type, void* lapack_evd_type ); 00353 void FLA_Param_map_flame_to_netlib_svd_type( FLA_Svd_type svd_type, void* lapack_svd_type ); 00354 void FLA_Param_map_flame_to_netlib_machval( FLA_Machval machval, void* blas_machval ); 00355 00356 void FLA_Param_map_flame_to_blis_trans( FLA_Trans trans, trans_t* blis_trans ); 00357 void FLA_Param_map_flame_to_blis_conj( FLA_Conj conj, conj_t* blis_conj ); 00358 void FLA_Param_map_flame_to_blis_uplo( FLA_Uplo uplo, uplo_t* blis_uplo ); 00359 void FLA_Param_map_flame_to_blis_side( FLA_Uplo side, side_t* blis_side ); 00360 void FLA_Param_map_flame_to_blis_diag( FLA_Diag diag, diag_t* blis_diag ); 00361 00362 void FLA_Param_map_blis_to_flame_trans( trans_t trans, FLA_Trans* flame_trans ); 00363 void FLA_Param_map_blis_to_flame_uplo( uplo_t uplo, FLA_Uplo* flame_uplo ); 00364 void FLA_Param_map_blis_to_flame_side( side_t side, FLA_Side* flame_side ); 00365 void FLA_Param_map_blis_to_flame_diag( diag_t diag, FLA_Diag* flame_diag ); 00366 00367 void FLA_Param_map_char_to_flame_trans( char* trans, FLA_Trans* flame_trans ); 00368 void FLA_Param_map_char_to_flame_uplo( char* uplo, FLA_Uplo* flame_uplo ); 00369 void FLA_Param_map_char_to_flame_side( char* side, FLA_Side* flame_side ); 00370 void FLA_Param_map_char_to_flame_diag( char* diag, FLA_Diag* flame_diag ); 00371 void FLA_Param_map_char_to_flame_storev( char* storev, FLA_Direct* flame_storev ); 00372 void FLA_Param_map_char_to_flame_direct( char* direct, FLA_Direct* flame_direct ); 00373 void FLA_Param_map_char_to_flame_inv( char* inv, FLA_Inv* flame_inv ); 00374 00375 /* 00376 void FLA_Param_map_blis_to_netlib_trans( char blis_trans, void* blas_trans ); 00377 void FLA_Param_map_blis_to_netlib_uplo( char blis_uplo, void* blas_uplo ); 00378 void FLA_Param_map_blis_to_netlib_side( char blis_side, void* blas_side ); 00379 void FLA_Param_map_blis_to_netlib_diag( char blis_diag, void* blas_diag ); 00380 */ 00381 00382 void FLA_Param_map_netlib_to_flame_trans( char* trans, FLA_Trans* flame_trans ); 00383 void FLA_Param_map_netlib_to_flame_uplo( char* uplo, FLA_Uplo* flame_uplo ); 00384 void FLA_Param_map_netlib_to_flame_side( char* side, FLA_Side* flame_side ); 00385 void FLA_Param_map_netlib_to_flame_diag( char* diag, FLA_Diag* flame_diag ); 00386 void FLA_Param_map_netlib_to_flame_inv( int* itype, FLA_Inv* flame_inv ); 00387 00388 00389 00390 00391 // ----------------------------------------------------------------------------- 00392 00393 FLA_Error FLA_Part_2x2( FLA_Obj A, FLA_Obj *A11, FLA_Obj *A12, 00394 FLA_Obj *A21, FLA_Obj *A22, 00395 dim_t mb, dim_t nb, FLA_Quadrant quadrant ); 00396 00397 FLA_Error FLA_Part_2x1 ( FLA_Obj A, FLA_Obj *A1, 00398 FLA_Obj *A2, 00399 dim_t mb, FLA_Side side ); 00400 00401 FLA_Error FLA_Part_1x2( FLA_Obj A, FLA_Obj *A1, FLA_Obj *A2, 00402 dim_t nb, FLA_Side side ); 00403 00404 FLA_Error FLA_Merge_2x2( FLA_Obj A11, FLA_Obj A12, 00405 FLA_Obj A21, FLA_Obj A22, FLA_Obj *A ); 00406 00407 FLA_Error FLA_Merge_2x1( FLA_Obj AT, 00408 FLA_Obj AB, FLA_Obj *A ); 00409 00410 FLA_Error FLA_Merge_1x2( FLA_Obj AL, FLA_Obj AR, FLA_Obj *A ); 00411 00412 FLA_Error FLA_Repart_2x2_to_3x3( FLA_Obj ATL, FLA_Obj ATR, FLA_Obj *A00, FLA_Obj *A01, FLA_Obj *A02, 00413 FLA_Obj *A10, FLA_Obj *A11, FLA_Obj *A12, 00414 FLA_Obj ABL, FLA_Obj ABR, FLA_Obj *A20, FLA_Obj *A21, FLA_Obj *A22, 00415 dim_t mb, dim_t nb, FLA_Quadrant quadrant ); 00416 00417 FLA_Error FLA_Repart_2x1_to_3x1( FLA_Obj AT, FLA_Obj *A0, 00418 FLA_Obj *A1, 00419 FLA_Obj AB, FLA_Obj *A2, 00420 dim_t mb, FLA_Side side ); 00421 00422 FLA_Error FLA_Repart_1x2_to_1x3( FLA_Obj AL, FLA_Obj AR, 00423 FLA_Obj *A0, FLA_Obj *A1, FLA_Obj *A2, 00424 dim_t nb, FLA_Side side ); 00425 00426 FLA_Error FLA_Cont_with_3x3_to_2x2( FLA_Obj *ATL, FLA_Obj *ATR, FLA_Obj A00, FLA_Obj A01, FLA_Obj A02, 00427 FLA_Obj A10, FLA_Obj A11, FLA_Obj A12, 00428 FLA_Obj *ABL, FLA_Obj *ABR, FLA_Obj A20, FLA_Obj A21, FLA_Obj A22, 00429 FLA_Quadrant quadrant ); 00430 00431 FLA_Error FLA_Cont_with_3x1_to_2x1( FLA_Obj *AT, FLA_Obj A0, 00432 FLA_Obj A1, 00433 FLA_Obj *AB, FLA_Obj A2, 00434 FLA_Side side ); 00435 00436 FLA_Error FLA_Cont_with_1x3_to_1x2( FLA_Obj *AL, FLA_Obj *AR, 00437 FLA_Obj A0, FLA_Obj A1, FLA_Obj A2, 00438 FLA_Side side ); 00439 00440 FLA_Error FLA_Repart_3x3_to_5x5( FLA_Obj ATL, FLA_Obj ATM, FLA_Obj ATR, 00441 FLA_Obj AML, FLA_Obj AMM, FLA_Obj AMR, 00442 FLA_Obj ABL, FLA_Obj ABM, FLA_Obj ABR, 00443 FLA_Obj *A00, FLA_Obj *A01, FLA_Obj *A02, FLA_Obj *A03, FLA_Obj *A04, 00444 FLA_Obj *A10, FLA_Obj *A11, FLA_Obj *A12, FLA_Obj *A13, FLA_Obj *A14, 00445 FLA_Obj *A20, FLA_Obj *A21, FLA_Obj *A22, FLA_Obj *A23, FLA_Obj *A24, 00446 FLA_Obj *A30, FLA_Obj *A31, FLA_Obj *A32, FLA_Obj *A33, FLA_Obj *A34, 00447 FLA_Obj *A40, FLA_Obj *A41, FLA_Obj *A42, FLA_Obj *A43, FLA_Obj *A44, 00448 dim_t b, FLA_Quadrant quadrant ); 00449 00450 FLA_Error FLA_Cont_with_5x5_to_3x3( FLA_Obj *ATL, FLA_Obj *ATM, FLA_Obj *ATR, 00451 FLA_Obj *AML, FLA_Obj *AMM, FLA_Obj *AMR, 00452 FLA_Obj *ABL, FLA_Obj *ABM, FLA_Obj *ABR, 00453 FLA_Obj A00, FLA_Obj A01, FLA_Obj A02, FLA_Obj A03, FLA_Obj A04, 00454 FLA_Obj A10, FLA_Obj A11, FLA_Obj A12, FLA_Obj A13, FLA_Obj A14, 00455 FLA_Obj A20, FLA_Obj A21, FLA_Obj A22, FLA_Obj A23, FLA_Obj A24, 00456 FLA_Obj A30, FLA_Obj A31, FLA_Obj A32, FLA_Obj A33, FLA_Obj A34, 00457 FLA_Obj A40, FLA_Obj A41, FLA_Obj A42, FLA_Obj A43, FLA_Obj A44, 00458 FLA_Quadrant quadrant ); 00459 00460 00461 00462 FLA_Error FLA_Part_2x2_check( FLA_Obj A, FLA_Obj *A11, FLA_Obj *A12, 00463 FLA_Obj *A21, FLA_Obj *A22, 00464 dim_t mb, dim_t nb, FLA_Quadrant quadrant ); 00465 00466 FLA_Error FLA_Part_2x1_check( FLA_Obj A, FLA_Obj *A1, 00467 FLA_Obj *A2, 00468 dim_t mb, FLA_Side side ); 00469 00470 FLA_Error FLA_Part_1x2_check( FLA_Obj A, FLA_Obj *A1, FLA_Obj *A2, 00471 dim_t nb, FLA_Side side ); 00472 00473 FLA_Error FLA_Merge_2x2_check( FLA_Obj A11, FLA_Obj A12, 00474 FLA_Obj A21, FLA_Obj A22, FLA_Obj *A ); 00475 00476 FLA_Error FLA_Merge_2x1_check( FLA_Obj AT, 00477 FLA_Obj AB, FLA_Obj *A ); 00478 00479 FLA_Error FLA_Merge_1x2_check( FLA_Obj AL, FLA_Obj AR, FLA_Obj *A ); 00480 00481 FLA_Error FLA_Repart_2x2_to_3x3_check( FLA_Obj ATL, FLA_Obj ATR, FLA_Obj *A00, FLA_Obj *A01, FLA_Obj *A02, 00482 FLA_Obj *A10, FLA_Obj *A11, FLA_Obj *A12, 00483 FLA_Obj ABL, FLA_Obj ABR, FLA_Obj *A20, FLA_Obj *A21, FLA_Obj *A22, 00484 dim_t mb, dim_t nb, FLA_Quadrant quadrant ); 00485 00486 FLA_Error FLA_Repart_2x1_to_3x1_check( FLA_Obj AT, FLA_Obj *A0, 00487 FLA_Obj *A1, 00488 FLA_Obj AB, FLA_Obj *A2, 00489 dim_t mb, FLA_Side side ); 00490 00491 FLA_Error FLA_Repart_1x2_to_1x3_check( FLA_Obj AL, FLA_Obj AR, 00492 FLA_Obj *A0, FLA_Obj *A1, FLA_Obj *A2, 00493 dim_t nb, FLA_Side side ); 00494 00495 FLA_Error FLA_Cont_with_3x3_to_2x2_check( FLA_Obj *ATL, FLA_Obj *ATR, FLA_Obj A00, FLA_Obj A01, FLA_Obj A02, 00496 FLA_Obj A10, FLA_Obj A11, FLA_Obj A12, 00497 FLA_Obj *ABL, FLA_Obj *ABR, FLA_Obj A20, FLA_Obj A21, FLA_Obj A22, 00498 FLA_Quadrant quadrant ); 00499 00500 FLA_Error FLA_Cont_with_3x1_to_2x1_check( FLA_Obj *AT, FLA_Obj A0, 00501 FLA_Obj A1, 00502 FLA_Obj *AB, FLA_Obj A2, 00503 FLA_Side side ); 00504 00505 FLA_Error FLA_Cont_with_1x3_to_1x2_check( FLA_Obj *AL, FLA_Obj *AR, 00506 FLA_Obj A0, FLA_Obj A1, FLA_Obj A2, 00507 FLA_Side side );