code: function (celestialLocation, date) {
                  if (!celestialLocation) {
                      throw new ArgumentError(
                          Logger.logMessage(Logger.LEVEL_SEVERE, "SunPosition", "celestialToGeographic",
                              "missingCelestialLocation"));
                  }
                  if (date instanceof Date === false) {
                      throw new ArgumentError(
                          Logger.logMessage(Logger.LEVEL_SEVERE, "SunPosition", "celestialToGeographic", "missingDate"));
                  }
  
                  var julianDate = this.computeJulianDate(date);
  
                  //number of days (positive or negative) since Greenwich noon, Terrestrial Time, on 1 January 2000 (J2000.0)
                  var numDays = julianDate - 2451545;
  
                  //Greenwich Mean Sidereal Time
                  var GMST = WWMath.normalizeAngle360(280.46061837 + 360.98564736629 * numDays);
  
                  //Greenwich Hour Angle
                  var GHA = WWMath.normalizeAngle360(GMST - celestialLocation.rightAscension);
  
                  var longitude = Angle.normalizedDegreesLongitude(-GHA);
  
                  return {
                      latitude: celestialLocation.declination,
                      longitude: longitude
                  };
              }
docs: Converts from celestial coordinates (declination and right ascension) to geographic coordinates
  (latitude, longitude) for a given julian date
  @param {{declination: Number, rightAscension: Number}} celestialLocation
  @param {Date} date
  @throws {ArgumentError} if celestialLocation or julianDate are missing
  @return {{latitude: Number, longitude: Number}} the geographic location