CMSIS-DSP: Remove some gcc compilation warnings.

pull/19/head
Christophe Favergeon 5 years ago
parent acaa70a62a
commit 4014866174

@ -92,6 +92,7 @@ int32_t main(void)
/* Result of the classifier */ /* Result of the classifier */
float32_t result[NB_OF_CLASSES]; float32_t result[NB_OF_CLASSES];
float32_t temp[NB_OF_CLASSES];
float32_t maxProba; float32_t maxProba;
uint32_t index; uint32_t index;
@ -105,7 +106,7 @@ int32_t main(void)
in[0] = 1.5f; in[0] = 1.5f;
in[1] = 1.0f; in[1] = 1.0f;
index = arm_gaussian_naive_bayes_predict_f32(&S, in, result); index = arm_gaussian_naive_bayes_predict_f32(&S, in, result,temp);
maxProba = result[index]; maxProba = result[index];
@ -116,7 +117,7 @@ int32_t main(void)
in[0] = -1.5f; in[0] = -1.5f;
in[1] = 1.0f; in[1] = 1.0f;
index = arm_gaussian_naive_bayes_predict_f32(&S, in, result); index = arm_gaussian_naive_bayes_predict_f32(&S, in, result,temp);
maxProba = result[index]; maxProba = result[index];
@ -127,7 +128,7 @@ int32_t main(void)
in[0] = 0.0f; in[0] = 0.0f;
in[1] = -3.0f; in[1] = -3.0f;
index = arm_gaussian_naive_bayes_predict_f32(&S, in, result); index = arm_gaussian_naive_bayes_predict_f32(&S, in, result,temp);
maxProba = result[index]; maxProba = result[index];

@ -69,7 +69,8 @@ typedef struct
* *
* @param[in] S points to a naive bayes instance structure * @param[in] S points to a naive bayes instance structure
* @param[in] in points to the elements of the input vector. * @param[in] in points to the elements of the input vector.
* @param[in] pBuffer points to a buffer of length numberOfClasses * @param[out] *pOutputProbabilities points to a buffer of length numberOfClasses containing estimated probabilities
* @param[out] *pBufferB points to a temporary buffer of length numberOfClasses
* @return The predicted class * @return The predicted class
* *
*/ */
@ -77,7 +78,8 @@ typedef struct
uint32_t arm_gaussian_naive_bayes_predict_f32(const arm_gaussian_naive_bayes_instance_f32 *S, uint32_t arm_gaussian_naive_bayes_predict_f32(const arm_gaussian_naive_bayes_instance_f32 *S,
const float32_t * in, const float32_t * in,
float32_t *pBuffer); float32_t *pOutputProbabilities,
float32_t *pBufferB);
#ifdef __cplusplus #ifdef __cplusplus

@ -60,7 +60,8 @@ typedef struct
* *
* @param[in] S points to a naive bayes instance structure * @param[in] S points to a naive bayes instance structure
* @param[in] in points to the elements of the input vector. * @param[in] in points to the elements of the input vector.
* @param[in] pBuffer points to a buffer of length numberOfClasses * @param[out] *pOutputProbabilities points to a buffer of length numberOfClasses containing estimated probabilities
* @param[out] *pBufferB points to a temporary buffer of length numberOfClasses
* @return The predicted class * @return The predicted class
* *
*/ */
@ -68,7 +69,8 @@ typedef struct
uint32_t arm_gaussian_naive_bayes_predict_f16(const arm_gaussian_naive_bayes_instance_f16 *S, uint32_t arm_gaussian_naive_bayes_predict_f16(const arm_gaussian_naive_bayes_instance_f16 *S,
const float16_t * in, const float16_t * in,
float16_t *pBuffer); float16_t *pOutputProbabilities,
float16_t *pBufferB);
#endif /*defined(ARM_FLOAT16_SUPPORTED)*/ #endif /*defined(ARM_FLOAT16_SUPPORTED)*/
#ifdef __cplusplus #ifdef __cplusplus

@ -45,11 +45,10 @@
* *
* @param[in] *S points to a naive bayes instance structure * @param[in] *S points to a naive bayes instance structure
* @param[in] *in points to the elements of the input vector. * @param[in] *in points to the elements of the input vector.
* @param[in] *pBuffer points to a buffer of length numberOfClasses * @param[out] *pOutputProbabilities points to a buffer of length numberOfClasses containing estimated probabilities
* @param[out] *pBufferB points to a temporary buffer of length numberOfClasses
* @return The predicted class * @return The predicted class
* *
* @par If the number of classes is big, MVE version will consume lot of
* stack since the log prior are computed on the stack.
* *
*/ */
@ -60,19 +59,21 @@
uint32_t arm_gaussian_naive_bayes_predict_f16(const arm_gaussian_naive_bayes_instance_f16 *S, uint32_t arm_gaussian_naive_bayes_predict_f16(const arm_gaussian_naive_bayes_instance_f16 *S,
const float16_t * in, const float16_t * in,
float16_t *pBuffer) float16_t *pOutputProbabilities,
float16_t *pBufferB
)
{ {
uint32_t nbClass; uint32_t nbClass;
const float16_t *pTheta = S->theta; const float16_t *pTheta = S->theta;
const float16_t *pSigma = S->sigma; const float16_t *pSigma = S->sigma;
float16_t *buffer = pBuffer; float16_t *buffer = pOutputProbabilities;
const float16_t *pIn = in; const float16_t *pIn = in;
float16_t result; float16_t result;
f16x8_t vsigma; f16x8_t vsigma;
_Float16 tmp; _Float16 tmp;
f16x8_t vacc1, vacc2; f16x8_t vacc1, vacc2;
uint32_t index; uint32_t index;
float16_t logclassPriors[S->numberOfClasses]; float16_t *logclassPriors=pBufferB;
float16_t *pLogPrior = logclassPriors; float16_t *pLogPrior = logclassPriors;
arm_vlog_f16((float16_t *) S->classPriors, logclassPriors, S->numberOfClasses); arm_vlog_f16((float16_t *) S->classPriors, logclassPriors, S->numberOfClasses);
@ -135,38 +136,31 @@ uint32_t arm_gaussian_naive_bayes_predict_f16(const arm_gaussian_naive_bayes_ins
buffer++; buffer++;
} }
arm_max_f16(pBuffer, S->numberOfClasses, &result, &index); arm_max_f16(pOutputProbabilities, S->numberOfClasses, &result, &index);
return (index); return (index);
} }
#else #else
/**
* @brief Naive Gaussian Bayesian Estimator
*
* @param[in] *S points to a naive bayes instance structure
* @param[in] *in points to the elements of the input vector.
* @param[in] *pBuffer points to a buffer of length numberOfClasses
* @return The predicted class
*
*/
uint32_t arm_gaussian_naive_bayes_predict_f16(const arm_gaussian_naive_bayes_instance_f16 *S, uint32_t arm_gaussian_naive_bayes_predict_f16(const arm_gaussian_naive_bayes_instance_f16 *S,
const float16_t * in, const float16_t * in,
float16_t *pBuffer) float16_t *pOutputProbabilities,
float16_t *pBufferB)
{ {
uint32_t nbClass; uint32_t nbClass;
uint32_t nbDim; uint32_t nbDim;
const float16_t *pPrior = S->classPriors; const float16_t *pPrior = S->classPriors;
const float16_t *pTheta = S->theta; const float16_t *pTheta = S->theta;
const float16_t *pSigma = S->sigma; const float16_t *pSigma = S->sigma;
float16_t *buffer = pBuffer; float16_t *buffer = pOutputProbabilities;
const float16_t *pIn=in; const float16_t *pIn=in;
float16_t result; float16_t result;
_Float16 sigma; _Float16 sigma;
_Float16 tmp; _Float16 tmp;
_Float16 acc1,acc2; _Float16 acc1,acc2;
uint32_t index; uint32_t index;
(void)pBufferB;
pTheta=S->theta; pTheta=S->theta;
pSigma=S->sigma; pSigma=S->sigma;
@ -199,7 +193,7 @@ uint32_t arm_gaussian_naive_bayes_predict_f16(const arm_gaussian_naive_bayes_ins
buffer++; buffer++;
} }
arm_max_f16(pBuffer,S->numberOfClasses,&result,&index); arm_max_f16(pOutputProbabilities,S->numberOfClasses,&result,&index);
return(index); return(index);
} }

