docs: @Reference(authors = "T. Vincenty", //
        title = "Direct and inverse solutions of geodesics on the ellipsoid with application of nested equations", //
        booktitle = "Survey Review 23:176", //
        url = "https://doi.org/10.1179/sre.1975.23.176.88", //
        bibkey = "doi:10.1179/sre.1975.23.176.88")
    public static double sphericalVincentyFormulaRad(double lat1, double lon1, double lat2, double lon2) {
      // Half delta longitude.
      final double dlnh = (lon1 > lon2) ? (lon1 - lon2) : (lon2 - lon1);
  
      // Spherical special case of Vincenty's formula - no iterations needed
      final DoubleWrapper tmp = new DoubleWrapper(); // To return cosine
      final double slat1 = sinAndCos(lat1, tmp), clat1 = tmp.value;
      final double slat2 = sinAndCos(lat2, tmp), clat2 = tmp.value;
      final double slond = sinAndCos(dlnh, tmp), clond = tmp.value;
      final double a = clat2 * slond;
      final double b = (clat1 * slat2) - (slat1 * clat2 * clond);
      return atan2(sqrt(a * a + b * b), slat1 * slat2 + clat1 * clat2 * clond);
    }