Fix bug #18982. Thanks to John Darrington for investigation,
authorBen Pfaff <blp@gnu.org>
Fri, 10 Aug 2007 04:49:58 +0000 (04:49 +0000)
committerBen Pfaff <blp@gnu.org>
Fri, 10 Aug 2007 04:49:58 +0000 (04:49 +0000)
review, and verification of fix.

* formats/date-in.sh: Use a portable pseudo-random number
generator.

* formats/time-in.sh: Ditto.

tests/ChangeLog
tests/formats/date-in.sh
tests/formats/time-in.sh

index ef966a11a98ad3a242b8cd61bf1cf561c029c41f..1776bfadfc5d6666653e059bb86cdcc8bd705377 100644 (file)
@@ -1,3 +1,15 @@
+2007-08-09  Ben Pfaff  <blp@gnu.org>
+
+       Fix bug #18982.  Thanks to John Darrington for investigation,
+       review, and verification of fix.
+       
+       * formats/date-in.sh: Use a portable pseudo-random number
+       generator.
+       
+       * formats/time-in.sh: Ditto.
+
+       * formats/num-in.sh: Ditto.
+
 2007-08-03  Ben Pfaff  <blp@gnu.org>
 
        * command/rank.sh: Test RANK with noncontiguous groups of SPLIT
index e5314a390e0ad8e6e977404a74bd8d83a3526f01..67fe5799e4bf9fa57a79388e50bda31ec974a3b3 100755 (executable)
@@ -38,6 +38,44 @@ pass()
 
 cd $TEMPDIR
 
+activity="write PRNG fragment"
+cat > my-rand.pl <<'EOF'
+# This random number generator and the test for it below are drawn
+# from Park and Miller, "Random Number Generators: Good Ones are Hard
+# to Come By", Communications of the ACM 31:10 (October 1988).  It is
+# documented to function properly on systems with a 46-bit or longer
+# real significand, which includes systems that have 64-bit IEEE reals
+# (with 53-bit significand).  The test should catch any systems for
+# which this is not true, in any case.
+
+our ($seed) = 1;
+sub my_rand {
+  my ($modulo) = @_;
+  my ($a) = 16807;
+  my ($m) = 2147483647;
+  my ($tmp) = $a * $seed;
+  $seed = $tmp - $m * int ($tmp / $m);
+  return $seed % $modulo;
+}
+EOF
+if [ $? -ne 0 ] ; then no_result ; fi
+
+activity="write PRNG test program"
+cat > test-my-rand.pl <<'EOF'
+#! /usr/bin/perl
+use strict;
+use warnings;
+do 'my-rand.pl';
+my_rand (1) foreach 1...10000;
+our $seed;
+die $seed if $seed != 1043618065;
+EOF
+if [ $? -ne 0 ] ; then no_result ; fi
+
+activity="test PRNG"
+$PERL test-my-rand.pl
+if [ $? -ne 0 ] ; then no_result ; fi
+
 activity="write program to generate PSPP syntax and data"
 cat > date-in.pl <<'EOF'
 #! /usr/bin/perl
@@ -45,7 +83,7 @@ cat > date-in.pl <<'EOF'
 use strict;
 use warnings;
 
