#include "itbase.h"
using std::cout;
using std::endl;
using namespace itpp;
int main()
{
//********* Testing Sparse_Vec *********
cout << endl << "******* Testing Sparse_Vec *******" << endl;
Sparse_Vec<double> v1(5), v2(5);
Sparse_Vec<double> v_out(5);
ivec index_vec;
vec v;
v1.set(1, 3);
v2.set(1, 1);
v2.set(2, 2);
cout << "v1=" << v1.full() << endl;
cout << "v2=" << v2.full() << endl;
v_out=v1+v2;
cout << "v1+v2=" << endl << v_out.full() << endl;
cout << "v1*v2=" << v1*v2 << endl;
cout << "density(v1)=" << v1.density() << endl;
v1.zeros();
cout << "v1=" << v1.full() << endl;
index_vec="0 2 2 3";
v="1 2 4 3";
v1.set(index_vec,v);
cout << "Set " << v << " to the indices " << index_vec << endl;
cout << "v1=" << v1.full() << endl;
v1.set_new(index_vec,v);
cout << "Set new " << v << " to the indices " << index_vec << endl;
cout << "Unnoticed error in set_new() if the same index is used several times" << endl;
cout << "v1=" << v1.full() << endl;
v1.zeros();
v1-=v2;
cout << "v1(for v1-=v2) = " << v1.full() << endl;
v1/=4;
cout << "v1(for v1/=4) = " << v1.full() << endl;
v1*=2;
cout << "v1(for v1*=2) = " << v1.full() << endl;
v2/=2;
v1+=v2;
cout << "v1(for v1+=v2/2) = " << v1.full() << endl;
cout << "number of non-zero elements in v1: nnz = " << v1.nnz() << endl;
index_vec="0 2 2 1";
v="-1 5 -2 4";
cout << "Add " << v << " to the indices " << index_vec << endl;
v1.add(index_vec,v);
cout << "v1=" << v1.full() << endl;
v1.clear_elem(2);
cout << "v1(element 2 cleared) = " << v1.full() << endl;
Sparse_Vec<double> v3;
v3.set_size(2);
v3.set(0, 3);
cout << "v3=" << endl << v3.full() << endl;
v3.set_size(5);
cout << "v3=" << v3.full() << endl;
Sparse_Vec<double> v4(5),v5(5);
v4.set(1, 1);
v5.set(1, 1);
v4.set(2, 2);
v5.set(2, 4);
cout << "v4=" << v4.full() << endl;
cout << "v5=" << v5.full() << endl;
if (v4==v5)
cout<<"v4 equal to v5"<<endl;
else
cout<<"v4 not equal to v5"<<endl;
//********* Testing Sparse_Mat *********
cout << endl << "******* Testing Sparse_Mat *******" << endl;
Sparse_Mat<double> m1(3,3), m2(3,3);
m1.set(1,1, 3);
m2.set(1,2, 1);
m2.set(2,1, 2);
cout << "m1=" << endl << full(m1) << endl;
cout << "m2=" << endl << full(m2) << endl;
cout << "m1+m2=" << endl << full(m1+m2) << endl;
cout << "m1*m2=" << endl << full(m1*m2) << endl;
cout << "density(m1)=" << m1.density() << endl;
cout << "transpose(m2)=" << endl << full(transpose(m2)) << endl;
m1.zeros();
cout << "m1.zeros()=" << endl << full(m1) << endl;
m1-=m2;
cout << "m1(-=m2)=" << endl << full(m1) << endl;
m1/=4;
cout << "m1(/=4)=" << endl << full(m1) << endl;
m1*=2;
cout << "m1(*=2)=" << endl << full(m1) << endl;
m1.add_elem(0,2,4);
cout << "m1.add_elem(0,2,4)=" << endl << full(m1) << endl;
m1.clear_elem(1,2);
cout << "m1.clear_elem(1,2)=" << endl << full(m1) << endl;
Sparse_Mat<double> m3(2,3), m4(3,2);
m3.set(0,0, 3);
m4.set(0,1, 1);
m4.set(2,0, 2);
cout << "m3=" << endl << full(m3) << endl;
cout << "m4=" << endl << full(m4) << endl;
cout << "m3*m4=" << endl << full(m3*m4) << endl;
cout << "transpose(m4)=" << endl << full(transpose(m4)) << endl;
cout << "trans_mult(m4,m4)=" << full(trans_mult(m4,m4)) << endl;
cout << "mult_trans(m4,m4)=" << full(mult_trans(m4,m4)) << endl;
cout << "mult_trans(m4,m4)=" << full(mult_trans(m4,m4)) << endl;
v = "1 2 3";
cout << "v = " << v << endl;
cout << "m3 * v = " << m3*v << endl;
return 0;
}
syntax highlighted by Code2HTML, v. 0.9.1