FLA_Invert.c File Reference

(r)


Functions

FLA_Error FLA_Invert (FLA_Obj alpha)
void FLA_F2C() fla_invert_f (F_INT *alpha, F_INT *IERROR)

Function Documentation

FLA_Error FLA_Invert ( FLA_Obj  alpha  ) 

References FLA_Check_error_level(), FLA_Invert_check(), FLA_Obj_datatype(), dcomplex::imag, scomplex::imag, dcomplex::real, and scomplex::real.

Referenced by fla_invert_f(), FLA_Trinv_l_unb_var1(), FLA_Trinv_l_unb_var2(), FLA_Trinv_l_unb_var3(), FLA_Trinv_l_unb_var4(), FLA_Trinv_u_unb_var1(), FLA_Trinv_u_unb_var2(), FLA_Trinv_u_unb_var3(), and FLA_Trinv_u_unb_var4().

00036 {
00037   FLA_Datatype datatype;
00038 
00039   if ( FLA_Check_error_level() >= FLA_MIN_ERROR_CHECKING )
00040     FLA_Invert_check( alpha );
00041 
00042   datatype = FLA_Obj_datatype( alpha );
00043   
00044   switch ( datatype ){
00045 
00046   case FLA_FLOAT:
00047   {
00048     float *buff_alpha = ( float * ) FLA_FLOAT_PTR( alpha );
00049 
00050     *buff_alpha = 1.0F / *buff_alpha;
00051 
00052     break;
00053   }
00054 
00055   case FLA_DOUBLE:
00056   {
00057     double *buff_alpha = ( double * ) FLA_DOUBLE_PTR( alpha );
00058 
00059     *buff_alpha = 1.0 / *buff_alpha;
00060 
00061     break;
00062   }
00063 
00064   case FLA_COMPLEX:
00065   {
00066     scomplex *buff_alpha = ( scomplex * ) FLA_COMPLEX_PTR( alpha );
00067     float     temp;
00068 
00069     temp = 1.0F / ( buff_alpha->real * buff_alpha->real + 
00070                     buff_alpha->imag * buff_alpha->imag );
00071 
00072     buff_alpha->real = buff_alpha->real *  temp; 
00073     buff_alpha->imag = buff_alpha->imag * -temp; 
00074 
00075     break;
00076   }
00077 
00078   case FLA_DOUBLE_COMPLEX:
00079   {
00080     dcomplex *buff_alpha = ( dcomplex * ) FLA_DOUBLE_COMPLEX_PTR( alpha );
00081     double    temp;
00082 
00083     temp = 1.0 / ( buff_alpha->real * buff_alpha->real + 
00084                    buff_alpha->imag * buff_alpha->imag );
00085 
00086     buff_alpha->real = buff_alpha->real *  temp; 
00087     buff_alpha->imag = buff_alpha->imag * -temp; 
00088 
00089     break;
00090   }
00091 
00092   }
00093 
00094   return FLA_SUCCESS;
00095 }

void FLA_F2C() fla_invert_f ( F_INT *  alpha,
F_INT *  IERROR 
)

References FLA_Invert().

00099 {
00100   *IERROR = FLA_Invert( *( ( FLA_Obj * ) alpha ) );
00101 }


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