#include "SparseVector.hpp" #include using namespace pcsvm; int main() { // test constructors SparseVector v1; SparseVector v_empty=v1; #define WRITELN(w) std::cout << "line " << __LINE__ << ": " << w << std::endl; WRITELN(v1); WRITELN(v_empty); std::vector sv; sv.push_back(1.0f); sv.push_back(2.0f); sv.push_back(3.0f); sv.push_back(0.0f); v1 = sv; WRITELN(v1); WRITELN(v_empty); v1 = v1; v_empty = v_empty; v1 = v1; WRITELN(v1); WRITELN(v_empty); WRITELN(v1.copy()); WRITELN(v_empty.copy()); // test mixed types SparseVector v3 = v1; SparseVector v4 = v1.plusAlphaYpsilon(2.0, v3); WRITELN (v3); WRITELN (v4); v4 = v1.plusAlphaYpsilon(2.0, v1); WRITELN (v4); // geting internal info WRITELN(v4.lastIndex()) WRITELN(v4.entries()) v4.clear(); WRITELN(v4.lastIndex()) WRITELN(v4.entries()) // access-methods v1[4]=4.0; WRITELN(v1); v1[1]=5.0; WRITELN(v1); WRITELN(axpy(1.0, v1, v1)); v1.put(0, 0.0f); WRITELN(v1); v1.put(0, 1.0f); WRITELN(v1); v1.put(1, 0.0f); WRITELN(v1); v1.put(1, 1.0f); WRITELN(v1); v1.put(5, 0.0f); WRITELN(v1); v1.put(5, 1.0f); WRITELN(v1); v1.put(5, 0.0f); WRITELN(v1); v1.put(5, 1.0f); WRITELN(v1); // other functions v1.prune(1.0f); WRITELN(v1); WRITELN(v1.norm()); WRITELN(v1*v1); WRITELN(v1/v1); WRITELN(v1/(2.0*v1)); WRITELN(v1+v1); WRITELN(v1+v_empty); v1 += v_empty; WRITELN(v1); v1 += v1; WRITELN(v1); v4 = v1; v1 -= v1; WRITELN(v1); v1.prune(1e-12); WRITELN(v1); v1 += v4; WRITELN(v1); sv = v1.toVector(); v1 = sv; WRITELN(v1); v4[2]=52.0f; WRITELN(v4); WRITELN(dist(v1,v1)); WRITELN(dist(v1,v4)); WRITELN(pDist(v1,v4, 1.0)); SparseVector w1, w2; w1[0] = 1.0; w1[2] = 3.0; w1[3]=4.0; w1[4]=5.0; w2[1] = 2.0; w2[2] = 3.0; w2[3]=4.0; w2[5]=6.0; w2[9]=10.0; std::cout << std::endl; WRITELN(w1);WRITELN(w2); std::cout << std::endl; for (AnyIter it(w1, w2); it.isValid(); ++it) WRITELN(it->idx << ": " << it->val1 << ", " << it->val2); std::cout << std::endl; for (BothIter it(w1, w2); it.isValid(); ++it) WRITELN(it->idx << ": " << it->val1 << ", " << it->val2); std::cout << std::endl; for (FullIter it(w1, w2); it.isValid(); ++it) WRITELN(it->idx << ": " << it->val1 << ", " << it->val2); }