RMUL2025/lib/cmsis_5/CMSIS/DSP/Testing/Source/Tests/StatsTestsQ7.cpp

1012 lines
27 KiB
C++
Executable File

#include "StatsTestsQ7.h"
#include <stdio.h>
#include "Error.h"
#include "Test.h"
//#include <cstdio>
#define SNR_THRESHOLD 20
#define SNR_THRESHOLD_MSE 20
/*
Reference patterns are generated with
a double precision computation.
*/
#define ABS_ERROR_Q7 ((q7_t)20)
#define ABS_ERROR_Q31 ((q31_t)(1<<15))
#define ABS_ERROR_Q7_MSE ((q7_t)6)
void StatsTestsQ7::test_max_q7()
{
const q7_t *inp = inputA.ptr();
q7_t result;
uint32_t indexval;
q7_t *refp = ref.ptr();
int16_t *refind = maxIndexes.ptr();
q7_t *outp = output.ptr();
int16_t *ind = index.ptr();
arm_max_q7(inp,
inputA.nbSamples(),
&result,
&indexval);
outp[0] = result;
ind[0] = indexval;
ASSERT_EQ(result,refp[this->refOffset]);
ASSERT_EQ((int16_t)indexval,refind[this->refOffset]);
}
void StatsTestsQ7::test_max_no_idx_q7()
{
const q7_t *inp = inputA.ptr();
q7_t result;
q7_t *refp = ref.ptr();
q7_t *outp = output.ptr();
arm_max_no_idx_q7(inp,
inputA.nbSamples(),
&result);
outp[0] = result;
ASSERT_EQ(result,refp[this->refOffset]);
}
void StatsTestsQ7::test_absmax_no_idx_q7()
{
const q7_t *inp = inputA.ptr();
q7_t result;
q7_t *refp = ref.ptr();
q7_t *outp = output.ptr();
arm_absmax_no_idx_q7(inp,
inputA.nbSamples(),
&result);
outp[0] = result;
ASSERT_EQ(result,refp[this->refOffset]);
}
void StatsTestsQ7::test_absmax_q7()
{
const q7_t *inp = inputA.ptr();
q7_t result;
uint32_t indexval;
q7_t *refp = ref.ptr();
int16_t *refind = maxIndexes.ptr();
q7_t *outp = output.ptr();
int16_t *ind = index.ptr();
arm_absmax_q7(inp,
inputA.nbSamples(),
&result,
&indexval);
outp[0] = result;
ind[0] = indexval;
ASSERT_EQ(result,refp[this->refOffset]);
ASSERT_EQ((int16_t)indexval,refind[this->refOffset]);
}
/*
May fail on the index. It depends on the values generated by Python.
If the values are too close and thus equal with q7 accuracy
then the index computed by Python and by the q7 implementation
will be different.
Python code must be tuned to change this.
*/
void StatsTestsQ7::test_min_q7()
{
const q7_t *inp = inputA.ptr();
q7_t result;
uint32_t indexval;
q7_t *refp = ref.ptr();
int16_t *refind = minIndexes.ptr();
q7_t *outp = output.ptr();
int16_t *ind = index.ptr();
arm_min_q7(inp,
inputA.nbSamples(),
&result,
&indexval);
outp[0] = result;
ind[0] = indexval;
ASSERT_EQ(result,refp[this->refOffset]);
ASSERT_EQ((int16_t)indexval,refind[this->refOffset]);
}
void StatsTestsQ7::test_min_no_idx_q7()
{
const q7_t *inp = inputA.ptr();
q7_t result;
q7_t *refp = ref.ptr();
q7_t *outp = output.ptr();
arm_min_no_idx_q7(inp,
inputA.nbSamples(),
&result);
outp[0] = result;
ASSERT_EQ(result,refp[this->refOffset]);
}
void StatsTestsQ7::test_absmin_no_idx_q7()
{
const q7_t *inp = inputA.ptr();
q7_t result;
q7_t *refp = ref.ptr();
q7_t *outp = output.ptr();
arm_absmin_no_idx_q7(inp,
inputA.nbSamples(),
&result);
outp[0] = result;
ASSERT_EQ(result,refp[this->refOffset]);
}
void StatsTestsQ7::test_absmin_q7()
{
const q7_t *inp = inputA.ptr();
q7_t result;
uint32_t indexval;
q7_t *refp = ref.ptr();
int16_t *refind = minIndexes.ptr();
q7_t *outp = output.ptr();
int16_t *ind = index.ptr();
arm_absmin_q7(inp,
inputA.nbSamples(),
&result,
&indexval);
outp[0] = result;
ind[0] = indexval;
ASSERT_EQ(result,refp[this->refOffset]);
ASSERT_EQ((int16_t)indexval,refind[this->refOffset]);
}
void StatsTestsQ7::test_mean_q7()
{
const q7_t *inp = inputA.ptr();
q7_t result;
q7_t *refp = ref.ptr();
q7_t *outp = output.ptr();
arm_mean_q7(inp,
inputA.nbSamples(),
&result);
outp[0] = result;
ASSERT_SNR(result,refp[this->refOffset],(float32_t)5);
ASSERT_NEAR_EQ(result,refp[this->refOffset],ABS_ERROR_Q7);
}
void StatsTestsQ7::test_power_q7()
{
const q7_t *inp = inputA.ptr();
q31_t result;
q31_t *refp = refPower.ptr();
q31_t *outp = outputPower.ptr();
arm_power_q7(inp,
inputA.nbSamples(),
&result);
outp[0] = result;
ASSERT_SNR(result,refp[this->refOffset],(float32_t)SNR_THRESHOLD);
ASSERT_NEAR_EQ(result,refp[this->refOffset],(q31_t)ABS_ERROR_Q31);
}
void StatsTestsQ7::test_mse_q7()
{
const q7_t *inpA = inputA.ptr();
const q7_t *inpB = inputB.ptr();
q7_t result;
q7_t *refp = ref.ptr();
q7_t *outp = output.ptr();
arm_mse_q7(inpA,inpB,
inputA.nbSamples(),
&result);
outp[0] = result;
ASSERT_SNR(result,refp[this->refOffset],(float32_t)SNR_THRESHOLD_MSE);
ASSERT_NEAR_EQ(result,refp[this->refOffset],(q7_t)ABS_ERROR_Q7_MSE);
}
#if 0
/*
Those functions do not yet exist in CMSIS-DSP.
But the tests are kept for when they will be available.
*/
void StatsTestsQ7::test_rms_q7()
{
const q7_t *inp = inputA.ptr();
q7_t result;
q7_t *refp = ref.ptr();
q7_t *outp = output.ptr();
arm_rms_q7(inp,
inputA.nbSamples(),
&result);
outp[0] = result;
ASSERT_SNR(result,refp[this->refOffset],(float32_t)SNR_THRESHOLD);
ASSERT_NEAR_EQ(result,refp[this->refOffset],ABS_ERROR_Q7);
}
void StatsTestsQ7::test_std_q7()
{
const q7_t *inp = inputA.ptr();
q7_t result;
q7_t *refp = ref.ptr();
q7_t *outp = output.ptr();
arm_std_q7(inp,
inputA.nbSamples(),
&result);
outp[0] = result;
ASSERT_SNR(result,refp[this->refOffset],(float32_t)SNR_THRESHOLD);
ASSERT_NEAR_EQ(result,refp[this->refOffset],ABS_ERROR_Q7);
}
void StatsTestsQ7::test_var_q7()
{
const q7_t *inp = inputA.ptr();
q7_t result;
q7_t *refp = ref.ptr();
q7_t *outp = output.ptr();
arm_var_q7(inp,
inputA.nbSamples(),
&result);
outp[0] = result;
ASSERT_SNR(result,refp[this->refOffset],(float32_t)SNR_THRESHOLD);
ASSERT_NEAR_EQ(result,refp[this->refOffset],ABS_ERROR_Q7);
}
#endif
void StatsTestsQ7::setUp(Testing::testID_t id,std::vector<Testing::param_t>& paramsArgs,Client::PatternMgr *mgr)
{
(void)paramsArgs;
switch(id)
{
case StatsTestsQ7::TEST_MAX_Q7_1:
{
inputA.reload(StatsTestsQ7::INPUT1_Q7_ID,mgr,15);
maxIndexes.reload(StatsTestsQ7::MAXINDEXES_S16_ID,mgr);
ref.reload(StatsTestsQ7::MAXVALS_Q7_ID,mgr);
output.create(1,StatsTestsQ7::OUT_Q7_ID,mgr);
index.create(1,StatsTestsQ7::OUT_S16_ID,mgr);
refOffset = 0;
}
break;
case StatsTestsQ7::TEST_MAX_Q7_2:
{
inputA.reload(StatsTestsQ7::INPUT1_Q7_ID,mgr,32);
maxIndexes.reload(StatsTestsQ7::MAXINDEXES_S16_ID,mgr);
ref.reload(StatsTestsQ7::MAXVALS_Q7_ID,mgr);
output.create(1,StatsTestsQ7::OUT_Q7_ID,mgr);
index.create(1,StatsTestsQ7::OUT_S16_ID,mgr);
refOffset = 1;
}
break;
case StatsTestsQ7::TEST_MAX_Q7_3:
{
inputA.reload(StatsTestsQ7::INPUT1_Q7_ID,mgr,47);
maxIndexes.reload(StatsTestsQ7::MAXINDEXES_S16_ID,mgr);
ref.reload(StatsTestsQ7::MAXVALS_Q7_ID,mgr);
output.create(1,StatsTestsQ7::OUT_Q7_ID,mgr);
index.create(1,StatsTestsQ7::OUT_S16_ID,mgr);
refOffset = 2;
}
break;
/*
For MEAN tests, INPUT2 pattern is used.
It contains only positive values and prevent the average
value from being too close to zero which make the estimation
of the errors difficult.
*/
case StatsTestsQ7::TEST_MEAN_Q7_4:
{
inputA.reload(StatsTestsQ7::INPUT2_Q7_ID,mgr,15);
ref.reload(StatsTestsQ7::MEANVALS_Q7_ID,mgr);
output.create(1,StatsTestsQ7::OUT_Q7_ID,mgr);
refOffset = 0;
}
break;
case StatsTestsQ7::TEST_MEAN_Q7_5:
{
inputA.reload(StatsTestsQ7::INPUT2_Q7_ID,mgr,32);
ref.reload(StatsTestsQ7::MEANVALS_Q7_ID,mgr);
output.create(1,StatsTestsQ7::OUT_Q7_ID,mgr);
refOffset = 1;
}
break;
case StatsTestsQ7::TEST_MEAN_Q7_6:
{
inputA.reload(StatsTestsQ7::INPUT2_Q7_ID,mgr,47);
ref.reload(StatsTestsQ7::MEANVALS_Q7_ID,mgr);
output.create(1,StatsTestsQ7::OUT_Q7_ID,mgr);
refOffset = 2;
}
break;
case StatsTestsQ7::TEST_MIN_Q7_7:
{
inputA.reload(StatsTestsQ7::INPUT1_Q7_ID,mgr,15);
minIndexes.reload(StatsTestsQ7::MININDEXES_S16_ID,mgr);
ref.reload(StatsTestsQ7::MINVALS_Q7_ID,mgr);
output.create(1,StatsTestsQ7::OUT_Q7_ID,mgr);
index.create(1,StatsTestsQ7::OUT_S16_ID,mgr);
refOffset = 0;
}
break;
case StatsTestsQ7::TEST_MIN_Q7_8:
{
inputA.reload(StatsTestsQ7::INPUT1_Q7_ID,mgr,32);
minIndexes.reload(StatsTestsQ7::MININDEXES_S16_ID,mgr);
ref.reload(StatsTestsQ7::MINVALS_Q7_ID,mgr);
output.create(1,StatsTestsQ7::OUT_Q7_ID,mgr);
index.create(1,StatsTestsQ7::OUT_S16_ID,mgr);
refOffset = 1;
}
break;
case StatsTestsQ7::TEST_MIN_Q7_9:
{
inputA.reload(StatsTestsQ7::INPUT1_Q7_ID,mgr,47);
minIndexes.reload(StatsTestsQ7::MININDEXES_S16_ID,mgr);
ref.reload(StatsTestsQ7::MINVALS_Q7_ID,mgr);
output.create(1,StatsTestsQ7::OUT_Q7_ID,mgr);
index.create(1,StatsTestsQ7::OUT_S16_ID,mgr);
refOffset = 2;
}
break;
case StatsTestsQ7::TEST_POWER_Q7_10:
{
inputA.reload(StatsTestsQ7::INPUT1_Q7_ID,mgr,15);
refPower.reload(StatsTestsQ7::POWERVALS_Q31_ID,mgr);
outputPower.create(1,StatsTestsQ7::OUT_Q7_ID,mgr);
refOffset = 0;
}
break;
case StatsTestsQ7::TEST_POWER_Q7_11:
{
inputA.reload(StatsTestsQ7::INPUT1_Q7_ID,mgr,32);
refPower.reload(StatsTestsQ7::POWERVALS_Q31_ID,mgr);
outputPower.create(1,StatsTestsQ7::OUT_Q7_ID,mgr);
refOffset = 1;
}
break;
case StatsTestsQ7::TEST_POWER_Q7_12:
{
inputA.reload(StatsTestsQ7::INPUT1_Q7_ID,mgr,47);
refPower.reload(StatsTestsQ7::POWERVALS_Q31_ID,mgr);
outputPower.create(1,StatsTestsQ7::OUT_Q7_ID,mgr);
refOffset = 2;
}
break;
#if 0
/*
Those functions do not yet exist in CMSIS-DSP.
But the tests are kept for when they will be available.
*/
case StatsTestsQ7::TEST_RMS_Q7_13:
{
inputA.reload(StatsTestsQ7::INPUT1_Q7_ID,mgr,15);
ref.reload(StatsTestsQ7::RMSVALS_Q7_ID,mgr);
output.create(1,StatsTestsQ7::OUT_Q7_ID,mgr);
refOffset = 0;
}
break;
case StatsTestsQ7::TEST_RMS_Q7_14:
{
inputA.reload(StatsTestsQ7::INPUT1_Q7_ID,mgr,32);
ref.reload(StatsTestsQ7::RMSVALS_Q7_ID,mgr);
output.create(1,StatsTestsQ7::OUT_Q7_ID,mgr);
refOffset = 1;
}
break;
case StatsTestsQ7::TEST_RMS_Q7_15:
{
inputA.reload(StatsTestsQ7::INPUT1_Q7_ID,mgr,47);
ref.reload(StatsTestsQ7::RMSVALS_Q7_ID,mgr);
output.create(1,StatsTestsQ7::OUT_Q7_ID,mgr);
refOffset = 2;
}
break;
case StatsTestsQ7::TEST_STD_Q7_16:
{
inputA.reload(StatsTestsQ7::INPUT1_Q7_ID,mgr,15);
ref.reload(StatsTestsQ7::STDVALS_Q7_ID,mgr);
output.create(1,StatsTestsQ7::OUT_Q7_ID,mgr);
refOffset = 0;
}
break;
case StatsTestsQ7::TEST_STD_Q7_17:
{
inputA.reload(StatsTestsQ7::INPUT1_Q7_ID,mgr,32);
ref.reload(StatsTestsQ7::STDVALS_Q7_ID,mgr);
output.create(1,StatsTestsQ7::OUT_Q7_ID,mgr);
refOffset = 1;
}
break;
case StatsTestsQ7::TEST_STD_Q7_18:
{
inputA.reload(StatsTestsQ7::INPUT1_Q7_ID,mgr,47);
ref.reload(StatsTestsQ7::STDVALS_Q7_ID,mgr);
output.create(1,StatsTestsQ7::OUT_Q7_ID,mgr);
refOffset = 2;
}
break;
case StatsTestsQ7::TEST_VAR_Q7_19:
{
inputA.reload(StatsTestsQ7::INPUT1_Q7_ID,mgr,15);
ref.reload(StatsTestsQ7::VARVALS_Q7_ID,mgr);
output.create(1,StatsTestsQ7::OUT_Q7_ID,mgr);
refOffset = 0;
}
break;
case StatsTestsQ7::TEST_VAR_Q7_20:
{
inputA.reload(StatsTestsQ7::INPUT1_Q7_ID,mgr,32);
ref.reload(StatsTestsQ7::VARVALS_Q7_ID,mgr);
output.create(1,StatsTestsQ7::OUT_Q7_ID,mgr);
refOffset = 1;
}
break;
case StatsTestsQ7::TEST_VAR_Q7_21:
{
inputA.reload(StatsTestsQ7::INPUT1_Q7_ID,mgr,47);
ref.reload(StatsTestsQ7::VARVALS_Q7_ID,mgr);
output.create(1,StatsTestsQ7::OUT_Q7_ID,mgr);
refOffset = 2;
}
break;
#endif
case StatsTestsQ7::TEST_MAX_Q7_13:
{
inputA.reload(StatsTestsQ7::MAXINDEXMAX_Q7_ID,mgr,280);
maxIndexes.reload(StatsTestsQ7::MAXINDEXES_S16_ID,mgr);
ref.reload(StatsTestsQ7::MAXVALS_Q7_ID,mgr);
output.create(1,StatsTestsQ7::OUT_Q7_ID,mgr);
index.create(1,StatsTestsQ7::OUT_S16_ID,mgr);
refOffset = 3;
}
break;
case StatsTestsQ7::TEST_MIN_Q7_14:
{
inputA.reload(StatsTestsQ7::MININDEXMAX_Q7_ID,mgr,280);
minIndexes.reload(StatsTestsQ7::MININDEXES_S16_ID,mgr);
ref.reload(StatsTestsQ7::MINVALS_Q7_ID,mgr);
output.create(1,StatsTestsQ7::OUT_Q7_ID,mgr);
index.create(1,StatsTestsQ7::OUT_S16_ID,mgr);
refOffset = 3;
}
break;
case StatsTestsQ7::TEST_ABSMAX_Q7_15:
{
inputA.reload(StatsTestsQ7::INPUTNEW1_Q7_ID,mgr,15);
maxIndexes.reload(StatsTestsQ7::ABSMAXINDEXES_S16_ID,mgr);
ref.reload(StatsTestsQ7::ABSMAXVALS_Q7_ID,mgr);
output.create(1,StatsTestsQ7::OUT_Q7_ID,mgr);
index.create(1,StatsTestsQ7::OUT_S16_ID,mgr);
refOffset = 0;
}
break;
case StatsTestsQ7::TEST_ABSMAX_Q7_16:
{
inputA.reload(StatsTestsQ7::INPUTNEW1_Q7_ID,mgr,32);
maxIndexes.reload(StatsTestsQ7::ABSMAXINDEXES_S16_ID,mgr);
ref.reload(StatsTestsQ7::ABSMAXVALS_Q7_ID,mgr);
output.create(1,StatsTestsQ7::OUT_Q7_ID,mgr);
index.create(1,StatsTestsQ7::OUT_S16_ID,mgr);
refOffset = 1;
}
break;
case StatsTestsQ7::TEST_ABSMAX_Q7_17:
{
inputA.reload(StatsTestsQ7::INPUTNEW1_Q7_ID,mgr,47);
maxIndexes.reload(StatsTestsQ7::ABSMAXINDEXES_S16_ID,mgr);
ref.reload(StatsTestsQ7::ABSMAXVALS_Q7_ID,mgr);
output.create(1,StatsTestsQ7::OUT_Q7_ID,mgr);
index.create(1,StatsTestsQ7::OUT_S16_ID,mgr);
refOffset = 2;
}
break;
case StatsTestsQ7::TEST_ABSMIN_Q7_18:
{
inputA.reload(StatsTestsQ7::INPUTNEW1_Q7_ID,mgr,15);
minIndexes.reload(StatsTestsQ7::ABSMININDEXES_S16_ID,mgr);
ref.reload(StatsTestsQ7::ABSMINVALS_Q7_ID,mgr);
output.create(1,StatsTestsQ7::OUT_Q7_ID,mgr);
index.create(1,StatsTestsQ7::OUT_S16_ID,mgr);
refOffset = 0;
}
break;
case StatsTestsQ7::TEST_ABSMIN_Q7_19:
{
inputA.reload(StatsTestsQ7::INPUTNEW1_Q7_ID,mgr,32);
minIndexes.reload(StatsTestsQ7::ABSMININDEXES_S16_ID,mgr);
ref.reload(StatsTestsQ7::ABSMINVALS_Q7_ID,mgr);
output.create(1,StatsTestsQ7::OUT_Q7_ID,mgr);
index.create(1,StatsTestsQ7::OUT_S16_ID,mgr);
refOffset = 1;
}
break;
case StatsTestsQ7::TEST_ABSMIN_Q7_20:
{
inputA.reload(StatsTestsQ7::INPUTNEW1_Q7_ID,mgr,47);
minIndexes.reload(StatsTestsQ7::ABSMININDEXES_S16_ID,mgr);
ref.reload(StatsTestsQ7::ABSMINVALS_Q7_ID,mgr);
output.create(1,StatsTestsQ7::OUT_Q7_ID,mgr);
index.create(1,StatsTestsQ7::OUT_S16_ID,mgr);
refOffset = 2;
}
break;
case StatsTestsQ7::TEST_ABSMAX_Q7_21:
{
inputA.reload(StatsTestsQ7::ABSMAXINDEXMAX_Q7_ID,mgr,280);
maxIndexes.reload(StatsTestsQ7::ABSMAXINDEXES_S16_ID,mgr);
ref.reload(StatsTestsQ7::ABSMAXVALS_Q7_ID,mgr);
output.create(1,StatsTestsQ7::OUT_Q7_ID,mgr);
index.create(1,StatsTestsQ7::OUT_S16_ID,mgr);
refOffset = 3;
}
break;
case StatsTestsQ7::TEST_ABSMIN_Q7_22:
{
inputA.reload(StatsTestsQ7::ABSMININDEXMAX_Q7_ID,mgr,280);
minIndexes.reload(StatsTestsQ7::ABSMININDEXES_S16_ID,mgr);
ref.reload(StatsTestsQ7::ABSMINVALS_Q7_ID,mgr);
output.create(1,StatsTestsQ7::OUT_Q7_ID,mgr);
index.create(1,StatsTestsQ7::OUT_S16_ID,mgr);
refOffset = 3;
}
break;
case StatsTestsQ7::TEST_MAX_NO_IDX_Q7_23:
{
inputA.reload(StatsTestsQ7::INPUT1_Q7_ID,mgr,15);
ref.reload(StatsTestsQ7::MAXVALS_Q7_ID,mgr);
output.create(1,StatsTestsQ7::OUT_Q7_ID,mgr);
refOffset = 0;
}
break;
case StatsTestsQ7::TEST_MAX_NO_IDX_Q7_24:
{
inputA.reload(StatsTestsQ7::INPUT1_Q7_ID,mgr,32);
ref.reload(StatsTestsQ7::MAXVALS_Q7_ID,mgr);
output.create(1,StatsTestsQ7::OUT_Q7_ID,mgr);
refOffset = 1;
}
break;
case StatsTestsQ7::TEST_MAX_NO_IDX_Q7_25:
{
inputA.reload(StatsTestsQ7::INPUT1_Q7_ID,mgr,47);
ref.reload(StatsTestsQ7::MAXVALS_Q7_ID,mgr);
output.create(1,StatsTestsQ7::OUT_Q7_ID,mgr);
refOffset = 2;
}
break;
case StatsTestsQ7::TEST_MIN_NO_IDX_Q7_26:
{
inputA.reload(StatsTestsQ7::INPUT1_Q7_ID,mgr,15);
ref.reload(StatsTestsQ7::MINVALS_Q7_ID,mgr);
output.create(1,StatsTestsQ7::OUT_Q7_ID,mgr);
refOffset = 0;
}
break;
case StatsTestsQ7::TEST_MIN_NO_IDX_Q7_27:
{
inputA.reload(StatsTestsQ7::INPUT1_Q7_ID,mgr,32);
ref.reload(StatsTestsQ7::MINVALS_Q7_ID,mgr);
output.create(1,StatsTestsQ7::OUT_Q7_ID,mgr);
refOffset = 1;
}
break;
case StatsTestsQ7::TEST_MIN_NO_IDX_Q7_28:
{
inputA.reload(StatsTestsQ7::INPUT1_Q7_ID,mgr,47);
ref.reload(StatsTestsQ7::MINVALS_Q7_ID,mgr);
output.create(1,StatsTestsQ7::OUT_Q7_ID,mgr);
refOffset = 2;
}
break;
case StatsTestsQ7::TEST_ABSMAX_NO_IDX_Q7_29:
{
inputA.reload(StatsTestsQ7::INPUTNEW1_Q7_ID,mgr,15);
ref.reload(StatsTestsQ7::ABSMAXVALS_Q7_ID,mgr);
output.create(1,StatsTestsQ7::OUT_Q7_ID,mgr);
refOffset = 0;
}
break;
case StatsTestsQ7::TEST_ABSMAX_NO_IDX_Q7_30:
{
inputA.reload(StatsTestsQ7::INPUTNEW1_Q7_ID,mgr,32);
ref.reload(StatsTestsQ7::ABSMAXVALS_Q7_ID,mgr);
output.create(1,StatsTestsQ7::OUT_Q7_ID,mgr);
refOffset = 1;
}
break;
case StatsTestsQ7::TEST_ABSMAX_NO_IDX_Q7_31:
{
inputA.reload(StatsTestsQ7::INPUTNEW1_Q7_ID,mgr,47);
ref.reload(StatsTestsQ7::ABSMAXVALS_Q7_ID,mgr);
output.create(1,StatsTestsQ7::OUT_Q7_ID,mgr);
refOffset = 2;
}
break;
case StatsTestsQ7::TEST_ABSMIN_NO_IDX_Q7_32:
{
inputA.reload(StatsTestsQ7::INPUTNEW1_Q7_ID,mgr,15);
ref.reload(StatsTestsQ7::ABSMINVALS_Q7_ID,mgr);
output.create(1,StatsTestsQ7::OUT_Q7_ID,mgr);
refOffset = 0;
}
break;
case StatsTestsQ7::TEST_ABSMIN_NO_IDX_Q7_33:
{
inputA.reload(StatsTestsQ7::INPUTNEW1_Q7_ID,mgr,32);
ref.reload(StatsTestsQ7::ABSMINVALS_Q7_ID,mgr);
output.create(1,StatsTestsQ7::OUT_Q7_ID,mgr);
refOffset = 1;
}
break;
case StatsTestsQ7::TEST_ABSMIN_NO_IDX_Q7_34:
{
inputA.reload(StatsTestsQ7::INPUTNEW1_Q7_ID,mgr,47);
ref.reload(StatsTestsQ7::ABSMINVALS_Q7_ID,mgr);
output.create(1,StatsTestsQ7::OUT_Q7_ID,mgr);
refOffset = 2;
}
break;
case StatsTestsQ7::TEST_MSE_Q7_35:
{
inputA.reload(StatsTestsQ7::INPUTNEW1_Q7_ID,mgr,15);
inputB.reload(StatsTestsQ7::INPUTNEW2_Q7_ID,mgr,15);
ref.reload(StatsTestsQ7::MSE_Q7_ID,mgr);
output.create(1,StatsTestsQ7::OUT_Q7_ID,mgr);
refOffset = 0;
}
break;
case StatsTestsQ7::TEST_MSE_Q7_36:
{
inputA.reload(StatsTestsQ7::INPUTNEW1_Q7_ID,mgr,32);
inputB.reload(StatsTestsQ7::INPUTNEW2_Q7_ID,mgr,32);
ref.reload(StatsTestsQ7::MSE_Q7_ID,mgr);
output.create(1,StatsTestsQ7::OUT_Q7_ID,mgr);
refOffset = 1;
}
break;
case StatsTestsQ7::TEST_MSE_Q7_37:
{
inputA.reload(StatsTestsQ7::INPUTNEW1_Q7_ID,mgr,47);
inputB.reload(StatsTestsQ7::INPUTNEW2_Q7_ID,mgr,47);
ref.reload(StatsTestsQ7::MSE_Q7_ID,mgr);
output.create(1,StatsTestsQ7::OUT_Q7_ID,mgr);
refOffset = 2;
}
break;
case StatsTestsQ7::TEST_MSE_Q7_38:
{
inputA.reload(StatsTestsQ7::INPUTNEW1_Q7_ID,mgr,100);
inputB.reload(StatsTestsQ7::INPUTNEW2_Q7_ID,mgr,100);
ref.reload(StatsTestsQ7::MSE_Q7_ID,mgr);
output.create(1,StatsTestsQ7::OUT_Q7_ID,mgr);
refOffset = 3;
}
break;
}
}
void StatsTestsQ7::tearDown(Testing::testID_t id,Client::PatternMgr *mgr)
{
(void)id;
switch(id)
{
case StatsTestsQ7::TEST_MAX_Q7_1:
case StatsTestsQ7::TEST_MAX_Q7_2:
case StatsTestsQ7::TEST_MAX_Q7_3:
case StatsTestsQ7::TEST_MIN_Q7_7:
case StatsTestsQ7::TEST_MIN_Q7_8:
case StatsTestsQ7::TEST_MIN_Q7_9:
case StatsTestsQ7::TEST_MAX_Q7_13:
case StatsTestsQ7::TEST_MIN_Q7_14:
index.dump(mgr);
output.dump(mgr);
break;
case TEST_POWER_Q7_10:
case TEST_POWER_Q7_11:
case TEST_POWER_Q7_12:
outputPower.dump(mgr);
break;
default:
output.dump(mgr);
}
}