Functions | |
FLA_Error | FLA_Mult_add (FLA_Obj alpha, FLA_Obj beta, FLA_Obj gamma) |
void FLA_F2C() | fla_mult_add_f (F_INT *alpha, F_INT *beta, F_INT *gamma, F_INT *IERROR) |
References FLA_Check_error_level(), FLA_Mult_add_check(), FLA_Obj_datatype(), dcomplex::imag, scomplex::imag, dcomplex::real, and scomplex::real.
Referenced by fla_mult_add_f().
00036 { 00037 FLA_Datatype datatype; 00038 00039 if ( FLA_Check_error_level() >= FLA_MIN_ERROR_CHECKING ) 00040 FLA_Mult_add_check( alpha, beta, gamma ); 00041 00042 datatype = FLA_Obj_datatype( gamma ); 00043 00044 switch ( datatype ){ 00045 00046 case FLA_FLOAT: 00047 { 00048 float *buff_alpha = ( float * ) FLA_FLOAT_PTR( alpha ); 00049 float *buff_beta = ( float * ) FLA_FLOAT_PTR( beta ); 00050 float *buff_gamma = ( float * ) FLA_FLOAT_PTR( gamma ); 00051 00052 *buff_gamma = *buff_gamma + *buff_alpha + *buff_beta; 00053 00054 break; 00055 } 00056 00057 case FLA_DOUBLE: 00058 { 00059 double *buff_alpha = ( double * ) FLA_DOUBLE_PTR( alpha ); 00060 double *buff_beta = ( double * ) FLA_DOUBLE_PTR( beta ); 00061 double *buff_gamma = ( double * ) FLA_DOUBLE_PTR( gamma ); 00062 00063 *buff_gamma = *buff_gamma + *buff_alpha + *buff_beta; 00064 00065 break; 00066 } 00067 00068 case FLA_COMPLEX: 00069 { 00070 scomplex *buff_alpha = ( scomplex * ) FLA_COMPLEX_PTR( alpha ); 00071 scomplex *buff_beta = ( scomplex * ) FLA_COMPLEX_PTR( beta ); 00072 scomplex *buff_gamma = ( scomplex * ) FLA_COMPLEX_PTR( gamma ); 00073 scomplex alphabeta; 00074 00075 alphabeta.real = buff_alpha->real * buff_beta->real - 00076 buff_alpha->imag * buff_beta->imag; 00077 00078 alphabeta.imag = buff_alpha->real * buff_beta->imag + 00079 buff_alpha->imag * buff_beta->real; 00080 00081 buff_gamma->real = buff_gamma->real + alphabeta.real; 00082 buff_gamma->imag = buff_gamma->imag + alphabeta.imag; 00083 00084 break; 00085 } 00086 00087 case FLA_DOUBLE_COMPLEX: 00088 { 00089 dcomplex *buff_alpha = ( dcomplex * ) FLA_DOUBLE_COMPLEX_PTR( alpha ); 00090 dcomplex *buff_beta = ( dcomplex * ) FLA_DOUBLE_COMPLEX_PTR( beta ); 00091 dcomplex *buff_gamma = ( dcomplex * ) FLA_DOUBLE_COMPLEX_PTR( gamma ); 00092 dcomplex alphabeta; 00093 00094 alphabeta.real = buff_alpha->real * buff_beta->real - 00095 buff_alpha->imag * buff_beta->imag; 00096 00097 alphabeta.imag = buff_alpha->real * buff_beta->imag + 00098 buff_alpha->imag * buff_beta->real; 00099 00100 buff_gamma->real = buff_gamma->real + alphabeta.real; 00101 buff_gamma->imag = buff_gamma->imag + alphabeta.imag; 00102 00103 break; 00104 } 00105 00106 } 00107 00108 return FLA_SUCCESS; 00109 }
void FLA_F2C() fla_mult_add_f | ( | F_INT * | alpha, | |
F_INT * | beta, | |||
F_INT * | gamma, | |||
F_INT * | IERROR | |||
) |
References FLA_Mult_add().
00113 { 00114 *IERROR = FLA_Mult_add( *( ( FLA_Obj * ) alpha ), 00115 *( ( FLA_Obj * ) beta ), 00116 *( ( FLA_Obj * ) gamma ) ); 00117 }