Added tests for the new accumulate functions.

Corrected build issue on Neon without aarch64 support.
Corrected some Doxygen issues
pull/42/head
Christophe Favergeon 3 years ago
parent 2887bff90c
commit 865419778b

@ -81,6 +81,8 @@ target_sources(CMSISDSP PRIVATE StatisticsFunctions/arm_mse_q31.c)
target_sources(CMSISDSP PRIVATE StatisticsFunctions/arm_mse_f16.c)
target_sources(CMSISDSP PRIVATE StatisticsFunctions/arm_mse_f32.c)
target_sources(CMSISDSP PRIVATE StatisticsFunctions/arm_mse_f64.c)
target_sources(CMSISDSP PRIVATE StatisticsFunctions/arm_accumulate_f64.c)
target_sources(CMSISDSP PRIVATE StatisticsFunctions/arm_accumulate_f32.c)
if ((NOT ARMAC5) AND (NOT DISABLEFLOAT16))
@ -102,4 +104,5 @@ target_sources(CMSISDSP PRIVATE StatisticsFunctions/arm_absmax_f16.c)
target_sources(CMSISDSP PRIVATE StatisticsFunctions/arm_absmin_f16.c)
target_sources(CMSISDSP PRIVATE StatisticsFunctions/arm_absmax_no_idx_f16.c)
target_sources(CMSISDSP PRIVATE StatisticsFunctions/arm_absmin_no_idx_f16.c)
target_sources(CMSISDSP PRIVATE StatisticsFunctions/arm_accumulate_f16.c)
endif()

@ -100,7 +100,5 @@
#include "arm_mse_f64.c"
#include "arm_accumulate_f32.c"
#include "arm_accumulate_f64.c"
#include "arm_accumulate_q7.c"
#include "arm_accumulate_q15.c"
#include "arm_accumulate_q31.c"

