aboutsummaryrefslogtreecommitdiffhomepage
path: root/unsupported/Eigen/CXX11/src/Tensor/TensorIO.h
diff options
context:
space:
mode:
authorGravatar Benoit Steiner <benoit.steiner.goog@gmail.com>2016-06-21 09:22:43 -0700
committerGravatar Benoit Steiner <benoit.steiner.goog@gmail.com>2016-06-21 09:22:43 -0700
commitc58df317473277b297dd018a2dc3d8fe85b00c92 (patch)
treea09e8259fe0d072249cbf517ea8eacfd516dcb0a /unsupported/Eigen/CXX11/src/Tensor/TensorIO.h
parentde32f8d656c3ea7855ced77457ea661e43d417b7 (diff)
Handle empty tensors in the print functions
Diffstat (limited to 'unsupported/Eigen/CXX11/src/Tensor/TensorIO.h')
-rw-r--r--unsupported/Eigen/CXX11/src/Tensor/TensorIO.h22
1 files changed, 16 insertions, 6 deletions
diff --git a/unsupported/Eigen/CXX11/src/Tensor/TensorIO.h b/unsupported/Eigen/CXX11/src/Tensor/TensorIO.h
index 3db692ac6..58ffaefab 100644
--- a/unsupported/Eigen/CXX11/src/Tensor/TensorIO.h
+++ b/unsupported/Eigen/CXX11/src/Tensor/TensorIO.h
@@ -26,10 +26,15 @@ struct TensorPrinter {
typedef typename internal::remove_const<typename Tensor::Scalar>::type Scalar;
typedef typename Tensor::Index Index;
const Index total_size = internal::array_prod(tensor.dimensions());
- const Index first_dim = Eigen::internal::array_get<0>(tensor.dimensions());
- static const int layout = Tensor::Layout;
- Map<const Array<Scalar, Dynamic, Dynamic, layout> > matrix(const_cast<Scalar*>(tensor.data()), first_dim, total_size/first_dim);
- os << matrix;
+ if (total_size == 0) {
+ os << "Empty tensor of rank " << Rank;
+ }
+ else {
+ const Index first_dim = Eigen::internal::array_get<0>(tensor.dimensions());
+ static const int layout = Tensor::Layout;
+ Map<const Array<Scalar, Dynamic, Dynamic, layout> > matrix(const_cast<Scalar*>(tensor.data()), first_dim, total_size/first_dim);
+ os << matrix;
+ }
}
};
@@ -41,8 +46,13 @@ struct TensorPrinter<Tensor, 1> {
typedef typename internal::remove_const<typename Tensor::Scalar>::type Scalar;
typedef typename Tensor::Index Index;
const Index total_size = internal::array_prod(tensor.dimensions());
- Map<const Array<Scalar, Dynamic, 1> > array(const_cast<Scalar*>(tensor.data()), total_size);
- os << array;
+ if (total_size == 0) {
+ os << "Empty tensor of rank 1";
+ }
+ else {
+ Map<const Array<Scalar, Dynamic, 1> > array(const_cast<Scalar*>(tensor.data()), total_size);
+ os << array;
+ }
}
};