From 4c7c27a0298e98dce2ac0ef1b8ce293b08446374 Mon Sep 17 00:00:00 2001 From: Chris Elrod Date: Thu, 15 Feb 2024 21:17:33 -0500 Subject: [PATCH] add operator<<(std::ostream, Dual) --- include/Math/Dual.hpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/include/Math/Dual.hpp b/include/Math/Dual.hpp index deb594a..7bd2a12 100644 --- a/include/Math/Dual.hpp +++ b/include/Math/Dual.hpp @@ -8,6 +8,7 @@ #include #include #include +#include #include namespace poly::math { @@ -824,6 +825,14 @@ constexpr auto dval(Dual &x) -> double & { return dval(x.value()); } +template +auto operator<<(std::ostream &os, const Dual &x) -> std::ostream & { + os << "Dual<" << N << ">{" << x.value(); + for (ptrdiff_t n = 0; n < N; ++n) os << ", " << x.gradient()[n]; + os << "}"; + return os; +}; + class GradientResult { double x; MutPtrVector grad;