namespace internal
// enums
enum RAMType
// unions
template <typename MType>
union f_cast
template <>
union f_cast <ap_uint <64>>
template <>
union f_cast <double>
template <>
union f_cast <ap_uint <32>>
template <>
union f_cast <ap_uint <8>>
template <>
union f_cast <float>
// classes
template <typename MType>
class AdditionLatency
template <>
class AdditionLatency <float>
template <>
class AdditionLatency <double>
template <>
class ExpLatency <double>
template <>
class ExpLatency <float>
template <typename MType>
class ExpLatency
class MT19937
template <>
class MultiplyLatency <double>
template <typename MType>
class MultiplyLatency
template <>
class MultiplyLatency <float>
template <
    typename MType,
    int D,
    int K,
    int KAMax,
    int KBMax,
    MType(*)(MType op1, MType op2) funcA,
    void(*)(MType ®, MType op) funcB,
    MType(*)(MType op) funcC,
    RAMType RAMBuff
    >
class ll
template <
    typename MType,
    int K
    >
class pickMaxProcess
template <
    typename MType,
    int K,
    int KMax,
    void(*)(MType ®, MType op) B,
    int Latency,
    RAMType RAMSum
    >
class s_aggr
template <
    int N,
    int _Depth,
    typename MType,
    typename TagType,
    RAMType RAMScaleBuff,
    RAMType RAMScaleFactor
    >
class scalingProcess
template <
    typename MType,
    int D,
    int DMax,
    int K,
    int KMax,
    MType(*)(MType op1, MType op2) A,
    void(*)(MType ®, MType op) B,
    MType(*)(MType op) C,
    int Latency,
    RAMType RAMWeight
    >
class sl
template <
    typename MType,
    int D,
    int DMax,
    int K,
    int KMax,
    MType(*)(MType op1, MType op2) A,
    void(*)(MType ®, MType op) B,
    MType(*)(MType op) C,
    int Latency,
    RAMType RAMWeight,
    RAMType RAMIntercept
    >
class sl2
template <
    typename MType,
    int K,
    int KMax,
    void(*)(MType ®, MType op) func,
    int Latency
    >
class sl3
template <
    int _WAxi,
    int _WData
    >
class splitTag
template <
    typename MType,
    int D,
    MType(*)(MType op1, MType op2) A,
    void(*)(MType ®, MType op) B,
    MType(*)(MType op) C,
    int Latency
    >
class ss
template <
    int _WAxi,
    int _WData,
    int _BurstLen,
    typename MType
    >
class tableLoader
template <
    int _WAxi,
    int _WData,
    int _BurstLen,
    typename MType
    >
class tableRandomLoader
template <
    int _WAxi,
    int _WData,
    int _BurstLen,
    typename MType,
    typename TagType
    >
class tagTableLoader
template <
    int _WAxi,
    int _WData,
    int _BurstLen,
    typename MType,
    typename TagType
    >
class tagTableRandomLoader
template <
    int W,
    int N,
    int _BurstLen
    >
class tupleRandomLoader