Type Hierarchy

It is often convenient to express all types in a software from a few starting points. This is called a type hierarchy. The advantage is that it is then fairly easy to switch, say, from using double to long double. Indeed, doing so takes all of one line in this package, as can be seen in the file DCProgsConfig.h.in at the root of the package. We describe below the type hierarchy of the package. All the types are prefixed with t_ to indicate that it is a type. Where instructive, the names of more complex types will start with i, r, c, b for integer, real, complex, and bool.

Basic types

typedef double DCProgs::t_real

Types of reals across DCProgs.

typedef EIGEN_DEFAULT_DENSE_INDEX_TYPE DCProgs::t_int

Types of integers across DCProgs.

typedef std::make_unsigned<t_int>::type DCProgs::t_uint

Types of unsigned integers across DCProgs.

Eigen/Math types

typedef std::complex<t_real> DCProgs::t_complex

Complex real type.

typedef Eigen::Matrix<t_real, Eigen::Dynamic, 1> DCProgs::t_rvector

Types of final state vectors across DCProgs.

typedef Eigen::Matrix<t_real, 1, Eigen::Dynamic> DCProgs::t_initvec

Types of initial state vectors across DCProgs.

typedef Eigen::Matrix<bool, Eigen::Dynamic, Eigen::Dynamic> DCProgs::t_bmatrix

Types of boolean matrices across DCProgs.

typedef Eigen::Matrix<t_real, Eigen::Dynamic, Eigen::Dynamic> DCProgs::t_rmatrix

Types of real matrices across DCProgs.

typedef Eigen::Matrix<t_complex, Eigen::Dynamic, Eigen::Dynamic> DCProgs::t_cmatrix

Type of complex matrices.

typedef std::vector<t_Burst> DCProgs::t_Bursts

Type holding the bursts.

typedef std::vector<t_real> DCProgs::t_Burst

Type of a burst.

Global Data

DCProgs::quiet_nan

Holds an alias to NaN representation in DCProgs::t_real. The code will fail to compile if NaN cannot be represented in this type.