code: def separation_from(self, another_icrf):
          
          p1 = self.position.au
          p2 = another_icrf.position.au
          u1 = p1 / length_of(p1)
          u2 = p2 / length_of(p2)
          if u2.ndim > 1:
              if u1.ndim == 1:
                  u1 = u1[:,None]
          elif u1.ndim > 1:
              u2 = u2[:,None]
          c = dots(u1, u2)
          return Angle(radians=arccos(clip(c, -1.0, 1.0)))
docs: Return the angle between this position and another.
  
          >>> print(ICRF([1,0,0]).separation_from(ICRF([1,1,0])))
          45deg 00' 00.0"
  
          You can also compute separations across an array of positions.
  
          >>> directions = ICRF([[1,0,-1,0], [0,1,0,-1], [0,0,0,0]])
          >>> directions.separation_from(ICRF([0,1,0])).degrees
          array([ 90.,   0.,  90., 180.])