|
libflame
revision_anchor
|
Functions | |
| FLA_Error | FLA_Bsvd_find_submatrix_ops (int mn_A, int ij_begin, float *buff_d, int inc_d, float *buff_e, int inc_e, int *ijTL, int *ijBR) |
| FLA_Error | FLA_Bsvd_find_submatrix_opd (int mn_A, int ij_begin, double *buff_d, int inc_d, double *buff_e, int inc_e, int *ijTL, int *ijBR) |
| FLA_Error FLA_Bsvd_find_submatrix_opd | ( | int | mn_A, |
| int | ij_begin, | ||
| double * | buff_d, | ||
| int | inc_d, | ||
| double * | buff_e, | ||
| int | inc_e, | ||
| int * | ijTL, | ||
| int * | ijBR | ||
| ) |
References bli_d0().
Referenced by FLA_Bsvd_v_opd_var1(), FLA_Bsvd_v_opd_var2(), FLA_Bsvd_v_opz_var1(), and FLA_Bsvd_v_opz_var2().
{
double rzero = bli_d0();
int ij_tl;
int ij_br;
// Search for the first non-zero superdiagonal element starting at
// the index specified by ij_begin.
for ( ij_tl = ij_begin; ij_tl < mn_A - 1; ++ij_tl )
{
double* e1 = buff_e + (ij_tl )*inc_e;
// If we find a non-zero element, record it and break out of this
// loop.
if ( *e1 != rzero )
{
#ifdef PRINTF
printf( "FLA_Bsvd_find_submatrix_opd: found non-zero superdiagonal element\n" );
printf( " e[%3d] = %22.19e\n", ij_tl, *e1 );
#endif
*ijTL = ij_tl;
break;
}
}
// If ij_tl was incremented all the way up to mn_A - 1, then we didn't
// find any non-zeros.
if ( ij_tl == mn_A - 1 )
{
#ifdef PRINTF
printf( "FLA_Bsvd_find_submatrix_opd: no submatrices found.\n" );
#endif
return FLA_FAILURE;
}
// If we've gotten this far, then a non-zero superdiagonal element was
// found. Now we must walk the remaining portion of the superdiagonal
// to find the first zero element, or if one is not found, we simply
// use the last element of the superdiagonal.
for ( ij_br = ij_tl; ij_br < mn_A - 1; ++ij_br )
{
double* e1 = buff_e + (ij_br )*inc_e;
// If we find a zero element, record it and break out of this
// loop.
if ( *e1 == rzero )
{
#ifdef PRINTF
printf( "FLA_Bsvd_find_submatrix_opd: found zero superdiagonal element\n" );
printf( " e[%3d] = %22.19e\n", ij_br, *e1 );
#endif
break;
}
}
// If a zero element was found, then ij_br should hold the index of
// that element. If a zero element was not found, then ij_br should
// hold mn_A - 1. Either way, we save the value and return success.
*ijBR = ij_br;
return FLA_SUCCESS;
}
| FLA_Error FLA_Bsvd_find_submatrix_ops | ( | int | mn_A, |
| int | ij_begin, | ||
| float * | buff_d, | ||
| int | inc_d, | ||
| float * | buff_e, | ||
| int | inc_e, | ||
| int * | ijTL, | ||
| int * | ijBR | ||
| ) |
{
FLA_Check_error_code( FLA_NOT_YET_IMPLEMENTED );
return FLA_SUCCESS;
}
1.7.6.1