| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263 |
- #include "DistanceTestsU32.h"
- #include <stdio.h>
- #include "Error.h"
- #include "Test.h"
- #define ERROR_THRESHOLD 1e-8
- void DistanceTestsU32::test_dice_distance()
- {
- const uint32_t *inpA = inputA.ptr();
- const uint32_t *inpB = inputB.ptr();
- float32_t *outp = output.ptr();
-
- for(int i=0; i < this->nbPatterns ; i ++)
- {
- *outp = arm_dice_distance(inpA, inpB,this->vecDim);
-
- inpA += this->bitVecDim ;
- inpB += this->bitVecDim ;
- outp ++;
- }
- ASSERT_REL_ERROR(output,ref,(float32_t)ERROR_THRESHOLD);
- }
- void DistanceTestsU32::test_hamming_distance()
- {
- const uint32_t *inpA = inputA.ptr();
- const uint32_t *inpB = inputB.ptr();
- float32_t *outp = output.ptr();
-
- for(int i=0; i < this->nbPatterns ; i ++)
- {
- *outp = arm_hamming_distance(inpA, inpB,this->vecDim);
-
- inpA += this->bitVecDim ;
- inpB += this->bitVecDim ;
- outp ++;
- }
- ASSERT_NEAR_EQ(output,ref,(float32_t)ERROR_THRESHOLD);
- }
- void DistanceTestsU32::test_jaccard_distance()
- {
- const uint32_t *inpA = inputA.ptr();
- const uint32_t *inpB = inputB.ptr();
- float32_t *outp = output.ptr();
-
- for(int i=0; i < this->nbPatterns ; i ++)
- {
- *outp = arm_jaccard_distance(inpA, inpB,this->vecDim);
-
- inpA += this->bitVecDim ;
- inpB += this->bitVecDim ;
- outp ++;
- }
- ASSERT_NEAR_EQ(output,ref,(float32_t)ERROR_THRESHOLD);
- }
- void DistanceTestsU32::test_kulsinski_distance()
- {
- const uint32_t *inpA = inputA.ptr();
- const uint32_t *inpB = inputB.ptr();
- float32_t *outp = output.ptr();
-
- for(int i=0; i < this->nbPatterns ; i ++)
- {
- *outp = arm_kulsinski_distance(inpA, inpB,this->vecDim);
-
- inpA += this->bitVecDim ;
- inpB += this->bitVecDim ;
- outp ++;
- }
- ASSERT_NEAR_EQ(output,ref,(float32_t)ERROR_THRESHOLD);
- }
- void DistanceTestsU32::test_rogerstanimoto_distance()
- {
- const uint32_t *inpA = inputA.ptr();
- const uint32_t *inpB = inputB.ptr();
- float32_t *outp = output.ptr();
-
- for(int i=0; i < this->nbPatterns ; i ++)
- {
- *outp = arm_rogerstanimoto_distance(inpA, inpB,this->vecDim);
-
- inpA += this->bitVecDim ;
- inpB += this->bitVecDim ;
- outp ++;
- }
- ASSERT_NEAR_EQ(output,ref,(float32_t)ERROR_THRESHOLD);
- }
- void DistanceTestsU32::test_russellrao_distance()
- {
- const uint32_t *inpA = inputA.ptr();
- const uint32_t *inpB = inputB.ptr();
- float32_t *outp = output.ptr();
-
- for(int i=0; i < this->nbPatterns ; i ++)
- {
- *outp = arm_russellrao_distance(inpA, inpB,this->vecDim);
-
- inpA += this->bitVecDim ;
- inpB += this->bitVecDim ;
- outp ++;
- }
- ASSERT_NEAR_EQ(output,ref,(float32_t)ERROR_THRESHOLD);
- }
- void DistanceTestsU32::test_sokalmichener_distance()
- {
- const uint32_t *inpA = inputA.ptr();
- const uint32_t *inpB = inputB.ptr();
- float32_t *outp = output.ptr();
-
- for(int i=0; i < this->nbPatterns ; i ++)
- {
- *outp = arm_sokalmichener_distance(inpA, inpB,this->vecDim);
-
- inpA += this->bitVecDim ;
- inpB += this->bitVecDim ;
- outp ++;
- }
- ASSERT_NEAR_EQ(output,ref,(float32_t)ERROR_THRESHOLD);
- }
- void DistanceTestsU32::test_sokalsneath_distance()
- {
- const uint32_t *inpA = inputA.ptr();
- const uint32_t *inpB = inputB.ptr();
- float32_t *outp = output.ptr();
-
- for(int i=0; i < this->nbPatterns ; i ++)
- {
- *outp = arm_sokalsneath_distance(inpA, inpB,this->vecDim);
-
- inpA += this->bitVecDim ;
- inpB += this->bitVecDim ;
- outp ++;
- }
- ASSERT_NEAR_EQ(output,ref,(float32_t)ERROR_THRESHOLD);
- }
- void DistanceTestsU32::test_yule_distance()
- {
- const uint32_t *inpA = inputA.ptr();
- const uint32_t *inpB = inputB.ptr();
- float32_t *outp = output.ptr();
-
- for(int i=0; i < this->nbPatterns ; i ++)
- {
- *outp = arm_yule_distance(inpA, inpB,this->vecDim);
-
- inpA += this->bitVecDim ;
- inpB += this->bitVecDim ;
- outp ++;
- }
- ASSERT_NEAR_EQ(output,ref,(float32_t)ERROR_THRESHOLD);
- }
-
-
- void DistanceTestsU32::setUp(Testing::testID_t id,std::vector<Testing::param_t>& paramsArgs,Client::PatternMgr *mgr)
- {
- (void)paramsArgs;
- inputA.reload(DistanceTestsU32::INPUTA_U32_ID,mgr);
- inputB.reload(DistanceTestsU32::INPUTB_U32_ID,mgr);
- dims.reload(DistanceTestsU32::DIMS_S16_ID,mgr);
- const int16_t *dimsp = dims.ptr();
- this->nbPatterns=dimsp[0];
- this->vecDim=dimsp[1];
- this->bitVecDim=dimsp[2];
- //printf("%d %d %d\n",dimsp[0],dimsp[1],dimsp[2]);
- output.create(this->nbPatterns,DistanceTestsU32::OUT_F32_ID,mgr);
- switch(id)
- {
- case DistanceTestsU32::TEST_DICE_DISTANCE_1:
- {
- ref.reload(DistanceTestsU32::REF1_F32_ID,mgr);
- }
- break;
- case DistanceTestsU32::TEST_HAMMING_DISTANCE_2:
- {
- ref.reload(DistanceTestsU32::REF2_F32_ID,mgr);
- }
- break;
- case DistanceTestsU32::TEST_JACCARD_DISTANCE_3:
- {
- ref.reload(DistanceTestsU32::REF3_F32_ID,mgr);
- }
- break;
- case DistanceTestsU32::TEST_KULSINSKI_DISTANCE_4:
- {
- ref.reload(DistanceTestsU32::REF4_F32_ID,mgr);
- }
- break;
- case DistanceTestsU32::TEST_ROGERSTANIMOTO_DISTANCE_5:
- {
- ref.reload(DistanceTestsU32::REF5_F32_ID,mgr);
- }
- break;
- case DistanceTestsU32::TEST_RUSSELLRAO_DISTANCE_6:
- {
- ref.reload(DistanceTestsU32::REF6_F32_ID,mgr);
- }
- break;
- case DistanceTestsU32::TEST_SOKALMICHENER_DISTANCE_7:
- {
- ref.reload(DistanceTestsU32::REF7_F32_ID,mgr);
- }
- break;
- case DistanceTestsU32::TEST_SOKALSNEATH_DISTANCE_8:
- {
- ref.reload(DistanceTestsU32::REF8_F32_ID,mgr);
- }
- break;
- case DistanceTestsU32::TEST_YULE_DISTANCE_9:
- {
- ref.reload(DistanceTestsU32::REF9_F32_ID,mgr);
- }
- break;
- }
- }
- void DistanceTestsU32::tearDown(Testing::testID_t id,Client::PatternMgr *mgr)
- {
- (void)id;
- output.dump(mgr);
- }
|