FLA_Max_elemwise_diff.c File Reference

(r)


Functions

double FLA_Max_elemwise_diff (FLA_Obj A, FLA_Obj B)
double FLA_F2C() fla_max_elemwise_diff_f (F_INT *A, F_INT *B)

Function Documentation

double FLA_Max_elemwise_diff ( FLA_Obj  A,
FLA_Obj  B 
)

References FLA_Check_error_level(), FLA_Max_elemwise_diff_check(), FLA_Obj_datatype(), FLA_Obj_ldim(), FLA_Obj_length(), and FLA_Obj_width().

Referenced by fla_max_elemwise_diff_f(), and FLASH_Max_elemwise_diff().

00036 {
00037   int
00038     i, j,
00039     m, n,
00040     lda, ldb;
00041   double
00042     diff,
00043     d_max = 0.0;
00044 
00045   if ( FLA_Check_error_level() >= FLA_MIN_ERROR_CHECKING )
00046     FLA_Max_elemwise_diff_check( A, B );
00047 
00048   m   = FLA_Obj_length( A );
00049   n   = FLA_Obj_width( A );
00050   lda = FLA_Obj_ldim( A );
00051   ldb = FLA_Obj_ldim( B );
00052   
00053   switch( FLA_Obj_datatype( A ) ){
00054 
00055   case FLA_FLOAT:
00056   {
00057     float *buff_a = ( float * ) FLA_FLOAT_PTR( A );
00058     float *buff_b = ( float * ) FLA_FLOAT_PTR( B );
00059 
00060     for( j = 0; j < n; j++ )
00061     {
00062       for( i = 0; i < m; i++ )
00063       {
00064         diff = ( double ) ( buff_a[ j*lda + i ] - buff_b[ j*ldb + i ] );
00065 
00066         if( fabs(diff) > d_max )
00067           d_max = fabs(diff);
00068       }
00069     }
00070 
00071     break;
00072   }
00073 
00074   case FLA_DOUBLE:
00075   {
00076     double *buff_a = ( double * ) FLA_DOUBLE_PTR( A );
00077     double *buff_b = ( double * ) FLA_DOUBLE_PTR( B );
00078 
00079     for( j = 0; j < n; j++ )
00080     {
00081       for( i = 0; i < m; i++ )
00082       {
00083         diff = ( double ) ( buff_a[ j*lda + i ] - buff_b[ j*ldb + i ] );
00084 
00085         if( fabs(diff) > d_max )
00086           d_max = fabs(diff);
00087       }
00088     }
00089 
00090     break;
00091   }
00092 
00093   case FLA_COMPLEX:
00094   {
00095     scomplex *buff_a = ( scomplex * ) FLA_COMPLEX_PTR( A );
00096     scomplex *buff_b = ( scomplex * ) FLA_COMPLEX_PTR( B );
00097 
00098     for( j = 0; j < n; j++ )
00099     {
00100       for( i = 0; i < m; i++ )
00101       {
00102         diff = ( double ) ( buff_a[ j*lda + i ].real - buff_b[ j*ldb + i ].real );
00103 
00104         if( fabs(diff) > d_max )
00105           d_max = fabs(diff);
00106 
00107         diff = ( double ) ( buff_a[ j*lda + i ].imag - buff_b[ j*ldb + i ].imag );
00108 
00109         if( fabs(diff) > d_max )
00110           d_max = fabs(diff);
00111       }
00112     }
00113 
00114     break;
00115   }
00116 
00117   case FLA_DOUBLE_COMPLEX:
00118   {
00119     dcomplex *buff_a = ( dcomplex * ) FLA_DOUBLE_COMPLEX_PTR( A );
00120     dcomplex *buff_b = ( dcomplex * ) FLA_DOUBLE_COMPLEX_PTR( B );
00121 
00122     for( j = 0; j < n; j++ )
00123     {
00124       for( i = 0; i < m; i++ )
00125       {
00126         diff = ( double ) ( buff_a[ j*lda + i ].real - buff_b[ j*ldb + i ].real );
00127 
00128         if( fabs(diff) > d_max )
00129           d_max = fabs(diff);
00130 
00131         diff = ( double ) ( buff_a[ j*lda + i ].imag - buff_b[ j*ldb + i ].imag );
00132 
00133         if( fabs(diff) > d_max )
00134           d_max = fabs(diff);
00135       }
00136     }
00137 
00138     break;
00139   }
00140 
00141   }
00142 
00143   
00144   return d_max;
00145 }

double FLA_F2C() fla_max_elemwise_diff_f ( F_INT *  A,
F_INT *  B 
)

References FLA_Max_elemwise_diff().

00149 {
00150   return FLA_Max_elemwise_diff( *( ( FLA_Obj * ) A ), *( ( FLA_Obj * ) B ) );
00151 }


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