|
libflame
12600
|
Functions | |
| FLA_Error | FLA_Sort_svd (FLA_Direct direct, FLA_Obj s, FLA_Obj U, FLA_Obj V) |
| FLA_Error | FLA_Sort_svd_f_ops (int m_U, int n_V, float *s, int inc_s, float *U, int rs_U, int cs_U, float *V, int rs_V, int cs_V) |
| FLA_Error | FLA_Sort_svd_b_ops (int m_U, int n_V, float *s, int inc_s, float *U, int rs_U, int cs_U, float *V, int rs_V, int cs_V) |
| FLA_Error | FLA_Sort_svd_f_opd (int m_U, int n_V, double *s, int inc_s, double *U, int rs_U, int cs_U, double *V, int rs_V, int cs_V) |
| FLA_Error | FLA_Sort_svd_b_opd (int m_U, int n_V, double *s, int inc_s, double *U, int rs_U, int cs_U, double *V, int rs_V, int cs_V) |
| FLA_Error | FLA_Sort_svd_f_opc (int m_U, int n_V, float *s, int inc_s, scomplex *U, int rs_U, int cs_U, scomplex *V, int rs_V, int cs_V) |
| FLA_Error | FLA_Sort_svd_b_opc (int m_U, int n_V, float *s, int inc_s, scomplex *U, int rs_U, int cs_U, scomplex *V, int rs_V, int cs_V) |
| FLA_Error | FLA_Sort_svd_f_opz (int m_U, int n_V, double *s, int inc_s, dcomplex *U, int rs_U, int cs_U, dcomplex *V, int rs_V, int cs_V) |
| FLA_Error | FLA_Sort_svd_b_opz (int m_U, int n_V, double *s, int inc_s, dcomplex *U, int rs_U, int cs_U, dcomplex *V, int rs_V, int cs_V) |
| FLA_Error FLA_Sort_svd | ( | FLA_Direct | direct, |
| FLA_Obj | s, | ||
| FLA_Obj | U, | ||
| FLA_Obj | V | ||
| ) |
References FLA_Check_error_level(), FLA_Obj_col_stride(), FLA_Obj_datatype(), FLA_Obj_length(), FLA_Obj_row_stride(), FLA_Obj_vector_inc(), FLA_Sort_svd_b_opc(), FLA_Sort_svd_b_opd(), FLA_Sort_svd_b_ops(), FLA_Sort_svd_b_opz(), FLA_Sort_svd_check(), FLA_Sort_svd_f_opc(), FLA_Sort_svd_f_opd(), FLA_Sort_svd_f_ops(), and FLA_Sort_svd_f_opz().
Referenced by FLA_Svd_uv_unb_var1(), and FLA_Svd_uv_unb_var2().
{
FLA_Datatype datatype;
dim_t m_U, n_V;
dim_t rs_U, cs_U;
dim_t rs_V, cs_V;
dim_t inc_s;
if ( FLA_Check_error_level() >= FLA_MIN_ERROR_CHECKING )
FLA_Sort_svd_check( direct, s, U, V );
datatype = FLA_Obj_datatype( U );
m_U = FLA_Obj_length( U );
n_V = FLA_Obj_length( V );
rs_U = FLA_Obj_row_stride( U );
cs_U = FLA_Obj_col_stride( U );
rs_V = FLA_Obj_row_stride( V );
cs_V = FLA_Obj_col_stride( V );
inc_s = FLA_Obj_vector_inc( s );
switch ( datatype )
{
case FLA_FLOAT:
{
float* s_p = ( float* ) FLA_FLOAT_PTR( s );
float* U_p = ( float* ) FLA_FLOAT_PTR( U );
float* V_p = ( float* ) FLA_FLOAT_PTR( V );
if ( direct == FLA_FORWARD )
FLA_Sort_svd_f_ops( m_U,
n_V,
s_p, inc_s,
U_p, rs_U, cs_U,
V_p, rs_V, cs_V );
else // if ( direct == FLA_BACKWARD )
FLA_Sort_svd_b_ops( m_U,
n_V,
s_p, inc_s,
U_p, rs_U, cs_U,
V_p, rs_V, cs_V );
break;
}
case FLA_DOUBLE:
{
double* s_p = ( double* ) FLA_DOUBLE_PTR( s );
double* U_p = ( double* ) FLA_DOUBLE_PTR( U );
double* V_p = ( double* ) FLA_DOUBLE_PTR( V );
if ( direct == FLA_FORWARD )
FLA_Sort_svd_f_opd( m_U,
n_V,
s_p, inc_s,
U_p, rs_U, cs_U,
V_p, rs_V, cs_V );
else // if ( direct == FLA_BACKWARD )
FLA_Sort_svd_b_opd( m_U,
n_V,
s_p, inc_s,
U_p, rs_U, cs_U,
V_p, rs_V, cs_V );
break;
}
case FLA_COMPLEX:
{
float* s_p = ( float* ) FLA_FLOAT_PTR( s );
scomplex* U_p = ( scomplex* ) FLA_COMPLEX_PTR( U );
scomplex* V_p = ( scomplex* ) FLA_COMPLEX_PTR( V );
if ( direct == FLA_FORWARD )
FLA_Sort_svd_f_opc( m_U,
n_V,
s_p, inc_s,
U_p, rs_U, cs_U,
V_p, rs_V, cs_V );
else // if ( direct == FLA_BACKWARD )
FLA_Sort_svd_b_opc( m_U,
n_V,
s_p, inc_s,
U_p, rs_U, cs_U,
V_p, rs_V, cs_V );
break;
}
case FLA_DOUBLE_COMPLEX:
{
double* s_p = ( double* ) FLA_DOUBLE_PTR( s );
dcomplex* U_p = ( dcomplex* ) FLA_DOUBLE_COMPLEX_PTR( U );
dcomplex* V_p = ( dcomplex* ) FLA_DOUBLE_COMPLEX_PTR( V );
if ( direct == FLA_FORWARD )
FLA_Sort_svd_f_opz( m_U,
n_V,
s_p, inc_s,
U_p, rs_U, cs_U,
V_p, rs_V, cs_V );
else // if ( direct == FLA_BACKWARD )
FLA_Sort_svd_b_opz( m_U,
n_V,
s_p, inc_s,
U_p, rs_U, cs_U,
V_p, rs_V, cs_V );
break;
}
}
return FLA_SUCCESS;
}
| FLA_Error FLA_Sort_svd_b_opc | ( | int | m_U, |
| int | n_V, | ||
| float * | s, | ||
| int | inc_s, | ||
| scomplex * | U, | ||
| int | rs_U, | ||
| int | cs_U, | ||
| scomplex * | V, | ||
| int | rs_V, | ||
| int | cs_V | ||
| ) |
Referenced by FLA_Sort_svd().
{
return FLA_SUCCESS;
}
| FLA_Error FLA_Sort_svd_b_opd | ( | int | m_U, |
| int | n_V, | ||
| double * | s, | ||
| int | inc_s, | ||
| double * | U, | ||
| int | rs_U, | ||
| int | cs_U, | ||
| double * | V, | ||
| int | rs_V, | ||
| int | cs_V | ||
| ) |
References bl1_dswapv().
Referenced by FLA_Sort_svd().
{
int min_m_n = min( m_U, n_V );
int i, ii, j, k;
double p;
for ( ii = 1; ii < min_m_n; ++ii )
{
i = ii - 1;
k = i;
p = s[ i*inc_s ];
for ( j = ii; j < min_m_n; ++j )
{
if ( s[ j*inc_s ] > p )
{
k = j;
p = s[ j*inc_s ];
}
}
if ( k != i )
{
s[ k*inc_s ] = s[ i ];
s[ i ] = p;
bl1_dswapv( m_U,
U + i*cs_U, rs_U,
U + k*cs_U, rs_U );
bl1_dswapv( n_V,
V + i*cs_V, rs_V,
V + k*cs_V, rs_V );
}
}
return FLA_SUCCESS;
}
| FLA_Error FLA_Sort_svd_b_ops | ( | int | m_U, |
| int | n_V, | ||
| float * | s, | ||
| int | inc_s, | ||
| float * | U, | ||
| int | rs_U, | ||
| int | cs_U, | ||
| float * | V, | ||
| int | rs_V, | ||
| int | cs_V | ||
| ) |
Referenced by FLA_Sort_svd().
{
return FLA_SUCCESS;
}
| FLA_Error FLA_Sort_svd_b_opz | ( | int | m_U, |
| int | n_V, | ||
| double * | s, | ||
| int | inc_s, | ||
| dcomplex * | U, | ||
| int | rs_U, | ||
| int | cs_U, | ||
| dcomplex * | V, | ||
| int | rs_V, | ||
| int | cs_V | ||
| ) |
References bl1_zswapv().
Referenced by FLA_Sort_svd().
{
int min_m_n = min( m_U, n_V );
int i, ii, j, k;
double p;
for ( ii = 1; ii < min_m_n; ++ii )
{
i = ii - 1;
k = i;
p = s[ i*inc_s ];
for ( j = ii; j < min_m_n; ++j )
{
if ( s[ j*inc_s ] > p )
{
k = j;
p = s[ j*inc_s ];
}
}
if ( k != i )
{
s[ k*inc_s ] = s[ i ];
s[ i ] = p;
bl1_zswapv( m_U,
U + i*cs_U, rs_U,
U + k*cs_U, rs_U );
bl1_zswapv( n_V,
V + i*cs_V, rs_V,
V + k*cs_V, rs_V );
}
}
return FLA_SUCCESS;
}
| FLA_Error FLA_Sort_svd_f_opc | ( | int | m_U, |
| int | n_V, | ||
| float * | s, | ||
| int | inc_s, | ||
| scomplex * | U, | ||
| int | rs_U, | ||
| int | cs_U, | ||
| scomplex * | V, | ||
| int | rs_V, | ||
| int | cs_V | ||
| ) |
Referenced by FLA_Sort_svd().
{
return FLA_SUCCESS;
}
| FLA_Error FLA_Sort_svd_f_opd | ( | int | m_U, |
| int | n_V, | ||
| double * | s, | ||
| int | inc_s, | ||
| double * | U, | ||
| int | rs_U, | ||
| int | cs_U, | ||
| double * | V, | ||
| int | rs_V, | ||
| int | cs_V | ||
| ) |
References bl1_dswapv().
Referenced by FLA_Sort_svd().
{
int min_m_n = min( m_U, n_V );
int i, ii, j, k;
double p;
for ( ii = 1; ii < min_m_n; ++ii )
{
i = ii - 1;
k = i;
p = s[ i*inc_s ];
for ( j = ii; j < min_m_n; ++j )
{
if ( s[ j*inc_s ] < p )
{
k = j;
p = s[ j*inc_s ];
}
}
if ( k != i )
{
s[ k*inc_s ] = s[ i ];
s[ i ] = p;
bl1_dswapv( m_U,
U + i*cs_U, rs_U,
U + k*cs_U, rs_U );
bl1_dswapv( n_V,
V + i*cs_V, rs_V,
V + k*cs_V, rs_V );
}
}
return FLA_SUCCESS;
}
| FLA_Error FLA_Sort_svd_f_ops | ( | int | m_U, |
| int | n_V, | ||
| float * | s, | ||
| int | inc_s, | ||
| float * | U, | ||
| int | rs_U, | ||
| int | cs_U, | ||
| float * | V, | ||
| int | rs_V, | ||
| int | cs_V | ||
| ) |
Referenced by FLA_Sort_svd().
{
return FLA_SUCCESS;
}
| FLA_Error FLA_Sort_svd_f_opz | ( | int | m_U, |
| int | n_V, | ||
| double * | s, | ||
| int | inc_s, | ||
| dcomplex * | U, | ||
| int | rs_U, | ||
| int | cs_U, | ||
| dcomplex * | V, | ||
| int | rs_V, | ||
| int | cs_V | ||
| ) |
References bl1_zswapv().
Referenced by FLA_Sort_svd().
{
int min_m_n = min( m_U, n_V );
int i, ii, j, k;
double p;
for ( ii = 1; ii < min_m_n; ++ii )
{
i = ii - 1;
k = i;
p = s[ i*inc_s ];
for ( j = ii; j < min_m_n; ++j )
{
if ( s[ j*inc_s ] < p )
{
k = j;
p = s[ j*inc_s ];
}
}
if ( k != i )
{
s[ k*inc_s ] = s[ i ];
s[ i ] = p;
bl1_zswapv( m_U,
U + i*cs_U, rs_U,
U + k*cs_U, rs_U );
bl1_zswapv( n_V,
V + i*cs_V, rs_V,
V + k*cs_V, rs_V );
}
}
return FLA_SUCCESS;
}
1.7.6.1