eigen/test/packet_ostream.h
2023-03-10 22:36:57 +00:00

22 lines
710 B
C++

#ifndef TEST_PACKET_OSTREAM
#define TEST_PACKET_OSTREAM
#include <type_traits>
#include <ostream>
// Include this header to be able to print Packets while debugging.
template<typename Packet, typename EnableIf = std::enable_if_t<Eigen::internal::unpacket_traits<Packet>::vectorizable> >
std::ostream& operator<<(std::ostream& os, const Packet& packet) {
using Scalar = typename Eigen::internal::unpacket_traits<Packet>::type;
Scalar v[Eigen::internal::unpacket_traits<Packet>::size];
Eigen::internal::pstoreu(v, packet);
os << "{" << v[0];
for (int i=1; i<Eigen::internal::unpacket_traits<Packet>::size; ++i) {
os << "," << v[i];
}
os << "}";
return os;
}
#endif // TEST_PACKET_OSTREAM