@ -43,11 +43,10 @@
* *
* @param[in] *S points to a naive bayes instance structure * @param[in] *S points to a naive bayes instance structure
* @param[in] *in points to the elements of the input vector. * @param[in] *in points to the elements of the input vector.
* @param[in] *pBuffer points to a buffer of length numberOfClasses * @param[out] *pOutputProbabilities points to a buffer of length numberOfClasses containing estimated probabilities
* @param[out] *pBufferB points to a temporary buffer of length numberOfClasses
* @return The predicted class * @return The predicted class
* *
* @par If the number of classes is big, MVE version will consume lot of
* stack since the log prior are computed on the stack.
* *
*/ */
@ -58,19 +57,21 @@
uint32_t arm_gaussian_naive_bayes_predict_f32(const arm_gaussian_naive_bayes_instance_f32 *S, uint32_t arm_gaussian_naive_bayes_predict_f32(const arm_gaussian_naive_bayes_instance_f32 *S,
const float32_t * in, const float32_t * in,
float32_t *pBuffer) float32_t *pOutputProbabilities,
float32_t *pBufferB
)
{ {
uint32_t nbClass; uint32_t nbClass;
const float32_t *pTheta = S->theta; const float32_t *pTheta = S->theta;
const float32_t *pSigma = S->sigma; const float32_t *pSigma = S->sigma;
float32_t *buffer = pBuffer; float32_t *buffer = pOutputProbabilities;
const float32_t *pIn = in; const float32_t *pIn = in;
float32_t result; float32_t result;
f32x4_t vsigma; f32x4_t vsigma;
float32_t tmp; float32_t tmp;
f32x4_t vacc1, vacc2; f32x4_t vacc1, vacc2;
uint32_t index; uint32_t index;
float32_t logclassPriors[S->numberOfClasses]; float32_t *logclassPriors=pBufferB;
float32_t *pLogPrior = logclassPriors; float32_t *pLogPrior = logclassPriors;
arm_vlog_f32((float32_t *) S->classPriors, logclassPriors, S->numberOfClasses); arm_vlog_f32((float32_t *) S->classPriors, logclassPriors, S->numberOfClasses);
@ -133,7 +134,7 @@ uint32_t arm_gaussian_naive_bayes_predict_f32(const arm_gaussian_naive_bayes_ins
buffer++; buffer++;
} }
arm_max_f32(pBuffer, S->numberOfClasses, &result, &index); arm_max_f32(pOutputProbabilities, S->numberOfClasses, &result, &index);
return (index); return (index);
} }
@ -148,7 +149,8 @@ uint32_t arm_gaussian_naive_bayes_predict_f32(const arm_gaussian_naive_bayes_ins
uint32_t arm_gaussian_naive_bayes_predict_f32(const arm_gaussian_naive_bayes_instance_f32 *S, uint32_t arm_gaussian_naive_bayes_predict_f32(const arm_gaussian_naive_bayes_instance_f32 *S,
const float32_t * in, const float32_t * in,
float32_t *pBuffer) float32_t *pOutputProbabilities,
float32_t *pBufferB)
{ {
const float32_t *pPrior = S->classPriors; const float32_t *pPrior = S->classPriors;
@ -159,7 +161,7 @@ uint32_t arm_gaussian_naive_bayes_predict_f32(const arm_gaussian_naive_bayes_ins
const float32_t *pTheta1 = S->theta + S->vectorDimension; const float32_t *pTheta1 = S->theta + S->vectorDimension;
const float32_t *pSigma1 = S->sigma + S->vectorDimension; const float32_t *pSigma1 = S->sigma + S->vectorDimension;
float32_t *buffer = pBuffer; float32_t *buffer = pOutputProbabilities;
const float32_t *pIn=in; const float32_t *pIn=in;
float32_t result; float32_t result;
@ -174,6 +176,7 @@ uint32_t arm_gaussian_naive_bayes_predict_f32(const arm_gaussian_naive_bayes_ins
float32x2_t tmpV2; float32x2_t tmpV2;
float32x4_t thetaV,thetaV1; float32x4_t thetaV,thetaV1;
float32x4_t inV; float32x4_t inV;
(void)pBufferB;
epsilonV = vdupq_n_f32(S->epsilon); epsilonV = vdupq_n_f32(S->epsilon);
@ -322,32 +325,24 @@ uint32_t arm_gaussian_naive_bayes_predict_f32(const arm_gaussian_naive_bayes_ins
classBlkCnt--; classBlkCnt--;
} }
arm_max_f32(pBuffer,S->numberOfClasses,&result,&index); arm_max_f32(pOutputProbabilities,S->numberOfClasses,&result,&index);
return(index); return(index);
} }
#else #else
/**
* @brief Naive Gaussian Bayesian Estimator
*
* @param[in] *S points to a naive bayes instance structure
* @param[in] *in points to the elements of the input vector.
* @param[in] *pBuffer points to a buffer of length numberOfClasses
* @return The predicted class
*
*/
uint32_t arm_gaussian_naive_bayes_predict_f32(const arm_gaussian_naive_bayes_instance_f32 *S, uint32_t arm_gaussian_naive_bayes_predict_f32(const arm_gaussian_naive_bayes_instance_f32 *S,
const float32_t * in, const float32_t * in,
float32_t *pBuffer) float32_t *pOutputProbabilities,
float32_t *pBufferB)
{ {
uint32_t nbClass; uint32_t nbClass;
uint32_t nbDim; uint32_t nbDim;
const float32_t *pPrior = S->classPriors; const float32_t *pPrior = S->classPriors;
const float32_t *pTheta = S->theta; const float32_t *pTheta = S->theta;
const float32_t *pSigma = S->sigma; const float32_t *pSigma = S->sigma;
float32_t *buffer = pBuffer; float32_t *buffer = pOutputProbabilities;
const float32_t *pIn=in; const float32_t *pIn=in;
float32_t result; float32_t result;
float32_t sigma; float32_t sigma;
@ -355,6 +350,8 @@ uint32_t arm_gaussian_naive_bayes_predict_f32(const arm_gaussian_naive_bayes_ins
float32_t acc1,acc2; float32_t acc1,acc2;
uint32_t index; uint32_t index;
(void)pBufferB;
pTheta=S->theta; pTheta=S->theta;
pSigma=S->sigma; pSigma=S->sigma;
@ -386,7 +383,7 @@ uint32_t arm_gaussian_naive_bayes_predict_f32(const arm_gaussian_naive_bayes_ins
buffer++; buffer++;
} }
arm_max_f32(pBuffer,S->numberOfClasses,&result,&index); arm_max_f32(pOutputProbabilities,S->numberOfClasses,&result,&index);
return(index); return(index);
} }

@ -79,7 +79,7 @@ void arm_cmplx_mult_real_f16(
float16_t * pCmplxDst, float16_t * pCmplxDst,
uint32_t numSamples) uint32_t numSamples)
{ {
const static uint16_t stride_cmplx_x_real_16[8] = { static const uint16_t stride_cmplx_x_real_16[8] = {
0, 0, 1, 1, 2, 2, 3, 3 0, 0, 1, 1, 2, 2, 3, 3
}; };
uint32_t blockSizeC = numSamples * CMPLX_DIM; /* loop counters */ uint32_t blockSizeC = numSamples * CMPLX_DIM; /* loop counters */

@ -77,7 +77,7 @@ void arm_cmplx_mult_real_f32(
float32_t * pCmplxDst, float32_t * pCmplxDst,
uint32_t numSamples) uint32_t numSamples)
{ {
const static uint32_t stride_cmplx_x_real_32[4] = { 0, 0, 1, 1 }; static const uint32_t stride_cmplx_x_real_32[4] = { 0, 0, 1, 1 };
uint32_t blockSizeC = numSamples * CMPLX_DIM; /* loop counters */ uint32_t blockSizeC = numSamples * CMPLX_DIM; /* loop counters */
uint32_t blkCnt; uint32_t blkCnt;

@ -57,7 +57,7 @@ void arm_cmplx_mult_real_q15(
q15_t * pCmplxDst, q15_t * pCmplxDst,
uint32_t numSamples) uint32_t numSamples)
{ {
const static uint16_t stride_cmplx_x_real_16[8] = { static const uint16_t stride_cmplx_x_real_16[8] = {
0, 0, 1, 1, 2, 2, 3, 3 0, 0, 1, 1, 2, 2, 3, 3
}; };
q15x8_t rVec; q15x8_t rVec;

@ -58,7 +58,7 @@ void arm_cmplx_mult_real_q31(
uint32_t numSamples) uint32_t numSamples)
{ {
const static uint32_t stride_cmplx_x_real_32[4] = { static const uint32_t stride_cmplx_x_real_32[4] = {
0, 0, 1, 1 0, 0, 1, 1
}; };
q31x4_t rVec; q31x4_t rVec;

@ -142,7 +142,7 @@ arm_status arm_conv_partial_f32(
blockSize3 = ((int32_t)check > (int32_t)srcALen) ? (int32_t)check - (int32_t)srcALen : 0; blockSize3 = ((int32_t)check > (int32_t)srcALen) ? (int32_t)check - (int32_t)srcALen : 0;
blockSize3 = ((int32_t)firstIndex > (int32_t)srcALen - 1) ? blockSize3 - (int32_t)firstIndex + (int32_t)srcALen : blockSize3; blockSize3 = ((int32_t)firstIndex > (int32_t)srcALen - 1) ? blockSize3 - (int32_t)firstIndex + (int32_t)srcALen : blockSize3;
blockSize1 = ((int32_t) srcBLen - 1) - (int32_t) firstIndex; blockSize1 = ((int32_t) srcBLen - 1) - (int32_t) firstIndex;
blockSize1 = (blockSize1 > 0) ? ((check > (srcBLen - 1U)) ? blockSize1 : numPoints) : 0; blockSize1 = (blockSize1 > 0) ? ((check > (srcBLen - 1U)) ? blockSize1 : (int32_t)numPoints) : 0;
blockSize2 = ((int32_t) check - blockSize3) - (blockSize1 + (int32_t) firstIndex); blockSize2 = ((int32_t) check - blockSize3) - (blockSize1 + (int32_t) firstIndex);
blockSize2 = (blockSize2 > 0) ? blockSize2 : 0; blockSize2 = (blockSize2 > 0) ? blockSize2 : 0;

@ -118,7 +118,7 @@ arm_status arm_conv_partial_fast_q31(
blockSize3 = ((int32_t)check > (int32_t)srcALen) ? (int32_t)check - (int32_t)srcALen : 0; blockSize3 = ((int32_t)check > (int32_t)srcALen) ? (int32_t)check - (int32_t)srcALen : 0;
blockSize3 = ((int32_t)firstIndex > (int32_t)srcALen - 1) ? blockSize3 - (int32_t)firstIndex + (int32_t)srcALen : blockSize3; blockSize3 = ((int32_t)firstIndex > (int32_t)srcALen - 1) ? blockSize3 - (int32_t)firstIndex + (int32_t)srcALen : blockSize3;
blockSize1 = ((int32_t) srcBLen - 1) - (int32_t) firstIndex; blockSize1 = ((int32_t) srcBLen - 1) - (int32_t) firstIndex;
blockSize1 = (blockSize1 > 0) ? ((check > (srcBLen - 1U)) ? blockSize1 : numPoints) : 0; blockSize1 = (blockSize1 > 0) ? ((check > (srcBLen - 1U)) ? blockSize1 : (int32_t)numPoints) : 0;
blockSize2 = (int32_t) check - ((blockSize3 + blockSize1) + (int32_t) firstIndex); blockSize2 = (int32_t) check - ((blockSize3 + blockSize1) + (int32_t) firstIndex);
blockSize2 = (blockSize2 > 0) ? blockSize2 : 0; blockSize2 = (blockSize2 > 0) ? blockSize2 : 0;

@ -119,7 +119,7 @@ arm_status arm_conv_partial_q15(
blockSize3 = ((int32_t)check > (int32_t)srcALen) ? (int32_t)check - (int32_t)srcALen : 0; blockSize3 = ((int32_t)check > (int32_t)srcALen) ? (int32_t)check - (int32_t)srcALen : 0;
blockSize3 = ((int32_t)firstIndex > (int32_t)srcALen - 1) ? blockSize3 - (int32_t)firstIndex + (int32_t)srcALen : blockSize3; blockSize3 = ((int32_t)firstIndex > (int32_t)srcALen - 1) ? blockSize3 - (int32_t)firstIndex + (int32_t)srcALen : blockSize3;
blockSize1 = ((int32_t) srcBLen - 1) - (int32_t) firstIndex; blockSize1 = ((int32_t) srcBLen - 1) - (int32_t) firstIndex;
blockSize1 = (blockSize1 > 0) ? ((check > (srcBLen - 1U)) ? blockSize1 : numPoints) : 0; blockSize1 = (blockSize1 > 0) ? ((check > (srcBLen - 1U)) ? blockSize1 : (int32_t)numPoints) : 0;
blockSize2 = (int32_t) check - ((blockSize3 + blockSize1) + (int32_t) firstIndex); blockSize2 = (int32_t) check - ((blockSize3 + blockSize1) + (int32_t) firstIndex);
blockSize2 = (blockSize2 > 0) ? blockSize2 : 0; blockSize2 = (blockSize2 > 0) ? blockSize2 : 0;

@ -121,7 +121,7 @@ arm_status arm_conv_partial_q31(
blockSize3 = ((int32_t)check > (int32_t)srcALen) ? (int32_t)check - (int32_t)srcALen : 0; blockSize3 = ((int32_t)check > (int32_t)srcALen) ? (int32_t)check - (int32_t)srcALen : 0;
blockSize3 = ((int32_t)firstIndex > (int32_t)srcALen - 1) ? blockSize3 - (int32_t)firstIndex + (int32_t)srcALen : blockSize3; blockSize3 = ((int32_t)firstIndex > (int32_t)srcALen - 1) ? blockSize3 - (int32_t)firstIndex + (int32_t)srcALen : blockSize3;
blockSize1 = ((int32_t) srcBLen - 1) - (int32_t) firstIndex; blockSize1 = ((int32_t) srcBLen - 1) - (int32_t) firstIndex;
blockSize1 = (blockSize1 > 0) ? ((check > (srcBLen - 1U)) ? blockSize1 : numPoints) : 0; blockSize1 = (blockSize1 > 0) ? ((check > (srcBLen - 1U)) ? blockSize1 : (int32_t)numPoints) : 0;
blockSize2 = (int32_t) check - ((blockSize3 + blockSize1) + (int32_t) firstIndex); blockSize2 = (int32_t) check - ((blockSize3 + blockSize1) + (int32_t) firstIndex);
blockSize2 = (blockSize2 > 0) ? blockSize2 : 0; blockSize2 = (blockSize2 > 0) ? blockSize2 : 0;

@ -123,7 +123,7 @@ arm_status arm_conv_partial_q7(
blockSize3 = ((int32_t)check > (int32_t)srcALen) ? (int32_t)check - (int32_t)srcALen : 0; blockSize3 = ((int32_t)check > (int32_t)srcALen) ? (int32_t)check - (int32_t)srcALen : 0;
blockSize3 = ((int32_t)firstIndex > (int32_t)srcALen - 1) ? blockSize3 - (int32_t)firstIndex + (int32_t)srcALen : blockSize3; blockSize3 = ((int32_t)firstIndex > (int32_t)srcALen - 1) ? blockSize3 - (int32_t)firstIndex + (int32_t)srcALen : blockSize3;
blockSize1 = ((int32_t) srcBLen - 1) - (int32_t) firstIndex; blockSize1 = ((int32_t) srcBLen - 1) - (int32_t) firstIndex;
blockSize1 = (blockSize1 > 0) ? ((check > (srcBLen - 1U)) ? blockSize1 : numPoints) : 0; blockSize1 = (blockSize1 > 0) ? ((check > (srcBLen - 1U)) ? blockSize1 : (int32_t)numPoints) : 0;
blockSize2 = (int32_t) check - ((blockSize3 + blockSize1) + (int32_t) firstIndex); blockSize2 = (int32_t) check - ((blockSize3 + blockSize1) + (int32_t) firstIndex);
blockSize2 = (blockSize2 > 0) ? blockSize2 : 0; blockSize2 = (blockSize2 > 0) ? blockSize2 : 0;

@ -59,6 +59,7 @@
vecAcc0 = vfmaq(vecAcc0, vecIn0, c[i]); \ vecAcc0 = vfmaq(vecAcc0, vecIn0, c[i]); \
} }
#define NB_TAPS 4
__STATIC_INLINE void arm_fir_f16_1_4_mve(const arm_fir_instance_f16 * S, __STATIC_INLINE void arm_fir_f16_1_4_mve(const arm_fir_instance_f16 * S,
const float16_t * __restrict pSrc, const float16_t * __restrict pSrc,
float16_t * __restrict pDst, uint32_t blockSize) float16_t * __restrict pDst, uint32_t blockSize)
@ -74,7 +75,6 @@ __STATIC_INLINE void arm_fir_f16_1_4_mve(const arm_fir_instance_f16 * S,
int32_t blkCnt; int32_t blkCnt;
float16x8_t vecIn0; float16x8_t vecIn0;
float16x8_t vecAcc0; float16x8_t vecAcc0;
const int NB_TAPS=4;
float16_t c[NB_TAPS]; float16_t c[NB_TAPS];
@ -147,8 +147,9 @@ __STATIC_INLINE void arm_fir_f16_1_4_mve(const arm_fir_instance_f16 * S,
} }
} }
#undef NB_TAPS
#define NB_TAPS 8
__STATIC_INLINE void arm_fir_f16_5_8_mve(const arm_fir_instance_f16 * S, __STATIC_INLINE void arm_fir_f16_5_8_mve(const arm_fir_instance_f16 * S,
const float16_t * __restrict pSrc, const float16_t * __restrict pSrc,
float16_t * __restrict pDst, uint32_t blockSize) float16_t * __restrict pDst, uint32_t blockSize)
@ -164,7 +165,6 @@ __STATIC_INLINE void arm_fir_f16_5_8_mve(const arm_fir_instance_f16 * S,
int32_t blkCnt; int32_t blkCnt;
float16x8_t vecIn0; float16x8_t vecIn0;
float16x8_t vecAcc0; float16x8_t vecAcc0;
const int NB_TAPS=8;
float16_t c[NB_TAPS]; float16_t c[NB_TAPS];
@ -237,7 +237,7 @@ __STATIC_INLINE void arm_fir_f16_5_8_mve(const arm_fir_instance_f16 * S,
} }
} }
#undef NB_TAPS
void arm_fir_f16(const arm_fir_instance_f16 * S, void arm_fir_f16(const arm_fir_instance_f16 * S,
const float16_t * pSrc, const float16_t * pSrc,

@ -160,6 +160,7 @@
} }
#define NB_TAPS 4
__STATIC_INLINE void arm_fir_f32_1_4_mve(const arm_fir_instance_f32 * S, __STATIC_INLINE void arm_fir_f32_1_4_mve(const arm_fir_instance_f32 * S,
const float32_t * __restrict pSrc, const float32_t * __restrict pSrc,
float32_t * __restrict pDst, uint32_t blockSize) float32_t * __restrict pDst, uint32_t blockSize)
@ -176,7 +177,6 @@ __STATIC_INLINE void arm_fir_f32_1_4_mve(const arm_fir_instance_f32 * S,
int32_t blkCnt; int32_t blkCnt;
float32x4_t vecIn0; float32x4_t vecIn0;
float32x4_t vecAcc0; float32x4_t vecAcc0;
const int NB_TAPS=4;
float32_t c[NB_TAPS]; float32_t c[NB_TAPS];
const float32_t *pCoeffsCur = pCoeffs; const float32_t *pCoeffsCur = pCoeffs;
@ -243,8 +243,7 @@ __STATIC_INLINE void arm_fir_f32_1_4_mve(const arm_fir_instance_f32 * S,
} }
while (blkCnt > 0); while (blkCnt > 0);
} }
#undef NB_TAPS
__STATIC_INLINE void arm_fir_f32_5_8_mve(const arm_fir_instance_f32 * S, __STATIC_INLINE void arm_fir_f32_5_8_mve(const arm_fir_instance_f32 * S,
const float32_t * __restrict pSrc, const float32_t * __restrict pSrc,

@ -86,14 +86,13 @@
uint32_t numTaps = S->numTaps; /* Number of filter coefficients in the filter */\ uint32_t numTaps = S->numTaps; /* Number of filter coefficients in the filter */\
int32_t blkCnt; \ int32_t blkCnt; \
q15x8_t vecIn0; \ q15x8_t vecIn0; \
const int32_t nbVecTaps = (NBTAPS / 8); \
\ \
/* \ /* \
* load coefs \ * load coefs \
*/ \ */ \
q15x8_t vecCoeffs[nbVecTaps]; \ q15x8_t vecCoeffs[NBVECTAPS]; \
\ \
for (int i = 0; i < nbVecTaps; i++) \ for (int i = 0; i < NBVECTAPS; i++) \
vecCoeffs[i] = vldrhq_s16(pCoeffs + 8 * i); \ vecCoeffs[i] = vldrhq_s16(pCoeffs + 8 * i); \
\ \
/* \ /* \
@ -114,7 +113,7 @@
pStateCur += 4; \ pStateCur += 4; \
pTempSrc += 4; \ pTempSrc += 4; \
\ \
FIR_Q15_CORE(pOutput, 4, nbVecTaps, pSamples, vecCoeffs); \ FIR_Q15_CORE(pOutput, 4, NBVECTAPS, pSamples, vecCoeffs); \
pSamples += 4; \ pSamples += 4; \
\ \
blkCnt--; \ blkCnt--; \
@ -126,7 +125,7 @@
for (int i = 0; i < residual; i++) \ for (int i = 0; i < residual; i++) \
*pStateCur++ = *pTempSrc++; \ *pStateCur++ = *pTempSrc++; \
\ \
FIR_Q15_CORE(pOutput, residual, nbVecTaps, pSamples, vecCoeffs); \ FIR_Q15_CORE(pOutput, residual, NBVECTAPS, pSamples, vecCoeffs); \
\ \
/* \ /* \
* Copy the samples back into the history buffer start \ * Copy the samples back into the history buffer start \
@ -156,7 +155,9 @@ static void arm_fir_q15_25_32_mve(const arm_fir_instance_q15 * S,
q15_t * __restrict pDst, uint32_t blockSize) q15_t * __restrict pDst, uint32_t blockSize)
{ {
#define NBTAPS 32 #define NBTAPS 32
#define NBVECTAPS (NBTAPS / 8)
FIR_Q15_MAIN_CORE(); FIR_Q15_MAIN_CORE();
#undef NBVECTAPS
#undef NBTAPS #undef NBTAPS
} }
@ -165,7 +166,9 @@ static void arm_fir_q15_17_24_mve(const arm_fir_instance_q15 * S,
q15_t * __restrict pDst, uint32_t blockSize) q15_t * __restrict pDst, uint32_t blockSize)
{ {
#define NBTAPS 24 #define NBTAPS 24
#define NBVECTAPS (NBTAPS / 8)
FIR_Q15_MAIN_CORE(); FIR_Q15_MAIN_CORE();
#undef NBVECTAPS
#undef NBTAPS #undef NBTAPS
} }
@ -175,7 +178,9 @@ static void arm_fir_q15_9_16_mve(const arm_fir_instance_q15 * S,
q15_t * __restrict pDst, uint32_t blockSize) q15_t * __restrict pDst, uint32_t blockSize)
{ {
#define NBTAPS 16 #define NBTAPS 16
#define NBVECTAPS (NBTAPS / 8)
FIR_Q15_MAIN_CORE(); FIR_Q15_MAIN_CORE();
#undef NBVECTAPS
#undef NBTAPS #undef NBTAPS
} }
@ -184,7 +189,9 @@ static void arm_fir_q15_1_8_mve(const arm_fir_instance_q15 * S,
q15_t * __restrict pDst, uint32_t blockSize) q15_t * __restrict pDst, uint32_t blockSize)
{ {
#define NBTAPS 8 #define NBTAPS 8
#define NBVECTAPS (NBTAPS / 8)
FIR_Q15_MAIN_CORE(); FIR_Q15_MAIN_CORE();
#undef NBVECTAPS
#undef NBTAPS #undef NBTAPS
} }

@ -117,14 +117,13 @@
q31_t *pTempDest; /* Temporary pointer to the destination buffer */\ q31_t *pTempDest; /* Temporary pointer to the destination buffer */\
uint32_t numTaps = S->numTaps; /* Number of filter coefficients in the filter */\ uint32_t numTaps = S->numTaps; /* Number of filter coefficients in the filter */\
int32_t blkCnt; \ int32_t blkCnt; \
const int32_t nbVecTaps = (NBTAPS / 4); \
\ \
/* \ /* \
* load coefs \ * load coefs \
*/ \ */ \
q31x4_t vecCoeffs[nbVecTaps]; \ q31x4_t vecCoeffs[NBVECTAPS]; \
\ \
for (int i = 0; i < nbVecTaps; i++) \ for (int i = 0; i < NBVECTAPS; i++) \
vecCoeffs[i] = vld1q(pCoeffs + 4 * i); \ vecCoeffs[i] = vld1q(pCoeffs + 4 * i); \
\ \
/* \ /* \
@ -145,7 +144,7 @@
pStateCur += 4; \ pStateCur += 4; \
pTempSrc += 4; \ pTempSrc += 4; \
\ \
FIR_Q31_CORE(4, nbVecTaps, pSamples, vecCoeffs); \ FIR_Q31_CORE(4, NBVECTAPS, pSamples, vecCoeffs); \
\ \
pSamples += 4; \ pSamples += 4; \
/* \ /* \
@ -162,7 +161,7 @@
for (int i = 0; i < residual; i++) \ for (int i = 0; i < residual; i++) \
*pStateCur++ = *pTempSrc++; \ *pStateCur++ = *pTempSrc++; \
\ \
FIR_Q31_CORE(3, nbVecTaps, pSamples, vecCoeffs); \ FIR_Q31_CORE(3, NBVECTAPS, pSamples, vecCoeffs); \
} \ } \
break; \ break; \
\ \
@ -171,7 +170,7 @@
for (int i = 0; i < residual; i++) \ for (int i = 0; i < residual; i++) \
*pStateCur++ = *pTempSrc++; \ *pStateCur++ = *pTempSrc++; \
\ \
FIR_Q31_CORE(2, nbVecTaps, pSamples, vecCoeffs); \ FIR_Q31_CORE(2, NBVECTAPS, pSamples, vecCoeffs); \
} \ } \
break; \ break; \
\ \
@ -180,7 +179,7 @@
for (int i = 0; i < residual; i++) \ for (int i = 0; i < residual; i++) \
*pStateCur++ = *pTempSrc++; \ *pStateCur++ = *pTempSrc++; \
\ \
FIR_Q31_CORE(1, nbVecTaps, pSamples, vecCoeffs); \ FIR_Q31_CORE(1, NBVECTAPS, pSamples, vecCoeffs); \
} \ } \
break; \ break; \
} \ } \
@ -382,7 +381,9 @@ static void arm_fir_q31_5_8_mve(const arm_fir_instance_q31 * S,
q31_t * __restrict pDst, uint32_t blockSize) q31_t * __restrict pDst, uint32_t blockSize)
{ {
#define NBTAPS 8 #define NBTAPS 8
#define NBVECTAPS (NBTAPS / 4)
FIR_Q31_MAIN_CORE(); FIR_Q31_MAIN_CORE();
#undef NBVECTAPS
#undef NBTAPS #undef NBTAPS
} }
@ -392,7 +393,9 @@ static void arm_fir_q31_9_12_mve(const arm_fir_instance_q31 * S,
q31_t * __restrict pDst, uint32_t blockSize) q31_t * __restrict pDst, uint32_t blockSize)
{ {
#define NBTAPS 12 #define NBTAPS 12
#define NBVECTAPS (NBTAPS / 4)
FIR_Q31_MAIN_CORE(); FIR_Q31_MAIN_CORE();
#undef NBVECTAPS
#undef NBTAPS #undef NBTAPS
} }
@ -402,7 +405,9 @@ static void arm_fir_q31_13_16_mve(const arm_fir_instance_q31 * S,
q31_t * __restrict pDst, uint32_t blockSize) q31_t * __restrict pDst, uint32_t blockSize)
{ {
#define NBTAPS 16 #define NBTAPS 16
#define NBVECTAPS (NBTAPS / 4)
FIR_Q31_MAIN_CORE(); FIR_Q31_MAIN_CORE();
#undef NBVECTAPS
#undef NBTAPS #undef NBTAPS
} }
@ -412,7 +417,9 @@ static void arm_fir_q31_17_20_mve(const arm_fir_instance_q31 * S,
q31_t * __restrict pDst, uint32_t blockSize) q31_t * __restrict pDst, uint32_t blockSize)
{ {
#define NBTAPS 20 #define NBTAPS 20
#define NBVECTAPS (NBTAPS / 4)
FIR_Q31_MAIN_CORE(); FIR_Q31_MAIN_CORE();
#undef NBVECTAPS
#undef NBTAPS #undef NBTAPS
} }
@ -422,7 +429,9 @@ static void arm_fir_q31_21_24_mve(const arm_fir_instance_q31 * S,
q31_t * __restrict pDst, uint32_t blockSize) q31_t * __restrict pDst, uint32_t blockSize)
{ {
#define NBTAPS 24 #define NBTAPS 24
#define NBVECTAPS (NBTAPS / 4)
FIR_Q31_MAIN_CORE(); FIR_Q31_MAIN_CORE();
#undef NBVECTAPS
#undef NBTAPS #undef NBTAPS
} }
@ -432,7 +441,9 @@ static void arm_fir_q31_25_28_mve(const arm_fir_instance_q31 * S,
q31_t * __restrict pDst, uint32_t blockSize) q31_t * __restrict pDst, uint32_t blockSize)
{ {
#define NBTAPS 28 #define NBTAPS 28
#define NBVECTAPS (NBTAPS / 4)
FIR_Q31_MAIN_CORE(); FIR_Q31_MAIN_CORE();
#undef NBVECTAPS
#undef NBTAPS #undef NBTAPS
} }

@ -81,14 +81,13 @@
uint32_t numTaps = S->numTaps; /* Number of filter coefficients in the filter */\ uint32_t numTaps = S->numTaps; /* Number of filter coefficients in the filter */\
int32_t blkCnt; \ int32_t blkCnt; \
q7x16_t vecIn0; \ q7x16_t vecIn0; \
const int32_t nbVecTaps = (NBTAPS / 16); \
\ \
/* \ /* \
* load coefs \ * load coefs \
*/ \ */ \
q7x16_t vecCoeffs[nbVecTaps]; \ q7x16_t vecCoeffs[NBVECTAPS]; \
\ \
for (int i = 0; i < nbVecTaps; i++) \ for (int i = 0; i < NBVECTAPS; i++) \
vecCoeffs[i] = vldrbq_s8(pCoeffs + 16 * i); \ vecCoeffs[i] = vldrbq_s8(pCoeffs + 16 * i); \
\ \
/* \ /* \
@ -109,7 +108,7 @@
pStateCur += 4; \ pStateCur += 4; \
pTempSrc += 4; \ pTempSrc += 4; \
\ \
FIR_Q7_CORE(pOutput, 4, nbVecTaps, pSamples, vecCoeffs); \ FIR_Q7_CORE(pOutput, 4, NBVECTAPS, pSamples, vecCoeffs); \
pSamples += 4; \ pSamples += 4; \
\ \
blkCnt--; \ blkCnt--; \
@ -121,7 +120,7 @@
for (int i = 0; i < residual; i++) \ for (int i = 0; i < residual; i++) \
*pStateCur++ = *pTempSrc++; \ *pStateCur++ = *pTempSrc++; \
\ \
FIR_Q7_CORE(pOutput, residual, nbVecTaps, pSamples, vecCoeffs); \ FIR_Q7_CORE(pOutput, residual, NBVECTAPS, pSamples, vecCoeffs); \
\ \
\ \
/* \ /* \
@ -147,7 +146,9 @@ static void arm_fir_q7_49_64_mve(const arm_fir_instance_q7 * S,
q7_t * __restrict pDst, uint32_t blockSize) q7_t * __restrict pDst, uint32_t blockSize)
{ {
#define NBTAPS 64 #define NBTAPS 64
#define NBVECTAPS (NBTAPS / 16)
FIR_Q7_MAIN_CORE(); FIR_Q7_MAIN_CORE();
#undef NBVECTAPS
#undef NBTAPS #undef NBTAPS
} }
@ -157,7 +158,9 @@ void arm_fir_q7_33_48_mve(const arm_fir_instance_q7 * S,
q7_t * __restrict pDst, uint32_t blockSize) q7_t * __restrict pDst, uint32_t blockSize)
{ {
#define NBTAPS 48 #define NBTAPS 48
#define NBVECTAPS (NBTAPS / 16)
FIR_Q7_MAIN_CORE(); FIR_Q7_MAIN_CORE();
#undef NBVECTAPS
#undef NBTAPS #undef NBTAPS
} }
@ -166,7 +169,9 @@ static void arm_fir_q7_17_32_mve(const arm_fir_instance_q7 * S,
q7_t * __restrict pDst, uint32_t blockSize) q7_t * __restrict pDst, uint32_t blockSize)
{ {
#define NBTAPS 32 #define NBTAPS 32
#define NBVECTAPS (NBTAPS / 16)
FIR_Q7_MAIN_CORE(); FIR_Q7_MAIN_CORE();
#undef NBVECTAPS
#undef NBTAPS #undef NBTAPS
} }
@ -176,7 +181,9 @@ void arm_fir_q7_1_16_mve(const arm_fir_instance_q7 * S,
q7_t * __restrict pDst, uint32_t blockSize) q7_t * __restrict pDst, uint32_t blockSize)
{ {
#define NBTAPS 16 #define NBTAPS 16
#define NBVECTAPS (NBTAPS / 16)
FIR_Q7_MAIN_CORE(); FIR_Q7_MAIN_CORE();
#undef NBVECTAPS
#undef NBTAPS #undef NBTAPS
} }

@ -17,6 +17,7 @@ class BayesF16:public Client::Suite
Client::Pattern<int16_t> dims; Client::Pattern<int16_t> dims;
Client::LocalPattern<float16_t> outputProbas; Client::LocalPattern<float16_t> outputProbas;
Client::LocalPattern<float16_t> temp;
Client::LocalPattern<int16_t> outputPredicts; Client::LocalPattern<int16_t> outputPredicts;
// Reference patterns are not loaded when we are in dump mode // Reference patterns are not loaded when we are in dump mode
@ -32,6 +33,6 @@ class BayesF16:public Client::Suite
arm_gaussian_naive_bayes_instance_f16 bayes; arm_gaussian_naive_bayes_instance_f16 bayes;
const float16_t *inp; const float16_t *inp;
float16_t *bufp; float16_t *bufp,*tempp;
}; };

@ -17,6 +17,7 @@ class BayesF32:public Client::Suite
Client::Pattern<int16_t> dims; Client::Pattern<int16_t> dims;
Client::LocalPattern<float32_t> outputProbas; Client::LocalPattern<float32_t> outputProbas;
Client::LocalPattern<float32_t> temp;
Client::LocalPattern<int16_t> outputPredicts; Client::LocalPattern<int16_t> outputPredicts;
// Reference patterns are not loaded when we are in dump mode // Reference patterns are not loaded when we are in dump mode
@ -32,6 +33,6 @@ class BayesF32:public Client::Suite
arm_gaussian_naive_bayes_instance_f32 bayes; arm_gaussian_naive_bayes_instance_f32 bayes;
const float32_t *inp; const float32_t *inp;
float32_t *bufp; float32_t *bufp,*tempp;
}; };

@ -17,6 +17,7 @@ class BayesF16:public Client::Suite
Client::Pattern<int16_t> dims; Client::Pattern<int16_t> dims;
Client::LocalPattern<float16_t> outputProbas; Client::LocalPattern<float16_t> outputProbas;
Client::LocalPattern<float16_t> temp;
Client::LocalPattern<int16_t> outputPredicts; Client::LocalPattern<int16_t> outputPredicts;
// Reference patterns are not loaded when we are in dump mode // Reference patterns are not loaded when we are in dump mode

@ -17,6 +17,7 @@ class BayesF32:public Client::Suite
Client::Pattern<int16_t> dims; Client::Pattern<int16_t> dims;
Client::LocalPattern<float32_t> outputProbas; Client::LocalPattern<float32_t> outputProbas;
Client::LocalPattern<float32_t> temp;
Client::LocalPattern<int16_t> outputPredicts; Client::LocalPattern<int16_t> outputPredicts;
// Reference patterns are not loaded when we are in dump mode // Reference patterns are not loaded when we are in dump mode

@ -11,7 +11,7 @@
p = arm_gaussian_naive_bayes_predict_f16(&bayes, p = arm_gaussian_naive_bayes_predict_f16(&bayes,
inp, inp,
bufp); bufp,tempp);
} }
@ -51,6 +51,7 @@
predicts.reload(BayesF16::PREDICTS2_S16_ID,mgr); predicts.reload(BayesF16::PREDICTS2_S16_ID,mgr);
outputProbas.create(this->classNb,BayesF16::OUT_PROBA_F16_ID,mgr); outputProbas.create(this->classNb,BayesF16::OUT_PROBA_F16_ID,mgr);
temp.create(this->classNb,BayesF16::OUT_PROBA_F16_ID,mgr);
bayes.vectorDimension=this->vecDim; bayes.vectorDimension=this->vecDim;
bayes.numberOfClasses=this->classNb; bayes.numberOfClasses=this->classNb;
@ -62,6 +63,7 @@
this->inp = input.ptr() + nbi; this->inp = input.ptr() + nbi;
this->bufp = outputProbas.ptr(); this->bufp = outputProbas.ptr();
this->tempp = temp.ptr();
} }
break; break;

@ -11,7 +11,7 @@
p = arm_gaussian_naive_bayes_predict_f32(&bayes, p = arm_gaussian_naive_bayes_predict_f32(&bayes,
inp, inp,
bufp); bufp,tempp);
} }
@ -51,6 +51,7 @@
predicts.reload(BayesF32::PREDICTS2_S16_ID,mgr); predicts.reload(BayesF32::PREDICTS2_S16_ID,mgr);
outputProbas.create(this->classNb,BayesF32::OUT_PROBA_F32_ID,mgr); outputProbas.create(this->classNb,BayesF32::OUT_PROBA_F32_ID,mgr);
temp.create(this->classNb,BayesF32::OUT_PROBA_F32_ID,mgr);
bayes.vectorDimension=this->vecDim; bayes.vectorDimension=this->vecDim;
bayes.numberOfClasses=this->classNb; bayes.numberOfClasses=this->classNb;
@ -62,6 +63,7 @@
this->inp = input.ptr() + nbi; this->inp = input.ptr() + nbi;
this->bufp = outputProbas.ptr(); this->bufp = outputProbas.ptr();
this->tempp = temp.ptr();
} }
break; break;

@ -10,6 +10,7 @@
const float16_t *inp = input.ptr(); const float16_t *inp = input.ptr();
float16_t *bufp = outputProbas.ptr(); float16_t *bufp = outputProbas.ptr();
float16_t *tempp = temp.ptr();
int16_t *p = outputPredicts.ptr(); int16_t *p = outputPredicts.ptr();
@ -17,7 +18,7 @@
{ {
*p = arm_gaussian_naive_bayes_predict_f16(&bayes, *p = arm_gaussian_naive_bayes_predict_f16(&bayes,
inp, inp,
bufp); bufp,tempp);
inp += this->vecDim; inp += this->vecDim;
bufp += this->classNb; bufp += this->classNb;
@ -62,6 +63,7 @@
predicts.reload(BayesF16::PREDICTS1_S16_ID,mgr); predicts.reload(BayesF16::PREDICTS1_S16_ID,mgr);
outputProbas.create(this->nbPatterns*this->classNb,BayesF16::OUT_PROBA_F16_ID,mgr); outputProbas.create(this->nbPatterns*this->classNb,BayesF16::OUT_PROBA_F16_ID,mgr);
temp.create(this->nbPatterns*this->classNb,BayesF16::OUT_PROBA_F16_ID,mgr);
outputPredicts.create(this->nbPatterns,BayesF16::OUT_PREDICT_S16_ID,mgr); outputPredicts.create(this->nbPatterns,BayesF16::OUT_PREDICT_S16_ID,mgr);
bayes.vectorDimension=this->vecDim; bayes.vectorDimension=this->vecDim;

@ -10,6 +10,7 @@
const float32_t *inp = input.ptr(); const float32_t *inp = input.ptr();
float32_t *bufp = outputProbas.ptr(); float32_t *bufp = outputProbas.ptr();
float32_t *tempp = temp.ptr();
int16_t *p = outputPredicts.ptr(); int16_t *p = outputPredicts.ptr();
@ -17,7 +18,7 @@
{ {
*p = arm_gaussian_naive_bayes_predict_f32(&bayes, *p = arm_gaussian_naive_bayes_predict_f32(&bayes,
inp, inp,
bufp); bufp,tempp);
inp += this->vecDim; inp += this->vecDim;
bufp += this->classNb; bufp += this->classNb;
@ -62,6 +63,8 @@
predicts.reload(BayesF32::PREDICTS1_S16_ID,mgr); predicts.reload(BayesF32::PREDICTS1_S16_ID,mgr);
outputProbas.create(this->nbPatterns*this->classNb,BayesF32::OUT_PROBA_F32_ID,mgr); outputProbas.create(this->nbPatterns*this->classNb,BayesF32::OUT_PROBA_F32_ID,mgr);
temp.create(this->nbPatterns*this->classNb,BayesF32::OUT_PROBA_F32_ID,mgr);
outputPredicts.create(this->nbPatterns,BayesF32::OUT_PREDICT_S16_ID,mgr); outputPredicts.create(this->nbPatterns,BayesF32::OUT_PREDICT_S16_ID,mgr);
bayes.vectorDimension=this->vecDim; bayes.vectorDimension=this->vecDim;

Loading…
Cancel
Save