@ -36,7 +36,7 @@
*/
/**
@defgroup Accumulation
@defgroup Accumulation Accumulation functions
Calculates the accumulation of the input vector. Sum is defined as the addition of the elements in the vector.
The underlying algorithm is used:
@ -57,7 +57,7 @@
@brief accumulate value of a floating-point vector.
@param[in] pSrc points to the input vector.
@param[in] blockSize number of samples in input vector.
@param[out] pResult sum value returned here.
@param[out] pResult sum of values in input vector.
@return none
*/
@ -67,7 +67,7 @@ void arm_accumulate_f16(
float16_t * pResult)
{
uint32_t blkCnt; /* Loop counter */
float16_t sum = 0.0f; /* Temporary result storage */
float16_t sum = 0.0f16; /* Temporary result storage */
#if defined (ARM_MATH_LOOPUNROLL) && !defined(ARM_MATH_AUTOVECTORIZE)

@ -42,12 +42,64 @@
@brief Accumulation value of a floating-point vector.
@param[in] pSrc points to the input vector.
@param[in] blockSize number of samples in input vector.
@param[out] pResult sum value returned here.
@param[out] pResult sum of values in input vector.
@return none
*/
#if defined(ARM_MATH_MVEF) && !defined(ARM_MATH_AUTOVECTORIZE)
#if defined(ARM_MATH_NEON_EXPERIMENTAL) && !defined(ARM_MATH_AUTOVECTORIZE)
#include "arm_helium_utils.h"
void arm_accumulate_f32(
const float32_t * pSrc,
uint32_t blockSize,
float32_t * pResult)
{
f32x4_t vecA;
f32x4_t vecSum;
uint32_t blkCnt;
float32_t sum = 0.0f;
vecSum = vdupq_n_f32(0.0f);
/* Compute 4 outputs at a time */
blkCnt = blockSize >> 2U;
while (blkCnt > 0U)
{
/*
* C = A[0]* B[0] + A[1]* B[1] + A[2]* B[2] + .....+ A[blockSize-1]* B[blockSize-1]
* Calculate dot product and then store the result in a temporary buffer.
* and advance vector source and destination pointers
*/
vecA = vld1q_f32(pSrc);
pSrc += 4;
vecSum = vaddq_f32(vecSum, vecA);
/*
* Decrement the blockSize loop counter
*/
blkCnt --;
}
blkCnt = blockSize & 3;
if (blkCnt > 0U)
{
/* C = A[0]* B[0] + A[1]* B[1] + A[2]* B[2] + .....+ A[blockSize-1]* B[blockSize-1] */
mve_pred16_t p0 = vctp32q(blkCnt);
vecA = vld1q(pSrc);
vecSum = vaddq_m(vecSum,vecSum, vecA, p0);
}
sum = vecAddAcrossF32Mve(vecSum);
/* Store result in destination buffer */
*pResult = sum;
}
#else
#if defined(ARM_MATH_NEON) && !defined(ARM_MATH_AUTOVECTORIZE)
void arm_accumulate_f32(
const float32_t * pSrc,
uint32_t blockSize,
@ -96,6 +148,7 @@ void arm_accumulate_f32(
/* Store the result to the destination */
*pResult = sum;
}
#else
void arm_accumulate_f32(
const float32_t * pSrc,
@ -150,7 +203,7 @@ void arm_accumulate_f32(
}
#endif /* #if defined(ARM_MATH_NEON) */
#endif /* #if defined(ARM_MATH_MVEF) */
/**
@} end of Accumulation group
*/

@ -42,10 +42,10 @@
@brief Accumulation value of a floating-point vector.
@param[in] pSrc points to the input vector.
@param[in] blockSize number of samples in input vector.
@param[out] pResult sum value returned here.
@param[out] pResult sum of values in input vector.
@return none
*/
#if defined(ARM_MATH_NEON)
#if defined(ARM_MATH_NEON) && defined(__aarch64__)
void arm_accumulate_f64(
const float64_t * pSrc,
uint32_t blockSize,

@ -477,8 +477,7 @@ def writeTests(config,nb,format):
# So new tests have to be added after existing ones
def writeNewsTests(config,nb,format):
NBSAMPLES = 300
if format==Tools.F16:
config.setOverwrite(True)
data1=np.random.randn(NBSAMPLES)
data1 = Tools.normalize(data1)
@ -492,7 +491,39 @@ def writeNewsTests(config,nb,format):
config.writeInput(2, data2,"InputNew")
nb=generateOperatorTests(config,nb,format,data1,data2,mseTest,"MSEVals")
config.setOverwrite(False)
return(nb)
def writeAccumulateTests(config,nb,format):
NBSAMPLES = 300
data1=np.random.randn(NBSAMPLES)
# First value is the number of tests
# Other values are the number of samples in each test
nbsamples = [4]
nbiters = Tools.loopnb(format,Tools.TAILONLY)
nbsamples.append(nbiters)
nbiters = Tools.loopnb(format,Tools.BODYONLY)
nbsamples.append(nbiters)
nbiters = Tools.loopnb(format,Tools.BODYANDTAIL)
nbsamples.append(nbiters)
nbsamples.append(NBSAMPLES)
ref=[]
for nb in nbsamples[1:]:
t = np.sum(data1[:nb])
ref.append(t)
config.writeInput(1, data1,"InputAccumulate")
config.writeInputS16(1, nbsamples,"InputAccumulateConfig")
config.writeReference(1, ref,"RefAccumulate")
return(nb+1)
def generateBenchmark(config,format):
@ -536,24 +567,27 @@ def generatePatterns():
nb=writeTests(configf32,1,0)
nb=writeF32OnlyTests(configf32,22)
writeNewsTests(configf32,nb,Tools.F32)
nb=writeNewsTests(configf32,nb,Tools.F32)
nb=writeAccumulateTests(configf32,nb,Tools.F32)
nb=writeTests(configf64,1,Tools.F64)
nb=writeF64OnlyTests(configf64,22)
writeNewsTests(configf64,nb,Tools.F64)
nb=writeNewsTests(configf64,nb,Tools.F64)
nb=writeAccumulateTests(configf64,nb,Tools.F64)
nb=writeTests(configq31,1,31)
writeNewsTests(configq31,nb,Tools.Q31)
nb=writeNewsTests(configq31,nb,Tools.Q31)
nb=writeTests(configq15,1,15)
writeNewsTests(configq15,nb,Tools.Q15)
nb=writeNewsTests(configq15,nb,Tools.Q15)
nb=writeTests(configq7,1,7)
writeNewsTests(configq7,nb,Tools.Q7)
nb=writeNewsTests(configq7,nb,Tools.Q7)
nb=writeTests(configf16,1,16)
nb=writeF16OnlyTests(configf16,22)
writeNewsTests(configf16,nb,Tools.F16)
nb=writeNewsTests(configf16,nb,Tools.F16)
nb=writeAccumulateTests(configf16,nb,Tools.F16)
generateBenchmark(configf64, Tools.F64)
generateBenchmark(configf32, Tools.F32)

@ -0,0 +1,602 @@
H
300
// 0.403228
0x3674
// 0.790535
0x3a53
// -1.765692
0xbf10
// 0.564353
0x3884
// 0.135080
0x3053
// -0.646656
0xb92c
// 0.647246
0x392e
// 0.108600
0x2ef3
// 0.255541
0x3417
// -0.587044
0xb8b2
// -0.863863
0xbae9
// -0.721468
0xb9c6
// -1.283427
0xbd22
// -0.948428
0xbb96
// 0.620959
0x38f8
// 1.702865
0x3ed0
// 0.077509
0x2cf6
// 2.637373
0x4146
// -0.508381
0xb811
// 0.879278
0x3b09
// -0.800507
0xba67
// 0.146854
0x30b3
// 0.080875
0x2d2d
// -0.004483
0x9c97
// 1.082495
0x3c54
// 0.629065
0x3908
// 1.153966
0x3c9e
// 0.596096
0x38c5
// 1.799158
0x3f32
// -0.904648
0xbb3d
// 0.234833
0x3384
// 0.406887
0x3683
// -0.571166
0xb892
// 0.229944
0x335c
// -0.222729
0xb321
// -2.061951
0xc020
// -1.736408
0xbef2
// 0.433383
0x36ef
// -0.573268
0xb896
// 0.898404
0x3b30
// 0.790407
0x3a53
// 1.047674
0x3c31
// -0.324671
0xb532
// 0.892667
0x3b24
// 0.867253
0x3af0
// -0.839434
0xbab7
// 0.296731
0x34bf
// -2.105106
0xc036
// -1.402729
0xbd9c
// 0.188074
0x3205
// 0.404535
0x3679
// -0.336336
0xb562
// -0.797713
0xba62
// 1.218317
0x3ce0
// 0.727737
0x39d2
// -0.920469
0xbb5d
// -0.128949
0xb020
// -0.433229
0xb6ef
// -1.677798
0xbeb6
// -1.193025
0xbcc6
// 0.854931
0x3ad7
// -0.099621
0xae60
// 2.091603
0x402f
// 0.629319
0x3909
// -0.512076
0xb819
// -1.936900
0xbfbf
// 1.724247
0x3ee6
// 0.156420
0x3101
// -0.651338
0xb936
// -0.633550
0xb912
// -2.303735
0xc09c
// 0.179141
0x31bc
// 0.685227
0x397b
// 0.387766
0x3634
// 1.371416
0x3d7c
// -1.918012
0xbfac
// 0.406116
0x367f
// -0.183715
0xb1e1
// 0.232746
0x3373
// -1.342283
0xbd5e
// 0.470318
0x3786
// -2.182310
0xc05d
// 0.741559
0x39ef
// -0.643764
0xb926
// 0.048399
0x2a32
// -0.540895
0xb854
// 1.106616
0x3c6d
// -0.323150
0xb52c
// 0.341424
0x3576
// -1.434152
0xbdbd
// -0.448837
0xb72e
// 1.274818
0x3d19
// -0.079564
0xad18
// -0.806076
0xba73
// -0.261651
0xb430
// 0.081918
0x2d3e
// 1.030944
0x3c20
// -0.141107
0xb084
// 0.909641
0x3b47
// -1.363575
0xbd74
// -0.373532
0xb5fa
// -0.199387
0xb261
// 0.026760
0x26da
// -0.840572
0xbab9
// -0.381145
0xb619
// -1.667549
0xbeac
// 1.216329
0x3cde
// -0.891745
0xbb22
// 0.197249
0x3250
// 0.914707
0x3b51
// 0.474276
0x3797
// -0.936337
0xbb7e
// 1.875325
0x3f80
// 0.309868
0x34f5
// -1.402561
0xbd9c
// -0.847870
0xbac8
// -0.613946
0xb8e9
// 1.454202
0x3dd1
// -0.934711
0xbb7a
// 1.348542
0x3d65
// 0.966193
0x3bbb
// 0.462141
0x3765
// 0.008913
0x2090
// -0.964340
0xbbb7
// 0.926279
0x3b69
// -1.422982
0xbdb1
// -0.266019
0xb442
// -0.841451
0xbabb
// 0.817545
0x3a8a
// -0.847594
0xbac8
// 0.675984
0x3968
// -0.976700
0xbbd0
// -1.046232
0xbc2f
// 0.299853
0x34cc
// 1.914445
0x3fa8
// -1.172457
0xbcb1
// -0.431608
0xb6e8
// -1.240815
0xbcf7
// -0.290280
0xb4a5
// 0.517154
0x3823
// 0.129529
0x3025
// 0.019651
0x2508
// 0.010109
0x212d
// -0.456176
0xb74c
// 0.072539
0x2ca4
// -1.058758
0xbc3c
// 0.565836
0x3887
// -0.906917
0xbb41
// 0.007338
0x1f84
// 0.280566
0x347d
// 0.894503
0x3b28
// 0.266863
0x3445
// 0.132966
0x3041
// 0.767206
0x3a23
// -0.686024
0xb97d
// -0.965636
0xbbba
// -1.063983
0xbc42
// -0.154416
0xb0f1
// 0.362044
0x35cb
// -1.199676
0xbccc
// 0.653584
0x393b
// -0.303124
0xb4da
// 0.327124
0x353c
// 0.090162
0x2dc5
// 0.255816
0x3418
// -0.248543
0xb3f4
// -0.599767
0xb8cc
// 0.877696
0x3b06
// 1.957729
0x3fd5
// -0.416063
0xb6a8
// 0.894641
0x3b28
// 0.893332
0x3b26
// 1.804270
0x3f38
// 0.571469
0x3892
// -0.538999
0xb850
// -0.711532
0xb9b1
// -0.302412
0xb4d7
// -0.964833
0xbbb8
// -0.598038
0xb8c9
// -0.654437
0xb93c
// 0.631505
0x390d
// 1.409936
0x3da4
// 0.213330
0x32d4
// -0.311454
0xb4fc
// 0.398628
0x3661
// -0.706000
0xb9a6
// -0.753669
0xba08
// 0.309298
0x34f3
// 1.492094
0x3df8
// 1.596098
0x3e62
// 0.490982
0x37db
// 1.596482
0x3e63
// 0.332411
0x3552
// -2.157640
0xc051
// -1.587679
0xbe5a
// 0.495530
0x37ee
// 0.960868
0x3bb0
// -0.591988
0xb8bc
// -1.045693
0xbc2f
// 0.843292
0x3abf
// -0.075070
0xacce
// -0.282838
0xb487
// 0.522908
0x382f
// -0.062621
0xac02
// -0.213422
0xb2d4
// -1.193460
0xbcc6
// 0.024896
0x2660
// -3.089132
0xc22e
// 0.458491
0x3756
// -1.698179
0xbecb
// 2.840010
0x41ae
// 0.578660
0x38a1
// 0.361009
0x35c7
// -1.742869
0xbef9
// -0.831256
0xbaa6
// -1.109137
0xbc70
// -0.596247
0xb8c5
// 1.208434
0x3cd5
// -1.935833
0xbfbe
// 2.217497
0x406f
// 1.160372
0x3ca4
// -0.081313
0xad34
// -2.419502
0xc0d7
// 0.272382
0x345c
// 0.889528
0x3b1e
// 0.397543
0x365c
// -1.700459
0xbecd
// 1.042543
0x3c2c
// 1.202107
0x3ccf
// -0.051818
0xaaa2
// -0.730582
0xb9d8
// 0.025250
0x2677
// -0.318532
0xb519
// -0.757038
0xba0e
// -0.484690
0xb7c1
// 0.658922
0x3945
// -0.684210
0xb979
// -1.351297
0xbd68
// -0.745298
0xb9f6
// 0.368193
0x35e4
// -1.528640
0xbe1d
// -0.673173
0xb963
// -0.014893
0xa3a0
// -0.417328
0xb6ad
// 1.101533
0x3c68
// -1.793305
0xbf2c
// -0.876005
0xbb02
// 0.710846
0x39b0
// -0.486367
0xb7c8
// 0.489545
0x37d5
// -0.753876
0xba08
// 0.684575
0x397a
// -0.569468
0xb88e
// 1.294840
0x3d2e
// -1.234943
0xbcf1
// -0.938473
0xbb82
// 1.262225
0x3d0d
// -1.040557
0xbc2a
// 2.077698
0x4028
// 1.582555
0x3e55
// 1.070929
0x3c49
// 1.747530
0x3efd
// -1.266449
0xbd11
// -0.117831
0xaf8b
// -1.120036
0xbc7b
// 0.115079
0x2f5d
// 0.097422
0x2e3c
// 0.054251
0x2af2
// 0.284460
0x348d
// -0.344650
0xb584
// -2.165535
0xc055
// 1.090171
0x3c5c
// -1.290367
0xbd29
// -0.291540
0xb4aa
// -0.262937
0xb435
// -0.269938
0xb452
// 1.745340
0x3efb
// -0.381207
0xb619
// 0.559560
0x387a
// 1.061609
0x3c3f
// -0.448525
0xb72d
// 0.600914
0x38cf
// -0.439293
0xb707
// 0.081809
0x2d3c
// 0.736261
0x39e4
// 1.237320
0x3cf3
// 0.314349
0x3508
// 0.002416
0x18f3
// 0.114545
0x2f55
// -0.890155
0xbb1f
// -1.599143
0xbe66
// -0.084827
0xad6e
// 0.452470
0x373d
// -0.363854
0xb5d2
// 0.494410
0x37e9
// 0.323634
0x352e
// 1.745487
0x3efb
// 2.692194
0x4162
// -2.172338
0xc058
// 0.676894
0x396a

@ -0,0 +1,12 @@
H
5
// 4
0x0004
// 7
0x0007
// 16
0x0010
// 23
0x0017
// 300
0x012C

@ -0,0 +1,10 @@
H
4
// 0.128093
0x3019
// -1.588172
0xbe5a
// 0.924829
0x3b66
// -10.314345
0xc928

@ -0,0 +1,602 @@
W
300
// -0.423443
0xbed8cd77
// -0.983498
0xbf7bc681
// -0.513058
0xbf0357c8
// -0.826724
0xbf53a42a
// -0.098833
0xbdca68b8
// -0.647028
0xbf25a3a9
// -0.586539
0xbf162767
// 1.582705
0x3fca9615
// 0.819569
0x3f51cf4d
// -0.685971
0xbf2f9bc9
// -0.157562
0xbe2157e3
// 0.880716
0x3f6176a2
// -0.579034
0xbf143b8e
// 0.623778
0x3f1fafe8
// -1.262239
0xbfa19109
// -0.625875
0xbf203958
// 0.684227
0x3f2f297e
// 0.370696
0x3ebdcbd0
// 0.698463
0x3f32ce72
// 2.012159
0x4000c738
// -0.067237
0xbd89b395
// 1.146582
0x3f92c332
// 0.075101
0x3d99ce71
// 0.410785
0x3ed2525d
// -1.697154
0xbfd93c59
// -0.590957
0xbf1748f0
// 0.337581
0x3eacd776
// -0.661201
0xbf29447e
// -0.091832
0xbdbc1287
// -0.822853
0xbf52a67d
// 0.083798
0x3dab9e36
// -1.254186
0xbfa08928
// 0.861168
0x3f5c7582
// -0.073341
0xbd9633da
// -1.121536
0xbf8f8e7a
// -0.897961
0xbf65e0cb
// -0.946319
0xbf7241fa
// -0.918747
0xbf6b3305
// 0.825834
0x3f5369db
// -0.306754
0xbe9d0ed5
// -0.070929
0xbd9142fc
// 0.931081
0x3f6e5b51
// -0.079323
0xbda273ee
// 0.144046
0x3e1380c6
// -0.201304
0xbe4e22a6
// 0.944336
0x3f71bfff
// 0.157191
0x3e20f6cc
// -1.196110
0xbf991a21
// -0.904330
0xbf678223
// 0.656791
0x3f28237b
// -2.277876
0xc011c8b8
// 0.322499
0x3ea51ea6
// -1.135596
0xbf915b37
// 0.332263
0x3eaa1e55
// -0.196604
0xbe49527e
// 0.370739
0x3ebdd17a
// -0.736538
0xbf3c8db9
// 0.430131
0x3edc3a32
// 1.991774
0x3ffef274
// 0.865658
0x3f5d9bc7
// 1.297061
0x3fa60614
// -0.353067
0xbeb4c53f
// -1.154915
0xbf93d445
// 0.013318
0x3c5a3568
// 0.604935
0x3f1add0b
// 0.650382
0x3f267f6c
// 0.057334
0x3d6ad705
// -1.391626
0xbfb220cf
// 1.436114
0x3fb7d298
// 0.162395
0x3e264af3
// 0.558801
0x3f0f0d97
// -0.079698
0xbda33877
// -0.055110
0xbd61baa1
// 0.179196
0x3e377f3c
// -1.057574
0xbf875e94
// -0.521445
0xbf057d6a
// 0.422838
0x3ed87e44
// 1.151230
0x3f935b85
// 1.216962
0x3f9bc565
// 0.950819
0x3f7368de
// -0.498350
0xbeff27ab
// -0.578754
0xbf14293f
// 0.702426
0x3f33d238
// 0.304651
0x3e9bfb30
// 0.995786
0x3f7eebce
// 0.030582
0x3cfa8671
// 0.102266
0x3dd170f9
// 0.356987
0x3eb6c6f1
// -0.337055
0xbeac926e
// -1.549700
0xbfc65c93
// 0.296486
0x3e97cd07
// 1.095437
0x3f8c374b
// 1.244417
0x3f9f490b
// 0.359604
0x3eb81df3
// -0.441891
0xbee23f96
// 0.384206
0x3ec4b6b0
// -0.471972
0xbef1a647
// 0.648020
0x3f25e49f
// 1.201917
0x3f99d86f
// -2.865849
0xc0376a11
// 1.176467
0x3f969677
// 0.640080
0x3f23dc46
// 0.422593
0x3ed85e2a
// 0.209291
0x3e56507f
// -0.336963
0xbeac8679
// 1.326757
0x3fa9d32c
// -1.032990
0xbf843905
// -0.904691
0xbf6799d9
// 0.065775
0x3d86b4de
// 1.856034
0x3fed9288
// -0.422515
0xbed853ef
// 1.135110
0x3f914b4a
// -2.076895
0xc004ebd8
// 0.866082
0x3f5db793
// -2.045051
0xc002e21e
// -0.504498
0xbf0126c0
// 1.459088
0x3fbac363
// 0.090395
0x3db9211f
// 1.077701
0x3f89f21b
// -0.025416
0xbcd0344b
// -0.468621
0xbeefef19
// -0.451325
0xbee7140c
// 0.669543
0x3f2b6731
// 0.278190
0x3e8e6efa
// -0.479717
0xbef59d67
// -0.793268
0xbf4b13a4
// 0.942438
0x3f7143a5
// -2.587449
0xc02598c4
// -0.026251
0xbcd70b5e
// -0.126607
0xbe01a544
// 0.658765
0x3f28a4d5
// -1.699255
0xbfd9812d
// -0.788664
0xbf49e5dc
// 0.275554
0x3e8d155c
// 0.935411
0x3f6f771e
// 0.787206
0x3f498652
// -0.049373
0xbd4a3bbd
// -0.746808
0xbf3f2ecc
// -1.299582
0xbfa658b7
// 0.043045
0x3d305068
// -0.729928
0xbf3adc8c
// 1.236238
0x3f9e3d0a
// -0.759593
0xbf4274b8
// -0.892822
0xbf648ff8
// 1.532354
0x3fc42429
// -0.597137
0xbf18ddfb
// -0.000702
0xba37f55e
// 1.655931
0x3fd3f58a
// 1.536543
0x3fc4ad6e
// 0.213734
0x3e5adcf5
// -0.208254
0xbe5540a3
// -2.398257
0xc0197d0c
// -1.241876
0xbf9ef5ca
// -1.542659
0xbfc575db
// -0.073463
0xbd967388
// 0.595362
0x3f1869a2
// -1.254223
0xbfa08a65
// -0.097561
0xbdc7ce41
// 0.611658
0x3f1c95a4
// 0.790725
0x3f4a6cfc
// 1.275721
0x3fa34ad7
// -0.377948
0xbec18257
// 0.654724
0x3f279bf6
// 0.077602
0x3d9eedb8
// -1.257696
0xbfa0fc31
// 0.110166
0x3de19e78
// -0.054233
0xbd5e23df
// -1.683268
0xbfd77550
// 0.941935
0x3f7122a2
// 2.554066
0x402375d0
// -1.619144
0xbfcf401e
// 1.462543
0x3fbb3498
// 0.811070
0x3f4fa242
// 1.927283
0x3ff6b136
// -0.022243
0xbcb63794
// 0.755502
0x3f41688f
// -0.554742
0xbf0e0391
// 0.795036
0x3f4b8780
// -1.578591
0xbfca0f42
// -1.086833
0xbf8b1d5a
// 0.343749
0x3eafffed
// 2.170838
0x400aef02
// 3.001650
0x40401b09
// 1.892707
0x3ff24436
// -0.056903
0xbd69129e
// -2.503841
0xc0203ef0
// 1.152213
0x3f937bb3
// -0.219470
0xbe60bcba
// -1.451331
0xbfb9c536
// 1.168464
0x3f95903e
// -0.342840
0xbeaf88b9
// 0.294751
0x3e96e998
// -0.353277
0xbeb4e0ab
// -0.698509
0xbf32d17a
// -1.092133
0xbf8bcb07
// 0.729987
0x3f3ae06e
// -0.523243
0xbf05f347
// 1.708302
0x3fdaa9a3
// -1.028413
0xbf83a30c
// 1.275090
0x3fa33628
// 0.067721
0x3d8ab126
// -0.451632
0xbee73c51
// 0.576707
0x3f13a311
// 1.627953
0x3fd060c4
// 0.639968
0x3f23d4ed
// 1.075825
0x3f89b4a0
// -0.495454
0xbefdac35
// 0.095114
0x3dc2cae1
// -1.313427
0xbfa81e61
// -1.200968
0xbf99b954
// 0.714616
0x3f36f11b
// -0.716077
0xbf3750d2
// 1.231550
0x3f9da36e
// 1.307033
0x3fa74cde
// 0.544918
0x3f0b7fb9
// -0.272018
0xbe8b45f9
// -0.202694
0xbe4f8f1a
// 0.902505
0x3f670a8c
// -2.392231
0xc0191a52
// -0.940717
0xbf70d2db
// -2.000130
0xc0000221
// -0.816307
0xbf50f981
// -0.888401
0xbf636e3d
// -0.209496
0xbe568609
// 2.026531
0x4001b2ae
// 1.216935
0x3f9bc487
// -0.112947
0xbde750f7
// 0.586520
0x3f162632
// 1.212788
0x3f9b3ca6
// 0.234782
0x3e706ab8
// 1.062053
0x3f87f15c
// -0.807098
0xbf4e9dfd
// -2.107924
0xc006e83b
// -0.991721
0xbf7de174
// 0.628760
0x3f20f66d
// 2.122896
0x4007dd89
// -0.952098
0xbf73bcb3
// 0.113922
0x3de94fdf
// 2.725400
0x402e6cf4
// 0.546763
0x3f0bf8a4
// -1.384506
0xbfb13780
// 0.119917
0x3df596e2
// -1.233861
0xbf9def28
// 0.935340
0x3f6f7270
// -1.505120
0xbfc0a7c7
// -0.377617
0xbec15713
// 0.799940
0x3f4cc8e3
// -0.319001
0xbea3541d
// 0.641903
0x3f2453c3
// 1.549009
0x3fc645f1
// -0.493078
0xbefc74bc
// -1.702947
0xbfd9fa2c
// 1.320023
0x3fa8f682
// 0.138493
0x3e0dd103
// 1.115283
0x3f8ec199
// -0.864410
0xbf5d49f5
// 1.279482
0x3fa3c615
// 0.390853
0x3ec81dec
// 0.781768
0x3f4821f5
// 0.370289
0x3ebd9693
// 0.669609
0x3f2b6b79
// 1.678452
0x3fd6d781
// 0.513118
0x3f035baf
// 0.649515
0x3f2646a1
// -0.990310
0xbf7d84ed
// -1.788502
0xbfe4eda4
// -0.071319
0xbd920fb2
// 0.096202
0x3dc5057b
// 0.369050
0x3ebcf41d
// -2.291920
0xc012aed3
// 0.868246
0x3f5e4560
// 1.527368
0x3fc380cb
// 0.905387
0x3f67c76e
// 2.014818
0x4000f2c8
// -1.645145
0xbfd29420
// 0.706149
0x3f34c629
// 0.437204
0x3edfd928
// -0.512773
0xbf03450f
// -1.036983
0xbf84bbe0
// 2.089183
0x4005b52d
// -0.464019
0xbeed93de
// -1.337332
0xbfab2dae
// -0.228851
0xbe6a57f4
// 1.735562
0x3fde26e2
// 0.085262
0x3dae9df0
// -0.496630
0xbefe4640
// -1.341138
0xbfabaa6b
// -0.550179
0xbf0cd883
// 2.034660
0x400237e0
// 0.052855
0x3d587ef7
// 1.781379
0x3fe40438
// -0.978739
0xbf7a8ea1
// -1.351531
0xbfacfef7
// -0.541003
0xbf0a7f29
// 0.995079
0x3f7ebd85
// 1.448289
0x3fb96187
// -0.123124
0xbdfc2852
// -0.350373
0xbeb36423
// 1.034495
0x3f846a57
// -0.678016
0xbf2d926f

@ -0,0 +1,12 @@
H
5
// 4
0x0004
// 3
0x0003
// 8
0x0008
// 11
0x000B
// 300
0x012C

@ -0,0 +1,10 @@
W
4
// -1.919998
0xbff5c282
// -2.496417
0xc01fc54b
// -2.520380
0xc0214de8
// 15.878417
0x417e0dff

@ -0,0 +1,602 @@
D
300
// 0.591762
0x3fe2efb7d1952c8d
// 1.346868
0x3ff58cc52fa376f9
// 0.285820
0x3fd24ae0a79ad81d
// -0.858870
0xbfeb7bdc5313e4f5
// 1.096028
0x3ff1895447537f90
// -0.843217
0xbfeafba14924b30e
// -0.731724
0xbfe76a48c78d7fc7
// 0.247799
0x3fcfb7df3ca5404f
// -0.416542
0xbfdaa89eaa690f97
// 0.672924
0x3fe58896ea6679cb
// 0.271024
0x3fd15873d49cbdf1
// -0.265199
0xbfd0f90428764a13
// 0.765841
0x3fe881c4d1806d05
// 0.525063
0x3fe0cd50748bbf99
// 0.533392
0x3fe1118bfb02f4c5
// -1.007398
0xbff01e4ceae2cb9a
// 1.190889
0x3ff30de1aae279f6
// 0.297438
0x3fd3093a9dd1a7b9
// 1.596330
0x3ff98a9161f98815
// -1.918050
0xbffeb054cf9f179b
// 0.412652
0x3fda68e5571a268f
// 0.389409
0x3fd8ec136d8391ee
// -0.298699
0xbfd31de3ed58bcb1
// 1.007653
0x3ff01f5842a07169
// 0.117794
0x3fbe27c4e4786fa7
// 1.275045
0x3ff4669531ba3c67
// 0.348807
0x3fd652dca72a1b86
// -0.518251
0xbfe0958302b38d1b
// -2.084621
0xc000ad4d869f0723
// 0.046931
0x3fa80752c164372b
// -1.098749
0xbff1947a5764d065
// 0.461066
0x3fdd82196683d235
// -0.461843
0xbfdd8ed5fa69a819
// -0.733344
0xbfe7778e215d5544
// 1.280933
0x3ff47eb31cc99694
// -0.450840
0xbfdcda91b3c7ae64
// -0.324242
0xbfd4c061d7b87f9b
// -0.082313
0xbfb51275aec18b50
// 0.678082
0x3fe5b2d9bba4d029
// 0.216665
0x3fcbbbb04679ea9d
// -0.072394
0xbfb28867086bfdc9
// -0.894777
0xbfeca202a4146dab
// -0.927379
0xbfedad16ece95ce0
// 1.745247
0x3ffbec8895a540aa
// 0.015979
0x3f905cbbc9435051
// 0.254808
0x3fd04ec60bc5c8f5
// -2.264820
0xc0021e59c97d4af9
// -1.889860
0xbffe3cde380dc5a8
// 0.173487
0x3fc634d30cf0da25
// -0.246073
0xbfcf7f53632de4a7
// 0.298900
0x3fd3212db677d0b0
// -0.638844
0xbfe47167fb3a588d
// -0.182363
0xbfc757abe21ec3cf
// 1.405280
0x3ff67c075ca67e9b
// -0.635200
0xbfe4538fc90c2e53
// -0.992023
0xbfefbea76346d417
// 1.156137
0x3ff27f8942c4b376
// 0.650516
0x3fe4d107e36b7876
// -0.990295
0xbfefb07e408b3fe2
// -0.065694
0xbfb0d1545a7902e3
// 1.374938
0x3ff5ffbec44f8a8e
// -0.593372
0xbfe2fce7ce325a00
// 0.063298
0x3fb03446a5d4a244
// -0.088991
0xbfb6c8238f3846fc
// 0.065581
0x3fb0c9eb043953dd
// -0.340817
0xbfd5cff01b999ed0
// -0.227255
0xbfcd16ad8b411be5
// -0.395505
0xbfd94ff5167e7cf3
// 0.229238
0x3fcd57aedec76d75
// -0.164329
0xbfc508bbae786c48
// 1.694348
0x3ffb1c0cbdda1e8b
// -2.223618
0xc001c9f879e1591b
// -0.387069
0xbfd8c5bc46545a36
// -0.163043
0xbfc4de99d7206f3f
// 2.427573
0x40036bab9b54edc8
// 1.052230
0x3ff0d5ef5cc472ed
// 1.123976
0x3ff1fbcde93ea419
// -0.974354
0xbfef2de84eb1a34f
// -1.351470
0xbff59f9f0fe1ca22
// 0.536450
0x3fe12a99a633cf41
// 1.265249
0x3ff43e75ab0275f6
// 0.553907
0x3fe1b99b70a0fe95
// 0.668717
0x3fe566220b75f0aa
// 0.321792
0x3fd4983c25827563
// -0.016920
0xbf915358decf654f
// 0.085172
0x3fb5cdd5e666d2c1
// -0.184192
0xbfc793984a18c898
// -0.513147
0xbfe06bb26ca6d453
// 0.927872
0x3fedb11fed57d980
// -1.548969
0xbff8c89345880c33
// -0.601981
0xbfe3436dcddf818a
// 0.476340
0x3fde7c58d3f2dba7
// -2.105879
0xc000d8d6ead7eb9c
// 0.954027
0x3fee876428a958d0
// -2.165969
0xc00153e753b9f2b8
// 1.012873
0x3ff034ba4cb5ce83
// -0.779203
0xbfe8ef3a25531656
// -0.961244
0xbfeec281d5a4a837
// -0.832993
0xbfeaa7e0408c3ddf
// 0.488423
0x3fdf4254658a8452
// -1.344825
0xbff584673279b99c
// 1.765342
0x3ffc3ed7b9846a66
// 1.478842
0x3ff7a9561fee9d33
// 1.686267
0x3ffafaf31639a6cc
// -0.944275
0xbfee378033fac580
// 0.210522
0x3fcaf2649e0564a0
// -0.732744
0xbfe772a3839d33ce
// -0.230683
0xbfcd8701792aa3c1
// 1.405108
0x3ff67b525ca07125
// -0.328691
0xbfd50947e8c28776
// -0.286968
0xbfd25db1078c312d
// -1.361024
0xbff5c6c18bdcfcb4
// 0.849591
0x3feb2fd9ffb31d30
// -2.088668
0xc000b59787b09019
// 1.387327
0x3ff6327d91b18236
// -0.392612
0xbfd9208d7c046335
// 0.409889
0x3fda3b9e5fb8b537
// 1.796759
0x3ffcbf86e38b29cd
// 0.978588
0x3fef5098b7f8c16d
// 0.703897
0x3fe686531a2ce622
// 0.549163
0x3fe192bd6c6821aa
// -0.173986
0xbfc6452ea4d2f9c9
// 0.692326
0x3fe62788cee7f567
// 0.484449
0x3fdf0135bb21590f
// -0.547055
0xbfe18179cae92363
// 0.084638
0x3fb5aad32b95ee97
// -0.343665
0xbfd5fe9a2a971648
// -0.797343
0xbfe983d54a566c09
// 0.624375
0x3fe3fae1cee7f031
// -0.650273
0xbfe4cf0a513ae832
// -1.151119
0xbff26afbcc2e0973
// -1.004242
0xbff0116024bebcbb
// -1.243463
0xbff3e539ec4b45a7
// 0.533702
0x3fe1141626f60241
// -0.200939
0xbfc9b860db5658a9
// -1.170179
0xbff2b90d8db1cc34
// 0.432628
0x3fdbb02f1335163d
// 0.177194
0x3fc6ae49b83d69b4
// 0.276979
0x3fd1ba042cd2c5ab
// -0.117636
0xbfbe1d5ca466df85
// 0.431909
0x3fdba466b78b3ba1
// 0.094699
0x3fb83e39f7278c86
// -0.887184
0xbfec63cf07d0d81d
// 0.571867
0x3fe24cbb2086ad4e
// -0.078704
0xbfb425f5d145dc81
// 0.561475
0x3fe1f79b1ffea495
// 0.247046
0x3fcf9f32cfe78e19
// -0.171075
0xbfc5e5c9fb66a9eb
// -1.027190
0xbff06f5eefc08f0e
// -0.595121
0xbfe30b3bd5cf730d
// 0.312975
0x3fd407c8b382d0b6
// 0.844432
0x3feb059562dae6c5
// 0.590219
0x3fe2e313d04ba5d7
// 0.455922
0x3fdd2dd41b02ae4b
// -2.021509
0xc0002c0cdad6b404
// 0.945978
0x3fee457403e43c84
// -0.392990
0xbfd926be44354f13
// 0.097190
0x3fb8e175506842a9
// 0.320984
0x3fd48b01d277cc59
// -1.163999
0xbff29fbd331b6294
// 1.256727
0x3ff41b8de1521368
// 1.885235
0x3ffe29ec4b6a54a4
// -0.391718
0xbfd911e808aecf5d
// 0.398626
0x3fd98317ca833afd
// -1.170556
0xbff2ba98f808c200
// 0.146972
0x3fc2cffdd3959390
// 0.872258
0x3febe98a145e337e
// 0.798093
0x3fe989f9f22516c1
// 0.216796
0x3fcbbff90adaad56
// 0.931629
0x3fedcfe6fe77a2b8
// 1.400970
0x3ff66a6002245ac1
// -0.646253
0xbfe4ae1a4d47a906
// 0.130761
0x3fc0bcc4f0ecba47
// 0.926996
0x3feda9f2bb8c8c34
// -1.332325
0xbff55133ec1b8572
// 0.161132
0x3fc49ff8acce4eed
// 0.267825
0x3fd1240a892de412
// -1.169964
0xbff2b82c904cbd43
// -0.131690
0xbfc0db39191ac220
// 0.355000
0x3fd6b853f910772f
// -1.455940
0xbff74b87f7d98d9b
// 0.215088
0x3fcb8804494d37f6
// -0.416629
0xbfdaaa0cec2a8135
// 2.552314
0x40046b23c8a17de8
// -0.148139
0xbfc2f63bc35a7507
// -0.061910
0xbfafb2b16dfe37d9
// 1.971133
0x3fff89c2df1a846a
// 0.609440
0x3fe380887f2b6543
// -0.392193
0xbfd919b06bf047d8
// -0.297496
0xbfd30a2c3ed85252
// -0.087342
0xbfb65c1297115bd2
// 0.042671
0x3fa5d8ff043a09cd
// 2.104092
0x4000d52e35891659
// -0.132587
0xbfc0f89f6e9946f0
// 0.101833
0x3fba11bfe14c9682
// 0.261865
0x3fd0c263ab139698
// -1.075224
0xbff1341e500ee40a
// -1.819020
0xbffd1ab50748d311
// 0.080063
0x3fb47f03e185fa13
// -0.897530
0xbfecb891a05597ca
// -1.764076
0xbffc39a7b4b95aa2
// -0.709456
0xbfe6b3dc83b2082c
// -0.206341
0xbfca6964573aa25b
// 0.324747
0x3fd4c8a91a0b3f12
// -1.004527
0xbff0128afad3effb
// 0.043461
0x3fa6408593d42d9a
// -0.603422
0xbfe34f3c55d8e2da
// -0.047375
0xbfa84187f1186311
// 2.766008
0x400620c8c065a38f
// -0.199130
0xbfc97d18476e7744
// 0.574960
0x3fe2661191d785b2
// -1.303529
0xbff4db40efe6bf97
// 1.252003
0x3ff40834968ab78b
// 1.023607
0x3ff060b19dc3c282
// 1.121515
0x3ff1f1b9ccab7a75
// -1.702770
0xbffb3e8bf56d96f2
// -0.200954
0xbfc9b8d985d4003c
// 0.577675
0x3fe27c4fc9101891
// -0.768667
0xbfe898ec87727e36
// -0.423557
0xbfdb1b8ea150239c
// 0.302140
0x3fd35641fb892792
// 0.969931
0x3fef09ac0a53586a
// 1.028069
0x3ff072f8fcf9bd3d
// 0.469475
0x3fde0be289b41c3b
// -0.894296
0xbfec9e1224500603
// 0.743941
0x3fe7ce5e08ab9d57
// -1.632494
0xbffa1eb28419980d
// 1.780551
0x3ffc7d23565fbff9
// 0.028156
0x3f9cd4d19bef37cf
// -1.573614
0xbff92d859621181d
// 0.975172
0x3fef349b49ca6c50
// 0.898281
0x3fecbeb8152f43fc
// 1.725924
0x3ffb9d625d1b0a37
// -1.194486
0xbff31c9dcdcb52ef
// 0.053978
0x3faba310450eab90
// -1.302649
0xbff4d7a6facf6f75
// 1.015055
0x3ff03daa2dd45d3c
// 1.892682
0x3ffe486cb45ee7a0
// -0.686480
0xbfe5f7a54304e1dd
// 0.720867
0x3fe7115891447acf
// -1.662034
0xbffa97b0fc58dc51
// 1.536524
0x3ff89599cfbd660e
// 0.704890
0x3fe68e74e80bbaa4
// -0.622870
0xbfe3ee8c24f62401
// 0.664386
0x3fe542a56e50ab96
// -1.661507
0xbffa95883f403baa
// 0.266999
0x3fd11683a57ded77
// 0.343106
0x3fd5f57375150fd8
// -1.434818
0xbff6f503e6e4f4f2
// -1.675793
0xbffad00c81040ae1
// 0.468676
0x3fddfec7a87a50ae
// 1.618443
0x3ff9e52411b0f681
// 0.616406
0x3fe3b9998f95b044
// -2.721910
0xc005c678d62c7edb
// -0.096007
0xbfb893e9c1444db8
// -1.213863
0xbff36bfb9d05fb96
// -1.557251
0xbff8ea7fab4c3f3c
// -1.790495
0xbffca5ddbc750c16
// -0.098268
0xbfb92818d6781289
// -0.084365
0xbfb598f2c2793fb6
// -0.940522
0xbfee18c106b285db
// 0.031567
0x3fa0299739e1ce5c
// -0.244852
0xbfcf5752f9d8026f
// 0.860829
0x3feb8be86deab741
// 1.451967
0x3ff73b4182549bd6
// -0.405878
0xbfd9f9e6492d096f
// -0.535251
0xbfe120c5b5bd58e2
// -0.429442
0xbfdb7bf956ec5674
// -1.235351
0xbff3c3ff07210191
// 0.480201
0x3fdebb9b700f269a
// -0.178620
0xbfc6dd0666e06e00
// -0.191338
0xbfc87dbf5bf7e834
// -0.408729
0xbfda289f7d26381e
// 0.173887
0x3fc641f14c55ac6d
// -1.843278
0xbffd7e111e3526a1
// -1.392580
0xbff648017596c0dd
// -0.001781
0xbf5d2e60e63984f3
// -0.593029
0xbfe2fa18c624b212
// -0.536947
0xbfe12eabd33e9917
// -0.096858
0xbfb8cba8ebb7c89d
// 1.737095
0x3ffbcb23c8c0aae5
// -0.288399
0xbfd27520f9801ba6
// 1.158473
0x3ff2891b545f4637
// -1.989434
0xbfffd4b8f92b07b6
// 0.106163
0x3fbb2d82e267b9e8
// -0.414173
0xbfda81cff95e1b79
// -1.839830
0xbffd6ff1e81e5d17
// -0.168047
0xbfc58292fb2ea89d
// -1.384072
0xbff625286f809ee3
// -1.502155
0xbff808d3aedbf275
// 1.598372
0x3ff992eec3fa02dd
// 0.226098
0x3fccf0c5571bc41c
// 0.286619
0x3fd257f53fc85098
// 1.939450
0x3fff07fc7c5ea519
// 1.372158
0x3ff5f45b899fbb57
// 0.636439
0x3fe45db5868f6986
// 0.357524
0x3fd6e1ae16681e18
// -0.056032
0xbfacb03334974378
// 0.898497
0x3fecc07cf2a97e70
// -0.874705
0xbfebfd962bcb1ff0

@ -0,0 +1,12 @@
H
5
// 4
0x0004
// 2
0x0002
// 4
0x0004
// 5
0x0005
// 300
0x012C

@ -0,0 +1,10 @@
D
4
// 1.938630
0x3fff04a1186e0d40
// 1.365581
0x3ff5d96b18cad0ce
// 2.461608
0x4003b15fb00f282f
// -3.785585
0xc00e48e0b70a2dcf

@ -13,6 +13,7 @@ a double precision computation.
*/
#define REL_ERROR (6.0e-3)
#define REL_ERROR_ACCUMULATE (7.0e-3)
#define REL_KULLBACK_ERROR (5.0e-3)
#define ABS_KULLBACK_ERROR (5.0e-3)
@ -464,6 +465,25 @@ a double precision computation.
}
void StatsTestsF16::test_accumulate_f16()
{
const float16_t *inp = inputA.ptr();
const int16_t *dimsp = dims.ptr();
float16_t *outp = output.ptr();
for(int i=0;i < this->nbPatterns; i++)
{
arm_accumulate_f16(inp,dimsp[i+1],outp);
outp++;
}
ASSERT_SNR(ref,output,(float16_t)SNR_THRESHOLD);
ASSERT_REL_ERROR(ref,output,REL_ERROR_ACCUMULATE);
}
void StatsTestsF16::setUp(Testing::testID_t id,std::vector<Testing::param_t>& paramsArgs,Client::PatternMgr *mgr)
{
(void)paramsArgs;
@ -1105,6 +1125,20 @@ a double precision computation.
refOffset = 3;
}
break;
case StatsTestsF16::TEST_ACCUMULATE_F16_53:
{
inputA.reload(StatsTestsF16::INPUT_ACCUMULATE_F16_ID,mgr);
ref.reload(StatsTestsF16::REF_ACCUMULATE_F16_ID,mgr);
dims.reload(StatsTestsF16::INPUT_ACCUMULATE_CONFIG_S16_ID,mgr);
output.create(ref.nbSamples(),StatsTestsF16::OUT_F16_ID,mgr);
const int16_t *dimsp = dims.ptr();
this->nbPatterns=dimsp[0];
}
break;
}
}

@ -459,6 +459,25 @@ a double precision computation.
}
void StatsTestsF32::test_accumulate_f32()
{
const float32_t *inp = inputA.ptr();
const int16_t *dimsp = dims.ptr();
float32_t *outp = output.ptr();
for(int i=0;i < this->nbPatterns; i++)
{
arm_accumulate_f32(inp,dimsp[i+1],outp);
outp++;
}
ASSERT_SNR(ref,output,(float32_t)SNR_THRESHOLD);
ASSERT_REL_ERROR(ref,output,REL_ERROR);
}
void StatsTestsF32::setUp(Testing::testID_t id,std::vector<Testing::param_t>& paramsArgs,Client::PatternMgr *mgr)
{
@ -1102,6 +1121,20 @@ a double precision computation.
}
break;
case StatsTestsF32::TEST_ACCUMULATE_F32_53:
{
inputA.reload(StatsTestsF32::INPUT_ACCUMULATE_F32_ID,mgr);
ref.reload(StatsTestsF32::REF_ACCUMULATE_F32_ID,mgr);
dims.reload(StatsTestsF32::INPUT_ACCUMULATE_CONFIG_S16_ID,mgr);
output.create(ref.nbSamples(),StatsTestsF32::OUT_F32_ID,mgr);
const int16_t *dimsp = dims.ptr();
this->nbPatterns=dimsp[0];
}
break;
}

