libflame  revision_anchor
Functions
FLA_Bidiag_UT_scale_diagonals.c File Reference

(r)

Functions

FLA_Error FLA_Bidiag_UT_scale_diagonals (FLA_Obj alpha, FLA_Obj A)
FLA_Error FLA_Bidiag_UT_u_scale_diagonals (FLA_Obj alpha, FLA_Obj A)
FLA_Error FLA_Bidiag_UT_l_scale_diagonals (FLA_Obj alpha, FLA_Obj A)

Function Documentation

References FLA_Obj_col_stride(), FLA_Obj_datatype(), FLA_Obj_length(), and FLA_Obj_row_stride().

Referenced by FLA_Bidiag_UT_scale_diagonals(), and FLA_Tridiag_UT_scale_diagonals().

{
  FLA_Datatype datatype;
  int          m_A;
  int          rs_A, cs_A;
  int          i;

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

  switch ( datatype )
  {
    case FLA_FLOAT:
    {
      float*    buff_A     = FLA_FLOAT_PTR( A );
      float*    buff_alpha = FLA_FLOAT_PTR( alpha );
      for ( i = 0; i < m_A; ++i )
      {
        float*    alpha11  = buff_A + (i  )*cs_A + (i  )*rs_A;
        float*    a21_t    = buff_A + (i  )*cs_A + (i+1)*rs_A;
        int       m_ahead  = m_A - i - 1;

        bl1_sscals( buff_alpha, alpha11 );

        if ( m_ahead > 0 )
          bl1_sscals( buff_alpha, a21_t );
      }

      break;
    }

    case FLA_DOUBLE:
    {
      double*   buff_A     = FLA_DOUBLE_PTR( A );
      double*   buff_alpha = FLA_DOUBLE_PTR( alpha );
      for ( i = 0; i < m_A; ++i )
      {
        double*   alpha11  = buff_A + (i  )*cs_A + (i  )*rs_A;
        double*   a21_t    = buff_A + (i  )*cs_A + (i+1)*rs_A;
        int       m_ahead  = m_A - i - 1;

        bl1_dscals( buff_alpha, alpha11 );

        if ( m_ahead > 0 )
          bl1_dscals( buff_alpha, a21_t );
      }

      break;
    }

    case FLA_COMPLEX:
    {
      scomplex* buff_A     = FLA_COMPLEX_PTR( A );
      float*    buff_alpha = FLA_FLOAT_PTR( alpha );
      for ( i = 0; i < m_A; ++i )
      {
        scomplex* alpha11  = buff_A + (i  )*cs_A + (i  )*rs_A;
        scomplex* a21_t    = buff_A + (i  )*cs_A + (i+1)*rs_A;
        int       m_ahead  = m_A - i - 1;

        bl1_csscals( buff_alpha, alpha11 );

        if ( m_ahead > 0 )
          bl1_csscals( buff_alpha, a21_t );
      }

      break;
    }

    case FLA_DOUBLE_COMPLEX:
    {
      dcomplex* buff_A     = FLA_DOUBLE_COMPLEX_PTR( A );
      double*   buff_alpha = FLA_DOUBLE_PTR( alpha );
      for ( i = 0; i < m_A; ++i )
      {
        dcomplex* alpha11  = buff_A + (i  )*cs_A + (i  )*rs_A;
        dcomplex* a21_t    = buff_A + (i  )*cs_A + (i+1)*rs_A;
        int       m_ahead  = m_A - i - 1;

        bl1_zdscals( buff_alpha, alpha11 );

        if ( m_ahead > 0 )
          bl1_zdscals( buff_alpha, a21_t );
      }

      break;
    }
  }

  return FLA_SUCCESS;
}

References FLA_Obj_col_stride(), FLA_Obj_datatype(), FLA_Obj_row_stride(), and FLA_Obj_width().

Referenced by FLA_Bidiag_UT_scale_diagonals(), and FLA_Tridiag_UT_scale_diagonals().

{
  FLA_Datatype datatype;
  int          n_A;
  int          rs_A, cs_A;
  int          i;

  datatype = FLA_Obj_datatype( A );

  n_A      = FLA_Obj_width( A );

  rs_A     = FLA_Obj_row_stride( A );
  cs_A     = FLA_Obj_col_stride( A );

  switch ( datatype )
  {
    case FLA_FLOAT:
    {
      float*    buff_A     =  FLA_FLOAT_PTR( A );
      float*    buff_alpha =  FLA_FLOAT_PTR( alpha );
      for ( i = 0; i < n_A; ++i )
      {
        float*    alpha11  = buff_A + (i  )*cs_A + (i  )*rs_A;
        float*    a12t_l   = buff_A + (i+1)*cs_A + (i  )*rs_A;
        int       n_ahead  = n_A - i - 1;

        bl1_sscals( buff_alpha, alpha11 );

        if ( n_ahead > 0 )
          bl1_sscals( buff_alpha, a12t_l );
      }

      break;
    }

    case FLA_DOUBLE:
    {
      double*   buff_A     = FLA_DOUBLE_PTR( A );
      double*   buff_alpha = FLA_DOUBLE_PTR( alpha );
      for ( i = 0; i < n_A; ++i )
      {
        double*   alpha11  = buff_A + (i  )*cs_A + (i  )*rs_A;
        double*   a12t_l   = buff_A + (i+1)*cs_A + (i  )*rs_A;
        int       n_ahead  = n_A - i - 1;

        bl1_dscals( buff_alpha, alpha11 );

        if ( n_ahead > 0 )
          bl1_dscals( buff_alpha, a12t_l );
      }

      break;
    }

    case FLA_COMPLEX:
    {
      scomplex* buff_A     = FLA_COMPLEX_PTR( A );
      float*    buff_alpha = FLA_FLOAT_PTR( alpha );
      for ( i = 0; i < n_A; ++i )
      {
        scomplex* alpha11  = buff_A + (i  )*cs_A + (i  )*rs_A;
        scomplex* a12t_l   = buff_A + (i+1)*cs_A + (i  )*rs_A;
        int       n_ahead  = n_A - i - 1;

        bl1_csscals( buff_alpha, alpha11 );

        if ( n_ahead > 0 )
          bl1_csscals( buff_alpha, a12t_l );
      }

      break;
    }

    case FLA_DOUBLE_COMPLEX:
    {
      dcomplex* buff_A     = FLA_DOUBLE_COMPLEX_PTR( A );
      double*   buff_alpha = FLA_DOUBLE_PTR( alpha );
      for ( i = 0; i < n_A; ++i )
      {
        dcomplex* alpha11  = buff_A + (i  )*cs_A + (i  )*rs_A;
        dcomplex* a12t_l   = buff_A + (i+1)*cs_A + (i  )*rs_A;
        int       n_ahead  = n_A - i - 1;

        bl1_zdscals( buff_alpha, alpha11 );

        if ( n_ahead > 0 )
          bl1_zdscals( buff_alpha, a12t_l );
      }

      break;
    }
  }

  return FLA_SUCCESS;
}