summaryrefslogtreecommitdiff
path: root/src/Gudhi_stat/test/vector_representation_test.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/Gudhi_stat/test/vector_representation_test.cpp')
-rw-r--r--src/Gudhi_stat/test/vector_representation_test.cpp51
1 files changed, 51 insertions, 0 deletions
diff --git a/src/Gudhi_stat/test/vector_representation_test.cpp b/src/Gudhi_stat/test/vector_representation_test.cpp
index 2131ed29..40409205 100644
--- a/src/Gudhi_stat/test/vector_representation_test.cpp
+++ b/src/Gudhi_stat/test/vector_representation_test.cpp
@@ -352,3 +352,54 @@ BOOST_AUTO_TEST_CASE(check_compute_average)
}
+
+BOOST_AUTO_TEST_CASE(check_arythmetic_operations)
+{
+ //compute average
+ std::vector< std::pair<double,double> > i1(3);
+ i1[0] = std::pair<double,double>( 1,2 );
+ i1[1] = std::pair<double,double>( 3,8 );
+ i1[2] = std::pair<double,double>( 1,6 );
+
+ std::vector< std::pair<double,double> > i2(3);
+ i2[0] = std::pair<double,double>( 2,9 );
+ i2[1] = std::pair<double,double>( 2,15);
+ i2[2] = std::pair<double,double>( 6,17 );
+
+ Vector_distances_in_diagram< Euclidean_distance<double> > A( i1 , -1 );
+ Vector_distances_in_diagram< Euclidean_distance<double> > B( i1 , -1 );
+
+ Vector_distances_in_diagram< Euclidean_distance<double> > sum = A+B;
+ Vector_distances_in_diagram< Euclidean_distance<double> > difference = A-B;
+
+ BOOST_CHECK( almost_equal( sum.vector_in_position(0) , 7.07107) );
+ BOOST_CHECK( almost_equal( sum.vector_in_position(1) , 7.07107) );
+ BOOST_CHECK( almost_equal( sum.vector_in_position(2) , 5.65685) );
+ BOOST_CHECK( almost_equal( sum.vector_in_position(3) , 1.41421) );
+ BOOST_CHECK( almost_equal( sum.vector_in_position(4) , 1.41421) );
+ BOOST_CHECK( almost_equal( sum.vector_in_position(5) , 1.41421) );
+
+ BOOST_CHECK( almost_equal( difference.vector_in_position(0) , 0) );
+ BOOST_CHECK( almost_equal( difference.vector_in_position(1) , 0) );
+ BOOST_CHECK( almost_equal( difference.vector_in_position(2) , 0) );
+ BOOST_CHECK( almost_equal( difference.vector_in_position(3) , 0) );
+ BOOST_CHECK( almost_equal( difference.vector_in_position(4) , 0) );
+ BOOST_CHECK( almost_equal( difference.vector_in_position(5) , 0) );
+
+ Vector_distances_in_diagram< Euclidean_distance<double> > prod = 2.*A;
+ BOOST_CHECK( almost_equal( prod.vector_in_position(0) , 7.07107) );
+ BOOST_CHECK( almost_equal( prod.vector_in_position(1) , 7.07107) );
+ BOOST_CHECK( almost_equal( prod.vector_in_position(2) , 5.65685) );
+ BOOST_CHECK( almost_equal( prod.vector_in_position(3) , 1.41421) );
+ BOOST_CHECK( almost_equal( prod.vector_in_position(4) , 1.41421) );
+ BOOST_CHECK( almost_equal( prod.vector_in_position(5) , 1.41421) );
+
+ Vector_distances_in_diagram< Euclidean_distance<double> > prod1 = A*2;
+ BOOST_CHECK( almost_equal( prod1.vector_in_position(0) , 7.07107) );
+ BOOST_CHECK( almost_equal( prod1.vector_in_position(1) , 7.07107) );
+ BOOST_CHECK( almost_equal( prod1.vector_in_position(2) , 5.65685) );
+ BOOST_CHECK( almost_equal( prod1.vector_in_position(3) , 1.41421) );
+ BOOST_CHECK( almost_equal( prod1.vector_in_position(4) , 1.41421) );
+ BOOST_CHECK( almost_equal( prod1.vector_in_position(5) , 1.41421) );
+
+}