def get_float_type_def(double_precision, include_complex=True):
    """Get the model floating point type definition.

    Args:
        double_precision (boolean): if True we will use the double type for the mot_float_type type.
            Else, we will use the single precision float type for the mot_float_type type.
        include_complex (boolean): if we include support for complex numbers

    Returns:
        str: defines the mot_float_type types, the epsilon and the MIN and MAX values.
    """
    if include_complex:
        with open(os.path.abspath(resource_filename('mot', 'data/opencl/complex.h')), 'r') as f:
            complex_number_support = f.read()
    else:
        complex_number_support = ''

    scipy_constants = '''
        #define MACHEP DBL_EPSILON
        #define MAXLOG log(DBL_MAX)
        #define LANCZOS_G 6.024680040776729583740234375 /* taken from Scipy */
        #define EULER 0.577215664901532860606512090082402431 /* Euler constant, from Scipy */
    '''

    if double_precision:
        return '''
            #if __OPENCL_VERSION__ <= CL_VERSION_1_1
                #pragma OPENCL EXTENSION cl_khr_fp64 : enable
            #endif

            #define PYOPENCL_DEFINE_CDOUBLE

            typedef double mot_float_type;
            typedef double2 mot_float_type2;
            typedef double4 mot_float_type4;
            typedef double8 mot_float_type8;
            typedef double16 mot_float_type16;

            #define MOT_EPSILON DBL_EPSILON
            #define MOT_MIN DBL_MIN
            #define MOT_MAX DBL_MAX
        ''' + scipy_constants + complex_number_support
    else:
        return '''
            #if __OPENCL_VERSION__ <= CL_VERSION_1_1
                #pragma OPENCL EXTENSION cl_khr_fp64 : enable
            #endif

            typedef float mot_float_type;
            typedef float2 mot_float_type2;
            typedef float4 mot_float_type4;
            typedef float8 mot_float_type8;
            typedef float16 mot_float_type16;

            #define MOT_EPSILON FLT_EPSILON
            #define MOT_MIN FLT_MIN
            #define MOT_MAX FLT_MAX
        ''' + scipy_constants + complex_number_support