docs: def broadcast(func, composite_array, *args):
      """
      Broadcast an array function over a composite array
      """
      dic = {}
      dtypes = []
      for name in composite_array.dtype.names:
          dic[name] = func(composite_array[name], *args)
          dtypes.append((name, dic[name].dtype))
      res = numpy.zeros(dic[name].shape, numpy.dtype(dtypes))
      for name in dic:
          res[name] = dic[name]
      return res