docs: def zdivide(a, b, null=0):
      '''
      zdivide(a, b) returns the quotient a / b as a numpy array object. Unlike numpy's divide function
        or a/b syntax, zdivide will thread over the earliest dimension possible; thus if a.shape is
        (4,2) and b.shape is 4, zdivide(a,b) is a equivalent to [ai*zinv(bi) for (ai,bi) in zip(a,b)].
  
      The optional argument null (default: 0) may be given to specify that zeros in the arary b should
      instead be replaced with the given value in the result. Note that if this value is not equal to
      0, then any sparse array passed as argument b must be reified.
  
      The zdivide function never raises an error due to divide-by-zero; if you desire this behavior,
      use the divide function instead.
  
      Note that zdivide(a,b, null=z) is not quite equivalent to a*zinv(b, null=z) unless z is 0; if z
      is not zero, then the same elements that are zet to z in zinv(b, null=z) are set to z in the
      result of zdivide(a,b, null=z) rather than the equivalent element of a times z.
      '''
      (a,b) = unbroadcast(a,b)
      return czdivide(a,b, null=null)