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