libflame  revision_anchor
FLA_main_prototypes.h
Go to the documentation of this file.
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 );