/** * @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 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 ( 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; }