|
libflame
revision_anchor
|
Functions | |
| FLA_Error | FLA_Tridiag_UT_shift_U (FLA_Uplo uplo, FLA_Obj A) |
| FLA_Error | FLA_Tridiag_UT_shift_U_l_ops (int m_A, float *buff_A, int rs_A, int cs_A) |
| FLA_Error | FLA_Tridiag_UT_shift_U_l_opd (int m_A, double *buff_A, int rs_A, int cs_A) |
| FLA_Error | FLA_Tridiag_UT_shift_U_l_opc (int m_A, scomplex *buff_A, int rs_A, int cs_A) |
| FLA_Error | FLA_Tridiag_UT_shift_U_l_opz (int m_A, dcomplex *buff_A, int rs_A, int cs_A) |
| FLA_Error FLA_Tridiag_UT_shift_U | ( | FLA_Uplo | uplo, |
| FLA_Obj | A | ||
| ) |
References FLA_Check_error_level(), FLA_Obj_col_stride(), FLA_Obj_datatype(), FLA_Obj_length(), FLA_Obj_row_stride(), FLA_Tridiag_UT_shift_U_check(), FLA_Tridiag_UT_shift_U_l_opc(), FLA_Tridiag_UT_shift_U_l_opd(), FLA_Tridiag_UT_shift_U_l_ops(), and FLA_Tridiag_UT_shift_U_l_opz().
Referenced by FLA_Tridiag_UT_form_Q().
{
FLA_Datatype datatype;
int m_A;
int rs_A, cs_A;
datatype = FLA_Obj_datatype( A );
m_A = FLA_Obj_length( A );
rs_A = FLA_Obj_row_stride( A );
cs_A = FLA_Obj_col_stride( A );
if ( FLA_Check_error_level() >= FLA_MIN_ERROR_CHECKING )
FLA_Tridiag_UT_shift_U_check( uplo, A );
switch ( datatype )
{
case FLA_FLOAT:
{
float* buff_A = ( float* ) FLA_FLOAT_PTR( A );
if ( uplo == FLA_LOWER_TRIANGULAR )
FLA_Tridiag_UT_shift_U_l_ops( m_A,
buff_A, rs_A, cs_A );
//else // if ( uplo == FLA_UPPER_TRIANGULAR )
// FLA_Tridiag_UT_shift_U_u_ops( m_A,
// buff_A, rs_A, cs_A );
break;
}
case FLA_DOUBLE:
{
double* buff_A = ( double* ) FLA_DOUBLE_PTR( A );
if ( uplo == FLA_LOWER_TRIANGULAR )
FLA_Tridiag_UT_shift_U_l_opd( m_A,
buff_A, rs_A, cs_A );
//else // if ( uplo == FLA_UPPER_TRIANGULAR )
// FLA_Tridiag_UT_shift_U_u_opd( m_A,
// buff_A, rs_A, cs_A );
break;
}
case FLA_COMPLEX:
{
scomplex* buff_A = ( scomplex* ) FLA_COMPLEX_PTR( A );
if ( uplo == FLA_LOWER_TRIANGULAR )
FLA_Tridiag_UT_shift_U_l_opc( m_A,
buff_A, rs_A, cs_A );
//else // if ( uplo == FLA_UPPER_TRIANGULAR )
// FLA_Tridiag_UT_shift_U_u_opc( m_A,
// buff_A, rs_A, cs_A );
break;
}
case FLA_DOUBLE_COMPLEX:
{
dcomplex* buff_A = ( dcomplex* ) FLA_DOUBLE_COMPLEX_PTR( A );
if ( uplo == FLA_LOWER_TRIANGULAR )
FLA_Tridiag_UT_shift_U_l_opz( m_A,
buff_A, rs_A, cs_A );
//else // if ( uplo == FLA_UPPER_TRIANGULAR )
// FLA_Tridiag_UT_shift_U_u_opz( m_A,
// buff_A, rs_A, cs_A );
break;
}
}
return FLA_SUCCESS;
}
| FLA_Error FLA_Tridiag_UT_shift_U_l_opc | ( | int | m_A, |
| scomplex * | buff_A, | ||
| int | rs_A, | ||
| int | cs_A | ||
| ) |
References bli_c0(), bli_c1(), bli_ccopyv(), bli_csetv(), and BLIS_NO_CONJUGATE.
Referenced by FLA_Tridiag_UT_shift_U().
{
scomplex* a00 = buff_A;
scomplex* a10 = buff_A + rs_A;
scomplex zero = bli_c0();
scomplex one = bli_c1();
int j;
for ( j = m_A - 1; j > 0; --j )
{
scomplex* alpha01 = buff_A + (j )*cs_A + (0 )*rs_A;
scomplex* alpha11 = buff_A + (j )*cs_A + (j )*rs_A;
scomplex* a20 = buff_A + (j-1)*cs_A + (j+1)*rs_A;
scomplex* a21 = buff_A + (j )*cs_A + (j+1)*rs_A;
int m_ahead = m_A - j - 1;
*alpha01 = zero;
*alpha11 = one;
bli_ccopyv( BLIS_NO_CONJUGATE,
m_ahead,
a20, rs_A,
a21, rs_A );
}
*a00 = one;
bli_csetv( m_A - 1,
&zero,
a10, rs_A );
return FLA_SUCCESS;
}
| FLA_Error FLA_Tridiag_UT_shift_U_l_opd | ( | int | m_A, |
| double * | buff_A, | ||
| int | rs_A, | ||
| int | cs_A | ||
| ) |
References bli_d0(), bli_d1(), bli_dcopyv(), bli_dsetv(), and BLIS_NO_CONJUGATE.
Referenced by FLA_Tridiag_UT_shift_U().
{
double* a00 = buff_A;
double* a10 = buff_A + rs_A;
double zero = bli_d0();
double one = bli_d1();
int j;
for ( j = m_A - 1; j > 0; --j )
{
double* alpha01 = buff_A + (j )*cs_A + (0 )*rs_A;
double* alpha11 = buff_A + (j )*cs_A + (j )*rs_A;
double* a20 = buff_A + (j-1)*cs_A + (j+1)*rs_A;
double* a21 = buff_A + (j )*cs_A + (j+1)*rs_A;
int m_ahead = m_A - j - 1;
*alpha01 = zero;
*alpha11 = one;
bli_dcopyv( BLIS_NO_CONJUGATE,
m_ahead,
a20, rs_A,
a21, rs_A );
}
*a00 = one;
bli_dsetv( m_A - 1,
&zero,
a10, rs_A );
return FLA_SUCCESS;
}
| FLA_Error FLA_Tridiag_UT_shift_U_l_ops | ( | int | m_A, |
| float * | buff_A, | ||
| int | rs_A, | ||
| int | cs_A | ||
| ) |
References bli_s0(), bli_s1(), bli_scopyv(), bli_ssetv(), and BLIS_NO_CONJUGATE.
Referenced by FLA_Tridiag_UT_shift_U().
{
float* a00 = buff_A;
float* a10 = buff_A + rs_A;
float zero = bli_s0();
float one = bli_s1();
int j;
for ( j = m_A - 1; j > 0; --j )
{
float* alpha01 = buff_A + (j )*cs_A + (0 )*rs_A;
float* alpha11 = buff_A + (j )*cs_A + (j )*rs_A;
float* a20 = buff_A + (j-1)*cs_A + (j+1)*rs_A;
float* a21 = buff_A + (j )*cs_A + (j+1)*rs_A;
int m_ahead = m_A - j - 1;
*alpha01 = zero;
*alpha11 = one;
bli_scopyv( BLIS_NO_CONJUGATE,
m_ahead,
a20, rs_A,
a21, rs_A );
}
*a00 = one;
bli_ssetv( m_A - 1,
&zero,
a10, rs_A );
return FLA_SUCCESS;
}
| FLA_Error FLA_Tridiag_UT_shift_U_l_opz | ( | int | m_A, |
| dcomplex * | buff_A, | ||
| int | rs_A, | ||
| int | cs_A | ||
| ) |
References bli_z0(), bli_z1(), bli_zcopyv(), bli_zsetv(), and BLIS_NO_CONJUGATE.
Referenced by FLA_Tridiag_UT_shift_U().
{
dcomplex* a00 = buff_A;
dcomplex* a10 = buff_A + rs_A;
dcomplex zero = bli_z0();
dcomplex one = bli_z1();
int j;
for ( j = m_A - 1; j > 0; --j )
{
dcomplex* alpha01 = buff_A + (j )*cs_A + (0 )*rs_A;
dcomplex* alpha11 = buff_A + (j )*cs_A + (j )*rs_A;
dcomplex* a20 = buff_A + (j-1)*cs_A + (j+1)*rs_A;
dcomplex* a21 = buff_A + (j )*cs_A + (j+1)*rs_A;
int m_ahead = m_A - j - 1;
*alpha01 = zero;
*alpha11 = one;
bli_zcopyv( BLIS_NO_CONJUGATE,
m_ahead,
a20, rs_A,
a21, rs_A );
}
*a00 = one;
bli_zsetv( m_A - 1,
&zero,
a10, rs_A );
return FLA_SUCCESS;
}
1.7.6.1