CMSIS-DSP: Mean square error q7

pull/19/head
Christophe Favergeon 4 years ago
parent e5a6e60f5b
commit 47a987217f

@ -895,7 +895,20 @@ float64_t arm_kullback_leibler_f64(const float64_t * pSrcA,
uint32_t blockSize,
q7_t *pResult);
/**
@brief Mean square error between two Q7 vectors.
@param[in] pSrcA points to the first input vector
@param[in] pSrcB points to the second input vector
@param[in] blockSize number of samples in input vector
@param[out] pResult mean square error
@return none
*/
void arm_mse_q7(
const q7_t * pSrcA,
const q7_t * pSrcB,
uint32_t blockSize,
q7_t * pResult);
#ifdef __cplusplus
}

@ -80,6 +80,7 @@ target_sources(CMSISDSPStatistics PRIVATE arm_absmin_no_idx_f64.c)
target_sources(CMSISDSPStatistics PRIVATE arm_absmin_no_idx_q15.c)
target_sources(CMSISDSPStatistics PRIVATE arm_absmin_no_idx_q31.c)
target_sources(CMSISDSPStatistics PRIVATE arm_absmin_no_idx_q7.c)
target_sources(CMSISDSPStatistics PRIVATE arm_mse_q7.c)
configLib(CMSISDSPStatistics ${ROOT})
configDsp(CMSISDSPStatistics ${ROOT})

@ -93,3 +93,4 @@
#include "arm_absmin_no_idx_q15.c"
#include "arm_absmin_no_idx_q31.c"
#include "arm_absmin_no_idx_q7.c"
#include "arm_mse_q7.c"