@ -462,6 +462,25 @@ a double precision computation.
}
void StatsTestsF64::test_accumulate_f64()
{
const float64_t *inp = inputA.ptr();
const int16_t *dimsp = dims.ptr();
float64_t *outp = output.ptr();
for(int i=0;i < this->nbPatterns; i++)
{
arm_accumulate_f64(inp,dimsp[i+1],outp);
outp++;
}
ASSERT_SNR(ref,output,(float64_t)SNR_THRESHOLD);
ASSERT_REL_ERROR(ref,output,REL_ERROR);
}
void StatsTestsF64::setUp(Testing::testID_t id,std::vector<Testing::param_t>& paramsArgs,Client::PatternMgr *mgr)
{
(void)paramsArgs;
@ -1105,6 +1124,20 @@ a double precision computation.
}
break;
case StatsTestsF64::TEST_ACCUMULATE_F64_53:
{
inputA.reload(StatsTestsF64::INPUT_ACCUMULATE_F64_ID,mgr);
ref.reload(StatsTestsF64::REF_ACCUMULATE_F64_ID,mgr);
dims.reload(StatsTestsF64::INPUT_ACCUMULATE_CONFIG_S16_ID,mgr);
output.create(ref.nbSamples(),StatsTestsF64::OUT_F64_ID,mgr);
const int16_t *dimsp = dims.ptr();
this->nbPatterns=dimsp[0];
}
break;
}

