12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- /**
- * @file testSparseVector.cpp
- // refactor-nice.pl: check this substitution
- // old: * @brief test sparse vector implementation
- * @brief test sparse std::vector implementation
- * @author Erik Rodner
- * @date 05/07/2008
- */
- #include "core/vector/SparseVector.h"
- #include <iostream>
- using namespace NICE;
- using namespace std;
- void rndSparseVector ( SparseVector & v, int numIndex = 1000 )
- {
- for ( uint k = 0 ; k < (uint)numIndex ; k++ )
- {
- if ( drand48() < 0.5 )
- v.insert ( pair<int, double> ( k, drand48() ) );
- }
- }
- void calcIntegralSparseMap ( SparseVector *map, int xsize, int ysize )
- {
- int k = xsize;
- for ( int y = 1 ; y < ysize; y++, k+=xsize )
- {
- fprintf (stderr, "x %d y %d s %d\n", 0, y, (int)map[k].size() );
- map[k].add ( (map[k-xsize]) );
- }
- k = 1;
- for ( int x = 1 ; x < xsize; x++, k++ )
- map[k].add ( (map[k-1]) );
- k = xsize + 1;
- for ( int y = 1 ; y < ysize ; y++,k++ )
- for ( int x = 1 ; x < xsize ; x++,k++ )
- {
- fprintf (stderr, "x %d y %d s %d\n", x, y, (int)map[k].size() );
- map[k].add ( (map[k-1]) );
- map[k].add ( (map[k-xsize]) );
- map[k].add ( (map[k-xsize-1]), -1.0 );
- }
- }
- int main (int argc, char **argv)
- {
- std::set_terminate(__gnu_cxx::__verbose_terminate_handler);
-
- SparseVector v;
- SparseVector w;
-
- srand48(time(NULL));
- srand(time(NULL));
-
- rndSparseVector ( v, 10 );
- rndSparseVector ( w, 10 );
- v.store ( cerr );
- w.store ( cerr );
- v.add(w);
- v.store ( cerr );
-
- const int xsize = 100;
- const int ysize = 100;
- SparseVector *map = new SparseVector[xsize*ysize];
- for ( int k = 0 ; k < xsize*ysize ; k++ )
- rndSparseVector( map[k] );
- map[xsize*ysize-1].store ( cerr );
- calcIntegralSparseMap ( map, xsize, ysize );
- map[xsize*ysize-1].store ( cerr );
-
- return 0;
- }
|