|
libflame
revision_anchor
|
Functions | |
| FLA_Error | FLA_CAQR2_UT_opt_var1 (FLA_Obj U, FLA_Obj D, FLA_Obj T) |
| FLA_Error | FLA_CAQR2_UT_ops_var1 (int mn_UT, int m_D, float *buff_U, int rs_U, int cs_U, float *buff_D, int rs_D, int cs_D, float *buff_T, int rs_T, int cs_T) |
| FLA_Error | FLA_CAQR2_UT_opd_var1 (int mn_UT, int m_D, double *buff_U, int rs_U, int cs_U, double *buff_D, int rs_D, int cs_D, double *buff_T, int rs_T, int cs_T) |
| FLA_Error | FLA_CAQR2_UT_opc_var1 (int mn_UT, int m_D, scomplex *buff_U, int rs_U, int cs_U, scomplex *buff_D, int rs_D, int cs_D, scomplex *buff_T, int rs_T, int cs_T) |
| FLA_Error | FLA_CAQR2_UT_opz_var1 (int mn_UT, int m_D, dcomplex *buff_U, int rs_U, int cs_U, dcomplex *buff_D, int rs_D, int cs_D, dcomplex *buff_T, int rs_T, int cs_T) |
| FLA_Error FLA_CAQR2_UT_opc_var1 | ( | int | mn_UT, |
| int | m_D, | ||
| scomplex * | buff_U, | ||
| int | rs_U, | ||
| int | cs_U, | ||
| scomplex * | buff_D, | ||
| int | rs_D, | ||
| int | cs_D, | ||
| scomplex * | buff_T, | ||
| int | rs_T, | ||
| int | cs_T | ||
| ) |
References bli_ccopyv(), bli_cgemv(), bli_ctrmv(), BLIS_CONJ_TRANSPOSE, BLIS_NO_CONJUGATE, BLIS_NONUNIT_DIAG, BLIS_UPPER_TRIANGULAR, FLA_Apply_H2_UT_l_opc_var1(), FLA_Househ2_UT_l_opc(), and FLA_ONE.
Referenced by FLA_CAQR2_UT_opt_var1().
{
scomplex* buff_1 = FLA_COMPLEX_PTR( FLA_ONE );
int i, j;
int m_DT = m_D - mn_UT;
for ( i = m_DT, j = 0; j < mn_UT; ++i, ++j )
{
scomplex* upsilon11 = buff_U + (j )*cs_U + (j )*rs_U;
scomplex* u12t = buff_U + (j+1)*cs_U + (j )*rs_U;
scomplex* D00 = buff_D + (0 )*cs_D + (0 )*rs_D;
scomplex* d1 = buff_D + (j )*cs_D + (0 )*rs_D;
scomplex* D2 = buff_D + (j+1)*cs_D + (0 )*rs_D;
scomplex* tau11 = buff_T + (j )*cs_T + (j )*rs_T;
scomplex* t01 = buff_T + (j )*cs_T + (0 )*rs_T;
scomplex* d1B = d1 + (m_DT)*rs_D;
scomplex* D00B = D00 + (m_DT)*rs_D;
int m_behind = i;
int n_behind = j;
int mn_ahead = mn_UT - j - 1;
//------------------------------------------------------------//
// FLA_Househ2_UT( FLA_LEFT,
// upsilon11,
// d1, tau11 );
FLA_Househ2_UT_l_opc( m_behind + 1,
upsilon11,
d1, rs_D,
tau11 );
// FLA_Apply_H2_UT( FLA_LEFT, tau11, d1, u12t,
// D2 );
FLA_Apply_H2_UT_l_opc_var1( m_behind + 1,
mn_ahead,
tau11,
d1, rs_D,
u12t, cs_U,
D2, rs_D, cs_D );
// FLA_Copy_external( d01B, t01 );
// FLA_Trmv_external( FLA_UPPER_TRIANGULAR, FLA_CONJ_TRANSPOSE, FLA_NONUNIT_DIAG,
// D00B, t01 );
// FLA_Gemv_external( FLA_CONJ_TRANSPOSE, FLA_ONE, D00T, d01T, FLA_ONE, t01 );
bli_ccopyv( BLIS_NO_CONJUGATE,
n_behind,
d1B, rs_D,
t01, rs_T );
bli_ctrmv( BLIS_UPPER_TRIANGULAR,
BLIS_CONJ_TRANSPOSE,
BLIS_NONUNIT_DIAG,
n_behind,
D00B, rs_D, cs_D,
t01, rs_T );
bli_cgemv( BLIS_CONJ_TRANSPOSE,
BLIS_NO_CONJUGATE,
m_DT,
n_behind,
buff_1,
D00, rs_D, cs_D,
d1, rs_D,
buff_1,
t01, rs_T );
//------------------------------------------------------------//
}
return FLA_SUCCESS;
}
| FLA_Error FLA_CAQR2_UT_opd_var1 | ( | int | mn_UT, |
| int | m_D, | ||
| double * | buff_U, | ||
| int | rs_U, | ||
| int | cs_U, | ||
| double * | buff_D, | ||
| int | rs_D, | ||
| int | cs_D, | ||
| double * | buff_T, | ||
| int | rs_T, | ||
| int | cs_T | ||
| ) |
References bli_dcopyv(), bli_dgemv(), bli_dtrmv(), BLIS_CONJ_TRANSPOSE, BLIS_NO_CONJUGATE, BLIS_NONUNIT_DIAG, BLIS_UPPER_TRIANGULAR, FLA_Apply_H2_UT_l_opd_var1(), FLA_Househ2_UT_l_opd(), and FLA_ONE.
Referenced by FLA_CAQR2_UT_opt_var1().
{
double* buff_1 = FLA_DOUBLE_PTR( FLA_ONE );
int i, j;
int m_DT = m_D - mn_UT;
for ( i = m_DT, j = 0; j < mn_UT; ++i, ++j )
{
double* upsilon11 = buff_U + (j )*cs_U + (j )*rs_U;
double* u12t = buff_U + (j+1)*cs_U + (j )*rs_U;
double* D00 = buff_D + (0 )*cs_D + (0 )*rs_D;
double* d1 = buff_D + (j )*cs_D + (0 )*rs_D;
double* D2 = buff_D + (j+1)*cs_D + (0 )*rs_D;
double* tau11 = buff_T + (j )*cs_T + (j )*rs_T;
double* t01 = buff_T + (j )*cs_T + (0 )*rs_T;
double* d1B = d1 + (m_DT)*rs_D;
double* D00B = D00 + (m_DT)*rs_D;
int m_behind = i;
int n_behind = j;
int mn_ahead = mn_UT - j - 1;
//------------------------------------------------------------//
// FLA_Househ2_UT( FLA_LEFT,
// upsilon11,
// d1, tau11 );
FLA_Househ2_UT_l_opd( m_behind + 1,
upsilon11,
d1, rs_D,
tau11 );
// FLA_Apply_H2_UT( FLA_LEFT, tau11, d1, u12t,
// D2 );
FLA_Apply_H2_UT_l_opd_var1( m_behind + 1,
mn_ahead,
tau11,
d1, rs_D,
u12t, cs_U,
D2, rs_D, cs_D );
// FLA_Copy_external( d01B, t01 );
// FLA_Trmv_external( FLA_UPPER_TRIANGULAR, FLA_CONJ_TRANSPOSE, FLA_NONUNIT_DIAG,
// D00B, t01 );
// FLA_Gemv_external( FLA_CONJ_TRANSPOSE, FLA_ONE, D00T, d01T, FLA_ONE, t01 );
bli_dcopyv( BLIS_NO_CONJUGATE,
n_behind,
d1B, rs_D,
t01, rs_T );
bli_dtrmv( BLIS_UPPER_TRIANGULAR,
BLIS_CONJ_TRANSPOSE,
BLIS_NONUNIT_DIAG,
n_behind,
D00B, rs_D, cs_D,
t01, rs_T );
bli_dgemv( BLIS_CONJ_TRANSPOSE,
BLIS_NO_CONJUGATE,
m_DT,
n_behind,
buff_1,
D00, rs_D, cs_D,
d1, rs_D,
buff_1,
t01, rs_T );
//------------------------------------------------------------//
}
return FLA_SUCCESS;
}
| FLA_Error FLA_CAQR2_UT_ops_var1 | ( | int | mn_UT, |
| int | m_D, | ||
| float * | buff_U, | ||
| int | rs_U, | ||
| int | cs_U, | ||
| float * | buff_D, | ||
| int | rs_D, | ||
| int | cs_D, | ||
| float * | buff_T, | ||
| int | rs_T, | ||
| int | cs_T | ||
| ) |
References bli_scopyv(), bli_sgemv(), bli_strmv(), BLIS_CONJ_TRANSPOSE, BLIS_NO_CONJUGATE, BLIS_NONUNIT_DIAG, BLIS_UPPER_TRIANGULAR, FLA_Apply_H2_UT_l_ops_var1(), FLA_Househ2_UT_l_ops(), and FLA_ONE.
Referenced by FLA_CAQR2_UT_opt_var1().
{
float* buff_1 = FLA_FLOAT_PTR( FLA_ONE );
int i, j;
int m_DT = m_D - mn_UT;
for ( i = m_DT, j = 0; j < mn_UT; ++i, ++j )
{
float* upsilon11 = buff_U + (j )*cs_U + (j )*rs_U;
float* u12t = buff_U + (j+1)*cs_U + (j )*rs_U;
float* D00 = buff_D + (0 )*cs_D + (0 )*rs_D;
float* d1 = buff_D + (j )*cs_D + (0 )*rs_D;
float* D2 = buff_D + (j+1)*cs_D + (0 )*rs_D;
float* tau11 = buff_T + (j )*cs_T + (j )*rs_T;
float* t01 = buff_T + (j )*cs_T + (0 )*rs_T;
float* d1B = d1 + (m_DT)*rs_D;
float* D00B = D00 + (m_DT)*rs_D;
int m_behind = i;
int n_behind = j;
int mn_ahead = mn_UT - j - 1;
//------------------------------------------------------------//
// FLA_Househ2_UT( FLA_LEFT,
// upsilon11,
// d1, tau11 );
FLA_Househ2_UT_l_ops( m_behind + 1,
upsilon11,
d1, rs_D,
tau11 );
// FLA_Apply_H2_UT( FLA_LEFT, tau11, d1, u12t,
// D2 );
FLA_Apply_H2_UT_l_ops_var1( m_behind + 1,
mn_ahead,
tau11,
d1, rs_D,
u12t, cs_U,
D2, rs_D, cs_D );
// FLA_Copy_external( d01B, t01 );
// FLA_Trmv_external( FLA_UPPER_TRIANGULAR, FLA_CONJ_TRANSPOSE, FLA_NONUNIT_DIAG,
// D00B, t01 );
// FLA_Gemv_external( FLA_CONJ_TRANSPOSE, FLA_ONE, D00T, d01T, FLA_ONE, t01 );
bli_scopyv( BLIS_NO_CONJUGATE,
n_behind,
d1B, rs_D,
t01, rs_T );
bli_strmv( BLIS_UPPER_TRIANGULAR,
BLIS_CONJ_TRANSPOSE,
BLIS_NONUNIT_DIAG,
n_behind,
D00B, rs_D, cs_D,
t01, rs_T );
bli_sgemv( BLIS_CONJ_TRANSPOSE,
BLIS_NO_CONJUGATE,
m_DT,
n_behind,
buff_1,
D00, rs_D, cs_D,
d1, rs_D,
buff_1,
t01, rs_T );
//------------------------------------------------------------//
}
return FLA_SUCCESS;
}
| FLA_Error FLA_CAQR2_UT_opt_var1 | ( | FLA_Obj | U, |
| FLA_Obj | D, | ||
| FLA_Obj | T | ||
| ) |
References FLA_CAQR2_UT_opc_var1(), FLA_CAQR2_UT_opd_var1(), FLA_CAQR2_UT_ops_var1(), FLA_CAQR2_UT_opz_var1(), FLA_Obj_col_stride(), FLA_Obj_datatype(), FLA_Obj_length(), FLA_Obj_row_stride(), and FLA_Obj_width().
Referenced by FLA_CAQR2_UT_internal().
{
FLA_Datatype datatype;
int mn_UT, m_D;
int rs_U, cs_U;
int rs_D, cs_D;
int rs_T, cs_T;
datatype = FLA_Obj_datatype( U );
mn_UT = FLA_Obj_width( U );
m_D = FLA_Obj_length( D );
rs_U = FLA_Obj_row_stride( U );
cs_U = FLA_Obj_col_stride( U );
rs_D = FLA_Obj_row_stride( D );
cs_D = FLA_Obj_col_stride( D );
rs_T = FLA_Obj_row_stride( T );
cs_T = FLA_Obj_col_stride( T );
switch ( datatype )
{
case FLA_FLOAT:
{
float* buff_U = FLA_FLOAT_PTR( U );
float* buff_D = FLA_FLOAT_PTR( D );
float* buff_T = FLA_FLOAT_PTR( T );
FLA_CAQR2_UT_ops_var1( mn_UT,
m_D,
buff_U, rs_U, cs_U,
buff_D, rs_D, cs_D,
buff_T, rs_T, cs_T );
break;
}
case FLA_DOUBLE:
{
double* buff_U = FLA_DOUBLE_PTR( U );
double* buff_D = FLA_DOUBLE_PTR( D );
double* buff_T = FLA_DOUBLE_PTR( T );
FLA_CAQR2_UT_opd_var1( mn_UT,
m_D,
buff_U, rs_U, cs_U,
buff_D, rs_D, cs_D,
buff_T, rs_T, cs_T );
break;
}
case FLA_COMPLEX:
{
scomplex* buff_U = FLA_COMPLEX_PTR( U );
scomplex* buff_D = FLA_COMPLEX_PTR( D );
scomplex* buff_T = FLA_COMPLEX_PTR( T );
FLA_CAQR2_UT_opc_var1( mn_UT,
m_D,
buff_U, rs_U, cs_U,
buff_D, rs_D, cs_D,
buff_T, rs_T, cs_T );
break;
}
case FLA_DOUBLE_COMPLEX:
{
dcomplex* buff_U = FLA_DOUBLE_COMPLEX_PTR( U );
dcomplex* buff_D = FLA_DOUBLE_COMPLEX_PTR( D );
dcomplex* buff_T = FLA_DOUBLE_COMPLEX_PTR( T );
FLA_CAQR2_UT_opz_var1( mn_UT,
m_D,
buff_U, rs_U, cs_U,
buff_D, rs_D, cs_D,
buff_T, rs_T, cs_T );
break;
}
}
return FLA_SUCCESS;
}
| FLA_Error FLA_CAQR2_UT_opz_var1 | ( | int | mn_UT, |
| int | m_D, | ||
| dcomplex * | buff_U, | ||
| int | rs_U, | ||
| int | cs_U, | ||
| dcomplex * | buff_D, | ||
| int | rs_D, | ||
| int | cs_D, | ||
| dcomplex * | buff_T, | ||
| int | rs_T, | ||
| int | cs_T | ||
| ) |
References bli_zcopyv(), bli_zgemv(), bli_ztrmv(), BLIS_CONJ_TRANSPOSE, BLIS_NO_CONJUGATE, BLIS_NONUNIT_DIAG, BLIS_UPPER_TRIANGULAR, FLA_Apply_H2_UT_l_opz_var1(), FLA_Househ2_UT_l_opz(), and FLA_ONE.
Referenced by FLA_CAQR2_UT_opt_var1().
{
dcomplex* buff_1 = FLA_DOUBLE_COMPLEX_PTR( FLA_ONE );
int i, j;
int m_DT = m_D - mn_UT;
for ( i = m_DT, j = 0; j < mn_UT; ++i, ++j )
{
dcomplex* upsilon11 = buff_U + (j )*cs_U + (j )*rs_U;
dcomplex* u12t = buff_U + (j+1)*cs_U + (j )*rs_U;
dcomplex* D00 = buff_D + (0 )*cs_D + (0 )*rs_D;
dcomplex* d1 = buff_D + (j )*cs_D + (0 )*rs_D;
dcomplex* D2 = buff_D + (j+1)*cs_D + (0 )*rs_D;
dcomplex* tau11 = buff_T + (j )*cs_T + (j )*rs_T;
dcomplex* t01 = buff_T + (j )*cs_T + (0 )*rs_T;
dcomplex* d1B = d1 + (m_DT)*rs_D;
dcomplex* D00B = D00 + (m_DT)*rs_D;
int m_behind = i;
int n_behind = j;
int mn_ahead = mn_UT - j - 1;
//------------------------------------------------------------//
// FLA_Househ2_UT( FLA_LEFT,
// upsilon11,
// d1, tau11 );
FLA_Househ2_UT_l_opz( m_behind + 1,
upsilon11,
d1, rs_D,
tau11 );
// FLA_Apply_H2_UT( FLA_LEFT, tau11, d1, u12t,
// D2 );
FLA_Apply_H2_UT_l_opz_var1( m_behind + 1,
mn_ahead,
tau11,
d1, rs_D,
u12t, cs_U,
D2, rs_D, cs_D );
// FLA_Copy_external( d01B, t01 );
// FLA_Trmv_external( FLA_UPPER_TRIANGULAR, FLA_CONJ_TRANSPOSE, FLA_NONUNIT_DIAG,
// D00B, t01 );
// FLA_Gemv_external( FLA_CONJ_TRANSPOSE, FLA_ONE, D00T, d01T, FLA_ONE, t01 );
bli_zcopyv( BLIS_NO_CONJUGATE,
n_behind,
d1B, rs_D,
t01, rs_T );
bli_ztrmv( BLIS_UPPER_TRIANGULAR,
BLIS_CONJ_TRANSPOSE,
BLIS_NONUNIT_DIAG,
n_behind,
D00B, rs_D, cs_D,
t01, rs_T );
bli_zgemv( BLIS_CONJ_TRANSPOSE,
BLIS_NO_CONJUGATE,
m_DT,
n_behind,
buff_1,
D00, rs_D, cs_D,
d1, rs_D,
buff_1,
t01, rs_T );
//------------------------------------------------------------//
}
return FLA_SUCCESS;
}
1.7.6.1