27 #ifndef INTERNAL_CLASSES_IOMANIP_H_ 28 #define INTERNAL_CLASSES_IOMANIP_H_ 37 template<
typename InputIterator>
44 const std::string& separator,
45 const std::string& start =
"[",
46 const std::string& end =
"]") :
49 separator_{separator},
63 std::ostream&
display(std::ostream& os)
const override 68 for (InputIterator it = first_; it !=
last_; ++it)
81 template<
typename Po
interType>
84 const PointerType*
p_;
89 const std::string& separator,
90 const std::string& start =
"[",
91 const std::string& end =
"]") :
94 separator_{separator},
106 std::ostream&
display(std::ostream& os)
const override 110 for (
idx i = 0; i < N_ - 1; ++i)
111 os << p_[i] << separator_;
124 #if ((__GNUC__ == 4) && (__GNUC_MINOR__ == 8) && !__clang__) 125 #pragma GCC diagnostic push 126 #pragma GCC diagnostic ignored "-Weffc++" 130 #if ((__GNUC__ == 4) && (__GNUC_MINOR__ == 8) && !__clang__) 131 #pragma GCC diagnostic pop 137 template<
typename Derived>
140 A_{A.template cast<cplx>()},
147 A_{cmat::Zero(1, 1)}, chop_{
chop}
154 std::ostream&
display(std::ostream& os)
const override 156 return display_impl_(A_, os,
chop);
constexpr double chop
Used in qpp::disp() for setting to zero numbers that have their absolute value smaller than qpp::chop...
Definition: constants.h:56
IOManipEigen(const Eigen::MatrixBase< Derived > &A, double chop=qpp::chop)
Definition: iomanip.h:138
const PointerType * p_
Definition: iomanip.h:84
std::ostream & display(std::ostream &os) const override
Must be overridden by all derived classes.
Definition: iomanip.h:63
Quantum++ main namespace.
Definition: codes.h:30
std::string end_
Definition: iomanip.h:41
IOManipRange & operator=(const IOManipRange &)=default
std::ostream & display(std::ostream &os) const override
Must be overridden by all derived classes.
Definition: iomanip.h:106
double chop_
Definition: iomanip.h:134
Abstract class (interface) that mandates the definition of virtual std::ostream& display(std::ostream...
Definition: idisplay.h:42
Definition: iomanip.h:128
std::complex< double > cplx
Complex number in double precision.
Definition: types.h:45
cmat A_
Definition: iomanip.h:133
IOManipRange(InputIterator first, InputIterator last, const std::string &separator, const std::string &start="[", const std::string &end="]")
Definition: iomanip.h:43
IOManipEigen(const cplx z, double chop=qpp::chop)
Definition: iomanip.h:146
std::string start_
Definition: iomanip.h:86
std::ostream & display(std::ostream &os) const override
Must be overridden by all derived classes.
Definition: iomanip.h:154
std::string start_
Definition: iomanip.h:41
std::string separator_
Definition: iomanip.h:41
Eigen::MatrixXcd cmat
Complex (double precision) dynamic Eigen matrix.
Definition: types.h:60
InputIterator first_
Definition: iomanip.h:40
idx N_
Definition: iomanip.h:85
std::size_t idx
Non-negative integer index.
Definition: types.h:35
InputIterator last_
Definition: iomanip.h:40
IOManipPointer(const PointerType *p, idx N, const std::string &separator, const std::string &start="[", const std::string &end="]")
Definition: iomanip.h:88