📄 comp1d.c
字号:
/*M///////////////////////////////////////////////////////////////////////////////////////
//
// INTEL CORPORATION PROPRIETARY INFORMATION
// This software is supplied under the terms of a license agreement or
// nondisclosure agreement with Intel Corporation and may not be copied
// or disclosed except in accordance with the terms of that agreement.
// Copyright (c) 1999 Intel Corporation. All Rights Reserved.
//
// RCS:
// $Source: Comp1D.c$
// $Revision: 00.00.05$
// Purpose:
// Contents:
// Authors:
// Sergey Oblomov
//
//M*/
#include "ats.h"
#include <stdio.h>
/*F///////////////////////////////////////////////////////////////////////////////////////
// Name: atsCompSingle
// Purpose:
// Detailed Comparing two float values
// Context:
// Parameters:
// flFirst - first value
// flSecond- second value
// dbAcc - accuracy
//
// Returns:
// 1 if not equal
// 0 if equal
// Notes:
//F*/
long atsCompSingle(float flFirst,
float flSecond,
double dbAcc)
{
if(fabs( flFirst-flSecond )>
dbAcc * ( fabs(flFirst) + fabs(flSecond))+dbAcc)
return 1;
else return 0;
}
/*F///////////////////////////////////////////////////////////////////////////////////////
// Name: atsCompSinglePrec
// Purpose:
// Detailed Comparing two float arrays
// Context:
// Parameters:
// flFirstArray - first array
// flSecondArray - second array
// lLen - lenght of this arrays
//
// Returns:
// Number of nonequal elements
// Notes:
//F*/
long atsCompSinglePrec(float* flFirstArray,
float* flSecondArray,
long lLen,
double dbAcc)
{
long lErrors = 0;
int i;
for(i = 0; i < lLen; i++)
{
if(fabs( flFirstArray[i]-flSecondArray[i] )>
dbAcc * ( fabs(flFirstArray[i]) + fabs(flSecondArray[i]))+dbAcc){
lErrors++;
}
}
return lErrors;
}
/*F///////////////////////////////////////////////////////////////////////////////////////
// Name: atsCompDoublePrec
// Purpose:
// Detailed Comparing two double arrays
// Context:
// Parameters:
// flFirstArray - first array
// flSecondArray - second array
// lLen - lenght of this arrays
//
// Returns:
// Number of nonequal elements
// Notes:
//F*/
long atsCompDoublePrec(double* flFirstArray,
double* flSecondArray,
long lLen,
double dbAcc)
{
long lErrors = 0;
int i;
for(i = 0; i < lLen; i++)
{
if(fabs( flFirstArray[i]-flSecondArray[i] )>
dbAcc * ( fabs(flFirstArray[i]) + fabs(flSecondArray[i]))+dbAcc)
lErrors++;
}
return lErrors;
}
/*F///////////////////////////////////////////////////////////////////////////////////////
// Name: atsCompare1Dfl
// Purpose:
// Comparing two 1D float array and writing results to SUM & LST files
// Context:
// Parameters:
// flArrayAct - actual array
// flArrayExp - expected array
// lLen - lenght of this arrays
// dbTol - tolerable limit
// Returns:
// Number of differents elements
// Notes:
//F*/
long atsCompare1Dfl( float* flArrayAct, float* flArrayExp, long lLen, double dbTol )
{
int i;
long lErrors = 0;
for( i = 0; i < lLen; i++ )
{
if( fabs( flArrayAct[i] - flArrayExp[i] ) > dbTol )
{
lErrors++;
trsWrite( ATS_LST,
"Error: x = %d act %f exp %f\n",
i,
flArrayAct[i],
flArrayExp[i] );
} /* if */
} /* for */
if( lErrors == NULL ) trsWrite( ATS_LST,
"No errors detected for this test\n" );
else trsWrite( ATS_SUM | ATS_LST, "Total fixed %d errors :(\n", lErrors );
return lErrors;
} /* atsCompare1Dfl */
/*F///////////////////////////////////////////////////////////////////////////////////////
// Name: atsCompare2Dfl
// Purpose:
// Comparing two array and writing results to SUM & LST files
// Context:
// Parameters:
// Returns:
// Number of differents elements
// Notes:
//F*/
long atsCompare2Dfl( float* ArrayAct, float* ArrayExp, CvSize size, int stride, double Tol )
{
int x, y;
long lErrors = 0;
for( y = 0; y < size.height; y++, ArrayAct = (float*)((long)ArrayAct + stride),
ArrayExp = (float*)((long)ArrayExp + stride) )
for( x = 0; x < size.width; x++ )
if( fabs( ArrayAct[x] - ArrayExp[x] ) > Tol )
{
lErrors++;
trsWrite( ATS_LST,
"Error: x=%d y=%d act %f exp %f\n",
x, y,
(float)ArrayAct[x],
(float)ArrayExp[x] );
} /* if */
if( lErrors == NULL ) trsWrite( ATS_LST,
"No errors detected for this test\n" );
else trsWrite( ATS_SUM | ATS_LST, "Total fixed %d errors :(\n", lErrors );
return lErrors;
} /* atsCompare1Db */
/*F///////////////////////////////////////////////////////////////////////////////////////
// Name: atsCompare1Db
// Purpose:
// Comparing two 1D array and writing results to SUM & LST files
// Context:
// Parameters:
// ArrayAct - actual array
// ArrayExp - expected array
// lLen - lenght of this arrays
// Tol - tolerable limit
// Returns:
// Number of differents elements
// Notes:
//F*/
long atsCompare1Db( uchar* ArrayAct, uchar* ArrayExp, long lLen, int Tol )
{
int i;
long lErrors = 0;
for( i = 0; i < lLen; i++ )
{
if( abs( ArrayAct[i] - ArrayExp[i] ) > Tol )
{
lErrors++;
trsWrite( ATS_LST,
"Error: x = %d act %d exp %d\n",
i,
(int)ArrayAct[i],
(int)ArrayExp[i] );
} /* if */
} /* for */
if( lErrors == NULL ) trsWrite( ATS_LST,
"No errors detected for this test\n" );
else trsWrite( ATS_SUM | ATS_LST, "Total fixed %d errors :(\n", lErrors );
return lErrors;
} /* atsCompare1Db */
/*F///////////////////////////////////////////////////////////////////////////////////////
// Name: atsCompare2Db
// Purpose:
// Comparing two array and writing results to SUM & LST files
// Context:
// Parameters:
// Returns:
// Number of differents elements
// Notes:
//F*/
long atsCompare2Db( uchar* ArrayAct, uchar* ArrayExp, CvSize size, int stride, int Tol )
{
int x, y;
long lErrors = 0;
for( y = 0; y < size.height; y++, ArrayAct += stride, ArrayExp += stride )
for( x = 0; x < size.width; x++ )
if( abs( ArrayAct[x] - ArrayExp[x] ) > Tol )
{
lErrors++;
trsWrite( ATS_LST,
"Error: x=%d y=%d act %d exp %d\n",
x, y,
(int)ArrayAct[x],
(int)ArrayExp[x] );
} /* if */
if( lErrors ) trsWrite( ATS_SUM | ATS_LST, "Total fixed %d errors :(\n", lErrors );
return lErrors;
}
/*F///////////////////////////////////////////////////////////////////////////////////////
// Name: atsCompare1Dc
// Purpose:
// Comparing two 1D array and writing results to SUM & LST files
// Context:
// Parameters:
// ArrayAct - actual array
// ArrayExp - expected array
// lLen - lenght of this arrays
// Tol - tolerable limit
// Returns:
// Number of differents elements
// Notes:
//F*/
long atsCompare1Dc( char* ArrayAct, char* ArrayExp, long lLen, int Tol )
{
int i;
long lErrors = 0;
for( i = 0; i < lLen; i++ )
{
if( abs( ArrayAct[i] - ArrayExp[i] ) > Tol )
{
lErrors++;
trsWrite( ATS_LST,
"Error: x = %d act %d exp %d\n",
i,
(int)ArrayAct[i],
(int)ArrayExp[i] );
} /* if */
} /* for */
if( lErrors ) trsWrite( ATS_SUM | ATS_LST, "Total fixed %d errors :(\n", lErrors );
return lErrors;
} /* atsCompare1Dc */
/*F///////////////////////////////////////////////////////////////////////////////////////
// Name: atsCompare2Db
// Purpose:
// Comparing two array and writing results to SUM & LST files
// Context:
// Parameters:
// Returns:
// Number of differents elements
// Notes:
//F*/
long atsCompare2Dc( char* ArrayAct, char* ArrayExp, CvSize size, int stride, int Tol )
{
int x, y;
long lErrors = 0;
for( y = 0; y < size.height; y++, ArrayAct += stride, ArrayExp += stride )
for( x = 0; x < size.width; x++ )
if( abs( ArrayAct[x] - ArrayExp[x] ) > Tol )
{
lErrors++;
trsWrite( ATS_LST,
"Error: x=%d y=%d act %d exp %d\n",
x, y,
(int)ArrayAct[x],
(int)ArrayExp[x] );
} /* if */
if( lErrors ) trsWrite( ATS_SUM | ATS_LST, "Total fixed %d errors :(\n", lErrors );
return lErrors;
}
/* End of file. */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -