|
libflame revision_anchor
|
Go to the source code of this file.
References FLA_Absolute_square_check(), FLA_Check_error_level(), FLA_Obj_datatype(), dcomplex::imag, scomplex::imag, dcomplex::real, and scomplex::real.
Referenced by FLA_Ttmm_l_unb_var1(), FLA_Ttmm_l_unb_var2(), FLA_Ttmm_l_unb_var3(), FLA_Ttmm_u_unb_var1(), FLA_Ttmm_u_unb_var2(), and FLA_Ttmm_u_unb_var3().
{
FLA_Datatype datatype;
if ( FLA_Check_error_level() >= FLA_MIN_ERROR_CHECKING )
FLA_Absolute_square_check( alpha );
datatype = FLA_Obj_datatype( alpha );
switch ( datatype ){
case FLA_FLOAT:
{
float *buff_alpha = ( float * ) FLA_FLOAT_PTR( alpha );
*buff_alpha = (*buff_alpha) * (*buff_alpha);
break;
}
case FLA_DOUBLE:
{
double *buff_alpha = ( double * ) FLA_DOUBLE_PTR( alpha );
*buff_alpha = (*buff_alpha) * (*buff_alpha);
break;
}
case FLA_COMPLEX:
{
scomplex *buff_alpha = ( scomplex * ) FLA_COMPLEX_PTR( alpha );
buff_alpha->real = buff_alpha->real * buff_alpha->real +
buff_alpha->imag * buff_alpha->imag;
buff_alpha->imag = 0.0F;
break;
}
case FLA_DOUBLE_COMPLEX:
{
dcomplex *buff_alpha = ( dcomplex * ) FLA_DOUBLE_COMPLEX_PTR( alpha );
buff_alpha->real = buff_alpha->real * buff_alpha->real +
buff_alpha->imag * buff_alpha->imag;
buff_alpha->imag = 0.0;
break;
}
}
return FLA_SUCCESS;
}
References FLA_Check_floating_object(), FLA_Check_if_scalar(), and FLA_Check_nonconstant_object().
Referenced by FLA_Absolute_square().
{
FLA_Error e_val;
e_val = FLA_Check_floating_object( alpha );
FLA_Check_error_code( e_val );
e_val = FLA_Check_nonconstant_object( alpha );
FLA_Check_error_code( e_val );
e_val = FLA_Check_if_scalar( alpha );
FLA_Check_error_code( e_val );
return FLA_SUCCESS;
}
References FLA_Absolute_value_check(), FLA_Check_error_level(), FLA_Obj_datatype(), dcomplex::imag, scomplex::imag, dcomplex::real, and scomplex::real.
Referenced by FLA_Bidiag_UT_l_realify_unb(), FLA_Bidiag_UT_u_realify_unb(), FLA_Tridiag_UT_l_realify_unb(), and FLA_Tridiag_UT_u_realify_unb().
{
FLA_Datatype datatype;
if ( FLA_Check_error_level() >= FLA_MIN_ERROR_CHECKING )
FLA_Absolute_value_check( alpha );
datatype = FLA_Obj_datatype( alpha );
switch ( datatype ){
case FLA_FLOAT:
{
float *buff_alpha = ( float * ) FLA_FLOAT_PTR( alpha );
*buff_alpha = ( float ) fabs( ( double ) *buff_alpha );
break;
}
case FLA_DOUBLE:
{
double *buff_alpha = ( double * ) FLA_DOUBLE_PTR( alpha );
*buff_alpha = fabs( *buff_alpha );
break;
}
case FLA_COMPLEX:
{
scomplex *buff_alpha = ( scomplex * ) FLA_COMPLEX_PTR( alpha );
buff_alpha->real = ( float ) sqrt( ( double ) buff_alpha->real * buff_alpha->real +
buff_alpha->imag * buff_alpha->imag );
buff_alpha->imag = 0.0F;
break;
}
case FLA_DOUBLE_COMPLEX:
{
dcomplex *buff_alpha = ( dcomplex * ) FLA_DOUBLE_COMPLEX_PTR( alpha );
buff_alpha->real = sqrt( buff_alpha->real * buff_alpha->real +
buff_alpha->imag * buff_alpha->imag );
buff_alpha->imag = 0.0;
break;
}
}
return FLA_SUCCESS;
}
References FLA_Check_floating_object(), FLA_Check_if_scalar(), and FLA_Check_nonconstant_object().
Referenced by FLA_Absolute_value().
{
FLA_Error e_val;
e_val = FLA_Check_floating_object( alpha );
FLA_Check_error_code( e_val );
e_val = FLA_Check_nonconstant_object( alpha );
FLA_Check_error_code( e_val );
e_val = FLA_Check_if_scalar( alpha );
FLA_Check_error_code( e_val );
return FLA_SUCCESS;
}
| double FLA_Clock | ( | void | ) |
References FLA_Clock_helper().
Referenced by FLASH_Queue_begin(), FLASH_Queue_end(), and FLASH_Queue_exec().
{
return FLA_Clock_helper();
}
References bli_cconjm(), bli_zconjm(), FLA_Check_error_level(), FLA_Conjugate_check(), FLA_Obj_col_stride(), FLA_Obj_datatype(), FLA_Obj_has_zero_dim(), FLA_Obj_is_real(), FLA_Obj_length(), FLA_Obj_row_stride(), and FLA_Obj_width().
Referenced by FLA_Bidiag_UT_u_step_unb_var3(), and FLA_Bidiag_UT_u_step_unb_var4().
{
FLA_Datatype datatype;
int m_A, n_A;
int rs_A, cs_A;
if ( FLA_Check_error_level() >= FLA_MIN_ERROR_CHECKING )
FLA_Conjugate_check( A );
if ( FLA_Obj_has_zero_dim( A ) ) return FLA_SUCCESS;
if ( FLA_Obj_is_real( A ) ) return FLA_SUCCESS;
datatype = FLA_Obj_datatype( A );
m_A = FLA_Obj_length( A );
n_A = FLA_Obj_width( A );
rs_A = FLA_Obj_row_stride( A );
cs_A = FLA_Obj_col_stride( A );
switch ( datatype ){
case FLA_COMPLEX:
{
scomplex *buff_A = ( scomplex * ) FLA_COMPLEX_PTR( A );
bli_cconjm( m_A,
n_A,
buff_A, rs_A, cs_A );
break;
}
case FLA_DOUBLE_COMPLEX:
{
dcomplex *buff_A = ( dcomplex * ) FLA_DOUBLE_COMPLEX_PTR( A );
bli_zconjm( m_A,
n_A,
buff_A, rs_A, cs_A );
break;
}
}
return FLA_SUCCESS;
}
References FLA_Check_floating_object(), and FLA_Check_nonconstant_object().
Referenced by FLA_Conjugate().
{
FLA_Error 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 );
return FLA_SUCCESS;
}
References bli_cconjmr(), bli_zconjmr(), FLA_Check_error_level(), FLA_Conjugate_r_check(), FLA_Obj_col_stride(), FLA_Obj_datatype(), FLA_Obj_is_real(), FLA_Obj_length(), FLA_Obj_row_stride(), FLA_Obj_width(), and FLA_Param_map_flame_to_blis_uplo().
{
FLA_Datatype datatype;
int m_A, n_A;
int rs_A, cs_A;
char blis_uplo;
if ( FLA_Check_error_level() >= FLA_MIN_ERROR_CHECKING )
FLA_Conjugate_r_check( uplo, A );
if ( FLA_Obj_is_real( A ) ) return FLA_SUCCESS;
datatype = FLA_Obj_datatype( A );
m_A = FLA_Obj_length( A );
n_A = FLA_Obj_width( A );
rs_A = FLA_Obj_row_stride( A );
cs_A = FLA_Obj_col_stride( A );
FLA_Param_map_flame_to_blis_uplo( uplo, &blis_uplo );
switch ( datatype ){
case FLA_COMPLEX:
{
scomplex *buff_A = ( scomplex * ) FLA_COMPLEX_PTR( A );
bli_cconjmr( blis_uplo,
m_A,
n_A,
buff_A, rs_A, cs_A );
break;
}
case FLA_DOUBLE_COMPLEX:
{
dcomplex *buff_A = ( dcomplex * ) FLA_DOUBLE_COMPLEX_PTR( A );
bli_zconjmr( blis_uplo,
m_A,
n_A,
buff_A, rs_A, cs_A );
break;
}
}
return FLA_SUCCESS;
}
References FLA_Check_floating_object(), FLA_Check_nonconstant_object(), and FLA_Check_valid_uplo().
Referenced by FLA_Conjugate_r().
{
FLA_Error e_val;
e_val = FLA_Check_valid_uplo( uplo );
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 );
return FLA_SUCCESS;
}
References bli_csymmize(), bli_dsymmize(), bli_ssymmize(), bli_zsymmize(), FLA_Check_error_level(), FLA_Hermitianize_check(), FLA_Obj_col_stride(), FLA_Obj_datatype(), FLA_Obj_row_stride(), FLA_Obj_width(), FLA_Param_map_flame_to_blis_conj(), and FLA_Param_map_flame_to_blis_uplo().
Referenced by FLA_Random_herm_matrix(), and FLASH_Hermitianize().
{
FLA_Datatype datatype;
dim_t n_A;
dim_t rs_A, cs_A;
char blis_conj;
char blis_uplo;
if ( FLA_Check_error_level() >= FLA_MIN_ERROR_CHECKING )
FLA_Hermitianize_check( uplo, A );
datatype = FLA_Obj_datatype( A );
n_A = FLA_Obj_width( A );
rs_A = FLA_Obj_row_stride( A );
cs_A = FLA_Obj_col_stride( A );
FLA_Param_map_flame_to_blis_conj( FLA_CONJUGATE, &blis_conj );
FLA_Param_map_flame_to_blis_uplo( uplo, &blis_uplo );
switch ( datatype ){
case FLA_FLOAT:
{
float *buff_A = ( float * ) FLA_FLOAT_PTR( A );
bli_ssymmize( blis_conj,
blis_uplo,
n_A,
buff_A, rs_A, cs_A );
break;
}
case FLA_DOUBLE:
{
double *buff_A = ( double * ) FLA_DOUBLE_PTR( A );
bli_dsymmize( blis_conj,
blis_uplo,
n_A,
buff_A, rs_A, cs_A );
break;
}
case FLA_COMPLEX:
{
scomplex *buff_A = ( scomplex * ) FLA_COMPLEX_PTR( A );
bli_csymmize( blis_conj,
blis_uplo,
n_A,
buff_A, rs_A, cs_A );
break;
}
case FLA_DOUBLE_COMPLEX:
{
dcomplex *buff_A = ( dcomplex * ) FLA_DOUBLE_COMPLEX_PTR( A );
bli_zsymmize( blis_conj,
blis_uplo,
n_A,
buff_A, rs_A, cs_A );
break;
}
}
return FLA_SUCCESS;
}
References FLA_Check_floating_object(), FLA_Check_nonconstant_object(), FLA_Check_square(), and FLA_Check_valid_uplo().
Referenced by FLA_Hermitianize().
{
FLA_Error e_val;
e_val = FLA_Check_valid_uplo( uplo );
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_square( A );
FLA_Check_error_code( e_val );
return FLA_SUCCESS;
}
References bli_cinvertv(), bli_dinvertv(), bli_sinvertv(), bli_zinvertv(), FLA_Check_error_level(), FLA_Invert_check(), FLA_Obj_datatype(), FLA_Obj_has_zero_dim(), FLA_Obj_vector_dim(), FLA_Obj_vector_inc(), and FLA_Param_map_flame_to_blis_conj().
Referenced by FLA_Trinv_ln_unb_var1(), FLA_Trinv_ln_unb_var2(), FLA_Trinv_ln_unb_var3(), FLA_Trinv_ln_unb_var4(), FLA_Trinv_un_unb_var1(), FLA_Trinv_un_unb_var2(), FLA_Trinv_un_unb_var3(), and FLA_Trinv_un_unb_var4().
{
FLA_Datatype datatype;
int n_elem;
int inc_x;
char blis_conj;
if ( FLA_Check_error_level() >= FLA_MIN_ERROR_CHECKING )
FLA_Invert_check( conj, x );
if ( FLA_Obj_has_zero_dim( x ) ) return FLA_SUCCESS;
datatype = FLA_Obj_datatype( x );
n_elem = FLA_Obj_vector_dim( x );
inc_x = FLA_Obj_vector_inc( x );
FLA_Param_map_flame_to_blis_conj( conj, &blis_conj );
switch ( datatype ){
case FLA_FLOAT:
{
float *buff_x = ( float * ) FLA_FLOAT_PTR( x );
bli_sinvertv( blis_conj,
n_elem,
buff_x, inc_x );
break;
}
case FLA_DOUBLE:
{
double *buff_x = ( double * ) FLA_DOUBLE_PTR( x );
bli_dinvertv( blis_conj,
n_elem,
buff_x, inc_x );
break;
}
case FLA_COMPLEX:
{
scomplex *buff_x = ( scomplex * ) FLA_COMPLEX_PTR( x );
bli_cinvertv( blis_conj,
n_elem,
buff_x, inc_x );
break;
}
case FLA_DOUBLE_COMPLEX:
{
dcomplex *buff_x = ( dcomplex * ) FLA_DOUBLE_COMPLEX_PTR( x );
bli_zinvertv( blis_conj,
n_elem,
buff_x, inc_x );
break;
}
}
return FLA_SUCCESS;
}
References FLA_Check_floating_object(), FLA_Check_if_vector(), FLA_Check_nonconstant_object(), and FLA_Check_valid_conj().
Referenced by FLA_Invert().
{
FLA_Error e_val;
e_val = FLA_Check_valid_conj( conj );
FLA_Check_error_code( e_val );
e_val = FLA_Check_floating_object( x );
FLA_Check_error_code( e_val );
e_val = FLA_Check_nonconstant_object( x );
FLA_Check_error_code( e_val );
e_val = FLA_Check_if_vector( x );
FLA_Check_error_code( e_val );
return FLA_SUCCESS;
}
References FLA_Check_error_level(), FLA_Max_abs_value_check(), FLA_Obj_col_stride(), FLA_Obj_datatype(), FLA_Obj_length(), FLA_Obj_row_stride(), FLA_Obj_width(), dcomplex::imag, scomplex::imag, dcomplex::real, and scomplex::real.
Referenced by FLA_Norm1(), and FLA_Norm_inf().
{
FLA_Datatype datatype;
FLA_Datatype dt_amax;
dim_t i, j;
dim_t m_A, n_A;
dim_t rs_A, cs_A;
if ( FLA_Check_error_level() >= FLA_MIN_ERROR_CHECKING )
FLA_Max_abs_value_check( A, amax );
datatype = FLA_Obj_datatype( A );
dt_amax = FLA_Obj_datatype( amax );
m_A = FLA_Obj_length( A );
n_A = FLA_Obj_width( A );
rs_A = FLA_Obj_row_stride( A );
cs_A = FLA_Obj_col_stride( A );
switch ( datatype ){
case FLA_FLOAT:
{
float *buff_A = ( float * ) FLA_FLOAT_PTR( A );
float *buff_amax = ( float * ) FLA_FLOAT_PTR( amax );
float curr_amax;
float temp_amax;
// Initialize the search with the absolute value of the first element.
curr_amax = ( float ) fabs( buff_A[0] );
// Inspect each element, saving values in curr_amax that are larger than
// the previous elements.
for( j = 0; j < n_A; j++ )
{
for( i = 0; i < m_A; i++ )
{
temp_amax = ( float ) fabs( buff_A[ j*cs_A + i*rs_A ] );
if ( curr_amax < temp_amax )
curr_amax = temp_amax;
}
}
// Copy the result into the amax object buffer.
*buff_amax = curr_amax;
break;
}
case FLA_DOUBLE:
{
double *buff_A = ( double * ) FLA_DOUBLE_PTR( A );
double *buff_amax = ( double * ) FLA_DOUBLE_PTR( amax );
double curr_amax;
double temp_amax;
// Initialize the search with the absolute value of the first element.
curr_amax = ( double ) fabs( buff_A[0] );
// Inspect each element, saving values in curr_amax that are larger than
// the previous elements.
for( j = 0; j < n_A; j++ )
{
for( i = 0; i < m_A; i++ )
{
temp_amax = ( double ) fabs( buff_A[ j*cs_A + i*rs_A ] );
if ( curr_amax < temp_amax )
curr_amax = temp_amax;
}
}
// Copy the result into the amax object buffer.
*buff_amax = curr_amax;
break;
}
case FLA_COMPLEX:
{
if ( dt_amax == FLA_FLOAT )
{
scomplex *buff_A = ( scomplex * ) FLA_COMPLEX_PTR( A );
float *buff_amax = ( float * ) FLA_FLOAT_PTR( amax );
scomplex *temp_value;
float curr_amax;
float temp_amax;
// Initialize the search with the absolute value of the first element.
temp_value = buff_A;
curr_amax = ( float ) sqrt( temp_value->real * temp_value->real +
temp_value->imag * temp_value->imag );
// Inspect each element, saving values in curr_amax that are larger than
// the previous elements.
for( j = 0; j < n_A; j++ )
{
for( i = 0; i < m_A; i++ )
{
temp_value = buff_A + j*cs_A + i*rs_A;
temp_amax = ( float ) sqrt( temp_value->real * temp_value->real +
temp_value->imag * temp_value->imag );
if ( curr_amax < temp_amax )
curr_amax = temp_amax;
}
}
// Copy the result into the amax object buffer.
*buff_amax = curr_amax;
}
else if ( dt_amax == FLA_COMPLEX )
{
scomplex *buff_A = ( scomplex * ) FLA_COMPLEX_PTR( A );
scomplex *buff_amax = ( scomplex * ) FLA_COMPLEX_PTR( amax );
scomplex *temp_value;
float curr_amax;
float temp_amax;
// Initialize the search with the absolute value of the first element.
temp_value = buff_A;
curr_amax = ( float ) sqrt( temp_value->real * temp_value->real +
temp_value->imag * temp_value->imag );
// Inspect each element, saving values in curr_amax that are larger than
// the previous elements.
for( j = 0; j < n_A; j++ )
{
for( i = 0; i < m_A; i++ )
{
temp_value = buff_A + j*cs_A + i*rs_A;
temp_amax = ( float ) sqrt( temp_value->real * temp_value->real +
temp_value->imag * temp_value->imag );
if ( curr_amax < temp_amax )
curr_amax = temp_amax;
}
}
// Copy the result into the amax object buffer.
buff_amax->real = curr_amax;
buff_amax->imag = 0.0F;
}
break;
}
case FLA_DOUBLE_COMPLEX:
{
if ( dt_amax == FLA_DOUBLE )
{
dcomplex *buff_A = ( dcomplex * ) FLA_DOUBLE_COMPLEX_PTR( A );
double *buff_amax = ( double * ) FLA_DOUBLE_PTR( amax );
dcomplex *temp_value;
double curr_amax;
double temp_amax;
// Initialize the search with the absolute value of the first element.
temp_value = buff_A;
curr_amax = ( double ) sqrt( temp_value->real * temp_value->real +
temp_value->imag * temp_value->imag );
// Inspect each element, saving values in curr_amax that are larger than
// the previous elements.
for( j = 0; j < n_A; j++ )
{
for( i = 0; i < m_A; i++ )
{
temp_value = buff_A + j*cs_A + i*rs_A;
temp_amax = ( double ) sqrt( temp_value->real * temp_value->real +
temp_value->imag * temp_value->imag );
if ( curr_amax < temp_amax )
curr_amax = temp_amax;
}
}
// Copy the result into the amax object buffer.
*buff_amax = curr_amax;
}
else if ( dt_amax == FLA_DOUBLE_COMPLEX )
{
dcomplex *buff_A = ( dcomplex * ) FLA_DOUBLE_COMPLEX_PTR( A );
dcomplex *buff_amax = ( dcomplex * ) FLA_DOUBLE_COMPLEX_PTR( amax );
dcomplex *temp_value;
double curr_amax;
double temp_amax;
// Initialize the search with the absolute value of the first element.
temp_value = buff_A;
curr_amax = ( double ) sqrt( temp_value->real * temp_value->real +
temp_value->imag * temp_value->imag );
// Inspect each element, saving values in curr_amax that are larger than
// the previous elements.
for( j = 0; j < n_A; j++ )
{
for( i = 0; i < m_A; i++ )
{
temp_value = buff_A + j*cs_A + i*rs_A;
temp_amax = ( double ) sqrt( temp_value->real * temp_value->real +
temp_value->imag * temp_value->imag );
if ( curr_amax < temp_amax )
curr_amax = temp_amax;
}
}
// Copy the result into the amax object buffer.
buff_amax->real = curr_amax;
buff_amax->imag = 0.0;
}
break;
}
}
return FLA_SUCCESS;
}
References FLA_Check_floating_object(), FLA_Check_identical_object_precision(), FLA_Check_if_scalar(), and FLA_Check_nonconstant_object().
Referenced by FLA_Max_abs_value().
{
FLA_Error 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_real_object( amax );
// FLA_Check_error_code( e_val );
e_val = FLA_Check_identical_object_precision( A, amax );
FLA_Check_error_code( e_val );
e_val = FLA_Check_if_scalar( amax );
FLA_Check_error_code( e_val );
return FLA_SUCCESS;
}
References FLA_Check_error_level(), FLA_Max_elemwise_diff_check(), FLA_Obj_col_stride(), FLA_Obj_datatype(), FLA_Obj_length(), FLA_Obj_row_stride(), and FLA_Obj_width().
Referenced by FLASH_Max_elemwise_diff().
{
FLA_Datatype datatype;
dim_t i, j;
dim_t m_A, n_A;
dim_t rs_A, cs_A;
dim_t rs_B, cs_B;
double diff;
double d_max = 0.0;
if ( FLA_Check_error_level() >= FLA_MIN_ERROR_CHECKING )
FLA_Max_elemwise_diff_check( A, B );
datatype = FLA_Obj_datatype( A );
m_A = FLA_Obj_length( A );
n_A = FLA_Obj_width( A );
rs_A = FLA_Obj_row_stride( A );
cs_A = FLA_Obj_col_stride( A );
rs_B = FLA_Obj_row_stride( B );
cs_B = FLA_Obj_col_stride( B );
switch ( datatype ){
case FLA_FLOAT:
{
float *buff_a = ( float * ) FLA_FLOAT_PTR( A );
float *buff_b = ( float * ) FLA_FLOAT_PTR( B );
for( j = 0; j < n_A; j++ )
{
for( i = 0; i < m_A; i++ )
{
diff = ( double ) ( buff_a[ j*cs_A + i*rs_A ] - buff_b[ j*cs_B + i*rs_B ] );
if( fabs(diff) > d_max )
d_max = fabs(diff);
}
}
break;
}
case FLA_DOUBLE:
{
double *buff_a = ( double * ) FLA_DOUBLE_PTR( A );
double *buff_b = ( double * ) FLA_DOUBLE_PTR( B );
for( j = 0; j < n_A; j++ )
{
for( i = 0; i < m_A; i++ )
{
diff = ( double ) ( buff_a[ j*cs_A + i*rs_A ] - buff_b[ j*cs_B + i*rs_B ] );
if( fabs(diff) > d_max )
d_max = fabs(diff);
}
}
break;
}
case FLA_COMPLEX:
{
scomplex *buff_a = ( scomplex * ) FLA_COMPLEX_PTR( A );
scomplex *buff_b = ( scomplex * ) FLA_COMPLEX_PTR( B );
for( j = 0; j < n_A; j++ )
{
for( i = 0; i < m_A; i++ )
{
diff = ( double ) ( buff_a[ j*cs_A + i*rs_A ].real - buff_b[ j*cs_B + i*rs_B ].real );
if( fabs(diff) > d_max )
d_max = fabs(diff);
diff = ( double ) ( buff_a[ j*cs_A + i*rs_A ].imag - buff_b[ j*cs_B + i*rs_B ].imag );
if( fabs(diff) > d_max )
d_max = fabs(diff);
}
}
break;
}
case FLA_DOUBLE_COMPLEX:
{
dcomplex *buff_a = ( dcomplex * ) FLA_DOUBLE_COMPLEX_PTR( A );
dcomplex *buff_b = ( dcomplex * ) FLA_DOUBLE_COMPLEX_PTR( B );
for( j = 0; j < n_A; j++ )
{
for( i = 0; i < m_A; i++ )
{
diff = ( double ) ( buff_a[ j*cs_A + i*rs_A ].real - buff_b[ j*cs_B + i*rs_B ].real );
if( fabs(diff) > d_max )
d_max = fabs(diff);
diff = ( double ) ( buff_a[ j*cs_A + i*rs_A ].imag - buff_b[ j*cs_B + i*rs_B ].imag );
if( fabs(diff) > d_max )
d_max = fabs(diff);
}
}
break;
}
}
return d_max;
}
References FLA_Check_conformal_dims(), FLA_Check_floating_object(), FLA_Check_identical_object_datatype(), and FLA_Check_nonconstant_object().
Referenced by FLA_Max_elemwise_diff().
{
FLA_Error 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_identical_object_datatype( A, B );
FLA_Check_error_code( e_val );
e_val = FLA_Check_conformal_dims( FLA_NO_TRANSPOSE, A, B );
FLA_Check_error_code( e_val );
return FLA_SUCCESS;
}
References FLA_Check_error_level(), FLA_Mult_add_check(), FLA_Obj_datatype(), dcomplex::imag, scomplex::imag, dcomplex::real, and scomplex::real.
Referenced by FLA_Bidiag_UT_u_step_unb_var3(), FLA_Bidiag_UT_u_step_unb_var4(), FLA_Lyap_h_unb_var1(), FLA_Lyap_h_unb_var2(), FLA_Lyap_h_unb_var3(), FLA_Lyap_h_unb_var4(), FLA_Lyap_n_unb_var1(), FLA_Lyap_n_unb_var2(), FLA_Lyap_n_unb_var3(), and FLA_Lyap_n_unb_var4().
{
FLA_Datatype datatype;
if ( FLA_Check_error_level() >= FLA_MIN_ERROR_CHECKING )
FLA_Mult_add_check( alpha, beta, gamma );
datatype = FLA_Obj_datatype( gamma );
switch ( datatype ){
case FLA_FLOAT:
{
float *buff_alpha = ( float * ) FLA_FLOAT_PTR( alpha );
float *buff_beta = ( float * ) FLA_FLOAT_PTR( beta );
float *buff_gamma = ( float * ) FLA_FLOAT_PTR( gamma );
*buff_gamma = *buff_gamma + *buff_alpha * *buff_beta;
break;
}
case FLA_DOUBLE:
{
double *buff_alpha = ( double * ) FLA_DOUBLE_PTR( alpha );
double *buff_beta = ( double * ) FLA_DOUBLE_PTR( beta );
double *buff_gamma = ( double * ) FLA_DOUBLE_PTR( gamma );
*buff_gamma = *buff_gamma + *buff_alpha * *buff_beta;
break;
}
case FLA_COMPLEX:
{
scomplex *buff_alpha = ( scomplex * ) FLA_COMPLEX_PTR( alpha );
scomplex *buff_beta = ( scomplex * ) FLA_COMPLEX_PTR( beta );
scomplex *buff_gamma = ( scomplex * ) FLA_COMPLEX_PTR( gamma );
scomplex alphabeta;
alphabeta.real = buff_alpha->real * buff_beta->real -
buff_alpha->imag * buff_beta->imag;
alphabeta.imag = buff_alpha->real * buff_beta->imag +
buff_alpha->imag * buff_beta->real;
buff_gamma->real = buff_gamma->real + alphabeta.real;
buff_gamma->imag = buff_gamma->imag + alphabeta.imag;
break;
}
case FLA_DOUBLE_COMPLEX:
{
dcomplex *buff_alpha = ( dcomplex * ) FLA_DOUBLE_COMPLEX_PTR( alpha );
dcomplex *buff_beta = ( dcomplex * ) FLA_DOUBLE_COMPLEX_PTR( beta );
dcomplex *buff_gamma = ( dcomplex * ) FLA_DOUBLE_COMPLEX_PTR( gamma );
dcomplex alphabeta;
alphabeta.real = buff_alpha->real * buff_beta->real -
buff_alpha->imag * buff_beta->imag;
alphabeta.imag = buff_alpha->real * buff_beta->imag +
buff_alpha->imag * buff_beta->real;
buff_gamma->real = buff_gamma->real + alphabeta.real;
buff_gamma->imag = buff_gamma->imag + alphabeta.imag;
break;
}
}
return FLA_SUCCESS;
}
References FLA_Check_floating_object(), FLA_Check_if_scalar(), and FLA_Check_nonconstant_object().
Referenced by FLA_Mult_add().
{
FLA_Error e_val;
e_val = FLA_Check_floating_object( alpha );
FLA_Check_error_code( e_val );
e_val = FLA_Check_floating_object( beta );
FLA_Check_error_code( e_val );
e_val = FLA_Check_floating_object( gamma );
FLA_Check_error_code( e_val );
e_val = FLA_Check_if_scalar( alpha );
FLA_Check_error_code( e_val );
e_val = FLA_Check_if_scalar( beta );
FLA_Check_error_code( e_val );
e_val = FLA_Check_if_scalar( gamma );
FLA_Check_error_code( e_val );
e_val = FLA_Check_nonconstant_object( gamma );
FLA_Check_error_code( e_val );
return FLA_SUCCESS;
}
References FLA_Check_error_level(), FLA_MINUS_ONE, FLA_Negate_check(), and FLA_Scal().
{
if ( FLA_Check_error_level() >= FLA_MIN_ERROR_CHECKING )
FLA_Negate_check( x );
return FLA_Scal( FLA_MINUS_ONE, x );
}
References FLA_Check_floating_object(), and FLA_Check_nonconstant_object().
Referenced by FLA_Negate().
{
FLA_Error e_val;
e_val = FLA_Check_floating_object( x );
FLA_Check_error_code( e_val );
e_val = FLA_Check_nonconstant_object( x );
FLA_Check_error_code( e_val );
return FLA_SUCCESS;
}
References FLA_Asum(), FLA_Check_error_level(), FLA_Cont_with_1x3_to_1x2(), FLA_Max_abs_value(), FLA_Norm1_check(), FLA_Obj_create(), FLA_Obj_datatype(), FLA_Obj_free(), FLA_Obj_width(), FLA_Part_1x2(), and FLA_Repart_1x2_to_1x3().
Referenced by FLASH_Norm1().
{
FLA_Obj AL, AR, A0, a1, A2;
FLA_Obj b;
FLA_Obj bL, bR, b0, beta1, b2;
if ( FLA_Check_error_level() >= FLA_MIN_ERROR_CHECKING )
FLA_Norm1_check( A, norm );
FLA_Obj_create( FLA_Obj_datatype( A ), 1, FLA_Obj_width( A ), 0, 0, &b );
FLA_Part_1x2( A, &AL, &AR, 0, FLA_LEFT );
FLA_Part_1x2( b, &bL, &bR, 0, FLA_LEFT );
while ( FLA_Obj_width( AL ) < FLA_Obj_width( A ) ){
FLA_Repart_1x2_to_1x3( AL, /**/ AR, &A0, /**/ &a1, &A2,
1, FLA_RIGHT );
FLA_Repart_1x2_to_1x3( bL, /**/ bR, &b0, /**/ &beta1, &b2,
1, FLA_RIGHT );
/*------------------------------------------------------------*/
FLA_Asum( a1, beta1 );
/*------------------------------------------------------------*/
FLA_Cont_with_1x3_to_1x2( &AL, /**/ &AR, A0, a1, /**/ A2,
FLA_LEFT );
FLA_Cont_with_1x3_to_1x2( &bL, /**/ &bR, b0, beta1, /**/ b2,
FLA_LEFT );
}
FLA_Max_abs_value( b, norm );
FLA_Obj_free( &b );
return FLA_SUCCESS;
}
References FLA_Check_floating_object(), FLA_Check_identical_object_precision(), FLA_Check_if_scalar(), and FLA_Check_nonconstant_object().
Referenced by FLA_Norm1().
{
FLA_Error 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_identical_object_precision( A, norm );
FLA_Check_error_code( e_val );
e_val = FLA_Check_if_scalar( norm );
FLA_Check_error_code( e_val );
return FLA_SUCCESS;
}
References bli_cfnorm(), bli_dfnorm(), bli_sfnorm(), bli_zfnorm(), FLA_Check_error_level(), FLA_Norm_frob_check(), FLA_Obj_col_stride(), FLA_Obj_datatype(), FLA_Obj_length(), FLA_Obj_row_stride(), and FLA_Obj_width().
{
FLA_Datatype datatype;
int m_A, n_A;
int rs_A, cs_A;
if ( FLA_Check_error_level() >= FLA_MIN_ERROR_CHECKING )
FLA_Norm_frob_check( A, norm );
datatype = FLA_Obj_datatype( A );
m_A = FLA_Obj_length( A );
n_A = FLA_Obj_width( A );
rs_A = FLA_Obj_row_stride( A );
cs_A = FLA_Obj_col_stride( A );
switch ( datatype ){
case FLA_FLOAT:
{
float *buff_A = ( float * ) FLA_FLOAT_PTR( A );
float *buff_norm = ( float * ) FLA_FLOAT_PTR( norm );
bli_sfnorm( m_A,
n_A,
buff_A, rs_A, cs_A,
buff_norm );
break;
}
case FLA_DOUBLE:
{
double *buff_A = ( double * ) FLA_DOUBLE_PTR( A );
double *buff_norm = ( double * ) FLA_DOUBLE_PTR( norm );
bli_dfnorm( m_A,
n_A,
buff_A, rs_A, cs_A,
buff_norm );
break;
}
case FLA_COMPLEX:
{
scomplex *buff_A = ( scomplex * ) FLA_COMPLEX_PTR( A );
float *buff_norm = ( float * ) FLA_FLOAT_PTR( norm );
bli_cfnorm( m_A,
n_A,
buff_A, rs_A, cs_A,
buff_norm );
break;
}
case FLA_DOUBLE_COMPLEX:
{
dcomplex *buff_A = ( dcomplex * ) FLA_DOUBLE_COMPLEX_PTR( A );
double *buff_norm = ( double * ) FLA_DOUBLE_PTR( norm );
bli_zfnorm( m_A,
n_A,
buff_A, rs_A, cs_A,
buff_norm );
break;
}
}
return FLA_SUCCESS;
}
References FLA_Check_floating_object(), FLA_Check_identical_object_precision(), FLA_Check_if_scalar(), FLA_Check_nonconstant_object(), and FLA_Check_real_object().
Referenced by FLA_Norm_frob().
{
FLA_Error 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_real_object( norm );
FLA_Check_error_code( e_val );
e_val = FLA_Check_identical_object_precision( A, norm );
FLA_Check_error_code( e_val );
e_val = FLA_Check_if_scalar( norm );
FLA_Check_error_code( e_val );
return FLA_SUCCESS;
}
References FLA_Asum(), FLA_Check_error_level(), FLA_Cont_with_3x1_to_2x1(), FLA_Max_abs_value(), FLA_Norm_inf_check(), FLA_Obj_create(), FLA_Obj_datatype(), FLA_Obj_free(), FLA_Obj_length(), FLA_Part_2x1(), and FLA_Repart_2x1_to_3x1().
{
FLA_Obj AT, A0,
AB, a1t,
A2;
FLA_Obj bT, b0,
bB, beta1,
b2;
FLA_Obj b;
if ( FLA_Check_error_level() >= FLA_MIN_ERROR_CHECKING )
FLA_Norm_inf_check( A, norm );
FLA_Obj_create( FLA_Obj_datatype( A ), FLA_Obj_length( A ), 1, 0, 0, &b );
FLA_Part_2x1( A, &AT,
&AB, 0, FLA_TOP );
FLA_Part_2x1( b, &bT,
&bB, 0, FLA_TOP );
while ( FLA_Obj_length( AT ) < FLA_Obj_length( A ) ){
FLA_Repart_2x1_to_3x1( AT, &A0,
/* ** */ /* *** */
&a1t,
AB, &A2, 1, FLA_BOTTOM );
FLA_Repart_2x1_to_3x1( bT, &b0,
/* ** */ /* ***** */
&beta1,
bB, &b2, 1, FLA_BOTTOM );
/*------------------------------------------------------------*/
FLA_Asum( a1t, beta1 );
/*------------------------------------------------------------*/
FLA_Cont_with_3x1_to_2x1( &AT, A0,
a1t,
/* ** */ /* *** */
&AB, A2, FLA_TOP );
FLA_Cont_with_3x1_to_2x1( &bT, b0,
beta1,
/* ** */ /* ***** */
&bB, b2, FLA_TOP );
}
FLA_Max_abs_value( b, norm );
FLA_Obj_free( &b );
return FLA_SUCCESS;
}
References FLA_Check_floating_object(), FLA_Check_identical_object_precision(), FLA_Check_if_scalar(), FLA_Check_nonconstant_object(), and FLA_Check_real_object().
Referenced by FLA_Norm_inf().
{
FLA_Error 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_real_object( norm );
FLA_Check_error_code( e_val );
e_val = FLA_Check_identical_object_precision( A, norm );
FLA_Check_error_code( e_val );
e_val = FLA_Check_if_scalar( norm );
FLA_Check_error_code( e_val );
return FLA_SUCCESS;
}
| dcomplex FLA_random_dcomplex | ( | void | ) |
References FLA_random_double(), dcomplex::imag, and dcomplex::real.
{
dcomplex z;
z.real = FLA_random_double();
z.imag = FLA_random_double();
return z;
}
| double FLA_random_double | ( | void | ) |
Referenced by FLA_random_dcomplex().
{
return ( ( double ) rand() / ( double ) RAND_MAX ) * 2.0 - 1.0;
}
| float FLA_random_float | ( | void | ) |
Referenced by FLA_random_scomplex().
{
return ( float )( ( ( double ) rand() / ( double ) RAND_MAX ) * 2.0 - 1.0 );
}
References FLA_Check_error_level(), FLA_Hermitianize(), FLA_Random_herm_matrix_check(), and FLA_Random_tri_matrix().
{
if ( FLA_Check_error_level() >= FLA_MIN_ERROR_CHECKING )
FLA_Random_herm_matrix_check( uplo, A );
FLA_Random_tri_matrix( uplo, FLA_NONUNIT_DIAG, A );
FLA_Hermitianize( uplo, A );
return FLA_SUCCESS;
}
References FLA_Check_floating_object(), FLA_Check_nonconstant_object(), FLA_Check_square(), and FLA_Check_valid_uplo().
Referenced by FLA_Random_herm_matrix().
{
FLA_Error e_val;
e_val = FLA_Check_valid_uplo( uplo );
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_square( A );
FLA_Check_error_code( e_val );
return FLA_SUCCESS;
}
References bli_crandm(), bli_drandm(), bli_srandm(), bli_zrandm(), FLA_Check_error_level(), FLA_Obj_col_stride(), FLA_Obj_datatype(), FLA_Obj_length(), FLA_Obj_row_stride(), FLA_Obj_width(), and FLA_Random_matrix_check().
Referenced by FLASH_Random_matrix().
{
FLA_Datatype datatype;
int m_A, n_A;
int rs_A, cs_A;
if ( FLA_Check_error_level() >= FLA_MIN_ERROR_CHECKING )
FLA_Random_matrix_check( A );
datatype = FLA_Obj_datatype( A );
m_A = FLA_Obj_length( A );
n_A = FLA_Obj_width( A );
rs_A = FLA_Obj_row_stride( A );
cs_A = FLA_Obj_col_stride( A );
switch( datatype ){
case FLA_FLOAT:
{
float *buff_A = ( float * ) FLA_FLOAT_PTR( A );
bli_srandm( m_A,
n_A,
buff_A, rs_A, cs_A );
break;
}
case FLA_DOUBLE:
{
double *buff_A = ( double * ) FLA_DOUBLE_PTR( A );
bli_drandm( m_A,
n_A,
buff_A, rs_A, cs_A );
break;
}
case FLA_COMPLEX:
{
scomplex *buff_A = ( scomplex * ) FLA_COMPLEX_PTR( A );
bli_crandm( m_A,
n_A,
buff_A, rs_A, cs_A );
break;
}
case FLA_DOUBLE_COMPLEX:
{
dcomplex *buff_A = ( dcomplex * ) FLA_DOUBLE_COMPLEX_PTR( A );
bli_zrandm( m_A,
n_A,
buff_A, rs_A, cs_A );
break;
}
}
return FLA_SUCCESS;
}
References FLA_Check_floating_object(), and FLA_Check_nonconstant_object().
Referenced by FLA_Random_matrix().
{
FLA_Error 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 );
return FLA_SUCCESS;
}
| scomplex FLA_random_scomplex | ( | void | ) |
References FLA_random_float(), scomplex::imag, and scomplex::real.
{
scomplex z;
z.real = FLA_random_float();
z.imag = FLA_random_float();
return z;
}
References FLA_Check_error_level(), FLA_Herk_external(), FLA_Obj_create_conf_to(), FLA_Obj_free(), FLA_ONE, FLA_Random_spd_matrix_check(), FLA_Random_tri_matrix(), and FLA_ZERO.
Referenced by FLASH_Random_spd_matrix().
{
FLA_Obj R;
if ( FLA_Check_error_level() >= FLA_MIN_ERROR_CHECKING )
FLA_Random_spd_matrix_check( uplo, A );
// Create a temporary object R conformal to A.
FLA_Obj_create_conf_to( FLA_NO_TRANSPOSE, A, &R );
// Randomize R to be an uplo-triangular matrix. Note that the diagonal of R
// needs to be positive to ensure that R * R' is SPD/HPD.
FLA_Random_tri_matrix( uplo, FLA_NONUNIT_DIAG, R );
if ( uplo == FLA_LOWER_TRIANGULAR )
{
// A = R * R';
FLA_Herk_external( uplo, FLA_NO_TRANSPOSE, FLA_ONE, R, FLA_ZERO, A );
}
else // if ( uplo == FLA_UPPER_TRIANGULAR )
{
// A = R' * R;
FLA_Herk_external( uplo, FLA_CONJ_TRANSPOSE, FLA_ONE, R, FLA_ZERO, A );
}
// Free R.
FLA_Obj_free( &R );
return FLA_SUCCESS;
}
References FLA_Check_floating_object(), FLA_Check_nonconstant_object(), FLA_Check_square(), and FLA_Check_valid_uplo().
Referenced by FLA_Random_spd_matrix().
{
FLA_Error e_val;
e_val = FLA_Check_valid_uplo( uplo );
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_square( A );
FLA_Check_error_code( e_val );
return FLA_SUCCESS;
}
References FLA_Check_error_level(), FLA_Random_symm_matrix_check(), FLA_Random_tri_matrix(), and FLA_Symmetrize().
{
if ( FLA_Check_error_level() >= FLA_MIN_ERROR_CHECKING )
FLA_Random_symm_matrix_check( uplo, A );
FLA_Random_tri_matrix( uplo, FLA_NONUNIT_DIAG, A );
FLA_Symmetrize( uplo, A );
return FLA_SUCCESS;
}
References FLA_Check_floating_object(), FLA_Check_nonconstant_object(), FLA_Check_square(), and FLA_Check_valid_uplo().
Referenced by FLA_Random_symm_matrix().
{
FLA_Error e_val;
e_val = FLA_Check_valid_uplo( uplo );
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_square( A );
FLA_Check_error_code( e_val );
return FLA_SUCCESS;
}
References bli_crandmr(), bli_drandmr(), bli_srandmr(), bli_zrandmr(), FLA_Check_error_level(), FLA_Obj_col_stride(), FLA_Obj_datatype(), FLA_Obj_length(), FLA_Obj_row_stride(), FLA_Obj_width(), FLA_Param_map_flame_to_blis_diag(), FLA_Param_map_flame_to_blis_uplo(), and FLA_Random_tri_matrix_check().
Referenced by FLA_Random_herm_matrix(), FLA_Random_spd_matrix(), and FLA_Random_symm_matrix().
{
FLA_Datatype datatype;
int m_A, n_A;
int rs_A, cs_A;
char blis_uplo;
char blis_diag;
if ( FLA_Check_error_level() >= FLA_MIN_ERROR_CHECKING )
FLA_Random_tri_matrix_check( uplo, diag, A );
datatype = FLA_Obj_datatype( A );
m_A = FLA_Obj_length( A );
n_A = FLA_Obj_width( A );
rs_A = FLA_Obj_row_stride( A );
cs_A = FLA_Obj_col_stride( A );
FLA_Param_map_flame_to_blis_uplo( uplo, &blis_uplo );
FLA_Param_map_flame_to_blis_diag( diag, &blis_diag );
switch( datatype ){
case FLA_FLOAT:
{
float *buff_A = ( float * ) FLA_FLOAT_PTR( A );
bli_srandmr( blis_uplo,
blis_diag,
m_A,
n_A,
buff_A, rs_A, cs_A );
break;
}
case FLA_DOUBLE:
{
double *buff_A = ( double * ) FLA_DOUBLE_PTR( A );
bli_drandmr( blis_uplo,
blis_diag,
m_A,
n_A,
buff_A, rs_A, cs_A );
break;
}
case FLA_COMPLEX:
{
scomplex *buff_A = ( scomplex * ) FLA_COMPLEX_PTR( A );
bli_crandmr( blis_uplo,
blis_diag,
m_A,
n_A,
buff_A, rs_A, cs_A );
break;
}
case FLA_DOUBLE_COMPLEX:
{
dcomplex *buff_A = ( dcomplex * ) FLA_DOUBLE_COMPLEX_PTR( A );
bli_zrandmr( blis_uplo,
blis_diag,
m_A,
n_A,
buff_A, rs_A, cs_A );
break;
}
}
return FLA_SUCCESS;
}
References FLA_Check_floating_object(), FLA_Check_nonconstant_object(), FLA_Check_valid_diag(), and FLA_Check_valid_uplo().
Referenced by FLA_Random_tri_matrix().
{
FLA_Error e_val;
e_val = FLA_Check_valid_uplo( uplo );
FLA_Check_error_code( e_val );
e_val = FLA_Check_valid_diag( diag );
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 );
return FLA_SUCCESS;
}
References bli_cewscalmt(), bli_dewscalmt(), bli_sewscalmt(), bli_zewscalmt(), FLA_Check_error_level(), FLA_Obj_col_stride(), FLA_Obj_datatype(), FLA_Obj_has_zero_dim(), FLA_Obj_length(), FLA_Obj_row_stride(), FLA_Obj_width(), FLA_Param_map_flame_to_blis_trans(), and FLA_Scal_elemwise_check().
{
FLA_Datatype datatype;
int m_B, n_B;
int rs_A, cs_A;
int rs_B, cs_B;
char blis_trans;
if ( FLA_Check_error_level() == FLA_FULL_ERROR_CHECKING )
FLA_Scal_elemwise_check( trans, A, B );
if ( FLA_Obj_has_zero_dim( A ) ) return FLA_SUCCESS;
datatype = FLA_Obj_datatype( A );
rs_A = FLA_Obj_row_stride( A );
cs_A = FLA_Obj_col_stride( A );
m_B = FLA_Obj_length( B );
n_B = FLA_Obj_width( B );
rs_B = FLA_Obj_row_stride( B );
cs_B = FLA_Obj_col_stride( B );
FLA_Param_map_flame_to_blis_trans( trans, &blis_trans );
switch ( datatype ){
case FLA_FLOAT:
{
float *buff_A = ( float * ) FLA_FLOAT_PTR( A );
float *buff_B = ( float * ) FLA_FLOAT_PTR( B );
bli_sewscalmt( blis_trans,
m_B,
n_B,
buff_A, rs_A, cs_A,
buff_B, rs_B, cs_B );
break;
}
case FLA_DOUBLE:
{
double *buff_A = ( double * ) FLA_DOUBLE_PTR( A );
double *buff_B = ( double * ) FLA_DOUBLE_PTR( B );
bli_dewscalmt( blis_trans,
m_B,
n_B,
buff_A, rs_A, cs_A,
buff_B, rs_B, cs_B );
break;
}
case FLA_COMPLEX:
{
scomplex *buff_A = ( scomplex * ) FLA_COMPLEX_PTR( A );
scomplex *buff_B = ( scomplex * ) FLA_COMPLEX_PTR( B );
bli_cewscalmt( blis_trans,
m_B,
n_B,
buff_A, rs_A, cs_A,
buff_B, rs_B, cs_B );
break;
}
case FLA_DOUBLE_COMPLEX:
{
dcomplex *buff_A = ( dcomplex * ) FLA_DOUBLE_COMPLEX_PTR( A );
dcomplex *buff_B = ( dcomplex * ) FLA_DOUBLE_COMPLEX_PTR( B );
bli_zewscalmt( blis_trans,
m_B,
n_B,
buff_A, rs_A, cs_A,
buff_B, rs_B, cs_B );
break;
}
}
return FLA_SUCCESS;
}
References FLA_Check_conformal_dims(), FLA_Check_floating_object(), FLA_Check_identical_object_datatype(), FLA_Check_nonconstant_object(), and FLA_Check_valid_trans().
Referenced by FLA_Scal_elemwise().
{
FLA_Error e_val;
e_val = FLA_Check_valid_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_identical_object_datatype( A, B );
FLA_Check_error_code( e_val );
e_val = FLA_Check_conformal_dims( trans, A, B );
FLA_Check_error_code( e_val );
return FLA_SUCCESS;
}
| FLA_Error FLA_Shift_pivots_to_check | ( | FLA_Pivot_type | ptype, |
| FLA_Obj | p | ||
| ) |
{
FLA_Error e_val;
e_val = FLA_Check_valid_pivot_type( ptype );
FLA_Check_error_code( e_val );
e_val = FLA_Check_int_object( p );
FLA_Check_error_code( e_val );
e_val = FLA_Check_nonconstant_object( p );
FLA_Check_error_code( e_val );
e_val = FLA_Check_col_vector( p );
FLA_Check_error_code( e_val );
return FLA_SUCCESS;
}
References FLA_Check_error_level(), FLA_Obj_datatype(), FLA_Sqrt_check(), dcomplex::real, and scomplex::real.
Referenced by FLA_Chol_l_unb_var1(), FLA_Chol_l_unb_var2(), FLA_Chol_l_unb_var3(), FLA_Chol_u_unb_var1(), FLA_Chol_u_unb_var2(), and FLA_Chol_u_unb_var3().
{
FLA_Datatype datatype;
int r_val = FLA_SUCCESS;
if ( FLA_Check_error_level() >= FLA_MIN_ERROR_CHECKING )
FLA_Sqrt_check( alpha );
datatype = FLA_Obj_datatype( alpha );
switch ( datatype ){
case FLA_FLOAT:
{
float *buff_alpha = ( float * ) FLA_FLOAT_PTR( alpha );
if ( *buff_alpha < 0.0F )
r_val = FLA_FAILURE;
else
*buff_alpha = ( float ) sqrt( *buff_alpha );
break;
}
case FLA_DOUBLE:
{
double *buff_alpha = ( double * ) FLA_DOUBLE_PTR( alpha );
if ( *buff_alpha < 0.0 )
r_val = FLA_FAILURE;
else
*buff_alpha = ( double ) sqrt( *buff_alpha );
break;
}
case FLA_COMPLEX:
{
scomplex *buff_alpha = ( scomplex * ) FLA_COMPLEX_PTR( alpha );
if ( buff_alpha->real < 0.0F )
r_val = FLA_FAILURE;
else
buff_alpha->real = ( float ) sqrt( buff_alpha->real );
break;
}
case FLA_DOUBLE_COMPLEX:
{
dcomplex *buff_alpha = ( dcomplex * ) FLA_DOUBLE_COMPLEX_PTR( alpha );
if ( buff_alpha->real < 0.0 )
r_val = FLA_FAILURE;
else
buff_alpha->real = ( double ) sqrt( buff_alpha->real );
break;
}
}
return r_val;
}
References FLA_Check_floating_object(), FLA_Check_if_scalar(), and FLA_Check_nonconstant_object().
Referenced by FLA_Sqrt().
{
FLA_Error e_val;
e_val = FLA_Check_floating_object( alpha );
FLA_Check_error_code( e_val );
e_val = FLA_Check_nonconstant_object( alpha );
FLA_Check_error_code( e_val );
e_val = FLA_Check_if_scalar( alpha );
FLA_Check_error_code( e_val );
return FLA_SUCCESS;
}
| FLA_Error FLA_Swap_t_blk_var1 | ( | FLA_Obj | A, |
| FLA_Obj | B, | ||
| fla_swap_t * | cntl | ||
| ) |
References FLA_Cont_with_1x3_to_1x2(), FLA_Cont_with_3x1_to_2x1(), FLA_Determine_blocksize(), FLA_Obj_width(), FLA_Part_1x2(), FLA_Part_2x1(), FLA_Repart_1x2_to_1x3(), FLA_Repart_2x1_to_3x1(), and FLA_Swapt_external().
Referenced by FLA_Transpose_blk_var1().
{
FLA_Obj AL, AR, A0, A1, A2;
FLA_Obj BT, B0,
BB, B1,
B2;
dim_t b;
FLA_Part_1x2( A, &AL, &AR, 0, FLA_LEFT );
FLA_Part_2x1( B, &BT,
&BB, 0, FLA_TOP );
while ( FLA_Obj_width( AL ) < FLA_Obj_width( A ) ){
b = FLA_Determine_blocksize( AR, FLA_RIGHT, FLA_Cntl_blocksize( cntl ) );
FLA_Repart_1x2_to_1x3( AL, /**/ AR, &A0, /**/ &A1, &A2,
b, FLA_RIGHT );
FLA_Repart_2x1_to_3x1( BT, &B0,
/* ** */ /* ** */
&B1,
BB, &B2, b, FLA_BOTTOM );
/*------------------------------------------------------------*/
FLA_Swapt_external( FLA_TRANSPOSE, A1, B1 );
/*------------------------------------------------------------*/
FLA_Cont_with_1x3_to_1x2( &AL, /**/ &AR, A0, A1, /**/ A2,
FLA_LEFT );
FLA_Cont_with_3x1_to_2x1( &BT, B0,
B1,
/* ** */ /* ** */
&BB, B2, FLA_TOP );
}
return FLA_SUCCESS;
}
| FLA_Error FLA_Swap_t_blk_var2 | ( | FLA_Obj | A, |
| FLA_Obj | B, | ||
| fla_swap_t * | cntl | ||
| ) |
References FLA_Cont_with_1x3_to_1x2(), FLA_Cont_with_3x1_to_2x1(), FLA_Determine_blocksize(), FLA_Obj_length(), FLA_Part_1x2(), FLA_Part_2x1(), FLA_Repart_1x2_to_1x3(), FLA_Repart_2x1_to_3x1(), and FLA_Swapt_external().
Referenced by FLA_Transpose_blk_var2().
{
FLA_Obj AT, A0,
AB, A1,
A2;
FLA_Obj BL, BR, B0, B1, B2;
dim_t b;
FLA_Part_2x1( A, &AT,
&AB, 0, FLA_TOP );
FLA_Part_1x2( B, &BL, &BR, 0, FLA_LEFT );
while ( FLA_Obj_length( AT ) < FLA_Obj_length( A ) ){
b = FLA_Determine_blocksize( AB, FLA_BOTTOM, FLA_Cntl_blocksize( cntl ) );
FLA_Repart_2x1_to_3x1( AT, &A0,
/* ** */ /* ** */
&A1,
AB, &A2, b, FLA_BOTTOM );
FLA_Repart_1x2_to_1x3( BL, /**/ BR, &B0, /**/ &B1, &B2,
b, FLA_RIGHT );
/*------------------------------------------------------------*/
FLA_Swapt_external( FLA_TRANSPOSE, A1, B1 );
/*------------------------------------------------------------*/
FLA_Cont_with_3x1_to_2x1( &AT, A0,
A1,
/* ** */ /* ** */
&AB, A2, FLA_TOP );
FLA_Cont_with_1x3_to_1x2( &BL, /**/ &BR, B0, B1, /**/ B2,
FLA_LEFT );
}
return FLA_SUCCESS;
}
References bli_csymmize(), bli_dsymmize(), bli_ssymmize(), bli_zsymmize(), FLA_Check_error_level(), FLA_Obj_col_stride(), FLA_Obj_datatype(), FLA_Obj_row_stride(), FLA_Obj_width(), FLA_Param_map_flame_to_blis_conj(), FLA_Param_map_flame_to_blis_uplo(), and FLA_Symmetrize_check().
Referenced by FLA_Random_symm_matrix().
{
FLA_Datatype datatype;
dim_t n_A;
dim_t rs_A, cs_A;
char blis_conj;
char blis_uplo;
if ( FLA_Check_error_level() >= FLA_MIN_ERROR_CHECKING )
FLA_Symmetrize_check( uplo, A );
datatype = FLA_Obj_datatype( A );
n_A = FLA_Obj_width( A );
rs_A = FLA_Obj_row_stride( A );
cs_A = FLA_Obj_col_stride( A );
FLA_Param_map_flame_to_blis_conj( FLA_NO_CONJUGATE, &blis_conj );
FLA_Param_map_flame_to_blis_uplo( uplo, &blis_uplo );
switch ( datatype ){
case FLA_FLOAT:
{
float *buff_A = ( float * ) FLA_FLOAT_PTR( A );
bli_ssymmize( blis_conj,
blis_uplo,
n_A,
buff_A, rs_A, cs_A );
break;
}
case FLA_DOUBLE:
{
double *buff_A = ( double * ) FLA_DOUBLE_PTR( A );
bli_dsymmize( blis_conj,
blis_uplo,
n_A,
buff_A, rs_A, cs_A );
break;
}
case FLA_COMPLEX:
{
scomplex *buff_A = ( scomplex * ) FLA_COMPLEX_PTR( A );
bli_csymmize( blis_conj,
blis_uplo,
n_A,
buff_A, rs_A, cs_A );
break;
}
case FLA_DOUBLE_COMPLEX:
{
dcomplex *buff_A = ( dcomplex * ) FLA_DOUBLE_COMPLEX_PTR( A );
bli_zsymmize( blis_conj,
blis_uplo,
n_A,
buff_A, rs_A, cs_A );
break;
}
}
return FLA_SUCCESS;
}
References FLA_Check_floating_object(), FLA_Check_nonconstant_object(), FLA_Check_square(), and FLA_Check_valid_uplo().
Referenced by FLA_Symmetrize().
{
FLA_Error e_val;
e_val = FLA_Check_valid_uplo( uplo );
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_square( A );
FLA_Check_error_code( e_val );
return FLA_SUCCESS;
}
References FLA_Check_error_level(), FLA_Transpose_blk_var2(), and FLA_Transpose_check().
{
FLA_Error r_val;
if ( FLA_Check_error_level() >= FLA_MIN_ERROR_CHECKING )
FLA_Transpose_check( A );
r_val = FLA_Transpose_blk_var2( A, fla_tpose_cntl );
return r_val;
}
| FLA_Error FLA_Transpose_blk_var1 | ( | FLA_Obj | A, |
| fla_tpose_t * | cntl | ||
| ) |
References FLA_Cont_with_3x3_to_2x2(), FLA_Determine_blocksize(), FLA_Obj_length(), FLA_Part_2x2(), FLA_Repart_2x2_to_3x3(), FLA_Swap_t_blk_var1(), and FLA_Transpose_unb_var1().
{
FLA_Obj ATL, ATR, A00, A01, A02,
ABL, ABR, A10, A11, A12,
A20, A21, A22;
dim_t b;
FLA_Part_2x2( A, &ATL, &ATR,
&ABL, &ABR, 0, 0, FLA_TL );
while ( FLA_Obj_length( ATL ) < FLA_Obj_length( A ) ){
b = FLA_Determine_blocksize( ABR, FLA_BR, FLA_Cntl_blocksize( cntl ) );
FLA_Repart_2x2_to_3x3( ATL, /**/ ATR, &A00, /**/ &A01, &A02,
/* ************* */ /* ******************** */
&A10, /**/ &A11, &A12,
ABL, /**/ ABR, &A20, /**/ &A21, &A22,
b, b, FLA_BR );
/*------------------------------------------------------------*/
FLA_Transpose_unb_var1( A11 );
FLA_Swap_t_blk_var1( A10, A01,
FLA_Cntl_sub_swap( cntl ) );
/*------------------------------------------------------------*/
FLA_Cont_with_3x3_to_2x2( &ATL, /**/ &ATR, A00, A01, /**/ A02,
A10, A11, /**/ A12,
/* ************** */ /* ****************** */
&ABL, /**/ &ABR, A20, A21, /**/ A22,
FLA_TL );
}
return FLA_SUCCESS;
}
| FLA_Error FLA_Transpose_blk_var2 | ( | FLA_Obj | A, |
| fla_tpose_t * | cntl | ||
| ) |
References FLA_Cont_with_3x3_to_2x2(), FLA_Determine_blocksize(), FLA_Obj_length(), FLA_Part_2x2(), FLA_Repart_2x2_to_3x3(), FLA_Swap_t_blk_var2(), and FLA_Transpose_unb_var2().
Referenced by FLA_Transpose().
{
FLA_Obj ATL, ATR, A00, A01, A02,
ABL, ABR, A10, A11, A12,
A20, A21, A22;
dim_t b;
FLA_Part_2x2( A, &ATL, &ATR,
&ABL, &ABR, 0, 0, FLA_TL );
while ( FLA_Obj_length( ATL ) < FLA_Obj_length( A ) ){
b = FLA_Determine_blocksize( ABR, FLA_BR, FLA_Cntl_blocksize( cntl ) );
FLA_Repart_2x2_to_3x3( ATL, /**/ ATR, &A00, /**/ &A01, &A02,
/* ************* */ /* ******************** */
&A10, /**/ &A11, &A12,
ABL, /**/ ABR, &A20, /**/ &A21, &A22,
b, b, FLA_BR );
/*------------------------------------------------------------*/
FLA_Transpose_unb_var2( A11 );
FLA_Swap_t_blk_var2( A21, A12,
FLA_Cntl_sub_swap( cntl ) );
/*------------------------------------------------------------*/
FLA_Cont_with_3x3_to_2x2( &ATL, /**/ &ATR, A00, A01, /**/ A02,
A10, A11, /**/ A12,
/* ************** */ /* ****************** */
&ABL, /**/ &ABR, A20, A21, /**/ A22,
FLA_TL );
}
return FLA_SUCCESS;
}
References FLA_Check_floating_object(), FLA_Check_nonconstant_object(), and FLA_Check_square().
Referenced by FLA_Transpose().
{
FLA_Error 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_square( A );
FLA_Check_error_code( e_val );
return FLA_SUCCESS;
}
References FLA_Cont_with_3x3_to_2x2(), FLA_Obj_length(), FLA_Part_2x2(), FLA_Repart_2x2_to_3x3(), and FLA_Swapt_external().
Referenced by FLA_Transpose_blk_var1().
{
FLA_Obj ATL, ATR, A00, a01, A02,
ABL, ABR, a10t, alpha11, a12t,
A20, a21, A22;
FLA_Part_2x2( A, &ATL, &ATR,
&ABL, &ABR, 0, 0, FLA_TL );
while ( FLA_Obj_length( ATL ) < FLA_Obj_length( A ) ){
FLA_Repart_2x2_to_3x3( ATL, /**/ ATR, &A00, /**/ &a01, &A02,
/* ************* */ /* ************************** */
&a10t, /**/ &alpha11, &a12t,
ABL, /**/ ABR, &A20, /**/ &a21, &A22,
1, 1, FLA_BR );
/*------------------------------------------------------------*/
FLA_Swapt_external( FLA_TRANSPOSE, a10t, a01 );
/*------------------------------------------------------------*/
FLA_Cont_with_3x3_to_2x2( &ATL, /**/ &ATR, A00, a01, /**/ A02,
a10t, alpha11, /**/ a12t,
/* ************** */ /* ************************ */
&ABL, /**/ &ABR, A20, a21, /**/ A22,
FLA_TL );
}
return FLA_SUCCESS;
}
References FLA_Cont_with_3x3_to_2x2(), FLA_Obj_length(), FLA_Part_2x2(), FLA_Repart_2x2_to_3x3(), and FLA_Swapt_external().
Referenced by FLA_Transpose_blk_var2().
{
FLA_Obj ATL, ATR, A00, a01, A02,
ABL, ABR, a10t, alpha11, a12t,
A20, a21, A22;
FLA_Part_2x2( A, &ATL, &ATR,
&ABL, &ABR, 0, 0, FLA_TL );
while ( FLA_Obj_length( ATL ) < FLA_Obj_length( A ) ){
FLA_Repart_2x2_to_3x3( ATL, /**/ ATR, &A00, /**/ &a01, &A02,
/* ************* */ /* ************************** */
&a10t, /**/ &alpha11, &a12t,
ABL, /**/ ABR, &A20, /**/ &a21, &A22,
1, 1, FLA_BR );
/*------------------------------------------------------------*/
FLA_Swapt_external( FLA_TRANSPOSE, a21, a12t );
/*------------------------------------------------------------*/
FLA_Cont_with_3x3_to_2x2( &ATL, /**/ &ATR, A00, a01, /**/ A02,
a10t, alpha11, /**/ a12t,
/* ************** */ /* ************************ */
&ABL, /**/ &ABR, A20, a21, /**/ A22,
FLA_TL );
}
return FLA_SUCCESS;
}
References bli_csetdiag(), bli_csetmr(), bli_dsetdiag(), bli_dsetmr(), bli_ssetdiag(), bli_ssetmr(), bli_zsetdiag(), bli_zsetmr(), FLA_Check_error_level(), FLA_Obj_col_stride(), FLA_Obj_datatype(), FLA_Obj_length(), FLA_Obj_row_stride(), FLA_Obj_width(), FLA_ONE, FLA_Param_map_flame_to_blis_uplo(), FLA_Triangularize_check(), and FLA_ZERO.
Referenced by FLA_Bidiag_UT_u_blk_var4(), FLA_Bidiag_UT_u_blk_var5(), FLA_Hess_UT_blk_var1(), FLA_Hess_UT_blk_var2(), FLA_Hess_UT_blk_var3(), FLA_Hess_UT_blk_var4(), FLA_SA_LU_unb(), FLA_Tridiag_UT_l_blk_var3(), and FLASH_Triangularize().
{
FLA_Datatype datatype;
int m_A, n_A;
int rs_A, cs_A;
char blis_uplo;
if ( FLA_Check_error_level() >= FLA_MIN_ERROR_CHECKING )
FLA_Triangularize_check( uplo, diag, A );
datatype = FLA_Obj_datatype( A );
m_A = FLA_Obj_length( A );
n_A = FLA_Obj_width( A );
rs_A = FLA_Obj_row_stride( A );
cs_A = FLA_Obj_col_stride( A );
// We have to toggle the uplo parameter because we will use it to specify
// which triangle to zero out.
if ( uplo == FLA_LOWER_TRIANGULAR ) uplo = FLA_UPPER_TRIANGULAR;
else uplo = FLA_LOWER_TRIANGULAR;
FLA_Param_map_flame_to_blis_uplo( uplo, &blis_uplo );
switch ( datatype ){
case FLA_FLOAT:
{
float *buff_A = ( float * ) FLA_FLOAT_PTR( A );
float *buff_0 = ( float * ) FLA_FLOAT_PTR( FLA_ZERO );
float *buff_1 = ( float * ) FLA_FLOAT_PTR( FLA_ONE );
bli_ssetmr( blis_uplo,
m_A,
n_A,
buff_0,
buff_A, rs_A, cs_A );
if ( diag == FLA_UNIT_DIAG )
bli_ssetdiag( 0,
m_A,
n_A,
buff_1,
buff_A, rs_A, cs_A );
else if ( diag == FLA_ZERO_DIAG )
bli_ssetdiag( 0,
m_A,
n_A,
buff_0,
buff_A, rs_A, cs_A );
break;
}
case FLA_DOUBLE:
{
double *buff_A = ( double * ) FLA_DOUBLE_PTR( A );
double *buff_0 = ( double * ) FLA_DOUBLE_PTR( FLA_ZERO );
double *buff_1 = ( double * ) FLA_DOUBLE_PTR( FLA_ONE );
bli_dsetmr( blis_uplo,
m_A,
n_A,
buff_0,
buff_A, rs_A, cs_A );
if ( diag == FLA_UNIT_DIAG )
bli_dsetdiag( 0,
m_A,
n_A,
buff_1,
buff_A, rs_A, cs_A );
else if ( diag == FLA_ZERO_DIAG )
bli_dsetdiag( 0,
m_A,
n_A,
buff_0,
buff_A, rs_A, cs_A );
break;
}
case FLA_COMPLEX:
{
scomplex *buff_A = ( scomplex * ) FLA_COMPLEX_PTR( A );
scomplex *buff_0 = ( scomplex * ) FLA_COMPLEX_PTR( FLA_ZERO );
scomplex *buff_1 = ( scomplex * ) FLA_COMPLEX_PTR( FLA_ONE );
bli_csetmr( blis_uplo,
m_A,
n_A,
buff_0,
buff_A, rs_A, cs_A );
if ( diag == FLA_UNIT_DIAG )
bli_csetdiag( 0,
m_A,
n_A,
buff_1,
buff_A, rs_A, cs_A );
else if ( diag == FLA_ZERO_DIAG )
bli_csetdiag( 0,
m_A,
n_A,
buff_0,
buff_A, rs_A, cs_A );
break;
}
case FLA_DOUBLE_COMPLEX:
{
dcomplex *buff_A = ( dcomplex * ) FLA_DOUBLE_COMPLEX_PTR( A );
dcomplex *buff_0 = ( dcomplex * ) FLA_DOUBLE_COMPLEX_PTR( FLA_ZERO );
dcomplex *buff_1 = ( dcomplex * ) FLA_DOUBLE_COMPLEX_PTR( FLA_ONE );
bli_zsetmr( blis_uplo,
m_A,
n_A,
buff_0,
buff_A, rs_A, cs_A );
if ( diag == FLA_UNIT_DIAG )
bli_zsetdiag( 0,
m_A,
n_A,
buff_1,
buff_A, rs_A, cs_A );
else if ( diag == FLA_ZERO_DIAG )
bli_zsetdiag( 0,
m_A,
n_A,
buff_0,
buff_A, rs_A, cs_A );
break;
}
}
return FLA_SUCCESS;
}
References FLA_Check_floating_object(), FLA_Check_nonconstant_object(), FLA_Check_valid_diag(), and FLA_Check_valid_uplo().
Referenced by FLA_Triangularize().
{
FLA_Error e_val;
e_val = FLA_Check_valid_uplo( uplo );
FLA_Check_error_code( e_val );
e_val = FLA_Check_valid_diag( diag );
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 );
return FLA_SUCCESS;
}
1.7.4