diff options
author | Benoit Steiner <benoit.steiner.goog@gmail.com> | 2016-06-21 09:22:43 -0700 |
---|---|---|
committer | Benoit Steiner <benoit.steiner.goog@gmail.com> | 2016-06-21 09:22:43 -0700 |
commit | c58df317473277b297dd018a2dc3d8fe85b00c92 (patch) | |
tree | a09e8259fe0d072249cbf517ea8eacfd516dcb0a /unsupported/Eigen/CXX11/src/Tensor/TensorIO.h | |
parent | de32f8d656c3ea7855ced77457ea661e43d417b7 (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.h | 22 |
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; + } } }; |