예제 #1
0
void bli_trsv_basic_check( obj_t*  alpha,
                           obj_t*  a,
                           obj_t*  x )
{
	err_t e_val;

	// Check object datatypes.

	e_val = bli_check_noninteger_object( alpha );
	bli_check_error_code( e_val );

	e_val = bli_check_floating_object( a );
	bli_check_error_code( e_val );

	e_val = bli_check_floating_object( x );
	bli_check_error_code( e_val );

	// Check object dimensions.

	e_val = bli_check_scalar_object( alpha );
	bli_check_error_code( e_val );

	e_val = bli_check_matrix_object( a );
	bli_check_error_code( e_val );

	e_val = bli_check_square_object( a );
	bli_check_error_code( e_val );

	e_val = bli_check_vector_object( x );
	bli_check_error_code( e_val );

	e_val = bli_check_object_length_equals( a, bli_obj_vector_dim( *x ) );
	bli_check_error_code( e_val );
}
예제 #2
0
void bli_unpackm_check( obj_t*     p,
                        obj_t*     a,
                        cntx_t*    cntx,
                        unpackm_t* cntl )
{
	err_t e_val;

	// Check object datatypes.

	e_val = bli_check_floating_object( p );
	bli_check_error_code( e_val );

	e_val = bli_check_floating_object( a );
	bli_check_error_code( e_val );

	// Check object dimensions.

	e_val = bli_check_conformal_dims( p, a );
	bli_check_error_code( e_val );

	// Check pack status.

	e_val = bli_check_packm_schema_on_unpack( p );
	bli_check_error_code( e_val );

	// Check control tree pointer

	// NOTE: We can't check the control tree until we stop interpreting a
	// NULL value (in bli_unpackm_int()) as a request to skip the operation.
	//e_val = bli_check_valid_cntl( ( void* )cntl );
	//bli_check_error_code( e_val );
}
예제 #3
0
void bli_unpackv_check
     (
       obj_t*  p,
       obj_t*  a,
       cntx_t* cntx
     )
{
	err_t e_val;

	// Check object datatypes.

	e_val = bli_check_floating_object( p );
	bli_check_error_code( e_val );

	e_val = bli_check_floating_object( a );
	bli_check_error_code( e_val );

	// Check object dimensions.

	e_val = bli_check_equal_vector_lengths( p, a );
	bli_check_error_code( e_val );

	// Check pack status.

	e_val = bli_check_packv_schema_on_unpack( p );
	bli_check_error_code( e_val );

}
예제 #4
0
void bli_packm_int_check( obj_t*   a,
                          obj_t*   p,
                          packm_t* cntl )
{
	err_t e_val;

	// Check object datatypes.

	e_val = bli_check_floating_object( a );
	bli_check_error_code( e_val );

	e_val = bli_check_floating_object( p );
	bli_check_error_code( e_val );

	// Check object dimensions.

	e_val = bli_check_conformal_dims( a, p );
	bli_check_error_code( e_val );

	// Check control tree pointer.

	// NOTE: We can't check the control tree because we interpret a NULL
	// value (in bli_packm_int()) as a request to skip the operation.
	//e_val = bli_check_valid_cntl( ( void* )cntl );
	//bli_check_error_code( e_val );
}
예제 #5
0
void bli_addv_check( obj_t*  x,
                     obj_t*  y )
{
	err_t e_val;

	// Check object datatypes.

	e_val = bli_check_floating_object( x );
	bli_check_error_code( e_val );

	e_val = bli_check_floating_object( y );
	bli_check_error_code( e_val );

	// Check object dimensions.

	e_val = bli_check_vector_object( x );
	bli_check_error_code( e_val );

	e_val = bli_check_vector_object( y );
	bli_check_error_code( e_val );

	e_val = bli_check_equal_vector_lengths( x, y );
	bli_check_error_code( e_val );

	// Check object buffers (for non-NULLness).

	e_val = bli_check_object_buffer( x );
	bli_check_error_code( e_val );

	e_val = bli_check_object_buffer( y );
	bli_check_error_code( e_val );
}
예제 #6
0
void bli_addd_check( obj_t*  x,
                     obj_t*  y )
{
	err_t e_val;

	// Check object datatypes.

	e_val = bli_check_floating_object( x );
	bli_check_error_code( e_val );

	e_val = bli_check_floating_object( y );
	bli_check_error_code( e_val );

	// Check object dimensions.

	e_val = bli_check_matrix_object( x );
	bli_check_error_code( e_val );

	e_val = bli_check_matrix_object( y );
	bli_check_error_code( e_val );

	e_val = bli_check_conformal_dims( x, y );
	bli_check_error_code( e_val );

	// Check object buffers (for non-NULLness).

	e_val = bli_check_object_buffer( x );
	bli_check_error_code( e_val );

	e_val = bli_check_object_buffer( y );
	bli_check_error_code( e_val );
}
예제 #7
0
void bli_gemm_basic_check( obj_t*  alpha,
                           obj_t*  a,
                           obj_t*  b,
                           obj_t*  beta,
                           obj_t*  c )
{
	err_t e_val;

	// Check object datatypes.

	e_val = bli_check_noninteger_object( alpha );
	bli_check_error_code( e_val );

	e_val = bli_check_noninteger_object( beta );
	bli_check_error_code( e_val );

	e_val = bli_check_floating_object( a );
	bli_check_error_code( e_val );

	e_val = bli_check_floating_object( b );
	bli_check_error_code( e_val );

	e_val = bli_check_floating_object( c );
	bli_check_error_code( e_val );

	// Check object dimensions.

	e_val = bli_check_scalar_object( alpha );
	bli_check_error_code( e_val );

	e_val = bli_check_scalar_object( beta );
	bli_check_error_code( e_val );

	e_val = bli_check_matrix_object( a );
	bli_check_error_code( e_val );

	e_val = bli_check_matrix_object( b );
	bli_check_error_code( e_val );

	e_val = bli_check_matrix_object( c );
	bli_check_error_code( e_val );

	e_val = bli_check_level3_dims( a, b, c );
	bli_check_error_code( e_val );

	// Check matrix structure.

	// We don't enforce general structure in matrix A so we can use gemm to
	// implement hemm/symm. Instead, we only check this from the front-end.

	//e_val = bli_check_general_object( b );
	//bli_check_error_code( e_val );

	e_val = bli_check_general_object( c );
	bli_check_error_code( e_val );
}
예제 #8
0
void bli_axpyf_check( obj_t*  alpha,
                      obj_t*  a,
                      obj_t*  x,
                      obj_t*  y )
{
	err_t e_val;

	// Check object datatypes.

	e_val = bli_check_noninteger_object( alpha );
	bli_check_error_code( e_val );

	e_val = bli_check_floating_object( a );
	bli_check_error_code( e_val );

	e_val = bli_check_floating_object( x );
	bli_check_error_code( e_val );

	e_val = bli_check_floating_object( y );
	bli_check_error_code( e_val );

	// Check object dimensions.

	e_val = bli_check_scalar_object( alpha );
	bli_check_error_code( e_val );

	e_val = bli_check_matrix_object( a );
	bli_check_error_code( e_val );

	e_val = bli_check_vector_object( x );
	bli_check_error_code( e_val );

	e_val = bli_check_vector_object( y );
	bli_check_error_code( e_val );

	e_val = bli_check_vector_dim_equals( x, bli_obj_width_after_trans( *a ) );
	bli_check_error_code( e_val );

	e_val = bli_check_vector_dim_equals( y, bli_obj_length_after_trans( *a ) );
	bli_check_error_code( e_val );

	// Check object buffers (for non-NULLness).

	e_val = bli_check_object_buffer( alpha );
	bli_check_error_code( e_val );

	e_val = bli_check_object_buffer( a );
	bli_check_error_code( e_val );

	e_val = bli_check_object_buffer( x );
	bli_check_error_code( e_val );

	e_val = bli_check_object_buffer( y );
	bli_check_error_code( e_val );
}
예제 #9
0
void bli_herk_basic_check( obj_t*  alpha,
                           obj_t*  a,
                           obj_t*  ah,
                           obj_t*  beta,
                           obj_t*  c )
{
	err_t e_val;

	// Check object datatypes.

	e_val = bli_check_noninteger_object( alpha );
	bli_check_error_code( e_val );

	e_val = bli_check_noninteger_object( beta );
	bli_check_error_code( e_val );

	e_val = bli_check_floating_object( a );
	bli_check_error_code( e_val );

	e_val = bli_check_floating_object( ah );
	bli_check_error_code( e_val );

	e_val = bli_check_floating_object( c );
	bli_check_error_code( e_val );

	// Check object dimensions.

	e_val = bli_check_scalar_object( alpha );
	bli_check_error_code( e_val );

	e_val = bli_check_scalar_object( beta );
	bli_check_error_code( e_val );

	e_val = bli_check_matrix_object( a );
	bli_check_error_code( e_val );

	e_val = bli_check_matrix_object( ah );
	bli_check_error_code( e_val );

	e_val = bli_check_matrix_object( c );
	bli_check_error_code( e_val );

	e_val = bli_check_level3_dims( a, ah, c );
	bli_check_error_code( e_val );

	// Check matrix structure.

	e_val = bli_check_general_object( a );
	bli_check_error_code( e_val );

	e_val = bli_check_general_object( ah );
	bli_check_error_code( e_val );
}
예제 #10
0
void bli_trmm3_basic_check( side_t  side,
                            obj_t*  alpha,
                            obj_t*  a,
                            obj_t*  b,
                            obj_t*  beta,
                            obj_t*  c )
{
	err_t e_val;

	// Check object datatypes.

	e_val = bli_check_noninteger_object( alpha );
	bli_check_error_code( e_val );

	e_val = bli_check_floating_object( a );
	bli_check_error_code( e_val );

	e_val = bli_check_floating_object( b );
	bli_check_error_code( e_val );

	e_val = bli_check_floating_object( c );
	bli_check_error_code( e_val );

	// Check object dimensions.

	e_val = bli_check_scalar_object( alpha );
	bli_check_error_code( e_val );

	e_val = bli_check_scalar_object( beta );
	bli_check_error_code( e_val );

	e_val = bli_check_matrix_object( a );
	bli_check_error_code( e_val );

	e_val = bli_check_matrix_object( b );
	bli_check_error_code( e_val );

	e_val = bli_check_matrix_object( c );
	bli_check_error_code( e_val );

	if ( bli_is_left( side ) )
	{
		e_val = bli_check_level3_dims( a, b, c );
		bli_check_error_code( e_val );
	}
	else // if ( bli_is_right( side ) )
	{
		e_val = bli_check_level3_dims( b, a, c );
		bli_check_error_code( e_val );
	}
}
예제 #11
0
void bli_axpy2v_check( obj_t*  alpha1,
                       obj_t*  alpha2,
                       obj_t*  x,
                       obj_t*  y,
                       obj_t*  z )
{
	err_t e_val;

	// Check object datatypes.

	e_val = bli_check_noninteger_object( alpha1 );
	bli_check_error_code( e_val );

	e_val = bli_check_noninteger_object( alpha2 );
	bli_check_error_code( e_val );

	e_val = bli_check_floating_object( x );
	bli_check_error_code( e_val );

	e_val = bli_check_floating_object( y );
	bli_check_error_code( e_val );

	e_val = bli_check_floating_object( z );
	bli_check_error_code( e_val );

	// Check object dimensions.

	e_val = bli_check_scalar_object( alpha1 );
	bli_check_error_code( e_val );

	e_val = bli_check_scalar_object( alpha2 );
	bli_check_error_code( e_val );

	e_val = bli_check_vector_object( x );
	bli_check_error_code( e_val );

	e_val = bli_check_vector_object( y );
	bli_check_error_code( e_val );

	e_val = bli_check_vector_object( z );
	bli_check_error_code( e_val );

	e_val = bli_check_equal_vector_lengths( x, y );
	bli_check_error_code( e_val );

	e_val = bli_check_equal_vector_lengths( x, z );
	bli_check_error_code( e_val );
}
예제 #12
0
void bli_scalm_basic_check( obj_t*   beta,
                            obj_t*   x )
{
	err_t e_val;

	// Check object datatypes.

	e_val = bli_check_noninteger_object( beta );
	bli_check_error_code( e_val );

	e_val = bli_check_floating_object( x );
	bli_check_error_code( e_val );

	// Check object dimensions.

	e_val = bli_check_scalar_object( beta );
	bli_check_error_code( e_val );

	e_val = bli_check_matrix_object( x );
	bli_check_error_code( e_val );

	// Check object properties.

	e_val = bli_check_nonunit_diag( x );
	bli_check_error_code( e_val );
}
예제 #13
0
void bli_utilv_xa_check
     (
       obj_t*  x,
       obj_t*  asum
     )
{
	err_t e_val;

	// Check object datatypes.

	e_val = bli_check_floating_object( x );
	bli_check_error_code( e_val );

	e_val = bli_check_nonconstant_object( asum );
	bli_check_error_code( e_val );

	// Check object dimensions.

	e_val = bli_check_vector_object( x );
	bli_check_error_code( e_val );

	e_val = bli_check_scalar_object( asum );
	bli_check_error_code( e_val );

	// Check object buffers (for non-NULLness).

	e_val = bli_check_object_buffer( x );
	bli_check_error_code( e_val );

	e_val = bli_check_object_buffer( asum );
	bli_check_error_code( e_val );
}
예제 #14
0
void bli_utilm_norm_check
     (
       obj_t*  x,
       obj_t*  norm
     )
{
	err_t e_val;

	// Check object datatypes.

	e_val = bli_check_floating_object( x );
	bli_check_error_code( e_val );

	e_val = bli_check_noninteger_object( norm );
	bli_check_error_code( e_val );

	e_val = bli_check_nonconstant_object( norm );
	bli_check_error_code( e_val );

	// Check object dimensions.

	e_val = bli_check_matrix_object( x );
	bli_check_error_code( e_val );

	e_val = bli_check_scalar_object( norm );
	bli_check_error_code( e_val );

	// Check object buffers (for non-NULLness).

	e_val = bli_check_object_buffer( x );
	bli_check_error_code( e_val );

	e_val = bli_check_object_buffer( norm );
	bli_check_error_code( e_val );
}
예제 #15
0
void bli_mksymm_check( obj_t*  a )
{
	err_t e_val;

	// Check object datatypes.

	e_val = bli_check_floating_object( a );
	bli_check_error_code( e_val );

	e_val = bli_check_nonconstant_object( a );
	bli_check_error_code( e_val );

	// Check object dimensions.

	e_val = bli_check_matrix_object( a );
	bli_check_error_code( e_val );

	e_val = bli_check_square_object( a );
	bli_check_error_code( e_val );

	e_val = bli_check_object_diag_offset_equals( a, 0 );
	bli_check_error_code( e_val );

	// Check matrix structure.

	//e_val = bli_check_symmetric_object( a );
	//bli_check_error_code( e_val );

	// Check matrix storage.

	e_val = bli_check_upper_or_lower_object( a );
	bli_check_error_code( e_val );
}
예제 #16
0
void bli_dotv_check( obj_t*  x,
                     obj_t*  y,
                     obj_t*  rho )
{
	err_t e_val;

	// Check object datatypes.

	e_val = bli_check_floating_object( x );
	bli_check_error_code( e_val );

	e_val = bli_check_floating_object( y );
	bli_check_error_code( e_val );

	e_val = bli_check_noninteger_object( rho );
	bli_check_error_code( e_val );

	e_val = bli_check_nonconstant_object( rho );
	bli_check_error_code( e_val );

	// Check object dimensions.

	e_val = bli_check_vector_object( x );
	bli_check_error_code( e_val );

	e_val = bli_check_vector_object( y );
	bli_check_error_code( e_val );

	e_val = bli_check_scalar_object( rho );
	bli_check_error_code( e_val );

	e_val = bli_check_equal_vector_lengths( x, y );
	bli_check_error_code( e_val );

	// Check object buffers (for non-NULLness).

	e_val = bli_check_object_buffer( x );
	bli_check_error_code( e_val );

	e_val = bli_check_object_buffer( y );
	bli_check_error_code( e_val );

	e_val = bli_check_object_buffer( rho );
	bli_check_error_code( e_val );
}
예제 #17
0
void bli_gemv_basic_check( obj_t*  alpha,
                           obj_t*  a,
                           obj_t*  x,
                           obj_t*  beta,
                           obj_t*  y )
{
	err_t e_val;

	// Check object datatypes.

	e_val = bli_check_noninteger_object( alpha );
	bli_check_error_code( e_val );

	e_val = bli_check_noninteger_object( beta );
	bli_check_error_code( e_val );

	e_val = bli_check_floating_object( a );
	bli_check_error_code( e_val );

	e_val = bli_check_floating_object( x );
	bli_check_error_code( e_val );

	e_val = bli_check_floating_object( y );
	bli_check_error_code( e_val );

	// Check object dimensions.

	e_val = bli_check_scalar_object( alpha );
	bli_check_error_code( e_val );

	e_val = bli_check_scalar_object( beta );
	bli_check_error_code( e_val );

	e_val = bli_check_vector_object( x );
	bli_check_error_code( e_val );

	e_val = bli_check_vector_object( y );
	bli_check_error_code( e_val );

	e_val = bli_check_vector_dim_equals( x, bli_obj_width_after_trans( *a ) );
	bli_check_error_code( e_val );

	e_val = bli_check_vector_dim_equals( y, bli_obj_length_after_trans( *a ) );
	bli_check_error_code( e_val );
}
예제 #18
0
void bli_her2_basic_check( conj_t   conjh,
                           obj_t*   alpha,
                           obj_t*   x,
                           obj_t*   y,
                           obj_t*   c )
{
	err_t e_val;

	// Check object datatypes.

	e_val = bli_check_noninteger_object( alpha );
	bli_check_error_code( e_val );

	e_val = bli_check_floating_object( x );
	bli_check_error_code( e_val );

	e_val = bli_check_floating_object( y );
	bli_check_error_code( e_val );

	e_val = bli_check_floating_object( c );
	bli_check_error_code( e_val );

	// Check object dimensions.

	e_val = bli_check_scalar_object( alpha );
	bli_check_error_code( e_val );

	e_val = bli_check_vector_object( x );
	bli_check_error_code( e_val );

	e_val = bli_check_vector_object( y );
	bli_check_error_code( e_val );

	e_val = bli_check_matrix_object( c );
	bli_check_error_code( e_val );

	e_val = bli_check_square_object( c );
	bli_check_error_code( e_val );

	e_val = bli_check_object_length_equals( c, bli_obj_vector_dim( *x ) );
	bli_check_error_code( e_val );

	e_val = bli_check_object_length_equals( c, bli_obj_vector_dim( *y ) );
	bli_check_error_code( e_val );
}
예제 #19
0
void bli_castm_check
     (
       obj_t* a,
       obj_t* b
     )
{
	err_t e_val;

	// Check object datatypes.

	e_val = bli_check_floating_object( a );
	bli_check_error_code( e_val );

	e_val = bli_check_floating_object( b );
	bli_check_error_code( e_val );

	// Check structure.
	// NOTE: We enforce general structure for now in order to simplify the
	// implementation.

	bli_check_general_object( a );
	bli_check_error_code( e_val );

	bli_check_general_object( b );
	bli_check_error_code( e_val );

	// Check object dimensions.

	e_val = bli_check_matrix_object( a );
	bli_check_error_code( e_val );

	e_val = bli_check_matrix_object( b );
	bli_check_error_code( e_val );

	e_val = bli_check_conformal_dims( a, b );
	bli_check_error_code( e_val );

	// Check object buffers (for non-NULLness).

	e_val = bli_check_object_buffer( a );
	bli_check_error_code( e_val );

	e_val = bli_check_object_buffer( b );
	bli_check_error_code( e_val );
}
예제 #20
0
void bli_subm_check( obj_t*  x,
                     obj_t*  y )
{
	err_t e_val;

	// Check object datatypes.

	e_val = bli_check_floating_object( x );
	bli_check_error_code( e_val );

	e_val = bli_check_floating_object( y );
	bli_check_error_code( e_val );

	// Check object dimensions.

	e_val = bli_check_matrix_object( x );
	bli_check_error_code( e_val );

	e_val = bli_check_matrix_object( y );
	bli_check_error_code( e_val );

	e_val = bli_check_conformal_dims( x, y );
	bli_check_error_code( e_val );
}
예제 #21
0
void bli_subv_check( obj_t*  x,
                     obj_t*  y )
{
	err_t e_val;

	// Check object datatypes.

	e_val = bli_check_floating_object( x );
	bli_check_error_code( e_val );

	e_val = bli_check_floating_object( y );
	bli_check_error_code( e_val );

	// Check object dimensions.

	e_val = bli_check_vector_object( x );
	bli_check_error_code( e_val );

	e_val = bli_check_vector_object( y );
	bli_check_error_code( e_val );

	e_val = bli_check_equal_vector_lengths( x, y );
	bli_check_error_code( e_val );
}
예제 #22
0
void bli_absumm_check( obj_t*  x,
                       obj_t*  absum )
{
	err_t e_val;

	// Check object datatypes.

	e_val = bli_check_floating_object( x );
	bli_check_error_code( e_val );

	e_val = bli_check_nonconstant_object( absum );
	bli_check_error_code( e_val );

	// Check object dimensions.

	e_val = bli_check_matrix_object( x );
	bli_check_error_code( e_val );

	e_val = bli_check_scalar_object( absum );
	bli_check_error_code( e_val );
}
예제 #23
0
void bli_scalv_basic_check( obj_t*   beta,
                            obj_t*   x )
{
	err_t e_val;

	// Check object datatypes.

	e_val = bli_check_noninteger_object( beta );
	bli_check_error_code( e_val );

	e_val = bli_check_floating_object( x );
	bli_check_error_code( e_val );

	// Check object dimensions.

	e_val = bli_check_scalar_object( beta );
	bli_check_error_code( e_val );

	e_val = bli_check_vector_object( x );
	bli_check_error_code( e_val );
}
예제 #24
0
void bli_packv_check( obj_t*   c,
                      obj_t*   p,
                      packv_t* cntl )
{
	err_t e_val;

	// Check object datatypes.

	e_val = bli_check_floating_object( c );
	bli_check_error_code( e_val );

	// Check object dimensions.

	// We don't check for conformal dimensions between c and p because
	// p has not yet been initialized.

	// Check control tree pointer

	// NOTE: We can't check the control tree until we stop interpreting a
	// NULL value (in bli_packv_int()) as a request to skip the operation.
	//e_val = bli_check_valid_cntl( ( void* )cntl );
	//bli_check_error_code( e_val );
}
예제 #25
0
void bli_setsc_check
     (
       double  zeta_r,
       double  zeta_i,
       obj_t*  chi 
     )
{
	err_t e_val;

	// Check object datatypes.

	e_val = bli_check_floating_object( chi );
	bli_check_error_code( e_val );

	// Check object dimensions.

	e_val = bli_check_scalar_object( chi );
	bli_check_error_code( e_val );

	// Check object buffers (for non-NULLness).

	e_val = bli_check_object_buffer( chi );
	bli_check_error_code( e_val );
}
예제 #26
0
void bli_utilm_mkhst_check
     (
       obj_t*  a
     )
{
	err_t e_val;

	// Check object datatypes.

	e_val = bli_check_floating_object( a );
	bli_check_error_code( e_val );

	e_val = bli_check_nonconstant_object( a );
	bli_check_error_code( e_val );

	// Check object dimensions.

	e_val = bli_check_matrix_object( a );
	bli_check_error_code( e_val );

	e_val = bli_check_square_object( a );
	bli_check_error_code( e_val );

	e_val = bli_check_object_diag_offset_equals( a, 0 );
	bli_check_error_code( e_val );

	// Check matrix storage.

	e_val = bli_check_upper_or_lower_object( a );
	bli_check_error_code( e_val );

	// Check object buffers (for non-NULLness).

	e_val = bli_check_object_buffer( a );
	bli_check_error_code( e_val );
}
예제 #27
0
void bli_abmaxv_check( obj_t*  x,
                       obj_t*  abmax_i )
{
	err_t e_val;

	// Check object datatypes.

	e_val = bli_check_floating_object( x );
	bli_check_error_code( e_val );

	e_val = bli_check_integer_object( abmax_i );
	bli_check_error_code( e_val );

	e_val = bli_check_nonconstant_object( abmax_i );
	bli_check_error_code( e_val );

	// Check object dimensions.

	e_val = bli_check_vector_object( x );
	bli_check_error_code( e_val );

	e_val = bli_check_scalar_object( abmax_i );
	bli_check_error_code( e_val );
}
예제 #28
0
void bli_dotaxpyv_check( obj_t*  alpha,
                         obj_t*  xt,
                         obj_t*  x,
                         obj_t*  y,
                         obj_t*  rho,
                         obj_t*  z )
{
	err_t e_val;

	// Check object datatypes.

	e_val = bli_check_noninteger_object( alpha );
	bli_check_error_code( e_val );

	e_val = bli_check_floating_object( xt );
	bli_check_error_code( e_val );

	e_val = bli_check_floating_object( x );
	bli_check_error_code( e_val );

	e_val = bli_check_floating_object( y );
	bli_check_error_code( e_val );

	e_val = bli_check_noninteger_object( rho );
	bli_check_error_code( e_val );

	e_val = bli_check_nonconstant_object( rho );
	bli_check_error_code( e_val );

	e_val = bli_check_floating_object( z );
	bli_check_error_code( e_val );

	// Check object dimensions.

	e_val = bli_check_scalar_object( alpha );
	bli_check_error_code( e_val );

	e_val = bli_check_vector_object( xt );
	bli_check_error_code( e_val );

	e_val = bli_check_vector_object( x );
	bli_check_error_code( e_val );

	e_val = bli_check_vector_object( y );
	bli_check_error_code( e_val );

	e_val = bli_check_scalar_object( rho );
	bli_check_error_code( e_val );

	e_val = bli_check_vector_object( z );
	bli_check_error_code( e_val );

	e_val = bli_check_equal_vector_lengths( x, xt );
	bli_check_error_code( e_val );

	e_val = bli_check_equal_vector_lengths( x, y );
	bli_check_error_code( e_val );

	e_val = bli_check_equal_vector_lengths( x, z );
	bli_check_error_code( e_val );

	// Check object aliases.

	e_val = bli_check_object_alias_of( xt, x );
	bli_check_error_code( e_val );
}
예제 #29
0
void bli_dotxaxpyf_check( obj_t*  alpha,
                          obj_t*  at,
                          obj_t*  a,
                          obj_t*  w,
                          obj_t*  x,
                          obj_t*  beta,
                          obj_t*  y,
                          obj_t*  z )
{
	err_t e_val;

	// Check object datatypes.

	e_val = bli_check_noninteger_object( alpha );
	bli_check_error_code( e_val );

	e_val = bli_check_floating_object( at );
	bli_check_error_code( e_val );

	e_val = bli_check_floating_object( a );
	bli_check_error_code( e_val );

	e_val = bli_check_floating_object( w );
	bli_check_error_code( e_val );

	e_val = bli_check_floating_object( x );
	bli_check_error_code( e_val );

	e_val = bli_check_noninteger_object( beta );
	bli_check_error_code( e_val );

	e_val = bli_check_floating_object( y );
	bli_check_error_code( e_val );

	e_val = bli_check_floating_object( z );
	bli_check_error_code( e_val );

	// Check object dimensions.

	e_val = bli_check_scalar_object( alpha );
	bli_check_error_code( e_val );

	e_val = bli_check_matrix_object( at );
	bli_check_error_code( e_val );

	e_val = bli_check_matrix_object( a );
	bli_check_error_code( e_val );

	e_val = bli_check_vector_object( w );
	bli_check_error_code( e_val );

	e_val = bli_check_vector_object( x );
	bli_check_error_code( e_val );

	e_val = bli_check_scalar_object( beta );
	bli_check_error_code( e_val );

	e_val = bli_check_vector_object( y );
	bli_check_error_code( e_val );

	e_val = bli_check_vector_object( z );
	bli_check_error_code( e_val );

	e_val = bli_check_equal_vector_lengths( w, z );
	bli_check_error_code( e_val );

	e_val = bli_check_equal_vector_lengths( x, y );
	bli_check_error_code( e_val );

	e_val = bli_check_conformal_dims( at, a );
	bli_check_error_code( e_val );

	e_val = bli_check_object_length_equals( at, bli_obj_vector_dim( *w ) );
	bli_check_error_code( e_val );

	e_val = bli_check_object_width_equals( at, bli_obj_vector_dim( *y ) );
	bli_check_error_code( e_val );

	e_val = bli_check_object_length_equals( a, bli_obj_vector_dim( *z ) );
	bli_check_error_code( e_val );

	e_val = bli_check_object_width_equals( a, bli_obj_vector_dim( *x ) );
	bli_check_error_code( e_val );

	// Check object aliases.

	e_val = bli_check_object_alias_of( at, a );
	bli_check_error_code( e_val );

	// Check object buffers (for non-NULLness).

	e_val = bli_check_object_buffer( alpha );
	bli_check_error_code( e_val );

	e_val = bli_check_object_buffer( at );
	bli_check_error_code( e_val );

	e_val = bli_check_object_buffer( a );
	bli_check_error_code( e_val );

	e_val = bli_check_object_buffer( w );
	bli_check_error_code( e_val );

	e_val = bli_check_object_buffer( x );
	bli_check_error_code( e_val );

	e_val = bli_check_object_buffer( beta );
	bli_check_error_code( e_val );

	e_val = bli_check_object_buffer( y );
	bli_check_error_code( e_val );

	e_val = bli_check_object_buffer( z );
	bli_check_error_code( e_val );
}
예제 #30
0
void bli_hemm_basic_check( side_t  side,
                           obj_t*  alpha,
                           obj_t*  a,
                           obj_t*  b,
                           obj_t*  beta,
                           obj_t*  c )
{
	err_t e_val;

	// Check operation parameters.

	e_val = bli_check_valid_side( side );
	bli_check_error_code( e_val );

	// Check object datatypes.

	e_val = bli_check_noninteger_object( alpha );
	bli_check_error_code( e_val );

	e_val = bli_check_noninteger_object( beta );
	bli_check_error_code( e_val );

	e_val = bli_check_floating_object( a );
	bli_check_error_code( e_val );

	e_val = bli_check_floating_object( b );
	bli_check_error_code( e_val );

	e_val = bli_check_floating_object( c );
	bli_check_error_code( e_val );

	// Check object dimensions.

	e_val = bli_check_scalar_object( alpha );
	bli_check_error_code( e_val );

	e_val = bli_check_scalar_object( beta );
	bli_check_error_code( e_val );

	e_val = bli_check_matrix_object( a );
	bli_check_error_code( e_val );

	e_val = bli_check_matrix_object( b );
	bli_check_error_code( e_val );

	e_val = bli_check_matrix_object( c );
	bli_check_error_code( e_val );

	if ( bli_is_left( side ) )
	{
		e_val = bli_check_level3_dims( a, b, c );
		bli_check_error_code( e_val );
	}
	else // if ( bli_is_right( side ) )
	{
		e_val = bli_check_level3_dims( b, a, c );
		bli_check_error_code( e_val );
	}

	// Check matrix structure.

	e_val = bli_check_general_object( b );
	bli_check_error_code( e_val );

	e_val = bli_check_general_object( c );
	bli_check_error_code( e_val );
}