@ -240,7 +240,7 @@ void arm_absmin_f16(
outIndex = 0U;
/* Load first input value that act as reference value for comparision */
out = fabsf(*pSrc++);
out = (_Float16)fabsf((float32_t)*pSrc++);
/* Initialize blkCnt with number of samples */
blkCnt = (blockSize - 1U);

@ -196,7 +196,7 @@ void arm_absmin_no_idx_f16(
/* Load first input value that act as reference value for comparision */
out = fabsf(*pSrc++);
out = (_Float16)fabsf((float32_t)*pSrc++);
/* Initialize blkCnt with number of samples */
blkCnt = (blockSize - 1U);

@ -0,0 +1,204 @@
/* ----------------------------------------------------------------------
* Project: CMSIS DSP Library
* Title: arm_mse_q7.c
* Description: Mean square error between two Q7 vectors
*
* $Date: 04 April 2022
* $Revision: V1.10.0
*
* Target Processor: Cortex-M and Cortex-A cores
* -------------------------------------------------------------------- */
/*
* Copyright (C) 2010-2022 ARM Limited or its affiliates. All rights reserved.
*
* SPDX-License-Identifier: Apache-2.0
*
* Licensed under the Apache License, Version 2.0 (the License); you may
* not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an AS IS BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include "dsp/statistics_functions.h"
/**
@ingroup groupStats
*/
/**
@defgroup mse Mean Square Error
Calculates the mean square error between two vectors.
*/
/**
@addtogroup mse
@{
*/
/**
@brief Mean square error between two Q7 vectors.
@param[in] pSrcA points to the first input vector
@param[in] pSrcB points to the second input vector
@param[in] blockSize number of samples in input vector
@param[out] pResult mean square error
@return none
*/
#if defined(ARM_MATH_MVEI) && !defined(ARM_MATH_AUTOVECTORIZE)
void arm_mse_q7(
const q7_t * pSrcA,
const q7_t * pSrcB,
uint32_t blockSize,
q7_t * pResult)
{
uint32_t blkCnt; /* loop counters */
q7x16_t vecSrcA,vecSrcB;
q31_t sum = 0LL;
q7_t inA,inB;
/* Compute 16 outputs at a time */
blkCnt = blockSize >> 4U;
while (blkCnt > 0U)
{
vecSrcA = vldrbq_s8(pSrcA);
vecSrcB = vldrbq_s8(pSrcB);
vecSrcA = vqsubq(vecSrcA,vecSrcB);
/*
* sum lanes
*/
sum = vmladavaq(sum, vecSrcA, vecSrcA);
blkCnt--;
pSrcA += 16;
pSrcB += 16;
}
/*
* tail
*/
blkCnt = blockSize & 0xF;
while (blkCnt > 0U)
{
/* C = A[0] * A[0] + A[1] * A[1] + ... + A[blockSize-1] * A[blockSize-1] */
/* Compute Power and store result in a temporary variable, sum. */
inA = *pSrcA++;
inB = *pSrcB++;
inA = (q7_t) __SSAT((q15_t) inA - (q15_t)inB, 8);
sum += ((q15_t) inA * inA);
/* Decrement loop counter */
blkCnt--;
}
*pResult = (q7_t) __SSAT((q15_t) (sum / blockSize)>>7, 8);
}
#else
void arm_mse_q7(
const q7_t * pSrcA,
const q7_t * pSrcB,
uint32_t blockSize,
q7_t * pResult)
{
uint32_t blkCnt; /* Loop counter */
q31_t sum = 0; /* Temporary result storage */
q7_t inA,inB; /* Temporary variable to store input value */
#if defined (ARM_MATH_LOOPUNROLL) && defined (ARM_MATH_DSP)
q31_t inA32,inB32; /* Temporary variable to store packed input value */
q31_t in1, in2; /* Temporary variables to store input value */
#endif
#if defined (ARM_MATH_LOOPUNROLL)
/* Loop unrolling: Compute 4 outputs at a time */
blkCnt = blockSize >> 2U;
while (blkCnt > 0U)
{
/* C = A[0] * A[0] + A[1] * A[1] + ... + A[blockSize-1] * A[blockSize-1] */
/* Compute Power and store result in a temporary variable, sum. */
#if defined (ARM_MATH_DSP)
inA32 = read_q7x4_ia ((q7_t **) &pSrcA);
inB32 = read_q7x4_ia ((q7_t **) &pSrcB);
inA32 = __QSUB8(inA32, inB32);
in1 = __SXTB16(__ROR(inA32, 8));
in2 = __SXTB16(inA32);
/* calculate power and accumulate to accumulator */
sum = __SMLAD(in1, in1, sum);
sum = __SMLAD(in2, in2, sum);
#else
inA = *pSrcA++;
inB = *pSrcB++;
inA = (q7_t) __SSAT((q15_t) inA - (q15_t)inB, 8);
sum += ((q15_t) inA * inA);
inA = *pSrcA++;
inB = *pSrcB++;
inA = (q7_t) __SSAT((q15_t) inA - (q15_t)inB, 8);
sum += ((q15_t) inA * inA);
inA = *pSrcA++;
inB = *pSrcB++;
inA = (q7_t) __SSAT((q15_t) inA - (q15_t)inB, 8);
sum += ((q15_t) inA * inA);
inA = *pSrcA++;
inB = *pSrcB++;
inA = (q7_t) __SSAT((q15_t) inA - (q15_t)inB, 8);
sum += ((q15_t) inA * inA);
#endif /* #if defined (ARM_MATH_DSP) */
/* Decrement loop counter */
blkCnt--;
}
/* Loop unrolling: Compute remaining outputs */
blkCnt = blockSize % 0x4U;
#else
/* Initialize blkCnt with number of samples */
blkCnt = blockSize;
#endif /* #if defined (ARM_MATH_LOOPUNROLL) */
while (blkCnt > 0U)
{
/* C = A[0] * A[0] + A[1] * A[1] + ... + A[blockSize-1] * A[blockSize-1] */
/* Compute Power and store result in a temporary variable, sum. */
inA = *pSrcA++;
inB = *pSrcB++;
inA = (q7_t) __SSAT((q15_t) inA - (q15_t)inB, 8);
sum += ((q15_t) inA * inA);
/* Decrement loop counter */
blkCnt--;
}
/* Store result in q7 format */
*pResult = (q7_t) __SSAT((q15_t) (sum / blockSize)>>7, 8);;
}
#endif /* defined(ARM_MATH_MVEI) */
/**
@} end of power group
*/

@ -356,6 +356,11 @@ def powerTest(format,data):
else:
return(np.dot(data,data))
def mseTest(format,data1,data2):
nb = len(data1)
err = data1 - data2
return(np.dot(err,err) / nb)
def rmsTest(format,data):
return(math.sqrt(np.dot(data,data)/data.size))
@ -388,6 +393,29 @@ def generateFuncTests(config,nb,format,data,func,name):
config.writeReference(nb, funcvals,name)
return(nb+1)
def generateOperatorTests(config,nb,format,data1,data2,func,name):
funcvals=[]
nbiters = Tools.loopnb(format,Tools.TAILONLY)
funcvalue=func(format,data1[0:nbiters],data2[0:nbiters])
funcvals.append(funcvalue)
nbiters = Tools.loopnb(format,Tools.BODYONLY)
funcvalue=func(format,data1[0:nbiters],data2[0:nbiters])
funcvals.append(funcvalue)
nbiters = Tools.loopnb(format,Tools.BODYANDTAIL)
funcvalue=func(format,data1[0:nbiters],data2[0:nbiters])
funcvals.append(funcvalue)
nbiters = 100
funcvalue=func(format,data1[0:nbiters],data2[0:nbiters])
funcvals.append(funcvalue)
config.writeReference(nb, funcvals,name)
return(nb+1)
def generatePowerTests(config,nb,format,data):
funcvals=[]
@ -449,14 +477,22 @@ def writeTests(config,nb,format):
# So new tests have to be added after existing ones
def writeNewsTests(config,nb,format):
NBSAMPLES = 300
#config.setOverwrite(True)
data1=np.random.randn(NBSAMPLES)
data1 = Tools.normalize(data1)
data2=np.random.randn(NBSAMPLES)
data2 = Tools.normalize(data2)
config.writeInput(1, data1,"InputNew")
nb=generateMaxAbsTests(config,nb,format,data1)
nb=generateMinAbsTests(config,nb,format,data1)
config.writeInput(2, data2,"InputNew")
nb=generateOperatorTests(config,nb,format,data1,data2,mseTest,"MSEVals")
#config.setOverwrite(False)
def generateBenchmark(config,format):
NBSAMPLES = 256
@ -490,32 +526,33 @@ def generatePatterns():
configq15=Tools.Config(PATTERNDIR,PARAMDIR,"q15")
configq7 =Tools.Config(PATTERNDIR,PARAMDIR,"q7")
configf64.setOverwrite(False)
configf32.setOverwrite(False)
configf16.setOverwrite(False)
configq31.setOverwrite(False)
configq15.setOverwrite(False)
configq7.setOverwrite(False)
#nb=writeTests(configf32,1,0)
#nb=writeF32OnlyTests(configf32,22)
#writeNewsTests(configf32,nb,Tools.F32)
nb=writeTests(configf32,1,0)
nb=writeF32OnlyTests(configf32,22)
writeNewsTests(configf32,nb,Tools.F32)
nb=writeTests(configf64,1,Tools.F64)
nb=writeF64OnlyTests(configf64,22)
writeNewsTests(configf64,nb,Tools.F64)
#nb=writeTests(configq31,1,31)
#writeNewsTests(configq31,nb,Tools.Q31)
#
#nb=writeTests(configq15,1,15)
#writeNewsTests(configq15,nb,Tools.Q15)
#
#nb=writeTests(configq7,1,7)
#writeNewsTests(configq7,nb,Tools.Q7)
#
#nb=writeTests(configf16,1,16)
#nb=writeF16OnlyTests(configf16,22)
#writeNewsTests(configf16,nb,Tools.F16)
nb=writeTests(configq31,1,31)
writeNewsTests(configq31,nb,Tools.Q31)
nb=writeTests(configq15,1,15)
writeNewsTests(configq15,nb,Tools.Q15)
nb=writeTests(configq7,1,7)
writeNewsTests(configq7,nb,Tools.Q7)
nb=writeTests(configf16,1,16)
nb=writeF16OnlyTests(configf16,22)
writeNewsTests(configf16,nb,Tools.F16)
generateBenchmark(configf64, Tools.F64)
generateBenchmark(configf32, Tools.F32)

@ -1,8 +1,8 @@
H
3
// 3
0x0003
// 3
0x0003
// 3
0x0003
// 4
0x0004
// 4
0x0004
// 4
0x0004

@ -1,8 +1,8 @@
H
3
// 0.761664
0x3a18
// 0.761664
0x3a18
// 0.761664
0x3a18
// 0.423138
0x36c5
// 0.423138
0x36c5
// 0.423138
0x36c5

@ -1,7 +1,7 @@
H
3
// 2
0x0002
// 0
0x0000
// 15
0x000F
// 15

@ -1,8 +1,8 @@
H
3
// 0.007411
0x1f97
// 0.002686
0x1980
// 0.002686
0x1980
// 0.027578
0x270f
// 0.007974
0x2015
// 0.007974
0x2015

File diff suppressed because it is too large Load Diff

@ -0,0 +1,602 @@
H
300
// 0.052698
0x2abf
// 0.599158
0x38cb
// -0.090547
0xadcc
// 0.096296
0x2e2a
// 0.578697
0x38a1
// 0.084780
0x2d6d
// -0.199387
0xb261
// 0.168488
0x3164
// 0.013523
0x22ed
// 0.006665
0x1ed3
// -0.407088
0xb683
// -0.367823
0xb5e3
// 0.625844
0x3902
// -0.232411
0xb370
// 0.357061
0x35b7
// 0.268207
0x344b
// 0.111333
0x2f20
// 0.049000
0x2a46
// -0.311646
0xb4fd
// -0.388494
0xb637
// 0.135176
0x3053
// -0.338715
0xb56b
// 0.388495
0x3637
// 0.104813
0x2eb5
// -0.349688
0xb598
// -0.390341
0xb63f
// 0.886180
0x3b17
// 0.345102
0x3586
// -0.137041
0xb063
// 0.654003
0x393b
// 0.192606
0x322a
// 0.106913
0x2ed8
// 0.090995
0x2dd3
// -0.542267
0xb857
// -0.165243
0xb14a
// 0.105603
0x2ec2
// 0.441214
0x370f
// 0.421708
0x36bf
// 0.267520
0x3448
// 0.166070
0x3150
// -0.138228
0xb06c
// 0.071481
0x2c93
// 0.522676
0x382e
// -0.118353
0xaf93
// -0.740534
0xb9ed
// -0.565970
0xb887
// 0.178736
0x31b8
// 0.282623
0x3486
// 0.615540
0x38ed
// 0.963430
0x3bb5
// 0.567687
0x388b
// -0.467817
0xb77c
// 0.498679
0x37fb
// -0.031202
0xa7fd
// -0.111305
0xaf20
// -0.614686
0xb8eb
// 0.234905
0x3384
// 0.458391
0x3756
// -0.307080
0xb4ea
// -0.161193
0xb128
// -0.242464
0xb3c2
// -0.105061
0xaeb9
// 0.480653
0x37b1
// -0.043881
0xa99e
// -0.145997
0xb0ac
// -0.018535
0xa4bf
// 0.025231
0x2676
// 0.042147
0x2965
// -0.166213
0xb152
// 0.038620
0x28f1
// -0.298211
0xb4c5
// 0.493129
0x37e4
// -0.067999
0xac5a
// 0.003609
0x1b64
// -0.011770
0xa207
// 0.071079
0x2c8d
// -0.714171
0xb9b7
// -0.175917
0xb1a1
// -0.115205
0xaf60
// -0.283178
0xb488
// -0.264716
0xb43c
// 0.077988
0x2cfe
// -1.000000
0xbc00
// 0.414758
0x36a3
// 0.159621
0x311c
// -0.287733
0xb49b
// -0.353810
0xb5a9
// 0.293187
0x34b1
// 0.563909
0x3883
// 0.008701
0x2074
// -0.699239
0xb998
// 0.620038
0x38f6
// 0.274980
0x3466
// -0.673807
0xb964
// 0.530080
0x383e
// -0.016568
0xa43e
// -0.137176
0xb064
// -0.206110
0xb298
// 0.306488
0x34e7
// 0.294610
0x34b7
// -0.702643
0xb99f
// -0.402913
0xb672
// 0.143141
0x3095
// 0.302359
0x34d6
// -0.345577
0xb587
// 0.026688
0x26d5
// 0.243506
0x33cb
// -0.204274
0xb289
// 0.199725
0x3264
// -0.076016
0xacdd
// -0.135691
0xb058
// 0.037360
0x28c8
// -0.013769
0xa30d
// 0.512265
0x3819
// 0.161300
0x3129
// -0.026353
0xa6bf
// 0.085993
0x2d81
// 0.096433
0x2e2c
// -0.048391
0xaa32
// -0.312468
0xb500
// -0.081823
0xad3d
// -0.017053
0xa45e
// 0.028221
0x2739
// 0.626711
0x3904
// 0.431711
0x36e8
// 0.081115
0x2d31
// -0.146216
0xb0ae
// -0.559159
0xb879
// -0.942947
0xbb8b
// -0.346945
0xb58d
// -0.192287
0xb227
// 0.270053
0x3452
// -0.013682
0xa301
// 0.144651
0x30a1
// -0.236855
0xb394
// -0.391105
0xb642
// -0.434496
0xb6f4
// -0.004399
0x9c81
// -0.047152
0xaa09
// 0.111911
0x2f2a
// -0.479964
0xb7ae
// -0.260061
0xb429
// -0.049952
0xaa65
// -0.682226
0xb975
// -0.123391
0xafe6
// 0.228972
0x3354
// -0.478304
0xb7a7
// 0.128967
0x3020
// -0.542026
0xb856
// 0.172365
0x3184
// -0.386597
0xb62f
// 0.577347
0x389e
// 0.300635
0x34cf
// 0.368867
0x35e7
// 0.070490
0x2c83
// 0.028665
0x2757
// -0.305648
0xb4e4
// -0.197277
0xb250
// 0.022892
0x25dc
// 0.011269
0x21c5
// -0.210645
0xb2be
// 0.190955
0x321c
// -0.001151
0x94b7
// 0.166787
0x3156
// -0.217811
0xb2f8
// 0.427200
0x36d6
// 0.529758
0x383d
// -0.657326
0xb942
// -0.043176
0xa987
// 0.358998
0x35be
// 0.491382
0x37dd
// -0.738992
0xb9e9
// -0.020528
0xa541
// 0.005794
0x1def
// -0.850972
0xbacf
// -0.116498
0xaf75
// -0.077865
0xacfc
// 0.086212
0x2d84
// 0.079898
0x2d1d
// -0.428272
0xb6da
// 0.194763
0x323b
// -0.118171
0xaf90
// 0.000683
0x1199
// 0.361662
0x35c9
// 0.120449
0x2fb5
// 0.038227
0x28e5
// -0.130194
0xb02b
// 0.407335
0x3684
// 0.235860
0x338c
// -0.373717
0xb5fb
// 0.086300
0x2d86
// -0.269874
0xb451
// -0.178477
0xb1b6
// -0.449293
0xb730
// -0.301409
0xb4d3
// 0.526302
0x3836
// 0.180580
0x31c7
// -0.181042
0xb1cb
// 0.274983
0x3466
// -0.443806
0xb71a
// 0.672983
0x3962
// -0.737978
0xb9e7
// 0.033400
0x2846
// 0.107435
0x2ee0
// -0.666165
0xb954
// 0.126392
0x300b
// -0.303254
0xb4da
// -0.653657
0xb93b
// -0.398888
0xb662
// 0.317159
0x3513
// 0.221097
0x3313
// 0.269966
0x3452
// 0.549881
0x3866
// 0.223549
0x3327
// -0.770066
0xba29
// 0.015472
0x23ec
// 0.462099
0x3765
// 0.651140
0x3936
// -0.335676
0xb55f
// -0.232029
0xb36d
// 0.208113
0x32a9
// 0.525900
0x3835
// 0.569715
0x388f
// 0.256074
0x3419
// 0.393614
0x364c
// 0.080829
0x2d2c
// -0.214457
0xb2dd
// -0.309404
0xb4f3
// 0.056865
0x2b47
// -0.100351
0xae6c
// 0.654343
0x393c
// 0.440345
0x370c
// -0.668899
0xb95a
// -0.437973
0xb702
// -0.916491
0xbb55
// 0.367238
0x35e0
// -0.871589
0xbaf9
// 0.349677
0x3598
// -0.591961
0xb8bc
// -0.116695
0xaf78
// -0.499426
0xb7fe
// 0.088513
0x2daa
// 0.484926
0x37c2
// 0.010355
0x214d
// 0.404760
0x367a
// 0.161040
0x3127
// -0.329855
0xb547
// 0.143300
0x3096
// 0.170736
0x3177
// 0.109824
0x2f07
// 0.321851
0x3526
// 0.501219
0x3802
// 0.465043
0x3771
// 0.155417
0x30f9
// -0.227085
0xb344
// 0.249521
0x33fc
// 0.177622
0x31af
// 0.086632
0x2d8b
// -0.030771
0xa7e1
// -0.063864
0xac16
// 0.869098
0x3af4
// -0.222487
0xb31f
// -0.027867
0xa722
// -0.185767
0xb1f2
// -0.047409
0xaa12
// -0.308167
0xb4ee
// -0.433563
0xb6f0
// -0.072936
0xacab
// 0.339077
0x356d
// 0.032403
0x2826
// 0.176076
0x31a2
// 0.205573
0x3294
// 0.239769
0x33ac
// 0.574516
0x3899
// 0.062980
0x2c08
// -0.440199
0xb70b
// -0.017049
0xa45d
// -0.040273
0xa928
// 0.033026
0x283a
// -0.537557
0xb84d
// 0.424029
0x36c9
// 0.107427
0x2ee0
// -0.180306
0xb1c5
// 0.299536
0x34cb
// 0.423412
0x36c6
// 0.136855
0x3061
// 0.196281
0x3248
// 0.592304
0x38bd
// 0.312218
0x34ff
// 0.129056
0x3021
// 0.265731
0x3440
// 0.359623
0x35c1
// -0.437533
0xb700
// -0.228965
0xb354
// 0.328925
0x3543
// 0.006210
0x1e5c
// 0.168396
0x3163
// 0.054881
0x2b06
// -0.275645
0xb469
// 0.235019
0x3385

@ -0,0 +1,10 @@
H
4
// 0.038705
0x28f4
// 0.092517
0x2dec
// 0.106867
0x2ed7
// 0.225679
0x3339

@ -1,8 +1,8 @@
H
3
// 2
0x0002
// 2
0x0002
// 2
0x0002
// 1
0x0001
// 1
0x0001
// 1
0x0001

@ -1,8 +1,8 @@
W
3
// 1.000000
0x3f800000
// 1.000000
0x3f800000
// 1.000000
0x3f800000
// 0.476185
0x3ef3ce78
// 0.476185
0x3ef3ce78
// 0.476185
0x3ef3ce78

@ -1,8 +1,8 @@
H
3
// 1
0x0001
// 0
0x0000
// 7
0x0007
// 7
0x0007
// 10
0x000A

@ -1,8 +1,8 @@
W
3
// 0.118651
0x3df2ff46
// 0.112199
0x3de5c8d5
// 0.004464
0x3b924435
// 0.184919
0x3e3d5b69
// 0.008792
0x3c100d1c
// 0.008792
0x3c100d1c

File diff suppressed because it is too large Load Diff

@ -0,0 +1,602 @@
W
300
// 0.151278
0x3e1ae8af
// -0.058164
0xbd6e3de1
// 0.481448
0x3ef6805a
// -0.323505
0xbea5a26f
// 0.384798
0x3ec50439
// 0.241883
0x3e77b01e
// -0.133523
0xbe08ba43
// 0.114723
0x3deaf418
// 0.426230
0x3eda3ac5
// -0.311766
0xbe9f9fbb
// 0.245237
0x3e7b1f75
// 0.362216
0x3eb97459
// 0.168403
0x3e2c71ee
// -0.662516
0xbf299aa2
// 0.041627
0x3d2a8154
// 0.340730
0x3eae7430
// 0.206981
0x3e53f2d9
// 0.136789
0x3e0c1264
// -0.196813
0xbe49896e
// -0.213135
0xbe5a3ff0
// -0.289568
0xbe944235
// 0.295907
0x3e978119
// -0.592375
0xbf17a5eb
// 0.234111
0x3e6fbabc
// -0.007598
0xbbf8f7c4
// -0.498650
0xbeff4f1d
// 0.155376
0x3e1f1ac7
// -0.155683
0xbe1f6b4d
// 0.581158
0x3f14c6bf
// -0.397887
0xbecbb7c9
// -0.575855
0xbf136b37
// 0.056788
0x3d689adb
// -0.277001
0xbe8dd30d
// 0.180773
0x3e391cae
// -0.093168
0xbdbeceb7
// 0.273742
0x3e8c27d9
// 0.050960
0x3d50bb4f
// -0.232204
0xbe6dc6ce
// -0.118467
0xbdf29ebf
// -0.392172
0xbec8cab8
// -0.329358
0xbea8a199
// -0.179858
0xbe382ca7
// 0.382789
0x3ec3fce9
// -0.020432
0xbca760da
// -0.273299
0xbe8bedde
// -0.078984
0xbda1c238
// -0.362381
0xbeb98a0b
// -0.066551
0xbd884be2
// -0.036058
0xbd13b1da
// 0.278174
0x3e8e6cd5
// -0.215226
0xbe5c6424
// 0.211822
0x3e58e7bd
// 0.010410
0x3c2a8daa
// -0.189488
0xbe420933
// -0.084238
0xbdac84f7
// -0.243952
0xbe79cea7
// 0.086618
0x3db1649a
// -0.049890
0xbd4c591f
// -0.041104
0xbd285c3e
// -0.169798
0xbe2ddf77
// 0.090396
0x3db921cb
// 0.009551
0x3c1c7c02
// -0.588248
0xbf169771
// 0.009791
0x3c20696b
// -0.167003
0xbe2b02e4
// 0.034615
0x3d0dc881
// -0.045490
0xbd3a541b
// 0.013532
0x3c5db49d
// 0.252852
0x3e8175c7
// 0.151811
0x3e1b743d
// -0.578104
0xbf13fea2
// 0.415829
0x3ed4e77e
// 0.194095
0x3e46c0d0
// 0.022926
0x3cbbcec2
// 0.440591
0x3ee1952c
// 0.490060
0x3efae934
// -0.049050
0xbd48e8e1
// 0.363789
0x3eba429a
// 0.582700
0x3f152bdc
// -0.058934
0xbd7164b3
// 0.232967
0x3e6e8ef2
// -0.005822
0xbbbec77f
// -0.011880
0xbc42a324
// -0.159851
0xbe23afe7
// 0.010392
0x3c2a4197
// -0.382011
0xbec396f6
// -0.275070
0xbe8cd5ee
// -0.073223
0xbd95f625
// 0.770471
0x3f453d9d
// 0.218669
0x3e5feae4
// -0.109370
0xbddffd8c
// 0.179015
0x3e374fa8
// 0.217043
0x3e5e4078
// 0.153609
0x3e1d4bc1
// 0.391978
0x3ec8b14f
// -0.319933
0xbea3ce46
// 0.294288
0x3e96acf6
// -0.041923
0xbd2bb6f5
// 0.356530
0x3eb68b17
// 0.144437
0x3e13e769
// 0.052420
0x3d56b5d8
// 0.252360
0x3e813553
// 0.198138
0x3e4ae4af
// 0.486908
0x3ef94c02
// 0.180275
0x3e389a13
// 0.562181
0x3f0feb1a
// -0.273006
0xbe8bc761
// -0.437153
0xbedfd28b
// -0.315630
0xbea19a39
// 0.143273
0x3e12b623
// 0.276564
0x3e8d99c2
// 0.164358
0x3e284d81
// -0.112657
0xbde6b8cb
// 0.126822
0x3e01ddab
// 0.240362
0x3e76216f
// 0.272578
0x3e8b8f67
// 0.748625
0x3f3fa5e5
// -0.192523
0xbe4524b9
// -0.395602
0xbeca8c66
// 0.401520
0x3ecd9401
// 0.093569
0x3dbfa136
// -0.006021
0xbbc547a1
// -0.093867
0xbdc03d36
// -0.093555
0xbdbf99dd
// -0.019825
0xbca26832
// 0.116282
0x3dee2565
// -0.105323
0xbdd7b3c5
// 0.063634
0x3d8252ba
// 0.059849
0x3d7523d0
// -0.391375
0xbec86252
// -0.283119
0xbe90f4ed
// 0.345476
0x3eb0e243
// -0.157924
0xbe21b6ed
// -0.187941
0xbe4073b6
// -0.261616
0xbe85f290
// 0.121704
0x3df93fbc
// 0.069018
0x3d8d591f
// 0.198777
0x3e4b8c4b
// -0.118190
0xbdf20dbb
// -0.190804
0xbe436213
// -0.102633
0xbdd23177
// -0.332976
0xbeaa7bd7
// 0.162570
0x3e2678d6
// 0.014739
0x3c717c25
// 0.177432
0x3e35b0b9
// 0.069137
0x3d8d97c9
// 0.150000
0x3e199998
// -0.383569
0xbec46323
// 0.277393
0x3e8e0670
// 0.354491
0x3eb57fcd
// -0.402480
0xbece11e5
// 0.339369
0x3eadc1cf
// -0.508973
0xbf024c06
// -0.096284
0xbdc53075
// -0.110121
0xbde186e4
// 0.019574
0x3ca0599b
// 0.546042
0x3f0bc96c
// 0.242408
0x3e7839e3
// 0.090544
0x3db96f2f
// -0.153174
0xbe1cd9a5
// -0.065812
0xbd86c87a
// -0.077035
0xbd9dc452
// 0.087889
0x3db3fefd
// -0.382027
0xbec3990a
// 0.075286
0x3d9a2fac
// 0.081822
0x3da7927b
// -0.251128
0xbe8093e8
// -0.020161
0xbca529b7
// 0.126114
0x3e0123f9
// 0.242078
0x3e77e32c
// 0.444107
0x3ee3620e
// -0.116140
0xbdeddb0f
// 0.187611
0x3e401cfa
// 0.280643
0x3e8fb076
// 0.176675
0x3e34ea4d
// -0.291179
0xbe951562
// 0.536103
0x3f093e12
// -0.018554
0xbc97fe34
// 0.081480
0x3da6dee4
// 0.260566
0x3e8568db
// 0.072072
0x3d939aa6
// -0.140176
0xbe0f8a6d
// -0.113758
0xbde8f9eb
// -0.087189
0xbdb29034
// 0.131395
0x3e068c79
// -0.041059
0xbd282d80
// 0.254300
0x3e823398
// -0.354812
0xbeb5a9f6
// -0.232434
0xbe6e034f
// 0.320764
0x3ea43b24
// -0.333891
0xbeaaf3c2
// -0.188809
0xbe415742
// 0.145929
0x3e156e57
// -0.056895
0xbd690b26
// 0.192570
0x3e453111
// 0.555489
0x3f0e348a
// 0.214625
0x3e5bc6af
// -0.006151
0xbbc98ff0
// 0.169314
0x3e2d60b6
// -0.354554
0xbeb58824
// 0.387040
0x3ec62a2b
// 0.002059
0x3b06e94e
// 0.312551
0x3ea006b7
// -0.193064
0xbe45b29d
// 0.385540
0x3ec5657f
// 0.168652
0x3e2cb31d
// 0.110716
0x3de2bf16
// 0.128443
0x3e038686
// -0.103422
0xbdd3cf17
// 0.427255
0x3edac125
// 0.103507
0x3dd3fb66
// 0.179970
0x3e384a29
// 0.047644
0x3d43260a
// 0.213930
0x3e5b1058
// -0.073264
0xbd960b5b
// -0.300178
0xbe99b0f0
// -0.529121
0xbf077473
// 0.329948
0x3ea8eef1
// 0.541950
0x3f0abd3e
// -0.446576
0xbee4a58f
// 0.069226
0x3d8dc672
// 0.256842
0x3e8380cc
// -0.228789
0xbe6a47ae
// 0.141428
0x3e10d281
// -0.160058
0xbe23e659
// -0.131707
0xbe06de4f
// -0.046493
0xbd3e6fe0
// 0.364262
0x3eba809c
// -0.123011
0xbdfbed66
// -1.000000
0xbf800000
// -0.007786
0xbbff2405
// 0.329113
0x3ea88178
// -0.482864
0xbef739f8
// 0.485592
0x3ef89f89
// -0.324360
0xbea6127d
// 0.350194
0x3eb34c98
// 0.367319
0x3ebc1139
// -0.219126
0xbe606298
// -0.420500
0xbed74bc4
// -0.320091
0xbea3e2fb
// -0.310253
0xbe9ed96f
// -0.182712
0xbe3b18d1
// -0.088153
0xbdb48955
// 0.514975
0x3f03d56a
// 0.459565
0x3eeb4c18
// 0.505469
0x3f01666a
// -0.364361
0xbeba8d89
// -0.455181
0xbee90d82
// -0.296502
0xbe97cf16
// -0.083444
0xbdaae4c5
// -0.048100
0xbd45040c
// 0.276934
0x3e8dca42
// 0.113772
0x3de90128
// -0.824426
0xbf530d92
// 0.277926
0x3e8e4c4f
// 0.092991
0x3dbe7232
// -0.005426
0xbbb1cbb4
// -0.236103
0xbe71c4e2
// -0.109260
0xbddfc3cf
// -0.006918
0xbbe2ac6d
// -0.165333
0xbe294d27
// -0.010126
0xbc25e88d
// -0.188422
0xbe40f1a3
// 0.325803
0x3ea6cfa6
// -0.077533
0xbd9ec999
// 0.029662
0x3cf2fd24
// 0.170741
0x3e2ed6cf
// 0.299980
0x3e999704
// -0.220564
0xbe61db9f
// 0.508014
0x3f020d35
// 0.430410
0x3edc5eb3
// -0.276771
0xbe8db4f6
// 0.122095
0x3dfa0cc9
// 0.274330
0x3e8c74fd
// -0.706338
0xbf34d28b
// -0.171849
0xbe2ff94f
// -0.068136
0xbd8b8b01
// -0.409666
0xbed1bfbf
// 0.480192
0x3ef5dbba
// 0.271418
0x3e8af757
// -0.117439
0xbdf083d4
// 0.097285
0x3dc73d6a
// 0.557718
0x3f0ec698
// -0.309627
0xbe9e876e
// -0.060542
0xbd77fadd
// -0.001086
0xba8e4d5d
// 0.031242
0x3cffefdd
// -0.448122
0xbee57046
// -0.249942
0xbe7ff0d9
// -0.222001
0xbe63542b
// -0.244021
0xbe79e096
// -0.049402
0xbd4a59da
// 0.320023
0x3ea3da0e
// 0.089040
0x3db65a73
// 0.148077
0x3e17a16d
// -0.115138
0xbdebcd69
// -0.078011
0xbd9fc411
// 0.097629
0x3dc7f1e0
// 0.244388
0x3e7a40f2
// -0.501028
0xbf004359

@ -0,0 +1,10 @@
W
4
// 0.125231
0x3e003c73
// 0.122919
0x3dfbbceb
// 0.145740
0x3e153cd2
// 0.189820
0x3e426031

@ -1,8 +1,8 @@
H
3
// 0
0x0000
// 3
0x0003
// 4
0x0004
// 1
0x0001
// 2
0x0002
// 2
0x0002

@ -1,8 +1,8 @@
D
3
// 0.220976
0x3fcc48ee0b9b37ba
// 0.375626
0x3fd80a418d69d399
// 0.470260
0x3fde18bd49440a89
// 0.203055
0x3fc9fdb6e0c81ee0
// 0.360222
0x3fd70de0df777efb
// 0.360222
0x3fd70de0df777efb

@ -1,8 +1,8 @@
H
3
// 1
0x0001
// 1
0x0001
// 1
0x0001
// 0
0x0000
// 0
0x0000
// 0
0x0000

@ -1,8 +1,8 @@
D
3
// 0.022397
0x3f96ef1be4f98d01
// 0.022397
0x3f96ef1be4f98d01
// 0.022397
0x3f96ef1be4f98d01
// 0.003692
0x3f6e3f80ef9e8a83
// 0.003692
0x3f6e3f80ef9e8a83
// 0.003692
0x3f6e3f80ef9e8a83

File diff suppressed because it is too large Load Diff

@ -0,0 +1,602 @@
D
300
// 0.034806
0x3fa1d21604c45450
// 0.237342
0x3fce6139b50e547c
// -0.171621
0xbfc5f7b05d28262c
// -0.061638
0xbfaf8f13279b5234
// 0.066935
0x3fb122a076834687
// 0.565869
0x3fe21b9a5265f76b
// -0.719752
0xbfe70836101461ad
// -0.045814
0xbfa774fb52e9b75b
// -0.244252
0xbfcf43a6f04b5196
// -0.051166
0xbfaa3263a8ed43c7
// -0.102532
0xbfba3f82932a7409
// -0.100882
0xbfb9d36062e71715
// 0.157752
0x3fc431397254642e
// 0.381333
0x3fd867c09c2d3ed2
// -0.211452
0xbfcb10dafa94776d
// 0.414420
0x3fda85db9f3ff0f6
// 0.147383
0x3fc2dd7417e66510
// 0.240436
0x3fcec6993f2c7158
// 0.598528
0x3fe3272396180867
// 0.143233
0x3fc255725ffb98f5
// -0.420952
0xbfdaf0dedee7cede
// -0.445141
0xbfdc7d321f98d039
// -0.797296
0xbfe98372fdf49a72
// -0.325370
0xbfd4d2db1712183f
// -0.281153
0xbfd1fe6a3e93bc55
// -0.223253
0xbfcc938b41e1284b
// 0.414223
0x3fda82a248b87b8e
// -0.154590
0xbfc3c9975147f7c1
// -0.035415
0xbfa221e08a0d4167
// 0.765427
0x3fe87e5fd159e1ab
// -0.181592
0xbfc73e6930057d6e
// -0.741497
0xbfe7ba586d09fadf
// -0.661395
0xbfe52a24fd947307
// -0.415334
0xbfda94d6998c9c51
// 0.369503
0x3fd7a5eee2a71dae
// 0.246688
0x3fcf9375dd9008a7
// 0.232049
0x3fcdb3c67525749b
// -0.196516
0xbfc9276c7a957544
// -0.146940
0xbfc2ceee87924a72
// -0.410903
0xbfda4c3c2cab77ca
// -0.371801
0xbfd7cb96e7fb44ac
// -0.247739
0xbfcfb5e77d1f4eae
// 0.177593
0x3fc6bb6191f3c165
// -0.219790
0xbfcc22108eaf1d5a
// -0.738161
0xbfe79f0317c73e6e
// 0.367106
0x3fd77eab9ff39e30
// -0.379973
0xbfd8517bbdfe7f7f
// 0.327604
0x3fd4f775a626d255
// -0.911389
0xbfed2a183db30ad2
// 0.085981
0x3fb602e12aa534e5
// 0.158564
0x3fc44bd36e9263cd
// -0.615458
0xbfe3b1d587dc8d39
// -0.402652
0xbfd9c50b2668c6c5
// -0.447471
0xbfdca35b6ea39768
// -0.383683
0xbfd88e418f905758
// -0.617814
0xbfe3c522b420b5aa
// 0.101665
0x3fba06b2ebae97ec
// -0.231518
0xbfcda25d983eb270
// -0.001608
0xbf5a582c52447140
// -0.183839
0xbfc78805e40dca5a
// 0.133889
0x3fc12343370081c8
// 0.062124
0x3fafceb7d36a421d
// -0.004919
0xbf7425cd7d1cdd2a
// 0.348514
0x3fd64e0c8d828783
// 0.213817
0x3fcb5e590afd5d53
// -1.000000
0xbff0000000000000
// -0.225062
0xbfccced30d453257
// 0.489477
0x3fdf53985c948cb8
// -0.654840
0xbfe4f4738076d8f3
// -0.044188
0xbfa69fdf88fbef6f
// -0.023873
0xbf98720c51c590b8
// -0.410862
0xbfda4b8f54f45be2
// 0.650421
0x3fe4d03ecbcfd41f
// 0.400906
0x3fd9a87009acc7f6
// 0.354357
0x3fd6adcaad4b0cbd
// -0.159610
0xbfc46e1794faf842
// 0.149578
0x3fc3255c5c21f945
// 0.260487
0x3fd0abcff43f2a83
// 0.439596
0x3fdc225536ff98e2
// -0.096582
0xbfb8b9925587d617
// -0.183615
0xbfc780b07fc1e10c
// -0.644388
0xbfe49ed3428a02f2
// -0.483177
0xbfdeec5d95001651
// 0.257656
0x3fd07d71aada3eb5
// -0.101546
0xbfb9fee8691eebc5
// -0.188189
0xbfc816960699e9e2
// 0.184552
0x3fc79f638c096e2f
// 0.003939
0x3f7022a59bfa9bb6
// -0.892940
0xbfec92f6e1a061fb
// 0.079482
0x3fb458ee2fddb8aa
// 0.076969
0x3fb3b437bec2bbee
// 0.185109
0x3fc7b1a92e4eeb65
// -0.866339
0xbfebb90bda35f714
// 0.014417
0x3f8d86c1ca39e1a6
// -0.277725
0xbfd1c640281bb640
// -0.385039
0xbfd8a47bcb3b88a4
// 0.784538
0x3fe91aeed086c6c2
// -0.400675
0xbfd9a4a9e775c2a3
// 0.638271
0x3fe46cb80d378fe8
// -0.043526
0xbfa6490f6db1a0b4
// 0.228128
0x3fcd33494b5be51e
// -0.287272
0xbfd262ab36a2d4e5
// 0.027957
0x3f9ca0cb8e5fd04a
// 0.009694
0x3f83da51c7d7ee67
// 0.165183
0x3fc524b5b96d49ad
// 0.252505
0x3fd0290afd24aef8
// 0.610541
0x3fe3898cb8f19773
// -0.546327
0xbfe17b82bbd73245
// -0.419548
0xbfdad9df662e6c69
// -0.486442
0xbfdf21ddc43162fb
// -0.281981
0xbfd20bf92869e8b1
// -0.211096
0xbfcb053362cd64e9
// 0.179350
0x3fc6f4f0a7aeed94
// 0.051655
0x3faa727a11d0e312
// 0.101201
0x3fb9e853db9cea83
// -0.251161
0xbfd0130414f4feb9
// -0.085534
0xbfb5e595da644e9c
// 0.282051
0x3fd20d1fde341bd0
// -0.482608
0xbfdee30d07a3fea3
// 0.301333
0x3fd34908211f85b8
// -0.122671
0xbfbf675e9a2eabc8
// 0.491254
0x3fdf70b35c331d81
// -0.246864
0xbfcf994063debea2
// 0.247602
0x3fcfb16bafc38700
// -0.060899
0xbfaf2e30f23465a3
// 0.237564
0x3fce687b6549f561
// -0.422563
0xbfdb0b47072e1ca1
// 0.473748
0x3fde51e1a295be3b
// 0.005886
0x3f781bec0f2eaf4a
// -0.188881
0xbfc82d3f67a324d8
// -0.309714
0xbfd3d25bc7659ba9
// 0.050066
0x3fa9a24abf0a8877
// 0.053976
0x3faba2b9f4c54764
// 0.137317
0x3fc1939e5d7e32ca
// -0.078422
0xbfb41378add1558c
// -0.281052
0xbfd1fcc26c92f9e0
// 0.090181
0x3fb71620361071e5
// -0.143185
0xbfc253e0ad6ad45d
// 0.486850
0x3fdf288bd96a9cb3
// 0.249543
0x3fcff10978b6753f
// -0.141134
0xbfc210ab0e2c0d59
// -0.250237
0xbfd003e41d60e32f
// 0.453541
0x3fdd06cf843ea9e0
// 0.126768
0x3fc039eec4baf12e
// -0.271553
0xbfd16121bc6bfd3c
// -0.346615
0xbfd62ef0abb0eeb4
// -0.371032
0xbfd7befee698c9b6
// 0.204655
0x3fca3223387a9757
// 0.767985
0x3fe8935455bac113
// -0.789647
0xbfe944c8e53e4d73
// -0.533731
0xbfe114539daa5989
// -0.266647
0xbfd110bdb1eabc3f
// 0.408065
0x3fda1dbad3a42bba
// -0.431005
0xbfdb9597de02c572
// 0.178449
0x3fc6d76dfddc7ea9
// 0.214303
0x3fcb6e4bd1dd6888
// 0.282256
0x3fd2107b71434ecf
// -0.050006
0xbfa99a6940866a7a
// -0.009238
0xbf82eb31d19589c9
// 0.417491
0x3fdab82ad97db6ab
// 0.073543
0x3fb2d3bd46f0f5eb
// 0.180617
0x3fc71e77e45706b2
// -0.854356
0xbfeb56e23e909f09
// 0.144727
0x3fc2866dc84b596d
// 0.666851
0x3fe556d8383584d7
// 0.210292
0x3fcaead74eb6fdf4
// -0.085585
0xbfb5e8debd91ea43
// 0.137997
0x3fc1a9e2bda123cb
// 0.016511
0x3f90e84f1fb70ba5
// 0.476884
0x3fde85445c2e5b2c
// -0.559567
0xbfe1e7f8450b5702
// 0.663905
0x3fe53eb6958dae12
// -0.581573
0xbfe29c3e785727cc
// -0.708668
0xbfe6ad67ffdb7a8e
// -0.460672
0xbfdd7ba80320be27
// -0.118068
0xbfbe39b40213fffa
// -0.359227
0xbfd6fd93f482d1db
// -0.705872
0xbfe69680cd8f2a33
// 0.369787
0x3fd7aa97989272d0
// -0.105739
0xbfbb11b25e9f9acd
// -0.530837
0xbfe0fc9d31a155e3
// 0.007048
0x3f7cdde000bc00ea
// 0.164941
0x3fc51cc5ff754e4a
// -0.299711
0xbfd32e7676b08685
// 0.724113
0x3fe72bee5293035c
// 0.272583
0x3fd17201d5676ab8
// -0.043538
0xbfa64a9b0b3699cf
// 0.456544
0x3fdd380287bd50b5
// 0.107149
0x3fbb6e1806ffeb03
// -0.012513
0xbf89a02ad9dc77cf
// -0.332028
0xbfd53ff209b8e72d
// 0.063151
0x3fb02aa1fd8119e5
// 0.375628
0x3fd80a48e6e56885
// 0.756234
0x3fe833109b9f7151
// -0.036217
0xbfa28b168bf1a338
// -0.125795
0xbfc01a0990a03d53
// 0.089949
0x3fb706edeffc501a
// 0.401825
0x3fd9b780bb2f7be8
// -0.576166
0xbfe26ff44b54188b
// -0.077212
0xbfb3c42b9c7cf1d9
// 0.107582
0x3fbb8a7a5e75d673
// 0.333105
0x3fd5519710af6418
// -0.187846
0xbfc80b5591183b1d
// 0.497520
0x3fdfd75e924376d0
// -0.039882
0xbfa46b69ecdea50e
// -0.222422
0xbfcc785195942020
// -0.669952
0xbfe5703f41daa158
// 0.193056
0x3fc8b611be31ef19
// 0.101263
0x3fb9ec5f7ab08e38
// -0.201215
0xbfc9c16affa72e3d
// -0.317517
0xbfd4523188dff934
// -0.375291
0xbfd804c638058de2
// 0.255315
0x3fd0571479cd4a03
// -0.223939
0xbfccaa085fac809a
// 0.086811
0x3fb6393ff6bee273
// -0.323596
0xbfd4b5cadbb0d7fc
// 0.107809
0x3fbb995d6ba39823
// 0.149756
0x3fc32b373c7ed437
// 0.035732
0x3fa24b684f0fdccb
// -0.149620
0xbfc326bcd93660a5
// -0.002917
0xbf67e4a3b5e0dfbc
// -0.537767
0xbfe135632b0d86f7
// 0.633785
0x3fe447f6c9550091
// -0.099295
0xbfb96b5e86d9852f
// 0.230081
0x3fcd7347f0d8a7d6
// 0.403836
0x3fd9d872eff4c0c7
// 0.205713
0x3fca54d1a38476ea
// 0.206727
0x3fca76076eeacd16
// 0.474464
0x3fde5d9ce58f767d
// -0.083843
0xbfb576ba4f7f5cbe
// -0.510554
0xbfe056758c516eee
// 0.562003
0x3fe1fbed3c14e41a
// -0.252662
0xbfd02b9ee044ba28
// -0.319132
0xbfd46caa0f3f09f6
// 0.297159
0x3fd304a8c1716733
// 0.455299
0x3fdd239e28b7d2e7
// 0.058303
0x3fadd9d3c4a8d00f
// 0.032538
0x3fa0a8da79cc819b
// -0.301754
0xbfd34ff041c2b335
// -0.189876
0xbfc84ddadf894336
// 0.115892
0x3fbdab19c189188c
// 0.062508
0x3fb0008dd94960fd
// -0.154556
0xbfc3c87d1742afb7
// -0.030936
0xbf9fadc7e37e3065
// -0.307038
0xbfd3a683d2275b71
// -0.099403
0xbfb97279434a9d55
// -0.109235
0xbfbbf6d24f85bf19
// 0.380075
0x3fd8532491b0636c
// -0.230283
0xbfcd79e859845013
// 0.141004
0x3fc20c67aeeb706e
// -0.551929
0xbfe1a96683b45bf8
// 0.361307
0x3fd71fa5dd628b25
// -0.120409
0xbfbed319cac4b3ef
// 0.174450
0x3fc6545d3123553e
// 0.251266
0x3fd014bdcc82502c
// 0.037816
0x3fa35c9bb959b88b
// -0.146763
0xbfc2c91e4de59543
// -0.532595
0xbfe10b057b4c5356
// 0.017927
0x3f925b91e6318a59
// -0.348970
0xbfd655882a26c084
// 0.759780
0x3fe8501f0c104ca3
// -0.289655
0xbfd289b6638c4569
// -0.376096
0xbfd811f3d3c8d38c
// -0.583813
0xbfe2ae995f246e81
// -0.306202
0xbfd398cf25cd856b
// -0.829947
0xbfea8eed1a3eb410
// -0.602119
0xbfe3448f695fbc3e
// -0.120008
0xbfbeb8dc9ea0bf68
// 0.247478
0x3fcfad59bd1141e7
// 0.539858
0x3fe14683bc8a1d35
// -0.580311
0xbfe291e879e954a8
// -0.476798
0xbfde83da7a3f5768
// -0.342657
0xbfd5ee15a15ffd8a
// -0.061184
0xbfaf537bc89b133a
// -0.330855
0xbfd52cb8a2979919
// 0.011957
0x3f887d1c4856529a
// 0.591015
0x3fe2e9980af11de7
// 0.123384
0x3fbf9612416e34b3
// 0.189337
0x3fc83c320a145ea6
// 0.848399
0x3feb2614be32c85b
// -0.052978
0xbfab1ff5e4246060
// -0.010676
0xbf85dd15e665ffbf
// -0.486542
0xbfdf2382d04bfd70
// -0.146186
0xbfc2b63b3329b90c
// -0.251981
0xbfd0207560a7dee9
// 0.152645
0x3fc389dcb1a50444
// 0.043460
0x3fa64058a13f709c
// -0.206582
0xbfca71475e57ec5e
// 0.023998
0x3f9892d9e7115231
// -0.574848
0xbfe26528a73ae417
// 0.450482
0x3fdcd4b1f6f0a36b
// -0.173432
0xbfc633019cbcbf9f
// 0.038047
0x3fa37ad4bfdad4de
// -0.045160
0xbfa71f35f8659436
// -0.261616
0xbfd0be522a2e77ec
// 0.452710
0x3fdcf93495a4e546
// 0.142008
0x3fc22d4ee09537e6
// 0.117444
0x3fbe10d123e8e050
// 0.242932
0x3fcf1864fb8ba97b
// 0.449765
0x3fdcc8f5111b2f7e

@ -0,0 +1,10 @@
D
4
// 0.001072
0x3f518f8a7ed015a2
// 0.073015
0x3fb2b11b5caa023a
// 0.060567
0x3faf02a5beb935ad
// 0.198414
0x3fc9659ffa60ff3b

@ -1,8 +1,8 @@
H
3
// 2
0x0002
// 11
0x000B
// 4
0x0004
// 4
0x0004
// 18
0x0012

@ -1,8 +1,8 @@
H
3
// 0.317339
0x289F
// 0.371391
0x2F8A
// 0.716723
0x5BBE
// 0.540886
0x453C
// 0.540886
0x453C
// 0.701466
0x59CA

@ -1,8 +1,8 @@
H
3
// 4
0x0004
// 8
0x0008
// 8
0x0008
// 6
0x0006
// 6
0x0006
// 6
0x0006

@ -1,8 +1,8 @@
H
3
// 0.025246
0x033B
// 0.021213
0x02B7
// 0.021213
0x02B7
// 0.003012
0x0063
// 0.003012
0x0063
// 0.003012
0x0063

File diff suppressed because it is too large Load Diff

@ -0,0 +1,602 @@
H
300
// 0.023088
0x02F5
// -0.569043
0xB72A
// -0.367397
0xD0F9
// 0.207155
0x1A84
// -0.002703
0xFFA7
// 0.405808
0x33F2
// 0.020343
0x029B
// 0.611625
0x4E4A
// 0.088186
0x0B4A
// 0.131065
0x10C7
// 0.090065
0x0B87
// -0.603264
0xB2C8
// -0.196051
0xE6E8
// 1.000000
0x7FFF
// 0.367267
0x2F03
// -0.328308
0xD5FA
// 0.073291
0x0962
// -0.315137
0xD7AA
// 0.277838
0x2390
// 0.415803
0x3539
// -0.200897
0xE649
// -0.062856
0xF7F4
// 0.125646
0x1015
// 0.194179
0x18DB
// 0.002784
0x005B
// 0.379427
0x3091
// 0.278300
0x239F
// 0.319937
0x28F4
// 0.282444
0x2427
// -0.389883
0xCE18
// 0.772987
0x62F1
// -0.503972
0xBF7E
// 0.190590
0x1865
// -0.493938
0xC0C7
// -0.208085
0xE55D
// 0.088833
0x0B5F
// -0.150425
0xECBF
// 0.008175
0x010C
// 0.289034
0x24FF
// 0.230892
0x1D8E
// -0.063451
0xF7E1
// 0.134283
0x1130
// 0.318307
0x28BE
// -0.313616
0xD7DB
// 0.203527
0x1A0D
// 0.316785
0x288C
// 0.507538
0x40F7
// 0.085813
0x0AFC
// -0.748029
0xA041
// 0.342910
0x2BE4
// 0.223376
0x1C98
// 0.146619
0x12C4
// 0.286982
0x24BC
// -0.390462
0xCE05
// -0.131249
0xEF33
// 0.090451
0x0B94
// -0.422333
0xC9F1
// -0.493300
0xC0DC
// -0.376554
0xCFCD
// -0.016864
0xFDD7
// -0.367668
0xD0F0
// 0.063260
0x0819
// 0.045006
0x05C3
// -0.819977
0x970B
// -0.135311
0xEEAE
// -0.332403
0xD574
// 0.309152
0x2792
// -0.812901
0x97F3
// -0.264093
0xDE32
// -0.011275
0xFE8F
// -0.103401
0xF2C4
// -0.942725
0x8755
// -0.033442
0xFBB8
// 0.417152
0x3565
// 0.295216
0x25CA
// 0.288802
0x24F7
// -0.415551
0xCACF
// -0.015437
0xFE06
// 0.035234
0x0483
// -0.384825
0xCEBE
// -0.180877
0xE8D9
// -0.143829
0xED97
// 0.177416
0x16B6
// 0.516476
0x421C
// 0.034406
0x0467
// -0.347823
0xD37B
// 0.257018
0x20E6
// -0.412693
0xCB2D
// -0.473899
0xC357
// -0.181539
0xE8C3
// 0.575866
0x49B6
// -0.244026
0xE0C4
// 0.233322
0x1DDE
// 0.284677
0x2470
// 0.282286
0x2422
// -0.200978
0xE646
// 0.220799
0x1C43
// -0.030909
0xFC0B
// -0.287646
0xDB2E
// -0.443090
0xC749
// -0.524897
0xBCD0
// 0.353276
0x2D38
// 0.004895
0x00A0
// 0.279847
0x23D2
// 0.209796
0x1ADB
// 0.159065
0x145C
// -0.135314
0xEEAE
// 0.428183
0x36CF
// 0.004742
0x009B
// -0.654653
0xAC34
// 0.118996
0x0F3B
// -0.352953
0xD2D2
// 0.373493
0x2FCF
// 0.115742
0x0ED1
// 0.005701
0x00BB
// -0.131853
0xEF1F
// 0.221261
0x1C52
// -0.493016
0xC0E5
// -0.231456
0xE260
// -0.181691
0xE8BE
// -0.392548
0xCDC1
// -0.405963
0xCC09
// -0.208902
0xE543
// 0.599396
0x4CB9
// -0.142237
0xEDCB
// 0.784155
0x645F
// -0.212759
0xE4C4
// -0.062989
0xF7F0
// 0.071443
0x0925
// -0.501885
0xBFC2
// -0.277955
0xDC6C
// -0.470001
0xC3D7
// -0.695889
0xA6ED
// 0.077355
0x09E7
// -0.292145
0xDA9B
// -0.372627
0xD04E
// -0.476225
0xC30B
// 0.505514
0x40B5
// -0.416837
0xCAA5
// 0.014076
0x01CD
// -0.205320
0xE5B8
// 0.173491
0x1635
// -0.416388
0xCAB4
// -0.060845
0xF836
// 0.293832
0x259C
// 0.276975
0x2374
// -0.464928
0xC47D
// -0.399299
0xCCE4
// 0.740810
0x5ED3
// 0.307067
0x274E
// 0.216436
0x1BB4
// 0.121285
0x0F86
// -0.441872
0xC771
// -0.298628
0xD9C7
// 0.383284
0x310F
// -0.303411
0xD92A
// 0.531349
0x4403
// -0.642258
0xADCB
// -0.456135
0xC59D
// -0.173979
0xE9BB
// 0.218323
0x1BF2
// -0.641732
0xADDC
// 0.118191
0x0F21
// 0.381945
0x30E4
// 0.354452
0x2D5F
// 0.002962
0x0061
// 0.113756
0x0E90
// -0.566445
0xB77F
// -0.168444
0xEA70
// 0.281914
0x2416
// -0.063593
0xF7DC
// 0.310567
0x27C1
// 0.116800
0x0EF3
// -0.323452
0xD699
// 0.280814
0x23F2
// 0.393879
0x326B
// 0.090434
0x0B93
// -0.345697
0xD3C0
// 0.390877
0x3208
// -0.678808
0xA91D
// -0.295401
0xDA30
// 0.436317
0x37D9
// 0.158582
0x144C
// 0.361386
0x2E42
// 0.392518
0x323E
// -0.146390
0xED43
// 0.268884
0x226B
// -0.239197
0xE162
// -0.057622
0xF8A0
// -0.457357
0xC575
// 0.206868
0x1A7B
// 0.194090
0x18D8
// -0.622052
0xB061
// -0.225812
0xE319
// -0.235464
0xE1DC
// 0.136458
0x1177
// -0.318099
0xD749
// -0.243657
0xE0D0
// -0.153677
0xEC54
// 0.071940
0x0935
// -0.031996
0xFBE8
// 0.214771
0x1B7E
// 0.038577
0x04F0
// 0.117430
0x0F08
// -0.086197
0xF4F7
// 0.904266
0x73BF
// 0.309335
0x2798
// 0.091795
0x0BC0
// 0.016985
0x022D
// 0.041568
0x0552
// -0.453861
0xC5E8
// 0.002044
0x0043
// -0.192526
0xE75B
// 0.148754
0x130A
// -0.073065
0xF6A6
// 0.130616
0x10B8
// 0.241604
0x1EED
// -0.385415
0xCEAB
// -0.455446
0xC5B4
// -0.684857
0xA857
// -0.057828
0xF899
// -0.023764
0xFCF5
// 0.586474
0x4B12
// -0.214645
0xE487
// -0.193239
0xE744
// -0.445564
0xC6F8
// 0.459324
0x3ACB
// -0.327432
0xD617
// -0.058224
0xF88C
// 0.159717
0x1472
// -0.403144
0xCC66
// -0.399865
0xCCD1
// -0.075611
0xF652
// 0.552166
0x46AD
// -0.360543
0xD1DA
// 0.001067
0x0023
// 0.261068
0x216B
// 0.450453
0x39A8
// 0.783779
0x6453
// -0.221686
0xE3A0
// -0.591489
0xB44A
// 0.261059
0x216A
// 0.050397
0x0673
// 0.081911
0x0A7C
// 0.071799
0x0931
// 0.494361
0x3F47
// -0.236255
0xE1C2
// -0.284293
0xDB9C
// 0.807161
0x6751
// 0.031815
0x0413
// 0.558310
0x4777
// -0.213884
0xE49F
// -0.176168
0xE973
// 0.716433
0x5BB4
// -0.249053
0xE01F
// -0.424570
0xC9A8
// -0.064740
0xF7B7
// -0.293112
0xDA7B
// 0.194317
0x18DF
// 0.378576
0x3075
// -0.562172
0xB80B
// 0.119026
0x0F3C
// -0.840475
0x946B
// -0.007107
0xFF17
// -0.042883
0xFA83
// 0.048300
0x062F
// -0.158003
0xEBC7
// -0.135076
0xEEB6
// 0.381096
0x30C8
// 0.448431
0x3966
// 0.394938
0x328D
// 0.203231
0x1A03
// -0.472639
0xC381
// 0.583490
0x4AB0
// 0.054135
0x06EE
// 0.366322
0x2EE4
// 0.286733
0x24B4
// -0.684782
0xA859
// -0.006418
0xFF2E
// -0.330439
0xD5B4
// 0.031166
0x03FD
// 0.068120
0x08B8
// -0.346590
0xD3A3
// -0.701704
0xA62F
// -0.481094
0xC26C
// 0.045508
0x05D3
// 0.145746
0x12A8
// 0.113876
0x0E94
// -0.226355
0xE307
// -0.441853
0xC771
// -0.128397
0xEF91
// 0.408961
0x3459
// 0.176359
0x1693
// -0.142174
0xEDCD
// -0.371067
0xD081
// 0.468299
0x3BF1
// 0.504936
0x40A2
// -0.175043
0xE998
// 0.059297
0x0797
// 0.554326
0x46F4

@ -0,0 +1,10 @@
H
4
// 0.291384
0x254C
// 0.326840
0x29D6
// 0.266990
0x222D
// 0.278624
0x23AA

@ -2,7 +2,7 @@ H
3
// 1
0x0001
// 1
0x0001
// 1
0x0001
// 3
0x0003
// 8
0x0008

@ -1,8 +1,8 @@
W
3
// 0.771915
0x62CE1E33
// 0.771915
0x62CE1E33
// 0.771915
0x62CE1E33
// 0.352374
0x2D1A96B5
// 0.530170
0x43DC9BE7
// 0.634745
0x513F5458

@ -1,8 +1,8 @@
H
3
// 2
0x0002
// 4
0x0004
// 4
0x0004
// 0
0x0000
// 7
0x0007
// 7
0x0007

@ -1,8 +1,8 @@
W
3
// 0.162479
0x14CC1BC5
// 0.036826
0x04B6B41E
// 0.036826
0x04B6B41E
// 0.132805
0x10FFBE95
// 0.003898
0x007FB95F
// 0.003898
0x007FB95F

File diff suppressed because it is too large Load Diff

@ -0,0 +1,602 @@
W
300
// 0.286334
0x24A696F8
// -0.315671
0xD79818D9
// -0.338138
0xD4B7E216
// 0.402687
0x338B42F9
// -0.363403
0xD17C028C
// -0.133135
0xEEF570B0
// 0.227141
0x1D12F6A6
// 0.046178
0x05E92687
// -0.126363
0xEFD355E4
// 0.161522
0x14ACC14A
// 0.456713
0x3A7595F9
// -0.029743
0xFC316446
// -0.203004
0xE603F2DC
// 0.077197
0x09E19504
// 0.003854
0x007E4B13
// 0.307170
0x275156E7
// -0.181859
0xE8B8DA01
// -0.627494
0xAFAE4AB2
// 0.029841
0x03D1D619
// -0.032312
0xFBDD32F5
// 0.066612
0x0886BCE4
// -0.239588
0xE1552B03
// -0.129744
0xEF648A5D
// 0.077295
0x09E4CFD8
// 0.043818
0x059BD3FE
// 0.390158
0x31F0B562
// -0.287582
0xDB3086AC
// 0.129937
0x10A1C7C4
// -0.077911
0xF60706E2
// -0.196153
0xE6E47348
// -0.044388
0xFA518104
// 0.271170
0x22B5B47D
// -0.296203
0xDA160366
// -0.060717
0xF83A699B
// -0.138664
0xEE4043F0
// 0.066883
0x088F9D5F
// 0.004533
0x00948C68
// 0.155126
0x13DB27F3
// 0.062727
0x08076D31
// 0.033737
0x04517EFF
// 0.176676
0x169D4FDC
// -0.362943
0xD18B1572
// 0.048349
0x06304A6F
// -0.229655
0xE29AA913
// 0.251838
0x203C392A
// -0.203875
0xE5E76DA9
// -0.209513
0xE52EAD16
// 0.267830
0x22483D83
// -0.402568
0xCC78A96B
// 0.202878
0x19F7E4D8
// 0.083953
0x0ABEFCED
// -0.037289
0xFB3A2131
// -0.011822
0xFE7CA164
// 0.059312
0x07978A88
// -0.353428
0xD2C2DFDA
// 0.281894
0x2415187C
// 0.411977
0x34BBA841
// -0.443056
0xC749F491
// -0.011746
0xFE7F1F40
// 0.024306
0x031C752B
// 0.222900
0x1C87FA66
// -0.341170
0xD454883D
// 0.376912
0x303EA39B
// 0.154801
0x13D088F0
// 0.175604
0x167A3296
// -0.062432
0xF8023A10
// -0.024460
0xFCDE7D5F
// 0.464655
0x3B79D3CF
// -1.000000
0x80000000
// 0.086499
0x0B1263AF
// 0.116104
0x0EDC8081
// -0.110977
0xF1CB8355
// -0.097536
0xF383EF26
// 0.178582
0x16DBC572
// 0.053082
0x06CB6010
// -0.489791
0xC14E8901
// -0.277663
0xDC758A08
// 0.081932
0x0A7CC14F
// -0.067595
0xF7590F52
// 0.088030
0x0B448F1B
// 0.227771
0x1D27992F
// 0.158400
0x1446772D
// 0.019278
0x0277AFB7
// -0.267745
0xDDBA87F3
// -0.066066
0xF78B292A
// 0.049224
0x064CF97C
// 0.504551
0x40951D25
// 0.177231
0x16AF8072
// 0.257196
0x20EBCE98
// -0.273373
0xDD021AEF
// 0.331414
0x2A6BC8AE
// -0.128087
0xEF9AD85C
// 0.113007
0x0E77010B
// 0.401698
0x336ADA76
// 0.210045
0x1AE2C175
// -0.123415
0xF033EE96
// 0.623809
0x4FD8FAE6
// -0.278101
0xDC672D45
// -0.517827
0xBDB7D55A
// -0.119216
0xF0BD8BA7
// 0.111603
0x0E490213
// 0.268731
0x2265C5DE
// -0.107251
0xF2459866
// 0.525984
0x4353728A
// 0.071202
0x091D2822
// -0.348357
0xD3690C7A
// -0.012144
0xFE721051
// -0.435129
0xC84DADE0
// -0.351245
0xD30A634D
// -0.000926
0xFFE1A65C
// -0.000551
0xFFEDF229
// 0.106927
0x0DAFC883
// -0.180818
0xE8DAF360
// -0.649425
0xACDFA507
// -0.443963
0xC72C3910
// -0.088359
0xF4B0A6AE
// 0.181062
0x172D0E22
// 0.101503
0x0CFE0C73
// -0.684900
0xA855336F
// 0.351534
0x2CFF14B0
// -0.145893
0xED535D60
// -0.249244
0xE018C763
// -0.477557
0xC2DF655A
// 0.285948
0x2499F5AF
// -0.072057
0xF6C6D459
// 0.061602
0x07E294E7
// -0.450344
0xC65B22FA
// -0.144161
0xED8C231A
// 0.139304
0x11D4B659
// 0.233406
0x1DE040BA
// 0.054717
0x0700FAC6
// 0.107727
0x0DC9FC7E
// 0.351321
0x2CF81424
// -0.231050
0xE26CF51E
// 0.172037
0x1605522C
// -0.130099
0xEF58EC60
// -0.365774
0xD12E4F59
// 0.215923
0x1BA35BF8
// 0.455682
0x3A53C818
// -0.066152
0xF788554C
// 0.216397
0x1BB2E398
// -0.641109
0xADF020A9
// 0.073102
0x095B6B2B
// 0.228290
0x1D3898F7
// 0.295686
0x25D90C19
// -0.242148
0xE1014C7B
// 0.474114
0x3CAFC23A
// -0.384529
0xCEC7BF27
// -0.490085
0xC144E438
// 0.056380
0x073775FE
// -0.467332
0xC42E788D
// -0.158072
0xEBC44803
// -0.298475
0xD9CB90CA
// -0.247066
0xE0602254
// -0.382327
0xCF0FE63C
// -0.048654
0xF9C5B70A
// 0.072626
0x094BCDB9
// 0.312260
0x27F823FD
// -0.255595
0xDF48AB75
// 0.140254
0x11F3D890
// 0.127850
0x105D6026
// 0.003695
0x00791210
// 0.157872
0x1435271A
// 0.155459
0x13E610AB
// 0.476405
0x3CFAD603
// 0.071993
0x0937115F
// -0.370776
0xD08A6852
// 0.011496
0x0178B661
// 0.233148
0x1DD7CEC1
// -0.070899
0xF6ECC66F
// 0.154077
0x13B8CDFD
// -0.218750
0xE3FFFE3C
// 0.023796
0x030BBB2E
// 0.217904
0x1BE444CF
// -0.171924
0xE9FE63BD
// -0.288796
0xDB08BFAB
// 0.304407
0x26F6CD6F
// 0.124790
0x0FF91B99
// -0.278441
0xDC5C0A69
// -0.237166
0xE1A48930
// -0.152450
0xEC7C87B4
// 0.409786
0x3473DC4D
// -0.033264
0xFBBDFE37
// 0.537054
0x44BE2C5C
// -0.237912
0xE18C15A8
// 0.216441
0x1BB458E1
// -0.066321
0xF782C970
// 0.266489
0x221C4E63
// -0.115802
0xF12D6662
// 0.138740
0x11C237F5
// 0.046121
0x05E74BC8
// 0.080869
0x0A59ED5D
// 0.328281
0x2A051EE5
// -0.083700
0xF549546F
// 0.558329
0x47775268
// -0.136982
0xEE776035
// -0.003388
0xFF90FD52
// -0.061211
0xF82A40CB
// 0.165859
0x153ADDE4
// 0.045702
0x05D98F87
// -0.015760
0xFDFB8F78
// -0.186468
0xE821D203
// 0.145560
0x12A1B8AE
// -0.319279
0xD721DF1D
// -0.128201
0xEF971F45
// -0.139558
0xEE22F680
// 0.178189
0x16CEE460
// -0.161668
0xEB4E78E7
// 0.511961
0x4187EC99
// 0.011254
0x0170C5F0
// 0.356189
0x2D979809
// 0.116666
0x0EEEED6A
// -0.305069
0xD8F37C21
// 0.520740
0x42A7997F
// -0.302501
0xD947A7A2
// 0.217871
0x1BE335E9
// 0.206644
0x1A7352E7
// -0.303463
0xD9281BAF
// -0.008216
0xFEF2C589
// -0.040315
0xFAD6F5E9
// 0.287461
0x24CB81C8
// 0.355460
0x2D7FB667
// 0.078801
0x0A1622F0
// -0.071399
0xF6DC6748
// 0.211041
0x1B0364CB
// -0.123783
0xF027DDCC
// -0.377630
0xCFA9D3BA
// -0.024443
0xFCDF09CF
// 0.053692
0x06DF6136
// 0.017374
0x0239509D
// -0.081199
0xF59B4808
// 0.144231
0x12762D0B
// 0.006638
0x00D9820A
// 0.324284
0x298225B7
// 0.276337
0x235F03DA
// -0.469811
0xC3DD3E85
// -0.007424
0xFF0CBD88
// 0.280481
0x23E6CD75
// -0.011843
0xFE7BF111
// -0.220841
0xE3BB7D31
// 0.000266
0x0008B3BB
// -0.215787
0xE46114E3
// -0.484862
0xC1F00BB8
// 0.362132
0x2E5A5A5E
// 0.079324
0x0A274BC9
// 0.044223
0x05A91CA5
// -0.039111
0xFAFE6CBD
// 0.069502
0x08E571D7
// -0.153124
0xEC666B7A
// 0.147898
0x12EE5125
// 0.080380
0x0A49E0CF
// -0.203398
0xE5F70F21
// -0.054590
0xF9032E32
// -0.196208
0xE6E2A52A
// 0.015761
0x02047371
// 0.236470
0x1E44A395
// 0.262117
0x218D1016
// -0.396146
0xCD4B1634
// -0.169349
0xEA52C982
// 0.314482
0x2840F257
// -0.063280
0xF7E67344
// 0.294119
0x25A5AD1F
// 0.206572
0x1A70F3BA
// 0.080935
0x0A5C0FFA
// -0.059677
0xF85C7D74
// 0.179287
0x16F2E2E5
// 0.117329
0x0F04A692
// -0.254313
0xDF72A7D4
// -0.365585
0xD13482AE
// 0.112945
0x0E74FAAB
// 0.460273
0x3AEA39C7
// -0.644492
0xAD814BE5
// 0.518454
0x425CB02F
// -0.029089
0xFC46D36E
// -0.033823
0xFBABAE62
// -0.243706
0xE0CE410D
// 0.640781
0x52051C30
// -0.253647
0xDF887CDA
// 0.091641
0x0BBAE895
// -0.244406
0xE0B74B10
// 0.005761
0x00BCC440
// -0.269237
0xDD89A1C6
// 0.235146
0x1E194155
// 0.002696
0x00585ADE
// -0.170657
0xEA27E87E
// -0.365187
0xD1418FCE
// -0.249116
0xE01CFA35
// -0.106816
0xF253D818
// -0.356528
0xD25D4725
// 0.072916
0x095552EC
// -0.456370
0xC595AE5E
// -0.084783
0xF525D118
// 0.137414
0x1196CB53
// -0.014976
0xFE154847
// 0.257151
0x20EA54DC
// 0.283434
0x244790CE
// -0.064482
0xF7BF0BF9
// 0.028721
0x03AD2116
// -0.074015
0xF686AC21
// -0.026958
0xFC8CA235

@ -0,0 +1,10 @@
W
4
// 0.066580
0x0885AD96
// 0.089078
0x0B66E9B3
// 0.168307
0x158B15E2
// 0.196400
0x19239FC7

@ -1,10 +1,10 @@
H
4
// 14
0x000E
// 23
0x0017
// 23
0x0017
// 7
0x0007
// 7
0x0007
// 46
0x002E
// 279
0x0117

@ -1,10 +1,10 @@
B
4
// 0.432842
0x37
// 0.527310
0x43
// 0.527310
0x43
// 0.807620
0x67
// 0.807620
0x67
// 0.984827
0x7E
// 0.900000
0x73

@ -1,10 +1,10 @@
H
4
// 6
0x0006
// 6
0x0006
// 42
0x002A
// 13
0x000D
// 13
0x000D
// 13
0x000D
// 279
0x0117

@ -1,10 +1,10 @@
B
4
// 0.007275
// 0.008109
0x01
// 0.007275
// 0.008109
0x01
// 0.008109
0x01
// 0.003548
0x00
// 0.000000
0x00

File diff suppressed because it is too large Load Diff

@ -0,0 +1,602 @@
B
300
// 0.455744
0x3A
// -0.101165
0xF3
// 0.332385
0x2B
// -0.026972
0xFD
// 0.259095
0x21
// 0.071344
0x09
// 0.117236
0x0F
// -0.081389
0xF6
// -0.039761
0xFB
// 0.200396
0x1A
// 0.303564
0x27
// 0.042950
0x05
// 0.051550
0x07
// -0.338288
0xD5
// 0.318397
0x29
// -0.014750
0xFE
// -0.304998
0xD9
// -0.084388
0xF5
// 0.097151
0x0C
// -0.151414
0xED
// -0.397907
0xCD
// 0.202651
0x1A
// -0.432719
0xC9
// -0.424519
0xCA
// 0.202357
0x1A
// -0.065807
0xF8
// -0.196392
0xE7
// 0.456060
0x3A
// -0.544694
0xBA
// 0.259373
0x21
// 0.233412
0x1E
// -0.264572
0xDE
// -0.248235
0xE0
// -0.550924
0xB9
// -0.285337
0xDB
// 0.326130
0x2A
// 1.000000
0x7F
// -0.095521
0xF4
// -0.738192
0xA2
// -0.370436
0xD1
// 0.139343
0x12
// 0.459988
0x3B
// -0.213526
0xE5
// 0.219668
0x1C
// 0.086677
0x0B
// -0.221372
0xE4
// 0.464738
0x3B
// -0.450819
0xC6
// -0.163069
0xEB
// 0.607025
0x4E
// -0.604178
0xB3
// 0.601277
0x4D
// 0.350999
0x2D
// 0.274750
0x23
// -0.539513
0xBB
// 0.083073
0x0B
// 0.402747
0x34
// 0.194978
0x19
// 0.109633
0x0E
// -0.297610
0xDA
// -0.012006
0xFE
// 0.212268
0x1B
// -0.438261
0xC8
// 0.183970
0x18
// -0.315926
0xD8
// -0.352067
0xD3
// 0.232592
0x1E
// 0.382457
0x31
// -0.428412
0xC9
// -0.280591
0xDC
// 0.307690
0x27
// 0.498777
0x40
// 0.168220
0x16
// -0.381381
0xCF
// -0.178210
0xE9
// -0.416660
0xCB
// -0.400152
0xCD
// -0.019369
0xFE
// -0.601667
0xB3
// -0.870805
0x91
// -0.130256
0xEF
// -0.357669
0xD2
// -0.443916
0xC7
// -0.425814
0xC9
// -0.146604
0xED
// 0.348989
0x2D
// 0.446393
0x39
// -0.248094
0xE0
// 0.364274
0x2F
// 0.262208
0x22
// 0.157336
0x14
// 0.627688
0x50
// -0.300925
0xD9
// 0.560373
0x48
// -0.211280
0xE5
// -0.313060
0xD8
// 0.071130
0x09
// 0.100302
0x0D
// -0.332218
0xD5
// 0.149788
0x13
// 0.267420
0x22
// 0.106065
0x0E
// 0.148770
0x13
// -0.181612
0xE9
// 0.414515
0x35
// 0.178024
0x17
// 0.408967
0x34
// -0.013288
0xFE
// 0.176955
0x17
// -0.033301
0xFC
// -0.188429
0xE8
// 0.117949
0x0F
// 0.174841
0x16
// -0.258026
0xDF
// 0.541507
0x45
// 0.228369
0x1D
// 0.225859
0x1D
// -0.423911
0xCA
// 0.118220
0x0F
// -0.056425
0xF9
// -0.191834
0xE7
// 0.980590
0x7E
// -0.312340
0xD8
// -0.600307
0xB3
// 0.112688
0x0E
// -0.201126
0xE6
// -0.255825
0xDF
// 0.497420
0x40
// -0.480493
0xC2
// 0.377399
0x30
// 0.056501
0x07
// -0.370072
0xD1
// -0.391775
0xCE
// -0.234099
0xE2
// 0.475342
0x3D
// 0.534488
0x44
// 0.266085
0x22
// -0.149708
0xED
// 0.162500
0x15
// 0.226592
0x1D
// -0.403653
0xCC
// 0.022739
0x03
// -0.627889
0xB0
// 0.047366
0x06
// 0.068877
0x09
// -0.426264
0xC9
// -0.360113
0xD2
// 0.253710
0x20
// -0.962759
0x85
// -0.085360
0xF5
// 0.161409
0x15
// -0.240410
0xE1
// 0.001751
0x00
// -0.324165
0xD7
// -0.319424
0xD7
// -0.172478
0xEA
// -0.304442
0xD9
// -0.081228
0xF6
// 0.258111
0x21
// -0.123806
0xF0
// 0.306223
0x27
// -0.382002
0xCF
// -0.444318
0xC7
// 0.267705
0x22
// -0.892174
0x8E
// 0.485354
0x3E
// 0.223452
0x1D
// -0.209570
0xE5
// 0.457004
0x3A
// -0.096894
0xF4
// 0.118609
0x0F
// -0.253799
0xE0
// 0.321450
0x29
// -0.011527
0xFF
// -0.549536
0xBA
// 0.161875
0x15
// -0.079892
0xF6
// 0.440388
0x38
// 0.475280
0x3D
// 0.834835
0x6B
// 0.826031
0x6A
// -0.157632
0xEC
// -0.883132
0x8F
// -0.020856
0xFD
// -0.317507
0xD7
// -0.178916
0xE9
// -0.108150
0xF2
// -0.362836
0xD2
// 0.257065
0x21
// 0.024982
0x03
// 0.396144
0x33
// 0.012159
0x02
// -0.149309
0xED
// 0.386916
0x32
// -0.270680
0xDD
// 0.035721
0x05
// -0.635000
0xAF
// -0.078763
0xF6
// 0.155744
0x14
// -0.107275
0xF2
// 0.093684
0x0C
// -0.212486
0xE5
// -0.295138
0xDA
// 0.122534
0x10
// 0.148815
0x13
// 0.221065
0x1C
// -0.366848
0xD1
// -0.051174
0xF9
// 0.417946
0x35
// 0.367687
0x2F
// 0.307670
0x27
// -0.128854
0xF0
// 0.033653
0x04
// 0.265475
0x22
// 0.742106
0x5F
// -0.397400
0xCD
// -0.229654
0xE3
// -0.495357
0xC1
// 0.182531
0x17
// -0.041689
0xFB
// -0.342458
0xD4
// 0.072277
0x09
// -0.499282
0xC0
// -0.225029
0xE3
// -0.003154
0x00
// 0.065973
0x08
// 0.365417
0x2F
// -0.262553
0xDE
// 0.777205
0x63
// 0.105788
0x0E
// 0.067606
0x09
// 0.510476
0x41
// -0.006009
0xFF
// -0.068560
0xF7
// 0.222412
0x1C
// 0.307049
0x27
// -0.608873
0xB2
// -0.524632
0xBD
// 0.074609
0x0A
// 0.636332
0x51
// -0.461712
0xC5
// 0.205370
0x1A
// -0.575612
0xB6
// 0.263334
0x22
// -0.281250
0xDC
// -0.237662
0xE2
// -0.218395
0xE4
// 0.483175
0x3E
// -0.066300
0xF8
// -0.868132
0x91
// -0.346503
0xD4
// -0.598242
0xB3
// 0.015330
0x02
// 0.205682
0x1A
// -0.368429
0xD1
// 0.192233
0x19
// 0.080270
0x0A
// -0.017261
0xFE
// 0.019513
0x02
// -0.016971
0xFE
// -0.267484
0xDE
// 0.355461
0x2D
// -0.141206
0xEE
// 0.193348
0x19
// 0.016291
0x02
// -0.326408
0xD6
// 0.175403
0x16
// 0.125849
0x10
// 0.255708
0x21
// 0.336972
0x2B
// 0.683012
0x57
// -0.483030
0xC2
// -0.064702
0xF8
// -0.499412
0xC0
// -0.252221
0xE0
// 0.066437
0x09
// 0.230996
0x1E
// -0.420109
0xCA
// 0.215231
0x1C
// 0.038289
0x05
// -0.056075
0xF9
// 0.295567
0x26
// 0.028105
0x04
// 0.574356
0x4A
// -0.172146
0xEA
// -0.182047
0xE9
// -0.340253
0xD4
// -0.164903
0xEB
// 0.093692
0x0C
// 0.532016
0x44
// -0.413027
0xCB
// -0.217763
0xE4
// 0.267253
0x22
// 0.001856
0x00
// 0.347416
0x2C
// 0.230345
0x1D
// 0.009855
0x01
// -0.592301
0xB4
// -0.497478
0xC0
// -0.018985
0xFE

@ -0,0 +1,10 @@
B
4
// 0.191272
0x18
// 0.159547
0x14
// 0.205092
0x1A
// 0.257902
0x21

@ -6,6 +6,8 @@
//#include <cstdio>
#define SNR_THRESHOLD 20
#define SNR_THRESHOLD_MSE 14
/*
Reference patterns are generated with
@ -15,6 +17,9 @@ 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()
{
@ -254,6 +259,29 @@ Python code must be tuned to change this.
}
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
/*
@ -897,6 +925,58 @@ But the tests are kept for when they will be available.
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;
}

@ -426,6 +426,7 @@ group Root {
Pattern INPUT1_Q7_ID : Input1_q7.txt
Pattern INPUTNEW1_Q7_ID : InputNew1_q7.txt
Pattern INPUTNEW2_Q7_ID : InputNew2_q7.txt
Pattern INPUT2_Q7_ID : Input2_q7.txt
Pattern MAXINDEXES_S16_ID : MaxIndexes1_s16.txt
@ -445,6 +446,8 @@ group Root {
Pattern ABSMAXINDEXMAX_Q7_ID : InputAbsMaxIndexMax8_q7.txt
Pattern ABSMININDEXMAX_Q7_ID : InputAbsMinIndexMax9_q7.txt
Pattern MSE_Q7_ID : MSEVals10_q7.txt
//Pattern RMSVALS_Q7_ID : RmsVals5_q7.txt
@ -503,6 +506,11 @@ group Root {
Test nb=2n arm_absmin_no_idx_q7:test_absmin_no_idx_q7
Test nb=2n+1 arm_absmin_no_idx_q7:test_absmin_no_idx_q7
Test nb=15 arm_mse_q7:test_mse_q7
Test nb=16n arm_mse_q7:test_mse_q7
Test nb=16n+1 arm_mse_q7:test_mse_q7
Test long arm_mse_q7:test_mse_q7
}
}

@ -1 +1 @@
__version__ = "1.3.0"
__version__ = "1.4.0"

Loading…
Cancel
Save