#pragma once #include // #include #include #include /// @brief Boilerplate code to enable fmtlib to print Eigen::MatrixXd template <> struct fmt::formatter : fmt::ostream_formatter {}; /// @brief Boilerplate code to enable fmtlib to print Eigen::VectorXd template <> struct fmt::formatter : fmt::ostream_formatter { template auto format(const Eigen::VectorXd& value, Context& ctx) const -> decltype(ctx.out()) { auto buffer = basic_memory_buffer(); auto&& formatbuf = detail::formatbuf>(buffer); auto&& output = std::basic_ostream(&formatbuf); output.imbue(std::locale::classic()); output << "["; for (int i = 0; i < value.size(); ++i) { output << value(i); if (i < value.size() - 1) output << ", "; } output << "]"; output.exceptions(std::ios_base::failbit | std::ios_base::badbit); return formatter, char>::format( {buffer.data(), buffer.size()}, ctx); } };