docs: def arccosine(x, null=(-np.inf, np.inf)):
      '''
      arccosine(x) is equivalent to acos(x) except that it also works on sparse arrays.
  
      The optional argument null (default, (-numpy.inf, numpy.inf)) may be specified to indicate what
      value(s) should be assigned when x < -1 or x > 1. If only one number is given, then it is used
      for both values; otherwise the first value corresponds to <-1 and the second to >1.  If null is
      None, then an error is raised when invalid values are encountered.
      '''
      if sps.issparse(x): x = x.toarray()
      else:               x = np.asarray(x)
      try:    (nln,nlp) = null
      except Exception: (nln,nlp) = (null,null)
      ii = None if nln is None else np.where(x < -1)
      jj = None if nlp is None else np.where(x > 1)
      if ii: x[ii] = 0
      if jj: x[jj] = 0
      x = np.arccos(x)
      if ii: x[ii] = nln
      if jj: x[jj] = nlp
      return x