@ -56,6 +56,10 @@ group Root {
Pattern MSE_F64_ID : MSEVals28_f64.txt
Pattern INPUT_ACCUMULATE_F64_ID : InputAccumulate1_f64.txt
Pattern INPUT_ACCUMULATE_CONFIG_S16_ID : InputAccumulateConfig1_s16.txt
Pattern REF_ACCUMULATE_F64_ID : RefAccumulate1_f64.txt
Output OUT_F64_ID : Output
Output OUT_S16_ID : Index
Output TMP_F64_ID : Temp
@ -129,7 +133,7 @@ group Root {
Test nb=2n arm_mse_f64:test_mse_f64
Test nb=2n+1 arm_mse_f64:test_mse_f64
Test long arm_mse_f64:test_mse_f64
Test combined arm_accumulate_f64:test_accumulate_f64
}
@ -180,6 +184,9 @@ group Root {
Pattern MSE_F32_ID : MSEVals28_f32.txt
Pattern INPUT_ACCUMULATE_F32_ID : InputAccumulate1_f32.txt
Pattern INPUT_ACCUMULATE_CONFIG_S16_ID : InputAccumulateConfig1_s16.txt
Pattern REF_ACCUMULATE_F32_ID : RefAccumulate1_f32.txt
Output OUT_F32_ID : Output
Output OUT_S16_ID : Index
@ -254,7 +261,7 @@ group Root {
Test nb=4n arm_mse_f32:test_mse_f32
Test nb=4n+1 arm_mse_f32:test_mse_f32
Test long arm_mse_f32:test_mse_f32
Test combined arm_accumulate_f32:test_accumulate_f32
}

@ -54,6 +54,10 @@ group Root {
Pattern MSE_F16_ID : MSEVals28_f16.txt
Pattern INPUT_ACCUMULATE_F16_ID : InputAccumulate1_f16.txt
Pattern INPUT_ACCUMULATE_CONFIG_S16_ID : InputAccumulateConfig1_s16.txt
Pattern REF_ACCUMULATE_F16_ID : RefAccumulate1_f16.txt
Output OUT_F16_ID : Output
Output OUT_S16_ID : Index
Output TMP_F16_ID : Temp
@ -127,6 +131,7 @@ group Root {
Test nb=8n arm_mse_f16:test_mse_f16
Test nb=8n+1 arm_mse_f16:test_mse_f16
Test long arm_mse_f16:test_mse_f16
Test combined arm_accumulate_f16:test_accumulate_f16
}
}
}

Loading…
Cancel
Save