The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
# -*- encoding: utf-8; indent-tabs-mode: nil -*-
#
#     Test script for DateTime::Event::Sunrise
#     Copyright (C) 2013 Ron Hill and Jean Forget
#
#     This program is distributed under the same terms as Perl 5.16.3:
#     GNU Public License version 1 or later and Perl Artistic License
#
#     You can find the text of the licenses in the F<LICENSE> file or at
#     L<http://www.perlfoundation.org/artistic_license_1_0>
#     and L<http://www.gnu.org/licenses/gpl-1.0.html>.
#
#     Here is the summary of GPL:
#
#     This program is free software; you can redistribute it and/or modify
#     it under the terms of the GNU General Public License as published by
#     the Free Software Foundation; either version 1, or (at your option)
#     any later version.
#
#     This program is distributed in the hope that it will be useful,
#     but WITHOUT ANY WARRANTY; without even the implied warranty of
#     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#     GNU General Public License for more details.
#
#     You should have received a copy of the GNU General Public License
#     along with this program; if not, write to the Free Software Foundation,
#     Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
#
use strict;
use POSIX qw(floor ceil);
use Test::More;
use DateTime;
use DateTime::Duration;
use DateTime::Event::Sunrise;

my @data = data();
plan tests => 2 * @data;
my $fudge = 2;

for  (@data) {
    my ($yyyy, $mm, $dd, $city, $ltd, $ltm, $ltc,  $lgd, $lgm, $lgc, $altitude, $upper_limb, $result)
         = $_ =~ /^(\d{4})\s+(\d\d?)\s+(\d\d?)
                   \s+(\w+)
                   \s+(\d+)\s+(\d+)\s+(\w)
                   \s+(\d+)\s+(\d+)\s+(\w)
                   \s+([-.0-9]+)
                   \s+([01])
                   \s+(.*)$/x;

    my ($lat, $long, $offset, $expected_rise_low, $expected_rise_high, $expected_set_low, $expected_set_high);
    if ($result =~ /sunrise: (\d\d):(\d\d):(\d\d)\s+sunset:\s+(\d\d):(\d\d):(\d\d)/) {
      my ($hh1, $mm1, $ss1, $hh2, $mm2, $ss2) = ($1, $2, $3, $4, $5, $6);
      $expected_rise_low  = DateTime->new(year => $yyyy, month => $mm, day => $dd) + DateTime::Duration->new(hours => $hh1, minutes => $mm1, seconds => $ss1 - $fudge);
      $expected_rise_high = DateTime->new(year => $yyyy, month => $mm, day => $dd) + DateTime::Duration->new(hours => $hh1, minutes => $mm1, seconds => $ss1 + $fudge);
      $expected_set_low   = DateTime->new(year => $yyyy, month => $mm, day => $dd) + DateTime::Duration->new(hours => $hh2, minutes => $mm2, seconds => $ss2 - $fudge);
      $expected_set_high  = DateTime->new(year => $yyyy, month => $mm, day => $dd) + DateTime::Duration->new(hours => $hh2, minutes => $mm2, seconds => $ss2 + $fudge);
    }
    if ( $ltc eq 'N' ) {
      $lat = sprintf("%.3f", $ltd + $ltm / 60);
    }
    elsif ( $ltc eq 'S' ) {
      $lat = sprintf("%.3f", -($ltd + $ltm / 60));
    }

    if ( $lgc eq 'E' ) {
      $long = sprintf("%.3f", $lgd + $lgm / 60);
    }
    elsif ( $lgc eq 'W' ) {
      $long = sprintf("%.3f", -($lgd + $lgm / 60));
    }

    if ( $long < 0 ) {
        $offset = DateTime::TimeZone::offset_as_string( ceil( $long / 15 ) * 60 * 60 );
    }
    elsif ( $long > 0 ) {
        $offset = DateTime::TimeZone::offset_as_string( floor( $long / 15 ) * 60 * 60 );
    }

    my $sunrise = DateTime::Event::Sunrise->new(
                longitude  => $long,
                latitude   => $lat,
                altitude   => $altitude,
                upper_limb => $upper_limb,
    );

    #my $dt = DateTime->new(year => $yyyy, month => $mm, day => $dd, time_zone => $offset);
    my $dt = DateTime->new(year => $yyyy, month => $mm, day => $dd);
    my $tmp_rise = $sunrise->sunrise_datetime($dt);
    my $tmp_set  = $sunrise->sunset_datetime ($dt);

    my $sun_rise = $tmp_rise->strftime("%H:%M");
    my $sun_set  = $tmp_set->strftime("%H:%M");

    ok( $tmp_rise >= $expected_rise_low && $tmp_rise <= $expected_rise_high, join ' ', "Sunrise for $city", $tmp_rise->ymd, $expected_rise_low->hms, $tmp_rise->hms, $expected_rise_high->hms, $upper_limb, $altitude);
    ok( $tmp_set  >= $expected_set_low  && $tmp_set  <= $expected_set_high,  join ' ', "Sunset  for $city", $tmp_set->ymd, $expected_set_low->hms, $tmp_set->hms, $expected_set_high->hms, $upper_limb, $altitude);

}