-our $next = 1;
+do 'my-rand.pl';
 
 my @formats = (['date', 'd-m-y'],
               ['adate', 'm-d-y'],
@@ -207,12 +245,6 @@ sub maybe_print_space {
 sub pick {
    return $_[int (my_rand ($#_ + 1))];
 }
-
-sub my_rand {
-    my ($modulo) = @_;
-    $next = ($next * 1103515245 + 12345) % (2**32);
-    return int ($next / 65536) % $modulo;
-}
 EOF
 if [ $? -ne 0 ] ; then no_result ; fi
 
@@ -646,9 +678,8 @@ diff -u datetime.out - <<EOF
     2071958400.00
     2071958400.00
     2071958400.00
-    3083547000.00
-    3083547000.00
-    3083547000.00
+    3083512200.00
+    3083512200.00
     3083512200.00
     3083512200.00
     3083547000.00
@@ -656,47 +687,47 @@ diff -u datetime.out - <<EOF
     3083547000.00
     3083547000.00
     3083512200.00
-    4221545340.00
-    4221635460.00
-    4221635460.00
-    4221635460.00
+    3083547000.00
     4221635460.00
     4221635460.00
+    4221545340.00
     4221635460.00
+    4221545340.00
     4221635460.00
     4221545340.00
+    4221635460.00
     4221545340.00
+    4221635460.00
     5859607620.00
     5859607620.00
-    5859515580.00
     5859607620.00
-    5859515580.00
     5859607620.00
+    5859515580.00
     5859607620.00
     5859607620.00
+    5859515580.00
     5859607620.00
     5859607620.00
     7472644440.00
     7472654760.00
-    7472644440.00
-    7472654760.00
-    7472654760.00
     7472654760.00
     7472654760.00
+    7472644440.00
     7472654760.00
     7472644440.00
+    7472644440.00
+    7472654760.00
     7472654760.00
-    8092666920.00
-    8092817880.00
     8092817880.00
     8092817880.00
     8092817880.00
     8092817880.00
     8092666920.00
     8092817880.00
-    8092666920.00
     8092817880.00
-   10114356960.00
+    8092817880.00
+    8092817880.00
+    8092817880.00
    10114356960.00
    10114302240.00
    10114302240.00
@@ -704,128 +735,129 @@ diff -u datetime.out - <<EOF
    10114356960.00
    10114356960.00
    10114356960.00
-   10114302240.00
    10114356960.00
+   10114356960.00
+   10114302240.00
+   10945873020.00
+   10945873020.00
+   10945873020.00
    10945986180.00
+   10945873020.00
    10945986180.00
+   10945873020.00
    10945986180.00
    10945986180.00
-   10945986180.00
-   10945986180.00
-   10945986180.00
-   10945986180.00
-   10945873020.00
    10945873020.00
-   11327628900.00
-   11327628900.00
    11327660700.00
+   11327628900.00
    11327660700.00
    11327660700.00
    11327628900.00
+   11327628900.00
    11327660700.00
    11327660700.00
    11327660700.00
    11327660700.00
    11376658140.00
-   11376609060.00
    11376658140.00
-   11376609060.00
    11376658140.00
    11376658140.00
-   11376609060.00
+   11376658140.00
+   11376658140.00
    11376609060.00
    11376658140.00
    11376658140.00
-   11391397380.00
+   11376609060.00
+   11391418620.00
    11391418620.00
-   11391397380.00
-   11391397380.00
    11391418620.00
    11391397380.00
    11391418620.00
    11391418620.00
    11391397380.00
+   11391418620.00
+   11391397380.00
    11391397380.00
    12920229900.00
    12920109300.00
    12920109300.00
+   12920109300.00
    12920229900.00
    12920229900.00
-   12920109300.00
    12920229900.00
    12920229900.00
    12920109300.00
-   12920229900.00
-   13044663000.00
+   12920109300.00
    13044508200.00
    13044663000.00
    13044663000.00
-   13044663000.00
    13044508200.00
    13044508200.00
    13044663000.00
    13044663000.00
    13044508200.00
+   13044663000.00
+   13044663000.00
+   11327628900.00
    11327660700.00
    11327660700.00
+   11327628900.00
    11327660700.00
    11327660700.00
-   11327660700.00
-   11327628900.00
    11327628900.00
    11327660700.00
    11327628900.00
-   11327660700.00
-   11376609060.00
+   11327628900.00
    11376658140.00
    11376658140.00
    11376658140.00
-   11376609060.00
-   11376609060.00
    11376658140.00
    11376658140.00
+   11376609060.00
+   11376609060.00
    11376658140.00
+   11376609060.00
    11376658140.00
    11391418620.00
-   11391418620.00
    11391397380.00
    11391418620.00
-   11391418620.00
-   11391418620.00
+   11391397380.00
+   11391397380.00
+   11391397380.00
    11391418620.00
    11391418620.00
    11391418620.00
    11391397380.00
-   12920109300.00
    12920229900.00
    12920229900.00
-   12920109300.00
-   12920109300.00
    12920229900.00
-   12920109300.00
    12920229900.00
    12920229900.00
+   12920229900.00
+   12920109300.00
+   12920229900.00
    12920109300.00
+   12920229900.00
    13044508200.00
    13044663000.00
+   13044508200.00
+   13044663000.00
+   13044663000.00
    13044663000.00
    13044663000.00
    13044663000.00
-   13044508200.00
-   13044508200.00
    13044663000.00
    13044508200.00
-   13044508200.00
-   14392420200.00
-   14392420200.00
    14392420200.00
    14392420200.00
    14392258200.00
-   14392420200.00
    14392258200.00
+   14392420200.00
    14392258200.00
    14392258200.00
    14392420200.00
+   14392420200.00
+   14392420200.00
    16149635760.00
    16149621840.00
    16149635760.00
@@ -833,9 +865,9 @@ diff -u datetime.out - <<EOF
    16149635760.00
    16149635760.00
    16149635760.00
-   16149635760.00
-   16149635760.00
    16149621840.00
+   16149621840.00
+   16149635760.00
     2071958400.00
     2071958400.00
     2071958400.00
@@ -847,115 +879,116 @@ diff -u datetime.out - <<EOF
     2071958400.00
     2071958400.00
     3083547038.00
-    3083547038.00
     3083512162.00
     3083512162.00
-    3083547038.00
     3083512162.00
     3083547038.00
+    3083512162.00
     3083547038.00
     3083547038.00
     3083547038.00
-    4221545305.00
+    3083512162.00
     4221635495.00
     4221635495.00
     4221545305.00
-    4221545305.00
     4221635495.00
-    4221545305.00
     4221635495.00
     4221635495.00
+    4221545305.00
+    4221545305.00
+    4221545305.00
     4221635495.00
-    5859515527.00
-    5859515527.00
     5859607673.00
     5859607673.00
     5859515527.00
     5859607673.00
-    5859515527.00
     5859607673.00
     5859607673.00
     5859607673.00
-    7472644440.00
-    7472644440.00
+    5859607673.00
+    5859515527.00
+    5859607673.00
     7472654760.00
     7472654760.00
     7472654760.00
     7472654760.00
     7472654760.00
-    7472644440.00
     7472654760.00
     7472654760.00
-    8092817891.00
+    7472644440.00
+    7472644440.00
+    7472654760.00
     8092817891.00
     8092666909.00
     8092817891.00
-    8092666909.00
     8092817891.00
     8092666909.00
-    8092666909.00
-    8092666909.00
-    8092666909.00
-   10114302235.00
+    8092817891.00
+    8092817891.00
+    8092817891.00
+    8092817891.00
+    8092817891.00
    10114356965.00
    10114356965.00
    10114302235.00
-   10114302235.00
    10114356965.00
    10114356965.00
-   10114302235.00
-   10114302235.00
+   10114356965.00
+   10114356965.00
+   10114356965.00
+   10114356965.00
    10114356965.00
    10945986229.00
    10945986229.00
+   10945872971.00
    10945986229.00
+   10945872971.00
    10945986229.00
    10945986229.00
    10945986229.00
    10945986229.00
    10945986229.00
-   10945872971.00
-   10945872971.00
    11327628891.00
    11327660709.00
    11327660709.00
-   11327628891.00
+   11327660709.00
+   11327660709.00
    11327660709.00
    11327628891.00
    11327628891.00
    11327660709.00
    11327628891.00
-   11327628891.00
-   11376658167.00
-   11376658167.00
-   11376658167.00
-   11376658167.00
-   11376658167.00
    11376658167.00
    11376609033.00
+   11376609033.00
+   11376609033.00
    11376658167.00
+   11376609033.00
    11376658167.00
+   11376609033.00
+   11376609033.00
    11376658167.00
    11391397328.00
+   11391418672.00
    11391397328.00
    11391418672.00
+   11391397328.00
+   11391397328.00
    11391418672.00
    11391418672.00
-   11391397328.00
    11391418672.00
-   11391397328.00
    11391418672.00
-   11391397328.00
    12920229944.00
    12920229944.00
    12920109256.00
    12920109256.00
    12920229944.00
-   12920229944.00
-   12920229944.00
+   12920109256.00
    12920109256.00
    12920229944.00
    12920229944.00
+   12920109256.00
+   13044663057.00
    13044508143.00
    13044663057.00
    13044663057.00
@@ -964,76 +997,75 @@ diff -u datetime.out - <<EOF
    13044663057.00
    13044663057.00
    13044508143.00
-   13044508143.00
-   13044508143.00
-   11327660709.00
+   13044663057.00
    11327660709.00
    11327660709.00
+   11327628891.00
    11327660709.00
    11327628891.00
    11327628891.00
    11327660709.00
    11327660709.00
    11327660709.00
-   11327660709.00
-   11376609033.00
-   11376609033.00
-   11376658167.00
+   11327628891.00
    11376658167.00
    11376658167.00
    11376609033.00
-   11376658167.00
+   11376609033.00
+   11376609033.00
    11376658167.00
    11376609033.00
+   11376658167.00
    11376609033.00
+   11376658167.00
+   11391418672.00
    11391418672.00
-   11391397328.00
-   11391397328.00
-   11391397328.00
    11391418672.00
    11391397328.00
-   11391397328.00
+   11391418672.00
+   11391418672.00
    11391397328.00
    11391418672.00
    11391418672.00
-   12920109256.00
+   11391418672.00
+   12920229944.00
    12920229944.00
    12920229944.00
-   12920109256.00
    12920109256.00
    12920229944.00
    12920229944.00
+   12920229944.00
    12920109256.00
-   12920109256.00
-   12920109256.00
-   13044508143.00
+   12920229944.00
+   12920229944.00
    13044508143.00
    13044663057.00
    13044663057.00
    13044663057.00
-   13044663057.00
-   13044663057.00
+   13044508143.00
    13044663057.00
    13044508143.00
    13044508143.00
-   14392420204.00
-   14392258196.00
-   14392258196.00
+   13044663057.00
+   13044508143.00
    14392420204.00
    14392420204.00
    14392258196.00
    14392420204.00
    14392420204.00
+   14392258196.00
+   14392258196.00
    14392420204.00
    14392258196.00
+   14392420204.00
+   16149621789.00
    16149635811.00
+   16149621789.00
    16149635811.00
    16149635811.00
    16149621789.00
    16149621789.00
    16149635811.00
-   16149635811.00
-   16149635811.00
    16149621789.00
    16149635811.00
 EOF
index da64ff85f7ff9e7fb61b6fe096a36f6651ce607c..b842e74bd6a72d90a20a68006d756848d878b13e 100755 (executable)
@@ -38,6 +38,44 @@ pass()
 
 cd $TEMPDIR
 
+activity="write PRNG fragment"
+cat > my-rand.pl <<'EOF'
+# This random number generator and the test for it below are drawn
+# from Park and Miller, "Random Number Generators: Good Ones are Hard
+# to Come By", Communications of the ACM 31:10 (October 1988).  It is
+# documented to function properly on systems with a 46-bit or longer
+# real significand, which includes systems that have 64-bit IEEE reals
+# (with 53-bit significand).  The test should catch any systems for
+# which this is not true, in any case.
+
+our ($seed) = 1;
+sub my_rand {
+  my ($modulo) = @_;
+  my ($a) = 16807;
+  my ($m) = 2147483647;
+  my ($tmp) = $a * $seed;
+  $seed = $tmp - $m * int ($tmp / $m);
+  return $seed % $modulo;
+}
+EOF
+if [ $? -ne 0 ] ; then no_result ; fi
+
+activity="write PRNG test program"
+cat > test-my-rand.pl <<'EOF'
+#! /usr/bin/perl
+use strict;
+use warnings;
+do 'my-rand.pl';
+my_rand (1) foreach 1...10000;
+our $seed;
+die $seed if $seed != 1043618065;
+EOF
+if [ $? -ne 0 ] ; then no_result ; fi
+
+activity="test PRNG"
+$PERL test-my-rand.pl
+if [ $? -ne 0 ] ; then no_result ; fi
+
 activity="write program to generate PSPP syntax and data"
 cat > time-in.pl <<'EOF'
 #! /usr/bin/perl
@@ -45,7 +83,7 @@ cat > time-in.pl <<'EOF'
 use strict;
 use warnings;
 
-our $next = 1;
+do 'my-rand.pl';
 
 my @formats = (["time", "+H:M", "+H:M:S"],
               ["dtime", "+D H:M", "+D H:M:S"]);
@@ -123,12 +161,6 @@ sub print_time_with_template {
 sub pick {
    return $_[int (my_rand ($#_ + 1))];
 }
-
-sub my_rand {
-    my ($modulo) = @_;
-    $next = ($next * 1103515245 + 12345) % (2**32);
-    return int ($next / 65536) % $modulo;
-}
 EOF
 if [ $? -ne 0 ] ; then no_result ; fi
 
@@ -152,147 +184,147 @@ diff -u time.out - <<EOF
               .00
               .00
               .00
-        103800.00
        -103800.00
         103800.00
         103800.00
-        103800.00
+       -103800.00
         103800.00
        -103800.00
         103800.00
+        103800.00
        -103800.00
         103800.00
         477060.00
         477060.00
-       -477060.00
         477060.00
         477060.00
+       -477060.00
+        477060.00
         477060.00
         477060.00
-       -477060.00
         477060.00
        -477060.00
-        -46020.00
-         46020.00
          46020.00
         -46020.00
-         46020.00
+        -46020.00
         -46020.00
          46020.00
          46020.00
         -46020.00
          46020.00
-        264360.00
-        264360.00
-        264360.00
-        264360.00
+         46020.00
+        -46020.00
         264360.00
         264360.00
        -264360.00
        -264360.00
         264360.00
+       -264360.00
         264360.00
+       -264360.00
+       -264360.00
+       -264360.00
+        161880.00
         161880.00
-       -161880.00
-       -161880.00
         161880.00
         161880.00
         161880.00
+       -161880.00
         161880.00
         161880.00
         161880.00
        -161880.00
-      -1064160.00
        1064160.00
        1064160.00
        1064160.00
        1064160.00
        1064160.00
-      -1064160.00
        1064160.00
       -1064160.00
        1064160.00
-      -4549380.00
+       1064160.00
+       1064160.00
       -4549380.00
        4549380.00
-      -4549380.00
        4549380.00
        4549380.00
-      -4549380.00
+       4549380.00
+       4549380.00
        4549380.00
       -4549380.00
-      -4549380.00
+       4549380.00
+       4549380.00
+        620700.00
        -620700.00
         620700.00
         620700.00
+       -620700.00
         620700.00
        -620700.00
        -620700.00
         620700.00
         620700.00
-        620700.00
-       -620700.00
-         24540.00
          24540.00
-        -24540.00
-        -24540.00
-        -24540.00
-        -24540.00
         -24540.00
          24540.00
-        -24540.00
          24540.00
+         24540.00
+         24540.00
+         24540.00
+         24540.00
+         24540.00
+         24540.00
+      -1738620.00
+       1738620.00
        1738620.00
        1738620.00
        1738620.00
        1738620.00
-      -1738620.00
        1738620.00
        1738620.00
        1738620.00
-      -1738620.00
        1738620.00
       48012300.00
+     -48012300.00
+     -48012300.00
+      48012300.00
+      48012300.00
       48012300.00
       48012300.00
       48012300.00
-     -48012300.00
       48012300.00
-     -48012300.00
-     -48012300.00
-     -48012300.00
       48012300.00
       10445400.00
+     -10445400.00
+     -10445400.00
       10445400.00
       10445400.00
       10445400.00
      -10445400.00
       10445400.00
-     -10445400.00
       10445400.00
      -10445400.00
-      10445400.00
          15900.00
          15900.00
         -15900.00
          15900.00
+        -15900.00
+        -15900.00
          15900.00
          15900.00
          15900.00
-        -15900.00
          15900.00
-        -15900.00
         283740.00
        -283740.00
         283740.00
         283740.00
-       -283740.00
-       -283740.00
+        283740.00
        -283740.00
         283740.00
         283740.00
        -283740.00
-       -442620.00
+        283740.00
+        442620.00
         442620.00
         442620.00
         442620.00
@@ -302,46 +334,46 @@ diff -u time.out - <<EOF
         442620.00
         442620.00
        -442620.00
-        -60300.00
          60300.00
          60300.00
-        -60300.00
-        -60300.00
+         60300.00
+         60300.00
+         60300.00
         -60300.00
         -60300.00
          60300.00
         -60300.00
-         60300.00
-       -163800.00
+        -60300.00
         163800.00
        -163800.00
-        163800.00
-        163800.00
+       -163800.00
        -163800.00
         163800.00
         163800.00
         163800.00
         163800.00
-        945000.00
+       -163800.00
+        163800.00
         945000.00
        -945000.00
        -945000.00
-        945000.00
        -945000.00
         945000.00
         945000.00
         945000.00
+       -945000.00
+        945000.00
         945000.00
       -1907760.00
+       1907760.00
       -1907760.00
        1907760.00
+      -1907760.00
        1907760.00
        1907760.00
-      -1907760.00
-      -1907760.00
-      -1907760.00
        1907760.00
        1907760.00
+      -1907760.00
               .00
               .00
               .00
@@ -353,195 +385,195 @@ diff -u time.out - <<EOF
               .00
               .00
         103839.00
-        103839.00
+        103838.68
        -103838.70
-       -103839.00
-        103839.00
-        103839.00
        -103838.68
-        103839.00
-       -103838.70
+        103838.70
         103838.68
+       -103839.00
+        103838.68
+        103838.70
+       -103839.00
+        477095.82
         477096.00
         477096.00
-        477096.00
-       -477096.00
-       -477096.00
-       -477096.00
-       -477096.00
-        477095.80
-        477095.80
+        477095.82
+        477095.82
+        477095.82
         477095.80
-         46073.41
-         46073.00
+       -477095.80
+        477095.82
+       -477095.82
         -46073.00
-         46073.41
-         46073.41
-         46073.40
+        -46073.40
          46073.00
-        -46073.41
-         46073.41
          46073.40
-       -264361.00
-        264361.00
+         46073.40
+         46073.00
+        -46073.00
+         46073.00
+         46073.00
+         46073.00
+        264360.69
        -264360.70
+        264361.00
         264360.70
+        264360.69
         264360.70
-       -264361.00
-        264360.70
+        264361.00
         264360.70
        -264361.00
         264361.00
-        161891.20
-        161891.19
-        161891.00
-        161891.19
         161891.00
+       -161891.20
+       -161891.00
         161891.00
+       -161891.00
         161891.20
-        161891.00
-        161891.19
+       -161891.20
+       -161891.20
         161891.20
+       -161891.19
       -1064166.00
-       1064166.00
-       1064166.00
        1064165.98
-      -1064165.98
+      -1064166.00
       -1064166.00
       -1064165.98
        1064166.00
-       1064165.98
        1064166.00
+      -1064166.00
+      -1064165.98
+       1064166.00
+       4549429.00
        4549429.27
-      -4549429.00
-       4549429.30
-      -4549429.00
+       4549429.27
+      -4549429.30
        4549429.00
+      -4549429.00
        4549429.00
-      -4549429.27
        4549429.27
        4549429.00
-       4549429.00
-       -620709.24
-       -620709.00
+       4549429.30
         620709.00
-        620709.20
-       -620709.00
-       -620709.20
-        620709.24
        -620709.24
+        620709.24
+        620709.24
         620709.24
         620709.20
-        -24567.90
+       -620709.24
+        620709.20
+        620709.24
+        620709.24
+         24567.90
          24567.89
+         24567.90
          24568.00
+         24567.90
          24568.00
-        -24568.00
          24568.00
         -24567.90
-         24568.00
          24567.90
          24568.00
-      -1738673.00
-       1738672.60
-      -1738672.60
-       1738672.60
        1738672.56
        1738673.00
+      -1738672.60
+      -1738672.56
+       1738673.00
        1738673.00
        1738673.00
-      -1738673.00
-       1738672.56
-     -48012344.00
-      48012344.00
-      48012344.00
-     -48012344.12
+       1738672.60
+      -1738672.56
+       1738672.60
      -48012344.10
+      48012344.12
+     -48012344.10
+     -48012344.00
+     -48012344.00
       48012344.00
+     -48012344.00
+     -48012344.00
+     -48012344.00
       48012344.00
-      48012344.10
-      48012344.00
-      48012344.12
-     -10445457.30
+      10445457.27
       10445457.00
       10445457.30
       10445457.00
       10445457.27
-     -10445457.00
       10445457.00
-     -10445457.27
-      10445457.30
       10445457.27
+      10445457.00
+      10445457.00
+     -10445457.30
+        -15909.98
+         15910.00
         -15910.00
          15910.00
+        -15909.98
          15910.00
         -15909.98
          15909.98
-         15909.98
-        -15910.00
-        -15909.98
          15910.00
-         15910.00
-       -283767.00
-        283767.00
+         15909.98
        -283767.00
         283767.20
-        283767.24
-       -283767.00
-       -283767.00
         283767.20
         283767.00
-       -283767.20
-        442672.13
-       -442672.13
-        442672.10
+       -283767.00
+        283767.00
+        283767.24
+        283767.00
+        283767.24
+        283767.00
+       -442672.00
+        442672.13
+        442672.00
+        442672.13
+        442672.00
+        442672.00
         442672.00
-        442672.10
         442672.00
        -442672.00
-       -442672.10
         442672.13
-       -442672.13
-         60344.40
-         60344.40
-         60344.40
-         60344.40
-        -60344.35
-         60344.35
-        -60344.35
+        -60344.40
+        -60344.00
          60344.00
+         60344.35
          60344.00
+         60344.40
+         60344.40
+        -60344.00
          60344.00
-        163857.32
-       -163857.30
-        163857.30
-       -163857.32
+         60344.40
         163857.00
-        163857.32
-       -163857.32
         163857.00
-        163857.32
+        163857.00
+        163857.00
+        163857.30
+       -163857.30
+        163857.30
+       -163857.00
        -163857.00
+        163857.30
+        945004.30
         945004.00
+        945004.27
         945004.30
         945004.30
         945004.00
-        945004.00
         945004.30
         945004.00
-        945004.27
-       -945004.00
         945004.00
+        945004.00
+       1907811.00
+       1907811.00
       -1907811.00
+       1907811.18
        1907811.20
        1907811.00
       -1907811.00
-       1907811.00
        1907811.18
-       1907811.20
-      -1907811.20
       -1907811.00
-       1907811.20
+      -1907811.00
 EOF
 if [ $? -ne 0 ] ; then fail ; fi
 
@@ -560,13 +592,14 @@ diff -u dtime.out - <<EOF
         103800.00
         103800.00
        -103800.00
-       -103800.00
-        103800.00
-        103800.00
         103800.00
         103800.00
+       -103800.00
         103800.00
+       -103800.00
         103800.00
+       -103800.00
+        477060.00
         477060.00
         477060.00
         477060.00
@@ -576,29 +609,27 @@ diff -u dtime.out - <<EOF
        -477060.00
        -477060.00
         477060.00
-        477060.00
-        -46020.00
-         46020.00
-         46020.00
          46020.00
          46020.00
          46020.00
          46020.00
+        -46020.00
+        -46020.00
         -46020.00
          46020.00
          46020.00
-       -264360.00
-       -264360.00
-        264360.00
-       -264360.00
+         46020.00
         264360.00
         264360.00
        -264360.00
         264360.00
         264360.00
         264360.00
-        161880.00
-        161880.00
+        264360.00
+       -264360.00
+       -264360.00
+       -264360.00
+       -161880.00
        -161880.00
         161880.00
         161880.00
@@ -607,27 +638,27 @@ diff -u dtime.out - <<EOF
         161880.00
        -161880.00
         161880.00
-      -1064160.00
-      -1064160.00
+       -161880.00
+       1064160.00
        1064160.00
-      -1064160.00
-      -1064160.00
        1064160.00
        1064160.00
        1064160.00
        1064160.00
       -1064160.00
-       4549380.00
+       1064160.00
+       1064160.00
+       1064160.00
       -4549380.00
        4549380.00
+      -4549380.00
+      -4549380.00
+      -4549380.00
        4549380.00
        4549380.00
        4549380.00
        4549380.00
        4549380.00
-      -4549380.00
-      -4549380.00
-       -620700.00
        -620700.00
         620700.00
         620700.00
@@ -636,38 +667,39 @@ diff -u dtime.out - <<EOF
         620700.00
         620700.00
        -620700.00
+        620700.00
         620700.00
         -24540.00
          24540.00
          24540.00
-        -24540.00
          24540.00
         -24540.00
          24540.00
          24540.00
         -24540.00
          24540.00
-      -1738620.00
+        -24540.00
        1738620.00
        1738620.00
        1738620.00
       -1738620.00
+      -1738620.00
       -1738620.00
        1738620.00
        1738620.00
        1738620.00
        1738620.00
       48012300.00
-     -48012300.00
-      48012300.00
-      48012300.00
-     -48012300.00
       48012300.00
       48012300.00
       48012300.00
       48012300.00
+     -48012300.00
+     -48012300.00
       48012300.00
-      10445400.00
+     -48012300.00
+     -48012300.00
+     -10445400.00
       10445400.00
      -10445400.00
       10445400.00
@@ -682,71 +714,71 @@ diff -u dtime.out - <<EOF
          15900.00
          15900.00
          15900.00
-         15900.00
         -15900.00
          15900.00
          15900.00
-        -15900.00
+         15900.00
+         15900.00
+       -283740.00
         283740.00
+       -283740.00
        -283740.00
         283740.00
         283740.00
         283740.00
-       -283740.00
         283740.00
         283740.00
        -283740.00
-        283740.00
-        442620.00
-        442620.00
-        442620.00
-        442620.00
-        442620.00
         442620.00
+       -442620.00
+       -442620.00
         442620.00
         442620.00
+       -442620.00
+       -442620.00
+       -442620.00
         442620.00
         442620.00
          60300.00
-         60300.00
-        -60300.00
         -60300.00
          60300.00
-        -60300.00
-        -60300.00
          60300.00
-        -60300.00
-        -60300.00
-        163800.00
-       -163800.00
-        163800.00
+         60300.00
+         60300.00
+         60300.00
+         60300.00
+         60300.00
+         60300.00
         163800.00
         163800.00
+       -163800.00
         163800.00
+       -163800.00
+       -163800.00
+       -163800.00
         163800.00
         163800.00
        -163800.00
-        163800.00
-       -945000.00
-       -945000.00
         945000.00
         945000.00
         945000.00
         945000.00
+       -945000.00
         945000.00
         945000.00
         945000.00
         945000.00
+       -945000.00
+      -1907760.00
        1907760.00
        1907760.00
        1907760.00
+      -1907760.00
+      -1907760.00
+      -1907760.00
        1907760.00
-       1907760.00
-       1907760.00
-       1907760.00
-       1907760.00
-       1907760.00
-       1907760.00
+      -1907760.00
+      -1907760.00
               .00
               .00
               .00
@@ -757,196 +789,196 @@ diff -u dtime.out - <<EOF
               .00
               .00
               .00
-       -103839.00
         103838.70
-        103839.00
         103838.70
         103839.00
         103838.68
-       -103838.68
         103838.70
-        103838.68
+        103839.00
         103838.70
-       -477096.00
-        477096.00
+       -103839.00
+        103839.00
+        103839.00
+        477095.80
+        477095.80
+       -477095.80
+        477095.82
+        477095.82
         477095.82
-        477096.00
        -477095.82
-       -477096.00
         477095.82
-        477095.80
         477096.00
-        477095.82
-         46073.00
-         46073.40
-        -46073.40
+       -477096.00
+        -46073.00
          46073.00
-         46073.41
         -46073.00
+         46073.41
          46073.00
+         46073.40
          46073.00
+         46073.41
+         46073.41
         -46073.00
-        -46073.00
-        264361.00
         264360.70
-        264361.00
         264360.70
-       -264361.00
         264360.69
-        264360.70
+        264361.00
+       -264360.70
         264360.69
        -264360.70
-       -264360.69
-        161891.20
-        161891.00
-        161891.20
-        161891.00
-       -161891.00
+        264360.69
+       -264361.00
+        264360.69
         161891.00
+       -161891.20
+       -161891.19
+        161891.19
         161891.00
+        161891.20
+        161891.20
         161891.00
         161891.00
-        161891.19
-      -1064166.00
+        161891.20
       -1064165.98
+       1064166.00
+       1064166.00
        1064166.00
        1064165.98
-      -1064166.00
-       1064165.98
-      -1064166.00
        1064166.00
-      -1064166.00
        1064166.00
-       4549429.00
+      -1064165.98
+       1064165.98
+      -1064166.00
+       4549429.27
+       4549429.27
+       4549429.27
        4549429.27
        4549429.00
        4549429.27
+      -4549429.27
+       4549429.00
        4549429.27
-       4549429.30
        4549429.27
-      -4549429.00
-       4549429.30
-       4549429.30
-        620709.24
-        620709.00
        -620709.00
-        620709.24
-       -620709.00
-       -620709.24
-       -620709.24
         620709.20
+        620709.00
+       -620709.20
+       -620709.24
        -620709.00
+        620709.00
         620709.24
-         24567.89
+       -620709.24
+        620709.00
+        -24567.89
          24567.90
+         24568.00
          24567.89
          24568.00
          24568.00
-        -24567.89
          24567.90
-         24567.90
-        -24567.90
         -24568.00
-       1738672.60
-       1738673.00
+        -24567.89
+        -24568.00
+       1738672.56
       -1738672.56
+       1738672.56
       -1738672.60
+      -1738673.00
+       1738672.56
        1738673.00
       -1738672.60
-      -1738673.00
-      -1738672.56
        1738672.60
        1738672.56
-     -48012344.00
-     -48012344.10
-      48012344.10
       48012344.00
+     -48012344.12
+     -48012344.00
       48012344.12
-     -48012344.10
-      48012344.00
+     -48012344.12
+     -48012344.00
       48012344.12
-      48012344.00
-     -48012344.10
-      10445457.00
-      10445457.27
-     -10445457.00
+     -48012344.00
+     -48012344.00
+     -48012344.00
      -10445457.00
       10445457.00
+      10445457.00
+      10445457.00
      -10445457.00
-      10445457.27
      -10445457.00
       10445457.00
-     -10445457.27
+      10445457.00
+      10445457.00
+     -10445457.30
         -15909.98
-        -15910.00
-        -15910.00
-        -15910.00
          15910.00
+        -15909.98
          15910.00
          15910.00
+        -15910.00
+        -15910.00
+        -15910.00
+        -15910.00
          15909.98
-         15910.00
-         15910.00
-       -283767.00
-       -283767.00
-        283767.00
-        283767.24
        -283767.24
-       -283767.24
-       -283767.24
-        283767.00
-        283767.00
+        283767.20
+        283767.24
+        283767.24
         283767.00
+        283767.20
+        283767.20
+        283767.24
+       -283767.00
+        283767.24
+        442672.13
        -442672.13
-       -442672.00
-        442672.00
         442672.00
+        442672.13
         442672.10
-       -442672.00
         442672.00
-        442672.13
-        442672.13
         442672.00
-         60344.35
-         60344.40
+       -442672.10
+        442672.00
+       -442672.10
+        -60344.35
          60344.00
          60344.00
-         60344.35
         -60344.00
+         60344.00
+         60344.35
+         60344.00
+         60344.35
          60344.00
          60344.00
-        -60344.35
-        -60344.00
-        163857.00
-        163857.00
        -163857.00
-        163857.00
-        163857.30
-        163857.00
        -163857.00
         163857.32
         163857.00
+       -163857.30
+       -163857.00
+        163857.30
         163857.00
-        945004.27
-        945004.30
-       -945004.30
+        163857.00
+       -163857.00
+       -945004.00
        -945004.30
-        945004.00
-        945004.00
+        945004.27
+        945004.27
+       -945004.27
+       -945004.27
+       -945004.00
+       -945004.27
+       -945004.00
         945004.30
-       -945004.30
-        945004.00
-        945004.00
        1907811.00
-      -1907811.20
+       1907811.00
+       1907811.00
+       1907811.00
+       1907811.20
+       1907811.18
        1907811.18
-      -1907811.00
        1907811.18
        1907811.18
-      -1907811.00
-      -1907811.00
        1907811.00
-       1907811.20
 EOF
 if [ $? -ne 0 ] ; then fail ; fi