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 HJCFITConfig.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 HJCFIT::t_real

Types of reals across HJCFIT.

typedef EIGEN_DEFAULT_DENSE_INDEX_TYPE HJCFIT::t_int

Types of integers across HJCFIT.

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

Types of unsigned integers across HJCFIT.

Eigen/Math types

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

Complex real type.

typedef Eigen::Matrix<t_real, ::Eigen::Dynamic, 1, 0, ::Eigen::Dynamic, 1> HJCFIT::t_rvector

Types of final state vectors across HJCFIT.

typedef Eigen::Matrix<t_real, 1, ::Eigen::Dynamic, ::Eigen::RowMajor, 1, ::Eigen::Dynamic> HJCFIT::t_initvec

Types of initial state vectors across HJCFIT.

typedef Eigen::Matrix<bool, ::Eigen::Dynamic, ::Eigen::Dynamic, 0, ::Eigen::Dynamic, ::Eigen::Dynamic> HJCFIT::t_bmatrix

Types of boolean matrices across HJCFIT.

typedef Eigen::Matrix<t_real, ::Eigen::Dynamic, ::Eigen::Dynamic, 0, ::Eigen::Dynamic, ::Eigen::Dynamic> HJCFIT::t_rmatrix

Types of real matrices across HJCFIT.

typedef Eigen::Matrix<t_real, ::Eigen::Dynamic, ::Eigen::Dynamic, 0, HJCFIT_STACK_MATRIX_MAX, HJCFIT_STACK_MATRIX_MAX> HJCFIT::t_stack_rmatrix

Types of real matrices across HJCFIT guaranteed to be allocated on the stack. Max size HJCFIT_STACK_MATRIX_MAX by HJCFIT_STACK_MATRIX_MAX.

typedef Eigen::Matrix<t_complex, ::Eigen::Dynamic, ::Eigen::Dynamic, 0, ::Eigen::Dynamic, ::Eigen::Dynamic> HJCFIT::t_cmatrix

Type of complex matrices.

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

Type holding the bursts.

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

Type of a burst.

Multi-precision types

HJCFIT is build without Multi-precision support

Global Data

HJCFIT::quiet_nan

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