docs: 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