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; }