FLA_Error FLA_Cont_with_1xmode3_to_1xmode2_check( FLA_Obj *AT, FLA_Obj A0, FLA_Obj A1, FLA_Obj *AB, FLA_Obj A2, dim_t mode, FLA_Side side ) { FLA_Error e_val; e_val = FLA_Check_null_pointer( AT ); FLA_Check_error_code( e_val ); e_val = FLA_Check_null_pointer( AB ); FLA_Check_error_code( e_val ); e_val = FLA_Check_valid_object_datatype( A0 ); FLA_Check_error_code( e_val ); e_val = FLA_Check_valid_object_datatype( A1 ); FLA_Check_error_code( e_val ); e_val = FLA_Check_valid_object_datatype( A2 ); FLA_Check_error_code( e_val ); e_val = FLA_Check_valid_topbottom_side( side ); FLA_Check_error_code( e_val ); // Needed: check for adjacency, similar to those in FLA_Merge_*(). return FLA_SUCCESS; }
FLA_Error FLASH_Obj_blocksizes_check( FLA_Obj H, dim_t* b_m, dim_t* b_n ) { FLA_Error e_val; e_val = FLA_Check_null_pointer( b_m ); FLA_Check_error_code( e_val ); e_val = FLA_Check_null_pointer( b_n ); FLA_Check_error_code( e_val ); return FLA_SUCCESS; }
FLA_Error FLA_Trsm_internal_check( FLA_Side side, FLA_Uplo uplo, FLA_Trans transa, FLA_Diag diag, FLA_Obj alpha, FLA_Obj A, FLA_Obj B, fla_trsm_t* cntl ) { FLA_Error e_val; // Abort if the control structure is NULL. e_val = FLA_Check_null_pointer( ( void* ) cntl ); FLA_Check_error_code( e_val ); // Verify that the object element types are identical. e_val = FLA_Check_identical_object_elemtype( A, B ); FLA_Check_error_code( e_val ); // Verify conformality between all the objects. This check works regardless // of whether the element type is FLA_MATRIX or FLA_SCALAR because the // element length and width are used instead of scalar length and width. if ( side == FLA_LEFT ) { //e_val = FLA_Check_matrix_matrix_dims( FLA_NO_TRANSPOSE, FLA_NO_TRANSPOSE, A, B, B ); //FLA_Check_error_code( e_val ); e_val = FLA_Check_object_length_equals( A, FLA_Obj_length( B ) ); FLA_Check_error_code( e_val ); } else { e_val = FLA_Check_matrix_matrix_dims( FLA_NO_TRANSPOSE, FLA_NO_TRANSPOSE, B, A, B ); FLA_Check_error_code( e_val ); } return FLA_SUCCESS; }
FLA_Error FLA_QR_UT_copy_internal_check( FLA_Obj A, FLA_Obj T, FLA_Obj U, fla_qrut_t* cntl ) { FLA_Error e_val; // Abort if the control structure is NULL. e_val = FLA_Check_null_pointer( ( void* ) cntl ); FLA_Check_error_code( e_val ); // Verify that the object element types are identical. e_val = FLA_Check_identical_object_elemtype( A, T ); FLA_Check_error_code( e_val ); e_val = FLA_Check_identical_object_elemtype( A, U ); FLA_Check_error_code( e_val ); // Verify conformality between all the objects. This check works regardless // of whether the element type is FLA_MATRIX or FLA_SCALAR because the // element length and width are used instead of scalar length and width. e_val = FLA_Check_object_width_equals( T, FLA_Obj_width( A ) ); FLA_Check_error_code( e_val ); e_val = FLA_Check_conformal_dims( FLA_NO_TRANSPOSE, A, U ); FLA_Check_error_code( e_val ); return FLA_SUCCESS; }
FLA_Error FLA_Herk_internal_check( FLA_Uplo uplo, FLA_Trans trans, FLA_Obj alpha, FLA_Obj A, FLA_Obj beta, FLA_Obj C, fla_herk_t* cntl ) { FLA_Error e_val; // Abort if the control structure is NULL. e_val = FLA_Check_null_pointer( ( void* ) cntl ); FLA_Check_error_code( e_val ); // Verify that the object element types are identical. e_val = FLA_Check_identical_object_elemtype( A, C ); FLA_Check_error_code( e_val ); // Verify conformality between all the objects. This check works regardless // of whether the element type is FLA_MATRIX or FLA_SCALAR because the // element length and width are used instead of scalar length and width. if ( trans == FLA_NO_TRANSPOSE ) { e_val = FLA_Check_matrix_matrix_dims( FLA_NO_TRANSPOSE, FLA_TRANSPOSE, A, A, C ); FLA_Check_error_code( e_val ); } else { e_val = FLA_Check_matrix_matrix_dims( FLA_TRANSPOSE, FLA_NO_TRANSPOSE, A, A, C ); FLA_Check_error_code( e_val ); } return FLA_SUCCESS; }
FLA_Error FLA_Obj_datatype_check( FLA_Obj obj ) { FLA_Error e_val; e_val = FLA_Check_null_pointer( obj.base ); FLA_Check_error_code( e_val ); return FLA_SUCCESS; }
FLA_Error FLASH_Obj_free_without_buffer_check( FLA_Obj* H ) { FLA_Error e_val; e_val = FLA_Check_null_pointer( H ); FLA_Check_error_code( e_val ); return FLA_SUCCESS; }
FLA_Error FLASH_Obj_create_flat_copy_of_hier_check( FLA_Obj H, FLA_Obj* F ) { FLA_Error e_val; e_val = FLA_Check_null_pointer( F ); FLA_Check_error_code( e_val ); return FLA_SUCCESS; }
FLA_Error FLASH_Obj_attach_buffer_hierarchy_check( FLA_Obj F, FLA_Obj* H ) { FLA_Error e_val; e_val = FLA_Check_null_pointer( H ); FLA_Check_error_code( e_val ); return FLA_SUCCESS; }
FLA_Error FLASH_Obj_create_hier_copy_of_flat_ext_check( FLA_Obj F, dim_t depth, dim_t* b_m, dim_t* b_n, FLA_Obj* H ) { FLA_Error e_val; e_val = FLA_Check_null_pointer( b_m ); FLA_Check_error_code( e_val ); e_val = FLA_Check_null_pointer( b_n ); FLA_Check_error_code( e_val ); e_val = FLA_Check_null_pointer( H ); FLA_Check_error_code( e_val ); // A value of depth < 0 should cause an error. // First depth entries in blocksize should be checked; values < 1 should cause error. return FLA_SUCCESS; }
FLA_Error FLA_Scal_internal_check( FLA_Obj alpha, FLA_Obj A, fla_scal_t* cntl ) { FLA_Error e_val; // Abort if the control structure is NULL. e_val = FLA_Check_null_pointer( ( void* ) cntl ); FLA_Check_error_code( e_val ); return FLA_SUCCESS; }
FLA_Error FLA_Trinv_internal_check( FLA_Uplo uplo, FLA_Diag diag, FLA_Obj A, fla_trinv_t* cntl ) { FLA_Error e_val; // Abort if the control structure is NULL. e_val = FLA_Check_null_pointer( ( void* ) cntl ); FLA_Check_error_code( e_val ); return FLA_SUCCESS; }
FLA_Error FLA_Apply_CAQ2_UT_internal_check( FLA_Side side, FLA_Trans trans, FLA_Direct direct, FLA_Store storev, FLA_Obj D, FLA_Obj T, FLA_Obj W, FLA_Obj C, FLA_Obj E, fla_apcaq2ut_t* cntl ) { FLA_Error e_val; // Abort if the control structure is NULL. e_val = FLA_Check_null_pointer( ( void* ) cntl ); FLA_Check_error_code( e_val ); // Verify that the object element types are identical. e_val = FLA_Check_identical_object_elemtype( D, T ); FLA_Check_error_code( e_val ); e_val = FLA_Check_identical_object_elemtype( D, W ); FLA_Check_error_code( e_val ); e_val = FLA_Check_identical_object_elemtype( D, C ); FLA_Check_error_code( e_val ); e_val = FLA_Check_identical_object_elemtype( D, E ); FLA_Check_error_code( e_val ); // Verify conformality between all the objects. if ( side == FLA_LEFT ) { if ( FLA_Obj_elemtype( D ) == FLA_MATRIX ) { e_val = FLA_Check_conformal_dims( FLA_NO_TRANSPOSE, D, T ); FLA_Check_error_code( e_val ); e_val = FLA_Check_conformal_dims( FLA_NO_TRANSPOSE, C, W ); FLA_Check_error_code( e_val ); } else // if ( FLA_Obj_elemtype( D ) == FLA_SCALAR ) { //e_val = FLA_Check_matrix_matrix_dims( FLA_NO_TRANSPOSE, FLA_TRANSPOSE, E, C, D ); //FLA_Check_error_code( e_val ); e_val = FLA_Check_object_width_equals( C, FLA_Obj_width( E ) ); FLA_Check_error_code( e_val ); e_val = FLA_Check_object_length_equals( D, FLA_Obj_length( E ) ); FLA_Check_error_code( e_val ); } //e_val = FLA_Check_matrix_matrix_dims( FLA_NO_TRANSPOSE, FLA_NO_TRANSPOSE, D, C, E ); //FLA_Check_error_code( e_val ); } else { FLA_Check_error_code( FLA_NOT_YET_IMPLEMENTED ); } return FLA_SUCCESS; }
FLA_Error FLA_Obj_flip_base( FLA_Obj *obj ) { FLA_Error e_val; dim_t temp; if ( FLA_Check_error_level() >= FLA_MIN_ERROR_CHECKING ) { e_val = FLA_Check_null_pointer( obj ); FLA_Check_error_code( e_val ); e_val = FLA_Check_null_pointer( obj->base ); FLA_Check_error_code( e_val ); } exchange( obj->base->m, obj->base->n, temp ); exchange( obj->base->cs, obj->base->rs, temp ); exchange( obj->base->m_inner, obj->base->n_inner, temp ); exchange( obj->base->m_index, obj->base->n_index, temp ); return FLA_SUCCESS; }
FLA_Error FLA_Obj_create_buffer_check( dim_t rs, dim_t cs, FLA_Obj *obj ) { FLA_Error e_val; e_val = FLA_Check_null_pointer( obj ); FLA_Check_error_code( e_val ); e_val = FLA_Check_matrix_strides( FLA_Obj_length( *obj ), FLA_Obj_width( *obj ), rs, cs ); FLA_Check_error_code( e_val ); return FLA_SUCCESS; }
FLA_Error FLA_Obj_create_without_buffer_check( FLA_Datatype datatype, dim_t m, dim_t n, FLA_Obj *obj ) { FLA_Error e_val; e_val = FLA_Check_valid_datatype( datatype ); FLA_Check_error_code( e_val ); e_val = FLA_Check_null_pointer( obj ); FLA_Check_error_code( e_val ); return FLA_SUCCESS; }
FLA_Error FLA_Repart_1xmode2_to_1xmode3_check( FLA_Obj AT, FLA_Obj *A0, FLA_Obj *A1, FLA_Obj AB, FLA_Obj *A2, dim_t mode, dim_t b, FLA_Side side ) { FLA_Error e_val; e_val = FLA_Check_valid_object_datatype( AT ); FLA_Check_error_code( e_val ); e_val = FLA_Check_valid_object_datatype( AB ); FLA_Check_error_code( e_val ); e_val = FLA_Check_null_pointer( A0 ); FLA_Check_error_code( e_val ); e_val = FLA_Check_null_pointer( A1 ); FLA_Check_error_code( e_val ); e_val = FLA_Check_null_pointer( A2 ); FLA_Check_error_code( e_val ); e_val = FLA_Check_valid_topbottom_side( side ); FLA_Check_error_code( e_val ); if ( side == FLA_TOP ) { e_val = FLA_Check_attempted_repart_1xmode2( AT, mode, b ); FLA_Check_error_code( e_val ); } else if ( side == FLA_BOTTOM ) { e_val = FLA_Check_attempted_repart_1xmode2( AB, mode, b ); FLA_Check_error_code( e_val ); } // Needed: check for adjacency, similar to those in FLA_Merge_*(). return FLA_SUCCESS; }
FLA_Error FLA_Apply_Q_UT_internal_check( FLA_Side side, FLA_Trans trans, FLA_Direct direct, FLA_Store storev, FLA_Obj A, FLA_Obj T, FLA_Obj W, FLA_Obj B, fla_apqut_t* cntl ) { FLA_Error e_val; // Abort if the control structure is NULL. e_val = FLA_Check_null_pointer( ( void* ) cntl ); FLA_Check_error_code( e_val ); // Verify that the object element types are identical. e_val = FLA_Check_identical_object_elemtype( A, T ); FLA_Check_error_code( e_val ); e_val = FLA_Check_identical_object_elemtype( A, W ); FLA_Check_error_code( e_val ); e_val = FLA_Check_identical_object_elemtype( A, B ); FLA_Check_error_code( e_val ); // Verify conformality between all the objects. This check works regardless // of whether the element type is FLA_MATRIX or FLA_SCALAR because the // element length and width are used instead of scalar length and width. if ( side == FLA_LEFT ) { if ( storev == FLA_COLUMNWISE ) { e_val = FLA_Check_object_length_equals( A, FLA_Obj_length( B ) ); FLA_Check_error_code( e_val ); } else // if ( storev == FLA_ROWWISE ) { e_val = FLA_Check_object_width_equals( A, FLA_Obj_length( B ) ); FLA_Check_error_code( e_val ); } } else // if ( side == FLA_RIGHT ) { if ( storev == FLA_COLUMNWISE ) { e_val = FLA_Check_object_length_equals( A, FLA_Obj_width( B ) ); FLA_Check_error_code( e_val ); } else // if ( storev == FLA_ROWWISE ) { e_val = FLA_Check_object_width_equals( A, FLA_Obj_width( B ) ); FLA_Check_error_code( e_val ); } } return FLA_SUCCESS; }
FLA_Error FLA_Obj_create_conf_to_check( FLA_Trans trans, FLA_Obj obj_old, FLA_Obj *obj ) { FLA_Error e_val; e_val = FLA_Check_valid_trans( trans ); FLA_Check_error_code( e_val ); e_val = FLA_Check_valid_object_datatype( obj_old ); FLA_Check_error_code( e_val ); e_val = FLA_Check_null_pointer( obj ); FLA_Check_error_code( e_val ); return FLA_SUCCESS; }
FLA_Error FLA_Obj_datatype_proj_to_real_check( FLA_Obj obj ) { FLA_Error e_val; e_val = FLA_Check_null_pointer( obj.base ); FLA_Check_error_code( e_val ); e_val = FLA_Check_floating_object( obj ); FLA_Check_error_code( e_val ); e_val = FLA_Check_nonconstant_object( obj ); FLA_Check_error_code( e_val ); return FLA_SUCCESS; }
FLA_Error FLA_Obj_fshow_check( FILE* file, char* s1, FLA_Obj obj, char* format, char* s2 ) { FLA_Error e_val; e_val = FLA_Check_null_pointer( file ); FLA_Check_error_code( e_val ); e_val = FLA_Check_null_pointer( s1 ); FLA_Check_error_code( e_val ); e_val = FLA_Check_object_scalar_elemtype( obj ); FLA_Check_error_code( e_val ); e_val = FLA_Check_valid_object_datatype( obj ); FLA_Check_error_code( e_val ); e_val = FLA_Check_null_pointer( format ); FLA_Check_error_code( e_val ); e_val = FLA_Check_null_pointer( s2 ); FLA_Check_error_code( e_val ); return FLA_SUCCESS; }
FLA_Error FLA_Obj_extract_real_scalar_check( FLA_Obj alpha, double* alpha_value ) { FLA_Error e_val; e_val = FLA_Check_real_object( alpha ); FLA_Check_error_code( e_val ); e_val = FLA_Check_if_scalar( alpha ); FLA_Check_error_code( e_val ); e_val = FLA_Check_null_pointer( alpha_value ); FLA_Check_error_code( e_val ); return FLA_SUCCESS; }
FLA_Error FLA_Axpy_buffer_to_object_check( FLA_Trans trans, FLA_Obj alpha, dim_t m, dim_t n, void* A_buffer, dim_t rs, dim_t cs, dim_t i, dim_t j, FLA_Obj B ) { FLA_Error e_val; e_val = FLA_Check_valid_real_trans( trans ); FLA_Check_error_code( e_val ); e_val = FLA_Check_floating_object( B ); FLA_Check_error_code( e_val ); e_val = FLA_Check_nonconstant_object( B ); FLA_Check_error_code( e_val ); e_val = FLA_Check_consistent_object_datatype( B, alpha ); FLA_Check_error_code( e_val ); e_val = FLA_Check_if_scalar( alpha ); FLA_Check_error_code( e_val ); e_val = FLA_Check_null_pointer( A_buffer ); FLA_Check_error_code( e_val ); e_val = FLA_Check_object_dims( trans, m, n, B ); FLA_Check_error_code( e_val ); e_val = FLA_Check_matrix_strides( m, n, rs, cs ); FLA_Check_error_code( e_val ); if ( trans == FLA_NO_TRANSPOSE ) { e_val = FLA_Check_submatrix_dims_and_offset( m, n, i, j, B ); FLA_Check_error_code( e_val ); } else { e_val = FLA_Check_submatrix_dims_and_offset( n, m, i, j, B ); FLA_Check_error_code( e_val ); } e_val = FLA_Check_nonconstant_object( B ); FLA_Check_error_code( e_val ); return FLA_SUCCESS; }
FLA_Error FLA_Copyt_internal_check( FLA_Trans trans, FLA_Obj A, FLA_Obj B, fla_copyt_t* cntl ) { FLA_Error e_val; // Abort if the control structure is NULL. e_val = FLA_Check_null_pointer( ( void* ) cntl ); FLA_Check_error_code( e_val ); // Verify that the object element types are identical. e_val = FLA_Check_identical_object_elemtype( A, B ); FLA_Check_error_code( e_val ); // Verify conformality between all the objects. This check works regardless // of whether the element type is FLA_MATRIX or FLA_SCALAR because the // element length and width are used instead of scalar length and width. e_val = FLA_Check_conformal_dims( trans, A, B ); FLA_Check_error_code( e_val ); return FLA_SUCCESS; }
FLA_Error FLA_Copy_object_to_buffer_check( FLA_Trans trans, dim_t i, dim_t j, FLA_Obj A, dim_t m, dim_t n, void* B_buffer, dim_t rs, dim_t cs ) { FLA_Error e_val; e_val = FLA_Check_valid_real_trans( trans ); FLA_Check_error_code( e_val ); e_val = FLA_Check_floating_object( A ); FLA_Check_error_code( e_val ); e_val = FLA_Check_nonconstant_object( A ); FLA_Check_error_code( e_val ); e_val = FLA_Check_null_pointer( B_buffer ); FLA_Check_error_code( e_val ); e_val = FLA_Check_object_dims( trans, m, n, A ); FLA_Check_error_code( e_val ); e_val = FLA_Check_matrix_strides( m, n, rs, cs ); FLA_Check_error_code( e_val ); if ( trans == FLA_NO_TRANSPOSE ) { e_val = FLA_Check_submatrix_dims_and_offset( m, n, i, j, A ); FLA_Check_error_code( e_val ); } else { e_val = FLA_Check_submatrix_dims_and_offset( n, m, i, j, A ); FLA_Check_error_code( e_val ); } e_val = FLA_Check_nonconstant_object( A ); FLA_Check_error_code( e_val ); return FLA_SUCCESS; }
FLA_Error FLA_Repart_2x2_to_3x3_check( FLA_Obj ATL, FLA_Obj ATR, FLA_Obj *A00, FLA_Obj *A01, FLA_Obj *A02, FLA_Obj *A10, FLA_Obj *A11, FLA_Obj *A12, FLA_Obj ABL, FLA_Obj ABR, FLA_Obj *A20, FLA_Obj *A21, FLA_Obj *A22, dim_t mb, dim_t nb, FLA_Quadrant quadrant ) { FLA_Error e_val; e_val = FLA_Check_valid_object_datatype( ATL ); FLA_Check_error_code( e_val ); e_val = FLA_Check_valid_object_datatype( ABL ); FLA_Check_error_code( e_val ); e_val = FLA_Check_valid_object_datatype( ATR ); FLA_Check_error_code( e_val ); e_val = FLA_Check_valid_object_datatype( ABR ); FLA_Check_error_code( e_val ); e_val = FLA_Check_null_pointer( A00 ); FLA_Check_error_code( e_val ); e_val = FLA_Check_null_pointer( A10 ); FLA_Check_error_code( e_val ); e_val = FLA_Check_null_pointer( A20 ); FLA_Check_error_code( e_val ); e_val = FLA_Check_null_pointer( A01 ); FLA_Check_error_code( e_val ); e_val = FLA_Check_null_pointer( A11 ); FLA_Check_error_code( e_val ); e_val = FLA_Check_null_pointer( A21 ); FLA_Check_error_code( e_val ); e_val = FLA_Check_null_pointer( A02 ); FLA_Check_error_code( e_val ); e_val = FLA_Check_null_pointer( A12 ); FLA_Check_error_code( e_val ); e_val = FLA_Check_null_pointer( A22 ); FLA_Check_error_code( e_val ); e_val = FLA_Check_valid_quadrant( quadrant ); FLA_Check_error_code( e_val ); if ( quadrant == FLA_TL ) { e_val = FLA_Check_attempted_repart_2x2( ATL, mb, nb ); FLA_Check_error_code( e_val ); } else if ( quadrant == FLA_TR ) { e_val = FLA_Check_attempted_repart_2x2( ATR, mb, nb ); FLA_Check_error_code( e_val ); } else if ( quadrant == FLA_BL ) { e_val = FLA_Check_attempted_repart_2x2( ABL, mb, nb ); FLA_Check_error_code( e_val ); } else if ( quadrant == FLA_BR ) { e_val = FLA_Check_attempted_repart_2x2( ABR, mb, nb ); FLA_Check_error_code( e_val ); } // Needed: check for adjacency, similar to those in FLA_Merge_*(). return FLA_SUCCESS; }