docs: def uFuncConverter(variableIndex):
      '''A decorator to convert python functions to numpy universal functions
  
      A standard function of 1 variable is extended by a decorator to handle
      all values in a list, tuple or numpy array
  
      :param variableIndex: Specifies index for args to use as variable.
          This way the function can be used in classes as well as functions
      :type variableIndex: An positive integer
  
      **How to use:**
  
      In the example below uFuncConverter is used on the first parameter x:
      
      >>> @uFuncConverter(0)
      ... def test(x, y = 2):
      ...     return x+y
      ... 
      >>> x0 = 4
      >>> x1 = (1, 2, 3)
      >>> x2 = [2, 3, 4]
      >>> x3 = asarray(x1) + 2
      >>> print test(x0)
      6
      >>> print test(x1)
      [3 4 5]
      >>> print test(x2)
      [4 5 6]
      >>> print test(x3)
      [5 6 7]
  
      '''
      def wrap(func):
          '''Function to wrap around methods and functions
          '''
          def npWrapFunc(*args):
              '''Function specifying what the wrapping should do
              '''
              if len(args) >= variableIndex:
                  before = list(args[:variableIndex])
                  arguments = args[variableIndex]
                  after = list(args[variableIndex + 1:])
                  if isinstance(arguments, (int, float, Decimal)):
                      if variableIndex:
                          return func(*args)
                      else:
                          return func(args[0])
                  elif isinstance(arguments, (list, tuple, ndarray)):
                      if variableIndex:
                          return asarray([func(*(before + [x] + after)) for x in arguments])
                      else:
                          return asarray([func(x) for x in arguments])
              raise Exception('Error! Arguments (%s) not of proper format' % str(arguments))
          return npWrapFunc
      return wrap