testSparseVector.cpp 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. /**
  2. * @file testSparseVector.cpp
  3. // refactor-nice.pl: check this substitution
  4. // old: * @brief test sparse vector implementation
  5. * @brief test sparse std::vector implementation
  6. * @author Erik Rodner
  7. * @date 05/07/2008
  8. */
  9. #include "core/vector/SparseVector.h"
  10. #include <iostream>
  11. using namespace NICE;
  12. using namespace std;
  13. void rndSparseVector ( SparseVector & v, int numIndex = 1000 )
  14. {
  15. for ( uint k = 0 ; k < (uint)numIndex ; k++ )
  16. {
  17. if ( drand48() < 0.5 )
  18. v.insert ( pair<int, double> ( k, drand48() ) );
  19. }
  20. }
  21. void calcIntegralSparseMap ( SparseVector *map, int xsize, int ysize )
  22. {
  23. int k = xsize;
  24. for ( int y = 1 ; y < ysize; y++, k+=xsize )
  25. {
  26. fprintf (stderr, "x %d y %d s %d\n", 0, y, (int)map[k].size() );
  27. map[k].add ( (map[k-xsize]) );
  28. }
  29. k = 1;
  30. for ( int x = 1 ; x < xsize; x++, k++ )
  31. map[k].add ( (map[k-1]) );
  32. k = xsize + 1;
  33. for ( int y = 1 ; y < ysize ; y++,k++ )
  34. for ( int x = 1 ; x < xsize ; x++,k++ )
  35. {
  36. fprintf (stderr, "x %d y %d s %d\n", x, y, (int)map[k].size() );
  37. map[k].add ( (map[k-1]) );
  38. map[k].add ( (map[k-xsize]) );
  39. map[k].add ( (map[k-xsize-1]), -1.0 );
  40. }
  41. }
  42. int main (int argc, char **argv)
  43. {
  44. std::set_terminate(__gnu_cxx::__verbose_terminate_handler);
  45. SparseVector v;
  46. SparseVector w;
  47. srand48(time(NULL));
  48. srand(time(NULL));
  49. rndSparseVector ( v, 10 );
  50. rndSparseVector ( w, 10 );
  51. v.store ( cerr );
  52. w.store ( cerr );
  53. v.add(w);
  54. v.store ( cerr );
  55. const int xsize = 100;
  56. const int ysize = 100;
  57. SparseVector *map = new SparseVector[xsize*ysize];
  58. for ( int k = 0 ; k < xsize*ysize ; k++ )
  59. rndSparseVector( map[k] );
  60. map[xsize*ysize-1].store ( cerr );
  61. calcIntegralSparseMap ( map, xsize, ysize );
  62. map[xsize*ysize-1].store ( cerr );
  63. return 0;
  64. }