docs: def time_func(func):
      """
      time a function decorator
      :param args: any args to pass to the function
      :paran kwargs: any key arguments to pass to the function
          (if 'operations' is in kwargs keys it is used to calculate operations per second)
  
      """
      def timed(*args, **kwargs):
          ts = time.time()
          result = func(*args, **kwargs)
          secs = time.time() - ts
          ops_ps = kwargs.get('operations', secs) / secs
          print ("finc{} took: {} {:2.4f} operations/sec={:5.2f}".format(func.__name__, seconds_to_DHMS(secs), secs, ops_ps))
          return result
      return timed