FLA_Conjugate_r.c File Reference

(r)


Functions

FLA_Error FLA_Conjugate_r (FLA_Uplo uplo, FLA_Obj A)
void FLA_F2C() fla_conjugate_r_f (F_INT *uplo, F_INT *A, F_INT *IERROR)

Function Documentation

FLA_Error FLA_Conjugate_r ( FLA_Uplo  uplo,
FLA_Obj  A 
)

References FLA_Check_error_level(), FLA_Conjugate_r_check(), FLA_MINUS_ONE, FLA_Obj_datatype(), FLA_Obj_is_real(), FLA_Obj_ldim(), FLA_Obj_length(), and FLA_Obj_width().

Referenced by fla_conjugate_r_f(), and FLA_Hermitianize().

00036 {
00037   FLA_Datatype datatype;
00038   int          i, j;
00039   int          m_A, n_A, ldim_A;
00040 
00041   if ( FLA_Check_error_level() >= FLA_MIN_ERROR_CHECKING )
00042     FLA_Conjugate_r_check( uplo, A );
00043 
00044   if ( FLA_Obj_is_real( A ) ) return FLA_SUCCESS;
00045 
00046   datatype = FLA_Obj_datatype( A );
00047 
00048   m_A      = FLA_Obj_length( A );
00049   n_A      = FLA_Obj_width( A );
00050   ldim_A   = FLA_Obj_ldim( A );
00051 
00052   switch ( datatype ){
00053 
00054   case FLA_COMPLEX:
00055   {
00056     scomplex *buff_A  = ( scomplex * ) FLA_COMPLEX_PTR( A );
00057     float    *buff_n1 = ( float    * ) FLA_FLOAT_PTR( FLA_MINUS_ONE );
00058 
00059     if ( uplo == FLA_LOWER_TRIANGULAR )
00060     {
00061       for ( j = 0; j < n_A; j++ )
00062       {
00063         for ( i = j; i < m_A; i++ )
00064           buff_A[ j*ldim_A + i ].imag *= *buff_n1;
00065       } 
00066     }
00067     else if ( uplo == FLA_UPPER_TRIANGULAR ) 
00068     {
00069       for ( j = 0; j < n_A; j++ )
00070       {
00071         for ( i = 0; i < j + 1; i++ )
00072           buff_A[ j*ldim_A + i ].imag *= *buff_n1;
00073       } 
00074     }
00075 
00076     break;
00077   }
00078 
00079   case FLA_DOUBLE_COMPLEX:
00080   {
00081     dcomplex *buff_A  = ( dcomplex * ) FLA_DOUBLE_COMPLEX_PTR( A );
00082     double   *buff_n1 = ( double   * ) FLA_DOUBLE_PTR( FLA_MINUS_ONE );
00083 
00084     if ( uplo == FLA_LOWER_TRIANGULAR )
00085     {
00086       for ( j = 0; j < n_A; j++ )
00087       {
00088         for ( i = j; i < m_A; i++ )
00089           buff_A[ j*ldim_A + i ].imag *= *buff_n1;
00090       } 
00091     }
00092     else if ( uplo == FLA_UPPER_TRIANGULAR ) 
00093     {
00094       for ( j = 0; j < n_A; j++ )
00095       {
00096         for ( i = 0; i < j + 1; i++ )
00097           buff_A[ j*ldim_A + i ].imag *= *buff_n1;
00098       } 
00099     }
00100 
00101     break;
00102   }
00103 
00104   }
00105 
00106   return FLA_SUCCESS;
00107 }

void FLA_F2C() fla_conjugate_r_f ( F_INT *  uplo,
F_INT *  A,
F_INT *  IERROR 
)

References FLA_Conjugate_r().

00111 {
00112   *IERROR = FLA_Conjugate_r( *( ( FLA_Uplo * ) uplo ),
00113                              *( ( FLA_Obj  * ) A    ) );
00114 }


Generated on Mon Jul 6 05:45:53 2009 for libflame by  doxygen 1.5.9