*Calulate the angular separation between two locations on the sky*

        Input precision should be respected.

        **Key Arguments:**

        **Return:**
            - ``angularSeparation`` -- total angular separation between coordinates (arcsec)
            - ``north`` -- north-south separation between coordinates (arcsec)
            - ``east`` -- east-west separation between coordinates (arcsec)

        See main class usage for details.

def get(
            self):
        """*Calulate the angular separation between two locations on the sky*

        Input precision should be respected.

        **Key Arguments:**

        **Return:**
            - ``angularSeparation`` -- total angular separation between coordinates (arcsec)
            - ``north`` -- north-south separation between coordinates (arcsec)
            - ``east`` -- east-west separation between coordinates (arcsec)

        See main class usage for details.
        """
        self.log.info('starting the ``get_angular_separation`` method')

        from astrocalc.coords import unit_conversion

        # CONSTANTS
        pi = (4 * math.atan(1.0))
        DEG_TO_RAD_FACTOR = pi / 180.0
        RAD_TO_DEG_FACTOR = 180.0 / pi

        converter = unit_conversion(
            log=self.log
        )
        dec1 = converter.dec_sexegesimal_to_decimal(
            dec=self.dec1
        )
        dec2 = converter.dec_sexegesimal_to_decimal(
            dec=self.dec2
        )
        ra1 = converter.ra_sexegesimal_to_decimal(
            ra=self.ra1
        )
        ra2 = converter.ra_sexegesimal_to_decimal(
            ra=self.ra2
        )

        # PRECISION TEST
        precision = 100
        vals = [dec1, dec2, ra1, ra2]
        for v in vals:
            thisLen = len(repr(v * 3600.).split(".")[-1])
            if thisLen < precision:
                precision = thisLen

        angularSeparation = None

        aa = (90.0 - dec1) * DEG_TO_RAD_FACTOR
        bb = (90.0 - dec2) * DEG_TO_RAD_FACTOR
        cc = (ra1 - ra2) * DEG_TO_RAD_FACTOR
        one = math.cos(aa) * math.cos(bb)
        two = math.sin(aa) * math.sin(bb) * math.cos(cc)

        # Because acos() returns NaN outside the ranges of -1 to +1
        # we need to check this.  Double precision decimal places
        # can give values like 1.0000000000002 which will throw an
        # exception.

        three = one + two
        if (three > 1.0):
            three = 1.0
        if (three < -1.0):
            three = -1.0

        # BE CAREFUL WITH PRECISION PROPAGATION
        thisVal = math.acos(three)
        angularSeparation = float(thisVal) * RAD_TO_DEG_FACTOR * 3600.0

        # Now work out N-S, E-W separations (object 1 relative to 2)
        north = -(dec1 - dec2) * 3600.0
        east = -(ra1 - ra2) * \
            math.cos((dec1 + dec2) * DEG_TO_RAD_FACTOR / 2.) * 3600.0

        angularSeparation = "%0.*f" % (precision, angularSeparation)
        north = "%0.*f" % (precision, north)
        east = "%0.*f" % (precision, east)

        self.log.info('completed the ``get_angular_separation`` method')
        return angularSeparation, north, east