aboutsummaryrefslogtreecommitdiffhomepage
path: root/unsupported/test/cxx11_tensor_fixed_size.cpp
diff options
context:
space:
mode:
authorGravatar Benoit Steiner <benoit.steiner.goog@gmail.com>2015-07-13 11:14:59 -0700
committerGravatar Benoit Steiner <benoit.steiner.goog@gmail.com>2015-07-13 11:14:59 -0700
commit3912ca0d5388fc58853d2fd8f1773e920f55523b (patch)
tree463f6de4bbe1e32ec562ff3381888d0f3344045d /unsupported/test/cxx11_tensor_fixed_size.cpp
parentea8756156406e928d8783940d3174d2db0a88986 (diff)
Fixed a bug in the integer division code that caused some large numerators to be incorrectly handled
Diffstat (limited to 'unsupported/test/cxx11_tensor_fixed_size.cpp')
-rw-r--r--unsupported/test/cxx11_tensor_fixed_size.cpp45
1 files changed, 39 insertions, 6 deletions
diff --git a/unsupported/test/cxx11_tensor_fixed_size.cpp b/unsupported/test/cxx11_tensor_fixed_size.cpp
index 8a27f5ad8..5252e4d72 100644
--- a/unsupported/test/cxx11_tensor_fixed_size.cpp
+++ b/unsupported/test/cxx11_tensor_fixed_size.cpp
@@ -31,12 +31,20 @@ static void test_1d()
vec1(4) = 23.0; vec2(4) = 4.0;
vec1(5) = 42.0; vec2(5) = 5.0;
- float data3[6];
- TensorMap<TensorFixedSize<float, Sizes<6> > > vec3(data3, 6);
- vec3 = vec1.sqrt();
- float data4[6];
- TensorMap<TensorFixedSize<float, Sizes<6>, RowMajor> > vec4(data4, 6);
- vec4 = vec2.sqrt();
+ // Test against shallow copy.
+ TensorFixedSize<float, Sizes<6> > copy = vec1;
+ VERIFY_IS_NOT_EQUAL(vec1.data(), copy.data());
+ for (int i = 0; i < 6; ++i) {
+ VERIFY_IS_APPROX(vec1(i), copy(i));
+ }
+ copy = vec1;
+ VERIFY_IS_NOT_EQUAL(vec1.data(), copy.data());
+ for (int i = 0; i < 6; ++i) {
+ VERIFY_IS_APPROX(vec1(i), copy(i));
+ }
+
+ TensorFixedSize<float, Sizes<6> > vec3 = vec1.sqrt();
+ TensorFixedSize<float, Sizes<6>, RowMajor> vec4 = vec2.sqrt();
VERIFY_IS_EQUAL((vec3.size()), 6);
VERIFY_IS_EQUAL(vec3.rank(), 1);
@@ -66,6 +74,30 @@ static void test_1d()
VERIFY_IS_APPROX(vec3(5), 42.0f + 5.0f);
}
+static void test_tensor_map()
+{
+ TensorFixedSize<float, Sizes<6> > vec1;
+ TensorFixedSize<float, Sizes<6>, RowMajor> vec2;
+
+ vec1(0) = 4.0; vec2(0) = 0.0;
+ vec1(1) = 8.0; vec2(1) = 1.0;
+ vec1(2) = 15.0; vec2(2) = 2.0;
+ vec1(3) = 16.0; vec2(3) = 3.0;
+ vec1(4) = 23.0; vec2(4) = 4.0;
+ vec1(5) = 42.0; vec2(5) = 5.0;
+
+ float data3[6];
+ TensorMap<TensorFixedSize<float, Sizes<6> > > vec3(data3, 6);
+ vec3 = vec1.sqrt() + vec2;
+
+ VERIFY_IS_APPROX(vec3(0), sqrtf(4.0));
+ VERIFY_IS_APPROX(vec3(1), sqrtf(8.0) + 1.0f);
+ VERIFY_IS_APPROX(vec3(2), sqrtf(15.0) + 2.0f);
+ VERIFY_IS_APPROX(vec3(3), sqrtf(16.0) + 3.0f);
+ VERIFY_IS_APPROX(vec3(4), sqrtf(23.0) + 4.0f);
+ VERIFY_IS_APPROX(vec3(5), sqrtf(42.0) + 5.0f);
+}
+
static void test_2d()
{
float data1[6];
@@ -192,6 +224,7 @@ static void test_array()
void test_cxx11_tensor_fixed_size()
{
CALL_SUBTEST(test_1d());
+ CALL_SUBTEST(test_tensor_map());
CALL_SUBTEST(test_2d());
CALL_SUBTEST(test_3d());
CALL_SUBTEST(test_array());