#
# The data below have been prepared by a C program which includes
# Paul Schlyter's code. Therefore, what is tested is the compatibility
# of the Perl code with the C code.
#
# See how this C program is generated in
# https://github.com/jforget/Astro-Sunrise/blob/master/util/mktest-04
#
# Why those locations?
# Greenwich because it is located on the eponymous prime meridian
# Reykjavik, because it is close to the Northern Arctic Circle, so it can be used to check polar night and midnight sun
# Quito because it is near the prime parallel, better known as "equator"
# El Hierro, because it is located on a former prime meridian
#
sub data {
  return split "\n", <<'DATA';
2013  1  1 Greenwich            51 28 N   0  0 E 10         0 sunrise: 09:50:02 sunset: 14:17:18
2013  1  1 Greenwich            51 28 N   0  0 E 10         1 sunrise: 09:46:41 sunset: 14:20:39
2013  1  1 Greenwich            51 28 N   0  0 E 0          0 sunrise: 08:12:14 sunset: 15:55:06
2013  1  1 Greenwich            51 28 N   0  0 E 0          1 sunrise: 08:10:00 sunset: 15:57:19
2013  1  1 Greenwich            51 28 N   0  0 E -0.583     0 sunrise: 08:07:28 sunset: 15:59:52
2013  1  1 Greenwich            51 28 N   0  0 E -0.583     1 sunrise: 08:05:16 sunset: 16:02:04
2013  1  1 Greenwich            51 28 N   0  0 E -0.833     0 sunrise: 08:05:26 sunset: 16:01:54
2013  1  1 Greenwich            51 28 N   0  0 E -0.833     1 sunrise: 08:03:15 sunset: 16:04:05
2013  1  1 Greenwich            51 28 N   0  0 E -12        0 sunrise: 06:42:43 sunset: 17:24:37
2013  1  1 Greenwich            51 28 N   0  0 E -12        1 sunrise: 06:40:50 sunset: 17:26:29
2013  1  1 Greenwich            51 28 N   0  0 E -18        0 sunrise: 06:02:08 sunset: 18:05:12
2013  1  1 Greenwich            51 28 N   0  0 E -18        1 sunrise: 06:00:20 sunset: 18:07:00
2013  1  1 Reykjavik            64  4 N  21 58 W 10         0 sunrise: 13:31:34 sunset: 13:31:34 polar night or midnight sun
2013  1  1 Reykjavik            64  4 N  21 58 W 10         1 sunrise: 13:31:34 sunset: 13:31:34 polar night or midnight sun
2013  1  1 Reykjavik            64  4 N  21 58 W 0          0 sunrise: 11:33:53 sunset: 15:29:14
2013  1  1 Reykjavik            64  4 N  21 58 W 0          1 sunrise: 11:28:31 sunset: 15:34:36
2013  1  1 Reykjavik            64  4 N  21 58 W -0.583     0 sunrise: 11:22:35 sunset: 15:40:32
2013  1  1 Reykjavik            64  4 N  21 58 W -0.583     1 sunrise: 11:17:37 sunset: 15:45:30
2013  1  1 Reykjavik            64  4 N  21 58 W -0.833     0 sunrise: 11:18:00 sunset: 15:45:07
2013  1  1 Reykjavik            64  4 N  21 58 W -0.833     1 sunrise: 11:13:11 sunset: 15:49:56
2013  1  1 Reykjavik            64  4 N  21 58 W -12        0 sunrise: 08:54:40 sunset: 18:08:27
2013  1  1 Reykjavik            64  4 N  21 58 W -12        1 sunrise: 08:51:52 sunset: 18:11:16
2013  1  1 Reykjavik            64  4 N  21 58 W -18        0 sunrise: 07:55:22 sunset: 19:07:46
2013  1  1 Reykjavik            64  4 N  21 58 W -18        1 sunrise: 07:52:47 sunset: 19:10:20
2013  1  1 Quito                 0 15 S  78 35 W 10         0 sunrise: 12:01:09 sunset: 22:35:03
2013  1  1 Quito                 0 15 S  78 35 W 10         1 sunrise: 11:59:58 sunset: 22:36:14
2013  1  1 Quito                 0 15 S  78 35 W 0          0 sunrise: 11:17:41 sunset: 23:18:31
2013  1  1 Quito                 0 15 S  78 35 W 0          1 sunrise: 11:16:30 sunset: 23:19:42
2013  1  1 Quito                 0 15 S  78 35 W -0.583     0 sunrise: 11:15:09 sunset: 23:21:03
2013  1  1 Quito                 0 15 S  78 35 W -0.583     1 sunrise: 11:13:58 sunset: 23:22:14
2013  1  1 Quito                 0 15 S  78 35 W -0.833     0 sunrise: 11:14:03 sunset: 23:22:08
2013  1  1 Quito                 0 15 S  78 35 W -0.833     1 sunrise: 11:12:53 sunset: 23:23:19
2013  1  1 Quito                 0 15 S  78 35 W -12        0 sunrise: 10:25:28 sunset: 24:10:44
2013  1  1 Quito                 0 15 S  78 35 W -12        1 sunrise: 10:24:17 sunset: 24:11:55
2013  1  1 Quito                 0 15 S  78 35 W -18        0 sunrise: 09:59:13 sunset: 24:36:59
2013  1  1 Quito                 0 15 S  78 35 W -18        1 sunrise: 09:58:02 sunset: 24:38:10
2013  1  1 El_Hierro            27 44 N  18  3 W 10         0 sunrise: 08:59:14 sunset: 17:32:33
2013  1  1 El_Hierro            27 44 N  18  3 W 10         1 sunrise: 08:57:46 sunset: 17:34:00
2013  1  1 El_Hierro            27 44 N  18  3 W 0          0 sunrise: 08:07:22 sunset: 18:24:25
2013  1  1 El_Hierro            27 44 N  18  3 W 0          1 sunrise: 08:06:00 sunset: 18:25:47
2013  1  1 El_Hierro            27 44 N  18  3 W -0.583     0 sunrise: 08:04:26 sunset: 18:27:21
2013  1  1 El_Hierro            27 44 N  18  3 W -0.583     1 sunrise: 08:03:04 sunset: 18:28:42
2013  1  1 El_Hierro            27 44 N  18  3 W -0.833     0 sunrise: 08:03:11 sunset: 18:28:36
2013  1  1 El_Hierro            27 44 N  18  3 W -0.833     1 sunrise: 08:01:49 sunset: 18:29:58
2013  1  1 El_Hierro            27 44 N  18  3 W -12        0 sunrise: 07:08:28 sunset: 19:23:19
2013  1  1 El_Hierro            27 44 N  18  3 W -12        1 sunrise: 07:07:10 sunset: 19:24:37
2013  1  1 El_Hierro            27 44 N  18  3 W -18        0 sunrise: 06:39:53 sunset: 19:51:53
2013  1  1 El_Hierro            27 44 N  18  3 W -18        1 sunrise: 06:38:36 sunset: 19:53:10
2013  3 21 Greenwich            51 28 N   0  0 E 10         0 sunrise: 07:09:42 sunset: 17:04:32
2013  3 21 Greenwich            51 28 N   0  0 E 10         1 sunrise: 07:07:57 sunset: 17:06:17
2013  3 21 Greenwich            51 28 N   0  0 E 0          0 sunrise: 06:05:03 sunset: 18:09:11
2013  3 21 Greenwich            51 28 N   0  0 E 0          1 sunrise: 06:03:19 sunset: 18:10:54
2013  3 21 Greenwich            51 28 N   0  0 E -0.583     0 sunrise: 06:01:18 sunset: 18:12:56
2013  3 21 Greenwich            51 28 N   0  0 E -0.583     1 sunrise: 05:59:35 sunset: 18:14:39
2013  3 21 Greenwich            51 28 N   0  0 E -0.833     0 sunrise: 05:59:42 sunset: 18:14:32
2013  3 21 Greenwich            51 28 N   0  0 E -0.833     1 sunrise: 05:57:58 sunset: 18:16:15
2013  3 21 Greenwich            51 28 N   0  0 E -12        0 sunrise: 04:46:55 sunset: 19:27:18
2013  3 21 Greenwich            51 28 N   0  0 E -12        1 sunrise: 04:45:08 sunset: 19:29:06
2013  3 21 Greenwich            51 28 N   0  0 E -18        0 sunrise: 04:05:46 sunset: 20:08:28
2013  3 21 Greenwich            51 28 N   0  0 E -18        1 sunrise: 04:03:52 sunset: 20:10:22
2013  3 21 Reykjavik            64  4 N  21 58 W 10         0 sunrise: 09:04:39 sunset: 18:05:17
2013  3 21 Reykjavik            64  4 N  21 58 W 10         1 sunrise: 09:02:03 sunset: 18:07:53
2013  3 21 Reykjavik            64  4 N  21 58 W 0          0 sunrise: 07:31:22 sunset: 19:38:33
2013  3 21 Reykjavik            64  4 N  21 58 W 0          1 sunrise: 07:28:55 sunset: 19:41:00
2013  3 21 Reykjavik            64  4 N  21 58 W -0.583     0 sunrise: 07:26:02 sunset: 19:43:54
2013  3 21 Reykjavik            64  4 N  21 58 W -0.583     1 sunrise: 07:23:35 sunset: 19:46:21
2013  3 21 Reykjavik            64  4 N  21 58 W -0.833     0 sunrise: 07:23:45 sunset: 19:46:11
2013  3 21 Reykjavik            64  4 N  21 58 W -0.833     1 sunrise: 07:21:18 sunset: 19:48:38
2013  3 21 Reykjavik            64  4 N  21 58 W -12        0 sunrise: 05:37:19 sunset: 21:32:37
2013  3 21 Reykjavik            64  4 N  21 58 W -12        1 sunrise: 05:34:33 sunset: 21:35:23
2013  3 21 Reykjavik            64  4 N  21 58 W -18        0 sunrise: 04:29:59 sunset: 22:39:57
2013  3 21 Reykjavik            64  4 N  21 58 W -18        1 sunrise: 04:26:35 sunset: 22:43:20
2013  3 21 Quito                 0 15 S  78 35 W 10         0 sunrise: 12:01:24 sunset: 22:41:22
2013  3 21 Quito                 0 15 S  78 35 W 10         1 sunrise: 12:00:19 sunset: 22:42:26
2013  3 21 Quito                 0 15 S  78 35 W 0          0 sunrise: 11:21:23 sunset: 23:21:22
2013  3 21 Quito                 0 15 S  78 35 W 0          1 sunrise: 11:20:19 sunset: 23:22:27
2013  3 21 Quito                 0 15 S  78 35 W -0.583     0 sunrise: 11:19:04 sunset: 23:23:42
2013  3 21 Quito                 0 15 S  78 35 W -0.583     1 sunrise: 11:17:59 sunset: 23:24:47
2013  3 21 Quito                 0 15 S  78 35 W -0.833     0 sunrise: 11:18:04 sunset: 23:24:42
2013  3 21 Quito                 0 15 S  78 35 W -0.833     1 sunrise: 11:16:59 sunset: 23:25:47
2013  3 21 Quito                 0 15 S  78 35 W -12        0 sunrise: 10:33:23 sunset: 24:09:23
2013  3 21 Quito                 0 15 S  78 35 W -12        1 sunrise: 10:32:19 sunset: 24:10:27
2013  3 21 Quito                 0 15 S  78 35 W -18        0 sunrise: 10:09:23 sunset: 24:33:23
2013  3 21 Quito                 0 15 S  78 35 W -18        1 sunrise: 10:08:19 sunset: 24:34:27
2013  3 21 El_Hierro            27 44 N  18  3 W 10         0 sunrise: 08:03:38 sunset: 18:34:58
2013  3 21 El_Hierro            27 44 N  18  3 W 10         1 sunrise: 08:02:25 sunset: 18:36:11
2013  3 21 El_Hierro            27 44 N  18  3 W 0          0 sunrise: 07:18:23 sunset: 19:20:13
2013  3 21 El_Hierro            27 44 N  18  3 W 0          1 sunrise: 07:17:11 sunset: 19:21:25
2013  3 21 El_Hierro            27 44 N  18  3 W -0.583     0 sunrise: 07:15:45 sunset: 19:22:51
2013  3 21 El_Hierro            27 44 N  18  3 W -0.583     1 sunrise: 07:14:33 sunset: 19:24:03
2013  3 21 El_Hierro            27 44 N  18  3 W -0.833     0 sunrise: 07:14:38 sunset: 19:23:58
2013  3 21 El_Hierro            27 44 N  18  3 W -0.833     1 sunrise: 07:13:25 sunset: 19:25:11
2013  3 21 El_Hierro            27 44 N  18  3 W -12        0 sunrise: 06:24:01 sunset: 20:14:35
2013  3 21 El_Hierro            27 44 N  18  3 W -12        1 sunrise: 06:22:48 sunset: 20:15:48
2013  3 21 El_Hierro            27 44 N  18  3 W -18        0 sunrise: 05:56:35 sunset: 20:42:01
2013  3 21 El_Hierro            27 44 N  18  3 W -18        1 sunrise: 05:55:22 sunset: 20:43:14
2013  6 21 Greenwich            51 28 N   0  0 E 10         0 sunrise: 05:06:09 sunset: 18:57:30
2013  6 21 Greenwich            51 28 N   0  0 E 10         1 sunrise: 05:04:17 sunset: 18:59:22
2013  6 21 Greenwich            51 28 N   0  0 E 0          0 sunrise: 03:49:54 sunset: 20:13:45
2013  6 21 Greenwich            51 28 N   0  0 E 0          1 sunrise: 03:47:42 sunset: 20:15:56
2013  6 21 Greenwich            51 28 N   0  0 E -0.583     0 sunrise: 03:45:00 sunset: 20:18:39
2013  6 21 Greenwich            51 28 N   0  0 E -0.583     1 sunrise: 03:42:47 sunset: 20:20:52
2013  6 21 Greenwich            51 28 N   0  0 E -0.833     0 sunrise: 03:42:53 sunset: 20:20:46
2013  6 21 Greenwich            51 28 N   0  0 E -0.833     1 sunrise: 03:40:38 sunset: 20:23:00
2013  6 21 Greenwich            51 28 N   0  0 E -12        0 sunrise: 01:40:50 sunset: 22:22:48
2013  6 21 Greenwich            51 28 N   0  0 E -12        1 sunrise: 01:36:28 sunset: 22:27:11
2013  6 21 Greenwich            51 28 N   0  0 E -18        0 sunrise: 00:01:49 sunset: 24:01:49 polar night or midnight sun
2013  6 21 Greenwich            51 28 N   0  0 E -18        1 sunrise: 00:01:49 sunset: 24:01:49 polar night or midnight sun
2013  6 21 Reykjavik            64  4 N  21 58 W 10         0 sunrise: 05:40:30 sunset: 21:18:55
2013  6 21 Reykjavik            64  4 N  21 58 W 10         1 sunrise: 05:37:35 sunset: 21:21:49
2013  6 21 Reykjavik            64  4 N  21 58 W 0          0 sunrise: 03:17:28 sunset: 23:41:56
2013  6 21 Reykjavik            64  4 N  21 58 W 0          1 sunrise: 03:11:33 sunset: 23:47:52
2013  6 21 Reykjavik            64  4 N  21 58 W -0.583     0 sunrise: 03:03:50 sunset: 23:55:34
2013  6 21 Reykjavik            64  4 N  21 58 W -0.583     1 sunrise: 02:57:03 sunset: 24:02:21
2013  6 21 Reykjavik            64  4 N  21 58 W -0.833     0 sunrise: 02:57:23 sunset: 24:02:01
2013  6 21 Reykjavik            64  4 N  21 58 W -0.833     1 sunrise: 02:50:06 sunset: 24:09:19
2013  6 21 Reykjavik            64  4 N  21 58 W -12        0 sunrise: 01:29:42 sunset: 25:29:42 polar night or midnight sun
2013  6 21 Reykjavik            64  4 N  21 58 W -12        1 sunrise: 01:29:42 sunset: 25:29:42 polar night or midnight sun
2013  6 21 Reykjavik            64  4 N  21 58 W -18        0 sunrise: 01:29:42 sunset: 25:29:42 polar night or midnight sun
2013  6 21 Reykjavik            64  4 N  21 58 W -18        1 sunrise: 01:29:42 sunset: 25:29:42 polar night or midnight sun
2013  6 21 Quito                 0 15 S  78 35 W 10         0 sunrise: 12:00:17 sunset: 22:32:07
2013  6 21 Quito                 0 15 S  78 35 W 10         1 sunrise: 11:59:08 sunset: 22:33:16
2013  6 21 Quito                 0 15 S  78 35 W 0          0 sunrise: 11:16:38 sunset: 23:15:46
2013  6 21 Quito                 0 15 S  78 35 W 0          1 sunrise: 11:15:29 sunset: 23:16:55
2013  6 21 Quito                 0 15 S  78 35 W -0.583     0 sunrise: 11:14:06 sunset: 23:18:19
2013  6 21 Quito                 0 15 S  78 35 W -0.583     1 sunrise: 11:12:57 sunset: 23:19:27
2013  6 21 Quito                 0 15 S  78 35 W -0.833     0 sunrise: 11:13:00 sunset: 23:19:24
2013  6 21 Quito                 0 15 S  78 35 W -0.833     1 sunrise: 11:11:52 sunset: 23:20:33
2013  6 21 Quito                 0 15 S  78 35 W -12        0 sunrise: 10:24:15 sunset: 24:08:09
2013  6 21 Quito                 0 15 S  78 35 W -12        1 sunrise: 10:23:07 sunset: 24:09:18
2013  6 21 Quito                 0 15 S  78 35 W -18        0 sunrise: 09:57:56 sunset: 24:34:28
2013  6 21 Quito                 0 15 S  78 35 W -18        1 sunrise: 09:56:47 sunset: 24:35:38
2013  6 21 El_Hierro            27 44 N  18  3 W 10         0 sunrise: 07:10:48 sunset: 19:17:16
2013  6 21 El_Hierro            27 44 N  18  3 W 10         1 sunrise: 07:09:32 sunset: 19:18:32
2013  6 21 El_Hierro            27 44 N  18  3 W 0          0 sunrise: 06:21:20 sunset: 20:06:44
2013  6 21 El_Hierro            27 44 N  18  3 W 0          1 sunrise: 06:20:00 sunset: 20:08:04
2013  6 21 El_Hierro            27 44 N  18  3 W -0.583     0 sunrise: 06:18:23 sunset: 20:09:41
2013  6 21 El_Hierro            27 44 N  18  3 W -0.583     1 sunrise: 06:17:03 sunset: 20:11:01
2013  6 21 El_Hierro            27 44 N  18  3 W -0.833     0 sunrise: 06:17:07 sunset: 20:10:57
2013  6 21 El_Hierro            27 44 N  18  3 W -0.833     1 sunrise: 06:15:47 sunset: 20:12:17
2013  6 21 El_Hierro            27 44 N  18  3 W -12        0 sunrise: 05:18:16 sunset: 21:09:48
2013  6 21 El_Hierro            27 44 N  18  3 W -12        1 sunrise: 05:16:49 sunset: 21:11:15
2013  6 21 El_Hierro            27 44 N  18  3 W -18        0 sunrise: 04:44:08 sunset: 21:43:56
2013  6 21 El_Hierro            27 44 N  18  3 W -18        1 sunrise: 04:42:35 sunset: 21:45:29
2013  8 31 Greenwich            51 28 N   0  0 E 10         0 sunrise: 06:21:59 sunset: 17:38:31
2013  8 31 Greenwich            51 28 N   0  0 E 10         1 sunrise: 06:20:18 sunset: 17:40:12
2013  8 31 Greenwich            51 28 N   0  0 E 0          0 sunrise: 05:17:07 sunset: 18:43:23
2013  8 31 Greenwich            51 28 N   0  0 E 0          1 sunrise: 05:15:22 sunset: 18:45:08
2013  8 31 Greenwich            51 28 N   0  0 E -0.583     0 sunrise: 05:13:15 sunset: 18:47:15
2013  8 31 Greenwich            51 28 N   0  0 E -0.583     1 sunrise: 05:11:30 sunset: 18:49:00
2013  8 31 Greenwich            51 28 N   0  0 E -0.833     0 sunrise: 05:11:36 sunset: 18:48:54
2013  8 31 Greenwich            51 28 N   0  0 E -0.833     1 sunrise: 05:09:50 sunset: 18:50:40
2013  8 31 Greenwich            51 28 N   0  0 E -12        0 sunrise: 03:53:42 sunset: 20:06:48
2013  8 31 Greenwich            51 28 N   0  0 E -12        1 sunrise: 03:51:44 sunset: 20:08:46
2013  8 31 Greenwich            51 28 N   0  0 E -18        0 sunrise: 03:06:10 sunset: 20:54:20
2013  8 31 Greenwich            51 28 N   0  0 E -18        1 sunrise: 03:03:54 sunset: 20:56:36
2013  8 31 Reykjavik            64  4 N  21 58 W 10         0 sunrise: 07:50:06 sunset: 19:06:06
2013  8 31 Reykjavik            64  4 N  21 58 W 10         1 sunrise: 07:47:41 sunset: 19:08:31
2013  8 31 Reykjavik            64  4 N  21 58 W 0          0 sunrise: 06:16:55 sunset: 20:39:17
2013  8 31 Reykjavik            64  4 N  21 58 W 0          1 sunrise: 06:14:21 sunset: 20:41:51
2013  8 31 Reykjavik            64  4 N  21 58 W -0.583     0 sunrise: 06:11:14 sunset: 20:44:58
2013  8 31 Reykjavik            64  4 N  21 58 W -0.583     1 sunrise: 06:08:39 sunset: 20:47:33
2013  8 31 Reykjavik            64  4 N  21 58 W -0.833     0 sunrise: 06:08:47 sunset: 20:47:25
2013  8 31 Reykjavik            64  4 N  21 58 W -0.833     1 sunrise: 06:06:11 sunset: 20:50:01
2013  8 31 Reykjavik            64  4 N  21 58 W -12        0 sunrise: 04:00:45 sunset: 22:55:27
2013  8 31 Reykjavik            64  4 N  21 58 W -12        1 sunrise: 03:56:51 sunset: 22:59:21
2013  8 31 Reykjavik            64  4 N  21 58 W -18        0 sunrise: 01:28:06 sunset: 25:28:06 polar night or midnight sun
2013  8 31 Reykjavik            64  4 N  21 58 W -18        1 sunrise: 01:28:06 sunset: 25:28:06 polar night or midnight sun
2013  8 31 Quito                 0 15 S  78 35 W 10         0 sunrise: 11:55:06 sunset: 22:33:55
2013  8 31 Quito                 0 15 S  78 35 W 10         1 sunrise: 11:54:02 sunset: 22:35:00
2013  8 31 Quito                 0 15 S  78 35 W 0          0 sunrise: 11:14:40 sunset: 23:14:22
2013  8 31 Quito                 0 15 S  78 35 W 0          1 sunrise: 11:13:36 sunset: 23:15:26
2013  8 31 Quito                 0 15 S  78 35 W -0.583     0 sunrise: 11:12:18 sunset: 23:16:43
2013  8 31 Quito                 0 15 S  78 35 W -0.583     1 sunrise: 11:11:14 sunset: 23:17:47
2013  8 31 Quito                 0 15 S  78 35 W -0.833     0 sunrise: 11:11:18 sunset: 23:17:44
2013  8 31 Quito                 0 15 S  78 35 W -0.833     1 sunrise: 11:10:13 sunset: 23:18:48
2013  8 31 Quito                 0 15 S  78 35 W -12        0 sunrise: 10:26:08 sunset: 24:02:53
2013  8 31 Quito                 0 15 S  78 35 W -12        1 sunrise: 10:25:04 sunset: 24:03:58
2013  8 31 Quito                 0 15 S  78 35 W -18        0 sunrise: 10:01:52 sunset: 24:27:10
2013  8 31 Quito                 0 15 S  78 35 W -18        1 sunrise: 10:00:47 sunset: 24:28:14
2013  8 31 El_Hierro            27 44 N  18  3 W 10         0 sunrise: 07:40:03 sunset: 18:44:50
2013  8 31 El_Hierro            27 44 N  18  3 W 10         1 sunrise: 07:38:51 sunset: 18:46:01
2013  8 31 El_Hierro            27 44 N  18  3 W 0          0 sunrise: 06:54:30 sunset: 19:30:22
2013  8 31 El_Hierro            27 44 N  18  3 W 0          1 sunrise: 06:53:17 sunset: 19:31:35
2013  8 31 El_Hierro            27 44 N  18  3 W -0.583     0 sunrise: 06:51:50 sunset: 19:33:02
2013  8 31 El_Hierro            27 44 N  18  3 W -0.583     1 sunrise: 06:50:37 sunset: 19:34:15
2013  8 31 El_Hierro            27 44 N  18  3 W -0.833     0 sunrise: 06:50:41 sunset: 19:34:11
2013  8 31 El_Hierro            27 44 N  18  3 W -0.833     1 sunrise: 06:49:28 sunset: 19:35:24
2013  8 31 El_Hierro            27 44 N  18  3 W -12        0 sunrise: 05:58:50 sunset: 20:26:02
2013  8 31 El_Hierro            27 44 N  18  3 W -12        1 sunrise: 05:57:35 sunset: 20:27:17
2013  8 31 El_Hierro            27 44 N  18  3 W -18        0 sunrise: 05:30:17 sunset: 20:54:35
2013  8 31 El_Hierro            27 44 N  18  3 W -18        1 sunrise: 05:29:00 sunset: 20:55:52
2013  9 21 Greenwich            51 28 N   0  0 E 10         0 sunrise: 06:54:59 sunset: 16:51:01
2013  9 21 Greenwich            51 28 N   0  0 E 10         1 sunrise: 06:53:14 sunset: 16:52:45
2013  9 21 Greenwich            51 28 N   0  0 E 0          0 sunrise: 05:50:20 sunset: 17:55:39
2013  9 21 Greenwich            51 28 N   0  0 E 0          1 sunrise: 05:48:38 sunset: 17:57:21
2013  9 21 Greenwich            51 28 N   0  0 E -0.583     0 sunrise: 05:46:36 sunset: 17:59:24
2013  9 21 Greenwich            51 28 N   0  0 E -0.583     1 sunrise: 05:44:53 sunset: 18:01:06
2013  9 21 Greenwich            51 28 N   0  0 E -0.833     0 sunrise: 05:44:59 sunset: 18:01:00
2013  9 21 Greenwich            51 28 N   0  0 E -0.833     1 sunrise: 05:43:17 sunset: 18:02:42
2013  9 21 Greenwich            51 28 N   0  0 E -12        0 sunrise: 04:32:11 sunset: 19:13:48
2013  9 21 Greenwich            51 28 N   0  0 E -12        1 sunrise: 04:30:24 sunset: 19:15:35
2013  9 21 Greenwich            51 28 N   0  0 E -18        0 sunrise: 03:50:58 sunset: 19:55:01
2013  9 21 Greenwich            51 28 N   0  0 E -18        1 sunrise: 03:49:05 sunset: 19:56:54
2013  9 21 Reykjavik            64  4 N  21 58 W 10         0 sunrise: 08:49:55 sunset: 17:51:46
2013  9 21 Reykjavik            64  4 N  21 58 W 10         1 sunrise: 08:47:21 sunset: 17:54:20
2013  9 21 Reykjavik            64  4 N  21 58 W 0          0 sunrise: 07:16:41 sunset: 19:25:00
2013  9 21 Reykjavik            64  4 N  21 58 W 0          1 sunrise: 07:14:16 sunset: 19:27:25
2013  9 21 Reykjavik            64  4 N  21 58 W -0.583     0 sunrise: 07:11:21 sunset: 19:30:20
2013  9 21 Reykjavik            64  4 N  21 58 W -0.583     1 sunrise: 07:08:55 sunset: 19:32:46
2013  9 21 Reykjavik            64  4 N  21 58 W -0.833     0 sunrise: 07:09:04 sunset: 19:32:37
2013  9 21 Reykjavik            64  4 N  21 58 W -0.833     1 sunrise: 07:06:38 sunset: 19:35:03
2013  9 21 Reykjavik            64  4 N  21 58 W -12        0 sunrise: 05:22:33 sunset: 21:19:08
2013  9 21 Reykjavik            64  4 N  21 58 W -12        1 sunrise: 05:19:48 sunset: 21:21:53
2013  9 21 Reykjavik            64  4 N  21 58 W -18        0 sunrise: 04:15:03 sunset: 22:26:38
2013  9 21 Reykjavik            64  4 N  21 58 W -18        1 sunrise: 04:11:40 sunset: 22:30:01
2013  9 21 Quito                 0 15 S  78 35 W 10         0 sunrise: 11:47:16 sunset: 22:27:14
2013  9 21 Quito                 0 15 S  78 35 W 10         1 sunrise: 11:46:12 sunset: 22:28:18
2013  9 21 Quito                 0 15 S  78 35 W 0          0 sunrise: 11:07:15 sunset: 23:07:14
2013  9 21 Quito                 0 15 S  78 35 W 0          1 sunrise: 11:06:12 sunset: 23:08:18
2013  9 21 Quito                 0 15 S  78 35 W -0.583     0 sunrise: 11:04:55 sunset: 23:09:34
2013  9 21 Quito                 0 15 S  78 35 W -0.583     1 sunrise: 11:03:52 sunset: 23:10:38
2013  9 21 Quito                 0 15 S  78 35 W -0.833     0 sunrise: 11:03:55 sunset: 23:10:34
2013  9 21 Quito                 0 15 S  78 35 W -0.833     1 sunrise: 11:02:52 sunset: 23:11:38
2013  9 21 Quito                 0 15 S  78 35 W -12        0 sunrise: 10:19:15 sunset: 23:55:15
2013  9 21 Quito                 0 15 S  78 35 W -12        1 sunrise: 10:18:12 sunset: 23:56:18
2013  9 21 Quito                 0 15 S  78 35 W -18        0 sunrise: 09:55:15 sunset: 24:19:15
2013  9 21 Quito                 0 15 S  78 35 W -18        1 sunrise: 09:54:12 sunset: 24:20:18
2013  9 21 El_Hierro            27 44 N  18  3 W 10         0 sunrise: 07:49:21 sunset: 18:21:01
2013  9 21 El_Hierro            27 44 N  18  3 W 10         1 sunrise: 07:48:08 sunset: 18:22:13
2013  9 21 El_Hierro            27 44 N  18  3 W 0          0 sunrise: 07:04:06 sunset: 19:06:15
2013  9 21 El_Hierro            27 44 N  18  3 W 0          1 sunrise: 07:02:54 sunset: 19:07:27
2013  9 21 El_Hierro            27 44 N  18  3 W -0.583     0 sunrise: 07:01:28 sunset: 19:08:53
2013  9 21 El_Hierro            27 44 N  18  3 W -0.583     1 sunrise: 07:00:16 sunset: 19:10:05
2013  9 21 El_Hierro            27 44 N  18  3 W -0.833     0 sunrise: 07:00:20 sunset: 19:10:01
2013  9 21 El_Hierro            27 44 N  18  3 W -0.833     1 sunrise: 06:59:08 sunset: 19:11:13
2013  9 21 El_Hierro            27 44 N  18  3 W -12        0 sunrise: 06:09:44 sunset: 20:00:37
2013  9 21 El_Hierro            27 44 N  18  3 W -12        1 sunrise: 06:08:31 sunset: 20:01:50
2013  9 21 El_Hierro            27 44 N  18  3 W -18        0 sunrise: 05:42:18 sunset: 20:28:03
2013  9 21 El_Hierro            27 44 N  18  3 W -18        1 sunrise: 05:41:04 sunset: 20:29:17
2013 12 31 Greenwich            51 28 N   0  0 E 10         0 sunrise: 09:50:37 sunset: 14:15:32
2013 12 31 Greenwich            51 28 N   0  0 E 10         1 sunrise: 09:47:15 sunset: 14:18:54
2013 12 31 Greenwich            51 28 N   0  0 E 0          0 sunrise: 08:12:21 sunset: 15:53:48
2013 12 31 Greenwich            51 28 N   0  0 E 0          1 sunrise: 08:10:07 sunset: 15:56:02
2013 12 31 Greenwich            51 28 N   0  0 E -0.583     0 sunrise: 08:07:34 sunset: 15:58:35
2013 12 31 Greenwich            51 28 N   0  0 E -0.583     1 sunrise: 08:05:22 sunset: 16:00:47
2013 12 31 Greenwich            51 28 N   0  0 E -0.833     0 sunrise: 08:05:32 sunset: 16:00:37
2013 12 31 Greenwich            51 28 N   0  0 E -0.833     1 sunrise: 08:03:20 sunset: 16:02:49
2013 12 31 Greenwich            51 28 N   0  0 E -12        0 sunrise: 06:42:40 sunset: 17:23:29
2013 12 31 Greenwich            51 28 N   0  0 E -12        1 sunrise: 06:40:47 sunset: 17:25:22
2013 12 31 Greenwich            51 28 N   0  0 E -18        0 sunrise: 06:02:03 sunset: 18:04:06
2013 12 31 Greenwich            51 28 N   0  0 E -18        1 sunrise: 06:00:15 sunset: 18:05:54
2013 12 31 Reykjavik            64  4 N  21 58 W 10         0 sunrise: 13:30:58 sunset: 13:30:58 polar night or midnight sun
2013 12 31 Reykjavik            64  4 N  21 58 W 10         1 sunrise: 13:30:58 sunset: 13:30:58 polar night or midnight sun
2013 12 31 Reykjavik            64  4 N  21 58 W 0          0 sunrise: 11:35:19 sunset: 15:26:38
2013 12 31 Reykjavik            64  4 N  21 58 W 0          1 sunrise: 11:29:51 sunset: 15:32:05
2013 12 31 Reykjavik            64  4 N  21 58 W -0.583     0 sunrise: 11:23:51 sunset: 15:38:06
2013 12 31 Reykjavik            64  4 N  21 58 W -0.583     1 sunrise: 11:18:49 sunset: 15:43:08
2013 12 31 Reykjavik            64  4 N  21 58 W -0.833     0 sunrise: 11:19:12 sunset: 15:42:45
2013 12 31 Reykjavik            64  4 N  21 58 W -0.833     1 sunrise: 11:14:19 sunset: 15:47:37
2013 12 31 Reykjavik            64  4 N  21 58 W -12        0 sunrise: 08:55:02 sunset: 18:06:54
2013 12 31 Reykjavik            64  4 N  21 58 W -12        1 sunrise: 08:52:13 sunset: 18:09:43
2013 12 31 Reykjavik            64  4 N  21 58 W -18        0 sunrise: 07:55:38 sunset: 19:06:19
2013 12 31 Reykjavik            64  4 N  21 58 W -18        1 sunrise: 07:53:03 sunset: 19:08:53
2013 12 31 Quito                 0 15 S  78 35 W 10         0 sunrise: 12:00:35 sunset: 22:34:26
2013 12 31 Quito                 0 15 S  78 35 W 10         1 sunrise: 11:59:24 sunset: 22:35:37
2013 12 31 Quito                 0 15 S  78 35 W 0          0 sunrise: 11:17:05 sunset: 23:17:56
2013 12 31 Quito                 0 15 S  78 35 W 0          1 sunrise: 11:15:54 sunset: 23:19:07
2013 12 31 Quito                 0 15 S  78 35 W -0.583     0 sunrise: 11:14:33 sunset: 23:20:28
2013 12 31 Quito                 0 15 S  78 35 W -0.583     1 sunrise: 11:13:22 sunset: 23:21:39
2013 12 31 Quito                 0 15 S  78 35 W -0.833     0 sunrise: 11:13:28 sunset: 23:21:33
2013 12 31 Quito                 0 15 S  78 35 W -0.833     1 sunrise: 11:12:17 sunset: 23:22:44
2013 12 31 Quito                 0 15 S  78 35 W -12        0 sunrise: 10:24:50 sunset: 24:10:11
2013 12 31 Quito                 0 15 S  78 35 W -12        1 sunrise: 10:23:39 sunset: 24:11:22
2013 12 31 Quito                 0 15 S  78 35 W -18        0 sunrise: 09:58:34 sunset: 24:36:27
2013 12 31 Quito                 0 15 S  78 35 W -18        1 sunrise: 09:57:23 sunset: 24:37:39
2013 12 31 El_Hierro            27 44 N  18  3 W 10         0 sunrise: 08:58:57 sunset: 17:31:39
2013 12 31 El_Hierro            27 44 N  18  3 W 10         1 sunrise: 08:57:30 sunset: 17:33:06
2013 12 31 El_Hierro            27 44 N  18  3 W 0          0 sunrise: 08:07:02 sunset: 18:23:34
2013 12 31 El_Hierro            27 44 N  18  3 W 0          1 sunrise: 08:05:40 sunset: 18:24:56
2013 12 31 El_Hierro            27 44 N  18  3 W -0.583     0 sunrise: 08:04:06 sunset: 18:26:30
2013 12 31 El_Hierro            27 44 N  18  3 W -0.583     1 sunrise: 08:02:44 sunset: 18:27:52
2013 12 31 El_Hierro            27 44 N  18  3 W -0.833     0 sunrise: 08:02:50 sunset: 18:27:45
2013 12 31 El_Hierro            27 44 N  18  3 W -0.833     1 sunrise: 08:01:29 sunset: 18:29:07
2013 12 31 El_Hierro            27 44 N  18  3 W -12        0 sunrise: 07:08:05 sunset: 19:22:31
2013 12 31 El_Hierro            27 44 N  18  3 W -12        1 sunrise: 07:06:47 sunset: 19:23:49
2013 12 31 El_Hierro            27 44 N  18  3 W -18        0 sunrise: 06:39:29 sunset: 19:51:07
2013 12 31 El_Hierro            27 44 N  18  3 W -18        1 sunrise: 06:38:12 sunset: 19:52:24
DATA
}