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 
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