32 #ifndef INTERNAL_CLASSES_IOMANIP_H_ 33 #define INTERNAL_CLASSES_IOMANIP_H_ 40 template <
typename InputIterator>
47 const std::string& separator,
48 const std::string& start =
"[",
49 const std::string& end =
"]")
50 : first_{first}, last_{last}, separator_{separator}, start_{start},
61 std::ostream&
display(std::ostream& os)
const override {
65 for (InputIterator it = first_; it !=
last_; ++it) {
77 template <
typename Po
interType>
79 const PointerType*
p_;
85 const std::string& separator,
86 const std::string& start =
"[",
87 const std::string& end =
"]")
88 : p_{p}, N_{N}, separator_{separator}, start_{start}, end_{end} {}
96 std::ostream&
display(std::ostream& os)
const override {
99 for (
idx i = 0; i < N_ - 1; ++i)
100 os << p_[i] << separator_;
113 #if ((__GNUC__ == 4) && (__GNUC_MINOR__ == 8) && !__clang__) 114 #pragma GCC diagnostic push 115 #pragma GCC diagnostic ignored "-Weffc++" 118 #if ((__GNUC__ == 4) && (__GNUC_MINOR__ == 8) && !__clang__) 119 #pragma GCC diagnostic pop 126 template <
typename Derived>
129 : A_{A.template cast<cplx>()},
134 : A_{cmat::Zero(1, 1)}, chop_{
chop} {
140 std::ostream&
display(std::ostream& os)
const override {
141 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:58
IOManipEigen(const Eigen::MatrixBase< Derived > &A, double chop=qpp::chop)
Definition: iomanip.h:127
const PointerType * p_
Definition: iomanip.h:79
std::ostream & display(std::ostream &os) const override
Must be overridden by all derived classes.
Definition: iomanip.h:61
Quantum++ main namespace.
Definition: codes.h:35
std::string end_
Definition: iomanip.h:43
IOManipRange & operator=(const IOManipRange &)=default
std::ostream & display(std::ostream &os) const override
Must be overridden by all derived classes.
Definition: iomanip.h:96
double chop_
Definition: iomanip.h:122
Abstract class (interface) that mandates the definition of virtual std::ostream& display(std::ostream...
Definition: idisplay.h:46
Definition: iomanip.h:117
std::complex< double > cplx
Complex number in double precision.
Definition: types.h:49
cmat A_
Definition: iomanip.h:121
IOManipRange(InputIterator first, InputIterator last, const std::string &separator, const std::string &start="[", const std::string &end="]")
Definition: iomanip.h:46
IOManipEigen(const cplx z, double chop=qpp::chop)
Definition: iomanip.h:133
std::string start_
Definition: iomanip.h:81
std::ostream & display(std::ostream &os) const override
Must be overridden by all derived classes.
Definition: iomanip.h:140
std::string start_
Definition: iomanip.h:43
std::string separator_
Definition: iomanip.h:43
Eigen::MatrixXcd cmat
Complex (double precision) dynamic Eigen matrix.
Definition: types.h:64
InputIterator first_
Definition: iomanip.h:42
idx N_
Definition: iomanip.h:80
std::size_t idx
Non-negative integer index.
Definition: types.h:39
InputIterator last_
Definition: iomanip.h:42
IOManipPointer(const PointerType *p, idx N, const std::string &separator, const std::string &start="[", const std::string &end="]")
Definition: iomanip.h:84