From: <ai...@us...> - 2009-02-24 00:52:30
|
Revision: 9594 http://plplot.svn.sourceforge.net/plplot/?rev=9594&view=rev Author: airwin Date: 2009-02-24 00:52:27 +0000 (Tue, 24 Feb 2009) Log Message: ----------- Add test of bhunt_search function within qsastime.c. Some extensive testing showed excellent results. There were no failures of this algorithm for searching tables. Furthermore, the algorithm proved to be efficient. (More about that will be posted to the plplot-devel list.) Modified Paths: -------------- trunk/lib/qsastime/CMakeLists.txt Added Paths: ----------- trunk/lib/qsastime/bhunt_search_test.c Modified: trunk/lib/qsastime/CMakeLists.txt =================================================================== --- trunk/lib/qsastime/CMakeLists.txt 2009-02-23 21:55:49 UTC (rev 9593) +++ trunk/lib/qsastime/CMakeLists.txt 2009-02-24 00:52:27 UTC (rev 9594) @@ -148,6 +148,9 @@ add_executable(qsastime_test qsastime_test.c qsastime_extra.c qsastime.c) +# Routine for testing bhunt_search function in qsastime.c. +add_executable(bhunt_search_test bhunt_search_test.c qsastime.c) + # Routine for testing just the library functions against their library # inverses (to test self-consistency when such inverses exist) and also # equivalent C library routines. Added: trunk/lib/qsastime/bhunt_search_test.c =================================================================== --- trunk/lib/qsastime/bhunt_search_test.c (rev 0) +++ trunk/lib/qsastime/bhunt_search_test.c 2009-02-24 00:52:27 UTC (rev 9594) @@ -0,0 +1,102 @@ +/* + Copyright (C) 2009 Alan W. Irwin + + This file is part of PLplot. + + PLplot is free software; you can redistribute it and/or modify + it under the terms of the GNU General Library Public License as published + by the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + PLplot 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 Library General Public License for more details. + + You should have received a copy of the GNU Library General Public License + along with PLplot; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + +*/ +#include <stdio.h> +#include <stdlib.h> + +int bhunt_search(const void *key, const void *base, size_t n, size_t size, int *low, int (*ge)(const void *keyval, const void *datum)); + +int gedouble(double *number1, double *number2); + +int count_gedouble; +int gedouble(double *number1, double *number2) { + count_gedouble++; + return (*number1 >= *number2); +} + +int main() +{ + int i, j, iswitch, ifrandom, ifhunt, ntable, offset, multiplier, ntest, index; + double *table, test; + + /* size of ordered table of data and offset and multiplier to determine + number and value of test values used to search the ordered table. */ + scanf("%i %i %i", &ntable, &offset, &multiplier); + ntest = abs(multiplier)*(ntable - 1) + 1; + printf("ntable, offset, multiplier, ntest = %i, %i, %i, %i\n", ntable, offset, multiplier, ntest); + + table = (double *) malloc(ntable*sizeof(double)); + if(table == NULL) { + printf("Could not malloc desired memory\n"); + return 1; + } + + + /* Generate ordered table to be searched. */ + for(i=0; i<ntable; i++) { + table[i] = (double) i; + } + + for(iswitch=0; iswitch<4; iswitch++) { + ifrandom = (iswitch & 0x1) == 0x1; + ifhunt = (iswitch & 0x2) == 0x2; + /* Generate series of test values (not necessarily ordered) to be used + as keys for searching the table array). */ + index = -40; + count_gedouble=0; + for(i=0; i<ntest; i++) { + if(ifrandom) { + j = (int) ((double)ntest*(double)rand()/(((double)RAND_MAX) + 1.)); + } else { + j = i; + } + + test = offset + (double)j/(double)multiplier; + if(!ifhunt) + index = -40; + bhunt_search(&test, table, ntable, sizeof(double), &index, (int (*)(const void *, const void *)) gedouble); + if(index < -1 || index > ntable-1) { + printf("ERROR: test = %20.16f lead to an invalid index of %i\n", test, index); + return 1; + } + + if( !( (index == -1 && test < table[index+1]) || (index > -1 && index < ntable-1 && table[index] <= test && test < table[index+1]) || (index == ntable-1 && table[index] <= test) ) ) { + if(index == -1) { + printf("ERROR for index == -1, test = %20.16f, table[index+1] = %20.16f\n", test, table[index+1]); + return 1; + } else if(index > -1 && index < ntable-1) { + printf("ERROR for index > -1 && index < ntable-1, table[index] = %20.16f, test = %20.16f, table[index+1] = %20.16f\n", table[index], test, table[index+1]); + return 1; + } else if(index == ntable-1) { + printf("ERROR for index == ntable - 1, table[index] = %20.16f, test = %20.16f\n", table[index], test); + return 1; + } else { + printf("Internal logic ERROR\n"); + return 1; + } + } + } + printf("Average number of gedouble calls per bhunt_search call = %f for ifhunt, ifrandom = %i,%i\n",(double)count_gedouble/(double)ntest, ifhunt, ifrandom); + } + printf("Successful completion of bhunt_search test\n"); + + free((void *) table); + return 0; +} Property changes on: trunk/lib/qsastime/bhunt_search_test.c ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision Added: svn:eol-style + native This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ai...@us...> - 2009-03-16 06:09:04
|
Revision: 9743 http://plplot.svn.sourceforge.net/plplot/?rev=9743&view=rev Author: airwin Date: 2009-03-16 06:08:48 +0000 (Mon, 16 Mar 2009) Log Message: ----------- Store bhunt_search index inside the qsasconfig structure. This index is used to keep track of previous bhunt_search results so that table lookup of similar times will be extremely fast. Modified Paths: -------------- trunk/lib/qsastime/qsastime.c trunk/lib/qsastime/qsastime.h trunk/lib/qsastime/qsastimeP.h Modified: trunk/lib/qsastime/qsastime.c =================================================================== --- trunk/lib/qsastime/qsastime.c 2009-03-15 21:09:53 UTC (rev 9742) +++ trunk/lib/qsastime/qsastime.c 2009-03-16 06:08:48 UTC (rev 9743) @@ -64,7 +64,7 @@ /* Static function declarations. */ static int geMJDtimeTAI_UTC(const MJDtime *number1, const TAI_UTC *number2); -static double leap_second_TAI(const MJDtime *MJD_TAI, int * inleap); +static double leap_second_TAI(const MJDtime *MJD_TAI, int *inleap, int *index); /* End of static function declarations. */ int setFromUT(int year, int month, int day, int hour, int min, double sec, MJDtime *MJD, int forceJulian) @@ -925,24 +925,26 @@ } } -double leap_second_TAI(const MJDtime *MJD_TAI, int * inleap) { +double leap_second_TAI(const MJDtime *MJD_TAI, int *inleap, int *index) { /* Logic assumes input MJD_TAI is in TAI */ /* *inleap lets the calling routine know whether MJD_TAI corresponds to an epoch when a positive leap increment is being inserted. */ MJDtime MJD_value, *MJD = &MJD_value; - int index; double leap; + int debug=0; /* N.B. geMJDtimeTAI_UTC only works for normalized values. */ *MJD = *MJD_TAI; normalize_MJD(MJD); - /* Search for index such that TAI_TO_UTC_lookup_table[index] <= MJD(TAI) < TAI_TO_UTC_lookup_table[index+1] */ - bhunt_search(MJD, TAI_TO_UTC_lookup_table, number_of_entries_in_tai_utc_table, sizeof(TAI_UTC), &index, (int (*)(const void *, const void *)) geMJDtimeTAI_UTC); - if(index == -1) { + /* Search for index such that TAI_TO_UTC_lookup_table[*index] <= MJD(TAI) < TAI_TO_UTC_lookup_table[*index+1] */ + bhunt_search(MJD, TAI_TO_UTC_lookup_table, number_of_entries_in_tai_utc_table, sizeof(TAI_UTC), index, (int (*)(const void *, const void *)) geMJDtimeTAI_UTC); + if(debug == 2) + fprintf(stderr, "*index = %d\n", *index); + if(*index == -1) { /* MJD is less than first table entry. */ /* Debug: check that condition is met */ - if(geMJDtimeTAI_UTC(MJD, &TAI_TO_UTC_lookup_table[index+1])) { - fprintf(stderr, "libqsastime (leap_second_TAI) logic ERROR: bad condition for index = %d\n", index); + if(debug && geMJDtimeTAI_UTC(MJD, &TAI_TO_UTC_lookup_table[*index+1])) { + fprintf(stderr, "libqsastime (leap_second_TAI) logic ERROR: bad condition for *index = %d\n", *index); exit(EXIT_FAILURE); } /* There is (by assertion) no discontinuity at the start of the table. @@ -952,12 +954,12 @@ /* Calculate this offset strictly from offset1. The slope term doesn't enter because offset2 is the same as the UTC of the first epoch of the table. */ - return -TAI_TO_UTC_lookup_table[index+1].offset1; - } else if(index == number_of_entries_in_tai_utc_table-1) { + return -TAI_TO_UTC_lookup_table[*index+1].offset1; + } else if(*index == number_of_entries_in_tai_utc_table-1) { /* MJD is greater than or equal to last table entry. */ /* Debug: check that condition is met */ - if(!geMJDtimeTAI_UTC(MJD, &TAI_TO_UTC_lookup_table[index])) { - fprintf(stderr, "libqsastime (leap_second_TAI) logic ERROR: bad condition for index = %d\n", index); + if(debug && !geMJDtimeTAI_UTC(MJD, &TAI_TO_UTC_lookup_table[*index])) { + fprintf(stderr, "libqsastime (leap_second_TAI) logic ERROR: bad condition for *index = %d\n", *index); exit(EXIT_FAILURE); } /* If beyond end of table, cannot be in middle of leap second insertion. */ @@ -965,16 +967,16 @@ /* Use final offset for MJD values after last table entry. The slope term doesn't enter because modern values of the slope are zero.*/ - return -TAI_TO_UTC_lookup_table[index].offset1; - } else if(index >= 0 && index < number_of_entries_in_tai_utc_table) { - /* table[index] <= MJD < table[index+1]. */ + return -TAI_TO_UTC_lookup_table[*index].offset1; + } else if(*index >= 0 && *index < number_of_entries_in_tai_utc_table) { + /* table[*index] <= MJD < table[*index+1]. */ /* Debug: check that condition is met */ - if(!(geMJDtimeTAI_UTC(MJD, &TAI_TO_UTC_lookup_table[index]) && !geMJDtimeTAI_UTC(MJD, &TAI_TO_UTC_lookup_table[index+1]))) { + if(debug && !(geMJDtimeTAI_UTC(MJD, &TAI_TO_UTC_lookup_table[*index]) && !geMJDtimeTAI_UTC(MJD, &TAI_TO_UTC_lookup_table[*index+1]))) { fprintf(stderr, "MJD = {%d, %f}\n", MJD->base_day, MJD->time_sec); - fprintf(stderr, "libqsastime (leap_second_TAI) logic ERROR: bad condition for index = %d\n", index); + fprintf(stderr, "libqsastime (leap_second_TAI) logic ERROR: bad condition for *index = %d\n", *index); exit(EXIT_FAILURE); } - leap = -(TAI_TO_UTC_lookup_table[index].offset1 + ((MJD->base_day-TAI_TO_UTC_lookup_table[index].offset2) + MJD->time_sec/SecInDay)*TAI_TO_UTC_lookup_table[index].slope)/(1. + TAI_TO_UTC_lookup_table[index].slope/SecInDay); + leap = -(TAI_TO_UTC_lookup_table[*index].offset1 + ((MJD->base_day-TAI_TO_UTC_lookup_table[*index].offset2) + MJD->time_sec/SecInDay)*TAI_TO_UTC_lookup_table[*index].slope)/(1. + TAI_TO_UTC_lookup_table[*index].slope/SecInDay); /* Convert MJD(TAI) to normalized MJD(UTC). */ MJD->time_sec += leap; normalize_MJD(MJD); @@ -983,11 +985,11 @@ leap interval (recently a second but for earlier epochs it could be less) insertion. Note this logic even works when leap intervals are taken away from UTC (i.e., leap is positive) since in that - case the UTC index always corresponds to the TAI index. */ - *inleap = geMJDtimeTAI_UTC(MJD, &UTC_TO_TAI_lookup_table[index+1]); + case the UTC *index always corresponds to the TAI *index. */ + *inleap = geMJDtimeTAI_UTC(MJD, &UTC_TO_TAI_lookup_table[*index+1]); return leap; } else { - fprintf(stderr, "libqsastime (leap_second_TAI) logic ERROR: bad index = %d\n", index); + fprintf(stderr, "libqsastime (leap_second_TAI) logic ERROR: bad *index = %d\n", *index); exit(EXIT_FAILURE); } } @@ -1048,7 +1050,7 @@ } } -int ctimeqsas(int year, int month, int day, int hour, int min, double sec, double * ctime, const QSASConfig *qsasconfig){ +int ctimeqsas(int year, int month, int day, int hour, int min, double sec, double * ctime, QSASConfig *qsasconfig){ MJDtime MJD_value, *MJD=&MJD_value; int forceJulian, ret; double integral_offset1, integral_offset2, integral_scaled_ctime; @@ -1071,7 +1073,7 @@ } -void btimeqsas(int *year, int *month, int *day, int *hour, int *min, double *sec, double ctime, const QSASConfig *qsasconfig){ +void btimeqsas(int *year, int *month, int *day, int *hour, int *min, double *sec, double ctime, QSASConfig *qsasconfig){ MJDtime MJD_value, *MJD=&MJD_value; int forceJulian; double integral_offset1, integral_offset2, integral_scaled_ctime; @@ -1091,10 +1093,14 @@ forceJulian = 0; if(qsasconfig->ccontrol & 0x2) - MJD->time_sec += leap_second_TAI(MJD, &inleap); + MJD->time_sec += leap_second_TAI(MJD, &inleap, &(qsasconfig->index)); else inleap = 0; + /* If in the middle of a positive leap increment insertion, normalize the + broken-down result so that *sec exceeds 60 to mark the insertion + (similar to the way February 29 marks a leap day). */ + if(inleap) MJD->time_sec -= 1.; @@ -1103,7 +1109,7 @@ *sec += 1.; } -size_t strfqsas(char * buf, size_t len, const char *format, double ctime, const QSASConfig *qsasconfig) +size_t strfqsas(char * buf, size_t len, const char *format, double ctime, QSASConfig *qsasconfig) { MJDtime MJD_value, *MJD=&MJD_value; int forceJulian; @@ -1123,7 +1129,7 @@ forceJulian = 0; if(qsasconfig->ccontrol & 0x2) - MJD->time_sec += leap_second_TAI(MJD, &inleap); + MJD->time_sec += leap_second_TAI(MJD, &inleap, &(qsasconfig->index)); else inleap = 0; Modified: trunk/lib/qsastime/qsastime.h =================================================================== --- trunk/lib/qsastime/qsastime.h 2009-03-15 21:09:53 UTC (rev 9742) +++ trunk/lib/qsastime/qsastime.h 2009-03-16 06:08:48 UTC (rev 9743) @@ -54,10 +54,10 @@ QSASTIMEDLLIMPEXP void closeqsas(QSASConfig **qsasconfig); -QSASTIMEDLLIMPEXP int ctimeqsas(int year, int month, int day, int hour, int min, double sec, double * ctime, const QSASConfig *qsasconfig); +QSASTIMEDLLIMPEXP int ctimeqsas(int year, int month, int day, int hour, int min, double sec, double * ctime, QSASConfig *qsasconfig); -QSASTIMEDLLIMPEXP void btimeqsas(int *year, int *month, int *day, int *hour, int *min, double *sec, double ctime, const QSASConfig *qsasconfig); +QSASTIMEDLLIMPEXP void btimeqsas(int *year, int *month, int *day, int *hour, int *min, double *sec, double ctime, QSASConfig *qsasconfig); -QSASTIMEDLLIMPEXP size_t strfqsas(char * buf, size_t len, const char *format, double ctime, const QSASConfig *qsasconfig); +QSASTIMEDLLIMPEXP size_t strfqsas(char * buf, size_t len, const char *format, double ctime, QSASConfig *qsasconfig); #endif Modified: trunk/lib/qsastime/qsastimeP.h =================================================================== --- trunk/lib/qsastime/qsastimeP.h 2009-03-15 21:09:53 UTC (rev 9742) +++ trunk/lib/qsastime/qsastimeP.h 2009-03-16 06:08:48 UTC (rev 9743) @@ -57,6 +57,8 @@ We reserve other bits of ccontrol for future use. */ int ccontrol; + /* index keeps track of latest bhunt_search index. */ + int index; }; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <and...@us...> - 2009-04-24 17:04:47
|
Revision: 9844 http://plplot.svn.sourceforge.net/plplot/?rev=9844&view=rev Author: andrewross Date: 2009-04-24 17:04:30 +0000 (Fri, 24 Apr 2009) Log Message: ----------- Fix warnings due to improper casting / unused variables in qsastime. Modified Paths: -------------- trunk/lib/qsastime/qsastime.c trunk/lib/qsastime/qsastimeP.h Modified: trunk/lib/qsastime/qsastime.c =================================================================== --- trunk/lib/qsastime/qsastime.c 2009-04-24 06:54:55 UTC (rev 9843) +++ trunk/lib/qsastime/qsastime.c 2009-04-24 17:04:30 UTC (rev 9844) @@ -140,7 +140,7 @@ { dextraDays = (time_sec / SecInDay); /* precaution against overflowing extraDays. */ - if(abs(dextraDays) > 2.e9) { + if(fabs(dextraDays) > 2.e9) { return 3; } extraDays = (int) (dextraDays); @@ -148,7 +148,7 @@ time_sec -= extraDays * SecInDay; } /* precaution against overflowing MJD->base_day. */ - if(abs(dbase_day) > 2.e9){ + if(fabs(dbase_day) > 2.e9){ return 4; } else { /* The exact integer result should be represented exactly in the @@ -336,7 +336,7 @@ int year, month, day, hour, min, ysign, second, d, y; int y1, ifleapyear; - int i, count,secsSince1970; + int i, secsSince1970; int nplaces,fmtlen,slen; int resolution; double shiftPlaces; @@ -1053,7 +1053,6 @@ int ctimeqsas(int year, int month, int day, int hour, int min, double sec, double * ctime, QSASConfig *qsasconfig){ MJDtime MJD_value, *MJD=&MJD_value; int forceJulian, ret; - double integral_offset1, integral_offset2, integral_scaled_ctime; if(qsasconfig == NULL) { fprintf(stderr, "libqsastime (ctimeqsas) ERROR: configqsas must be called first.\n"); @@ -1149,7 +1148,7 @@ its second argument (a table entry). Otherwise it returns false (0). Items in the array base must be in ascending order. */ -int bhunt_search(const void *key, const void *base, size_t n, size_t size, int *low, int (*ge)(const void *keyval, const void *datum)) { +void bhunt_search(const void *key, const void *base, size_t n, size_t size, int *low, int (*ge)(const void *keyval, const void *datum)) { const void *indexbase; int mid, high, hunt_inc=1; /* If previous search found below range, then assure one hunt cycle @@ -1158,7 +1157,7 @@ *low = 0; /* Protect against invalid or undefined *low values where hunt is waste of time. */ - if(*low < 0 || *low >= n) { + if(*low < 0 || *low >= (int) n) { *low = -1; high = n; } else { @@ -1168,13 +1167,13 @@ high = (*low) + hunt_inc; indexbase = (void *) (((const char *) base) + (size*high)); /* indexbase is valid if high < n. */ - while( (high < n) && ((*ge)(key, indexbase)) ) { + while( (high < (int) n) && ((*ge)(key, indexbase)) ) { *low = high; hunt_inc+=hunt_inc; high = high + hunt_inc; indexbase = (void *) (((const char *) base) + (size*high)); } - if(high >= n) + if(high >= (int) n) high = n; /* At this point, low is valid and base[low] <= key and either key < base[high] for valid high or high = n. */ Modified: trunk/lib/qsastime/qsastimeP.h =================================================================== --- trunk/lib/qsastime/qsastimeP.h 2009-04-24 06:54:55 UTC (rev 9843) +++ trunk/lib/qsastime/qsastimeP.h 2009-04-24 17:04:30 UTC (rev 9844) @@ -64,7 +64,7 @@ /* ToDo. Configure these so all are static if testing is not configured? */ -int bhunt_search(const void *key, const void *base, size_t n, size_t size, int *low, int (*ge)(const void *keyval, const void *datum)); +void bhunt_search(const void *key, const void *base, size_t n, size_t size, int *low, int (*ge)(const void *keyval, const void *datum)); int setFromUT(int year, int month, int day, int hour, int min, double sec, MJDtime *MJD, int forceJulian); void breakDownMJD(int *year, int *month, int *day, int *hour, int *min, double *sec, const MJDtime *MJD, int forceJulian); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ai...@us...> - 2009-04-28 18:53:05
|
Revision: 9862 http://plplot.svn.sourceforge.net/plplot/?rev=9862&view=rev Author: airwin Date: 2009-04-28 18:53:04 +0000 (Tue, 28 Apr 2009) Log Message: ----------- Improved fix for warnings due to improper casting. The n argument of bhunt_search is changed from a size_t to an int. This change allows dropping the (int) casting of n inside bhunt_search that was in the previous fix. Modified Paths: -------------- trunk/lib/qsastime/qsastime.c trunk/lib/qsastime/qsastimeP.h Modified: trunk/lib/qsastime/qsastime.c =================================================================== --- trunk/lib/qsastime/qsastime.c 2009-04-28 18:37:39 UTC (rev 9861) +++ trunk/lib/qsastime/qsastime.c 2009-04-28 18:53:04 UTC (rev 9862) @@ -1148,7 +1148,7 @@ its second argument (a table entry). Otherwise it returns false (0). Items in the array base must be in ascending order. */ -void bhunt_search(const void *key, const void *base, size_t n, size_t size, int *low, int (*ge)(const void *keyval, const void *datum)) { +void bhunt_search(const void *key, const void *base, int n, size_t size, int *low, int (*ge)(const void *keyval, const void *datum)) { const void *indexbase; int mid, high, hunt_inc=1; /* If previous search found below range, then assure one hunt cycle @@ -1157,7 +1157,7 @@ *low = 0; /* Protect against invalid or undefined *low values where hunt is waste of time. */ - if(*low < 0 || *low >= (int) n) { + if(*low < 0 || *low >= n) { *low = -1; high = n; } else { @@ -1167,13 +1167,13 @@ high = (*low) + hunt_inc; indexbase = (void *) (((const char *) base) + (size*high)); /* indexbase is valid if high < n. */ - while( (high < (int) n) && ((*ge)(key, indexbase)) ) { + while( (high < n) && ((*ge)(key, indexbase)) ) { *low = high; hunt_inc+=hunt_inc; high = high + hunt_inc; indexbase = (void *) (((const char *) base) + (size*high)); } - if(high >= (int) n) + if(high >= n) high = n; /* At this point, low is valid and base[low] <= key and either key < base[high] for valid high or high = n. */ Modified: trunk/lib/qsastime/qsastimeP.h =================================================================== --- trunk/lib/qsastime/qsastimeP.h 2009-04-28 18:37:39 UTC (rev 9861) +++ trunk/lib/qsastime/qsastimeP.h 2009-04-28 18:53:04 UTC (rev 9862) @@ -64,7 +64,7 @@ /* ToDo. Configure these so all are static if testing is not configured? */ -void bhunt_search(const void *key, const void *base, size_t n, size_t size, int *low, int (*ge)(const void *keyval, const void *datum)); +void bhunt_search(const void *key, const void *base, int n, size_t size, int *low, int (*ge)(const void *keyval, const void *datum)); int setFromUT(int year, int month, int day, int hour, int min, double sec, MJDtime *MJD, int forceJulian); void breakDownMJD(int *year, int *month, int *day, int *hour, int *min, double *sec, const MJDtime *MJD, int forceJulian); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ai...@us...> - 2009-05-06 04:45:41
|
Revision: 9928 http://plplot.svn.sourceforge.net/plplot/?rev=9928&view=rev Author: airwin Date: 2009-05-06 04:45:35 +0000 (Wed, 06 May 2009) Log Message: ----------- Move qsastimeP.h to qsastimeP.h.in which is to be used as a template file for configuring qsastimeP.h. Configure internal qsastime library routines as static unless those routines are being tested (-DTEST_QSASTIME=ON). Added Paths: ----------- trunk/lib/qsastime/qsastimeP.h.in Removed Paths: ------------- trunk/lib/qsastime/qsastimeP.h Deleted: trunk/lib/qsastime/qsastimeP.h =================================================================== --- trunk/lib/qsastime/qsastimeP.h 2009-05-06 04:40:16 UTC (rev 9927) +++ trunk/lib/qsastime/qsastimeP.h 2009-05-06 04:45:35 UTC (rev 9928) @@ -1,79 +0,0 @@ -#ifndef _QSASTIMEP_H_ -#define _QSASTIMEP_H_ - -/* Declaration of private structures within libqsastime which the user does - not need to acccess. - Also definition of functions within libqsastime that are needed - for testing of libqsastime, but which are not normally needed for anything - else */ - -#include "qsastime.h" - -typedef struct MJDtimeStruct -{ - /* - MJD starts at 0h, so truncating MJD always gives the same day whatever the time (unlike JD). - The MJD base day is arbitrary, i.e. seconds can be greater than one day or even negative. - */ - - int base_day; /* integer part of MJD used as default */ - double time_sec; /* seconds from start of base_day */ - -}MJDtime; - -struct QSASConfigStruct -{ - - /* Values used to define the transformation between broken down time - and continuous time for the public API of libqsastime, - continuous_time_qsas, broken_down_time_qsas, and strfqsas.*/ - - /* scale multiplies the continuous time variable to convert the units to - days. */ - double scale; - - /* offset1 and offset2 (in days) specifies the amount to add to the - scaled continuous time to derive the MJD time value that is used - internally by libqsastime. Normally epoch1 is an integral - value (which can be exactly stored in a double for a very wide - range of integers) and offset2 is normally a non-integral value - whose absolute value is less than 1. This arrangement allows the - continuous time variable in the API to be stored as a single double - without compromising numerical precision if epoch1 and epoch2 - are chosen wisely. */ - double offset1, offset2; - - /* The various bits of ccontrol are used as independent switches to - control optional additional corrections which define the - transformation between continuous time and broken-down time. - - If bit 0 (the lowest order bit of ccontrol) is 1 the Julian - proleptic calendar is used for broken-down time. Otherwise the - Gregorian proleptic calendar is used for broken-down time. - - If bit 1 is 1, an additional correction for the difference - between atomic-clock based times and UTC is applied to the broken-down - times. - - We reserve other bits of ccontrol for future use. */ - int ccontrol; - /* index keeps track of latest bhunt_search index. */ - int index; - -}; - -/* ToDo. Configure these so all are static if testing is not - configured? */ -void bhunt_search(const void *key, const void *base, int n, size_t size, int *low, int (*ge)(const void *keyval, const void *datum)); - -int setFromUT(int year, int month, int day, int hour, int min, double sec, MJDtime *MJD, int forceJulian); -void breakDownMJD(int *year, int *month, int *day, int *hour, int *min, double *sec, const MJDtime *MJD, int forceJulian); -size_t strfMJD(char * buf, size_t len, const char *format, const MJDtime *MJD, int forceJulian, int if60secformat); -void normalize_MJD(MJDtime *MJD); -const char * getDayOfWeek(const MJDtime *MJD); -const char * getLongDayOfWeek( const MJDtime *MJD); -const char * getMonth(int m); -const char * getLongMonth(int m); -void getYAD(int *year, int *ifleapyear, int *doy, const MJDtime *MJD, int forceJulian); - -#endif Copied: trunk/lib/qsastime/qsastimeP.h.in (from rev 9919, trunk/lib/qsastime/qsastimeP.h) =================================================================== --- trunk/lib/qsastime/qsastimeP.h.in (rev 0) +++ trunk/lib/qsastime/qsastimeP.h.in 2009-05-06 04:45:35 UTC (rev 9928) @@ -0,0 +1,86 @@ +#ifndef _QSASTIMEP_H_ +#define _QSASTIMEP_H_ + +/* Declaration of private structures within libqsastime which the user does + not need to acccess. + Also definition of functions within libqsastime that are needed + for testing of libqsastime, but which are not normally needed for anything + else */ + +#include "qsastime.h" + +typedef struct MJDtimeStruct +{ + /* + MJD starts at 0h, so truncating MJD always gives the same day whatever the time (unlike JD). + The MJD base day is arbitrary, i.e. seconds can be greater than one day or even negative. + */ + + int base_day; /* integer part of MJD used as default */ + double time_sec; /* seconds from start of base_day */ + +}MJDtime; + +struct QSASConfigStruct +{ + + /* Values used to define the transformation between broken down time + and continuous time for the public API of libqsastime, + continuous_time_qsas, broken_down_time_qsas, and strfqsas.*/ + + /* scale multiplies the continuous time variable to convert the units to + days. */ + double scale; + + /* offset1 and offset2 (in days) specifies the amount to add to the + scaled continuous time to derive the MJD time value that is used + internally by libqsastime. Normally epoch1 is an integral + value (which can be exactly stored in a double for a very wide + range of integers) and offset2 is normally a non-integral value + whose absolute value is less than 1. This arrangement allows the + continuous time variable in the API to be stored as a single double + without compromising numerical precision if epoch1 and epoch2 + are chosen wisely. */ + double offset1, offset2; + + /* The various bits of ccontrol are used as independent switches to + control optional additional corrections which define the + transformation between continuous time and broken-down time. + + If bit 0 (the lowest order bit of ccontrol) is 1 the Julian + proleptic calendar is used for broken-down time. Otherwise the + Gregorian proleptic calendar is used for broken-down time. + + If bit 1 is 1, an additional correction for the difference + between atomic-clock based times and UTC is applied to the broken-down + times. + + We reserve other bits of ccontrol for future use. */ + int ccontrol; + /* index keeps track of latest bhunt_search index. */ + int index; + +}; + +/* Set if the qsastime library is being tested. */ +#cmakedefine TEST_QSASTIME + +#ifdef TEST_QSASTIME +#define QSASTIME_static +#else +#define QSASTIME_static static +#endif + +QSASTIME_static void bhunt_search(const void *key, const void *base, int n, size_t size, int *low, int (*ge)(const void *keyval, const void *datum)); + +QSASTIME_static int setFromUT(int year, int month, int day, int hour, int min, double sec, MJDtime *MJD, int forceJulian); +QSASTIME_static void breakDownMJD(int *year, int *month, int *day, int *hour, int *min, double *sec, const MJDtime *MJD, int forceJulian); +QSASTIME_static size_t strfMJD(char * buf, size_t len, const char *format, const MJDtime *MJD, int forceJulian, int if60secformat); +QSASTIME_static void normalize_MJD(MJDtime *MJD); +QSASTIME_static const char * getDayOfWeek(const MJDtime *MJD); +QSASTIME_static const char * getLongDayOfWeek( const MJDtime *MJD); +QSASTIME_static const char * getMonth(int m); +QSASTIME_static const char * getLongMonth(int m); +QSASTIME_static void getYAD(int *year, int *ifleapyear, int *doy, const MJDtime *MJD, int forceJulian); + +#endif Property changes on: trunk/lib/qsastime/qsastimeP.h.in ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision Added: svn:mergeinfo + Added: svn:eol-style + native This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ai...@us...> - 2009-05-07 18:17:00
|
Revision: 9936 http://plplot.svn.sourceforge.net/plplot/?rev=9936&view=rev Author: airwin Date: 2009-05-07 18:16:53 +0000 (Thu, 07 May 2009) Log Message: ----------- Store TAI-UTC data in just one consolidated lookup table containing revised TAI_UTC structs which have members for time_secs_tai and time_secs_utc rather than just time_secs alone. The result builds and gives the same results for my (not yet committed) extended python example 29. Modified Paths: -------------- trunk/lib/qsastime/README.tai-utc trunk/lib/qsastime/qsastime.c trunk/lib/qsastime/tai-utc-gen.c Modified: trunk/lib/qsastime/README.tai-utc =================================================================== --- trunk/lib/qsastime/README.tai-utc 2009-05-07 12:43:52 UTC (rev 9935) +++ trunk/lib/qsastime/README.tai-utc 2009-05-07 18:16:53 UTC (rev 9936) @@ -23,10 +23,10 @@ The tai-utc-gen application reads in these (UTC) epoch, offset1, offset2, and slope data from tai-utc.dat, calculates the discontinuous change in UTC at the unique TAI epoch of the UTC discontinuity using equation 2 below, and -stores the results in the header file tai-utc.h with two tables which have -identical offset1, offset2, slope, and discontinuous change data, but which -have epochs of the discontinuity expressed in MJD(TAI) for -TAI_TO_UTC_lookup_table and MJD(UTC) for UTC_TO_TAI_lookup_table. +stores the results in the header file tai-utc.h as the TAI_UTC_lookup_table +with data for MJD(TAI) (int base_day, double time_sec_tai), MJD(UTC) (int +base_day, double time_sec_utc = 0.), the discontinuous change, offset1, +offset2, and slope stored for each epoch. The qsastime library uses equation 1 to calculate MJD(TAI) as a function of MJD(UTC), and Modified: trunk/lib/qsastime/qsastime.c =================================================================== --- trunk/lib/qsastime/qsastime.c 2009-05-07 12:43:52 UTC (rev 9935) +++ trunk/lib/qsastime/qsastime.c 2009-05-07 18:16:53 UTC (rev 9936) @@ -63,7 +63,8 @@ static const int MonthStartDOY_L[] = {0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335}; /* Static function declarations. */ -static int geMJDtimeTAI_UTC(const MJDtime *number1, const TAI_UTC *number2); +static int geMJDtime_TAI(const MJDtime *number1, const TAI_UTC *number2); +static int geMJDtime_UTC(const MJDtime *number1, const TAI_UTC *number2); static double leap_second_TAI(const MJDtime *MJD_TAI, int *inleap, int *index); /* End of static function declarations. */ @@ -913,7 +914,7 @@ return posn; } -int geMJDtimeTAI_UTC(const MJDtime *number1, const TAI_UTC *number2) { +int geMJDtime_TAI(const MJDtime *number1, const TAI_UTC *number2) { /* Returns true if number1 >= number2. */ /* N.B. both number1 and number2 must be normalized. */ if(number1->base_day > number2->base_day) { @@ -921,10 +922,22 @@ } else if (number1->base_day < number2->base_day) { return 0; } else { - return (number1->time_sec >= number2->time_sec); + return (number1->time_sec >= number2->time_sec_tai); } } +int geMJDtime_UTC(const MJDtime *number1, const TAI_UTC *number2) { + /* Returns true if number1 >= number2. */ + /* N.B. both number1 and number2 must be normalized. */ + if(number1->base_day > number2->base_day) { + return 1; + } else if (number1->base_day < number2->base_day) { + return 0; + } else { + return (number1->time_sec >= number2->time_sec_utc); + } +} + double leap_second_TAI(const MJDtime *MJD_TAI, int *inleap, int *index) { /* Logic assumes input MJD_TAI is in TAI */ /* *inleap lets the calling routine know whether MJD_TAI corresponds @@ -933,17 +946,17 @@ MJDtime MJD_value, *MJD = &MJD_value; double leap; int debug=0; - /* N.B. geMJDtimeTAI_UTC only works for normalized values. */ + /* N.B. geMJDtime_TAI only works for normalized values. */ *MJD = *MJD_TAI; normalize_MJD(MJD); - /* Search for index such that TAI_TO_UTC_lookup_table[*index] <= MJD(TAI) < TAI_TO_UTC_lookup_table[*index+1] */ - bhunt_search(MJD, TAI_TO_UTC_lookup_table, number_of_entries_in_tai_utc_table, sizeof(TAI_UTC), index, (int (*)(const void *, const void *)) geMJDtimeTAI_UTC); + /* Search for index such that TAI_UTC_lookup_table[*index] <= MJD(TAI) < TAI_UTC_lookup_table[*index+1] */ + bhunt_search(MJD, TAI_UTC_lookup_table, number_of_entries_in_tai_utc_table, sizeof(TAI_UTC), index, (int (*)(const void *, const void *)) geMJDtime_TAI); if(debug == 2) fprintf(stderr, "*index = %d\n", *index); if(*index == -1) { /* MJD is less than first table entry. */ /* Debug: check that condition is met */ - if(debug && geMJDtimeTAI_UTC(MJD, &TAI_TO_UTC_lookup_table[*index+1])) { + if(debug && geMJDtime_TAI(MJD, &TAI_UTC_lookup_table[*index+1])) { fprintf(stderr, "libqsastime (leap_second_TAI) logic ERROR: bad condition for *index = %d\n", *index); exit(EXIT_FAILURE); } @@ -954,11 +967,11 @@ /* Calculate this offset strictly from offset1. The slope term doesn't enter because offset2 is the same as the UTC of the first epoch of the table. */ - return -TAI_TO_UTC_lookup_table[*index+1].offset1; + return -TAI_UTC_lookup_table[*index+1].offset1; } else if(*index == number_of_entries_in_tai_utc_table-1) { /* MJD is greater than or equal to last table entry. */ /* Debug: check that condition is met */ - if(debug && !geMJDtimeTAI_UTC(MJD, &TAI_TO_UTC_lookup_table[*index])) { + if(debug && !geMJDtime_TAI(MJD, &TAI_UTC_lookup_table[*index])) { fprintf(stderr, "libqsastime (leap_second_TAI) logic ERROR: bad condition for *index = %d\n", *index); exit(EXIT_FAILURE); } @@ -967,26 +980,26 @@ /* Use final offset for MJD values after last table entry. The slope term doesn't enter because modern values of the slope are zero.*/ - return -TAI_TO_UTC_lookup_table[*index].offset1; + return -TAI_UTC_lookup_table[*index].offset1; } else if(*index >= 0 && *index < number_of_entries_in_tai_utc_table) { /* table[*index] <= MJD < table[*index+1]. */ /* Debug: check that condition is met */ - if(debug && !(geMJDtimeTAI_UTC(MJD, &TAI_TO_UTC_lookup_table[*index]) && !geMJDtimeTAI_UTC(MJD, &TAI_TO_UTC_lookup_table[*index+1]))) { + if(debug && !(geMJDtime_TAI(MJD, &TAI_UTC_lookup_table[*index]) && !geMJDtime_TAI(MJD, &TAI_UTC_lookup_table[*index+1]))) { fprintf(stderr, "MJD = {%d, %f}\n", MJD->base_day, MJD->time_sec); fprintf(stderr, "libqsastime (leap_second_TAI) logic ERROR: bad condition for *index = %d\n", *index); exit(EXIT_FAILURE); } - leap = -(TAI_TO_UTC_lookup_table[*index].offset1 + ((MJD->base_day-TAI_TO_UTC_lookup_table[*index].offset2) + MJD->time_sec/SecInDay)*TAI_TO_UTC_lookup_table[*index].slope)/(1. + TAI_TO_UTC_lookup_table[*index].slope/SecInDay); + leap = -(TAI_UTC_lookup_table[*index].offset1 + ((MJD->base_day-TAI_UTC_lookup_table[*index].offset2) + MJD->time_sec/SecInDay)*TAI_UTC_lookup_table[*index].slope)/(1. + TAI_UTC_lookup_table[*index].slope/SecInDay); /* Convert MJD(TAI) to normalized MJD(UTC). */ MJD->time_sec += leap; normalize_MJD(MJD); /* If MJD(UT) is in the next interval of the corresponding - UTC_TO_TAI_lookup_table, then we are right in the middle of a + TAI_UTC_lookup_table, then we are right in the middle of a leap interval (recently a second but for earlier epochs it could be less) insertion. Note this logic even works when leap intervals are taken away from UTC (i.e., leap is positive) since in that case the UTC *index always corresponds to the TAI *index. */ - *inleap = geMJDtimeTAI_UTC(MJD, &UTC_TO_TAI_lookup_table[*index+1]); + *inleap = geMJDtime_UTC(MJD, &TAI_UTC_lookup_table[*index+1]); return leap; } else { fprintf(stderr, "libqsastime (leap_second_TAI) logic ERROR: bad *index = %d\n", *index); Modified: trunk/lib/qsastime/tai-utc-gen.c =================================================================== --- trunk/lib/qsastime/tai-utc-gen.c 2009-05-07 12:43:52 UTC (rev 9935) +++ trunk/lib/qsastime/tai-utc-gen.c 2009-05-07 18:16:53 UTC (rev 9936) @@ -148,11 +148,11 @@ fprintf(fw, "%s\n",header); + fprintf(fw, "typedef struct {\n\tint base_day;\n\tdouble time_sec_tai;\n\tdouble time_sec_utc;\n\tdouble size_prev_leap_sec;\n\tdouble offset1;\n\tint offset2;\n\tdouble slope;\n} TAI_UTC;\n\n"); + fprintf(fw, "const int number_of_entries_in_tai_utc_table=%d;\n\n",number_of_lines); - fprintf(fw, "typedef struct {\n\tint base_day;\n\tdouble time_sec;\n\tdouble size_prev_leap_sec;\n\tdouble offset1;\n\tint offset2;\n\tdouble slope;\n} TAI_UTC;\n\n"); - - fprintf(fw, "const TAI_UTC TAI_TO_UTC_lookup_table[%d] = {\n",number_of_lines); + fprintf(fw, "const TAI_UTC TAI_UTC_lookup_table[%d] = {\n",number_of_lines); for (i=0;i<number_of_lines;i++) { sec = offset1[i] + (double)(MJDstart[i]-offset2[i])*slope[i]; if(i==0) @@ -166,16 +166,10 @@ unambiguously. */ leap_sec[i] = sec - (offset1[i-1] + (double)(MJDstart[i]+sec/86400.-offset2[i-1])*slope[i-1])/(1. + slope[i-1]/86400.); if(fabs(leap_sec[i]) < 1.e-14) leap_sec[i] = 0.; - fprintf(fw,"{%d, %15.8f, %20.14f, %15.8f, %d, %15.8f},\n", MJDstart[i], sec, leap_sec[i], offset1[i], offset2[i], slope[i]); + fprintf(fw,"{%d, %15.8f, 0., %20.14f, %15.8f, %d, %15.8f},\n", MJDstart[i], sec, leap_sec[i], offset1[i], offset2[i], slope[i]); } fprintf(fw,"};\n"); - fprintf(fw, "const TAI_UTC UTC_TO_TAI_lookup_table[%d] = {\n",number_of_lines); - for (i=0;i<number_of_lines;i++) { - fprintf(fw,"{%d, %15.8f, %20.14f, %15.8f, %d, %15.8f},\n", MJDstart[i], 0., leap_sec[i], offset1[i], offset2[i], slope[i]); - } - fprintf(fw,"};\n"); - fclose(fw); free(MJDstart); free(offset1); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ai...@us...> - 2009-06-05 15:14:52
|
Revision: 10032 http://plplot.svn.sourceforge.net/plplot/?rev=10032&view=rev Author: airwin Date: 2009-06-05 15:14:46 +0000 (Fri, 05 Jun 2009) Log Message: ----------- Initial commit of Table 1 from Morrison and Stephenson (2004), which is a spline representation of the difference in time between ephemeris and civil time. See README.deltaT.dat for the bibliographic details. Added Paths: ----------- trunk/lib/qsastime/README.deltaT.dat trunk/lib/qsastime/deltaT.dat Added: trunk/lib/qsastime/README.deltaT.dat =================================================================== --- trunk/lib/qsastime/README.deltaT.dat (rev 0) +++ trunk/lib/qsastime/README.deltaT.dat 2009-06-05 15:14:46 UTC (rev 10032) @@ -0,0 +1,14 @@ +The data in DeltaT.dat were taken from Table 1 of + +Title: Historical values of the Earth's clock error ΔT and the calculation +of eclipses + +Authors: Morrison, L. V.; Stephenson, F. R. + +Publication: Journal for the History of Astronomy (ISSN 0021-8286), Vol. 35, +Part 3, No. 120, p. 327 - 336 (2004) + +Publication Date: 08/2004 + +The above bibliographic data and link to the paper was taken from +http://adsabs.harvard.edu/abs/2004JHA....35..327M Property changes on: trunk/lib/qsastime/README.deltaT.dat ___________________________________________________________________ Added: svn:eol-style + native Added: trunk/lib/qsastime/deltaT.dat =================================================================== --- trunk/lib/qsastime/deltaT.dat (rev 0) +++ trunk/lib/qsastime/deltaT.dat 2009-06-05 15:14:46 UTC (rev 10032) @@ -0,0 +1,58 @@ +-1000 25400 +-900 23700 +-800 22000 +-700 21000 +-600 19040 +-500 17190 +-400 15530 +-300 14080 +-200 12790 +-100 11640 +000 10580 +100 9600 +200 8640 +300 7680 +400 6700 +500 5710 +600 4740 +700 3810 +800 2960 +900 2200 +1000 1570 +1100 1090 +1200 740 +1300 490 +1400 320 +1500 200 +1600 120 +1700 9 +1710 10 +1720 11 +1730 11 +1740 12 +1750 13 +1760 15 +1770 16 +1780 17 +1790 17 +1800 14 +1810 13 +1820 12 +1830 8 +1840 6 +1850 7 +1860 8 +1870 2 +1880 -5 +1890 -6 +1900 -3 +1910 10 +1920 21 +1930 24 +1940 24 +1950 29 +1960 33 +1970 40 +1980 51 +1990 57 +2000 65 Property changes on: trunk/lib/qsastime/deltaT.dat ___________________________________________________________________ Added: svn:eol-style + native This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ai...@us...> - 2009-06-05 15:17:35
|
Revision: 10033 http://plplot.svn.sourceforge.net/plplot/?rev=10033&view=rev Author: airwin Date: 2009-06-05 15:17:33 +0000 (Fri, 05 Jun 2009) Log Message: ----------- Initial commit of 1D spline routines that allow the user complete freedom to specify either first or second derivative end conditions. The purpose of this code to interpolate a spline representation of the difference in time between ephemeris time and civil time given by Table 1 of Morrison and Stephenson (2004). See README.deltaT.dat for bibliographic details. This code has been converted from Fortran to C using f2c, and will not be ready for compilation until additional changes have been made by hand to remove all dependence on the f2c libraries. Added Paths: ----------- trunk/lib/qsastime/dspline.c trunk/lib/qsastime/dsplint.c Added: trunk/lib/qsastime/dspline.c =================================================================== --- trunk/lib/qsastime/dspline.c (rev 0) +++ trunk/lib/qsastime/dspline.c 2009-06-05 15:17:33 UTC (rev 10033) @@ -0,0 +1,149 @@ +/* + Copyright (C) 2009 Alan W. Irwin + + This file is part of PLplot. + + PLplot is free software; you can redistribute it and/or modify + it under the terms of the GNU General Library Public License as published + by the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + PLplot 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 Library General Public License for more details. + + You should have received a copy of the GNU Library General Public License + along with PLplot; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + + Provenance: This code was originally developed under the GPL as part of + the FreeEOS project (revision 121). This code has been converted from + Fortran to C with the aid of f2c and relicensed for PLplot under the LGPL + with the permission of the FreeEOS copyright holder (Alan W. Irwin). +*/ +int dspline_(doublereal *x, doublereal *y, integer *n, + integer *if1, doublereal *cond1, integer *ifn, doublereal *condn, + doublereal *y2) +{ + /* System generated locals */ + integer i__1; + + /* Builtin functions */ + /* Subroutine */ int s_stop(char *, ftnlen); + + /* Local variables */ + static integer i__, k; + static doublereal p, u[2000], qn, un, sig; + +/* input parameters: */ +/* x(n) are the spline knot points */ +/* y(n) are the function values at the knot points */ +/* if1 = 1 specifies cond1 is the first derivative at the */ +/* first knot point. */ +/* if1 = 2 specifies cond1 is the second derivative at the */ +/* first knot point. */ +/* ifn = 1 specifies condn is the first derivative at the */ +/* nth knot point. */ +/* ifn = 2 specifies condn is the second derivative at the */ +/* nth knot point. */ +/* output values: */ +/* y2(n) is the second derivative of the spline evaluated at */ +/* the knot points. */ + /* Parameter adjustments */ + --y2; + --y; + --x; + + /* Function Body */ + if (*n > 2000) { + s_stop("dspline: dimensions too large", (ftnlen)29); + } +/* y2(i) = u(i) + d(i)*y2(i+1), where */ +/* d(i) is temporarily stored in y2(i) (see below). */ + if (*if1 == 2) { +/* cond1 is second derivative at first point. */ +/* these two values assure that for above equation with d(i) temporarily */ +/* stored in y2(i) */ + y2[1] = 0.; + u[0] = *cond1; + } else if (*if1 == 1) { +/* cond1 is first derivative at first point. */ +/* special case (Press et al 3.3.5 with A = 1, and B=0) */ +/* of equations below where */ +/* a_j = 0 */ +/* b_j = -(x_j+1 - x_j)/3 */ +/* c_j = -(x_j+1 - x_j)/6 */ +/* r_j = cond1 - (y_j+1 - y_j)/(x_j+1 - x_j) */ +/* u(i) = r(i)/b(i) */ +/* d(i) = -c(i)/b(i) */ +/* N.B. d(i) is temporarily stored in y2. */ + y2[1] = -.5; + u[0] = 3. / (x[2] - x[1]) * ((y[2] - y[1]) / (x[2] - x[1]) - *cond1); + } else { + s_stop("dspline: incorrect if1 value specified", (ftnlen)38); + } +/* if original tri-diagonal system is characterized as */ +/* a_j y2_j-1 + b_j y2_j + c_j y2_j+1 = r_j */ +/* Then from Press et al. 3.3.7, we have the unscaled result: */ +/* a_j = (x_j - x_j-1)/6 */ +/* b_j = (x_j+1 - x_j-1)/3 */ +/* c_j = (x_j+1 - x_j)/6 */ +/* r_j = (y_j+1 - y_j)/(x_j+1 - x_j) - (y_j - y_j-1)/(x_j - x_j-1) */ +/* In practice, all these values are divided through by b_j/2 to scale */ +/* them, and from now on we will use these scaled values. */ + +/* forward elimination step: assume y2(i-1) = u(i-1) + d(i-1)*y2(i). */ +/* When this is substituted into above tridiagonal equation ==> */ +/* y2(i) = u(i) + d(i)*y2(i+1), where */ +/* u(i) = [r(i) - a(i) u(i-1)]/[b(i) + a(i) d(i-1)] */ +/* d(i) = -c(i)/[b(i) + a(i) d(i-1)] */ +/* N.B. d(i) is temporarily stored in y2. */ + i__1 = *n - 1; + for (i__ = 2; i__ <= i__1; ++i__) { +/* sig is scaled a(i) */ + sig = (x[i__] - x[i__ - 1]) / (x[i__ + 1] - x[i__ - 1]); +/* p is denominator = scaled a(i) d(i-1) + scaled b(i), where scaled */ +/* b(i) is 2. */ + p = sig * y2[i__ - 1] + 2.; +/* propagate d(i) equation above. Note sig-1 = -c(i) */ + y2[i__] = (sig - 1.) / p; +/* propagate scaled u(i) equation above */ + u[i__ - 1] = (((y[i__ + 1] - y[i__]) / (x[i__ + 1] - x[i__]) - (y[i__] + - y[i__ - 1]) / (x[i__] - x[i__ - 1])) * 6. / (x[i__ + 1] - + x[i__ - 1]) - sig * u[i__ - 2]) / p; + } + if (*ifn == 2) { +/* condn is second derivative at nth point. */ +/* These two values assure that in the equation below. */ + qn = 0.; + un = *condn; + } else if (*ifn == 1) { +/* specify condn is first derivative at nth point. */ +/* special case (Press et al 3.3.5 with A = 0, and B=1) */ +/* implies a_n y2(n-1) + b_n y2(n) = r_n, where */ +/* a_n = (x_n - x_n-1)/6 */ +/* b_n = (x_n - x_n-1)/3 */ +/* r_n = cond1 - (y_n - y_n-1)/(x_n - x_n-1) */ +/* use same propagation equation as above, only with c_n = 0 */ +/* ==> d_n = 0 ==> y2(n) = u(n) => */ +/* y(n) = [r(n) - a(n) u(n-1)]/[b(n) + a(n) d(n-1)] */ +/* qn is scaled a_n */ + qn = .5; +/* un is scaled r_n (N.B. un is not u(n))! Sorry for the mixed notation. */ + un = 3. / (x[*n] - x[*n - 1]) * (*condn - (y[*n] - y[*n - 1]) / (x[*n] + - x[*n - 1])); + } else { + s_stop("dspline: incorrect ifn value specified", (ftnlen)38); + } +/* N.B. d(i) is temporarily stored in y2, and everything is */ +/* scaled by b_n. */ +/* qn is scaled a_n, 1.d0 is scaled b_n, and un is scaled r_n. */ + y2[*n] = (un - qn * u[*n - 2]) / (qn * y2[*n - 1] + 1.); +/* back substitution. */ + for (k = *n - 1; k >= 1; --k) { + y2[k] = y2[k] * y2[k + 1] + u[k - 1]; + } + return 0; +} /* dspline_ */ + Property changes on: trunk/lib/qsastime/dspline.c ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision Added: svn:eol-style + native Added: trunk/lib/qsastime/dsplint.c =================================================================== --- trunk/lib/qsastime/dsplint.c (rev 0) +++ trunk/lib/qsastime/dsplint.c 2009-06-05 15:17:33 UTC (rev 10033) @@ -0,0 +1,113 @@ +/* + Copyright (C) 2009 Alan W. Irwin + + This file is part of PLplot. + + PLplot is free software; you can redistribute it and/or modify + it under the terms of the GNU General Library Public License as published + by the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + PLplot 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 Library General Public License for more details. + + You should have received a copy of the GNU Library General Public License + along with PLplot; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + + Provenance: This code was originally developed under the GPL as part of + the FreeEOS project (revision 121). This code has been converted from + Fortran to C with the aid of f2c and relicensed for PLplot under the LGPL + with the permission of the FreeEOS copyright holder (Alan W. Irwin). +*/ + +int dsplint_(doublereal *xa, doublereal *ya, doublereal *y2a, + integer *n, doublereal *x, doublereal *y, doublereal *dy, doublereal + *d2y) +{ + /* Initialized data */ + + static integer nsave = 0; + + /* System generated locals */ + integer i__1, i__2; + + /* Builtin functions */ + /* Subroutine */ int s_stop(char *, ftnlen); + + /* Local variables */ + static doublereal a, b, h__; + static integer k, khi, klo; + +/* evaluate spline = y and its derivatives dy and d2y at x given */ +/* xa, ya, y2a from dspline. */ + /* Parameter adjustments */ + --y2a; + --ya; + --xa; + + /* Function Body */ + if (*n != nsave) { +/* if call with different n value, then redo range */ + nsave = *n; + klo = 1; + khi = *n; + if (xa[klo] > *x) { + s_stop("dsplint: x too low", (ftnlen)18); + } + if (xa[khi] < *x) { + s_stop("dsplint: x too high", (ftnlen)19); + } + } else { +/* optimize range assuming continuous (ascending or */ +/* descending x calls. */ + if (xa[klo] > *x) { +/* x is descending so try next range. */ + khi = max(2,klo); + klo = khi - 1; +/* if x smaller than next range try lower limit. */ + if (xa[klo] > *x) { + klo = 1; + } + if (xa[klo] > *x) { + s_stop("dsplint: x too low", (ftnlen)18); + } + } else if (xa[khi] <= *x) { +/* x is ascending so try next range. */ +/* Computing MIN */ + i__1 = khi, i__2 = *n - 1; + klo = min(i__1,i__2); + khi = klo + 1; +/* if x larger than next range try upper limit. */ + if (xa[khi] <= *x) { + khi = *n; + } + if (xa[khi] < *x) { + s_stop("dsplint: x too high", (ftnlen)19); + } + } + } + while(khi - klo > 1) { + k = (khi + klo) / 2; + if (xa[k] > *x) { + khi = k; + } else { + klo = k; + } + } + h__ = xa[khi] - xa[klo]; + if (h__ <= 0.) { + s_stop("dsplint: bad xa input.", (ftnlen)22); + } + a = (xa[khi] - *x) / h__; + b = (*x - xa[klo]) / h__; + *y = a * ya[klo] + b * ya[khi] + (a * (a * a - 1.) * y2a[klo] + b * (b * + b - 1.) * y2a[khi]) * (h__ * h__) / 6.; + *dy = (-ya[klo] + ya[khi] + (-(a * 3. * a - 1.) * y2a[klo] + (b * 3. * b + - 1.) * y2a[khi]) * (h__ * h__) / 6.) / h__; + *d2y = a * y2a[klo] + b * y2a[khi]; + return 0; +} /* dsplint_ */ + Property changes on: trunk/lib/qsastime/dsplint.c ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision Added: svn:eol-style + native This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ai...@us...> - 2009-06-06 08:17:35
|
Revision: 10037 http://plplot.svn.sourceforge.net/plplot/?rev=10037&view=rev Author: airwin Date: 2009-06-06 08:17:29 +0000 (Sat, 06 Jun 2009) Log Message: ----------- Fix up a number of issues revealed by deltaT-gen.c and deltaT_test.c. With these changes, the C and Fortran versions of all deltaT-related code gives identical results proving the conversion from Fortran to C has been a success. Modified Paths: -------------- trunk/lib/qsastime/dspline.c trunk/lib/qsastime/dsplint.c Modified: trunk/lib/qsastime/dspline.c =================================================================== --- trunk/lib/qsastime/dspline.c 2009-06-06 08:12:03 UTC (rev 10036) +++ trunk/lib/qsastime/dspline.c 2009-06-06 08:17:29 UTC (rev 10037) @@ -22,20 +22,12 @@ Fortran to C with the aid of f2c and relicensed for PLplot under the LGPL with the permission of the FreeEOS copyright holder (Alan W. Irwin). */ -int dspline_(doublereal *x, doublereal *y, integer *n, - integer *if1, doublereal *cond1, integer *ifn, doublereal *condn, - doublereal *y2) +int dspline(double *x, double *y, int n, + int if1, double cond1, int ifn, double condn, double *y2) { - /* System generated locals */ - integer i__1; + int i__1, i__, k; + double p, u[2000], qn, un, sig; - /* Builtin functions */ - /* Subroutine */ int s_stop(char *, ftnlen); - - /* Local variables */ - static integer i__, k; - static doublereal p, u[2000], qn, un, sig; - /* input parameters: */ /* x(n) are the spline knot points */ /* y(n) are the function values at the knot points */ @@ -56,18 +48,18 @@ --x; /* Function Body */ - if (*n > 2000) { - s_stop("dspline: dimensions too large", (ftnlen)29); + if (n > 2000) { + return 1; } /* y2(i) = u(i) + d(i)*y2(i+1), where */ /* d(i) is temporarily stored in y2(i) (see below). */ - if (*if1 == 2) { + if (if1 == 2) { /* cond1 is second derivative at first point. */ /* these two values assure that for above equation with d(i) temporarily */ /* stored in y2(i) */ y2[1] = 0.; - u[0] = *cond1; - } else if (*if1 == 1) { + u[0] = cond1; + } else if (if1 == 1) { /* cond1 is first derivative at first point. */ /* special case (Press et al 3.3.5 with A = 1, and B=0) */ /* of equations below where */ @@ -79,9 +71,9 @@ /* d(i) = -c(i)/b(i) */ /* N.B. d(i) is temporarily stored in y2. */ y2[1] = -.5; - u[0] = 3. / (x[2] - x[1]) * ((y[2] - y[1]) / (x[2] - x[1]) - *cond1); + u[0] = 3. / (x[2] - x[1]) * ((y[2] - y[1]) / (x[2] - x[1]) - cond1); } else { - s_stop("dspline: incorrect if1 value specified", (ftnlen)38); + return 2; } /* if original tri-diagonal system is characterized as */ /* a_j y2_j-1 + b_j y2_j + c_j y2_j+1 = r_j */ @@ -99,7 +91,7 @@ /* u(i) = [r(i) - a(i) u(i-1)]/[b(i) + a(i) d(i-1)] */ /* d(i) = -c(i)/[b(i) + a(i) d(i-1)] */ /* N.B. d(i) is temporarily stored in y2. */ - i__1 = *n - 1; + i__1 = n - 1; for (i__ = 2; i__ <= i__1; ++i__) { /* sig is scaled a(i) */ sig = (x[i__] - x[i__ - 1]) / (x[i__ + 1] - x[i__ - 1]); @@ -113,12 +105,12 @@ - y[i__ - 1]) / (x[i__] - x[i__ - 1])) * 6. / (x[i__ + 1] - x[i__ - 1]) - sig * u[i__ - 2]) / p; } - if (*ifn == 2) { + if (ifn == 2) { /* condn is second derivative at nth point. */ /* These two values assure that in the equation below. */ qn = 0.; - un = *condn; - } else if (*ifn == 1) { + un = condn; + } else if (ifn == 1) { /* specify condn is first derivative at nth point. */ /* special case (Press et al 3.3.5 with A = 0, and B=1) */ /* implies a_n y2(n-1) + b_n y2(n) = r_n, where */ @@ -131,19 +123,19 @@ /* qn is scaled a_n */ qn = .5; /* un is scaled r_n (N.B. un is not u(n))! Sorry for the mixed notation. */ - un = 3. / (x[*n] - x[*n - 1]) * (*condn - (y[*n] - y[*n - 1]) / (x[*n] - - x[*n - 1])); + un = 3. / (x[n] - x[n - 1]) * (condn - (y[n] - y[n - 1]) / (x[n] + - x[n - 1])); } else { - s_stop("dspline: incorrect ifn value specified", (ftnlen)38); + return 3; } /* N.B. d(i) is temporarily stored in y2, and everything is */ /* scaled by b_n. */ /* qn is scaled a_n, 1.d0 is scaled b_n, and un is scaled r_n. */ - y2[*n] = (un - qn * u[*n - 2]) / (qn * y2[*n - 1] + 1.); + y2[n] = (un - qn * u[n - 2]) / (qn * y2[n - 1] + 1.); /* back substitution. */ - for (k = *n - 1; k >= 1; --k) { + for (k = n - 1; k >= 1; --k) { y2[k] = y2[k] * y2[k + 1] + u[k - 1]; } return 0; -} /* dspline_ */ +} Modified: trunk/lib/qsastime/dsplint.c =================================================================== --- trunk/lib/qsastime/dsplint.c 2009-06-06 08:12:03 UTC (rev 10036) +++ trunk/lib/qsastime/dsplint.c 2009-06-06 08:17:29 UTC (rev 10037) @@ -22,25 +22,19 @@ Fortran to C with the aid of f2c and relicensed for PLplot under the LGPL with the permission of the FreeEOS copyright holder (Alan W. Irwin). */ +# define MAX(a,b) (((a) > (b)) ? (a) : (b)) +# define MIN(a,b) (((a) < (b)) ? (a) : (b)) -int dsplint_(doublereal *xa, doublereal *ya, doublereal *y2a, - integer *n, doublereal *x, doublereal *y, doublereal *dy, doublereal - *d2y) +int dsplint(double *xa, double *ya, double *y2a, + int n, double x, double *y, double *dy, double *d2y) { /* Initialized data */ - static integer nsave = 0; + static int nsave = 0, khi, klo; - /* System generated locals */ - integer i__1, i__2; + int i__1, i__2, k; + double a, b, h__; - /* Builtin functions */ - /* Subroutine */ int s_stop(char *, ftnlen); - - /* Local variables */ - static doublereal a, b, h__; - static integer k, khi, klo; - /* evaluate spline = y and its derivatives dy and d2y at x given */ /* xa, ya, y2a from dspline. */ /* Parameter adjustments */ @@ -49,49 +43,49 @@ --xa; /* Function Body */ - if (*n != nsave) { + if (n != nsave) { /* if call with different n value, then redo range */ - nsave = *n; + nsave = n; klo = 1; - khi = *n; - if (xa[klo] > *x) { - s_stop("dsplint: x too low", (ftnlen)18); + khi = n; + if (xa[klo] > x) { + return 1; } - if (xa[khi] < *x) { - s_stop("dsplint: x too high", (ftnlen)19); + if (xa[khi] < x) { + return 2; } } else { /* optimize range assuming continuous (ascending or */ /* descending x calls. */ - if (xa[klo] > *x) { + if (xa[klo] > x) { /* x is descending so try next range. */ - khi = max(2,klo); + khi = MAX(2,klo); klo = khi - 1; /* if x smaller than next range try lower limit. */ - if (xa[klo] > *x) { + if (xa[klo] > x) { klo = 1; } - if (xa[klo] > *x) { - s_stop("dsplint: x too low", (ftnlen)18); + if (xa[klo] > x) { + return 1; } - } else if (xa[khi] <= *x) { + } else if (xa[khi] <= x) { /* x is ascending so try next range. */ /* Computing MIN */ - i__1 = khi, i__2 = *n - 1; - klo = min(i__1,i__2); + i__1 = khi, i__2 = n - 1; + klo = MIN(i__1,i__2); khi = klo + 1; /* if x larger than next range try upper limit. */ - if (xa[khi] <= *x) { - khi = *n; + if (xa[khi] <= x) { + khi = n; } - if (xa[khi] < *x) { - s_stop("dsplint: x too high", (ftnlen)19); + if (xa[khi] < x) { + return 2; } } } while(khi - klo > 1) { k = (khi + klo) / 2; - if (xa[k] > *x) { + if (xa[k] > x) { khi = k; } else { klo = k; @@ -99,15 +93,15 @@ } h__ = xa[khi] - xa[klo]; if (h__ <= 0.) { - s_stop("dsplint: bad xa input.", (ftnlen)22); + return 3; } - a = (xa[khi] - *x) / h__; - b = (*x - xa[klo]) / h__; + a = (xa[khi] - x) / h__; + b = (x - xa[klo]) / h__; *y = a * ya[klo] + b * ya[khi] + (a * (a * a - 1.) * y2a[klo] + b * (b * b - 1.) * y2a[khi]) * (h__ * h__) / 6.; *dy = (-ya[klo] + ya[khi] + (-(a * 3. * a - 1.) * y2a[klo] + (b * 3. * b - 1.) * y2a[khi]) * (h__ * h__) / 6.) / h__; *d2y = a * y2a[klo] + b * y2a[khi]; return 0; -} /* dsplint_ */ +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ai...@us...> - 2009-06-06 17:34:14
|
Revision: 10040 http://plplot.svn.sourceforge.net/plplot/?rev=10040&view=rev Author: airwin Date: 2009-06-06 17:34:12 +0000 (Sat, 06 Jun 2009) Log Message: ----------- Drop last two arguments (first and second derivative) from dsplint results. Use qsastimeP.h to declare dsplint. Modified Paths: -------------- trunk/lib/qsastime/deltaT.out_standard trunk/lib/qsastime/deltaT_test.c trunk/lib/qsastime/dsplint.c trunk/lib/qsastime/qsastimeP.h.in Modified: trunk/lib/qsastime/deltaT.out_standard =================================================================== --- trunk/lib/qsastime/deltaT.out_standard 2009-06-06 17:01:54 UTC (rev 10039) +++ trunk/lib/qsastime/deltaT.out_standard 2009-06-06 17:34:12 UTC (rev 10040) @@ -1,3001 +1,3001 @@ - -1000. 25400. -1.649379E+01 6.400000E-03 - -999. 25384. -1.648764E+01 5.904277E-03 - -998. 25367. -1.648199E+01 5.408553E-03 - -997. 25351. -1.647683E+01 4.912830E-03 - -996. 25334. -1.647216E+01 4.417106E-03 - -995. 25318. -1.646799E+01 3.921383E-03 - -994. 25301. -1.646432E+01 3.425659E-03 - -993. 25285. -1.646114E+01 2.929936E-03 - -992. 25268. -1.645846E+01 2.434213E-03 - -991. 25252. -1.645627E+01 1.938489E-03 - -990. 25235. -1.645458E+01 1.442766E-03 - -989. 25219. -1.645339E+01 9.470423E-04 - -988. 25202. -1.645269E+01 4.513189E-04 - -987. 25186. -1.645248E+01 -4.440453E-05 - -986. 25169. -1.645278E+01 -5.401280E-04 - -985. 25153. -1.645356E+01 -1.035851E-03 - -984. 25137. -1.645485E+01 -1.531575E-03 - -983. 25120. -1.645663E+01 -2.027298E-03 - -982. 25104. -1.645890E+01 -2.523022E-03 - -981. 25087. -1.646167E+01 -3.018745E-03 - -980. 25071. -1.646494E+01 -3.514469E-03 - -979. 25054. -1.646870E+01 -4.010192E-03 - -978. 25038. -1.647296E+01 -4.505915E-03 - -977. 25021. -1.647771E+01 -5.001639E-03 - -976. 25005. -1.648296E+01 -5.497362E-03 - -975. 24988. -1.648871E+01 -5.993086E-03 - -974. 24972. -1.649495E+01 -6.488809E-03 - -973. 24955. -1.650169E+01 -6.984532E-03 - -972. 24939. -1.650892E+01 -7.480256E-03 - -971. 24922. -1.651665E+01 -7.975979E-03 - -970. 24906. -1.652487E+01 -8.471703E-03 - -969. 24889. -1.653359E+01 -8.967426E-03 - -968. 24873. -1.654280E+01 -9.463150E-03 - -967. 24856. -1.655252E+01 -9.958873E-03 - -966. 24840. -1.656272E+01 -1.045460E-02 - -965. 24823. -1.657342E+01 -1.095032E-02 - -964. 24807. -1.658462E+01 -1.144604E-02 - -963. 24790. -1.659632E+01 -1.194177E-02 - -962. 24773. -1.660851E+01 -1.243749E-02 - -961. 24757. -1.662119E+01 -1.293321E-02 - -960. 24740. -1.663437E+01 -1.342894E-02 - -959. 24723. -1.664805E+01 -1.392466E-02 - -958. 24707. -1.666222E+01 -1.442038E-02 - -957. 24690. -1.667689E+01 -1.491611E-02 - -956. 24673. -1.669205E+01 -1.541183E-02 - -955. 24657. -1.670771E+01 -1.590755E-02 - -954. 24640. -1.672387E+01 -1.640328E-02 - -953. 24623. -1.674052E+01 -1.689900E-02 - -952. 24607. -1.675767E+01 -1.739472E-02 - -951. 24590. -1.677531E+01 -1.789045E-02 - -950. 24573. -1.679345E+01 -1.838617E-02 - -949. 24556. -1.681208E+01 -1.888189E-02 - -948. 24539. -1.683121E+01 -1.937762E-02 - -947. 24523. -1.685084E+01 -1.987334E-02 - -946. 24506. -1.687096E+01 -2.036906E-02 - -945. 24489. -1.689158E+01 -2.086479E-02 - -944. 24472. -1.691269E+01 -2.136051E-02 - -943. 24455. -1.693430E+01 -2.185624E-02 - -942. 24438. -1.695640E+01 -2.235196E-02 - -941. 24421. -1.697900E+01 -2.284768E-02 - -940. 24404. -1.700210E+01 -2.334341E-02 - -939. 24387. -1.702569E+01 -2.383913E-02 - -938. 24370. -1.704977E+01 -2.433485E-02 - -937. 24353. -1.707436E+01 -2.483058E-02 - -936. 24336. -1.709944E+01 -2.532630E-02 - -935. 24319. -1.712501E+01 -2.582202E-02 - -934. 24302. -1.715108E+01 -2.631775E-02 - -933. 24284. -1.717765E+01 -2.681347E-02 - -932. 24267. -1.720471E+01 -2.730919E-02 - -931. 24250. -1.723226E+01 -2.780492E-02 - -930. 24233. -1.726032E+01 -2.830064E-02 - -929. 24216. -1.728887E+01 -2.879636E-02 - -928. 24198. -1.731791E+01 -2.929209E-02 - -927. 24181. -1.734745E+01 -2.978781E-02 - -926. 24164. -1.737749E+01 -3.028353E-02 - -925. 24146. -1.740802E+01 -3.077926E-02 - -924. 24129. -1.743904E+01 -3.127498E-02 - -923. 24111. -1.747057E+01 -3.177070E-02 - -922. 24094. -1.750258E+01 -3.226643E-02 - -921. 24076. -1.753510E+01 -3.276215E-02 - -920. 24059. -1.756811E+01 -3.325787E-02 - -919. 24041. -1.760161E+01 -3.375360E-02 - -918. 24023. -1.763562E+01 -3.424932E-02 - -917. 24006. -1.767011E+01 -3.474504E-02 - -916. 23988. -1.770511E+01 -3.524077E-02 - -915. 23970. -1.774060E+01 -3.573649E-02 - -914. 23953. -1.777658E+01 -3.623221E-02 - -913. 23935. -1.781306E+01 -3.672794E-02 - -912. 23917. -1.785004E+01 -3.722366E-02 - -911. 23899. -1.788751E+01 -3.771938E-02 - -910. 23881. -1.792547E+01 -3.821511E-02 - -909. 23863. -1.796394E+01 -3.871083E-02 - -908. 23845. -1.800290E+01 -3.920656E-02 - -907. 23827. -1.804235E+01 -3.970228E-02 - -906. 23809. -1.808230E+01 -4.019800E-02 - -905. 23791. -1.812275E+01 -4.069373E-02 - -904. 23773. -1.816369E+01 -4.118945E-02 - -903. 23755. -1.820513E+01 -4.168517E-02 - -902. 23737. -1.824706E+01 -4.218090E-02 - -901. 23718. -1.828949E+01 -4.267662E-02 - -900. 23700. -1.833241E+01 -4.317234E-02 - -899. 23682. -1.837454E+01 -4.107773E-02 - -898. 23663. -1.841457E+01 -3.898311E-02 - -897. 23645. -1.845250E+01 -3.688849E-02 - -896. 23626. -1.848834E+01 -3.479387E-02 - -895. 23608. -1.852209E+01 -3.269926E-02 - -894. 23589. -1.855374E+01 -3.060464E-02 - -893. 23571. -1.858330E+01 -2.851002E-02 - -892. 23552. -1.861076E+01 -2.641541E-02 - -891. 23534. -1.863613E+01 -2.432079E-02 - -890. 23515. -1.865940E+01 -2.222617E-02 - -889. 23496. -1.868058E+01 -2.013155E-02 - -888. 23478. -1.869967E+01 -1.803694E-02 - -887. 23459. -1.871666E+01 -1.594232E-02 - -886. 23440. -1.873155E+01 -1.384770E-02 - -885. 23421. -1.874435E+01 -1.175309E-02 - -884. 23403. -1.875506E+01 -9.658469E-03 - -883. 23384. -1.876367E+01 -7.563851E-03 - -882. 23365. -1.877019E+01 -5.469234E-03 - -881. 23346. -1.877461E+01 -3.374617E-03 - -880. 23328. -1.877693E+01 -1.280000E-03 - -879. 23309. -1.877717E+01 8.146171E-04 - -878. 23290. -1.877531E+01 2.909234E-03 - -877. 23271. -1.877135E+01 5.003851E-03 - -876. 23252. -1.876530E+01 7.098469E-03 - -875. 23234. -1.875715E+01 9.193086E-03 - -874. 23215. -1.874691E+01 1.128770E-02 - -873. 23196. -1.873458E+01 1.338232E-02 - -872. 23177. -1.872015E+01 1.547694E-02 - -871. 23159. -1.870362E+01 1.757155E-02 - -870. 23140. -1.868500E+01 1.966617E-02 - -869. 23121. -1.866429E+01 2.176079E-02 - -868. 23103. -1.864148E+01 2.385541E-02 - -867. 23084. -1.861658E+01 2.595002E-02 - -866. 23065. -1.858958E+01 2.804464E-02 - -865. 23047. -1.856049E+01 3.013926E-02 - -864. 23028. -1.852930E+01 3.223387E-02 - -863. 23010. -1.849602E+01 3.432849E-02 - -862. 22991. -1.846065E+01 3.642311E-02 - -861. 22973. -1.842318E+01 3.851773E-02 - -860. 22955. -1.838361E+01 4.061234E-02 - -859. 22936. -1.834195E+01 4.270696E-02 - -858. 22918. -1.829820E+01 4.480158E-02 - -857. 22900. -1.825235E+01 4.689619E-02 - -856. 22881. -1.820441E+01 4.899081E-02 - -855. 22863. -1.815437E+01 5.108543E-02 - -854. 22845. -1.810223E+01 5.318005E-02 - -853. 22827. -1.804801E+01 5.527466E-02 - -852. 22809. -1.799168E+01 5.736928E-02 - -851. 22791. -1.793327E+01 5.946390E-02 - -850. 22773. -1.787276E+01 6.155851E-02 - -849. 22755. -1.781015E+01 6.365313E-02 - -848. 22737. -1.774545E+01 6.574775E-02 - -847. 22720. -1.767866E+01 6.784237E-02 - -846. 22702. -1.760977E+01 6.993698E-02 - -845. 22685. -1.753878E+01 7.203160E-02 - -844. 22667. -1.746570E+01 7.412622E-02 - -843. 22650. -1.739053E+01 7.622083E-02 - -842. 22632. -1.731326E+01 7.831545E-02 - -841. 22615. -1.723390E+01 8.041007E-02 - -840. 22598. -1.715244E+01 8.250469E-02 - -839. 22581. -1.706889E+01 8.459930E-02 - -838. 22564. -1.698324E+01 8.669392E-02 - -837. 22547. -1.689550E+01 8.878854E-02 - -836. 22530. -1.680567E+01 9.088315E-02 - -835. 22513. -1.671374E+01 9.297777E-02 - -834. 22496. -1.661971E+01 9.507239E-02 - -833. 22480. -1.652359E+01 9.716700E-02 - -832. 22463. -1.642538E+01 9.926162E-02 - -831. 22447. -1.632507E+01 1.013562E-01 - -830. 22431. -1.622266E+01 1.034509E-01 - -829. 22415. -1.611817E+01 1.055455E-01 - -828. 22398. -1.601157E+01 1.076401E-01 - -827. 22383. -1.590289E+01 1.097347E-01 - -826. 22367. -1.579210E+01 1.118293E-01 - -825. 22351. -1.567923E+01 1.139239E-01 - -824. 22335. -1.556426E+01 1.160186E-01 - -823. 22320. -1.544719E+01 1.181132E-01 - -822. 22304. -1.532803E+01 1.202078E-01 - -821. 22289. -1.520677E+01 1.223024E-01 - -820. 22274. -1.508342E+01 1.243970E-01 - -819. 22259. -1.495798E+01 1.264916E-01 - -818. 22244. -1.483044E+01 1.285863E-01 - -817. 22229. -1.470081E+01 1.306809E-01 - -816. 22215. -1.456908E+01 1.327755E-01 - -815. 22200. -1.443526E+01 1.348701E-01 - -814. 22186. -1.429934E+01 1.369647E-01 - -813. 22172. -1.416133E+01 1.390593E-01 - -812. 22157. -1.402122E+01 1.411540E-01 - -811. 22144. -1.387902E+01 1.432486E-01 - -810. 22130. -1.373472E+01 1.453432E-01 - -809. 22116. -1.358833E+01 1.474378E-01 - -808. 22103. -1.343985E+01 1.495324E-01 - -807. 22089. -1.328927E+01 1.516271E-01 - -806. 22076. -1.313659E+01 1.537217E-01 - -805. 22063. -1.298182E+01 1.558163E-01 - -804. 22050. -1.282496E+01 1.579109E-01 - -803. 22037. -1.266600E+01 1.600055E-01 - -802. 22025. -1.250495E+01 1.621001E-01 - -801. 22012. -1.234180E+01 1.641948E-01 - -800. 22000. -1.217656E+01 1.662894E-01 - -799. 21988. -1.201211E+01 1.626066E-01 - -798. 21976. -1.185135E+01 1.589239E-01 - -797. 21964. -1.169426E+01 1.552411E-01 - -796. 21953. -1.154086E+01 1.515584E-01 - -795. 21941. -1.139115E+01 1.478756E-01 - -794. 21930. -1.124511E+01 1.441929E-01 - -793. 21919. -1.110276E+01 1.405102E-01 - -792. 21908. -1.096409E+01 1.368274E-01 - -791. 21897. -1.082911E+01 1.331447E-01 - -790. 21886. -1.069780E+01 1.294619E-01 - -789. 21875. -1.057018E+01 1.257792E-01 - -788. 21865. -1.044625E+01 1.220964E-01 - -787. 21854. -1.032599E+01 1.184137E-01 - -786. 21844. -1.020942E+01 1.147309E-01 - -785. 21834. -1.009653E+01 1.110482E-01 - -784. 21824. -9.987321E+00 1.073654E-01 - -783. 21814. -9.881797E+00 1.036827E-01 - -782. 21804. -9.779956E+00 9.999996E-02 - -781. 21794. -9.681797E+00 9.631721E-02 - -780. 21785. -9.587322E+00 9.263447E-02 - -779. 21775. -9.496529E+00 8.895172E-02 - -778. 21766. -9.409418E+00 8.526898E-02 - -777. 21756. -9.325991E+00 8.158623E-02 - -776. 21747. -9.246246E+00 7.790349E-02 - -775. 21738. -9.170184E+00 7.422074E-02 - -774. 21729. -9.097804E+00 7.053800E-02 - -773. 21720. -9.029108E+00 6.685525E-02 - -772. 21711. -8.964094E+00 6.317251E-02 - -771. 21702. -8.902763E+00 5.948976E-02 - -770. 21693. -8.845114E+00 5.580702E-02 - -769. 21684. -8.791149E+00 5.212427E-02 - -768. 21675. -8.740866E+00 4.844153E-02 - -767. 21667. -8.694266E+00 4.475878E-02 - -766. 21658. -8.651348E+00 4.107604E-02 - -765. 21649. -8.612113E+00 3.739329E-02 - -764. 21641. -8.576562E+00 3.371055E-02 - -763. 21632. -8.544692E+00 3.002780E-02 - -762. 21624. -8.516506E+00 2.634506E-02 - -761. 21615. -8.492002E+00 2.266231E-02 - -760. 21607. -8.471181E+00 1.897957E-02 - -759. 21598. -8.454043E+00 1.529682E-02 - -758. 21590. -8.440588E+00 1.161408E-02 - -757. 21581. -8.430815E+00 7.931332E-03 - -756. 21573. -8.424725E+00 4.248587E-03 - -755. 21564. -8.422318E+00 5.658415E-04 - -754. 21556. -8.423593E+00 -3.116904E-03 - -753. 21548. -8.428552E+00 -6.799649E-03 - -752. 21539. -8.437193E+00 -1.048239E-02 - -751. 21531. -8.449516E+00 -1.416514E-02 - -750. 21522. -8.465523E+00 -1.784788E-02 - -749. 21514. -8.485212E+00 -2.153063E-02 - -748. 21505. -8.508584E+00 -2.521337E-02 - -747. 21497. -8.535639E+00 -2.889612E-02 - -746. 21488. -8.566376E+00 -3.257886E-02 - -745. 21480. -8.600797E+00 -3.626161E-02 - -744. 21471. -8.638900E+00 -3.994435E-02 - -743. 21462. -8.680685E+00 -4.362710E-02 - -742. 21454. -8.726154E+00 -4.730984E-02 - -741. 21445. -8.775305E+00 -5.099259E-02 - -740. 21436. -8.828139E+00 -5.467533E-02 - -739. 21427. -8.884656E+00 -5.835808E-02 - -738. 21418. -8.944855E+00 -6.204082E-02 - -737. 21409. -9.008737E+00 -6.572357E-02 - -736. 21400. -9.076302E+00 -6.940632E-02 - -735. 21391. -9.147550E+00 -7.308906E-02 - -734. 21382. -9.222480E+00 -7.677181E-02 - -733. 21373. -9.301094E+00 -8.045455E-02 - -732. 21363. -9.383389E+00 -8.413730E-02 - -731. 21354. -9.469368E+00 -8.782004E-02 - -730. 21345. -9.559030E+00 -9.150279E-02 - -729. 21335. -9.652374E+00 -9.518553E-02 - -728. 21325. -9.749401E+00 -9.886828E-02 - -727. 21315. -9.850110E+00 -1.025510E-01 - -726. 21306. -9.954503E+00 -1.062338E-01 - -725. 21296. -1.006258E+01 -1.099165E-01 - -724. 21285. -1.017434E+01 -1.135993E-01 - -723. 21275. -1.028978E+01 -1.172820E-01 - -722. 21265. -1.040890E+01 -1.209647E-01 - -721. 21254. -1.053171E+01 -1.246475E-01 - -720. 21244. -1.065819E+01 -1.283302E-01 - -719. 21233. -1.078837E+01 -1.320130E-01 - -718. 21222. -1.092222E+01 -1.356957E-01 - -717. 21211. -1.105976E+01 -1.393785E-01 - -716. 21200. -1.120098E+01 -1.430612E-01 - -715. 21189. -1.134588E+01 -1.467440E-01 - -714. 21177. -1.149447E+01 -1.504267E-01 - -713. 21166. -1.164673E+01 -1.541095E-01 - -712. 21154. -1.180268E+01 -1.577922E-01 - -711. 21142. -1.196232E+01 -1.614749E-01 - -710. 21130. -1.212563E+01 -1.651577E-01 - -709. 21118. -1.229263E+01 -1.688404E-01 - -708. 21106. -1.246332E+01 -1.725232E-01 - -707. 21093. -1.263768E+01 -1.762059E-01 - -706. 21080. -1.281573E+01 -1.798887E-01 - -705. 21067. -1.299746E+01 -1.835714E-01 - -704. 21054. -1.318287E+01 -1.872542E-01 - -703. 21041. -1.337197E+01 -1.909369E-01 - -702. 21028. -1.356474E+01 -1.946196E-01 - -701. 21014. -1.376120E+01 -1.983024E-01 - -700. 21000. -1.396135E+01 -2.019851E-01 - -699. 20986. -1.416200E+01 -1.993088E-01 - -698. 20972. -1.435997E+01 -1.966324E-01 - -697. 20957. -1.455526E+01 -1.939560E-01 - -696. 20943. -1.474788E+01 -1.912797E-01 - -695. 20928. -1.493782E+01 -1.886033E-01 - -694. 20913. -1.512508E+01 -1.859270E-01 - -693. 20897. -1.530967E+01 -1.832506E-01 - -692. 20882. -1.549159E+01 -1.805742E-01 - -691. 20866. -1.567082E+01 -1.778979E-01 - -690. 20851. -1.584738E+01 -1.752215E-01 - -689. 20835. -1.602126E+01 -1.725451E-01 - -688. 20819. -1.619247E+01 -1.698688E-01 - -687. 20802. -1.636100E+01 -1.671924E-01 - -686. 20786. -1.652686E+01 -1.645161E-01 - -685. 20769. -1.669003E+01 -1.618397E-01 - -684. 20753. -1.685054E+01 -1.591633E-01 - -683. 20736. -1.700836E+01 -1.564870E-01 - -682. 20719. -1.716351E+01 -1.538106E-01 - -681. 20701. -1.731598E+01 -1.511342E-01 - -680. 20684. -1.746578E+01 -1.484579E-01 - -679. 20666. -1.761290E+01 -1.457815E-01 - -678. 20649. -1.775734E+01 -1.431051E-01 - -677. 20631. -1.789911E+01 -1.404288E-01 - -676. 20613. -1.803820E+01 -1.377524E-01 - -675. 20595. -1.817461E+01 -1.350761E-01 - -674. 20577. -1.830835E+01 -1.323997E-01 - -673. 20558. -1.843941E+01 -1.297233E-01 - -672. 20540. -1.856780E+01 -1.270470E-01 - -671. 20521. -1.869351E+01 -1.243706E-01 - -670. 20502. -1.881654E+01 -1.216942E-01 - -669. 20483. -1.893690E+01 -1.190179E-01 - -668. 20464. -1.905457E+01 -1.163415E-01 - -667. 20445. -1.916958E+01 -1.136652E-01 - -666. 20426. -1.928191E+01 -1.109888E-01 - -665. 20407. -1.939156E+01 -1.083124E-01 - -664. 20387. -1.949853E+01 -1.056361E-01 - -663. 20368. -1.960283E+01 -1.029597E-01 - -662. 20348. -1.970445E+01 -1.002833E-01 - -661. 20328. -1.980339E+01 -9.760697E-02 - -660. 20309. -1.989966E+01 -9.493061E-02 - -659. 20289. -1.999326E+01 -9.225425E-02 - -658. 20269. -2.008417E+01 -8.957788E-02 - -657. 20248. -2.017241E+01 -8.690152E-02 - -656. 20228. -2.025797E+01 -8.422516E-02 - -655. 20208. -2.034086E+01 -8.154879E-02 - -654. 20187. -2.042107E+01 -7.887243E-02 - -653. 20167. -2.049861E+01 -7.619607E-02 - -652. 20146. -2.057346E+01 -7.351970E-02 - -651. 20126. -2.064565E+01 -7.084334E-02 - -650. 20105. -2.071515E+01 -6.816698E-02 - -649. 20084. -2.078198E+01 -6.549061E-02 - -648. 20064. -2.084613E+01 -6.281425E-02 - -647. 20043. -2.090761E+01 -6.013789E-02 - -646. 20022. -2.096641E+01 -5.746153E-02 - -645. 20001. -2.102253E+01 -5.478516E-02 - -644. 19980. -2.107598E+01 -5.210880E-02 - -643. 19959. -2.112675E+01 -4.943244E-02 - -642. 19938. -2.117484E+01 -4.675607E-02 - -641. 19916. -2.122026E+01 -4.407971E-02 - -640. 19895. -2.126300E+01 -4.140335E-02 - -639. 19874. -2.130307E+01 -3.872698E-02 - -638. 19852. -2.134046E+01 -3.605062E-02 - -637. 19831. -2.137517E+01 -3.337426E-02 - -636. 19810. -2.140721E+01 -3.069789E-02 - -635. 19788. -2.143657E+01 -2.802153E-02 - -634. 19767. -2.146325E+01 -2.534517E-02 - -633. 19745. -2.148726E+01 -2.266880E-02 - -632. 19724. -2.150859E+01 -1.999244E-02 - -631. 19702. -2.152724E+01 -1.731608E-02 - -630. 19681. -2.154322E+01 -1.463971E-02 - -629. 19659. -2.155652E+01 -1.196335E-02 - -628. 19638. -2.156714E+01 -9.286988E-03 - -627. 19616. -2.157509E+01 -6.610625E-03 - -626. 19595. -2.158037E+01 -3.934261E-03 - -625. 19573. -2.158296E+01 -1.257898E-03 - -624. 19551. -2.158288E+01 1.418465E-03 - -623. 19530. -2.158013E+01 4.094828E-03 - -622. 19508. -2.157469E+01 6.771191E-03 - -621. 19487. -2.156658E+01 9.447555E-03 - -620. 19465. -2.155580E+01 1.212392E-02 - -619. 19444. -2.154234E+01 1.480028E-02 - -618. 19422. -2.152620E+01 1.747664E-02 - -617. 19401. -2.150738E+01 2.015301E-02 - -616. 19379. -2.148589E+01 2.282937E-02 - -615. 19358. -2.146172E+01 2.550573E-02 - -614. 19336. -2.143488E+01 2.818210E-02 - -613. 19315. -2.140536E+01 3.085846E-02 - -612. 19293. -2.137316E+01 3.353482E-02 - -611. 19272. -2.133829E+01 3.621119E-02 - -610. 19251. -2.130074E+01 3.888755E-02 - -609. 19229. -2.126051E+01 4.156391E-02 - -608. 19208. -2.121761E+01 4.424028E-02 - -607. 19187. -2.117203E+01 4.691664E-02 - -606. 19166. -2.112378E+01 4.959300E-02 - -605. 19145. -2.107285E+01 5.226937E-02 - -604. 19124. -2.101924E+01 5.494573E-02 - -603. 19103. -2.096296E+01 5.762209E-02 - -602. 19082. -2.090400E+01 6.029846E-02 - -601. 19061. -2.084236E+01 6.297482E-02 - -600. 19040. -2.077805E+01 6.565118E-02 - -599. 19019. -2.071270E+01 6.504847E-02 - -598. 18999. -2.064795E+01 6.444577E-02 - -597. 18978. -2.058380E+01 6.384306E-02 - -596. 18957. -2.052026E+01 6.324035E-02 - -595. 18937. -2.045732E+01 6.263764E-02 - -594. 18916. -2.039499E+01 6.203494E-02 - -593. 18896. -2.033325E+01 6.143223E-02 - -592. 18876. -2.027212E+01 6.082952E-02 - -591. 18856. -2.021160E+01 6.022681E-02 - -590. 18835. -2.015167E+01 5.962410E-02 - -589. 18815. -2.009235E+01 5.902140E-02 - -588. 18795. -2.003363E+01 5.841869E-02 - -587. 18775. -1.997551E+01 5.781598E-02 - -586. 18755. -1.991800E+01 5.721327E-02 - -585. 18735. -1.986108E+01 5.661057E-02 - -584. 18716. -1.980477E+01 5.600786E-02 - -583. 18696. -1.974907E+01 5.540515E-02 - -582. 18676. -1.969396E+01 5.480244E-02 - -581. 18656. -1.963946E+01 5.419974E-02 - -580. 18637. -1.958556E+01 5.359703E-02 - -579. 18617. -1.953227E+01 5.299432E-02 - -578. 18598. -1.947958E+01 5.239161E-02 - -577. 18578. -1.942749E+01 5.178890E-02 - -576. 18559. -1.937600E+01 5.118620E-02 - -575. 18539. -1.932511E+01 5.058349E-02 - -574. 18520. -1.927483E+01 4.998078E-02 - -573. 18501. -1.922515E+01 4.937807E-02 - -572. 18482. -1.917607E+01 4.877537E-02 - -571. 18463. -1.912760E+01 4.817266E-02 - -570. 18443. -1.907973E+01 4.756995E-02 - -569. 18424. -1.903246E+01 4.696724E-02 - -568. 18405. -1.898579E+01 4.636454E-02 - -567. 18386. -1.893973E+01 4.576183E-02 - -566. 18368. -1.889427E+01 4.515912E-02 - -565. 18349. -1.884941E+01 4.455641E-02 - -564. 18330. -1.880516E+01 4.395370E-02 - -563. 18311. -1.876151E+01 4.335100E-02 - -562. 18292. -1.871846E+01 4.274829E-02 - -561. 18274. -1.867601E+01 4.214558E-02 - -560. 18255. -1.863417E+01 4.154287E-02 - -559. 18236. -1.859292E+01 4.094017E-02 - -558. 18218. -1.855228E+01 4.033746E-02 - -557. 18199. -1.851225E+01 3.973475E-02 - -556. 18181. -1.847282E+01 3.913204E-02 - -555. 18162. -1.843398E+01 3.852933E-02 - -554. 18144. -1.839576E+01 3.792663E-02 - -553. 18126. -1.835813E+01 3.732392E-02 - -552. 18107. -1.832111E+01 3.672121E-02 - -551. 18089. -1.828469E+01 3.611850E-02 - -550. 18071. -1.824887E+01 3.551580E-02 - -549. 18052. -1.821366E+01 3.491309E-02 - -548. 18034. -1.817905E+01 3.431038E-02 - -547. 18016. -1.814504E+01 3.370767E-02 - -546. 17998. -1.811163E+01 3.310497E-02 - -545. 17980. -1.807883E+01 3.250226E-02 - -544. 17962. -1.804663E+01 3.189955E-02 - -543. 17944. -1.801503E+01 3.129684E-02 - -542. 17926. -1.798403E+01 3.069413E-02 - -541. 17908. -1.795364E+01 3.009143E-02 - -540. 17890. -1.792385E+01 2.948872E-02 - -539. 17872. -1.789466E+01 2.888601E-02 - -538. 17854. -1.786608E+01 2.828330E-02 - -537. 17836. -1.783810E+01 2.768060E-02 - -536. 17818. -1.781072E+01 2.707789E-02 - -535. 17801. -1.778394E+01 2.647518E-02 - -534. 17783. -1.775777E+01 2.587247E-02 - -533. 17765. -1.773219E+01 2.526977E-02 - -532. 17747. -1.770723E+01 2.466706E-02 - -531. 17730. -1.768286E+01 2.406435E-02 - -530. 17712. -1.765910E+01 2.346164E-02 - -529. 17694. -1.763594E+01 2.285893E-02 - -528. 17677. -1.761338E+01 2.225623E-02 - -527. 17659. -1.759142E+01 2.165352E-02 - -526. 17641. -1.757007E+01 2.105081E-02 - -525. 17624. -1.754932E+01 2.044810E-02 - -524. 17606. -1.752918E+01 1.984540E-02 - -523. 17589. -1.750963E+01 1.924269E-02 - -522. 17571. -1.749069E+01 1.863998E-02 - -521. 17554. -1.747235E+01 1.803727E-02 - -520. 17536. -1.745462E+01 1.743457E-02 - -519. 17519. -1.743748E+01 1.683186E-02 - -518. 17502. -1.742095E+01 1.622915E-02 - -517. 17484. -1.740502E+01 1.562644E-02 - -516. 17467. -1.738970E+01 1.502373E-02 - -515. 17449. -1.737498E+01 1.442103E-02 - -514. 17432. -1.736086E+01 1.381832E-02 - -513. 17415. -1.734734E+01 1.321561E-02 - -512. 17397. -1.733443E+01 1.261290E-02 - -511. 17380. -1.732211E+01 1.201020E-02 - -510. 17363. -1.731041E+01 1.140749E-02 - -509. 17345. -1.729930E+01 1.080478E-02 - -508. 17328. -1.728880E+01 1.020207E-02 - -507. 17311. -1.727890E+01 9.599365E-03 - -506. 17293. -1.726960E+01 8.996657E-03 - -505. 17276. -1.726090E+01 8.393950E-03 - -504. 17259. -1.725281E+01 7.791242E-03 - -503. 17242. -1.724532E+01 7.188534E-03 - -502. 17224. -1.723843E+01 6.585827E-03 - -501. 17207. -1.723215E+01 5.983119E-03 - -500. 17190. -1.722647E+01 5.380411E-03 - -499. 17173. -1.722098E+01 5.594879E-03 - -498. 17156. -1.721528E+01 5.809346E-03 - -497. 17138. -1.720936E+01 6.023814E-03 - -496. 17121. -1.720323E+01 6.238282E-03 - -495. 17104. -1.719688E+01 6.452749E-03 - -494. 17087. -1.719032E+01 6.667217E-03 - -493. 17070. -1.718355E+01 6.881685E-03 - -492. 17052. -1.717656E+01 7.096152E-03 - -491. 17035. -1.716936E+01 7.310620E-03 - -490. 17018. -1.716194E+01 7.525087E-03 - -489. 17001. -1.715431E+01 7.739555E-03 - -488. 16984. -1.714646E+01 7.954023E-03 - -487. 16967. -1.713840E+01 8.168490E-03 - -486. 16949. -1.713012E+01 8.382958E-03 - -485. 16932. -1.712163E+01 8.597426E-03 - -484. 16915. -1.711293E+01 8.811893E-03 - -483. 16898. -1.710401E+01 9.026361E-03 - -482. 16881. -1.709488E+01 9.240828E-03 - -481. 16864. -1.708553E+01 9.455296E-03 - -480. 16847. -1.707596E+01 9.669764E-03 - -479. 16830. -1.706619E+01 9.884231E-03 - -478. 16813. -1.705620E+01 1.009870E-02 - -477. 16796. -1.704599E+01 1.031317E-02 - -476. 16779. -1.703557E+01 1.052763E-02 - -475. 16762. -1.702494E+01 1.074210E-02 - -474. 16745. -1.701409E+01 1.095657E-02 - -473. 16728. -1.700302E+01 1.117104E-02 - -472. 16711. -1.699174E+01 1.138550E-02 - -471. 16694. -1.698025E+01 1.159997E-02 - -470. 16677. -1.696854E+01 1.181444E-02 - -469. 16660. -1.695662E+01 1.202891E-02 - -468. 16643. -1.694449E+01 1.224338E-02 - -467. 16626. -1.693214E+01 1.245784E-02 - -466. 16609. -1.691957E+01 1.267231E-02 - -465. 16592. -1.690679E+01 1.288678E-02 - -464. 16575. -1.689380E+01 1.310125E-02 - -463. 16558. -1.688059E+01 1.331571E-02 - -462. 16541. -1.686717E+01 1.353018E-02 - -461. 16524. -1.685353E+01 1.374465E-02 - -460. 16508. -1.683968E+01 1.395912E-02 - -459. 16491. -1.682561E+01 1.417358E-02 - -458. 16474. -1.681133E+01 1.438805E-02 - -457. 16457. -1.679683E+01 1.460252E-02 - -456. 16440. -1.678212E+01 1.481699E-02 - -455. 16424. -1.676720E+01 1.503145E-02 - -454. 16407. -1.675206E+01 1.524592E-02 - -453. 16390. -1.673671E+01 1.546039E-02 - -452. 16373. -1.672114E+01 1.567486E-02 - -451. 16357. -1.670536E+01 1.588932E-02 - -450. 16340. -1.668936E+01 1.610379E-02 - -449. 16323. -1.667315E+01 1.631826E-02 - -448. 16307. -1.665672E+01 1.653273E-02 - -447. 16290. -1.664009E+01 1.674720E-02 - -446. 16273. -1.662323E+01 1.696166E-02 - -445. 16257. -1.660616E+01 1.717613E-02 - -444. 16240. -1.658888E+01 1.739060E-02 - -443. 16223. -1.657138E+01 1.760507E-02 - -442. 16207. -1.655367E+01 1.781953E-02 - -441. 16190. -1.653574E+01 1.803400E-02 - -440. 16174. -1.651760E+01 1.824847E-02 - -439. 16157. -1.649924E+01 1.846294E-02 - -438. 16141. -1.648067E+01 1.867740E-02 - -437. 16124. -1.646189E+01 1.889187E-02 - -436. 16108. -1.644289E+01 1.910634E-02 - -435. 16091. -1.642368E+01 1.932081E-02 - -434. 16075. -1.640425E+01 1.953527E-02 - -433. 16059. -1.638461E+01 1.974974E-02 - -432. 16042. -1.636475E+01 1.996421E-02 - -431. 16026. -1.634468E+01 2.017868E-02 - -430. 16010. -1.632439E+01 2.039314E-02 - -429. 15993. -1.630389E+01 2.060761E-02 - -428. 15977. -1.628318E+01 2.082208E-02 - -427. 15961. -1.626225E+01 2.103655E-02 - -426. 15944. -1.624110E+01 2.125102E-02 - -425. 15928. -1.621975E+01 2.146548E-02 - -424. 15912. -1.619817E+01 2.167995E-02 - -423. 15896. -1.617639E+01 2.189442E-02 - -422. 15880. -1.615438E+01 2.210889E-02 - -421. 15864. -1.613217E+01 2.232335E-02 - -420. 15847. -1.610974E+01 2.253782E-02 - -419. 15831. -1.608709E+01 2.275229E-02 - -418. 15815. -1.606423E+01 2.296676E-02 - -417. 15799. -1.604116E+01 2.318122E-02 - -416. 15783. -1.601787E+01 2.339569E-02 - -415. 15767. -1.599437E+01 2.361016E-02 - -414. 15751. -1.597065E+01 2.382463E-02 - -413. 15735. -1.594672E+01 2.403909E-02 - -412. 15719. -1.592257E+01 2.425356E-02 - -411. 15703. -1.589821E+01 2.446803E-02 - -410. 15687. -1.587364E+01 2.468250E-02 - -409. 15672. -1.584885E+01 2.489697E-02 - -408. 15656. -1.582384E+01 2.511143E-02 - -407. 15640. -1.579862E+01 2.532590E-02 - -406. 15624. -1.577319E+01 2.554037E-02 - -405. 15608. -1.574754E+01 2.575484E-02 - -404. 15593. -1.572168E+01 2.596930E-02 - -403. 15577. -1.569560E+01 2.618377E-02 - -402. 15561. -1.566931E+01 2.639824E-02 - -401. 15546. -1.564281E+01 2.661271E-02 - -400. 15530. -1.561609E+01 2.682717E-02 - -399. 15514. -1.558933E+01 2.669201E-02 - -398. 15499. -1.556270E+01 2.655685E-02 - -397. 15483. -1.553621E+01 2.642169E-02 - -396. 15468. -1.550986E+01 2.628652E-02 - -395. 15452. -1.548364E+01 2.615136E-02 - -394. 15437. -1.545756E+01 2.601620E-02 - -393. 15421. -1.543161E+01 2.588103E-02 - -392. 15406. -1.540580E+01 2.574587E-02 - -391. 15391. -1.538012E+01 2.561071E-02 - -390. 15375. -1.535457E+01 2.547555E-02 - -389. 15360. -1.532917E+01 2.534038E-02 - -388. 15344. -1.530389E+01 2.520522E-02 - -387. 15329. -1.527876E+01 2.507006E-02 - -386. 15314. -1.525375E+01 2.493489E-02 - -385. 15299. -1.522889E+01 2.479973E-02 - -384. 15283. -1.520415E+01 2.466457E-02 - -383. 15268. -1.517956E+01 2.452941E-02 - -382. 15253. -1.515509E+01 2.439424E-02 - -381. 15238. -1.513077E+01 2.425908E-02 - -380. 15223. -1.510658E+01 2.412392E-02 - -379. 15208. -1.508252E+01 2.398875E-02 - -378. 15193. -1.505860E+01 2.385359E-02 - -377. 15178. -1.503481E+01 2.371843E-02 - -376. 15163. -1.501116E+01 2.358327E-02 - -375. 15148. -1.498765E+01 2.344810E-02 - -374. 15133. -1.496427E+01 2.331294E-02 - -373. 15118. -1.494102E+01 2.317778E-02 - -372. 15103. -1.491791E+01 2.304262E-02 - -371. 15088. -1.489494E+01 2.290745E-02 - -370. 15073. -1.487210E+01 2.277229E-02 - -369. 15058. -1.484939E+01 2.263713E-02 - -368. 15043. -1.482682E+01 2.250196E-02 - -367. 15028. -1.480439E+01 2.236680E-02 - -366. 15014. -1.478209E+01 2.223164E-02 - -365. 14999. -1.475992E+01 2.209648E-02 - -364. 14984. -1.473789E+01 2.196131E-02 - -363. 14969. -1.471600E+01 2.182615E-02 - -362. 14955. -1.469424E+01 2.169099E-02 - -361. 14940. -1.467262E+01 2.155582E-02 - -360. 14925. -1.465113E+01 2.142066E-02 - -359. 14911. -1.462978E+01 2.128550E-02 - -358. 14896. -1.460856E+01 2.115034E-02 - -357. 14882. -1.458748E+01 2.101517E-02 - -356. 14867. -1.456653E+01 2.088001E-02 - -355. 14852. -1.454572E+01 2.074485E-02 - -354. 14838. -1.452504E+01 2.060969E-02 - -353. 14823. -1.450450E+01 2.047452E-02 - -352. 14809. -1.448409E+01 2.033936E-02 - -351. 14794. -1.446382E+01 2.020420E-02 - -350. 14780. -1.444368E+01 2.006903E-02 - -349. 14765. -1.442368E+01 1.993387E-02 - -348. 14751. -1.440381E+01 1.979871E-02 - -347. 14737. -1.438408E+01 1.966355E-02 - -346. 14722. -1.436449E+01 1.952838E-02 - -345. 14708. -1.434503E+01 1.939322E-02 - -344. 14694. -1.432570E+01 1.925806E-02 - -343. 14679. -1.430651E+01 1.912289E-02 - -342. 14665. -1.428746E+01 1.898773E-02 - -341. 14651. -1.426853E+01 1.885257E-02 - -340. 14636. -1.424975E+01 1.871741E-02 - -339. 14622. -1.423110E+01 1.858224E-02 - -338. 14608. -1.421259E+01 1.844708E-02 - -337. 14594. -1.419421E+01 1.831192E-02 - -336. 14580. -1.417596E+01 1.817675E-02 - -335. 14565. -1.415785E+01 1.804159E-02 - -334. 14551. -1.413988E+01 1.790643E-02 - -333. 14537. -1.412204E+01 1.777127E-02 - -332. 14523. -1.410434E+01 1.763610E-02 - -331. 14509. -1.408677E+01 1.750094E-02 - -330. 14495. -1.406933E+01 1.736578E-02 - -329. 14481. -1.405204E+01 1.723062E-02 - -328. 14467. -1.403487E+01 1.709545E-02 - -327. 14453. -1.401784E+01 1.696029E-02 - -326. 14439. -1.400095E+01 1.682513E-02 - -325. 14425. -1.398419E+01 1.668996E-02 - -324. 14411. -1.396757E+01 1.655480E-02 - -323. 14397. -1.395109E+01 1.641964E-02 - -322. 14383. -1.393473E+01 1.628448E-02 - -321. 14369. -1.391852E+01 1.614931E-02 - -320. 14355. -1.390243E+01 1.601415E-02 - -319. 14341. -1.388649E+01 1.587899E-02 - -318. 14327. -1.387068E+01 1.574382E-02 - -317. 14313. -1.385500E+01 1.560866E-02 - -316. 14300. -1.383946E+01 1.547350E-02 - -315. 14286. -1.382405E+01 1.533834E-02 - -314. 14272. -1.380878E+01 1.520317E-02 - -313. 14258. -1.379365E+01 1.506801E-02 - -312. 14244. -1.377865E+01 1.493285E-02 - -311. 14231. -1.376378E+01 1.479768E-02 - -310. 14217. -1.374905E+01 1.466252E-02 - -309. 14203. -1.373446E+01 1.452736E-02 - -308. 14189. -1.372000E+01 1.439220E-02 - -307. 14176. -1.370567E+01 1.425703E-02 - -306. 14162. -1.369148E+01 1.412187E-02 - -305. 14148. -1.367743E+01 1.398671E-02 - -304. 14135. -1.366351E+01 1.385155E-02 - -303. 14121. -1.364972E+01 1.371638E-02 - -302. 14107. -1.363608E+01 1.358122E-02 - -301. 14094. -1.362256E+01 1.344606E-02 - -300. 14080. -1.360918E+01 1.331089E-02 - -299. 14066. -1.359586E+01 1.333708E-02 - -298. 14053. -1.358251E+01 1.336326E-02 - -297. 14039. -1.356913E+01 1.338944E-02 - -296. 14026. -1.355573E+01 1.341563E-02 - -295. 14012. -1.354230E+01 1.344181E-02 - -294. 13999. -1.352885E+01 1.346800E-02 - -293. 13985. -1.351537E+01 1.349418E-02 - -292. 13972. -1.350186E+01 1.352036E-02 - -291. 13958. -1.348833E+01 1.354655E-02 - -290. 13945. -1.347477E+01 1.357273E-02 - -289. 13931. -1.346118E+01 1.359891E-02 - -288. 13918. -1.344757E+01 1.362510E-02 - -287. 13904. -1.343393E+01 1.365128E-02 - -286. 13891. -1.342027E+01 1.367746E-02 - -285. 13877. -1.340657E+01 1.370365E-02 - -284. 13864. -1.339286E+01 1.372983E-02 - -283. 13851. -1.337912E+01 1.375601E-02 - -282. 13837. -1.336535E+01 1.378220E-02 - -281. 13824. -1.335155E+01 1.380838E-02 - -280. 13811. -1.333773E+01 1.383457E-02 - -279. 13797. -1.332388E+01 1.386075E-02 - -278. 13784. -1.331001E+01 1.388693E-02 - -277. 13771. -1.329611E+01 1.391312E-02 - -276. 13757. -1.328218E+01 1.393930E-02 - -275. 13744. -1.326823E+01 1.396548E-02 - -274. 13731. -1.325425E+01 1.399167E-02 - -273. 13717. -1.324025E+01 1.401785E-02 - -272. 13704. -1.322621E+01 1.404403E-02 - -271. 13691. -1.321216E+01 1.407022E-02 - -270. 13678. -1.319807E+01 1.409640E-02 - -269. 13665. -1.318397E+01 1.412258E-02 - -268. 13651. -1.316983E+01 1.414877E-02 - -267. 13638. -1.315567E+01 1.417495E-02 - -266. 13625. -1.314148E+01 1.420114E-02 - -265. 13612. -1.312727E+01 1.422732E-02 - -264. 13599. -1.311302E+01 1.425350E-02 - -263. 13586. -1.309876E+01 1.427969E-02 - -262. 13573. -1.308447E+01 1.430587E-02 - -261. 13560. -1.307015E+01 1.433205E-02 - -260. 13547. -1.305580E+01 1.435824E-02 - -259. 13534. -1.304143E+01 1.438442E-02 - -258. 13520. -1.302703E+01 1.441060E-02 - -257. 13507. -1.301261E+01 1.443679E-02 - -256. 13494. -1.299816E+01 1.446297E-02 - -255. 13481. -1.298368E+01 1.448915E-02 - -254. 13468. -1.296918E+01 1.451534E-02 - -253. 13456. -1.295465E+01 1.454152E-02 - -252. 13443. -1.294010E+01 1.456771E-02 - -251. 13430. -1.292552E+01 1.459389E-02 - -250. 13417. -1.291091E+01 1.462007E-02 - -249. 13404. -1.289628E+01 1.464626E-02 - -248. 13391. -1.288162E+01 1.467244E-02 - -247. 13378. -1.286693E+01 1.469862E-02 - -246. 13365. -1.285222E+01 1.472481E-02 - -245. 13352. -1.283748E+01 1.475099E-02 - -244. 13340. -1.282272E+01 1.477717E-02 - -243. 13327. -1.280793E+01 1.480336E-02 - -242. 13314. -1.279311E+01 1.482954E-02 - -241. 13301. -1.277827E+01 1.485572E-02 - -240. 13288. -1.276340E+01 1.488191E-02 - -239. 13276. -1.274850E+01 1.490809E-02 - -238. 13263. -1.273358E+01 1.493428E-02 - -237. 13250. -1.271864E+01 1.496046E-02 - -236. 13237. -1.270366E+01 1.498664E-02 - -235. 13225. -1.268866E+01 1.501283E-02 - -234. 13212. -1.267364E+01 1.503901E-02 - -233. 13199. -1.265859E+01 1.506519E-02 - -232. 13187. -1.264351E+01 1.509138E-02 - -231. 13174. -1.262840E+01 1.511756E-02 - -230. 13161. -1.261327E+01 1.514374E-02 - -229. 13149. -1.259811E+01 1.516993E-02 - -228. 13136. -1.258293E+01 1.519611E-02 - -227. 13124. -1.256772E+01 1.522229E-02 - -226. 13111. -1.255249E+01 1.524848E-02 - -225. 13099. -1.253723E+01 1.527466E-02 - -224. 13086. -1.252194E+01 1.530085E-02 - -223. 13074. -1.250662E+01 1.532703E-02 - -222. 13061. -1.249128E+01 1.535321E-02 - -221. 13049. -1.247592E+01 1.537940E-02 - -220. 13036. -1.246053E+01 1.540558E-02 - -219. 13024. -1.244511E+01 1.543176E-02 - -218. 13011. -1.242966E+01 1.545795E-02 - -217. 12999. -1.241419E+01 1.548413E-02 - -216. 12986. -1.239869E+01 1.551031E-02 - -215. 12974. -1.238317E+01 1.553650E-02 - -214. 12962. -1.236762E+01 1.556268E-02 - -213. 12949. -1.235204E+01 1.558886E-02 - -212. 12937. -1.233644E+01 1.561505E-02 - -211. 12925. -1.232081E+01 1.564123E-02 - -210. 12912. -1.230516E+01 1.566742E-02 - -209. 12900. -1.228948E+01 1.569360E-02 - -208. 12888. -1.227377E+01 1.571978E-02 - -207. 12875. -1.225804E+01 1.574597E-02 - -206. 12863. -1.224228E+01 1.577215E-02 - -205. 12851. -1.222650E+01 1.579833E-02 - -204. 12839. -1.221068E+01 1.582452E-02 - -203. 12827. -1.219485E+01 1.585070E-02 - -202. 12814. -1.217898E+01 1.587688E-02 - -201. 12802. -1.216309E+01 1.590307E-02 - -200. 12790. -1.214718E+01 1.592925E-02 - -199. 12778. -1.213129E+01 1.583968E-02 - -198. 12766. -1.211550E+01 1.575011E-02 - -197. 12754. -1.209979E+01 1.566054E-02 - -196. 12742. -1.208418E+01 1.557096E-02 - -195. 12729. -1.206865E+01 1.548139E-02 - -194. 12717. -1.205321E+01 1.539182E-02 - -193. 12705. -1.203787E+01 1.530225E-02 - -192. 12693. -1.202261E+01 1.521268E-02 - -191. 12681. -1.200744E+01 1.512311E-02 - -190. 12669. -1.199236E+01 1.503354E-02 - -189. 12657. -1.197737E+01 1.494396E-02 - -188. 12645. -1.196247E+01 1.485439E-02 - -187. 12633. -1.194767E+01 1.476482E-02 - -186. 12621. -1.193295E+01 1.467525E-02 - -185. 12610. -1.191831E+01 1.458568E-02 - -184. 12598. -1.190377E+01 1.449611E-02 - -183. 12586. -1.188932E+01 1.440654E-02 - -182. 12574. -1.187496E+01 1.431696E-02 - -181. 12562. -1.186069E+01 1.422739E-02 - -180. 12550. -1.184651E+01 1.413782E-02 - -179. 12538. -1.183241E+01 1.404825E-02 - -178. 12526. -1.181841E+01 1.395868E-02 - -177. 12515. -1.180450E+01 1.386911E-02 - -176. 12503. -1.179067E+01 1.377954E-02 - -175. 12491. -1.177694E+01 1.368996E-02 - -174. 12479. -1.176329E+01 1.360039E-02 - -173. 12468. -1.174974E+01 1.351082E-02 - -172. 12456. -1.173627E+01 1.342125E-02 - -171. 12444. -1.172289E+01 1.333168E-02 - -170. 12432. -1.170961E+01 1.324211E-02 - -169. 12421. -1.169641E+01 1.315253E-02 - -168. 12409. -1.168330E+01 1.306296E-02 - -167. 12397. -1.167028E+01 1.297339E-02 - -166. 12386. -1.165735E+01 1.288382E-02 - -165. 12374. -1.164452E+01 1.279425E-02 - -164. 12362. -1.163177E+01 1.270468E-02 - -163. 12351. -1.161911E+01 1.261511E-02 - -162. 12339. -1.160654E+01 1.252553E-02 - -161. 12327. -1.159406E+01 1.243596E-02 - -160. 12316. -1.158166E+01 1.234639E-02 - -159. 12304. -1.156936E+01 1.225682E-02 - -158. 12293. -1.155715E+01 1.216725E-02 - -157. 12281. -1.154503E+01 1.207768E-02 - -156. 12270. -1.153299E+01 1.198811E-02 - -155. 12258. -1.152105E+01 1.189853E-02 - -154. 12247. -1.150920E+01 1.180896E-02 - -153. 12235. -1.149743E+01 1.171939E-02 - -152. 12224. -1.148576E+01 1.162982E-02 - -151. 12212. -1.147417E+01 1.154025E-02 - -150. 12201. -1.146268E+01 1.145068E-02 - -149. 12189. -1.145127E+01 1.136111E-02 - -148. 12178. -1.143996E+01 1.127153E-02 - -147. 12166. -1.142873E+01 1.118196E-02 - -146. 12155. -1.141759E+01 1.109239E-02 - -145. 12144. -1.140654E+01 1.100282E-02 - -144. 12132. -1.139559E+01 1.091325E-02 - -143. 12121. -1.138472E+01 1.082368E-02 - -142. 12109. -1.137394E+01 1.073411E-02 - -141. 12098. -1.136325E+01 1.064453E-02 - -140. 12087. -1.135265E+01 1.055496E-02 - -139. 12075. -1.134214E+01 1.046539E-02 - -138. 12064. -1.133172E+01 1.037582E-02 - -137. 12053. -1.132139E+01 1.028625E-02 - -136. 12041. -1.131115E+01 1.019668E-02 - -135. 12030. -1.130100E+01 1.010710E-02 - -134. 12019. -1.129093E+01 1.001753E-02 - -133. 12007. -1.128096E+01 9.927962E-03 - -132. 11996. -1.127108E+01 9.838390E-03 - -131. 11985. -1.126128E+01 9.748819E-03 - -130. 11974. -1.125158E+01 9.659247E-03 - -129. 11962. -1.124196E+01 9.569676E-03 - -128. 11951. -1.123244E+01 9.480104E-03 - -127. 11940. -1.122300E+01 9.390533E-03 - -126. 11929. -1.121366E+01 9.300962E-03 - -125. 11917. -1.120440E+01 9.211390E-03 - -124. 11906. -1.119524E+01 9.121819E-03 - -123. 11895. -1.118616E+01 9.032247E-03 - -122. 11884. -1.117717E+01 8.942676E-03 - -121. 11873. -1.116827E+01 8.853104E-03 - -120. 11862. -1.115947E+01 8.763533E-03 - -119. 11850. -1.115075E+01 8.673961E-03 - -118. 11839. -1.114212E+01 8.584390E-03 - -117. 11828. -1.113358E+01 8.494818E-03 - -116. 11817. -1.112513E+01 8.405247E-03 - -115. 11806. -1.111677E+01 8.315675E-03 - -114. 11795. -1.110850E+01 8.226104E-03 - -113. 11784. -1.110032E+01 8.136532E-03 - -112. 11773. -1.109222E+01 8.046961E-03 - -111. 11761. -1.108422E+01 7.957389E-03 - -110. 11750. -1.107631E+01 7.867818E-03 - -109. 11739. -1.106849E+01 7.778246E-03 - -108. 11728. -1.106075E+01 7.688675E-03 - -107. 11717. -1.105311E+01 7.599103E-03 - -106. 11706. -1.104555E+01 7.509532E-03 - -105. 11695. -1.103809E+01 7.419960E-03 - -104. 11684. -1.103071E+01 7.330389E-03 - -103. 11673. -1.102343E+01 7.240818E-03 - -102. 11662. -1.101623E+01 7.151246E-03 - -101. 11651. -1.100913E+01 7.061675E-03 - -100. 11640. -1.100211E+01 6.972103E-03 - -99. 11629. -1.099512E+01 7.004205E-03 - -98. 11618. -1.098810E+01 7.036308E-03 - -97. 11607. -1.098105E+01 7.068410E-03 - -96. 11596. -1.097396E+01 7.100512E-03 - -95. 11585. -1.096685E+01 7.132615E-03 - -94. 11574. -1.095970E+01 7.164717E-03 - -93. 11563. -1.095252E+01 7.196819E-03 - -92. 11552. -1.094530E+01 7.228922E-03 - -91. 11541. -1.093806E+01 7.261024E-03 - -90. 11530. -1.093078E+01 7.293126E-03 - -89. 11519. -1.092347E+01 7.325229E-03 - -88. 11508. -1.091613E+01 7.357331E-03 - -87. 11498. -1.090876E+01 7.389433E-03 - -86. 11487. -1.090135E+01 7.421536E-03 - -85. 11476. -1.089392E+01 7.453638E-03 - -84. 11465. -1.088645E+01 7.485741E-03 - -83. 11454. -1.087894E+01 7.517843E-03 - -82. 11443. -1.087141E+01 7.549945E-03 - -81. 11432. -1.086384E+01 7.582048E-03 - -80. 11421. -1.085625E+01 7.614150E-03 - -79. 11411. -1.084862E+01 7.646252E-03 - -78. 11400. -1.084095E+01 7.678355E-03 - -77. 11389. -1.083326E+01 7.710457E-03 - -76. 11378. -1.082553E+01 7.742559E-03 - -75. 11367. -1.081777E+01 7.774662E-03 - -74. 11356. -1.080998E+01 7.806764E-03 - -73. 11346. -1.080216E+01 7.838866E-03 - -72. 11335. -1.079431E+01 7.870969E-03 - -71. 11324. -1.078642E+01 7.903071E-03 - -70. 11313. -1.077850E+01 7.935173E-03 - -69. 11302. -1.077055E+01 7.967276E-03 - -68. 11292. -1.076257E+01 7.999378E-03 - -67. 11281. -1.075455E+01 8.031480E-03 - -66. 11270. -1.074650E+01 8.063583E-03 - -65. 11259. -1.073842E+01 8.095685E-03 - -64. 11249. -1.073031E+01 8.127787E-03 - -63. 11238. -1.072217E+01 8.159890E-03 - -62. 11227. -1.071399E+01 8.191992E-03 - -61. 11217. -1.070578E+01 8.224094E-03 - -60. 11206. -1.069754E+01 8.256197E-03 - -59. 11195. -1.068927E+01 8.288299E-03 - -58. 11184. -1.068097E+01 8.320401E-03 - -57. 11174. -1.067263E+01 8.352504E-03 - -56. 11163. -1.066426E+01 8.384606E-03 - -55. 11152. -1.065586E+01 8.416708E-03 - -54. 11142. -1.064743E+01 8.448811E-03 - -53. 11131. -1.063896E+01 8.480913E-03 - -52. 11121. -1.063047E+01 8.513015E-03 - -51. 11110. -1.062194E+01 8.545118E-03 - -50. 11099. -1.061338E+01 8.577220E-03 - -49. 11089. -1.060478E+01 8.609322E-03 - -48. 11078. -1.059616E+01 8.641425E-03 - -47. 11067. -1.058750E+01 8.673527E-03 - -46. 11057. -1.057881E+01 8.705629E-03 - -45. 11046. -1.057009E+01 8.737732E-03 - -44. 11036. -1.056133E+01 8.769834E-03 - -43. 11025. -1.055255E+01 8.801936E-03 - -42. 11015. -1.054373E+01 8.834039E-03 - -41. 11004. -1.053488E+01 8.866141E-03 - -40. 10994. -1.052600E+01 8.898243E-03 - -39. 10983. -1.051708E+01 8.930346E-03 - -38. 10973. -1.050814E+01 8.962448E-03 - -37. 10962. -1.049916E+01 8.994550E-03 - -36. 10952. -1.049015E+01 9.026653E-03 - -35. 10941. -1.048111E+01 9.058755E-03 - -34. 10931. -1.047203E+01 9.090857E-03 - -33. 10920. -1.046292E+01 9.122960E-03 - -32. 10910. -1.045379E+01 9.155062E-03 - -31. 10899. -1.044461E+01 9.187164E-03 - -30. 10889. -1.043541E+01 9.219267E-03 - -29. 10878. -1.042618E+01 9.251369E-03 - -28. 10868. -1.041691E+01 9.283471E-03 - -27. 10858. -1.040761E+01 9.315574E-03 - -26. 10847. -1.039828E+01 9.347676E-03 - -25. 10837. -1.038891E+01 9.379778E-03 - -24. 10826. -1.037952E+01 9.411881E-03 - -23. 10816. -1.037009E+01 9.443983E-03 - -22. 10806. -1.036063E+01 9.476085E-03 - -21. 10795. -1.035114E+01 9.508188E-03 - -20. 10785. -1.034161E+01 9.540290E-03 - -19. 10775. -1.033206E+01 9.572392E-03 - -18. 10764. -1.032247E+01 9.604495E-03 - -17. 10754. -1.031285E+01 9.636597E-03 - -16. 10744. -1.030320E+01 9.668699E-03 - -15. 10733. -1.029351E+01 9.700802E-03 - -14. 10723. -1.028379E+01 9.732904E-03 - -13. 10713. -1.027404E+01 9.765006E-03 - -12. 10702. -1.026426E+01 9.797109E-03 - -11. 10692. -1.025445E+01 9.829211E-03 - -10. 10682. -1.024461E+01 9.861313E-03 - -9. 10672. -1.023473E+01 9.893416E-03 - -8. 10661. -1.022482E+01 9.925518E-03 - -7. 10651. -1.021488E+01 9.957620E-03 - -6. 10641. -1.020490E+01 9.989723E-03 - -5. 10631. -1.019490E+01 1.002183E-02 - -4. 10621. -1.018486E+01 1.005393E-02 - -3. 10610. -1.017479E+01 1.008603E-02 - -2. 10600. -1.016469E+01 1.011813E-02 - -1. 10590. -1.015455E+01 1.015023E-02 - 0. 10580. -1.014439E+01 1.018234E-02 - 1. 10570. -1.013425E+01 1.008350E-02 - 2. 10560. -1.012422E+01 9.984661E-03 - 3. 10550. -1.011428E+01 9.885823E-03 - 4. 10540. -1.010445E+01 9.786985E-03 - 5. 10529. -1.009471E+01 9.688147E-03 - 6. 10519. -1.008507E+01 9.589310E-03 - 7. 10509. -1.007553E+01 9.490472E-03 - 8. 10499. -1.006609E+01 9.391634E-03 - 9. 10489. -1.005675E+01 9.292796E-03 - 10. 10479. -1.004751E+01 9.193958E-03 - 11. 10469. -1.003836E+01 9.095120E-03 - 12. 10459. -1.002932E+01 8.996282E-03 - 13. 10449. -1.002037E+01 8.897444E-03 - 14. 10439. -1.001152E+01 8.798607E-03 - 15. 10429. -1.000277E+01 8.699769E-03 - 16. 10419. -9.994121E+00 8.600931E-03 - 17. 10409. -9.985569E+00 8.502093E-03 - 18. 10399. -9.977117E+00 8.403255E-03 - 19. 10389. -9.968763E+00 8.304417E-03 - 20. 10379. -9.960508E+00 8.205579E-03 - 21. 10369. -9.952352E+00 8.106742E-03 - 22. 10359. -9.944294E+00 8.007904E-03 - 23. 10349. -9.936336E+00 7.909066E-03 - 24. 10339. -9.928476E+00 7.810228E-03 - 25. 10329. -9.920715E+00 7.711390E-03 - 26. 10319. -9.913053E+00 7.612552E-03 - 27. 10309. -9.905490E+00 7.513714E-03 - 28. 10300. -9.898026E+00 7.414876E-03 - 29. 10290. -9.890661E+00 7.316039E-03 - 30. 10280. -9.883394E+00 7.217201E-03 - 31. 10270. -9.876226E+00 7.118363E-03 - 32. 10260. -9.869157E+00 7.019525E-03 - 33. 10250. -9.862187E+00 6.920687E-03 - 34. 10240. -9.855316E+00 6.821849E-03 - 35. 10230. -9.848543E+00 6.723011E-03 - 36. 10221. -9.841870E+00 6.624173E-03 - 37. 10211. -9.835295E+00 6.525336E-03 - 38. 10201. -9.828819E+00 6.426498E-03 - 39. 10191. -9.822442E+00 6.327660E-03 - 40. 10181. -9.816164E+00 6.228822E-03 - 41. 10172. -9.809984E+00 6.129984E-03 - 42. 10162. -9.803904E+00 6.031146E-03 - 43. 10152. -9.797922E+00 5.932308E-03 - 44. 10142. -9.792039E+00 5.833470E-03 - 45. 10132. -9.786255E+00 5.734633E-03 - 46. 10123. -9.780570E+00 5.635795E-03 - 47. 10113. -9.774984E+00 5.536957E-03 - 48. 10103. -9.769496E+00 5.438119E-03 - 49. 10093. -9.764107E+00 5.339281E-03 - 50. 10083. -9.758818E+00 5.240443E-03 - 51. 10074. -9.753627E+00 5.141605E-03 - 52. 10064. -9.748534E+00 5.042768E-03 - 53. 10054. -9.743541E+00 4.943930E-03 - 54. 10044. -9.738646E+00 4.845092E-03 - 55. 10035. -9.733851E+00 4.746254E-03 - 56. 10025. -9.729154E+00 4.647416E-03 - 57. 10015. -9.724556E+00 4.548578E-03 - 58. 10006. -9.720057E+00 4.449740E-03 - 59. 9996. -9.715656E+00 4.350902E-03 - 60. 9986. -9.711355E+00 4.252065E-03 - 61. 9976. -9.707152E+00 4.153227E-03 - 62. 9967. -9.703049E+00 4.054389E-03 - 63. 9957. -9.699044E+00 3.955551E-03 - 64. 9947. -9.695137E+00 3.856713E-03 - 65. 9938. -9.691330E+00 3.757875E-03 - 66. 9928. -9.687622E+00 3.659037E-03 - 67. 9918. -9.684012E+00 3.560199E-03 - 68. 9909. -9.680501E+00 3.461362E-03 - 69. 9899. -9.677089E+00 3.362524E-03 - 70. 9889. -9.673776E+00 3.263686E-03 - 71. 9880. -9.670562E+00 3.164848E-03 - 72. 9870. -9.667447E+00 3.066010E-03 - 73. 9860. -9.664430E+00 2.967172E-03 - 74. 9851. -9.661512E+00 2.868334E-03 - 75. 9841. -9.658693E+00 2.769496E-03 - 76. 9831. -9.655973E+00 2.670659E-03 - 77. 9822. -9.653352E+00 2.571821E-03 - 78. 9812. -9.650830E+00 2.472983E-03 - 79. 9802. -9.648406E+00 2.374145E-03 - 80. 9793. -9.646081E+00 2.275307E-03 - 81. 9783. -9.643855E+00 2.176469E-03 - 82. 9773. -9.641728E+00 2.077631E-03 - 83. 9764. -9.639700E+00 1.978794E-03 - 84. 9754. -9.637771E+00 1.879956E-03 - 85. 9744. -9.635940E+00 1.781118E-03 - 86. 9735. -9.634209E+00 1.682280E-03 - 87. 9725. -9.632576E+00 1.583442E-03 - 88. 9715. -9.631042E+00 1.484604E-03 - 89. 9706. -9.629606E+00 1.385766E-03 - 90. 9696. -9.628270E+00 1.286928E-03 - 91. 9687. -9.627033E+00 1.188091E-03 - 92. 9677. -9.625894E+00 1.089253E-03 - 93. 9667. -9.624854E+00 9.904148E-04 - 94. 9658. -9.623913E+00 8.915770E-04 - 95. 9648. -9.623071E+00 7.927391E-04 - 96. 9638. -9.622328E+00 6.939012E-04 - 97. 9629. -9.621683E+00 5.950633E-04 - 98. 9619. -9.621138E+00 4.962255E-04 - 99. 9610. -9.620691E+00 3.973876E-04 - 100. 9600. -9.620343E+00 2.985497E-04 - 101. 9590. -9.620043E+00 3.017989E-04 - 102. 9581. -9.619739E+00 3.050480E-04 - 103. 9571. -9.619432E+00 3.082972E-04 - 104. 9562. -9.619123E+00 3.115463E-04 - 105. 9552. -9.618809E+00 3.147955E-04 - 106. 9542. -9.618493E+00 3.180446E-04 - 107. 9533. -9.618173E+00 3.212938E-04 - 108. 9523. -9.617850E+00 3.245429E-04 - 109. 9513. -9.617524E+00 3.277920E-04 - 110. 9504. -9.617195E+00 3.310412E-04 - 111. 9494. -9.616862E+00 3.342903E-04 - 112. 9485. -9.616526E+00 3.375395E-04 - 113. 9475. -9.616187E+00 3.407886E-04 - 114. 9465. -9.615845E+00 3.440378E-04 - 115. 9456. -9.615499E+00 3.472869E-04 - 116. 9446. -9.615150E+00 3.505361E-04 - 117. 9436. -9.614798E+00 3.537852E-04 - 118. 9427. -9.614442E+00 3.570344E-04 - 119. 9417. -9.614084E+00 3.602835E-04 - 120. 9408. -9.613722E+00 3.635326E-04 - 121. 9398. -9.613357E+00 3.667818E-04 - 122. 9388. -9.612988E+00 3.700309E-04 - 123. 9379. -9.612617E+00 3.732801E-04 - 124. 9369. -9.612242E+00 3.765292E-04 - 125. 9360. -9.611864E+00 3.797784E-04 - 126. 9350. -9.611482E+00 3.830275E-04 - 127. 9340. -9.611098E+00 3.862767E-04 - 128. 9331. -9.610710E+00 3.895258E-04 - 129. 9321. -9.610319E+00 3.927750E-04 - 130. 9312. -9.609924E+00 3.960241E-04 - 131. 9302. -9.609526E+00 3.992732E-04 - 132. 9292. -9.609126E+00 4.025224E-04 - 133. 9283. -9.608721E+00 4.057715E-04 - 134. 9273. -9.608314E+00 4.090207E-04 - 135. 9263. -9.607903E+00 4.122698E-04 - 136. 9254. -9.607489E+00 4.155190E-04 - 137. 9244. -9.607072E+00 4.187681E-04 - 138. 9235. -9.606652E+00 4.220173E-04 - 139. 9225. -9.606228E+00 4.252664E-04 - 140. 9215. -9.605801E+00 4.285156E-04 - 141. 9206. -9.605371E+00 4.317647E-04 - 142. 9196. -9.604938E+00 4.350138E-04 - 143. 9187. -9.604501E+00 4.382630E-04 - 144. 9177. -9.604061E+00 4.415121E-04 - 145. 9167. -9.603618E+00 4.447613E-04 - 146. 9158. -9.603172E+00 4.480104E-04 - 147. 9148. -9.602722E+00 4.512596E-04 - 148. 9139. -9.602269E+00 4.545087E-04 - 149. 9129. -9.601813E+00 4.577579E-04 - 150. 9119. -9.601354E+00 4.610070E-04 - 151. 9110. -9.600891E+00 4.642562E-04 - 152. 9100. -9.600425E+00 ... [truncated message content] |
From: <ai...@us...> - 2009-06-07 18:00:00
|
Revision: 10044 http://plplot.svn.sourceforge.net/plplot/?rev=10044&view=rev Author: airwin Date: 2009-06-07 17:59:00 +0000 (Sun, 07 Jun 2009) Log Message: ----------- Initial commit of TT-TAI correction data. Added Paths: ----------- trunk/lib/qsastime/README.ttbipm.dat trunk/lib/qsastime/ttbipm.dat Added: trunk/lib/qsastime/README.ttbipm.dat =================================================================== --- trunk/lib/qsastime/README.ttbipm.dat (rev 0) +++ trunk/lib/qsastime/README.ttbipm.dat 2009-06-07 17:59:00 UTC (rev 10044) @@ -0,0 +1,17 @@ +TAI is one realization of TT that must be determined instantly from a +world-wide network of atomic clocks. As expected, after-the-fact +analysis of the world-wide atomic clock data allows determination of better +realizations of TT, and the ttbipm.dat file contains one such corrected +realization. This file is obtained by, e.g., + +wget ftp://ftp2.bipm.fr/pub/tai/scale/ttbipm.08 +mv ttbipm.08 ttbipm.dat + +The files ttbipm.nn tend to be published early in the year nn+1, (i.e., the +year 2009 for the ttbipm.08 file) so yearly downloads are required to keep +ttbipm.dat up to date. For each ttbipm.nn file, there exists some header +lines (30 of them for ttbipm.08) that must be skipped before actual data +appear in the file. Thus, the NSKIP_LINES variable that appears in +CMakeLists.dat must be confirmed/reviewed each year after the download of +ttbipm.nn. + Property changes on: trunk/lib/qsastime/README.ttbipm.dat ___________________________________________________________________ Added: svn:eol-style + native Added: trunk/lib/qsastime/ttbipm.dat =================================================================== --- trunk/lib/qsastime/ttbipm.dat (rev 0) +++ trunk/lib/qsastime/ttbipm.dat 2009-06-07 17:59:00 UTC (rev 10044) @@ -0,0 +1,1255 @@ +TT(BIPM08) is a realization of Terrestrial Time as defined by +Recommendation IV of Resolution A4 of the International Astronomical +Union, adopted at its XXIst General Assembly (1991), and updated by +Resolution B1.9 at its XXIVth General Assembly (2000). The scale unit of +TT(BIPM08) thus agrees with the SI second on the rotating geoid +and its origin is defined by the following relation to TAI : + +TT(BIPM08) = TAI + 32.184 s on 1977 January 1st, 0 h TAI. + +TT(BIPM08) has been established according to the principles described in +(Guinot B., Atomic time scales for pulsar studies and other demanding +applications, Astron. Astrophys., 192, 1988, pp. 370-373), updated in 2003 +(Petit G., A new realization of Terrestrial Time, Proc. 35th PTTI, 2003, +pp. 307-317) using data from all available primary frequency standards until +December 2008. Following Recommendation S2 (1996) of the CCDS, a frequency +correction for the black-body radiation shift is applied to all primary +frequency standard results. + +The computation of TT(BIPM08) started on MJD 48989 (2 January 1993). Before +that date, TT(BIPM08) is by construction identical to all past realizations since +TT(BIPM99). The difference TT(BIPM08)-TT(BIPM07) is within 1 ns until December 2007 +and the largest discrepancy between TT(BIPM08) and TT(BIPM07) is 1.5 ns in December 2006. + +Starting MJD 52729, TT(BIPM08) is provided with 0.1 ns resolution, consistent with +the resolution of TAI. + + 1st column : MJD at 0 h UTC + 2nd " : TT(BIPM08) - EAL - 32.184 s, unit is one microsecond + 3rd " : TT(BIPM08) - TAI - 32.184 s, unit is one microsecond + +42589. 46.258 46.258 +42599. 45.439 45.439 +42609. 44.617 44.617 +42619. 43.793 43.793 +42629. 42.965 42.965 +42639. 42.133 42.133 +42649. 41.298 41.298 +42659. 40.459 40.459 +42669. 39.615 39.615 +42679. 38.766 38.766 +42689. 37.913 37.913 +42699. 37.054 37.054 +42709. 36.189 36.189 +42719. 35.311 35.311 +42729. 34.429 34.429 +42739. 33.542 33.542 +42749. 32.652 32.652 +42759. 31.760 31.760 +42769. 30.866 30.866 +42779. 29.971 29.971 +42789. 29.076 29.076 +42799. 28.183 28.183 +42809. 27.294 27.294 +42819. 26.408 26.408 +42829. 25.528 25.528 +42839. 24.659 24.659 +42849. 23.797 23.797 +42859. 22.942 22.942 +42869. 22.095 22.095 +42879. 21.258 21.258 +42889. 20.429 20.429 +42899. 19.618 19.618 +42909. 18.820 18.820 +42919. 18.029 18.029 +42929. 17.245 17.245 +42939. 16.467 16.467 +42949. 15.693 15.693 +42959. 14.923 14.923 +42969. 14.156 14.156 +42979. 13.390 13.390 +42989. 12.623 12.623 +42999. 11.854 11.854 +43009. 11.082 11.082 +43019. 10.305 10.305 +43029 9.515 9.515 +43039 8.718 8.718 +43049 7.915 7.915 +43059 7.107 7.107 +43069 6.292 6.292 +43079 5.472 5.472 +43089 4.636 4.636 +43099 3.796 3.796 +43109 2.952 2.952 +43119 2.107 2.107 +43129 1.263 1.263 +43139 0.420 0.420 +43149. -0.420 0.012 +43159. -1.255 0.041 +43169. -2.084 0.076 +43179. -2.905 0.119 +43189. -3.716 0.172 +43199. -4.517 0.235 +43209. -5.296 0.320 +43219. -6.062 0.418 +43229. -6.817 0.527 +43239. -7.560 0.648 +43249. -8.292 0.780 +43259. -9.013 0.923 +43269. -9.718 1.065 +43279. -10.414 1.216 +43289. -11.101 1.375 +43299. -11.781 1.542 +43309. -12.455 1.715 +43319. -13.124 1.892 +43329. -13.790 2.056 +43339. -14.453 2.222 +43349. -15.115 2.390 +43359. -15.777 2.557 +43369. -16.439 2.724 +43379. -17.104 2.889 +43389. -17.776 3.029 +43399. -18.452 3.166 +43409. -19.131 3.298 +43419. -19.815 3.427 +43429. -20.503 3.551 +43439. -21.195 3.671 +43449. -21.896 3.765 +43459. -22.601 3.855 +43469. -23.311 3.940 +43479. -24.025 4.020 +43489. -24.745 4.096 +43499. -25.468 4.167 +43509. -26.200 4.231 +43519. -26.934 4.291 +43529. -27.672 4.348 +43539. -28.412 4.403 +43549. -29.153 4.457 +43559. -29.895 4.510 +43569. -30.638 4.561 +43579. -31.380 4.614 +43589. -32.120 4.669 +43599. -32.857 4.727 +43609. -33.589 4.790 +43619. -34.316 4.858 +43629. -35.031 4.937 +43639. -35.739 5.025 +43649. -36.439 5.120 +43659. -37.132 5.221 +43669. -37.818 5.330 +43679. -38.497 5.446 +43689. -39.167 5.571 +43699. -39.825 5.708 +43709. -40.476 5.852 +43719. -41.123 6.000 +43729. -41.765 6.152 +43739. -42.404 6.308 +43749. -43.041 6.466 +43759. -43.676 6.626 +43769. -44.310 6.787 +43779. -44.946 6.946 +43789. -45.584 7.103 +43799. -46.226 7.256 +43809. -46.873 7.404 +43819. -47.533 7.521 +43829. -48.199 7.633 +43839. -48.871 7.738 +43849. -49.550 7.837 +43859. -50.235 7.929 +43869. -50.927 8.016 +43879. -51.629 8.091 +43889. -52.337 8.160 +43899. -53.051 8.224 +43909. -53.768 8.285 +43919. -54.489 8.341 +43929. -55.212 8.396 +43939. -55.939 8.446 +43949. -56.666 8.496 +43959. -57.394 8.547 +43969. -58.120 8.598 +43979. -58.844 8.651 +43989. -59.565 8.708 +43999. -60.279 8.772 +44009. -60.988 8.841 +44019. -61.692 8.914 +44029. -62.390 8.994 +44039. -63.081 9.080 +44049. -63.766 9.172 +44059. -64.438 9.262 +44069. -65.102 9.357 +44079. -65.760 9.459 +44089. -66.413 9.567 +44099. -67.062 9.679 +44109. -67.705 9.795 +44119. -68.342 9.902 +44129. -68.975 10.011 +44139. -69.608 10.122 +44149. -70.242 10.231 +44159. -70.877 10.339 +44169. -71.515 10.444 +44179. -72.159 10.526 +44189. -72.809 10.602 +44199. -73.465 10.671 +44209. -74.129 10.733 +44219. -74.801 10.787 +44229. -75.483 10.831 +44239. -76.185 10.854 +44249. -76.898 10.867 +44259. -77.620 10.871 +44269. -78.351 10.865 +44279. -79.091 10.851 +44289. -79.840 10.828 +44299. -80.601 10.793 +44309. -81.371 10.749 +44319. -82.145 10.700 +44329. -82.922 10.649 +44339. -83.701 10.596 +44349. -84.479 10.544 +44359. -85.253 10.496 +44369. -86.019 10.455 +44379. -86.781 10.419 +44389. -87.538 10.388 +44399. -88.288 10.364 +44409. -89.031 10.346 +44419. -89.766 10.337 +44429. -90.483 10.346 +44439. -91.192 10.363 +44449. -91.893 10.388 +44459. -92.587 10.419 +44469. -93.274 10.457 +44479. -93.956 10.501 +44489. -94.627 10.556 +44499. -95.295 10.614 +44509. -95.960 10.675 +44519. -96.625 10.736 +44529. -97.290 10.796 +44539. -97.958 10.854 +44549. -98.635 10.903 +44559. -99.316 10.947 +44569. -100.003 10.986 +44579. -100.696 11.019 +44589. -101.396 11.045 +44599. -102.104 11.063 +44609. -102.829 11.064 +44619. -103.561 11.057 +44629. -104.300 11.044 +44639. -105.045 11.025 +44649. -105.795 11.001 +44659. -106.548 10.973 +44669. -107.309 10.938 +44679. -108.071 10.901 +44689. -108.834 10.865 +44699. -109.595 10.830 +44709. -110.353 10.797 +44719. -111.106 10.770 +44729. -111.847 10.754 +44739. -112.582 10.745 +44749. -113.309 10.744 +44759. -114.029 10.750 +44769. -114.741 10.764 +44779. -115.444 10.787 +44789. -116.128 10.828 +44799. -116.804 10.878 +44809. -117.473 10.935 +44819. -118.136 10.997 +44829. -118.795 11.064 +44839. -119.450 11.135 +44849. -120.102 11.209 +44859. -120.753 11.284 +44869. -121.404 11.358 +44879. -122.057 11.431 +44889. -122.713 11.501 +44899. -123.373 11.566 +44909. -124.046 11.620 +44919. -124.726 11.665 +44929. -125.413 11.704 +44939. -126.106 11.736 +44949. -126.805 11.763 +44959. -127.510 11.784 +44969. -128.226 11.794 +44979. -128.950 11.795 +44989. -129.679 11.792 +44999. -130.411 11.786 +45009. -131.145 11.778 +45019. -131.879 11.769 +45029. -132.612 11.762 +45039. -133.343 11.757 +45049. -134.071 11.755 +45059. -134.795 11.757 +45069. -135.514 11.764 +45079. -136.226 11.777 +45089. -136.929 11.800 +45099. -137.617 11.820 +45109. -138.298 11.848 +45119. -138.971 11.884 +45129. -139.637 11.926 +45139. -140.297 11.974 +45149. -140.951 12.029 +45159. -141.596 12.075 +45169. -142.236 12.127 +45179. -142.872 12.181 +45189. -143.507 12.238 +45199. -144.140 12.296 +45209. -144.773 12.354 +45219. -145.409 12.392 +45229. -146.046 12.429 +45239. -146.685 12.464 +45249. -147.328 12.495 +45259. -147.974 12.522 +45269. -148.626 12.544 +45279. -149.290 12.555 +45289. -149.959 12.560 +45299. -150.633 12.559 +45309. -151.312 12.554 +45319. -151.995 12.545 +45329. -152.683 12.531 +45339. -153.377 12.511 +45349. -154.075 12.487 +45359. -154.775 12.461 +45369. -155.476 12.434 +45379. -156.178 12.406 +45389. -156.880 12.377 +45399. -157.581 12.351 +45409. -158.279 12.326 +45419. -158.976 12.303 +45429. -159.670 12.283 +45439. -160.361 12.267 +45449. -161.047 12.254 +45459. -161.725 12.250 +45469. -162.398 12.251 +45479. -163.067 12.256 +45489. -163.730 12.267 +45499. -164.389 12.281 +45509. -165.044 12.301 +45519. -165.689 12.329 +45529. -166.331 12.362 +45539. -166.969 12.398 +45549. -167.605 12.436 +45559. -168.238 12.476 +45569. -168.871 12.517 +45579. -169.505 12.557 +45589. -170.138 12.598 +45599. -170.772 12.637 +45609. -171.408 12.676 +45619. -172.045 12.712 +45629. -172.685 12.747 +45639. -173.330 12.775 +45649. -173.980 12.800 +45659. -174.632 12.821 +45669. -175.288 12.839 +45679. -175.947 12.855 +45689. -176.609 12.867 +45699. -177.274 12.875 +45709. -177.946 12.877 +45719. -178.619 12.878 +45729. -179.295 12.876 +45739. -179.972 12.873 +45749. -180.650 12.868 +45759. -181.329 12.864 +45769. -182.007 12.877 +45779. -182.685 12.890 +45789. -183.362 12.904 +45799. -184.038 12.919 +45809. -184.712 12.936 +45819. -185.385 12.955 +45829. -186.053 12.978 +45839. -186.718 13.004 +45849. -187.382 13.032 +45859. -188.043 13.062 +45869. -188.702 13.094 +45879. -189.359 13.128 +45889. -190.012 13.166 +45899. -190.664 13.205 +45909. -191.315 13.246 +45919. -191.964 13.288 +45929. -192.612 13.331 +45939. -193.260 13.374 +45949. -193.907 13.418 +45959. -194.555 13.462 +45969. -195.203 13.505 +45979. -195.851 13.548 +45989. -196.501 13.590 +45999. -197.151 13.630 +46009. -197.806 13.667 +46019. -198.462 13.702 +46029. -199.120 13.735 +46039. -199.779 13.767 +46049. -200.441 13.797 +46059. -201.104 13.825 +46069. -201.771 13.849 +46079. -202.439 13.872 +46089. -203.109 13.894 +46099. -203.779 13.914 +46109. -204.451 13.934 +46119. -205.123 13.953 +46129. -205.795 13.972 +46139. -206.467 13.991 +46149. -207.139 14.010 +46159. -207.811 14.030 +46169. -208.482 14.050 +46179. -209.153 14.070 +46189. -209.821 14.093 +46199. -210.489 14.117 +46209. -211.155 14.141 +46219. -211.821 14.167 +46229. -212.486 14.193 +46239. -213.151 14.220 +46249. -213.813 14.249 +46259. -214.475 14.278 +46269. -215.136 14.308 +46279. -215.798 14.337 +46289. -216.460 14.367 +46299. -217.122 14.395 +46309. -217.786 14.423 +46319. -218.451 14.449 +46329. -219.117 14.474 +46339. -219.784 14.498 +46349. -220.453 14.520 +46359. -221.124 14.540 +46369. -221.798 14.558 +46379. -222.476 14.571 +46389. -223.155 14.583 +46399. -223.836 14.593 +46409. -224.520 14.601 +46419. -225.205 14.607 +46429. -225.892 14.611 +46439. -226.581 14.613 +46449. -227.272 14.613 +46459. -227.964 14.612 +46469. -228.657 14.611 +46479. -229.350 14.609 +46489. -230.043 14.607 +46499. -230.736 14.605 +46509. -231.429 14.604 +46519. -232.120 14.603 +46529. -232.811 14.604 +46539. -233.500 14.606 +46549. -234.188 14.610 +46559. -234.872 14.617 +46569. -235.554 14.626 +46579. -236.234 14.637 +46589. -236.912 14.651 +46599. -237.587 14.666 +46609. -238.261 14.684 +46619. -238.930 14.705 +46629. -239.598 14.729 +46639. -240.264 14.755 +46649. -240.928 14.781 +46659. -241.592 14.809 +46669. -242.254 14.837 +46679. -242.916 14.867 +46689. -243.578 14.896 +46699. -244.240 14.925 +46709. -244.903 14.954 +46719. -245.566 14.982 +46729. -246.231 15.008 +46739. -246.900 15.031 +46749. -247.570 15.052 +46759. -248.242 15.071 +46769. -248.915 15.089 +46779. -249.591 15.104 +46789. -250.268 15.119 +46799. -250.949 15.129 +46809. -251.631 15.138 +46819. -252.314 15.145 +46829. -252.999 15.153 +46839. -253.683 15.159 +46849. -254.368 15.166 +46859. -255.052 15.173 +46869. -255.736 15.180 +46879. -256.419 15.188 +46889. -257.100 15.198 +46899. -257.781 15.209 +46909. -258.459 15.221 +46919. -259.133 15.239 +46929. -259.806 15.259 +46939. -260.476 15.281 +46949. -261.145 15.305 +46959. -261.812 15.331 +46969. -262.477 15.358 +46979. -263.139 15.388 +46989. -263.799 15.419 +46999. -264.459 15.452 +47009. -265.118 15.486 +47019. -265.776 15.520 +47029. -266.433 15.555 +47039. -267.091 15.589 +47049. -267.749 15.623 +47059. -268.407 15.657 +47069. -269.066 15.691 +47079. -269.725 15.724 +47089. -270.385 15.756 +47099. -271.047 15.787 +47109. -271.710 15.816 +47119. -272.375 15.843 +47129. -273.041 15.870 +47139. -273.707 15.896 +47149. -274.374 15.921 +47159. -275.042 15.945 +47169. -275.712 15.967 +47179. -276.381 15.989 +47189. -277.052 16.010 +47199. -277.722 16.030 +47209. -278.393 16.051 +47219. -279.063 16.072 +47229. -279.733 16.093 +47239. -280.403 16.114 +47249. -281.072 16.137 +47259. -281.740 16.160 +47269. -282.407 16.183 +47279. -283.074 16.209 +47289. -283.737 16.236 +47299. -284.400 16.264 +47309. -285.061 16.294 +47319. -285.721 16.326 +47329. -286.379 16.359 +47339. -287.036 16.394 +47349. -287.689 16.431 +47359. -288.341 16.470 +47369. -288.992 16.510 +47379. -289.642 16.552 +47389. -290.291 16.594 +47399. -290.940 16.636 +47409. -291.588 16.680 +47419. -292.235 16.723 +47429. -292.883 16.767 +47439. -293.531 16.810 +47449. -294.180 16.853 +47459. -294.829 16.894 +47469. -295.481 16.934 +47479. -296.134 16.972 +47489. -296.788 17.009 +47499. -297.443 17.045 +47509. -298.100 17.080 +47519. -298.757 17.114 +47529. -299.418 17.144 +47539. -300.080 17.174 +47549. -300.742 17.203 +47559. -301.404 17.231 +47569. -302.067 17.260 +47579. -302.729 17.289 +47589. -303.390 17.319 +47599. -304.050 17.350 +47609. -304.709 17.382 +47619. -305.367 17.416 +47629. -306.023 17.451 +47639. -306.677 17.488 +47649. -307.328 17.529 +47659. -307.976 17.572 +47669. -308.622 17.617 +47679. -309.267 17.663 +47689. -309.909 17.712 +47699. -310.551 17.762 +47709. -311.189 17.810 +47719. -311.826 17.860 +47729. -312.463 17.910 +47739. -313.098 17.962 +47749. -313.733 18.014 +47759. -314.368 18.065 +47769. -315.004 18.117 +47779. -315.641 18.166 +47789. -316.279 18.215 +47799. -316.918 18.263 +47809. -317.557 18.311 +47819. -318.197 18.358 +47829. -318.837 18.405 +47839. -319.480 18.449 +47849. -320.123 18.493 +47859. -320.767 18.536 +47869. -321.411 18.579 +47879. -322.055 18.622 +47889. -322.699 18.664 +47899. -323.342 18.703 +47909. -323.986 18.743 +47919. -324.629 18.782 +47929. -325.271 18.822 +47939. -325.913 18.863 +47949. -326.555 18.904 +47959. -327.194 18.943 +47969. -327.833 18.982 +47979. -328.472 19.021 +47989. -329.110 19.062 +47999. -329.748 19.102 +48009. -330.385 19.143 +48019. -331.022 19.179 +48029. -331.660 19.216 +48039. -332.297 19.253 +48049. -332.933 19.290 +48059. -333.570 19.327 +48069. -334.207 19.364 +48079. -334.845 19.396 +48089. -335.482 19.428 +48099. -336.120 19.461 +48109. -336.757 19.493 +48119. -337.394 19.525 +48129. -338.031 19.558 +48139. -338.668 19.586 +48149. -339.304 19.615 +48159. -339.940 19.645 +48169. -340.576 19.674 +48179. -341.211 19.705 +48189. -341.845 19.736 +48199. -342.478 19.768 +48209. -343.111 19.801 +48219. -343.742 19.834 +48229. -344.373 19.869 +48239. -345.003 19.904 +48249. -345.632 19.940 +48259. -346.260 19.978 +48269. -346.887 20.016 +48279. -347.513 20.056 +48289. -348.138 20.096 +48299. -348.762 20.137 +48309. -349.385 20.179 +48319. -350.008 20.215 +48329. -350.630 20.252 +48339. -351.251 20.289 +48349. -351.872 20.327 +48359. -352.492 20.366 +48369. -353.112 20.405 +48379. -353.730 20.439 +48389. -354.348 20.473 +48399. -354.966 20.508 +48409. -355.583 20.544 +48419. -356.199 20.579 +48429. -356.815 20.615 +48439. -357.431 20.652 +48449. -358.047 20.689 +48459. -358.662 20.726 +48469. -359.278 20.762 +48479. -359.893 20.799 +48489. -360.509 20.836 +48499. -361.125 20.873 +48509. -361.741 20.904 +48519. -362.357 20.936 +48529. -362.974 20.967 +48539. -363.592 20.997 +48549. -364.210 21.027 +48559. -364.829 21.056 +48569. -365.449 21.080 +48579. -366.070 21.102 +48589. -366.692 21.124 +48599. -367.314 21.146 +48609. -367.937 21.166 +48619. -368.561 21.186 +48629. -369.186 21.205 +48639. -369.811 21.224 +48649. -370.436 21.242 +48659. -371.062 21.260 +48669. -371.687 21.279 +48679. -372.312 21.298 +48689. -372.935 21.318 +48699. -373.558 21.339 +48709. -374.180 21.360 +48719. -374.801 21.383 +48729. -375.421 21.407 +48739. -376.040 21.432 +48749. -376.656 21.455 +48759. -377.271 21.479 +48769. -377.886 21.504 +48779. -378.499 21.530 +48789. -379.112 21.556 +48799. -379.723 21.584 +48809. -380.334 21.608 +48819. -380.944 21.633 +48829. -381.554 21.658 +48839. -382.164 21.684 +48849. -382.774 21.709 +48859. -383.384 21.733 +48869. -383.996 21.757 +48879. -384.608 21.780 +48889. -385.221 21.802 +48899. -385.834 21.823 +48909. -386.449 21.844 +48919. -387.064 21.864 +48929. -387.680 21.883 +48939. -388.298 21.900 +48949. -388.916 21.917 +48959. -389.535 21.933 +48969. -390.154 21.949 +48979. -390.774 21.964 +48989. -391.395 21.978 +48999. -392.015 21.993 +49009. -392.635 22.008 +49019. -393.255 22.023 +49029. -393.876 22.037 +49039. -394.496 22.052 +49049. -395.117 22.066 +49059. -395.738 22.081 +49069. -396.359 22.095 +49079. -396.980 22.109 +49089. -397.601 22.124 +49099. -398.222 22.139 +49109. -398.843 22.155 +49119. -399.464 22.173 +49129. -400.086 22.191 +49139. -400.707 22.209 +49149. -401.329 22.227 +49159. -401.950 22.245 +49169. -402.572 22.262 +49179. -403.194 22.280 +49189. -403.816 22.297 +49199. -404.437 22.315 +49209. -405.059 22.332 +49219. -405.682 22.349 +49229. -406.304 22.367 +49239. -406.926 22.384 +49249. -407.548 22.401 +49259. -408.171 22.417 +49269. -408.794 22.434 +49279. -409.416 22.451 +49289. -410.039 22.467 +49299. -410.662 22.484 +49309. -411.285 22.500 +49319. -411.908 22.517 +49329. -412.531 22.533 +49339. -413.154 22.549 +49349. -413.777 22.565 +49359. -414.400 22.582 +49369. -415.024 22.598 +49379. -415.647 22.614 +49389. -416.270 22.630 +49399. -416.893 22.647 +49409. -417.516 22.663 +49419. -418.138 22.680 +49429. -418.761 22.697 +49439. -419.384 22.713 +49449. -420.006 22.730 +49459. -420.628 22.748 +49469. -421.250 22.765 +49479. -421.872 22.782 +49489. -422.494 22.800 +49499. -423.115 22.818 +49509. -423.737 22.836 +49519. -424.358 22.854 +49529. -424.979 22.872 +49539. -425.600 22.891 +49549. -426.221 22.909 +49559. -426.841 22.928 +49569. -427.462 22.946 +49579. -428.083 22.965 +49589. -428.703 22.984 +49599. -429.324 23.003 +49609. -429.944 23.022 +49619. -430.564 23.041 +49629. -431.185 23.060 +49639. -431.805 23.079 +49649. -432.425 23.098 +49659. -433.045 23.118 +49669. -433.665 23.137 +49679. -434.285 23.156 +49689. -434.905 23.176 +49699. -435.525 23.196 +49709. -436.144 23.215 +49719. -436.763 23.235 +49729. -437.383 23.256 +49739. -438.002 23.276 +49749. -438.621 23.296 +49759. -439.239 23.317 +49769. -439.858 23.338 +49779. -440.476 23.358 +49789. -441.095 23.378 +49799. -441.713 23.399 +49809. -442.330 23.419 +49819. -442.948 23.440 +49829. -443.566 23.461 +49839. -444.183 23.481 +49849. -444.801 23.501 +49859. -445.418 23.522 +49869. -446.035 23.542 +49879. -446.652 23.562 +49889. -447.270 23.583 +49899. -447.887 23.603 +49909. -448.504 23.622 +49919. -449.121 23.642 +49929. -449.738 23.662 +49939. -450.355 23.681 +49949. -450.972 23.701 +49959. -451.589 23.721 +49969. -452.206 23.740 +49979. -452.823 23.758 +49989. -453.441 23.777 +49999. -454.058 23.796 +50009. -454.675 23.815 +50019. -455.292 23.834 +50029. -455.909 23.852 +50039. -456.526 23.870 +50049. -457.143 23.888 +50059. -457.759 23.906 +50069. -458.376 23.925 +50079. -458.992 23.943 +50089. -459.608 23.961 +50099. -460.224 23.980 +50109. -460.840 23.998 +50119. -461.455 24.017 +50129. -462.071 24.036 +50139. -462.685 24.055 +50149. -463.300 24.074 +50159. -463.914 24.093 +50169. -464.528 24.112 +50179. -465.142 24.132 +50189. -465.756 24.152 +50199. -466.369 24.172 +50209. -466.982 24.191 +50219. -467.594 24.211 +50229. -468.206 24.232 +50239. -468.818 24.252 +50249. -469.430 24.273 +50259. -470.041 24.294 +50269. -470.652 24.315 +50279. -471.263 24.336 +50289. -471.873 24.357 +50299. -472.483 24.379 +50309. -473.093 24.400 +50319. -473.703 24.422 +50329. -474.312 24.444 +50339. -474.921 24.465 +50349. -475.530 24.486 +50359. -476.139 24.508 +50369. -476.748 24.529 +50379. -477.356 24.551 +50389. -477.965 24.573 +50399. -478.573 24.594 +50409. -479.181 24.615 +50419. -479.788 24.636 +50429. -480.396 24.657 +50439. -481.003 24.679 +50449. -481.611 24.700 +50459. -482.218 24.720 +50469. -482.825 24.741 +50479. -483.432 24.762 +50489. -484.039 24.782 +50499. -484.646 24.803 +50509. -485.252 24.824 +50519. -485.859 24.843 +50529. -486.466 24.863 +50539. -487.072 24.883 +50549. -487.679 24.903 +50559. -488.285 24.923 +50569. -488.892 24.942 +50579. -489.498 24.960 +50589. -490.105 24.978 +50599. -490.712 24.996 +50609. -491.318 25.014 +50619. -491.925 25.031 +50629. -492.532 25.049 +50639. -493.140 25.065 +50649. -493.747 25.080 +50659. -494.354 25.096 +50669. -494.962 25.111 +50679. -495.570 25.126 +50689. -496.178 25.141 +50699. -496.787 25.153 +50709. -497.396 25.166 +50719. -498.005 25.178 +50729. -498.614 25.190 +50739. -499.223 25.202 +50749. -499.833 25.213 +50759. -500.443 25.223 +50769. -501.054 25.232 +50779. -501.664 25.241 +50789. -502.275 25.249 +50799. -502.886 25.258 +50809. -503.497 25.266 +50819. -504.109 25.273 +50829. -504.721 25.280 +50839. -505.333 25.286 +50849. -505.945 25.292 +50859. -506.558 25.297 +50869. -507.171 25.302 +50879. -507.784 25.306 +50889. -508.397 25.310 +50899. -509.010 25.314 +50909. -509.624 25.316 +50919. -510.237 25.318 +50929. -510.851 25.320 +50939. -511.465 25.322 +50949. -512.080 25.324 +50959. -512.694 25.326 +50969. -513.309 25.327 +50979. -513.924 25.328 +50989. -514.538 25.329 +50999. -515.153 25.331 +51009. -515.769 25.331 +51019. -516.384 25.332 +51029. -516.999 25.333 +51039. -517.614 25.334 +51049. -518.230 25.334 +51059. -518.845 25.335 +51069. -519.460 25.336 +51079. -520.076 25.336 +51089. -520.691 25.337 +51099. -521.307 25.338 +51109. -521.922 25.339 +51119. -522.537 25.339 +51129. -523.152 25.340 +51139. -523.767 25.341 +51149. -524.382 25.342 +51159. -524.997 25.343 +51169. -525.612 25.345 +51179. -526.227 25.346 +51189. -526.841 25.347 +51199. -527.456 25.349 +51209. -528.070 25.350 +51219. -528.685 25.352 +51229. -529.299 25.354 +51239. -529.913 25.356 +51249. -530.527 25.359 +51259. -531.141 25.362 +51269. -531.754 25.366 +51279. -532.368 25.369 +51289. -532.982 25.372 +51299. -533.595 25.376 +51309. -534.208 25.379 +51319. -534.822 25.383 +51329. -535.435 25.387 +51339. -536.048 25.390 +51349. -536.661 25.394 +51359. -537.274 25.398 +51369. -537.886 25.403 +51379. -538.499 25.407 +51389. -539.112 25.411 +51399. -539.724 25.415 +51409. -540.337 25.420 +51419. -540.949 25.424 +51429. -541.562 25.429 +51439. -542.174 25.433 +51449. -542.787 25.437 +51459. -543.399 25.442 +51469. -544.011 25.446 +51479. -544.624 25.451 +51489. -545.236 25.455 +51499. -545.849 25.460 +51509. -546.461 25.464 +51519. -547.073 25.469 +51529. -547.686 25.473 +51539. -548.298 25.478 +51549. -548.910 25.482 +51559. -549.522 25.486 +51569. -550.134 25.490 +51579. -550.746 25.494 +51589. -551.358 25.498 +51599. -551.970 25.502 +51609. -552.581 25.507 +51619. -553.193 25.512 +51629. -553.804 25.516 +51639. -554.415 25.522 +51649. -555.026 25.527 +51659. -555.636 25.532 +51669. -556.247 25.538 +51679. -556.857 25.543 +51689. -557.467 25.549 +51699. -558.077 25.555 +51709. -558.687 25.560 +51719. -559.297 25.566 +51729. -559.906 25.571 +51739. -560.516 25.577 +51749. -561.125 25.583 +51759. -561.734 25.589 +51769. -562.343 25.595 +51779. -562.952 25.602 +51789. -563.561 25.608 +51799. -564.169 25.614 +51809. -564.778 25.621 +51819. -565.387 25.627 +51829. -565.995 25.633 +51839. -566.604 25.639 +51849. -567.212 25.644 +51859. -567.821 25.650 +51869. -568.429 25.656 +51879. -569.037 25.662 +51889. -569.646 25.667 +51899. -570.254 25.672 +51909. -570.862 25.678 +51919. -571.470 25.683 +51929. -572.078 25.688 +51939. -572.686 25.694 +51949. -573.294 25.699 +51959. -573.901 25.704 +51969. -574.509 25.709 +51979. -575.116 25.714 +51989. -575.723 25.720 +51999. -576.330 25.726 +52009. -576.936 25.732 +52019. -577.543 25.738 +52029. -578.149 25.744 +52039. -578.755 25.750 +52049. -579.360 25.756 +52059. -579.966 25.762 +52069. -580.571 25.769 +52079. -581.176 25.776 +52089. -581.780 25.783 +52099. -582.385 25.790 +52109. -582.989 25.798 +52119. -583.593 25.806 +52129. -584.196 25.813 +52139. -584.799 25.821 +52149. -585.403 25.828 +52159. -586.006 25.836 +52169. -586.608 25.844 +52179. -587.211 25.853 +52189. -587.813 25.860 +52199. -588.415 25.868 +52209. -589.017 25.876 +52219. -589.619 25.885 +52229. -590.220 25.893 +52239. -590.821 25.902 +52249. -591.422 25.910 +52259. -592.023 25.918 +52269. -592.624 25.927 +52279. -593.224 25.935 +52289. -593.825 25.944 +52299. -594.425 25.953 +52309. -595.025 25.962 +52319. -595.625 25.970 +52329. -596.224 25.979 +52339. -596.824 25.988 +52349. -597.423 25.997 +52359. -598.022 26.006 +52369. -598.621 26.015 +52379. -599.220 26.023 +52389. -599.819 26.032 +52399. -600.417 26.041 +52409. -601.016 26.049 +52419. -601.614 26.058 +52429. -602.213 26.067 +52439. -602.811 26.076 +52449. -603.409 26.084 +52459. -604.007 26.093 +52469. -604.605 26.101 +52479. -605.202 26.110 +52489. -605.800 26.119 +52499. -606.397 26.127 +52509. -606.995 26.135 +52519. -607.592 26.143 +52529. -608.189 26.152 +52539. -608.786 26.161 +52549. -609.383 26.169 +52559. -609.980 26.177 +52569. -610.576 26.185 +52579. -611.173 26.194 +52589. -611.769 26.202 +52599. -612.365 26.211 +52609. -612.961 26.219 +52619. -613.557 26.227 +52629. -614.153 26.236 +52639. -614.748 26.244 +52649. -615.344 26.252 +52659. -615.939 26.261 +52669. -616.535 26.269 +52679. -617.130 26.277 +52689. -617.725 26.285 +52699. -618.321 26.293 +52709. -618.916 26.300 +52719. -619.511 26.308 +52729. -620.1064 26.3161 +52739. -620.7016 26.3231 +52749. -621.2968 26.3302 +52759. -621.8918 26.3373 +52769. -622.4868 26.3445 +52779. -623.0818 26.3518 +52789. -623.6766 26.3592 +52799. -624.2713 26.3658 +52809. -624.8658 26.3726 +52819. -625.4602 26.3796 +52829. -626.0544 26.3867 +52839. -626.6484 26.3941 +52849. -627.2421 26.4017 +52859. -627.8357 26.4095 +52869. -628.4290 26.4175 +52879. -629.0221 26.4257 +52889. -629.6151 26.4341 +52899. -630.2078 26.4428 +52909. -630.8003 26.4515 +52919. -631.3927 26.4596 +52929. -631.9850 26.4678 +52939. -632.5772 26.4761 +52949. -633.1693 26.4845 +52959. -633.7614 26.4929 +52969. -634.3534 26.5013 +52979. -634.9455 26.5089 +52989. -635.5376 26.5164 +52999. -636.1298 26.5238 +53009. -636.7221 26.5312 +53019. -637.3144 26.5384 +53029. -637.9070 26.5455 +53039. -638.4996 26.5521 +53049. -639.0923 26.5580 +53059. -639.6852 26.5639 +53069. -640.2782 26.5697 +53079. -640.8713 26.5753 +53089. -641.4645 26.5809 +53099. -642.0578 26.5859 +53109. -642.6511 26.5905 +53119. -643.2444 26.5951 +53129. -643.8378 26.5996 +53139. -644.4312 26.6041 +53149. -645.0245 26.6087 +53159. -645.6179 26.6128 +53169. -646.2112 26.6165 +53179. -646.8045 26.6202 +53189. -647.3977 26.6237 +53199. -647.9910 26.6269 +53209. -648.5842 26.6302 +53219. -649.1774 26.6333 +53229. -649.7706 26.6362 +53239. -650.3637 26.6391 +53249. -650.9568 26.6421 +53259. -651.5499 26.6451 +53269. -652.1429 26.6482 +53279. -652.7359 26.6513 +53289. -653.3288 26.6545 +53299. -653.9216 26.6578 +53309. -654.5143 26.6611 +53319. -655.1069 26.6646 +53329. -655.6993 26.6682 +53339. -656.2917 26.6719 +53349. -656.8838 26.6758 +53359. -657.4759 26.6799 +53369. -658.0677 26.6841 +53379. -658.6594 26.6882 +53389. -659.2508 26.6925 +53399. -659.8421 26.6969 +53409. -660.4332 26.7016 +53419. -661.0241 26.7064 +53429. -661.6148 26.7114 +53439. -662.2053 26.7163 +53449. -662.7956 26.7214 +53459. -663.3857 26.7266 +53469. -663.9757 26.7318 +53479. -664.5656 26.7370 +53489. -665.1552 26.7425 +53499. -665.7448 26.7479 +53509. -666.3343 26.7534 +53519. -666.9236 26.7590 +53529. -667.5129 26.7645 +53539. -668.1021 26.7701 +53549. -668.6912 26.7757 +53559. -669.2803 26.7809 +53569. -669.8693 26.7861 +53579. -670.4583 26.7914 +53589. -671.0473 26.7964 +53599. -671.6363 26.8015 +53609. -672.2253 26.8066 +53619. -672.8143 26.8112 +53629. -673.4033 26.8158 +53639. -673.9923 26.8203 +53649. -674.5813 26.8247 +53659. -675.1704 26.8291 +53669. -675.7594 26.8334 +53679. -676.3484 26.8375 +53689. -676.9375 26.8414 +53699. -677.5265 26.8452 +53709. -678.1156 26.8488 +53719. -678.7046 26.8521 +53729. -679.2936 26.8554 +53739. -679.8826 26.8586 +53749. -680.4715 26.8615 +53759. -681.0604 26.8644 +53769. -681.6492 26.8672 +53779. -682.2379 26.8698 +53789. -682.8266 26.8725 +53799. -683.4151 26.8750 +53809. -684.0036 26.8774 +53819. -684.5919 26.8799 +53829. -685.1801 26.8822 +53839. -685.7681 26.8844 +53849. -686.3560 26.8868 +53859. -686.9438 26.8891 +53869. -687.5314 26.8912 +53879. -688.1189 26.8935 +53889. -688.7063 26.8957 +53899. -689.2936 26.8980 +53909. -689.8807 26.9003 +53919. -690.4678 26.9028 +53929. -691.0548 26.9053 +53939. -691.6417 26.9078 +53949. -692.2286 26.9103 +53959. -692.8155 26.9127 +53969. -693.4024 26.9151 +53979. -693.9893 26.9174 +53989. -694.5761 26.9198 +53999. -695.1631 26.9221 +54009. -695.7500 26.9243 +54019. -696.3370 26.9263 +54029. -696.9240 26.9283 +54039. -697.5110 26.9302 +54049. -698.0981 26.9322 +54059. -698.6852 26.9340 +54069. -699.2723 26.9359 +54079. -699.8594 26.9374 +54089. -700.4465 26.9389 +54099. -701.0335 26.9404 +54109. -701.6205 26.9415 +54119. -702.2074 26.9426 +54129. -702.7942 26.9438 +54139. -703.3809 26.9448 +54149. -703.9675 26.9459 +54159. -704.5539 26.9472 +54169. -705.1403 26.9485 +54179. -705.7264 26.9501 +54189. -706.3124 26.9517 +54199. -706.8983 26.9536 +54209. -707.4840 26.9556 +54219. -708.0695 26.9577 +54229. -708.6549 26.9600 +54239. -709.2402 26.9625 +54249. -709.8253 26.9651 +54259. -710.4102 26.9675 +54269. -710.9951 26.9701 +54279. -711.5797 26.9729 +54289. -712.1643 26.9755 +54299. -712.7487 26.9783 +54309. -713.3330 26.9812 +54319. -713.9171 26.9840 +54329. -714.5011 26.9869 +54339. -715.0850 26.9899 +54349. -715.6688 26.9928 +54359. -716.2525 26.9957 +54369. -716.8360 26.9988 +54379. -717.4195 27.0018 +54389. -718.0029 27.0048 +54399. -718.5861 27.0079 +54409. -719.1693 27.0110 +54419. -719.7524 27.0141 +54429. -720.3354 27.0172 +54439. -720.9183 27.0202 +54449. -721.5011 27.0231 +54459. -722.0838 27.0261 +54469. -722.6664 27.0291 +54479. -723.2489 27.0320 +54489. -723.8313 27.0351 +54499. -724.4136 27.0381 +54509. -724.9957 27.0411 +54519. -725.5778 27.0441 +54529. -726.1597 27.0472 +54539. -726.7415 27.0502 +54549. -727.3231 27.0534 +54559. -727.9046 27.0566 +54569. -728.4860 27.0598 +54579. -729.0673 27.0631 +54589. -729.6484 27.0664 +54599. -730.2295 27.0697 +54609. -730.8104 27.0731 +54619. -731.3912 27.0764 +54629. -731.9719 27.0796 +54639. -732.5525 27.0829 +54649. -733.1330 27.0861 +54659. -733.7134 27.0892 +54669. -734.2936 27.0924 +54679. -734.8738 27.0955 +54689. -735.4539 27.0986 +54699. -736.0338 27.1019 +54709. -736.6137 27.1052 +54719. -737.1934 27.1085 +54729. -737.7730 27.1118 +54739. -738.3524 27.1154 +54749. -738.9317 27.1186 +54759. -739.5108 27.1220 +54769. -740.0897 27.1256 +54779. -740.6685 27.1291 +54789. -741.2470 27.1328 +54799. -741.8254 27.1367 +54809. -742.4035 27.1405 +54819. -742.9814 27.1446 +54829. -743.5591 27.1489 Property changes on: trunk/lib/qsastime/ttbipm.dat ___________________________________________________________________ Added: svn:eol-style + native This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <and...@us...> - 2011-10-14 09:29:05
|
Revision: 11971 http://plplot.svn.sourceforge.net/plplot/?rev=11971&view=rev Author: andrewross Date: 2011-10-14 09:28:58 +0000 (Fri, 14 Oct 2011) Log Message: ----------- More fixed compiler warnings for qsastime. This library is now clean. Modified Paths: -------------- trunk/lib/qsastime/deltaT-gen.c trunk/lib/qsastime/deltaT_test.c trunk/lib/qsastime/dspline.c trunk/lib/qsastime/dsplint.c trunk/lib/qsastime/qsastime.c trunk/lib/qsastime/tai-utc-gen.c Added Paths: ----------- trunk/lib/qsastime/dspline.h trunk/lib/qsastime/dsplint.h Modified: trunk/lib/qsastime/deltaT-gen.c =================================================================== --- trunk/lib/qsastime/deltaT-gen.c 2011-10-14 08:30:19 UTC (rev 11970) +++ trunk/lib/qsastime/deltaT-gen.c 2011-10-14 09:28:58 UTC (rev 11971) @@ -31,8 +31,7 @@ #include <stdlib.h> #include <string.h> #include <math.h> -int dspline( double *x, double *y, int n, - int if1, double cond1, int ifn, double condn, double *y2 ); +#include "dspline.h" //-------------------------------------------------------------------------- @@ -103,13 +102,13 @@ // Allocate memory to the arrays which will hold the data // - if ( ( xspline = (double *) calloc( number_of_lines, (size_t) sizeof ( double ) ) ) == NULL ) + if ( ( xspline = (double *) calloc( (size_t) number_of_lines, (size_t) sizeof ( double ) ) ) == NULL ) MemError1( "Allocating memory to the xspline table" ); - if ( ( yspline = (double *) calloc( number_of_lines, (size_t) sizeof ( double ) ) ) == NULL ) + if ( ( yspline = (double *) calloc( (size_t) number_of_lines, (size_t) sizeof ( double ) ) ) == NULL ) MemError1( "Allocating memory to the yspline table" ); - if ( ( y2spline = (double *) calloc( number_of_lines, (size_t) sizeof ( double ) ) ) == NULL ) + if ( ( y2spline = (double *) calloc( (size_t) number_of_lines, (size_t) sizeof ( double ) ) ) == NULL ) MemError1( "Allocating memory to the y2spline table" ); rewind( fr ); // Go back to the start of the file Modified: trunk/lib/qsastime/deltaT_test.c =================================================================== --- trunk/lib/qsastime/deltaT_test.c 2011-10-14 08:30:19 UTC (rev 11970) +++ trunk/lib/qsastime/deltaT_test.c 2011-10-14 09:28:58 UTC (rev 11971) @@ -1,5 +1,6 @@ #include "deltaT.h" #include "qsastime.h" +#include "dsplint.h" #include <stdio.h> int main() { Modified: trunk/lib/qsastime/dspline.c =================================================================== --- trunk/lib/qsastime/dspline.c 2011-10-14 08:30:19 UTC (rev 11970) +++ trunk/lib/qsastime/dspline.c 2011-10-14 09:28:58 UTC (rev 11971) @@ -22,6 +22,9 @@ // Fortran to C with the aid of f2c and relicensed for PLplot under the LGPL // with the permission of the FreeEOS copyright holder (Alan W. Irwin). // + +#include "dspline.h" + int dspline( double *x, double *y, int n, int if1, double cond1, int ifn, double condn, double *y2 ) { Added: trunk/lib/qsastime/dspline.h =================================================================== --- trunk/lib/qsastime/dspline.h (rev 0) +++ trunk/lib/qsastime/dspline.h 2011-10-14 09:28:58 UTC (rev 11971) @@ -0,0 +1,25 @@ +#ifndef _DSPLINE_H_ +#define _DSPLINE_H_ +// +// Copyright (C) 2009 Alan W. Irwin +// +// This file is part of PLplot. +// +// PLplot is free software; you can redistribute it and/or modify +// it under the terms of the GNU Library General Public License as published +// by the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// PLplot 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 Library General Public License for more details. +// +// You should have received a copy of the GNU Library General Public License +// along with PLplot; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + +int dspline( double *x, double *y, int n, + int if1, double cond1, int ifn, double condn, double *y2 ); + +#endif // _DSPLINE_H_ Modified: trunk/lib/qsastime/dsplint.c =================================================================== --- trunk/lib/qsastime/dsplint.c 2011-10-14 08:30:19 UTC (rev 11970) +++ trunk/lib/qsastime/dsplint.c 2011-10-14 09:28:58 UTC (rev 11971) @@ -22,6 +22,9 @@ // Fortran to C with the aid of f2c and relicensed for PLplot under the LGPL // with the permission of the FreeEOS copyright holder (Alan W. Irwin). // + +#include "dsplint.h" + # define MAX( a, b ) ( ( ( a ) > ( b ) ) ? ( a ) : ( b ) ) # define MIN( a, b ) ( ( ( a ) < ( b ) ) ? ( a ) : ( b ) ) Added: trunk/lib/qsastime/dsplint.h =================================================================== --- trunk/lib/qsastime/dsplint.h (rev 0) +++ trunk/lib/qsastime/dsplint.h 2011-10-14 09:28:58 UTC (rev 11971) @@ -0,0 +1,25 @@ +#ifndef _DSPLINT_H_ +#define _DSPLINT_H_ +// +// Copyright (C) 2009 Alan W. Irwin +// +// This file is part of PLplot. +// +// PLplot is free software; you can redistribute it and/or modify +// it under the terms of the GNU Library General Public License as published +// by the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// PLplot 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 Library General Public License for more details. +// +// You should have received a copy of the GNU Library General Public License +// along with PLplot; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + + +int dsplint( double *xa, double *ya, double *y2a, int n, double x, double *y ); + +#endif // _DSPLINT_H_ Modified: trunk/lib/qsastime/qsastime.c =================================================================== --- trunk/lib/qsastime/qsastime.c 2011-10-14 08:30:19 UTC (rev 11970) +++ trunk/lib/qsastime/qsastime.c 2011-10-14 09:28:58 UTC (rev 11971) @@ -393,7 +393,7 @@ // Find required resolution resolution = 0; - fmtlen = strlen( format ); + fmtlen = (int) strlen( format ); i = 0; while ( i < fmtlen ) { @@ -405,7 +405,7 @@ next = format[i]; if ( isdigit( next ) != 0 ) { - nplaces = strtol( &( format[i] ), NULL, 10 ); + nplaces = (int) strtol( &( format[i] ), NULL, 10 ); if ( nplaces > resolution ) resolution = nplaces; } @@ -723,7 +723,7 @@ // maximum number of places nplaces = 9; else - nplaces = strtol( &( format[i + 2] ), NULL, 10 ); + nplaces = (int) strtol( &( format[i + 2] ), NULL, 10 ); i += 2; } else @@ -741,7 +741,7 @@ sprintf( DateTime, dynamic_format, sec ); if ( format[i] == '.' ) { - slen = strlen( DateTime ) - 1; + slen = (int) strlen( DateTime ) - 1; while ( DateTime[slen] == '0' && DateTime[slen - 1] != '.' ) { DateTime[slen] = '\0'; // remove trailing zeros @@ -979,7 +979,7 @@ // maximum number of places nplaces = 9; else - nplaces = strtol( &( format[i] ), NULL, 10 ); + nplaces = (int) strtol( &( format[i] ), NULL, 10 ); // fractional part of seconds to maximum available accuracy sec_fraction = sec - (int) sec; @@ -991,7 +991,7 @@ if ( next == '.' ) { - slen = strlen( DateTime ) - 1; + slen = (int) strlen( DateTime ) - 1; while ( DateTime[slen] == '0' && DateTime[slen - 1] != '.' ) { DateTime[slen] = '\0'; // remove trailing zeros @@ -1327,18 +1327,18 @@ else { // binary hunt phase where we are assured 0 <= *low < n - indexbase = (const void *) ( ( (const char *) base ) + ( size * ( *low ) ) ); + indexbase = (const void *) ( ( (const char *) base ) + ( size * (size_t) ( *low ) ) ); if ( ( *ge )( key, indexbase ) ) { high = ( *low ) + hunt_inc; - indexbase = (const void *) ( ( (const char *) base ) + ( size * high ) ); + indexbase = (const void *) ( ( (const char *) base ) + ( size * (size_t) high ) ); // indexbase is valid if high < n. while ( ( high < n ) && ( ( *ge )( key, indexbase ) ) ) { *low = high; hunt_inc += hunt_inc; high = high + hunt_inc; - indexbase = (const void *) ( ( (const char *) base ) + ( size * high ) ); + indexbase = (const void *) ( ( (const char *) base ) + ( size * (size_t) high ) ); } if ( high >= n ) high = n; @@ -1349,14 +1349,14 @@ { high = *low; *low = high - hunt_inc; - indexbase = (const void *) ( ( (const char *) base ) + ( size * ( *low ) ) ); + indexbase = (const void *) ( ( (const char *) base ) + ( size * (size_t) ( *low ) ) ); // indexbase is valid if(*low) >= 0 while ( ( ( *low ) >= 0 ) && !( ( *ge )( key, indexbase ) ) ) { high = *low; hunt_inc += hunt_inc; *low = ( *low ) - hunt_inc; - indexbase = (const void *) ( ( (const char *) base ) + ( size * ( *low ) ) ); + indexbase = (const void *) ( ( (const char *) base ) + ( size * (size_t) ( *low ) ) ); } if ( ( *low ) < 0 ) *low = -1; @@ -1370,7 +1370,7 @@ while ( high - *low > 1 ) { mid = *low + ( high - *low ) / 2; - indexbase = (const void *) ( ( (const char *) base ) + ( size * mid ) ); + indexbase = (const void *) ( ( (const char *) base ) + ( size * (size_t) mid ) ); if ( ( *ge )( key, indexbase ) ) *low = mid; else Modified: trunk/lib/qsastime/tai-utc-gen.c =================================================================== --- trunk/lib/qsastime/tai-utc-gen.c 2011-10-14 08:30:19 UTC (rev 11970) +++ trunk/lib/qsastime/tai-utc-gen.c 2011-10-14 09:28:58 UTC (rev 11971) @@ -112,19 +112,19 @@ // Allocate memory to the arrays which will hold the data // - if ( ( MJDstart = (int *) calloc( number_of_lines, (size_t) sizeof ( int ) ) ) == NULL ) + if ( ( MJDstart = (int *) calloc( (size_t) number_of_lines, (size_t) sizeof ( int ) ) ) == NULL ) MemError1( "Allocating memory to the MJDstart table" ); - if ( ( offset1 = (double *) calloc( number_of_lines, (size_t) sizeof ( double ) ) ) == NULL ) + if ( ( offset1 = (double *) calloc( (size_t) number_of_lines, (size_t) sizeof ( double ) ) ) == NULL ) MemError1( "Allocating memory to the offset1 table" ); - if ( ( offset2 = (int *) calloc( number_of_lines, (size_t) sizeof ( int ) ) ) == NULL ) + if ( ( offset2 = (int *) calloc( (size_t) number_of_lines, (size_t) sizeof ( int ) ) ) == NULL ) MemError1( "Allocating memory to the offset2 table" ); - if ( ( slope = (double *) calloc( number_of_lines, (size_t) sizeof ( double ) ) ) == NULL ) + if ( ( slope = (double *) calloc( (size_t) number_of_lines, (size_t) sizeof ( double ) ) ) == NULL ) MemError1( "Allocating memory to the slope table" ); - if ( ( leap_sec = (double *) calloc( number_of_lines, (size_t) sizeof ( double ) ) ) == NULL ) + if ( ( leap_sec = (double *) calloc( (size_t) number_of_lines, (size_t) sizeof ( double ) ) ) == NULL ) MemError1( "Allocating memory to the leap_sec table" ); rewind( fr ); // Go back to the start of the file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |