libflame
revision_anchor
|
00001 /* 00002 00003 Copyright (C) 2014, The University of Texas at Austin 00004 00005 This file is part of libflame and is available under the 3-Clause 00006 BSD license, which can be found in the LICENSE file at the top-level 00007 directory, or at http://opensource.org/licenses/BSD-3-Clause 00008 00009 */ 00010 00011 // ----------------------------------------------------------------------------- 00012 00013 fla_blocksize_t* FLA_Blocksize_create( dim_t b_s, dim_t b_d, dim_t b_c, dim_t b_z ); 00014 fla_blocksize_t* FLA_Blocksize_create_copy( fla_blocksize_t* bp ); 00015 void FLA_Blocksize_set( fla_blocksize_t* bp, dim_t b_s, dim_t b_d, dim_t b_c, dim_t b_z ); 00016 void FLA_Blocksize_scale( fla_blocksize_t* bp, double factor ); 00017 void FLA_Blocksize_free( fla_blocksize_t* bp ); 00018 dim_t FLA_Blocksize_extract( FLA_Datatype dt, fla_blocksize_t* bp ); 00019 00020 fla_blocksize_t* FLA_Query_blocksizes( FLA_Dimension dim ); 00021 dim_t FLA_Query_blocksize( FLA_Datatype dt, FLA_Dimension dim ); 00022 00023 dim_t FLA_Determine_blocksize( FLA_Obj A_unproc, FLA_Quadrant to_dir, fla_blocksize_t* cntl_blocksizes ); 00024 dim_t FLA_determine_matrix_size( FLA_Obj A_unproc, FLA_Quadrant to_dir ); 00025 00026 00027 00028 // ----------------------------------------------------------------------------- 00029 00030 unsigned int FLA_Check_error_level( void ); 00031 unsigned int FLA_Check_error_level_set( unsigned int level ); 00032 FLA_Error FLA_Check_error_code_helper( int code, char* file, int line ); 00033 FLA_Error FLA_Check_valid_side( FLA_Side side ); 00034 FLA_Error FLA_Check_valid_uplo( FLA_Uplo uplo ); 00035 FLA_Error FLA_Check_valid_trans( FLA_Trans trans ); 00036 FLA_Error FLA_Check_valid_diag( FLA_Diag diag ); 00037 FLA_Error FLA_Check_valid_conj( FLA_Conj conj ); 00038 FLA_Error FLA_Check_valid_direct( FLA_Conj direct ); 00039 FLA_Error FLA_Check_valid_storev( FLA_Conj storev ); 00040 FLA_Error FLA_Check_valid_inverse( FLA_Inv inv ); 00041 FLA_Error FLA_Check_valid_datatype( FLA_Datatype datatype ); 00042 FLA_Error FLA_Check_valid_object_datatype( FLA_Obj A ); 00043 FLA_Error FLA_Check_valid_evd_type( FLA_Evd_type evd_type ); 00044 FLA_Error FLA_Check_valid_svd_type( FLA_Svd_type svd_type ); 00045 FLA_Error FLA_Check_valid_svd_type_combination( FLA_Svd_type svd_type_u, FLA_Svd_type svd_type_v ); 00046 FLA_Error FLA_Check_valid_svd_type_and_trans_combination( FLA_Svd_type svd_type_u, FLA_Trans transu, 00047 FLA_Svd_type svd_type_v, FLA_Trans transv ); 00048 FLA_Error FLA_Check_floating_datatype( FLA_Datatype datatype ); 00049 FLA_Error FLA_Check_int_datatype( FLA_Datatype datatype ); 00050 FLA_Error FLA_Check_real_datatype( FLA_Datatype datatype ); 00051 FLA_Error FLA_Check_complex_datatype( FLA_Datatype datatype ); 00052 FLA_Error FLA_Check_floating_object( FLA_Obj A ); 00053 FLA_Error FLA_Check_int_object( FLA_Obj A ); 00054 FLA_Error FLA_Check_real_object( FLA_Obj A ); 00055 FLA_Error FLA_Check_comparable_object( FLA_Obj A ); 00056 FLA_Error FLA_Check_complex_object( FLA_Obj A ); 00057 FLA_Error FLA_Check_consistent_datatype( FLA_Datatype datatype, FLA_Obj A ); 00058 FLA_Error FLA_Check_consistent_object_datatype( FLA_Obj A, FLA_Obj B ); 00059 FLA_Error FLA_Check_identical_object_precision( FLA_Obj A, FLA_Obj B ); 00060 FLA_Error FLA_Check_square( FLA_Obj A ); 00061 FLA_Error FLA_Check_if_scalar( FLA_Obj A ); 00062 FLA_Error FLA_Check_if_vector( FLA_Obj A ); 00063 FLA_Error FLA_Check_conformal_dims( FLA_Trans trans, FLA_Obj A, FLA_Obj B ); 00064 FLA_Error FLA_Check_matrix_matrix_dims( FLA_Trans transa, FLA_Trans transb, FLA_Obj A, FLA_Obj B, FLA_Obj C ); 00065 FLA_Error FLA_Check_matrix_vector_dims( FLA_Trans trans, FLA_Obj A, FLA_Obj x, FLA_Obj y ); 00066 FLA_Error FLA_Check_equal_vector_dims( FLA_Obj x, FLA_Obj y ); 00067 FLA_Error FLA_Check_conj1_trans_and_datatype( FLA_Trans trans, FLA_Obj A ); 00068 FLA_Error FLA_Check_hess_indices( FLA_Obj A, int ilo, int ihi ); 00069 FLA_Error FLA_Check_null_pointer( void* ptr ); 00070 FLA_Error FLA_Check_object_dims( FLA_Trans trans, dim_t m, dim_t n, FLA_Obj A ); 00071 FLA_Error FLA_Check_valid_pivot_type( FLA_Pivot_type ptype ); 00072 FLA_Error FLA_Check_malloc_pointer( void* ptr ); 00073 FLA_Error FLA_Check_base_buffer_mismatch( FLA_Obj A, FLA_Obj B ); 00074 FLA_Error FLA_Check_adjacent_objects_2x2( FLA_Obj A11, FLA_Obj A12, 00075 FLA_Obj A21, FLA_Obj A22 ); 00076 FLA_Error FLA_Check_adjacent_objects_2x1( FLA_Obj AT, 00077 FLA_Obj AB ); 00078 FLA_Error FLA_Check_adjacent_objects_1x2( FLA_Obj AL, FLA_Obj AR ); 00079 FLA_Error FLA_Check_blocksize_value( dim_t b ); 00080 FLA_Error FLA_Check_blocksize_object( FLA_Datatype datatype, fla_blocksize_t* bp ); 00081 FLA_Error FLA_Check_file_descriptor( int fd ); 00082 FLA_Error FLA_Check_lseek_result( int requested_offset, int lseek_r_val ); 00083 FLA_Error FLA_Check_close_result( int close_r_val ); 00084 FLA_Error FLA_Check_unlink_result( int unlink_r_val ); 00085 FLA_Error FLA_Check_read_result( int requested_size, int read_r_val ); 00086 FLA_Error FLA_Check_write_result( int requested_size, int write_r_val ); 00087 FLA_Error FLA_Check_valid_quadrant( FLA_Quadrant quad ); 00088 FLA_Error FLA_Check_vector_dim_min( FLA_Obj x, dim_t min_dim ); 00089 FLA_Error FLA_Check_pthread_create_result( int pthread_create_r_val ); 00090 FLA_Error FLA_Check_pthread_join_result( int pthread_join_r_val ); 00091 FLA_Error FLA_Check_valid_isgn_value( FLA_Obj isgn ); 00092 FLA_Error FLA_Check_sylv_matrix_dims( FLA_Obj A, FLA_Obj B, FLA_Obj C ); 00093 FLA_Error FLA_Check_chol_failure( FLA_Error r_val ); 00094 FLA_Error FLA_Check_valid_elemtype( FLA_Elemtype elemtype ); 00095 FLA_Error FLA_Check_posix_memalign_failure( int r_val ); 00096 FLA_Error FLA_Check_submatrix_dims_and_offset( dim_t m, dim_t n, dim_t i, dim_t j, FLA_Obj A ); 00097 FLA_Error FLA_Check_object_scalar_elemtype( FLA_Obj A ); 00098 FLA_Error FLA_Check_object_matrix_elemtype( FLA_Obj A ); 00099 FLA_Error FLA_Check_num_threads( unsigned int n_threads ); 00100 FLA_Error FLA_Check_conj_and_datatype( FLA_Conj conj, FLA_Obj A ); 00101 FLA_Error FLA_Check_valid_complex_trans( FLA_Trans trans ); 00102 FLA_Error FLA_Check_valid_real_trans( FLA_Trans trans ); 00103 FLA_Error FLA_Check_valid_blas_trans( FLA_Trans trans ); 00104 FLA_Error FLA_Check_nonconstant_datatype( FLA_Datatype datatype ); 00105 FLA_Error FLA_Check_nonconstant_object( FLA_Obj A ); 00106 FLA_Error FLA_Check_identical_object_datatype( FLA_Obj A, FLA_Obj B ); 00107 FLA_Error FLA_Check_divide_by_zero( FLA_Obj alpha ); 00108 FLA_Error FLA_Check_identical_object_elemtype( FLA_Obj A, FLA_Obj B ); 00109 FLA_Error FLA_Check_pivot_index_range( FLA_Obj p, dim_t k1, dim_t k2 ); 00110 FLA_Error FLA_Check_householder_panel_dims( FLA_Obj A, FLA_Obj T ); 00111 FLA_Error FLA_Check_object_length_equals( FLA_Obj A, dim_t m ); 00112 FLA_Error FLA_Check_object_width_equals( FLA_Obj A, dim_t n ); 00113 FLA_Error FLA_Check_object_length_min( FLA_Obj A, dim_t m ); 00114 FLA_Error FLA_Check_object_width_min( FLA_Obj A, dim_t n ); 00115 FLA_Error FLA_Check_valid_error_level( unsigned int level ); 00116 FLA_Error FLA_Check_attempted_repart_2x2( FLA_Obj A_quad, dim_t b_m, dim_t b_n ); 00117 FLA_Error FLA_Check_attempted_repart_2x1( FLA_Obj A_side, dim_t b_m ); 00118 FLA_Error FLA_Check_attempted_repart_1x2( FLA_Obj A_side, dim_t b_n ); 00119 FLA_Error FLA_Check_valid_leftright_side( FLA_Side side ); 00120 FLA_Error FLA_Check_valid_topbottom_side( FLA_Side side ); 00121 FLA_Error FLA_Check_matrix_strides( dim_t m, dim_t n, dim_t rs, dim_t cs ); 00122 FLA_Error FLA_Check_vector_dim( FLA_Obj x, dim_t expected_length ); 00123 FLA_Error FLA_Check_row_vector( FLA_Obj x ); 00124 FLA_Error FLA_Check_col_vector( FLA_Obj x ); 00125 FLA_Error FLA_Check_valid_machval( FLA_Machval val ); 00126 FLA_Error FLA_Check_valid_evd_type( FLA_Evd_type evd_type ); 00127 FLA_Error FLA_Check_valid_svd_type( FLA_Svd_type svd_type ); 00128 FLA_Error FLA_Check_valid_diag_offset( FLA_Obj A, FLA_Diag_off offset ); 00129 FLA_Error FLA_Check_col_storage( FLA_Obj A ); 00130 FLA_Error FLA_Check_row_storage( FLA_Obj A ); 00131 00132 00133 00134 00135 // ----------------------------------------------------------------------------- 00136 00137 char* FLA_Error_string_for_code( int code ); 00138 void FLA_Error_messages_init( void ); 00139 void FLA_Print_message( char *str, char *file, int line ); 00140 void FLA_Abort( void ); 00141 00142 00143 00144 // ----------------------------------------------------------------------------- 00145 00146 void FLA_Init( void ); 00147 void FLA_Finalize( void ); 00148 FLA_Bool FLA_Initialized( void ); 00149 00150 void FLA_Init_safe( FLA_Error* init_result ); 00151 void FLA_Finalize_safe( FLA_Error init_result ); 00152 00153 void FLA_Init_constants( void ); 00154 void FLA_Finalize_constants( void ); 00155 00156 void FLA_Init_numerical_constants( void ); 00157 void FLA_Finalize_numerical_constants( void ); 00158 00159 00160 00161 //------------------------------------------------------------------------------ 00162 00163 void FLA_Lock_init( FLA_Lock* fla_lock_ptr ); 00164 void FLA_Lock_destroy( FLA_Lock* fla_lock_ptr ); 00165 void FLA_Lock_acquire( FLA_Lock* fla_lock_ptr ); 00166 void FLA_Lock_release( FLA_Lock* fla_lock_ptr ); 00167 00168 00169 00170 // ----------------------------------------------------------------------------- 00171 00172 void FLA_Memory_leak_counter_init( void ); 00173 void FLA_Memory_leak_counter_finalize( void ); 00174 FLA_Bool FLA_Memory_leak_counter_status( void ); 00175 FLA_Bool FLA_Memory_leak_counter_set( FLA_Bool new_status ); 00176 00177 void* FLA_malloc( size_t size ); 00178 void* FLA_realloc( void* old_ptr, size_t size ); 00179 void FLA_free( void *ptr ); 00180 00181 00182 00183 // ----------------------------------------------------------------------------- 00184 00185 FLA_Error FLA_Obj_copy_view( FLA_Obj A, FLA_Obj* B ); 00186 void FLA_Obj_extract_real_scalar( FLA_Obj alpha, double* alpha_value ); 00187 void FLA_Obj_extract_complex_scalar( FLA_Obj alpha, dcomplex* alpha_value ); 00188 void FLA_Obj_extract_real_part( FLA_Obj alpha, FLA_Obj beta ); 00189 void FLA_Obj_extract_imag_part( FLA_Obj alpha, FLA_Obj beta ); 00190 void FLA_Obj_set_real_part( FLA_Obj alpha, FLA_Obj beta ); 00191 void FLA_Obj_set_imag_part( FLA_Obj alpha, FLA_Obj beta ); 00192 FLA_Error FLA_Obj_show( char *s1, FLA_Obj A, char *format, char *s2 ); 00193 FLA_Error FLA_Obj_fshow( FILE* file, char *s1, FLA_Obj A, char *format, char *s2 ); 00194 00195 FLA_Error FLA_Obj_copy_view_check( FLA_Obj A, FLA_Obj* B ); 00196 FLA_Error FLA_Obj_extract_real_scalar_check( FLA_Obj alpha, double* alpha_value ); 00197 FLA_Error FLA_Obj_extract_complex_scalar_check( FLA_Obj alpha, dcomplex* alpha_value ); 00198 FLA_Error FLA_Obj_extract_real_part_check( FLA_Obj alpha, FLA_Obj beta ); 00199 FLA_Error FLA_Obj_extract_imag_part_check( FLA_Obj alpha, FLA_Obj beta ); 00200 FLA_Error FLA_Obj_set_real_part_check( FLA_Obj alpha, FLA_Obj beta ); 00201 FLA_Error FLA_Obj_set_imag_part_check( FLA_Obj alpha, FLA_Obj beta ); 00202 FLA_Error FLA_Obj_show_check( char* s1, FLA_Obj obj, char* format, char* s2 ); 00203 FLA_Error FLA_Obj_fshow_check( FILE* file, char* s1, FLA_Obj obj, char* format, char* s2 ); 00204 00205 00206 // ----------------------------------------------------------------------------- 00207 00208 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 ); 00209 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 ); 00210 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 ); 00211 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 ); 00212 00213 00214 00215 // ----------------------------------------------------------------------------- 00216 00217 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 ); 00218 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 ); 00219 00220 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 ); 00221 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 ); 00222 00223 00224 00225 // ----------------------------------------------------------------------------- 00226 00227 #ifdef FLA_ENABLE_SCC 00228 void* FLA_shmalloc( size_t size ); 00229 void FLA_shfree( void* ptr ); 00230 FLA_Bool FLA_is_owner( void ); 00231 #endif 00232 FLA_Error FLA_Obj_nullify( FLA_Obj *obj ); 00233 FLA_Error FLA_Obj_create( FLA_Datatype datatype, dim_t m, dim_t n, dim_t rs, dim_t cs, FLA_Obj *obj ); 00234 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 ); 00235 FLA_Error FLA_Obj_create_conf_to( FLA_Trans trans, FLA_Obj old, FLA_Obj *obj ); 00236 FLA_Error FLA_Obj_create_copy_of( FLA_Trans trans, FLA_Obj old, FLA_Obj *obj ); 00237 FLA_Error FLA_Obj_create_without_buffer( FLA_Datatype datatype, dim_t m, dim_t n, FLA_Obj *obj ); 00238 FLA_Error FLA_Obj_create_constant( double const_real, FLA_Obj *obj ); 00239 FLA_Error FLA_Obj_create_constant_ext( float const_s, double const_d, FLA_Obj *obj ); 00240 FLA_Error FLA_Obj_create_complex_constant( double const_real, double const_imag, FLA_Obj *obj ); 00241 FLA_Error FLA_Obj_attach_buffer( void *buffer, dim_t rs, dim_t cs, FLA_Obj *obj ); 00242 FLA_Error FLA_Obj_create_buffer( dim_t rs, dim_t cs, FLA_Obj *obj ); 00243 FLA_Error FLA_Obj_free( FLA_Obj *obj ); 00244 FLA_Error FLA_Obj_free_without_buffer( FLA_Obj *obj ); 00245 FLA_Error FLA_Obj_free_buffer( FLA_Obj *obj ); 00246 dim_t FLA_align_ldim( dim_t ldim, dim_t elem_size ); 00247 dim_t FLA_compute_num_elem( dim_t elem_size, dim_t m, dim_t n, dim_t* rs, dim_t* cs ); 00248 void FLA_adjust_strides( dim_t m, dim_t n, dim_t* rs, dim_t* cs ); 00249 00250 FLA_Error FLA_Obj_flip_base( FLA_Obj *obj ); 00251 FLA_Error FLA_Obj_flip_view( FLA_Obj *obj ); 00252 00253 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 ); 00254 FLA_Error FLA_Obj_create_conf_to_check( FLA_Trans trans, FLA_Obj obj_old, FLA_Obj *obj ); 00255 FLA_Error FLA_Obj_create_without_buffer_check( FLA_Datatype datatype, dim_t m, dim_t n, FLA_Obj *obj ); 00256 FLA_Error FLA_Obj_create_constant_check( double const_real, FLA_Obj *obj ); 00257 FLA_Error FLA_Obj_create_constant_ext_check( float const_s, double const_d, FLA_Obj *obj ); 00258 FLA_Error FLA_Obj_create_complex_constant_check( double const_real, double const_imag, FLA_Obj *obj ); 00259 FLA_Error FLA_Obj_attach_buffer_check( void *buffer, dim_t rs, dim_t cs, FLA_Obj *obj ); 00260 FLA_Error FLA_Obj_create_buffer_check( dim_t rs, dim_t cs, FLA_Obj *obj ); 00261 FLA_Error FLA_Obj_free_check( FLA_Obj *obj ); 00262 FLA_Error FLA_Obj_free_without_buffer_check( FLA_Obj *obj ); 00263 FLA_Error FLA_Obj_free_buffer_check( FLA_Obj *obj ); 00264 00265 FLA_Error FLA_Obj_create_buffer_task( dim_t rs, dim_t cs, FLA_Obj obj, void* cntl ); 00266 FLA_Error FLA_Obj_free_buffer_task( FLA_Obj obj, void* cntl ); 00267 00268 00269 // ----------------------------------------------------------------------------- 00270 00271 FLA_Datatype FLA_Obj_datatype( FLA_Obj obj ); 00272 FLA_Datatype FLA_Obj_datatype_proj_to_real( FLA_Obj A ); 00273 FLA_Datatype FLA_Obj_datatype_proj_to_complex( FLA_Obj A ); 00274 FLA_Elemtype FLA_Obj_elemtype( FLA_Obj obj ); 00275 dim_t FLA_Obj_datatype_size( FLA_Datatype datatype ); 00276 dim_t FLA_Obj_elem_size( FLA_Obj obj ); 00277 dim_t FLA_Obj_length( FLA_Obj obj ); 00278 dim_t FLA_Obj_width( FLA_Obj obj ); 00279 FLA_Uplo FLA_Obj_structure( FLA_Obj obj ); 00280 dim_t FLA_Obj_vector_dim( FLA_Obj obj ); 00281 dim_t FLA_Obj_vector_inc( FLA_Obj obj ); 00282 dim_t FLA_Obj_min_dim( FLA_Obj obj ); 00283 dim_t FLA_Obj_max_dim( FLA_Obj obj ); 00284 dim_t FLA_Obj_row_stride( FLA_Obj obj ); 00285 dim_t FLA_Obj_col_stride( FLA_Obj obj ); 00286 dim_t FLA_Obj_row_offset( FLA_Obj obj ); 00287 dim_t FLA_Obj_col_offset( FLA_Obj obj ); 00288 dim_t FLA_Obj_base_length( FLA_Obj obj ); 00289 dim_t FLA_Obj_base_width( FLA_Obj obj ); 00290 dim_t FLA_Obj_num_elem_alloc( FLA_Obj obj ); 00291 void* FLA_Obj_base_buffer( FLA_Obj obj ); 00292 void* FLA_Obj_buffer_at_view( FLA_Obj obj ); 00293 FLA_Bool FLA_Obj_buffer_is_null( FLA_Obj obj ); 00294 FLA_Bool FLA_Obj_is_int( FLA_Obj A ); 00295 FLA_Bool FLA_Obj_is_floating_point( FLA_Obj A ); 00296 FLA_Bool FLA_Obj_is_constant( FLA_Obj A ); 00297 FLA_Bool FLA_Obj_is_real( FLA_Obj A ); 00298 FLA_Bool FLA_Obj_is_complex( FLA_Obj A ); 00299 FLA_Bool FLA_Obj_is_single_precision( FLA_Obj A ); 00300 FLA_Bool FLA_Obj_is_double_precision( FLA_Obj A ); 00301 FLA_Bool FLA_Obj_is_scalar( FLA_Obj A ); 00302 FLA_Bool FLA_Obj_is_vector( FLA_Obj A ); 00303 FLA_Bool FLA_Obj_has_zero_dim( FLA_Obj A ); 00304 FLA_Bool FLA_Obj_is_row_major( FLA_Obj A ); 00305 FLA_Bool FLA_Obj_is_col_major( FLA_Obj A ); 00306 FLA_Bool FLA_Obj_is_conformal_to( FLA_Trans trans, FLA_Obj A, FLA_Obj B ); 00307 FLA_Bool FLA_Obj_is( FLA_Obj A, FLA_Obj B ); 00308 FLA_Bool FLA_Obj_is_identical( FLA_Obj A, FLA_Obj B ); 00309 FLA_Bool FLA_Obj_is_overlapped( FLA_Obj A, FLA_Obj B ); 00310 FLA_Bool FLA_Obj_equals( FLA_Obj A, FLA_Obj B ); 00311 FLA_Bool FLA_Obj_gt( FLA_Obj A, FLA_Obj B ); 00312 FLA_Bool FLA_Obj_ge( FLA_Obj A, FLA_Obj B ); 00313 FLA_Bool FLA_Obj_lt( FLA_Obj A, FLA_Obj B ); 00314 FLA_Bool FLA_Obj_le( FLA_Obj A, FLA_Obj B ); 00315 void* FLA_Submatrix_at( FLA_Datatype datatype, void* buffer, dim_t i, dim_t j, dim_t rs, dim_t cs ); 00316 FLA_Bool FLA_Obj_has_nan( FLA_Obj A ); 00317 00318 FLA_Error FLA_Obj_datatype_check( FLA_Obj obj ); 00319 FLA_Error FLA_Obj_datatype_proj_to_real_check( FLA_Obj obj ); 00320 FLA_Error FLA_Obj_elemtype_check( FLA_Obj obj ); 00321 FLA_Error FLA_Obj_datatype_size_check( FLA_Datatype datatype ); 00322 FLA_Error FLA_Obj_elem_size_check( FLA_Obj obj ); 00323 FLA_Error FLA_Obj_buffer_at_view_check( FLA_Obj obj ); 00324 FLA_Error FLA_Obj_equals_check( FLA_Obj A, FLA_Obj B ); 00325 FLA_Bool FLA_Obj_gt_check( FLA_Obj A, FLA_Obj B ); 00326 FLA_Bool FLA_Obj_ge_check( FLA_Obj A, FLA_Obj B ); 00327 FLA_Bool FLA_Obj_lt_check( FLA_Obj A, FLA_Obj B ); 00328 FLA_Bool FLA_Obj_le_check( FLA_Obj A, FLA_Obj B ); 00329 FLA_Error FLA_Submatrix_at_check( FLA_Datatype datatype, void* buffer, dim_t i, dim_t j, dim_t rs, dim_t cs ); 00330 FLA_Error FLA_Obj_has_nan_check( FLA_Obj A ); 00331 00332 00333 // ----------------------------------------------------------------------------- 00334 00335 void FLA_Param_map_flame_to_netlib_trans( FLA_Trans trans, void* blas_trans ); 00336 void FLA_Param_map_flame_to_netlib_uplo( FLA_Uplo uplo, void* blas_uplo ); 00337 void FLA_Param_map_flame_to_netlib_side( FLA_Uplo side, void* blas_side ); 00338 void FLA_Param_map_flame_to_netlib_diag( FLA_Diag diag, void* blas_diag ); 00339 void FLA_Param_map_flame_to_netlib_direct( FLA_Direct direct, void* lapack_direct ); 00340 void FLA_Param_map_flame_to_netlib_storev( FLA_Store storev, void* lapack_storev ); 00341 void FLA_Param_map_flame_to_netlib_evd_type( FLA_Evd_type evd_type, void* lapack_evd_type ); 00342 void FLA_Param_map_flame_to_netlib_svd_type( FLA_Svd_type svd_type, void* lapack_svd_type ); 00343 void FLA_Param_map_flame_to_netlib_machval( FLA_Machval machval, void* blas_machval ); 00344 00345 void FLA_Param_map_flame_to_blis_trans( FLA_Trans trans, trans1_t* blis_trans ); 00346 void FLA_Param_map_flame_to_blis_conj( FLA_Conj conj, conj1_t* blis_conj ); 00347 void FLA_Param_map_flame_to_blis_uplo( FLA_Uplo uplo, uplo1_t* blis_uplo ); 00348 void FLA_Param_map_flame_to_blis_side( FLA_Uplo side, side1_t* blis_side ); 00349 void FLA_Param_map_flame_to_blis_diag( FLA_Diag diag, diag1_t* blis_diag ); 00350 00351 void FLA_Param_map_blis_to_flame_trans( trans1_t trans, FLA_Trans* flame_trans ); 00352 void FLA_Param_map_blis_to_flame_uplo( uplo1_t uplo, FLA_Uplo* flame_uplo ); 00353 void FLA_Param_map_blis_to_flame_side( side1_t side, FLA_Side* flame_side ); 00354 void FLA_Param_map_blis_to_flame_diag( diag1_t diag, FLA_Diag* flame_diag ); 00355 00356 void FLA_Param_map_char_to_flame_trans( char* trans, FLA_Trans* flame_trans ); 00357 void FLA_Param_map_char_to_flame_uplo( char* uplo, FLA_Uplo* flame_uplo ); 00358 void FLA_Param_map_char_to_flame_side( char* side, FLA_Side* flame_side ); 00359 void FLA_Param_map_char_to_flame_diag( char* diag, FLA_Diag* flame_diag ); 00360 void FLA_Param_map_char_to_flame_storev( char* storev, FLA_Direct* flame_storev ); 00361 void FLA_Param_map_char_to_flame_direct( char* direct, FLA_Direct* flame_direct ); 00362 void FLA_Param_map_char_to_flame_inv( char* inv, FLA_Inv* flame_inv ); 00363 00364 /* 00365 void FLA_Param_map_blis_to_netlib_trans( char blis_trans, void* blas_trans ); 00366 void FLA_Param_map_blis_to_netlib_uplo( char blis_uplo, void* blas_uplo ); 00367 void FLA_Param_map_blis_to_netlib_side( char blis_side, void* blas_side ); 00368 void FLA_Param_map_blis_to_netlib_diag( char blis_diag, void* blas_diag ); 00369 */ 00370 00371 void FLA_Param_map_netlib_to_flame_trans( char* trans, FLA_Trans* flame_trans ); 00372 void FLA_Param_map_netlib_to_flame_uplo( char* uplo, FLA_Uplo* flame_uplo ); 00373 void FLA_Param_map_netlib_to_flame_side( char* side, FLA_Side* flame_side ); 00374 void FLA_Param_map_netlib_to_flame_diag( char* diag, FLA_Diag* flame_diag ); 00375 void FLA_Param_map_netlib_to_flame_inv( int* itype, FLA_Inv* flame_inv ); 00376 void FLA_Param_map_netlib_to_flame_svd_type( char* svd, FLA_Svd_type* flame_svd ); 00377 00378 00379 00380 00381 // ----------------------------------------------------------------------------- 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_Merge_2x2( FLA_Obj A11, FLA_Obj A12, 00395 FLA_Obj A21, FLA_Obj A22, FLA_Obj *A ); 00396 00397 FLA_Error FLA_Merge_2x1( FLA_Obj AT, 00398 FLA_Obj AB, FLA_Obj *A ); 00399 00400 FLA_Error FLA_Merge_1x2( FLA_Obj AL, FLA_Obj AR, FLA_Obj *A ); 00401 00402 FLA_Error FLA_Repart_2x2_to_3x3( FLA_Obj ATL, FLA_Obj ATR, FLA_Obj *A00, FLA_Obj *A01, FLA_Obj *A02, 00403 FLA_Obj *A10, FLA_Obj *A11, FLA_Obj *A12, 00404 FLA_Obj ABL, FLA_Obj ABR, FLA_Obj *A20, FLA_Obj *A21, FLA_Obj *A22, 00405 dim_t mb, dim_t nb, FLA_Quadrant quadrant ); 00406 00407 FLA_Error FLA_Repart_2x1_to_3x1( FLA_Obj AT, FLA_Obj *A0, 00408 FLA_Obj *A1, 00409 FLA_Obj AB, FLA_Obj *A2, 00410 dim_t mb, FLA_Side side ); 00411 00412 FLA_Error FLA_Repart_1x2_to_1x3( FLA_Obj AL, FLA_Obj AR, 00413 FLA_Obj *A0, FLA_Obj *A1, FLA_Obj *A2, 00414 dim_t nb, FLA_Side side ); 00415 00416 FLA_Error FLA_Cont_with_3x3_to_2x2( FLA_Obj *ATL, FLA_Obj *ATR, FLA_Obj A00, FLA_Obj A01, FLA_Obj A02, 00417 FLA_Obj A10, FLA_Obj A11, FLA_Obj A12, 00418 FLA_Obj *ABL, FLA_Obj *ABR, FLA_Obj A20, FLA_Obj A21, FLA_Obj A22, 00419 FLA_Quadrant quadrant ); 00420 00421 FLA_Error FLA_Cont_with_3x1_to_2x1( FLA_Obj *AT, FLA_Obj A0, 00422 FLA_Obj A1, 00423 FLA_Obj *AB, FLA_Obj A2, 00424 FLA_Side side ); 00425 00426 FLA_Error FLA_Cont_with_1x3_to_1x2( FLA_Obj *AL, FLA_Obj *AR, 00427 FLA_Obj A0, FLA_Obj A1, FLA_Obj A2, 00428 FLA_Side side ); 00429 00430 FLA_Error FLA_Repart_3x3_to_5x5( FLA_Obj ATL, FLA_Obj ATM, FLA_Obj ATR, 00431 FLA_Obj AML, FLA_Obj AMM, FLA_Obj AMR, 00432 FLA_Obj ABL, FLA_Obj ABM, FLA_Obj ABR, 00433 FLA_Obj *A00, FLA_Obj *A01, FLA_Obj *A02, FLA_Obj *A03, FLA_Obj *A04, 00434 FLA_Obj *A10, FLA_Obj *A11, FLA_Obj *A12, FLA_Obj *A13, FLA_Obj *A14, 00435 FLA_Obj *A20, FLA_Obj *A21, FLA_Obj *A22, FLA_Obj *A23, FLA_Obj *A24, 00436 FLA_Obj *A30, FLA_Obj *A31, FLA_Obj *A32, FLA_Obj *A33, FLA_Obj *A34, 00437 FLA_Obj *A40, FLA_Obj *A41, FLA_Obj *A42, FLA_Obj *A43, FLA_Obj *A44, 00438 dim_t b, FLA_Quadrant quadrant ); 00439 00440 FLA_Error FLA_Cont_with_5x5_to_3x3( 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 FLA_Quadrant quadrant ); 00449 00450 00451 00452 FLA_Error FLA_Part_2x2_check( FLA_Obj A, FLA_Obj *A11, FLA_Obj *A12, 00453 FLA_Obj *A21, FLA_Obj *A22, 00454 dim_t mb, dim_t nb, FLA_Quadrant quadrant ); 00455 00456 FLA_Error FLA_Part_2x1_check( FLA_Obj A, FLA_Obj *A1, 00457 FLA_Obj *A2, 00458 dim_t mb, FLA_Side side ); 00459 00460 FLA_Error FLA_Part_1x2_check( FLA_Obj A, FLA_Obj *A1, FLA_Obj *A2, 00461 dim_t nb, FLA_Side side ); 00462 00463 FLA_Error FLA_Merge_2x2_check( FLA_Obj A11, FLA_Obj A12, 00464 FLA_Obj A21, FLA_Obj A22, FLA_Obj *A ); 00465 00466 FLA_Error FLA_Merge_2x1_check( FLA_Obj AT, 00467 FLA_Obj AB, FLA_Obj *A ); 00468 00469 FLA_Error FLA_Merge_1x2_check( FLA_Obj AL, FLA_Obj AR, FLA_Obj *A ); 00470 00471 FLA_Error FLA_Repart_2x2_to_3x3_check( FLA_Obj ATL, FLA_Obj ATR, FLA_Obj *A00, FLA_Obj *A01, FLA_Obj *A02, 00472 FLA_Obj *A10, FLA_Obj *A11, FLA_Obj *A12, 00473 FLA_Obj ABL, FLA_Obj ABR, FLA_Obj *A20, FLA_Obj *A21, FLA_Obj *A22, 00474 dim_t mb, dim_t nb, FLA_Quadrant quadrant ); 00475 00476 FLA_Error FLA_Repart_2x1_to_3x1_check( FLA_Obj AT, FLA_Obj *A0, 00477 FLA_Obj *A1, 00478 FLA_Obj AB, FLA_Obj *A2, 00479 dim_t mb, FLA_Side side ); 00480 00481 FLA_Error FLA_Repart_1x2_to_1x3_check( FLA_Obj AL, FLA_Obj AR, 00482 FLA_Obj *A0, FLA_Obj *A1, FLA_Obj *A2, 00483 dim_t nb, FLA_Side side ); 00484 00485 FLA_Error FLA_Cont_with_3x3_to_2x2_check( FLA_Obj *ATL, FLA_Obj *ATR, FLA_Obj A00, FLA_Obj A01, FLA_Obj A02, 00486 FLA_Obj A10, FLA_Obj A11, FLA_Obj A12, 00487 FLA_Obj *ABL, FLA_Obj *ABR, FLA_Obj A20, FLA_Obj A21, FLA_Obj A22, 00488 FLA_Quadrant quadrant ); 00489 00490 FLA_Error FLA_Cont_with_3x1_to_2x1_check( FLA_Obj *AT, FLA_Obj A0, 00491 FLA_Obj A1, 00492 FLA_Obj *AB, FLA_Obj A2, 00493 FLA_Side side ); 00494 00495 FLA_Error FLA_Cont_with_1x3_to_1x2_check( FLA_Obj *AL, FLA_Obj *AR, 00496 FLA_Obj A0, FLA_Obj A1, FLA_Obj A2, 00497 FLA_Side side );