diff options
author | Ulrich Drepper <drepper@redhat.com> | 2001-10-14 22:33:08 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2001-10-14 22:33:08 +0000 |
commit | 1f5649f86b7de5aec990e03f2700df36a01c2752 (patch) | |
tree | c6126aff7f80434c64f21dd6033215864afd57cd | |
parent | 459a31635e9fe474c05e995312fde318d7c4a5b0 (diff) | |
download | glibc-1f5649f86b7de5aec990e03f2700df36a01c2752.zip glibc-1f5649f86b7de5aec990e03f2700df36a01c2752.tar.gz glibc-1f5649f86b7de5aec990e03f2700df36a01c2752.tar.bz2 |
Update.
2001-10-14 Ulrich Drepper <drepper@redhat.com>
* locale/programs/ld-collate.c (handle_ellipsis): Use %lX not %lx
to generate hexadecimal identifier.
Patch by Jungshik Shin <jungshik.shin@yale.edu>.
2001-10-09 Stephen L Moshier <moshier@mediaone.net>
* sysdeps/ieee754/ldbl-96/s_cbrtl.c (__cbrtl): Fix algorithm.
2001-10-14 Ulrich Drepper <drepper@redhat.com>
* sysdeps/ieee754/ldbl-128/e_powl.c: New file.
* sysdeps/ieee754/ldbl-128/s_cbrtl.c: New file.
Contributed by Stephen L Moshier <moshier@mediaone.net>.
* sysdeps/ieee754/ldbl-128/e_j0l.c: Constify float variables.
* sysdeps/ieee754/ldbl-128/e_j1l.c: Likewise.
* sysdeps/ieee754/ldbl-128/e_lgammal_r.c: Likewise
* sysdeps/ieee754/ldbl-128/s_erfl.c: Likewise
* sysdeps/ieee754/ldbl-128/s_expm1l.c: Likewise
* sysdeps/ieee754/ldbl-128/s_log1pl.c: Likewise
* timezone/africa: Update from tzdata2001d.
* timezone/asia: Likewise.
* timezone/australasia: Likewise.
* timezone/backward: Likewise.
* timezone/europe: Likewise.
* timezone/leapseconds: Likewise.
* timezone/northamerica: Likewise.
* timezone/southamerica: Likewise.
* timezone/zone.tab: Likewise.
2001-10-09 Martin Schwidefsky <schwidefsky@de.ibm.com>
* sysdeps/s390/s390-32/sys/ucontext.h: Correct __psw_t typedef.
* sysdeps/s390/s390-64/sys/ucontext.h: Likewise.
-rw-r--r-- | ChangeLog | 38 | ||||
-rw-r--r-- | locale/programs/ld-collate.c | 2 | ||||
-rw-r--r-- | localedata/ChangeLog | 4 | ||||
-rw-r--r-- | localedata/locales/ko_KR | 4 | ||||
-rw-r--r-- | sysdeps/ieee754/ldbl-128/e_j0l.c | 74 | ||||
-rw-r--r-- | sysdeps/ieee754/ldbl-128/e_j1l.c | 74 | ||||
-rw-r--r-- | sysdeps/ieee754/ldbl-128/e_lgammal_r.c | 150 | ||||
-rw-r--r-- | sysdeps/ieee754/ldbl-128/e_powl.c | 422 | ||||
-rw-r--r-- | sysdeps/ieee754/ldbl-128/s_cbrtl.c | 121 | ||||
-rw-r--r-- | sysdeps/ieee754/ldbl-128/s_erfl.c | 106 | ||||
-rw-r--r-- | sysdeps/ieee754/ldbl-128/s_expm1l.c | 6 | ||||
-rw-r--r-- | sysdeps/ieee754/ldbl-128/s_log1pl.c | 16 | ||||
-rw-r--r-- | sysdeps/ieee754/ldbl-96/s_cbrtl.c | 31 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/s390/s390-32/sys/ucontext.h | 2 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/s390/s390-64/sys/ucontext.h | 2 | ||||
-rw-r--r-- | timezone/africa | 18 | ||||
-rw-r--r-- | timezone/asia | 22 | ||||
-rw-r--r-- | timezone/australasia | 121 | ||||
-rw-r--r-- | timezone/backward | 9 | ||||
-rw-r--r-- | timezone/europe | 163 | ||||
-rw-r--r-- | timezone/leapseconds | 31 | ||||
-rw-r--r-- | timezone/northamerica | 69 | ||||
-rw-r--r-- | timezone/southamerica | 52 | ||||
-rw-r--r-- | timezone/zone.tab | 23 |
24 files changed, 1231 insertions, 329 deletions
@@ -1,3 +1,41 @@ +2001-10-14 Ulrich Drepper <drepper@redhat.com> + + * locale/programs/ld-collate.c (handle_ellipsis): Use %lX not %lx + to generate hexadecimal identifier. + Patch by Jungshik Shin <jungshik.shin@yale.edu>. + +2001-10-09 Stephen L Moshier <moshier@mediaone.net> + + * sysdeps/ieee754/ldbl-96/s_cbrtl.c (__cbrtl): Fix algorithm. + +2001-10-14 Ulrich Drepper <drepper@redhat.com> + + * sysdeps/ieee754/ldbl-128/e_powl.c: New file. + * sysdeps/ieee754/ldbl-128/s_cbrtl.c: New file. + Contributed by Stephen L Moshier <moshier@mediaone.net>. + + * sysdeps/ieee754/ldbl-128/e_j0l.c: Constify float variables. + * sysdeps/ieee754/ldbl-128/e_j1l.c: Likewise. + * sysdeps/ieee754/ldbl-128/e_lgammal_r.c: Likewise + * sysdeps/ieee754/ldbl-128/s_erfl.c: Likewise + * sysdeps/ieee754/ldbl-128/s_expm1l.c: Likewise + * sysdeps/ieee754/ldbl-128/s_log1pl.c: Likewise + + * timezone/africa: Update from tzdata2001d. + * timezone/asia: Likewise. + * timezone/australasia: Likewise. + * timezone/backward: Likewise. + * timezone/europe: Likewise. + * timezone/leapseconds: Likewise. + * timezone/northamerica: Likewise. + * timezone/southamerica: Likewise. + * timezone/zone.tab: Likewise. + +2001-10-09 Martin Schwidefsky <schwidefsky@de.ibm.com> + + * sysdeps/s390/s390-32/sys/ucontext.h: Correct __psw_t typedef. + * sysdeps/s390/s390-64/sys/ucontext.h: Likewise. + 2001-10-12 Ulrich Drepper <drepper@redhat.com> * elf/elf.h (PT_TLS): New definition. diff --git a/locale/programs/ld-collate.c b/locale/programs/ld-collate.c index e901558..6d238a6 100644 --- a/locale/programs/ld-collate.c +++ b/locale/programs/ld-collate.c @@ -1315,7 +1315,7 @@ order for `%.*s' already defined at %s:%Zu"), int cnt; /* Generate the the name. */ - sprintf (buf + preflen, base == 10 ? "%ld" : "%lx", from); + sprintf (buf + preflen, base == 10 ? "%ld" : "%lX", from); /* Look whether this name is already defined. */ if (find_entry (&collate->seq_table, buf, symlen, diff --git a/localedata/ChangeLog b/localedata/ChangeLog index cf8acf0..b7e3eb9 100644 --- a/localedata/ChangeLog +++ b/localedata/ChangeLog @@ -1,3 +1,7 @@ +2001-10-08 Won-kyu Park <wkpark@chem.skku.ac.kr> + + * locales/ko_KR: Fixed a typo in Hangul portion of LC_COLLATE. + 2001-09-30 Ulrich Drepper <drepper@redhat.com> * charmaps/SAMI-WS2: Add Euro sign. diff --git a/localedata/locales/ko_KR b/localedata/locales/ko_KR index 9cccfca..b4927fe 100644 --- a/localedata/locales/ko_KR +++ b/localedata/locales/ko_KR @@ -36,6 +36,8 @@ comment_char % % Several changes in LC_TIME % Added tel_dom_fmt to LC_TELEPHONE % Some cosmetic changes +% 2001-10-08: Won-kyu Park <wkpark@chem.skku.ac.kr> +% Fixed a typo in Hangul portion of LC_COLLATE LC_IDENTIFICATION title "Korean locale for Republic of Korea" @@ -1179,7 +1181,7 @@ order_start forward %%% % HANGUL SYLLABLES <UAC00> -... +.. <UD7A3> %%% % HANJA. For the moment, Hanjas defined in KS X 1001 diff --git a/sysdeps/ieee754/ldbl-128/e_j0l.c b/sysdeps/ieee754/ldbl-128/e_j0l.c index e0a61f0..a804f0a 100644 --- a/sysdeps/ieee754/ldbl-128/e_j0l.c +++ b/sysdeps/ieee754/ldbl-128/e_j0l.c @@ -81,16 +81,16 @@ #include "math_private.h" /* 1 / sqrt(pi) */ -static long double ONEOSQPI = 5.6418958354775628694807945156077258584405E-1L; +static const long double ONEOSQPI = 5.6418958354775628694807945156077258584405E-1L; /* 2 / pi */ -static long double TWOOPI = 6.3661977236758134307553505349005744813784E-1L; -static long double zero = 0.0L; +static const long double TWOOPI = 6.3661977236758134307553505349005744813784E-1L; +static const long double zero = 0.0L; /* J0(x) = 1 - x^2/4 + x^2 x^2 R(x^2) Peak relative error 3.4e-37 0 <= x <= 2 */ #define NJ0_2N 6 -static long double J0_2N[NJ0_2N + 1] = { +static const long double J0_2N[NJ0_2N + 1] = { 3.133239376997663645548490085151484674892E16L, -5.479944965767990821079467311839107722107E14L, 6.290828903904724265980249871997551894090E12L, @@ -100,7 +100,7 @@ static long double J0_2N[NJ0_2N + 1] = { 1.562826808020631846245296572935547005859E2L, }; #define NJ0_2D 6 -static long double J0_2D[NJ0_2D + 1] = { +static const long double J0_2D[NJ0_2D + 1] = { 2.005273201278504733151033654496928968261E18L, 2.063038558793221244373123294054149790864E16L, 1.053350447931127971406896594022010524994E14L, @@ -115,7 +115,7 @@ static long double J0_2D[NJ0_2D + 1] = { 0 <= 1/x <= .0625 Peak relative error 3.3e-36 */ #define NP16_IN 9 -static long double P16_IN[NP16_IN + 1] = { +static const long double P16_IN[NP16_IN + 1] = { -1.901689868258117463979611259731176301065E-16L, -1.798743043824071514483008340803573980931E-13L, -6.481746687115262291873324132944647438959E-11L, @@ -128,7 +128,7 @@ static long double P16_IN[NP16_IN + 1] = { -1.271468546258855781530458854476627766233E-1L, }; #define NP16_ID 9 -static long double P16_ID[NP16_ID + 1] = { +static const long double P16_ID[NP16_ID + 1] = { 2.704625590411544837659891569420764475007E-15L, 2.562526347676857624104306349421985403573E-12L, 9.259137589952741054108665570122085036246E-10L, @@ -146,7 +146,7 @@ static long double P16_ID[NP16_ID + 1] = { 0.0625 <= 1/x <= 0.125 Peak relative error 2.4e-35 */ #define NP8_16N 10 -static long double P8_16N[NP8_16N + 1] = { +static const long double P8_16N[NP8_16N + 1] = { -2.335166846111159458466553806683579003632E-15L, -1.382763674252402720401020004169367089975E-12L, -3.192160804534716696058987967592784857907E-10L, @@ -160,7 +160,7 @@ static long double P8_16N[NP8_16N + 1] = { -1.670703190068873186016102289227646035035E-1L, }; #define NP8_16D 10 -static long double P8_16D[NP8_16D + 1] = { +static const long double P8_16D[NP8_16D + 1] = { 3.321126181135871232648331450082662856743E-14L, 1.971894594837650840586859228510007703641E-11L, 4.571144364787008285981633719513897281690E-9L, @@ -179,7 +179,7 @@ static long double P8_16D[NP8_16D + 1] = { 0.125 <= 1/x <= 0.1875 Peak relative error 2.7e-35 */ #define NP5_8N 10 -static long double P5_8N[NP5_8N + 1] = { +static const long double P5_8N[NP5_8N + 1] = { -1.270478335089770355749591358934012019596E-12L, -4.007588712145412921057254992155810347245E-10L, -4.815187822989597568124520080486652009281E-8L, @@ -193,7 +193,7 @@ static long double P5_8N[NP5_8N + 1] = { -8.920026499909994671248893388013790366712E-3L, }; #define NP5_8D 9 -static long double P5_8D[NP5_8D + 1] = { +static const long double P5_8D[NP5_8D + 1] = { 1.806902521016705225778045904631543990314E-11L, 5.728502760243502431663549179135868966031E-9L, 6.938168504826004255287618819550667978450E-7L, @@ -211,7 +211,7 @@ static long double P5_8D[NP5_8D + 1] = { Peak relative error 3.5e-35 0.1875 <= 1/x <= 0.25 */ #define NP4_5N 9 -static long double P4_5N[NP4_5N + 1] = { +static const long double P4_5N[NP4_5N + 1] = { -9.791405771694098960254468859195175708252E-10L, -1.917193059944531970421626610188102836352E-7L, -1.393597539508855262243816152893982002084E-5L, @@ -224,7 +224,7 @@ static long double P4_5N[NP4_5N + 1] = { -2.251804386252969656586810309252357233320E-1L, }; #define NP4_5D 9 -static long double P4_5D[NP4_5D + 1] = { +static const long double P4_5D[NP4_5D + 1] = { 1.392555487577717669739688337895791213139E-8L, 2.748886559120659027172816051276451376854E-6L, 2.024717710644378047477189849678576659290E-4L, @@ -242,7 +242,7 @@ static long double P4_5D[NP4_5D + 1] = { Peak relative error 2.3e-36 0.25 <= 1/x <= 0.3125 */ #define NP3r2_4N 9 -static long double P3r2_4N[NP3r2_4N + 1] = { +static const long double P3r2_4N[NP3r2_4N + 1] = { -2.589155123706348361249809342508270121788E-8L, -3.746254369796115441118148490849195516593E-6L, -1.985595497390808544622893738135529701062E-4L, @@ -255,7 +255,7 @@ static long double P3r2_4N[NP3r2_4N + 1] = { -2.518966692256192789269859830255724429375E-1L, }; #define NP3r2_4D 9 -static long double P3r2_4D[NP3r2_4D + 1] = { +static const long double P3r2_4D[NP3r2_4D + 1] = { 3.682353957237979993646169732962573930237E-7L, 5.386741661883067824698973455566332102029E-5L, 2.906881154171822780345134853794241037053E-3L, @@ -273,7 +273,7 @@ static long double P3r2_4D[NP3r2_4D + 1] = { Peak relative error 1.0e-35 0.3125 <= 1/x <= 0.375 */ #define NP2r7_3r2N 9 -static long double P2r7_3r2N[NP2r7_3r2N + 1] = { +static const long double P2r7_3r2N[NP2r7_3r2N + 1] = { -1.917322340814391131073820537027234322550E-7L, -1.966595744473227183846019639723259011906E-5L, -7.177081163619679403212623526632690465290E-4L, @@ -286,7 +286,7 @@ static long double P2r7_3r2N[NP2r7_3r2N + 1] = { -4.098025357743657347681137871388402849581E-3L, }; #define NP2r7_3r2D 8 -static long double P2r7_3r2D[NP2r7_3r2D + 1] = { +static const long double P2r7_3r2D[NP2r7_3r2D + 1] = { 2.726858489303036441686496086962545034018E-6L, 2.840430827557109238386808968234848081424E-4L, 1.063826772041781947891481054529454088832E-2L, @@ -303,7 +303,7 @@ static long double P2r7_3r2D[NP2r7_3r2D + 1] = { Peak relative error 1.3e-36 0.3125 <= 1/x <= 0.4375 */ #define NP2r3_2r7N 9 -static long double P2r3_2r7N[NP2r3_2r7N + 1] = { +static const long double P2r3_2r7N[NP2r3_2r7N + 1] = { -1.594642785584856746358609622003310312622E-6L, -1.323238196302221554194031733595194539794E-4L, -3.856087818696874802689922536987100372345E-3L, @@ -316,7 +316,7 @@ static long double P2r3_2r7N[NP2r3_2r7N + 1] = { -3.246859189246653459359775001466924610236E-3L, }; #define NP2r3_2r7D 8 -static long double P2r3_2r7D[NP2r3_2r7D + 1] = { +static const long double P2r3_2r7D[NP2r3_2r7D + 1] = { 2.267936634217251403663034189684284173018E-5L, 1.918112982168673386858072491437971732237E-3L, 5.771704085468423159125856786653868219522E-2L, @@ -333,7 +333,7 @@ static long double P2r3_2r7D[NP2r3_2r7D + 1] = { Peak relative error 1.2e-35 0.4375 <= 1/x <= 0.5 */ #define NP2_2r3N 8 -static long double P2_2r3N[NP2_2r3N + 1] = { +static const long double P2_2r3N[NP2_2r3N + 1] = { -1.001042324337684297465071506097365389123E-4L, -6.289034524673365824853547252689991418981E-3L, -1.346527918018624234373664526930736205806E-1L, @@ -345,7 +345,7 @@ static long double P2_2r3N[NP2_2r3N + 1] = { -3.000348318524471807839934764596331810608E-1L, }; #define NP2_2r3D 8 -static long double P2_2r3D[NP2_2r3D + 1] = { +static const long double P2_2r3D[NP2_2r3D + 1] = { 1.423705538269770974803901422532055612980E-3L, 9.171476630091439978533535167485230575894E-2L, 2.049776318166637248868444600215942828537E0L, @@ -363,7 +363,7 @@ static long double P2_2r3D[NP2_2r3D + 1] = { Peak relative error 2.2e-35 0 <= 1/x <= .0625 */ #define NQ16_IN 10 -static long double Q16_IN[NQ16_IN + 1] = { +static const long double Q16_IN[NQ16_IN + 1] = { 2.343640834407975740545326632205999437469E-18L, 2.667978112927811452221176781536278257448E-15L, 1.178415018484555397390098879501969116536E-12L, @@ -377,7 +377,7 @@ static long double Q16_IN[NQ16_IN + 1] = { 1.107891967702173292405380993183694932208E-2L, }; #define NQ16_ID 9 -static long double Q16_ID[NQ16_ID + 1] = { +static const long double Q16_ID[NQ16_ID + 1] = { 3.199850952578356211091219295199301766718E-17L, 3.652601488020654842194486058637953363918E-14L, 1.620179741394865258354608590461839031281E-11L, @@ -396,7 +396,7 @@ static long double Q16_ID[NQ16_ID + 1] = { Peak relative error 5.1e-36 0.0625 <= 1/x <= 0.125 */ #define NQ8_16N 11 -static long double Q8_16N[NQ8_16N + 1] = { +static const long double Q8_16N[NQ8_16N + 1] = { 1.001954266485599464105669390693597125904E-17L, 7.545499865295034556206475956620160007849E-15L, 2.267838684785673931024792538193202559922E-12L, @@ -411,7 +411,7 @@ static long double Q8_16N[NQ8_16N + 1] = { 7.598886310387075708640370806458926458301E-2L, }; #define NQ8_16D 11 -static long double Q8_16D[NQ8_16D + 1] = { +static const long double Q8_16D[NQ8_16D + 1] = { 1.368001558508338469503329967729951830843E-16L, 1.034454121857542147020549303317348297289E-13L, 3.128109209247090744354764050629381674436E-11L, @@ -432,7 +432,7 @@ static long double Q8_16D[NQ8_16D + 1] = { Peak relative error 3.9e-35 0.125 <= 1/x <= 0.1875 */ #define NQ5_8N 10 -static long double Q5_8N[NQ5_8N + 1] = { +static const long double Q5_8N[NQ5_8N + 1] = { 1.750399094021293722243426623211733898747E-13L, 6.483426211748008735242909236490115050294E-11L, 9.279430665656575457141747875716899958373E-9L, @@ -446,7 +446,7 @@ static long double Q5_8N[NQ5_8N + 1] = { 8.383984859679804095463699702165659216831E-2L, }; #define NQ5_8D 10 -static long double Q5_8D[NQ5_8D + 1] = { +static const long double Q5_8D[NQ5_8D + 1] = { 2.389878229704327939008104855942987615715E-12L, 8.926142817142546018703814194987786425099E-10L, 1.294065862406745901206588525833274399038E-7L, @@ -466,7 +466,7 @@ static long double Q5_8D[NQ5_8D + 1] = { Peak relative error 3.2e-35 0.1875 <= 1/x <= 0.25 */ #define NQ4_5N 10 -static long double Q4_5N[NQ4_5N + 1] = { +static const long double Q4_5N[NQ4_5N + 1] = { 2.233870042925895644234072357400122854086E-11L, 5.146223225761993222808463878999151699792E-9L, 4.459114531468296461688753521109797474523E-7L, @@ -480,7 +480,7 @@ static long double Q4_5N[NQ4_5N + 1] = { 1.941595365256460232175236758506411486667E-3L, }; #define NQ4_5D 9 -static long double Q4_5D[NQ4_5D + 1] = { +static const long double Q4_5D[NQ4_5D + 1] = { 3.049977232266999249626430127217988047453E-10L, 7.120883230531035857746096928889676144099E-8L, 6.301786064753734446784637919554359588859E-6L, @@ -499,7 +499,7 @@ static long double Q4_5D[NQ4_5D + 1] = { Peak relative error 1.4e-36 0.25 <= 1/x <= 0.3125 */ #define NQ3r2_4N 10 -static long double Q3r2_4N[NQ3r2_4N + 1] = { +static const long double Q3r2_4N[NQ3r2_4N + 1] = { 6.126167301024815034423262653066023684411E-10L, 1.043969327113173261820028225053598975128E-7L, 6.592927270288697027757438170153763220190E-6L, @@ -513,7 +513,7 @@ static long double Q3r2_4N[NQ3r2_4N + 1] = { 1.229509543620976530030153018986910810747E-3L, }; #define NQ3r2_4D 9 -static long double Q3r2_4D[NQ3r2_4D + 1] = { +static const long double Q3r2_4D[NQ3r2_4D + 1] = { 8.364260446128475461539941389210166156568E-9L, 1.451301850638956578622154585560759862764E-6L, 9.431830010924603664244578867057141839463E-5L, @@ -532,7 +532,7 @@ static long double Q3r2_4D[NQ3r2_4D + 1] = { Peak relative error 3.8e-36 0.3125 <= 1/x <= 0.375 */ #define NQ2r7_3r2N 9 -static long double Q2r7_3r2N[NQ2r7_3r2N + 1] = { +static const long double Q2r7_3r2N[NQ2r7_3r2N + 1] = { 7.584861620402450302063691901886141875454E-8L, 9.300939338814216296064659459966041794591E-6L, 4.112108906197521696032158235392604947895E-4L, @@ -545,7 +545,7 @@ static long double Q2r7_3r2N[NQ2r7_3r2N + 1] = { 9.805848115375053300608712721986235900715E-2L, }; #define NQ2r7_3r2D 9 -static long double Q2r7_3r2D[NQ2r7_3r2D + 1] = { +static const long double Q2r7_3r2D[NQ2r7_3r2D + 1] = { 1.035586492113036586458163971239438078160E-6L, 1.301999337731768381683593636500979713689E-4L, 5.993695702564527062553071126719088859654E-3L, @@ -564,7 +564,7 @@ static long double Q2r7_3r2D[NQ2r7_3r2D + 1] = { Peak relative error 2.2e-35 0.375 <= 1/x <= 0.4375 */ #define NQ2r3_2r7N 9 -static long double Q2r3_2r7N[NQ2r3_2r7N + 1] = { +static const long double Q2r3_2r7N[NQ2r3_2r7N + 1] = { 4.455027774980750211349941766420190722088E-7L, 4.031998274578520170631601850866780366466E-5L, 1.273987274325947007856695677491340636339E-3L, @@ -577,7 +577,7 @@ static long double Q2r3_2r7N[NQ2r3_2r7N + 1] = { 7.261345286655345047417257611469066147561E-4L, }; #define NQ2r3_2r7D 8 -static long double Q2r3_2r7D[NQ2r3_2r7D + 1] = { +static const long double Q2r3_2r7D[NQ2r3_2r7D + 1] = { 6.082600739680555266312417978064954793142E-6L, 5.693622538165494742945717226571441747567E-4L, 1.901625907009092204458328768129666975975E-2L, @@ -595,7 +595,7 @@ static long double Q2r3_2r7D[NQ2r3_2r7D + 1] = { Peak relative error 3.1e-36 0.4375 <= 1/x <= 0.5 */ #define NQ2_2r3N 9 -static long double Q2_2r3N[NQ2_2r3N + 1] = { +static const long double Q2_2r3N[NQ2_2r3N + 1] = { 2.817566786579768804844367382809101929314E-6L, 2.122772176396691634147024348373539744935E-4L, 5.501378031780457828919593905395747517585E-3L, @@ -608,7 +608,7 @@ static long double Q2_2r3N[NQ2_2r3N + 1] = { 5.317668723070450235320878117210807236375E-4L, }; #define NQ2_2r3D 8 -static long double Q2_2r3D[NQ2_2r3D + 1] = { +static const long double Q2_2r3D[NQ2_2r3D + 1] = { 3.846924354014260866793741072933159380158E-5L, 3.017562820057704325510067178327449946763E-3L, 8.356305620686867949798885808540444210935E-2L, diff --git a/sysdeps/ieee754/ldbl-128/e_j1l.c b/sysdeps/ieee754/ldbl-128/e_j1l.c index c564237..ad899be 100644 --- a/sysdeps/ieee754/ldbl-128/e_j1l.c +++ b/sysdeps/ieee754/ldbl-128/e_j1l.c @@ -88,16 +88,16 @@ extern long double sqrtl (long double); extern long double logl (long double); /* 1 / sqrt(pi) */ -static long double ONEOSQPI = 5.6418958354775628694807945156077258584405E-1L; +static const long double ONEOSQPI = 5.6418958354775628694807945156077258584405E-1L; /* 2 / pi */ -static long double TWOOPI = 6.3661977236758134307553505349005744813784E-1L; -static long double zero = 0.0L; +static const long double TWOOPI = 6.3661977236758134307553505349005744813784E-1L; +static const long double zero = 0.0L; /* J1(x) = .5x + x x^2 R(x^2) Peak relative error 1.9e-35 0 <= x <= 2 */ #define NJ0_2N 6 -static long double J0_2N[NJ0_2N + 1] = { +static const long double J0_2N[NJ0_2N + 1] = { -5.943799577386942855938508697619735179660E16L, 1.812087021305009192259946997014044074711E15L, -2.761698314264509665075127515729146460895E13L, @@ -107,7 +107,7 @@ static long double J0_2N[NJ0_2N + 1] = { -1.559552840946694171346552770008812083969E3L }; #define NJ0_2D 6 -static long double J0_2D[NJ0_2D + 1] = { +static const long double J0_2D[NJ0_2D + 1] = { 9.510079323819108569501613916191477479397E17L, 1.063193817503280529676423936545854693915E16L, 5.934143516050192600795972192791775226920E13L, @@ -122,7 +122,7 @@ static long double J0_2D[NJ0_2D + 1] = { 0 <= 1/x <= .0625 Peak relative error 3.6e-36 */ #define NP16_IN 9 -static long double P16_IN[NP16_IN + 1] = { +static const long double P16_IN[NP16_IN + 1] = { 5.143674369359646114999545149085139822905E-16L, 4.836645664124562546056389268546233577376E-13L, 1.730945562285804805325011561498453013673E-10L, @@ -135,7 +135,7 @@ static long double P16_IN[NP16_IN + 1] = { 3.032580002220628812728954785118117124520E-1L, }; #define NP16_ID 9 -static long double P16_ID[NP16_ID + 1] = { +static const long double P16_ID[NP16_ID + 1] = { 4.389268795186898018132945193912677177553E-15L, 4.132671824807454334388868363256830961655E-12L, 1.482133328179508835835963635130894413136E-9L, @@ -153,7 +153,7 @@ static long double P16_ID[NP16_ID + 1] = { 0.0625 <= 1/x <= 0.125 Peak relative error 1.9e-36 */ #define NP8_16N 11 -static long double P8_16N[NP8_16N + 1] = { +static const long double P8_16N[NP8_16N + 1] = { 2.984612480763362345647303274082071598135E-16L, 1.923651877544126103941232173085475682334E-13L, 4.881258879388869396043760693256024307743E-11L, @@ -168,7 +168,7 @@ static long double P8_16N[NP8_16N + 1] = { 2.991314703282528370270179989044994319374E-2L, }; #define NP8_16D 10 -static long double P8_16D[NP8_16D + 1] = { +static const long double P8_16D[NP8_16D + 1] = { 2.546869316918069202079580939942463010937E-15L, 1.644650111942455804019788382157745229955E-12L, 4.185430770291694079925607420808011147173E-10L, @@ -187,7 +187,7 @@ static long double P8_16D[NP8_16D + 1] = { 0.125 <= 1/x <= 0.1875 Peak relative error 1.3e-36 */ #define NP5_8N 10 -static long double P5_8N[NP5_8N + 1] = { +static const long double P5_8N[NP5_8N + 1] = { 2.837678373978003452653763806968237227234E-12L, 9.726641165590364928442128579282742354806E-10L, 1.284408003604131382028112171490633956539E-7L, @@ -201,7 +201,7 @@ static long double P5_8N[NP5_8N + 1] = { 5.465927698800862172307352821870223855365E-1L }; #define NP5_8D 10 -static long double P5_8D[NP5_8D + 1] = { +static const long double P5_8D[NP5_8D + 1] = { 2.421485545794616609951168511612060482715E-11L, 8.329862750896452929030058039752327232310E-9L, 1.106137992233383429630592081375289010720E-6L, @@ -220,7 +220,7 @@ static long double P5_8D[NP5_8D + 1] = { Peak relative error 1.4e-36 0.1875 <= 1/x <= 0.25 */ #define NP4_5N 10 -static long double P4_5N[NP4_5N + 1] = { +static const long double P4_5N[NP4_5N + 1] = { 1.846029078268368685834261260420933914621E-10L, 3.916295939611376119377869680335444207768E-8L, 3.122158792018920627984597530935323997312E-6L, @@ -234,7 +234,7 @@ static long double P4_5N[NP4_5N + 1] = { 1.804473805689725610052078464951722064757E-2L, }; #define NP4_5D 9 -static long double P4_5D[NP4_5D + 1] = { +static const long double P4_5D[NP4_5D + 1] = { 1.575278146806816970152174364308980863569E-9L, 3.361289173657099516191331123405675054321E-7L, 2.704692281550877810424745289838790693708E-5L, @@ -252,7 +252,7 @@ static long double P4_5D[NP4_5D + 1] = { Peak relative error 3.0e-36 0.25 <= 1/x <= 0.3125 */ #define NP3r2_4N 9 -static long double P3r2_4N[NP3r2_4N + 1] = { +static const long double P3r2_4N[NP3r2_4N + 1] = { 8.240803130988044478595580300846665863782E-8L, 1.179418958381961224222969866406483744580E-5L, 6.179787320956386624336959112503824397755E-4L, @@ -265,7 +265,7 @@ static long double P3r2_4N[NP3r2_4N + 1] = { 7.299530852495776936690976966995187714739E-1L, }; #define NP3r2_4D 9 -static long double P3r2_4D[NP3r2_4D + 1] = { +static const long double P3r2_4D[NP3r2_4D + 1] = { 7.032152009675729604487575753279187576521E-7L, 1.015090352324577615777511269928856742848E-4L, 5.394262184808448484302067955186308730620E-3L, @@ -283,7 +283,7 @@ static long double P3r2_4D[NP3r2_4D + 1] = { Peak relative error 1.0e-35 0.3125 <= 1/x <= 0.375 */ #define NP2r7_3r2N 9 -static long double P2r7_3r2N[NP2r7_3r2N + 1] = { +static const long double P2r7_3r2N[NP2r7_3r2N + 1] = { 4.599033469240421554219816935160627085991E-7L, 4.665724440345003914596647144630893997284E-5L, 1.684348845667764271596142716944374892756E-3L, @@ -296,7 +296,7 @@ static long double P2r7_3r2N[NP2r7_3r2N + 1] = { 1.316470424456061252962568223251247207325E-2L, }; #define NP2r7_3r2D 8 -static long double P2r7_3r2D[NP2r7_3r2D + 1] = { +static const long double P2r7_3r2D[NP2r7_3r2D + 1] = { 3.924508608545520758883457108453520099610E-6L, 4.029707889408829273226495756222078039823E-4L, 1.484629715787703260797886463307469600219E-2L, @@ -313,7 +313,7 @@ static long double P2r7_3r2D[NP2r7_3r2D + 1] = { Peak relative error 1.7e-36 0.3125 <= 1/x <= 0.4375 */ #define NP2r3_2r7N 9 -static long double P2r3_2r7N[NP2r3_2r7N + 1] = { +static const long double P2r3_2r7N[NP2r3_2r7N + 1] = { 3.916766777108274628543759603786857387402E-6L, 3.212176636756546217390661984304645137013E-4L, 9.255768488524816445220126081207248947118E-3L, @@ -326,7 +326,7 @@ static long double P2r3_2r7N[NP2r3_2r7N + 1] = { 1.109902737860249670981355149101343427885E-2L, }; #define NP2r3_2r7D 8 -static long double P2r3_2r7D[NP2r3_2r7D + 1] = { +static const long double P2r3_2r7D[NP2r3_2r7D + 1] = { 3.342307880794065640312646341190547184461E-5L, 2.782182891138893201544978009012096558265E-3L, 8.221304931614200702142049236141249929207E-2L, @@ -343,7 +343,7 @@ static long double P2r3_2r7D[NP2r3_2r7D + 1] = { Peak relative error 1.7e-35 0.4375 <= 1/x <= 0.5 */ #define NP2_2r3N 8 -static long double P2_2r3N[NP2_2r3N + 1] = { +static const long double P2_2r3N[NP2_2r3N + 1] = { 3.397930802851248553545191160608731940751E-4L, 2.104020902735482418784312825637833698217E-2L, 4.442291771608095963935342749477836181939E-1L, @@ -355,7 +355,7 @@ static long double P2_2r3N[NP2_2r3N + 1] = { 9.455702270242780642835086549285560316461E-1L, }; #define NP2_2r3D 8 -static long double P2_2r3D[NP2_2r3D + 1] = { +static const long double P2_2r3D[NP2_2r3D + 1] = { 2.899568897241432883079888249845707400614E-3L, 1.831107138190848460767699919531132426356E-1L, 3.999350044057883839080258832758908825165E0L, @@ -373,7 +373,7 @@ static long double P2_2r3D[NP2_2r3D + 1] = { Peak relative error 8.0e-36 0 <= 1/x <= .0625 */ #define NQ16_IN 10 -static long double Q16_IN[NQ16_IN + 1] = { +static const long double Q16_IN[NQ16_IN + 1] = { -3.917420835712508001321875734030357393421E-18L, -4.440311387483014485304387406538069930457E-15L, -1.951635424076926487780929645954007139616E-12L, @@ -387,7 +387,7 @@ static long double Q16_IN[NQ16_IN + 1] = { -1.922298704033332356899546792898156493887E-2L, }; #define NQ16_ID 9 -static long double Q16_ID[NQ16_ID + 1] = { +static const long double Q16_ID[NQ16_ID + 1] = { 3.820418034066293517479619763498400162314E-17L, 4.340702810799239909648911373329149354911E-14L, 1.914985356383416140706179933075303538524E-11L, @@ -406,7 +406,7 @@ static long double Q16_ID[NQ16_ID + 1] = { Peak relative error 1.9e-36 0.0625 <= 1/x <= 0.125 */ #define NQ8_16N 11 -static long double Q8_16N[NQ8_16N + 1] = { +static const long double Q8_16N[NQ8_16N + 1] = { -2.028630366670228670781362543615221542291E-17L, -1.519634620380959966438130374006858864624E-14L, -4.540596528116104986388796594639405114524E-12L, @@ -421,7 +421,7 @@ static long double Q8_16N[NQ8_16N + 1] = { -1.365364204556573800719985118029601401323E-1L, }; #define NQ8_16D 11 -static long double Q8_16D[NQ8_16D + 1] = { +static const long double Q8_16D[NQ8_16D + 1] = { 1.978397614733632533581207058069628242280E-16L, 1.487361156806202736877009608336766720560E-13L, 4.468041406888412086042576067133365913456E-11L, @@ -442,7 +442,7 @@ static long double Q8_16D[NQ8_16D + 1] = { Peak relative error 1.5e-35 0.125 <= 1/x <= 0.1875 */ #define NQ5_8N 10 -static long double Q5_8N[NQ5_8N + 1] = { +static const long double Q5_8N[NQ5_8N + 1] = { -3.656082407740970534915918390488336879763E-13L, -1.344660308497244804752334556734121771023E-10L, -1.909765035234071738548629788698150760791E-8L, @@ -456,7 +456,7 @@ static long double Q5_8N[NQ5_8N + 1] = { -1.549000892545288676809660828213589804884E-1L, }; #define NQ5_8D 10 -static long double Q5_8D[NQ5_8D + 1] = { +static const long double Q5_8D[NQ5_8D + 1] = { 3.565550843359501079050699598913828460036E-12L, 1.321016015556560621591847454285330528045E-9L, 1.897542728662346479999969679234270605975E-7L, @@ -476,7 +476,7 @@ static long double Q5_8D[NQ5_8D + 1] = { Peak relative error 1.3e-35 0.1875 <= 1/x <= 0.25 */ #define NQ4_5N 10 -static long double Q4_5N[NQ4_5N + 1] = { +static const long double Q4_5N[NQ4_5N + 1] = { -4.079513568708891749424783046520200903755E-11L, -9.326548104106791766891812583019664893311E-9L, -8.016795121318423066292906123815687003356E-7L, @@ -490,7 +490,7 @@ static long double Q4_5N[NQ4_5N + 1] = { -4.320429862021265463213168186061696944062E-3L, }; #define NQ4_5D 9 -static long double Q4_5D[NQ4_5D + 1] = { +static const long double Q4_5D[NQ4_5D + 1] = { 3.978497042580921479003851216297330701056E-10L, 9.203304163828145809278568906420772246666E-8L, 8.059685467088175644915010485174545743798E-6L, @@ -509,7 +509,7 @@ static long double Q4_5D[NQ4_5D + 1] = { Peak relative error 2.1e-35 0.25 <= 1/x <= 0.3125 */ #define NQ3r2_4N 9 -static long double Q3r2_4N[NQ3r2_4N + 1] = { +static const long double Q3r2_4N[NQ3r2_4N + 1] = { -1.087480809271383885936921889040388133627E-8L, -1.690067828697463740906962973479310170932E-6L, -9.608064416995105532790745641974762550982E-5L, @@ -522,7 +522,7 @@ static long double Q3r2_4N[NQ3r2_4N + 1] = { -1.812932453006641348145049323713469043328E-1L, }; #define NQ3r2_4D 9 -static long double Q3r2_4D[NQ3r2_4D + 1] = { +static const long double Q3r2_4D[NQ3r2_4D + 1] = { 1.060552717496912381388763753841473407026E-7L, 1.676928002024920520786883649102388708024E-5L, 9.803481712245420839301400601140812255737E-4L, @@ -541,7 +541,7 @@ static long double Q3r2_4D[NQ3r2_4D + 1] = { Peak relative error 1.6e-36 0.3125 <= 1/x <= 0.375 */ #define NQ2r7_3r2N 9 -static long double Q2r7_3r2N[NQ2r7_3r2N + 1] = { +static const long double Q2r7_3r2N[NQ2r7_3r2N + 1] = { -1.723405393982209853244278760171643219530E-7L, -2.090508758514655456365709712333460087442E-5L, -9.140104013370974823232873472192719263019E-4L, @@ -554,7 +554,7 @@ static long double Q2r7_3r2N[NQ2r7_3r2N + 1] = { -1.930796319299022954013840684651016077770E-1L, }; #define NQ2r7_3r2D 9 -static long double Q2r7_3r2D[NQ2r7_3r2D + 1] = { +static const long double Q2r7_3r2D[NQ2r7_3r2D + 1] = { 1.680730662300831976234547482334347983474E-6L, 2.084241442440551016475972218719621841120E-4L, 9.445316642108367479043541702688736295579E-3L, @@ -573,7 +573,7 @@ static long double Q2r7_3r2D[NQ2r7_3r2D + 1] = { Peak relative error 9.5e-36 0.375 <= 1/x <= 0.4375 */ #define NQ2r3_2r7N 9 -static long double Q2r3_2r7N[NQ2r3_2r7N + 1] = { +static const long double Q2r3_2r7N[NQ2r3_2r7N + 1] = { -8.603042076329122085722385914954878953775E-7L, -7.701746260451647874214968882605186675720E-5L, -2.407932004380727587382493696877569654271E-3L, @@ -586,7 +586,7 @@ static long double Q2r3_2r7N[NQ2r3_2r7N + 1] = { -1.890595651683552228232308756569450822905E-3L, }; #define NQ2r3_2r7D 8 -static long double Q2r3_2r7D[NQ2r3_2r7D + 1] = { +static const long double Q2r3_2r7D[NQ2r3_2r7D + 1] = { 8.390017524798316921170710533381568175665E-6L, 7.738148683730826286477254659973968763659E-4L, 2.541480810958665794368759558791634341779E-2L, @@ -604,7 +604,7 @@ static long double Q2r3_2r7D[NQ2r3_2r7D + 1] = { Peak relative error 1.4e-36 0.4375 <= 1/x <= 0.5 */ #define NQ2_2r3N 9 -static long double Q2_2r3N[NQ2_2r3N + 1] = { +static const long double Q2_2r3N[NQ2_2r3N + 1] = { -5.552507516089087822166822364590806076174E-6L, -4.135067659799500521040944087433752970297E-4L, -1.059928728869218962607068840646564457980E-2L, @@ -617,7 +617,7 @@ static long double Q2_2r3N[NQ2_2r3N + 1] = { -1.458550613639093752909985189067233504148E-3L, }; #define NQ2_2r3D 8 -static long double Q2_2r3D[NQ2_2r3D + 1] = { +static const long double Q2_2r3D[NQ2_2r3D + 1] = { 5.415024336507980465169023996403597916115E-5L, 4.179246497380453022046357404266022870788E-3L, 1.136306384261959483095442402929502368598E-1L, diff --git a/sysdeps/ieee754/ldbl-128/e_lgammal_r.c b/sysdeps/ieee754/ldbl-128/e_lgammal_r.c index 8adcccc..9537f12 100644 --- a/sysdeps/ieee754/ldbl-128/e_lgammal_r.c +++ b/sysdeps/ieee754/ldbl-128/e_lgammal_r.c @@ -57,18 +57,18 @@ #include "math.h" #include "math_private.h" -static long double PIL = 3.1415926535897932384626433832795028841972E0L; -static long double MAXLGM = 1.0485738685148938358098967157129705071571E4928L; -static long double one = 1.0L; -static long double zero = 0.0L; -static long double huge = 1.0e4000L; +static const long double PIL = 3.1415926535897932384626433832795028841972E0L; +static const long double MAXLGM = 1.0485738685148938358098967157129705071571E4928L; +static const long double one = 1.0L; +static const long double zero = 0.0L; +static const long double huge = 1.0e4000L; /* log gamma(x) = ( x - 0.5 ) * log(x) - x + LS2PI + 1/x P(1/x^2) 1/x <= 0.0741 (x >= 13.495...) Peak relative error 1.5e-36 */ -static long double ls2pi = 9.1893853320467274178032973640561763986140E-1L; +static const long double ls2pi = 9.1893853320467274178032973640561763986140E-1L; #define NRASY 12 -static long double RASY[NRASY + 1] = +static const long double RASY[NRASY + 1] = { 8.333333333333333333333333333310437112111E-2L, -2.777777777777777777777774789556228296902E-3L, @@ -90,10 +90,10 @@ static long double RASY[NRASY + 1] = -0.5 <= x <= 0.5 12.5 <= x+13 <= 13.5 Peak relative error 1.1e-36 */ -static long double lgam13a = 1.9987213134765625E1L; -static long double lgam13b = 1.3608962611495173623870550785125024484248E-6L; +static const long double lgam13a = 1.9987213134765625E1L; +static const long double lgam13b = 1.3608962611495173623870550785125024484248E-6L; #define NRN13 7 -static long double RN13[NRN13 + 1] = +static const long double RN13[NRN13 + 1] = { 8.591478354823578150238226576156275285700E11L, 2.347931159756482741018258864137297157668E11L, @@ -105,7 +105,7 @@ static long double RN13[NRN13 + 1] = 6.850783280018706668924952057996075215223E0L }; #define NRD13 6 -static long double RD13[NRD13 + 1] = +static const long double RD13[NRD13 + 1] = { 3.401225382297342302296607039352935541669E11L, 8.756765276918037910363513243563234551784E10L, @@ -122,10 +122,10 @@ static long double RD13[NRD13 + 1] = -0.5 <= x <= 0.5 11.5 <= x+12 <= 12.5 Peak relative error 4.1e-36 */ -static long double lgam12a = 1.75023040771484375E1L; -static long double lgam12b = 3.7687254483392876529072161996717039575982E-6L; +static const long double lgam12a = 1.75023040771484375E1L; +static const long double lgam12b = 3.7687254483392876529072161996717039575982E-6L; #define NRN12 7 -static long double RN12[NRN12 + 1] = +static const long double RN12[NRN12 + 1] = { 4.709859662695606986110997348630997559137E11L, 1.398713878079497115037857470168777995230E11L, @@ -137,7 +137,7 @@ static long double RN12[NRN12 + 1] = 6.769610657004672719224614163196946862747E0L }; #define NRD12 6 -static long double RD12[NRD12 + 1] = +static const long double RD12[NRD12 + 1] = { 1.928167007860968063912467318985802726613E11L, 5.383198282277806237247492369072266389233E10L, @@ -154,10 +154,10 @@ static long double RD12[NRD12 + 1] = -0.5 <= x <= 0.5 10.5 <= x+11 <= 11.5 Peak relative error 1.8e-35 */ -static long double lgam11a = 1.5104400634765625E1L; -static long double lgam11b = 1.1938309890295225709329251070371882250744E-5L; +static const long double lgam11a = 1.5104400634765625E1L; +static const long double lgam11b = 1.1938309890295225709329251070371882250744E-5L; #define NRN11 7 -static long double RN11[NRN11 + 1] = +static const long double RN11[NRN11 + 1] = { 2.446960438029415837384622675816736622795E11L, 7.955444974446413315803799763901729640350E10L, @@ -169,7 +169,7 @@ static long double RN11[NRN11 + 1] = 6.681356101133728289358838690666225691363E0L }; #define NRD11 6 -static long double RD11[NRD11 + 1] = +static const long double RD11[NRD11 + 1] = { 1.040483786179428590683912396379079477432E11L, 3.172251138489229497223696648369823779729E10L, @@ -186,10 +186,10 @@ static long double RD11[NRD11 + 1] = -0.5 <= x <= 0.5 9.5 <= x+10 <= 10.5 Peak relative error 5.4e-37 */ -static long double lgam10a = 1.280181884765625E1L; -static long double lgam10b = 8.6324252196112077178745667061642811492557E-6L; +static const long double lgam10a = 1.280181884765625E1L; +static const long double lgam10b = 8.6324252196112077178745667061642811492557E-6L; #define NRN10 7 -static long double RN10[NRN10 + 1] = +static const long double RN10[NRN10 + 1] = { -1.239059737177249934158597996648808363783E14L, -4.725899566371458992365624673357356908719E13L, @@ -201,7 +201,7 @@ static long double RN10[NRN10 + 1] = -2.350975266781548931856017239843273049384E4L }; #define NRD10 7 -static long double RD10[NRD10 + 1] = +static const long double RD10[NRD10 + 1] = { -5.502645997581822567468347817182347679552E13L, -1.970266640239849804162284805400136473801E13L, @@ -219,10 +219,10 @@ static long double RD10[NRD10 + 1] = -0.5 <= x <= 0.5 8.5 <= x+9 <= 9.5 Peak relative error 3.6e-36 */ -static long double lgam9a = 1.06045989990234375E1L; -static long double lgam9b = 3.9037218127284172274007216547549861681400E-6L; +static const long double lgam9a = 1.06045989990234375E1L; +static const long double lgam9b = 3.9037218127284172274007216547549861681400E-6L; #define NRN9 7 -static long double RN9[NRN9 + 1] = +static const long double RN9[NRN9 + 1] = { -4.936332264202687973364500998984608306189E13L, -2.101372682623700967335206138517766274855E13L, @@ -234,7 +234,7 @@ static long double RN9[NRN9 + 1] = -2.036280038903695980912289722995505277253E4L }; #define NRD9 7 -static long double RD9[NRD9 + 1] = +static const long double RD9[NRD9 + 1] = { -2.306006080437656357167128541231915480393E13L, -9.183606842453274924895648863832233799950E12L, @@ -252,10 +252,10 @@ static long double RD9[NRD9 + 1] = -0.5 <= x <= 0.5 7.5 <= x+8 <= 8.5 Peak relative error 2.4e-37 */ -static long double lgam8a = 8.525146484375E0L; -static long double lgam8b = 1.4876690414300165531036347125050759667737E-5L; +static const long double lgam8a = 8.525146484375E0L; +static const long double lgam8b = 1.4876690414300165531036347125050759667737E-5L; #define NRN8 8 -static long double RN8[NRN8 + 1] = +static const long double RN8[NRN8 + 1] = { 6.600775438203423546565361176829139703289E11L, 3.406361267593790705240802723914281025800E11L, @@ -268,7 +268,7 @@ static long double RN8[NRN8 + 1] = 6.596977510622195827183948478627058738034E0L }; #define NRD8 7 -static long double RD8[NRD8 + 1] = +static const long double RD8[NRD8 + 1] = { 3.274776546520735414638114828622673016920E11L, 1.581811207929065544043963828487733970107E11L, @@ -286,10 +286,10 @@ static long double RD8[NRD8 + 1] = -0.5 <= x <= 0.5 6.5 <= x+7 <= 7.5 Peak relative error 3.2e-36 */ -static long double lgam7a = 6.5792388916015625E0L; -static long double lgam7b = 1.2320408538495060178292903945321122583007E-5L; +static const long double lgam7a = 6.5792388916015625E0L; +static const long double lgam7b = 1.2320408538495060178292903945321122583007E-5L; #define NRN7 8 -static long double RN7[NRN7 + 1] = +static const long double RN7[NRN7 + 1] = { 2.065019306969459407636744543358209942213E11L, 1.226919919023736909889724951708796532847E11L, @@ -302,7 +302,7 @@ static long double RN7[NRN7 + 1] = 6.460280377802030953041566617300902020435E0L }; #define NRD7 7 -static long double RD7[NRD7 + 1] = +static const long double RD7[NRD7 + 1] = { 1.102646614598516998880874785339049304483E11L, 6.099297512712715445879759589407189290040E10L, @@ -320,10 +320,10 @@ static long double RD7[NRD7 + 1] = -0.5 <= x <= 0.5 5.5 <= x+6 <= 6.5 Peak relative error 6.2e-37 */ -static long double lgam6a = 4.7874908447265625E0L; -static long double lgam6b = 8.9805548349424770093452324304839959231517E-7L; +static const long double lgam6a = 4.7874908447265625E0L; +static const long double lgam6b = 8.9805548349424770093452324304839959231517E-7L; #define NRN6 8 -static long double RN6[NRN6 + 1] = +static const long double RN6[NRN6 + 1] = { -3.538412754670746879119162116819571823643E13L, -2.613432593406849155765698121483394257148E13L, @@ -336,7 +336,7 @@ static long double RN6[NRN6 + 1] = -1.576834867378554185210279285358586385266E4L }; #define NRD6 8 -static long double RD6[NRD6 + 1] = +static const long double RD6[NRD6 + 1] = { -2.073955870771283609792355579558899389085E13L, -1.421592856111673959642750863283919318175E13L, @@ -355,10 +355,10 @@ static long double RD6[NRD6 + 1] = -0.5 <= x <= 0.5 4.5 <= x+5 <= 5.5 Peak relative error 3.4e-37 */ -static long double lgam5a = 3.17803955078125E0L; -static long double lgam5b = 1.4279566695619646941601297055408873990961E-5L; +static const long double lgam5a = 3.17803955078125E0L; +static const long double lgam5b = 1.4279566695619646941601297055408873990961E-5L; #define NRN5 9 -static long double RN5[NRN5 + 1] = +static const long double RN5[NRN5 + 1] = { 2.010952885441805899580403215533972172098E11L, 1.916132681242540921354921906708215338584E11L, @@ -372,7 +372,7 @@ static long double RN5[NRN5 + 1] = 6.330318119566998299106803922739066556550E0L }; #define NRD5 8 -static long double RD5[NRD5 + 1] = +static const long double RD5[NRD5 + 1] = { 1.335189758138651840605141370223112376176E11L, 1.174130445739492885895466097516530211283E11L, @@ -391,10 +391,10 @@ static long double RD5[NRD5 + 1] = -0.5 <= x <= 0.5 3.5 <= x+4 <= 4.5 Peak relative error 6.7e-37 */ -static long double lgam4a = 1.791748046875E0L; -static long double lgam4b = 1.1422353055000812477358380702272722990692E-5L; +static const long double lgam4a = 1.791748046875E0L; +static const long double lgam4b = 1.1422353055000812477358380702272722990692E-5L; #define NRN4 9 -static long double RN4[NRN4 + 1] = +static const long double RN4[NRN4 + 1] = { -1.026583408246155508572442242188887829208E13L, -1.306476685384622809290193031208776258809E13L, @@ -408,7 +408,7 @@ static long double RN4[NRN4 + 1] = -1.180509051468390914200720003907727988201E4L }; #define NRD4 9 -static long double RD4[NRD4 + 1] = +static const long double RD4[NRD4 + 1] = { -8.172669122056002077809119378047536240889E12L, -9.477592426087986751343695251801814226960E12L, @@ -428,11 +428,11 @@ static long double RD4[NRD4 + 1] = -0.25 <= x <= 0.5 2.75 <= x+3 <= 3.5 Peak relative error 6.0e-37 */ -static long double lgam3a = 6.93145751953125E-1L; -static long double lgam3b = 1.4286068203094172321214581765680755001344E-6L; +static const long double lgam3a = 6.93145751953125E-1L; +static const long double lgam3b = 1.4286068203094172321214581765680755001344E-6L; #define NRN3 9 -static long double RN3[NRN3 + 1] = +static const long double RN3[NRN3 + 1] = { -4.813901815114776281494823863935820876670E11L, -8.425592975288250400493910291066881992620E11L, @@ -446,7 +446,7 @@ static long double RN3[NRN3 + 1] = -8.333374463411801009783402800801201603736E3L }; #define NRD3 9 -static long double RD3[NRD3 + 1] = +static const long double RD3[NRD3 + 1] = { -5.216713843111675050627304523368029262450E11L, -8.014292925418308759369583419234079164391E11L, @@ -465,10 +465,10 @@ static long double RD3[NRD3 + 1] = /* log gamma(x+2.5) = log gamma(2.5) + x P(x)/Q(x) -0.125 <= x <= 0.25 2.375 <= x+2.5 <= 2.75 */ -static long double lgam2r5a = 2.8466796875E-1L; -static long double lgam2r5b = 1.4901722919159632494669682701924320137696E-5L; +static const long double lgam2r5a = 2.8466796875E-1L; +static const long double lgam2r5b = 1.4901722919159632494669682701924320137696E-5L; #define NRN2r5 8 -static long double RN2r5[NRN2r5 + 1] = +static const long double RN2r5[NRN2r5 + 1] = { -4.676454313888335499356699817678862233205E9L, -9.361888347911187924389905984624216340639E9L, @@ -481,7 +481,7 @@ static long double RN2r5[NRN2r5 + 1] = -4.717341584067827676530426007495274711306E3L }; #define NRD2r5 8 -static long double RD2r5[NRD2r5 + 1] = +static const long double RD2r5[NRD2r5 + 1] = { -6.650657966618993679456019224416926875619E9L, -1.099511409330635807899718829033488771623E10L, @@ -501,7 +501,7 @@ static long double RD2r5[NRD2r5 + 1] = 1.875 <= x+2 <= 2.375 Peak relative error 4.6e-36 */ #define NRN2 9 -static long double RN2[NRN2 + 1] = +static const long double RN2[NRN2 + 1] = { -3.716661929737318153526921358113793421524E9L, -1.138816715030710406922819131397532331321E10L, @@ -515,7 +515,7 @@ static long double RN2[NRN2 + 1] = -4.778761333044147141559311805999540765612E3L }; #define NRD2 9 -static long double RD2[NRD2 + 1] = +static const long double RD2[NRD2 + 1] = { -8.790916836764308497770359421351673950111E9L, -2.023108608053212516399197678553737477486E10L, @@ -535,10 +535,10 @@ static long double RD2[NRD2 + 1] = -0.125 <= x <= +0.125 1.625 <= x+1.75 <= 1.875 Peak relative error 9.2e-37 */ -static long double lgam1r75a = -8.441162109375E-2L; -static long double lgam1r75b = 1.0500073264444042213965868602268256157604E-5L; +static const long double lgam1r75a = -8.441162109375E-2L; +static const long double lgam1r75b = 1.0500073264444042213965868602268256157604E-5L; #define NRN1r75 8 -static long double RN1r75[NRN1r75 + 1] = +static const long double RN1r75[NRN1r75 + 1] = { -5.221061693929833937710891646275798251513E7L, -2.052466337474314812817883030472496436993E8L, @@ -551,7 +551,7 @@ static long double RN1r75[NRN1r75 + 1] = -2.698453601378319296159355612094598695530E3L }; #define NRD1r75 8 -static long double RD1r75[NRD1r75 + 1] = +static const long double RD1r75[NRD1r75 + 1] = { -2.109754689501705828789976311354395393605E8L, -5.036651829232895725959911504899241062286E8L, @@ -570,12 +570,12 @@ static long double RD1r75[NRD1r75 + 1] = -0.0867 <= x <= +0.1634 1.374932... <= x+x0 <= 1.625032... Peak relative error 4.0e-36 */ -static long double x0a = 1.4616241455078125L; -static long double x0b = 7.9994605498412626595423257213002588621246E-6L; -static long double y0a = -1.21490478515625E-1L; -static long double y0b = 4.1879797753919044854428223084178486438269E-6L; +static const long double x0a = 1.4616241455078125L; +static const long double x0b = 7.9994605498412626595423257213002588621246E-6L; +static const long double y0a = -1.21490478515625E-1L; +static const long double y0b = 4.1879797753919044854428223084178486438269E-6L; #define NRN1r5 8 -static long double RN1r5[NRN1r5 + 1] = +static const long double RN1r5[NRN1r5 + 1] = { 6.827103657233705798067415468881313128066E5L, 1.910041815932269464714909706705242148108E6L, @@ -588,7 +588,7 @@ static long double RN1r5[NRN1r5 + 1] = 5.040631576303952022968949605613514584950E0L }; #define NRD1r5 8 -static long double RD1r5[NRD1r5 + 1] = +static const long double RD1r5[NRD1r5 + 1] = { 1.411036368843183477558773688484699813355E6L, 4.378121767236251950226362443134306184849E6L, @@ -607,10 +607,10 @@ static long double RD1r5[NRD1r5 + 1] = -.125 <= x <= +.125 1.125 <= x+1.25 <= 1.375 Peak relative error = 4.9e-36 */ -static long double lgam1r25a = -9.82818603515625E-2L; -static long double lgam1r25b = 1.0023929749338536146197303364159774377296E-5L; +static const long double lgam1r25a = -9.82818603515625E-2L; +static const long double lgam1r25b = 1.0023929749338536146197303364159774377296E-5L; #define NRN1r25 9 -static long double RN1r25[NRN1r25 + 1] = +static const long double RN1r25[NRN1r25 + 1] = { -9.054787275312026472896002240379580536760E4L, -8.685076892989927640126560802094680794471E4L, @@ -624,7 +624,7 @@ static long double RN1r25[NRN1r25 + 1] = 4.907821957946273805080625052510832015792E0L }; #define NRD1r25 8 -static long double RD1r25[NRD1r25 + 1] = +static const long double RD1r25[NRD1r25 + 1] = { 3.980939377333448005389084785896660309000E5L, 1.429634893085231519692365775184490465542E6L, @@ -644,7 +644,7 @@ static long double RD1r25[NRD1r25 + 1] = 1.0 <= x+1 <= 1.125 Peak relative error 1.1e-35 */ #define NRN1 8 -static long double RN1[NRN1 + 1] = +static const long double RN1[NRN1 + 1] = { -9.987560186094800756471055681088744738818E3L, -2.506039379419574361949680225279376329742E4L, @@ -657,7 +657,7 @@ static long double RN1[NRN1 + 1] = 4.516830313569454663374271993200291219855E0L }; #define NRD1 7 -static long double RD1[NRD1 + 1] = +static const long double RD1[NRD1 + 1] = { 1.730299573175751778863269333703788214547E4L, 6.807080914851328611903744668028014678148E4L, @@ -676,7 +676,7 @@ static long double RD1[NRD1 + 1] = 0.875 <= x+1 <= 1.0 Peak relative error 7.0e-37 */ #define NRNr9 8 -static long double RNr9[NRNr9 + 1] = +static const long double RNr9[NRNr9 + 1] = { 4.441379198241760069548832023257571176884E5L, 1.273072988367176540909122090089580368732E6L, @@ -689,7 +689,7 @@ static long double RNr9[NRNr9 + 1] = -1.032901669542994124131223797515913955938E3L, }; #define NRDr9 8 -static long double RDr9[NRDr9 + 1] = +static const long double RDr9[NRDr9 + 1] = { -7.694488331323118759486182246005193998007E5L, -3.301918855321234414232308938454112213751E6L, diff --git a/sysdeps/ieee754/ldbl-128/e_powl.c b/sysdeps/ieee754/ldbl-128/e_powl.c new file mode 100644 index 0000000..6d5b9d5 --- /dev/null +++ b/sysdeps/ieee754/ldbl-128/e_powl.c @@ -0,0 +1,422 @@ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +/* Expansions and modifications for 128-bit long double contributed by + Stephen L. Moshier <moshier@na-net.ornl.gov> */ + +/* __ieee754_powl(x,y) return x**y + * + * n + * Method: Let x = 2 * (1+f) + * 1. Compute and return log2(x) in two pieces: + * log2(x) = w1 + w2, + * where w1 has 113-53 = 60 bit trailing zeros. + * 2. Perform y*log2(x) = n+y' by simulating muti-precision + * arithmetic, where |y'|<=0.5. + * 3. Return x**y = 2**n*exp(y'*log2) + * + * Special cases: + * 1. (anything) ** 0 is 1 + * 2. (anything) ** 1 is itself + * 3. (anything) ** NAN is NAN + * 4. NAN ** (anything except 0) is NAN + * 5. +-(|x| > 1) ** +INF is +INF + * 6. +-(|x| > 1) ** -INF is +0 + * 7. +-(|x| < 1) ** +INF is +0 + * 8. +-(|x| < 1) ** -INF is +INF + * 9. +-1 ** +-INF is NAN + * 10. +0 ** (+anything except 0, NAN) is +0 + * 11. -0 ** (+anything except 0, NAN, odd integer) is +0 + * 12. +0 ** (-anything except 0, NAN) is +INF + * 13. -0 ** (-anything except 0, NAN, odd integer) is +INF + * 14. -0 ** (odd integer) = -( +0 ** (odd integer) ) + * 15. +INF ** (+anything except 0,NAN) is +INF + * 16. +INF ** (-anything except 0,NAN) is +0 + * 17. -INF ** (anything) = -0 ** (-anything) + * 18. (-anything) ** (integer) is (-1)**(integer)*(+anything**integer) + * 19. (-anything except 0 and inf) ** (non-integer) is NAN + * + */ + +#include "math.h" +#include "math_private.h" + +static const long double bp[] = { + 1.0L, + 1.5L, +}; + +/* log_2(1.5) */ +static const long double dp_h[] = { + 0.0, + 5.8496250072115607565592654282227158546448E-1L +}; + +/* Low part of log_2(1.5) */ +static const long double dp_l[] = { + 0.0, + 1.0579781240112554492329533686862998106046E-16L +}; + +static const long double zero = 0.0L, + one = 1.0L, + two = 2.0L, + two113 = 1.0384593717069655257060992658440192E34L, + huge = 1.0e3000L, + tiny = 1.0e-3000L; + +/* 3/2 log x = 3 z + z^3 + z^3 (z^2 R(z^2)) + z = (x-1)/(x+1) + 1 <= x <= 1.25 + Peak relative error 2.3e-37 */ +static const long double LN[] = +{ + -3.0779177200290054398792536829702930623200E1L, + 6.5135778082209159921251824580292116201640E1L, + -4.6312921812152436921591152809994014413540E1L, + 1.2510208195629420304615674658258363295208E1L, + -9.9266909031921425609179910128531667336670E-1L +}; +static const long double LD[] = +{ + -5.129862866715009066465422805058933131960E1L, + 1.452015077564081884387441590064272782044E2L, + -1.524043275549860505277434040464085593165E2L, + 7.236063513651544224319663428634139768808E1L, + -1.494198912340228235853027849917095580053E1L + /* 1.0E0 */ +}; + +/* exp(x) = 1 + x - x / (1 - 2 / (x - x^2 R(x^2))) + 0 <= x <= 0.5 + Peak relative error 5.7e-38 */ +static const long double PN[] = +{ + 5.081801691915377692446852383385968225675E8L, + 9.360895299872484512023336636427675327355E6L, + 4.213701282274196030811629773097579432957E4L, + 5.201006511142748908655720086041570288182E1L, + 9.088368420359444263703202925095675982530E-3L, +}; +static const long double PD[] = +{ + 3.049081015149226615468111430031590411682E9L, + 1.069833887183886839966085436512368982758E8L, + 8.259257717868875207333991924545445705394E5L, + 1.872583833284143212651746812884298360922E3L, + /* 1.0E0 */ +}; + +static const long double + /* ln 2 */ + lg2 = 6.9314718055994530941723212145817656807550E-1L, + lg2_h = 6.9314718055994528622676398299518041312695E-1L, + lg2_l = 2.3190468138462996154948554638754786504121E-17L, + ovt = 8.0085662595372944372e-0017L, + /* 2/(3*log(2)) */ + cp = 9.6179669392597560490661645400126142495110E-1L, + cp_h = 9.6179669392597555432899980587535537779331E-1L, + cp_l = 5.0577616648125906047157785230014751039424E-17L; + +#ifdef __STDC__ +long double +__ieee754_powl (long double x, long double y) +#else +long double +__ieee754_powl (x, y) + long double x, y; +#endif +{ + long double z, ax, z_h, z_l, p_h, p_l; + long double y1, t1, t2, r, s, t, u, v, w; + long double s2, s_h, s_l, t_h, t_l; + int32_t i, j, k, yisint, n; + u_int32_t ix, iy; + int32_t hx, hy; + ieee854_long_double_shape_type o, p, q; + + p.value = x; + hx = p.parts32.w0; + ix = hx & 0x7fffffff; + + q.value = y; + hy = q.parts32.w0; + iy = hy & 0x7fffffff; + + + /* y==zero: x**0 = 1 */ + if ((iy | q.parts32.w1 | q.parts32.w2 | q.parts32.w3) == 0) + return one; + + /* +-NaN return x+y */ + if ((ix > 0x7fff0000) + || ((ix == 0x7fff0000) + && ((p.parts32.w1 | p.parts32.w2 | p.parts32.w3) != 0)) + || (iy > 0x7fff0000) + || ((iy == 0x7fff0000) + && ((q.parts32.w1 | q.parts32.w2 | q.parts32.w3) != 0))) + return x + y; + + /* determine if y is an odd int when x < 0 + * yisint = 0 ... y is not an integer + * yisint = 1 ... y is an odd int + * yisint = 2 ... y is an even int + */ + yisint = 0; + if (hx < 0) + { + if (iy >= 0x40700000) /* 2^113 */ + yisint = 2; /* even integer y */ + else if (iy >= 0x3fff0000) /* 1.0 */ + { + if (__floorl (y) == y) + { + z = 0.5 * y; + if (__floorl (z) == z) + yisint = 2; + else + yisint = 1; + } + } + } + + /* special value of y */ + if ((q.parts32.w1 | q.parts32.w2 | q.parts32.w3) == 0) + { + if (iy == 0x7fff0000) /* y is +-inf */ + { + if (((ix - 0x3fff0000) | p.parts32.w1 | p.parts32.w2 | p.parts32.w3) + == 0) + return y - y; /* inf**+-1 is NaN */ + else if (ix >= 0x3fff0000) /* (|x|>1)**+-inf = inf,0 */ + return (hy >= 0) ? y : zero; + else /* (|x|<1)**-,+inf = inf,0 */ + return (hy < 0) ? -y : zero; + } + if (iy == 0x3fff0000) + { /* y is +-1 */ + if (hy < 0) + return one / x; + else + return x; + } + if (hy == 0x40000000) + return x * x; /* y is 2 */ + if (hy == 0x3ffe0000) + { /* y is 0.5 */ + if (hx >= 0) /* x >= +0 */ + return __ieee754_sqrtl (x); + } + } + + ax = fabsl (x); + /* special value of x */ + if ((p.parts32.w1 | p.parts32.w2 | p.parts32.w3) == 0) + { + if (ix == 0x7fff0000 || ix == 0 || ix == 0x3fff0000) + { + z = ax; /*x is +-0,+-inf,+-1 */ + if (hy < 0) + z = one / z; /* z = (1/|x|) */ + if (hx < 0) + { + if (((ix - 0x3fff0000) | yisint) == 0) + { + z = (z - z) / (z - z); /* (-1)**non-int is NaN */ + } + else if (yisint == 1) + z = -z; /* (x<0)**odd = -(|x|**odd) */ + } + return z; + } + } + + /* (x<0)**(non-int) is NaN */ + if (((((u_int32_t) hx >> 31) - 1) | yisint) == 0) + return (x - x) / (x - x); + + /* |y| is huge. + 2^-16495 = 1/2 of smallest representable value. + If (1 - 1/131072)^y underflows, y > 1.4986e9 */ + if (iy > 0x401d654b) + { + /* if (1 - 2^-113)^y underflows, y > 1.1873e38 */ + if (iy > 0x407d654b) + { + if (ix <= 0x3ffeffff) + return (hy < 0) ? huge * huge : tiny * tiny; + if (ix >= 0x3fff0000) + return (hy > 0) ? huge * huge : tiny * tiny; + } + /* over/underflow if x is not close to one */ + if (ix < 0x3ffeffff) + return (hy < 0) ? huge * huge : tiny * tiny; + if (ix > 0x3fff0000) + return (hy > 0) ? huge * huge : tiny * tiny; + } + + n = 0; + /* take care subnormal number */ + if (ix < 0x00010000) + { + ax *= two113; + n -= 113; + o.value = ax; + ix = o.parts32.w0; + } + n += ((ix) >> 16) - 0x3fff; + j = ix & 0x0000ffff; + /* determine interval */ + ix = j | 0x3fff0000; /* normalize ix */ + if (j <= 0x3988) + k = 0; /* |x|<sqrt(3/2) */ + else if (j < 0xbb67) + k = 1; /* |x|<sqrt(3) */ + else + { + k = 0; + n += 1; + ix -= 0x00010000; + } + + o.value = ax; + o.parts32.w0 = ix; + ax = o.value; + + /* compute s = s_h+s_l = (x-1)/(x+1) or (x-1.5)/(x+1.5) */ + u = ax - bp[k]; /* bp[0]=1.0, bp[1]=1.5 */ + v = one / (ax + bp[k]); + s = u * v; + s_h = s; + + o.value = s_h; + o.parts32.w3 = 0; + o.parts32.w2 &= 0xf8000000; + s_h = o.value; + /* t_h=ax+bp[k] High */ + t_h = ax + bp[k]; + o.value = t_h; + o.parts32.w3 = 0; + o.parts32.w2 &= 0xf8000000; + t_h = o.value; + t_l = ax - (t_h - bp[k]); + s_l = v * ((u - s_h * t_h) - s_h * t_l); + /* compute log(ax) */ + s2 = s * s; + u = LN[0] + s2 * (LN[1] + s2 * (LN[2] + s2 * (LN[3] + s2 * LN[4]))); + v = LD[0] + s2 * (LD[1] + s2 * (LD[2] + s2 * (LD[3] + s2 * (LD[4] + s2)))); + r = s2 * s2 * u / v; + r += s_l * (s_h + s); + s2 = s_h * s_h; + t_h = 3.0 + s2 + r; + o.value = t_h; + o.parts32.w3 = 0; + o.parts32.w2 &= 0xf8000000; + t_h = o.value; + t_l = r - ((t_h - 3.0) - s2); + /* u+v = s*(1+...) */ + u = s_h * t_h; + v = s_l * t_h + t_l * s; + /* 2/(3log2)*(s+...) */ + p_h = u + v; + o.value = p_h; + o.parts32.w3 = 0; + o.parts32.w2 &= 0xf8000000; + p_h = o.value; + p_l = v - (p_h - u); + z_h = cp_h * p_h; /* cp_h+cp_l = 2/(3*log2) */ + z_l = cp_l * p_h + p_l * cp + dp_l[k]; + /* log2(ax) = (s+..)*2/(3*log2) = n + dp_h + z_h + z_l */ + t = (long double) n; + t1 = (((z_h + z_l) + dp_h[k]) + t); + o.value = t1; + o.parts32.w3 = 0; + o.parts32.w2 &= 0xf8000000; + t1 = o.value; + t2 = z_l - (((t1 - t) - dp_h[k]) - z_h); + + /* s (sign of result -ve**odd) = -1 else = 1 */ + s = one; + if (((((u_int32_t) hx >> 31) - 1) | (yisint - 1)) == 0) + s = -one; /* (-ve)**(odd int) */ + + /* split up y into y1+y2 and compute (y1+y2)*(t1+t2) */ + y1 = y; + o.value = y1; + o.parts32.w3 = 0; + o.parts32.w2 &= 0xf8000000; + y1 = o.value; + p_l = (y - y1) * t1 + y * t2; + p_h = y1 * t1; + z = p_l + p_h; + o.value = z; + j = o.parts32.w0; + if (j >= 0x400d0000) /* z >= 16384 */ + { + /* if z > 16384 */ + if (((j - 0x400d0000) | o.parts32.w1 | o.parts32.w2 | o.parts32.w3) != 0) + return s * huge * huge; /* overflow */ + else + { + if (p_l + ovt > z - p_h) + return s * huge * huge; /* overflow */ + } + } + else if ((j & 0x7fffffff) >= 0x400d01b9) /* z <= -16495 */ + { + /* z < -16495 */ + if (((j - 0xc00d01bc) | o.parts32.w1 | o.parts32.w2 | o.parts32.w3) + != 0) + return s * tiny * tiny; /* underflow */ + else + { + if (p_l <= z - p_h) + return s * tiny * tiny; /* underflow */ + } + } + /* compute 2**(p_h+p_l) */ + i = j & 0x7fffffff; + k = (i >> 16) - 0x3fff; + n = 0; + if (i > 0x3ffe0000) + { /* if |z| > 0.5, set n = [z+0.5] */ + n = __floorl (z + 0.5L); + t = n; + p_h -= t; + } + t = p_l + p_h; + o.value = t; + o.parts32.w3 = 0; + o.parts32.w2 &= 0xf8000000; + t = o.value; + u = t * lg2_h; + v = (p_l - (t - p_h)) * lg2 + t * lg2_l; + z = u + v; + w = v - (z - u); + /* exp(z) */ + t = z * z; + u = PN[0] + t * (PN[1] + t * (PN[2] + t * (PN[3] + t * PN[4]))); + v = PD[0] + t * (PD[1] + t * (PD[2] + t * (PD[3] + t))); + t1 = z - t * u / v; + r = (z * t1) / (t1 - two) - (w + z * w); + z = one - (r - z); + o.value = z; + j = o.parts32.w0; + j += (n << 16); + if ((j >> 16) <= 0) + z = __scalbnl (z, n); /* subnormal output */ + else + { + o.parts32.w0 = j; + z = o.value; + } + return s * z; +} diff --git a/sysdeps/ieee754/ldbl-128/s_cbrtl.c b/sysdeps/ieee754/ldbl-128/s_cbrtl.c new file mode 100644 index 0000000..298754e --- /dev/null +++ b/sysdeps/ieee754/ldbl-128/s_cbrtl.c @@ -0,0 +1,121 @@ +/* cbrtl.c + * + * Cube root, long double precision + * + * + * + * SYNOPSIS: + * + * long double x, y, cbrtl(); + * + * y = cbrtl( x ); + * + * + * + * DESCRIPTION: + * + * Returns the cube root of the argument, which may be negative. + * + * Range reduction involves determining the power of 2 of + * the argument. A polynomial of degree 2 applied to the + * mantissa, and multiplication by the cube root of 1, 2, or 4 + * approximates the root to within about 0.1%. Then Newton's + * iteration is used three times to converge to an accurate + * result. + * + * + * + * ACCURACY: + * + * Relative error: + * arithmetic domain # trials peak rms + * IEEE -8,8 100000 1.3e-34 3.9e-35 + * IEEE exp(+-707) 100000 1.3e-34 4.3e-35 + * + */ + +/* +Cephes Math Library Release 2.2: January, 1991 +Copyright 1984, 1991 by Stephen L. Moshier +Adapted for glibc October, 2001. +*/ + +#include "math.h" +#include "math_private.h" + +static const long double CBRT2 = 1.259921049894873164767210607278228350570251L; +static const long double CBRT4 = 1.587401051968199474751705639272308260391493L; +static const long double CBRT2I = 0.7937005259840997373758528196361541301957467L; +static const long double CBRT4I = 0.6299605249474365823836053036391141752851257L; + + +long double +__cbrtl (long double x) +{ + int e, rem, sign; + long double z; + + if (!__finitel (x)) + return x + x; + + if (x == 0) + return (x); + + if (x > 0) + sign = 1; + else + { + sign = -1; + x = -x; + } + + z = x; + /* extract power of 2, leaving mantissa between 0.5 and 1 */ + x = __frexpl (x, &e); + + /* Approximate cube root of number between .5 and 1, + peak relative error = 1.2e-6 */ + x = ((((1.3584464340920900529734e-1L * x + - 6.3986917220457538402318e-1L) * x + + 1.2875551670318751538055e0L) * x + - 1.4897083391357284957891e0L) * x + + 1.3304961236013647092521e0L) * x + 3.7568280825958912391243e-1L; + + /* exponent divided by 3 */ + if (e >= 0) + { + rem = e; + e /= 3; + rem -= 3 * e; + if (rem == 1) + x *= CBRT2; + else if (rem == 2) + x *= CBRT4; + } + else + { /* argument less than 1 */ + e = -e; + rem = e; + e /= 3; + rem -= 3 * e; + if (rem == 1) + x *= CBRT2I; + else if (rem == 2) + x *= CBRT4I; + e = -e; + } + + /* multiply by power of 2 */ + x = __ldexpl (x, e); + + /* Newton iteration */ + x -= (x - (z / (x * x))) * 0.3333333333333333333333333333333333333333L; + x -= (x - (z / (x * x))) * 0.3333333333333333333333333333333333333333L; + x -= (x - (z / (x * x))) * 0.3333333333333333333333333333333333333333L; + + if (sign < 0) + x = -x; + return (x); +} + +weak_alias (__cbrtl, cbrtl) diff --git a/sysdeps/ieee754/ldbl-128/s_erfl.c b/sysdeps/ieee754/ldbl-128/s_erfl.c index 5720225..efa0e8f 100644 --- a/sysdeps/ieee754/ldbl-128/s_erfl.c +++ b/sysdeps/ieee754/ldbl-128/s_erfl.c @@ -137,7 +137,7 @@ tiny = 1e-4931L, 0 <= x <= 7/8 Peak relative error 1.8e-35 */ #define NTN1 8 -static long double TN1[NTN1 + 1] = +static const long double TN1[NTN1 + 1] = { -3.858252324254637124543172907442106422373E10L, 9.580319248590464682316366876952214879858E10L, @@ -150,7 +150,7 @@ static long double TN1[NTN1 + 1] = 3.390868480059991640235675479463287886081E1L }; #define NTD1 8 -static long double TD1[NTD1 + 1] = +static const long double TD1[NTD1 + 1] = { -3.005357030696532927149885530689529032152E11L, -1.342602283126282827411658673839982164042E11L, @@ -168,9 +168,9 @@ static long double TD1[NTD1 + 1] = /* erf(z+1) = erf_const + P(z)/Q(z) -.125 <= z <= 0 Peak relative error 7.3e-36 */ -static long double erf_const = 0.845062911510467529296875L; +static const long double erf_const = 0.845062911510467529296875L; #define NTN2 8 -static long double TN2[NTN2 + 1] = +static const long double TN2[NTN2 + 1] = { -4.088889697077485301010486931817357000235E1L, 7.157046430681808553842307502826960051036E3L, @@ -183,7 +183,7 @@ static long double TN2[NTN2 + 1] = 5.127662277706787664956025545897050896203E-1L }; #define NTD2 8 -static long double TD2[NTD2 + 1] = +static const long double TD2[NTD2 + 1] = { 1.731026445926834008273768924015161048885E4L, 1.209682239007990370796112604286048173750E4L, @@ -202,7 +202,7 @@ static long double TD2[NTD2 + 1] = 0 <= x < 0.125 Peak relative error 1.4e-35 */ #define NRNr13 8 -static long double RNr13[NRNr13 + 1] = +static const long double RNr13[NRNr13 + 1] = { -2.353707097641280550282633036456457014829E3L, 3.871159656228743599994116143079870279866E2L, @@ -215,7 +215,7 @@ static long double RNr13[NRNr13 + 1] = -8.098602878463854789780108161581050357814E-2L }; #define NRDr13 7 -static long double RDr13[NRDr13 + 1] = +static const long double RDr13[NRDr13 + 1] = { 2.220448796306693503549505450626652881752E3L, 1.899133258779578688791041599040951431383E2L, @@ -228,15 +228,15 @@ static long double RDr13[NRDr13 + 1] = /* 1.0E0 */ }; /* erfc(0.25) = C13a + C13b to extra precision. */ -static long double C13a = 0.723663330078125L; -static long double C13b = 1.0279753638067014931732235184287934646022E-5L; +static const long double C13a = 0.723663330078125L; +static const long double C13b = 1.0279753638067014931732235184287934646022E-5L; /* erfc(x + 0.375) = erfc(0.375) + x R(x) 0 <= x < 0.125 Peak relative error 1.2e-35 */ #define NRNr14 8 -static long double RNr14[NRNr14 + 1] = +static const long double RNr14[NRNr14 + 1] = { -2.446164016404426277577283038988918202456E3L, 6.718753324496563913392217011618096698140E2L, @@ -249,7 +249,7 @@ static long double RNr14[NRNr14 + 1] = -2.230395570574153963203348263549700967918E-2L }; #define NRDr14 7 -static long double RDr14[NRDr14 + 1] = +static const long double RDr14[NRDr14 + 1] = { 2.495187439241869732696223349840963702875E3L, 2.503549449872925580011284635695738412162E2L, @@ -262,14 +262,14 @@ static long double RDr14[NRDr14 + 1] = /* 1.0E0 */ }; /* erfc(0.375) = C14a + C14b to extra precision. */ -static long double C14a = 0.5958709716796875L; -static long double C14b = 1.2118885490201676174914080878232469565953E-5L; +static const long double C14a = 0.5958709716796875L; +static const long double C14b = 1.2118885490201676174914080878232469565953E-5L; /* erfc(x + 0.5) = erfc(0.5) + x R(x) 0 <= x < 0.125 Peak relative error 4.7e-36 */ #define NRNr15 8 -static long double RNr15[NRNr15 + 1] = +static const long double RNr15[NRNr15 + 1] = { -2.624212418011181487924855581955853461925E3L, 8.473828904647825181073831556439301342756E2L, @@ -282,7 +282,7 @@ static long double RNr15[NRNr15 + 1] = 1.990253655948179713415957791776180406812E-2L }; #define NRDr15 7 -static long double RDr15[NRDr15 + 1] = +static const long double RDr15[NRDr15 + 1] = { 2.986190760847974943034021764693341524962E3L, 5.288262758961073066335410218650047725985E2L, @@ -295,14 +295,14 @@ static long double RDr15[NRDr15 + 1] = /* 1.0E0 */ }; /* erfc(0.5) = C15a + C15b to extra precision. */ -static long double C15a = 0.4794921875L; -static long double C15b = 7.9346869534623172533461080354712635484242E-6L; +static const long double C15a = 0.4794921875L; +static const long double C15b = 7.9346869534623172533461080354712635484242E-6L; /* erfc(x + 0.625) = erfc(0.625) + x R(x) 0 <= x < 0.125 Peak relative error 5.1e-36 */ #define NRNr16 8 -static long double RNr16[NRNr16 + 1] = +static const long double RNr16[NRNr16 + 1] = { -2.347887943200680563784690094002722906820E3L, 8.008590660692105004780722726421020136482E2L, @@ -315,7 +315,7 @@ static long double RNr16[NRNr16 + 1] = 2.022958279982138755020825717073966576670E-2L, }; #define NRDr16 7 -static long double RDr16[NRDr16 + 1] = +static const long double RDr16[NRDr16 + 1] = { 3.075166170024837215399323264868308087281E3L, 8.730468942160798031608053127270430036627E2L, @@ -328,14 +328,14 @@ static long double RDr16[NRDr16 + 1] = /* 1.0E0 */ }; /* erfc(0.625) = C16a + C16b to extra precision. */ -static long double C16a = 0.3767547607421875L; -static long double C16b = 4.3570693945275513594941232097252997287766E-6L; +static const long double C16a = 0.3767547607421875L; +static const long double C16b = 4.3570693945275513594941232097252997287766E-6L; /* erfc(x + 0.75) = erfc(0.75) + x R(x) 0 <= x < 0.125 Peak relative error 1.7e-35 */ #define NRNr17 8 -static long double RNr17[NRNr17 + 1] = +static const long double RNr17[NRNr17 + 1] = { -1.767068734220277728233364375724380366826E3L, 6.693746645665242832426891888805363898707E2L, @@ -348,7 +348,7 @@ static long double RNr17[NRNr17 + 1] = -1.488945487149634820537348176770282391202E-2L }; #define NRDr17 7 -static long double RDr17[NRDr17 + 1] = +static const long double RDr17[NRDr17 + 1] = { 2.748457523498150741964464942246913394647E3L, 1.020213390713477686776037331757871252652E3L, @@ -361,15 +361,15 @@ static long double RDr17[NRDr17 + 1] = /* 1.0E0 */ }; /* erfc(0.75) = C17a + C17b to extra precision. */ -static long double C17a = 0.2888336181640625L; -static long double C17b = 1.0748182422368401062165408589222625794046E-5L; +static const long double C17a = 0.2888336181640625L; +static const long double C17b = 1.0748182422368401062165408589222625794046E-5L; /* erfc(x + 0.875) = erfc(0.875) + x R(x) 0 <= x < 0.125 Peak relative error 2.2e-35 */ #define NRNr18 8 -static long double RNr18[NRNr18 + 1] = +static const long double RNr18[NRNr18 + 1] = { -1.342044899087593397419622771847219619588E3L, 6.127221294229172997509252330961641850598E2L, @@ -382,7 +382,7 @@ static long double RNr18[NRNr18 + 1] = -5.557645435858916025452563379795159124753E-2L }; #define NRDr18 7 -static long double RDr18[NRDr18 + 1] = +static const long double RDr18[NRDr18 + 1] = { 2.557518000661700588758505116291983092951E3L, 1.070171433382888994954602511991940418588E3L, @@ -395,14 +395,14 @@ static long double RDr18[NRDr18 + 1] = /* 1.0E0 */ }; /* erfc(0.875) = C18a + C18b to extra precision. */ -static long double C18a = 0.215911865234375L; -static long double C18b = 1.3073705765341685464282101150637224028267E-5L; +static const long double C18a = 0.215911865234375L; +static const long double C18b = 1.3073705765341685464282101150637224028267E-5L; /* erfc(x + 1.0) = erfc(1.0) + x R(x) 0 <= x < 0.125 Peak relative error 1.6e-35 */ #define NRNr19 8 -static long double RNr19[NRNr19 + 1] = +static const long double RNr19[NRNr19 + 1] = { -1.139180936454157193495882956565663294826E3L, 6.134903129086899737514712477207945973616E2L, @@ -415,7 +415,7 @@ static long double RNr19[NRNr19 + 1] = -8.629945436917752003058064731308767664446E-2L }; #define NRDr19 7 -static long double RDr19[NRDr19 + 1] = +static const long double RDr19[NRDr19 + 1] = { 2.744303447981132701432716278363418643778E3L, 1.266396359526187065222528050591302171471E3L, @@ -428,14 +428,14 @@ static long double RDr19[NRDr19 + 1] = /* 1.0E0 */ }; /* erfc(1.0) = C19a + C19b to extra precision. */ -static long double C19a = 0.15728759765625L; -static long double C19b = 1.1609394035130658779364917390740703933002E-5L; +static const long double C19a = 0.15728759765625L; +static const long double C19b = 1.1609394035130658779364917390740703933002E-5L; /* erfc(x + 1.125) = erfc(1.125) + x R(x) 0 <= x < 0.125 Peak relative error 3.6e-36 */ #define NRNr20 8 -static long double RNr20[NRNr20 + 1] = +static const long double RNr20[NRNr20 + 1] = { -9.652706916457973956366721379612508047640E2L, 5.577066396050932776683469951773643880634E2L, @@ -448,7 +448,7 @@ static long double RNr20[NRNr20 + 1] = -9.611744011489092894027478899545635991213E-2L }; #define NRDr20 7 -static long double RDr20[NRDr20 + 1] = +static const long double RDr20[NRDr20 + 1] = { 3.032829629520142564106649167182428189014E3L, 1.659648470721967719961167083684972196891E3L, @@ -461,14 +461,14 @@ static long double RDr20[NRDr20 + 1] = /* 1.0E0 */ }; /* erfc(1.125) = C20a + C20b to extra precision. */ -static long double C20a = 0.111602783203125L; -static long double C20b = 8.9850951672359304215530728365232161564636E-6L; +static const long double C20a = 0.111602783203125L; +static const long double C20b = 8.9850951672359304215530728365232161564636E-6L; /* erfc(1/x) = 1/x exp (-1/x^2 - 0.5625 + R(1/x^2)) 7/8 <= 1/x < 1 Peak relative error 1.4e-35 */ #define NRNr8 9 -static long double RNr8[NRNr8 + 1] = +static const long double RNr8[NRNr8 + 1] = { 3.587451489255356250759834295199296936784E1L, 5.406249749087340431871378009874875889602E2L, @@ -482,7 +482,7 @@ static long double RNr8[NRNr8 + 1] = 4.876422978828717219629814794707963640913E-2L }; #define NRDr8 8 -static long double RDr8[NRDr8 + 1] = +static const long double RDr8[NRDr8 + 1] = { 6.358593134096908350929496535931630140282E1L, 9.900253816552450073757174323424051765523E2L, @@ -500,7 +500,7 @@ static long double RDr8[NRDr8 + 1] = 0.75 <= 1/x <= 0.875 Peak relative error 2.0e-36 */ #define NRNr7 9 -static long double RNr7[NRNr7 + 1] = +static const long double RNr7[NRNr7 + 1] = { 1.686222193385987690785945787708644476545E1L, 1.178224543567604215602418571310612066594E3L, @@ -514,7 +514,7 @@ static long double RNr7[NRNr7 + 1] = 6.700393957480661937695573729183733234400E2L }; #define NRDr7 9 -static long double RDr7[NRDr7 + 1] = +static const long double RDr7[NRDr7 + 1] = { -1.709305024718358874701575813642933561169E3L, -3.280033887481333199580464617020514788369E4L, @@ -533,7 +533,7 @@ static long double RDr7[NRDr7 + 1] = 5/8 <= 1/x < 3/4 Peak relative error 1.9e-35 */ #define NRNr6 9 -static long double RNr6[NRNr6 + 1] = +static const long double RNr6[NRNr6 + 1] = { 1.642076876176834390623842732352935761108E0L, 1.207150003611117689000664385596211076662E2L, @@ -547,7 +547,7 @@ static long double RNr6[NRNr6 + 1] = 4.506934806567986810091824791963991057083E2L }; #define NRDr6 9 -static long double RDr6[NRDr6 + 1] = +static const long double RDr6[NRDr6 + 1] = { -1.664557643928263091879301304019826629067E2L, -3.800035902507656624590531122291160668452E3L, @@ -566,7 +566,7 @@ static long double RDr6[NRDr6 + 1] = 1/2 <= 1/x < 5/8 Peak relative error 4.6e-36 */ #define NRNr5 10 -static long double RNr5[NRNr5 + 1] = +static const long double RNr5[NRNr5 + 1] = { -3.332258927455285458355550878136506961608E-3L, -2.697100758900280402659586595884478660721E-1L, @@ -581,7 +581,7 @@ static long double RNr5[NRNr5 + 1] = -2.077715925587834606379119585995758954399E0L }; #define NRDr5 9 -static long double RDr5[NRDr5 + 1] = +static const long double RDr5[NRDr5 + 1] = { 3.377879570417399341550710467744693125385E-1L, 1.021963322742390735430008860602594456187E1L, @@ -600,7 +600,7 @@ static long double RDr5[NRDr5 + 1] = 3/8 <= 1/x < 1/2 Peak relative error 2.0e-36 */ #define NRNr4 10 -static long double RNr4[NRNr4 + 1] = +static const long double RNr4[NRNr4 + 1] = { 3.258530712024527835089319075288494524465E-3L, 2.987056016877277929720231688689431056567E-1L, @@ -615,7 +615,7 @@ static long double RNr4[NRNr4 + 1] = 2.127493573166454249221983582495245662319E2L }; #define NRDr4 10 -static long double RDr4[NRDr4 + 1] = +static const long double RDr4[NRDr4 + 1] = { -3.303141981514540274165450687270180479586E-1L, -1.353768629363605300707949368917687066724E1L, @@ -635,7 +635,7 @@ static long double RDr4[NRDr4 + 1] = 1/4 <= 1/x < 3/8 Peak relative error 8.4e-37 */ #define NRNr3 11 -static long double RNr3[NRNr3 + 1] = +static const long double RNr3[NRNr3 + 1] = { -1.952401126551202208698629992497306292987E-6L, -2.130881743066372952515162564941682716125E-4L, @@ -651,7 +651,7 @@ static long double RNr3[NRNr3 + 1] = -1.787995944187565676837847610706317833247E0L }; #define NRDr3 10 -static long double RDr3[NRDr3 + 1] = +static const long double RDr3[NRDr3 + 1] = { 1.979130686770349481460559711878399476903E-4L, 1.156941716128488266238105813374635099057E-2L, @@ -671,7 +671,7 @@ static long double RDr3[NRDr3 + 1] = 1/8 <= 1/x < 1/4 Peak relative error 1.5e-36 */ #define NRNr2 11 -static long double RNr2[NRNr2 + 1] = +static const long double RNr2[NRNr2 + 1] = { -2.638914383420287212401687401284326363787E-8L, -3.479198370260633977258201271399116766619E-6L, @@ -687,7 +687,7 @@ static long double RNr2[NRNr2 + 1] = -1.572436106228070195510230310658206154374E0L }; #define NRDr2 10 -static long double RDr2[NRDr2 + 1] = +static const long double RDr2[NRDr2 + 1] = { 2.675042728136731923554119302571867799673E-6L, 2.170997868451812708585443282998329996268E-4L, @@ -707,7 +707,7 @@ static long double RDr2[NRDr2 + 1] = 1/128 <= 1/x < 1/8 Peak relative error 2.2e-36 */ #define NRNr1 9 -static long double RNr1[NRNr1 + 1] = +static const long double RNr1[NRNr1 + 1] = { -4.250780883202361946697751475473042685782E-8L, -5.375777053288612282487696975623206383019E-6L, @@ -721,7 +721,7 @@ static long double RNr1[NRNr1 + 1] = -1.290865243944292370661544030414667556649E0L }; #define NRDr1 8 -static long double RDr1[NRDr1 + 1] = +static const long double RDr1[NRDr1 + 1] = { 4.308976661749509034845251315983612976224E-6L, 3.265390126432780184125233455960049294580E-4L, diff --git a/sysdeps/ieee754/ldbl-128/s_expm1l.c b/sysdeps/ieee754/ldbl-128/s_expm1l.c index c03635e..1ed68d6 100644 --- a/sysdeps/ieee754/ldbl-128/s_expm1l.c +++ b/sysdeps/ieee754/ldbl-128/s_expm1l.c @@ -45,7 +45,7 @@ -.5 ln 2 < x < .5 ln 2 Theoretical peak relative error = 8.1e-36 */ -static long double +static const long double P0 = 2.943520915569954073888921213330863757240E8L, P1 = -5.722847283900608941516165725053359168840E7L, P2 = 8.944630806357575461578107295909719817253E6L, @@ -103,11 +103,11 @@ __expm1l (long double x) /* expm1(+- 0) = +- 0. */ if ((ix == 0) && (u.parts32.w1 | u.parts32.w2 | u.parts32.w3) == 0) return x; - + /* Overflow. */ if (x > maxlog) return (big * big); - + /* Minimum value. */ if (x < minarg) return (4.0/big - 1.0L); diff --git a/sysdeps/ieee754/ldbl-128/s_log1pl.c b/sysdeps/ieee754/ldbl-128/s_log1pl.c index c19bea8..73e9501 100644 --- a/sysdeps/ieee754/ldbl-128/s_log1pl.c +++ b/sysdeps/ieee754/ldbl-128/s_log1pl.c @@ -46,7 +46,7 @@ * Theoretical peak relative error = 5.3e-37, * relative peak error spread = 2.3e-14 */ -static long double +static const long double P12 = 1.538612243596254322971797716843006400388E-6L, P11 = 4.998469661968096229986658302195402690910E-1L, P10 = 2.321125933898420063925789532045674660756E1L, @@ -80,7 +80,7 @@ static long double * Theoretical peak relative error = 1.1e-35, * relative peak error spread 1.1e-9 */ -static long double +static const long double R5 = -8.828896441624934385266096344596648080902E-1L, R4 = 8.057002716646055371965756206836056074715E1L, R3 = -2.024301798136027039250415126250455056397E3L, @@ -96,14 +96,14 @@ static long double S0 = 1.701761051846631278975701529965589676574E6L; /* C1 + C2 = ln 2 */ -static long double C1 = 6.93145751953125E-1L; -static long double C2 = 1.428606820309417232121458176568075500134E-6L; +static const long double C1 = 6.93145751953125E-1L; +static const long double C2 = 1.428606820309417232121458176568075500134E-6L; -static long double sqrth = 0.7071067811865475244008443621048490392848L; +static const long double sqrth = 0.7071067811865475244008443621048490392848L; /* ln (2^16384 * (1 - 2^-113)) */ -static long double maxlog = 1.1356523406294143949491931077970764891253E4L; -static long double big = 2e4932L; -static long double zero = 0.0L; +static const long double maxlog = 1.1356523406294143949491931077970764891253E4L; +static const long double big = 2e4932L; +static const long double zero = 0.0L; #if 1 /* Make sure these are prototyped. */ diff --git a/sysdeps/ieee754/ldbl-96/s_cbrtl.c b/sysdeps/ieee754/ldbl-96/s_cbrtl.c index eef722f..0f8227a 100644 --- a/sysdeps/ieee754/ldbl-96/s_cbrtl.c +++ b/sysdeps/ieee754/ldbl-96/s_cbrtl.c @@ -37,11 +37,12 @@ static const double factor[5] = SQR_CBRT2 }; +static const long double third = 0.3333333333333333333333333L; long double __cbrtl (long double x) { - long double xm, ym, u, t2; + long double xm, u; int xe; /* Reduce X. XM now is an range 1.0 to 0.5. */ @@ -54,25 +55,17 @@ __cbrtl (long double x) if (xe == 0 && fpclassify (x) <= FP_ZERO) return x + x; - u = (0.338058687610520237 - + (1.67595307700780102 - + (-2.82414939754975962 - + (4.09559907378707839 + - (-4.11151425200350531 - + (2.65298938441952296 + - (-0.988553671195413709 - + 0.161617097923756032 * xm) - * xm) - * xm) - * xm) - * xm) - * xm) - *xm); + u = (((-1.34661104733595206551E-1 * xm + + 5.46646013663955245034E-1) * xm + - 9.54382247715094465250E-1) * xm + + 1.13999833547172932737E0) * xm + + 4.02389795645447521269E-1; - t2 = u * u * u; + u *= factor[2 + xe % 3]; + u = __ldexpl (x > 0.0 ? u : -u, xe / 3); - ym = u * (t2 + 2.0 * xm) / (2.0 * t2 + xm) * factor[2 + xe % 3]; - - return __ldexpl (x > 0.0 ? ym : -ym, xe / 3); + u -= (u - (x / (u * u))) * third; + u -= (u - (x / (u * u))) * third; + return u; } weak_alias (__cbrtl, cbrtl) diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/sys/ucontext.h b/sysdeps/unix/sysv/linux/s390/s390-32/sys/ucontext.h index eedd5db..dfc7968 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-32/sys/ucontext.h +++ b/sysdeps/unix/sysv/linux/s390/s390-32/sys/ucontext.h @@ -34,7 +34,7 @@ typedef struct { unsigned long mask; unsigned long addr; -} __psw_t __attribute__ ((aligned(8))); +} __attribute__ ((aligned(8))) __psw_t; /* Type for a general-purpose register. */ typedef unsigned long greg_t; diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/sys/ucontext.h b/sysdeps/unix/sysv/linux/s390/s390-64/sys/ucontext.h index 7402199..336178e 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-64/sys/ucontext.h +++ b/sysdeps/unix/sysv/linux/s390/s390-64/sys/ucontext.h @@ -34,7 +34,7 @@ typedef struct { unsigned long mask; unsigned long addr; -} __psw_t __attribute__ ((aligned(8))); +} __attribute__ ((aligned(8))) __psw_t; /* Type for a general-purpose register. */ typedef unsigned long greg_t; diff --git a/timezone/africa b/timezone/africa index 80b29d3..e8223f7 100644 --- a/timezone/africa +++ b/timezone/africa @@ -1,4 +1,4 @@ -# @(#)africa 7.35 +# @(#)africa 7.36 # This data is by no means authoritative; if you think you know better, # go ahead and edit the file (and please send any changes to @@ -10,7 +10,7 @@ # Thomas G. Shanks, The International Atlas (5th edition), # San Diego: ACS Publications, Inc. (1999). # -# Gwillim Law <Gwil_Law@bridge-point.com> writes that a good source +# Gwillim Law writes that a good source # for recent time zone data is the International Air Transport # Association's Standard Schedules Information Manual (IATA SSIM), # published semiannually. Law sent in several helpful summaries @@ -55,7 +55,7 @@ # I invented the following abbreviations; corrections are welcome! # 2:00 WAST West Africa Summer Time # 2:30 BEAT British East Africa Time (no longer used) -# 2:45 BEAUT British East Africa Unified Time (no longer used) +# 2:44:45 BEAUT British East Africa Unified Time (no longer used) # 3:00 CAST Central Africa Summer Time (no longer used) # 3:00 SAST South Africa Summer Time (no longer used) # 3:00 EAT East Africa Time @@ -101,7 +101,7 @@ Zone Africa/Algiers 0:12:12 - LMT 1891 Mar 15 0:01 # Angola # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Africa/Luanda 0:52:56 - LMT 1892 - 0:52:04 - LMT 1911 May 26 # Luanda Mean Time? + 0:52:04 - AOT 1911 May 26 # Angola Time 1:00 - WAT # Benin @@ -276,7 +276,7 @@ Zone Africa/Bissau -1:02:20 - LMT 1911 May 26 Zone Africa/Nairobi 2:27:16 - LMT 1928 Jul 3:00 - EAT 1930 2:30 - BEAT 1940 - 2:45 - BEAUT 1960 + 2:44:45 - BEAUT 1960 3:00 - EAT # Lesotho @@ -287,9 +287,9 @@ Zone Africa/Maseru 1:50:00 - LMT 1903 Mar 2:00 - SAST # Liberia -# From Paul Eggert <eggert@twinsun.com> (1993-11-18): +# From Paul Eggert <eggert@twinsun.com> (2001-07-17): # In 1972 Liberia was the last country to switch -# from a UTC offset that was not a multiple of 15 minutes. +# from a UTC offset that was not a multiple of 15 or 20 minutes. # Howse reports that it was in honor of their president's birthday. # Shanks reports the date as May 1, whereas Howse reports Jan; go with Shanks. # For Liberia before 1972, Shanks reports -0:44, whereas Howse and Whitman @@ -548,7 +548,7 @@ Zone Africa/Mbabane 2:04:24 - LMT 1903 Mar # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Africa/Dar_es_Salaam 2:37:08 - LMT 1931 3:00 - EAT 1948 - 2:45 - BEAUT 1961 + 2:44:45 - BEAUT 1961 3:00 - EAT # Togo @@ -591,7 +591,7 @@ Zone Africa/Tunis 0:40:44 - LMT 1881 May 12 Zone Africa/Kampala 2:09:40 - LMT 1928 Jul 3:00 - EAT 1930 2:30 - BEAT 1948 - 2:45 - BEAUT 1957 + 2:44:45 - BEAUT 1957 3:00 - EAT # Zambia diff --git a/timezone/asia b/timezone/asia index 2f57467..0d58ca9 100644 --- a/timezone/asia +++ b/timezone/asia @@ -1,4 +1,4 @@ -# @(#)asia 7.64 +# @(#)asia 7.65 # This data is by no means authoritative; if you think you know better, # go ahead and edit the file (and please send any changes to @@ -10,7 +10,7 @@ # Thomas G. Shanks, The International Atlas (5th edition), # San Diego: ACS Publications, Inc. (1999). # -# Gwillim Law <Gwil_Law@bridge-point.com> writes that a good source +# Gwillim Law writes that a good source # for recent time zone data is the International Air Transport # Association's Standard Schedules Information Manual (IATA SSIM), # published semiannually. Law sent in several helpful summaries @@ -210,7 +210,7 @@ Zone Asia/Harbin 8:26:44 - LMT 1928 # or Haerbin Zone Asia/Shanghai 8:05:52 - LMT 1928 8:00 Shang C%sT 1949 8:00 PRC C%sT -Zone Asia/Chungking 7:06:20 - LMT 1928 # or Chongqing +Zone Asia/Chongqing 7:06:20 - LMT 1928 # or Chungking 7:00 - CHUT 1980 May # Chungking Time 8:00 PRC C%sT Zone Asia/Urumqi 5:50:20 - LMT 1928 # or Urumchi @@ -263,7 +263,7 @@ Rule Taiwan 1974 1975 - Oct 1 0:00 0 S Rule Taiwan 1980 only - Jun 30 0:00 1:00 D Rule Taiwan 1980 only - Sep 30 0:00 0 S # Zone NAME GMTOFF RULES FORMAT [UNTIL] -Zone Asia/Taipei 8:06:00 - LMT 1896 +Zone Asia/Taipei 8:06:00 - LMT 1896 # or Taibei or T'ai-pei 8:00 Taiwan C%sT # Macao (Macau, Aomen) @@ -932,9 +932,11 @@ Zone Asia/Beirut 2:22:00 - LMT 1880 # Malaysia # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S -Rule NBorneo 1935 1941 - Sep 14 0:00 0:20 TS +Rule NBorneo 1935 1941 - Sep 14 0:00 0:20 TS # one-Third Summer Rule NBorneo 1935 1941 - Dec 14 0:00 0 - +# # Zone NAME GMTOFF RULES FORMAT [UNTIL] +# peninsular Malaysia Zone Asia/Kuala_Lumpur 6:46:48 - LMT 1880 6:55:24 - SMT 1905 Jun # Singapore Mean Time 7:00 - MALT 1933 # Malaya Time @@ -943,6 +945,7 @@ Zone Asia/Kuala_Lumpur 6:46:48 - LMT 1880 7:20 - MALT 1950 7:30 - MALT 1982 May 8:00 - MYT # Malaysia Time +# Sabah & Sarawak Zone Asia/Kuching 7:21:20 - LMT 1926 Mar 7:30 - BORT 1933 # Borneo Time 8:00 NBorneo BOR%sT 1942 @@ -1022,11 +1025,10 @@ Zone Asia/Ulaanbaatar 7:07:32 - LMT 1905 Aug 8:00 Mongol ULA%sT # Choibalsan, a.k.a. Bajan Tuemen, Bajan Tumen, Chojbalsan, # Choybalsan, Sanbejse, Tchoibalsan -# We're still not sure about this data, so we'll omit it for now. -#Zone Asia/Choibalsan 7:38:00 - LMT 1905 Aug -# 7:00 - ULAT 1978 -# 8:00 Mongol ULA%sT 1983 Apr -# 9:00 Mongol CHO%sT # Choibalsan Time +Zone Asia/Choibalsan 7:38:00 - LMT 1905 Aug + 7:00 - ULAT 1978 + 8:00 - ULAT 1983 Apr + 9:00 Mongol CHO%sT # Choibalsan Time # Nepal # Zone NAME GMTOFF RULES FORMAT [UNTIL] diff --git a/timezone/australasia b/timezone/australasia index fe01a3e..c30ea37 100644 --- a/timezone/australasia +++ b/timezone/australasia @@ -1,4 +1,4 @@ -# @(#)australasia 7.64 +# @(#)australasia 7.65 # This file also includes Pacific islands. # Notes are at the end of this file @@ -7,6 +7,8 @@ # Australia +# Please see the notes below for the controversy about "EST" versus "AEST" etc. + # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S Rule Aus 1917 only - Jan 1 0:01 1:00 - Rule Aus 1917 only - Mar 25 2:00 0 - @@ -359,7 +361,7 @@ Zone Pacific/Palau 8:57:56 - LMT 1901 # Koror # Papua New Guinea # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Pacific/Port_Moresby 9:48:40 - LMT 1880 - 9:48:40 - PMMT 1895 # Port Moresby Mean Time + 9:48:32 - PMMT 1895 # Port Moresby Mean Time 10:00 - PGT # Papua New Guinea Time # Pitcairn @@ -399,6 +401,8 @@ Rule Tonga 1999 only - Oct 7 2:00s 1:00 S Rule Tonga 2000 only - Mar 19 2:00s 0 - Rule Tonga 2000 only - Nov 4 2:00s 1:00 S Rule Tonga 2001 only - Jan 27 2:00s 0 - +Rule Tonga 2001 only - Nov 25 2:00s 1:00 S +Rule Tonga 2002 only - Mar 3 2:00s 0 - # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Pacific/Tongatapu 12:19:20 - LMT 1901 12:20 - TOT 1941 # Tonga Time @@ -473,7 +477,7 @@ Zone Pacific/Wallis 12:15:20 - LMT 1901 # Thomas G. Shanks, The International Atlas (5th edition), # San Diego: ACS Publications, Inc. (1999). # -# Gwillim Law <Gwil_Law@bridge-point.com> writes that a good source +# Gwillim Law writes that a good source # for recent time zone data is the International Air Transport # Association's Standard Schedules Information Manual (IATA SSIM), # published semiannually. Law sent in several helpful summaries @@ -535,12 +539,93 @@ Zone Pacific/Wallis 12:15:20 - LMT 1901 # prefixed by the word `Australian' when referring to local times; # time announcements on that service, naturally enough, are made in UTC. -# From Arthur David Olson (March 8 1992): +# From Arthur David Olson (1992-03-08): # Given the above, what's chosen for year-round use is: # CST for any place operating at a GMTOFF of 9:30 # WST for any place operating at a GMTOFF of 8:00 # EST for any place operating at a GMTOFF of 10:00 +# From Paul Eggert (2001-04-05), summarizing a long discussion about "EST" +# versus "AEST" etc.: +# +# I see the following points of dispute: +# +# * How important are unique time zone abbreviations? +# +# Here I tend to agree with the point (most recently made by Chris +# Newman) that unique abbreviations should not be essential for proper +# operation of software. We have other instances of ambiguity +# (e.g. "IST" denoting both "Israel Standard Time" and "Indian +# Standard Time"), and they are not likely to go away any time soon. +# In the old days, some software mistakenly relied on unique +# abbreviations, but this is becoming less true with time, and I don't +# think it's that important to cater to such software these days. +# +# On the other hand, there is another motivation for unambiguous +# abbreviations: it cuts down on human confusion. This is +# particularly true for Australia, where "EST" can mean one thing for +# time T and a different thing for time T plus 1 second. +# +# * Does the relevant legislation indicate which abbreviations should be used? +# +# Here I tend to think that things are a mess, just as they are in +# many other countries. We Americans are currently disagreeing about +# which abbreviation to use for the newly legislated Chamorro Standard +# Time, for example. +# +# Personally, I would prefer to use common practice; I would like to +# refer to legislation only for examples of common practice, or as a +# tiebreaker. +# +# * Do Australians more often use "Eastern Daylight Time" or "Eastern +# Summer Time"? Do they typically prefix the time zone names with +# the word "Australian"? +# +# My own impression is that both "Daylight Time" and "Summer Time" are +# common and are widely understood, but that "Summer Time" is more +# popular; and that the leading "A" is also common but is omitted more +# often than not. I just used AltaVista advanced search and got the +# following count of page hits: +# +# 1,103 "Eastern Summer Time" AND domain:au +# 971 "Australian Eastern Summer Time" AND domain:au +# 613 "Eastern Daylight Time" AND domain:au +# 127 "Australian Eastern Daylight Time" AND domain:au +# +# Here "Summer" seems quite a bit more popular than "Daylight", +# particularly when we know the time zone is Australian and not US, +# say. The "Australian" prefix seems to be popular for Eastern Summer +# Time, but unpopular for Eastern Daylight Time. +# +# For abbreviations, tools like AltaVista are less useful because of +# ambiguity. Many hits are not really time zones, unfortunately, and +# many hits denote US time zones and not Australian ones. But here +# are the hit counts anyway: +# +# 161,304 "EST" and domain:au +# 25,156 "EDT" and domain:au +# 18,263 "AEST" and domain:au +# 10,416 "AEDT" and domain:au +# +# 14,538 "CST" and domain:au +# 5,728 "CDT" and domain:au +# 176 "ACST" and domain:au +# 29 "ACDT" and domain:au +# +# 7,539 "WST" and domain:au +# 68 "AWST" and domain:au +# +# This data suggest that Australians tend to omit the "A" prefix in +# practice. The situation for "ST" versus "DT" is less clear, given +# the ambiguities involved. +# +# * How do Australians feel about the abbreviations in the tz database? +# +# If you just count Australians on this list, I count 2 in favor and 3 +# against. One of the "against" votes (David Keegel) counseled delay, +# saying that both AEST/AEDT and EST/EST are widely used and +# understood in Australia. + # From Paul Eggert (1995-12-19): # Shanks reports 2:00 for all autumn changes in Australia and New Zealand. # Mark Prior <mrp@itd.adelaide.edu.au> writes that his newspaper @@ -756,6 +841,28 @@ Zone Pacific/Wallis 12:15:20 - LMT 1901 # # The state of VICTORIA.. [ Courtesy of Vic. Dept of Premier + Cabinet ] # # [ Nov 1990 ] +# From Scott Harrington (2001-08-29): +# On KQED's "City Arts and Lectures" program last night I heard an +# interesting story about daylight savings time. Dr. John Heilbron was +# discussing his book "The Sun in the Church: Cathedrals as Solar +# Observatories"[1], and in particular the Shrine of Remembrance[2] located +# in Melbourne, Australia. +# +# Apparently the shrine's main purpose is a beam of sunlight which +# illuminates a special spot on the floor at the 11th hour of the 11th day +# of the 11th month (Remembrance Day) every year in memory of Australia's +# fallen WWI soldiers. And if you go there on Nov. 11, at 11am local time, +# you will indeed see the sunbeam illuminate the special spot at the +# expected time. +# +# However, that is only because of some special mirror contraption that had +# to be employed, since due to daylight savings time, the true solar time of +# the remembrance moment occurs one hour later (or earlier?). Perhaps +# someone with more information on this jury-rig can tell us more. +# +# [1] http://www.hup.harvard.edu/catalog/HEISUN.html +# [2] http://www.shrine.org.au + # New South Wales # From Arthur David Olson: @@ -1120,6 +1227,12 @@ Zone Pacific/Wallis 12:15:20 - LMT 1901 # From Rives McDow (2000-12-01): # Tonga is observing DST as of 2000-11-04 and will stop on 2001-01-27. +# From Rives McDow (2001-07-17): +# The Kingdom of Tonga will move to DST at 0200 local time on Sunday, +# November 25, 2001 and revert back to standard time at 0300 local +# time on Sunday, March 3, 2002. + + ############################################################################### # The International Date Line diff --git a/timezone/backward b/timezone/backward index 0bfa872..45ade4d 100644 --- a/timezone/backward +++ b/timezone/backward @@ -1,4 +1,4 @@ -# @(#)backward 7.20 +# @(#)backward 7.21 # This file provides links between current names for time zones # and their old names. Many names changed in late 1993. @@ -9,8 +9,9 @@ Link America/Indianapolis America/Fort_Wayne Link America/Indiana/Knox America/Knox_IN Link America/Rio_Branco America/Porto_Acre Link America/St_Thomas America/Virgin -Link Asia/Dhaka Asia/Dacca Link Asia/Ashgabat Asia/Ashkhabad +Link Asia/Chongqing Asia/Chungking +Link Asia/Dhaka Asia/Dacca Link Asia/Jerusalem Asia/Tel_Aviv Link Asia/Thimphu Asia/Thimbu Link Asia/Ulaanbaatar Asia/Ulan_Bator @@ -43,9 +44,9 @@ Link Pacific/Easter Chile/EasterIsland Link America/Havana Cuba Link Africa/Cairo Egypt Link Europe/Dublin Eire +Link Europe/Chisinau Europe/Tiraspol Link Europe/London GB Link Europe/London GB-Eire -Link Europe/Chisinau Europe/Tiraspol Link Etc/GMT+0 GMT+0 Link Etc/GMT-0 GMT-0 Link Etc/GMT0 GMT0 @@ -65,9 +66,9 @@ Link America/Denver Navajo Link Pacific/Auckland NZ Link Pacific/Chatham NZ-CHAT Link Pacific/Pago_Pago Pacific/Samoa -Link Asia/Shanghai PRC Link Europe/Warsaw Poland Link Europe/Lisbon Portugal +Link Asia/Shanghai PRC Link Asia/Taipei ROC Link Asia/Seoul ROK Link Asia/Singapore Singapore diff --git a/timezone/europe b/timezone/europe index b99053d..b87e315 100644 --- a/timezone/europe +++ b/timezone/europe @@ -1,4 +1,4 @@ -# @(#)europe 7.79 +# @(#)europe 7.80 # This data is by no means authoritative; if you think you know better, # go ahead and edit the file (and please send any changes to @@ -9,7 +9,7 @@ # Thomas G. Shanks, The International Atlas (5th edition), # San Diego: ACS Publications, Inc. (1999). # -# Gwillim Law <Gwil_Law@bridge-point.com> writes that a good source +# Gwillim Law writes that a good source # for recent time zone data is the International Air Transport # Association's Standard Schedules Information Manual (IATA SSIM), # published semiannually. Law sent in several helpful summaries @@ -206,7 +206,7 @@ # (Lords Hansard 11 June 1997 columns 964 to 976) # </a>. -# From Paul Eggert (2000-02-17): +# From Paul Eggert (2001-07-18): # # For lack of other data, we'll follow Shanks for Eire in 1940-1948. # @@ -234,6 +234,12 @@ # # # Whitman says Dublin Mean Time was -0:25:21, which is more precise than Shanks. +# Perhaps this was Dunsink Observatory Time, as Dunsink Observatory +# (8 km NW of Dublin's center) seemingly was to Dublin as Greenwich was +# to London. For example: +# +# "Timeball on the ballast office is down. Dunsink time." +# -- James Joyce, Ulysses # From Paul Eggert (1999-03-28): # Clive Feather (<news:859845706.26043.0@office.demon.net>, 1997-03-31) @@ -374,14 +380,14 @@ Zone Europe/London -0:01:15 - LMT 1847 Dec 1 0:00 GB-Eire %s 1996 0:00 EU GMT/BST Zone Europe/Belfast -0:23:40 - LMT 1880 Aug 2 - -0:25:21 - DMT 1916 May 21 2:00 # Dublin MT + -0:25:21 - DMT 1916 May 21 2:00 # Dublin/Dunsink MT -0:25:21 1:00 IST 1916 Oct 1 2:00s # Irish Summer Time 0:00 GB-Eire %s 1968 Oct 27 1:00 - BST 1971 Oct 31 2:00u 0:00 GB-Eire %s 1996 0:00 EU GMT/BST -Zone Europe/Dublin -0:25:21 - LMT 1880 Aug 2 - -0:25:21 - DMT 1916 May 21 2:00 # Dublin MT +Zone Europe/Dublin -0:25:00 - LMT 1880 Aug 2 + -0:25:21 - DMT 1916 May 21 2:00 -0:25:21 1:00 IST 1916 Oct 1 2:00s 0:00 GB-Eire %s 1921 Dec 6 # independence 0:00 GB-Eire GMT/IST 1940 Feb 25 2:00 @@ -728,12 +734,36 @@ Zone Atlantic/Faeroe -0:27:04 - LMT 1908 Jan 11 # Torshavn # used C-Eur rules after 1980, but IATA SSIM (1991/1996) says they use EU # rules since at least 1991. Assume EU rules since 1980. +# From Gwillin Law (2001-06-06), citing +# <http://www.statkart.no/efs/efshefter/2001/efs5-2001.pdf> (2001-03-15), +# and with translations corrected by Steffen Thorsen: +# +# Greenland has four local times, and the relation to UTC +# is according to the following time line: +# +# The military zone near Thule UTC-4 +# Standard Greenland time UTC-3 +# Scoresbysund UTC-1 +# Danmarkshavn UTC +# +# In the military area near Thule and in Danmarkshavn DST will not be +# introduced. + +# From Paul Eggert (2001-09-29): +# The 1997 CIA map shows Danmarkshavn on GMT; the 1995 map as like Godthab. +# For lack of better info, assume they were like Godthab before 1996. +# The 2000 IATA shows Thule as observing DST, so assume they stopped in 2001. + # # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S -Rule Thule 1993 max - Apr Sun>=1 2:00 1:00 D -Rule Thule 1993 max - Oct lastSun 2:00 0 S +Rule Thule 1993 2000 - Apr Sun>=1 2:00 1:00 D +Rule Thule 1993 2000 - Oct lastSun 2:00 0 S # # Zone NAME GMTOFF RULES FORMAT [UNTIL] +Zone America/Danmarkshavn -1:14:40 - LMT 1916 Jul 28 + -3:00 - WGT 1980 Apr 6 2:00 + -3:00 EU WG%sT 1996 + 0:00 - GMT Zone America/Scoresbysund -1:29:00 - LMT 1916 Jul 28 # Ittoqqortoormiit -2:00 - CGT 1980 Apr 6 2:00 -2:00 C-Eur CG%sT 1981 Mar 29 @@ -1081,7 +1111,7 @@ Zone Atlantic/Reykjavik -1:27:24 - LMT 1837 # # From Paul Eggert (2001-03-06): # Sicily and Sardinia each had their own time zones from 1866 to 1893, -# called ``Palermo Time'' (+0053) and ``Cagliari Time'' (+0038). +# called Palermo Time (+00:53:28) and Cagliari Time (+00:36:32). # During World War II, German-controlled Italy used German time. # But these events all occurred before the 1970 cutoff, # so record only the time in Rome. @@ -1442,7 +1472,7 @@ Rule Neth 1945 only - Sep 16 2:00s 0 - # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Europe/Amsterdam 0:19:32 - LMT 1835 0:19:32 Neth %s 1937 Jul 1 - 0:20 Neth NE%sT 1940 May 17 0:00 # Dutch Time + 0:20 Neth NE%sT 1940 May 16 0:00 # Dutch Time 1:00 C-Eur CE%sT 1945 Apr 2 2:00 1:00 Neth CE%sT 1977 1:00 EU CE%sT @@ -1659,14 +1689,14 @@ Zone Europe/Lisbon -0:36:32 - LMT 1884 1:00 EU CE%sT 1996 Mar 31 1:00u 0:00 EU WE%sT Zone Atlantic/Azores -1:42:40 - LMT 1884 # Ponta Delgada - -1:55 - HMT 1911 May 24 # Horta Mean Time + -1:54:32 - HMT 1911 May 24 # Horta Mean Time -2:00 Port AZO%sT 1966 Apr 3 2:00 # Azores Time -1:00 Port AZO%sT 1983 Sep 25 1:00s -1:00 W-Eur AZO%sT 1992 Sep 27 1:00s 0:00 EU WE%sT 1993 Mar 28 1:00u -1:00 EU AZO%sT Zone Atlantic/Madeira -1:07:36 - LMT 1884 # Funchal - -1:08 - FMT 1911 May 24 # Funchal Mean Time + -1:07:36 - FMT 1911 May 24 # Funchal Mean Time -1:00 Port MAD%sT 1966 Apr 3 2:00 # Madeira Time 0:00 Port WE%sT 1983 Sep 25 1:00s 0:00 EU WE%sT @@ -1707,6 +1737,12 @@ Zone Europe/Bucharest 1:44:24 - LMT 1891 Oct # are from Andrey A. Chernov. The rest is from Shanks, except we follow # Chernov's report that 1992 DST transitions were Sat 23:00, not Sun 02:00s. # +# From Stanislaw A. Kuzikowski <S.A.Kuz@iae.nsk.su> (1994-06-29): +# But now it is some months since Novosibirsk is 3 hours ahead of Moscow! +# I do not know why they have decided to make this change; +# as far as I remember it was done exactly during winter->summer switching +# so we (Novosibirsk) simply did not switch. +# # From Andrey A. Chernov <ache@nagual.ru> (1996-10-04): # `MSK' and `MSD' were born and used initially on Moscow computers with # Unix-like OSes by several developer groups (e.g. Demos group, Kiae group).... @@ -1725,12 +1761,44 @@ Zone Europe/Bucharest 1:44:24 - LMT 1891 Oct # the rest of Russia for two weeks--even soldiers stationed here began # enforcing curfew at the wrong time. # +# From Gwillim Law (2001-06-05): +# There's considerable evidence that Sakhalin Island used to be in +# UTC+11, and has changed to UTC+10, in this decade. I start with the +# SSIM, which listed Yuzhno-Sakhalinsk in zone RU10 along with Magadan +# until February 1997, and then in RU9 with Khabarovsk and Vladivostok +# since September 1997.... Although the Kuril Islands are +# administratively part of Sakhalin oblast', they appear to have +# remained on UTC+11 along with Magadan. +# # Zone NAME GMTOFF RULES FORMAT [UNTIL] +# +# Kaliningradskaya oblast'. Zone Europe/Kaliningrad 1:22:00 - LMT 1893 Apr 1:00 C-Eur CE%sT 1945 2:00 Poland CE%sT 1946 3:00 Russia MSK/MSD 1991 Mar 31 2:00s 2:00 Russia EE%sT +# +# From Oscar van Vlijmen (2001-08-25): [This region consists of] +# Respublika Adygeya, Arkhangel'skaya oblast', Astrakhanskaya oblast', +# Belgorodskaya oblast', Bryanskaya oblast', Vladimirskaya oblast', +# Volgogradskaya oblast', Vologodskaya oblast', Voronezhskaya oblast', +# Respublika Dagestan, Ivanovskaya oblast', Respublika Ingushetiya, +# Kabarbino-Balkarskaya Respublika, Respublika Kalmykiya, +# Kalyzhskaya oblast', Respublika Karachaevo-Cherkessiya, +# Respublika Kareliya, Kirovskaya oblast', Respublika Komi, +# Kostromskaya oblast', Krasnodarskij kraj, Kurskaya oblast', +# Leningradskaya oblast', Lipetskaya oblast', Respublika Marij El, +# Respublika Mordoviya, Moskva, Moskovskaya oblast', +# Murmanskaya oblast', Nenetskij avtonomnyj okrug, +# Nizhegorodskaya oblast', Novgorodskaya oblast', Orlovskaya oblast', +# Penzenskaya oblast', Pskovskaya oblast', Rostovskaya oblast', +# Ryazanskaya oblast', Sankt-Peterburg, Saratovskaya oblast', +# Respublika Severnaya Osetiya, Smolenskaya oblast', +# Stavropol'skij kraj, Tambovskaya oblast', Respublika Tatarstan, +# Tverskaya oblast', Tyl'skaya oblast', Ul'yanovskaya oblast', +# Chechenskaya Respublika, Chuvashskaya oblast', +# Yaroslavskaya oblast' Zone Europe/Moscow 2:30:20 - LMT 1880 2:30 - MMT 1916 Jul 3 # Moscow Mean Time 2:30:48 Russia %s 1919 Jul 1 2:00 @@ -1739,6 +1807,9 @@ Zone Europe/Moscow 2:30:20 - LMT 1880 3:00 Russia MSK/MSD 1991 Mar 31 2:00s 2:00 Russia EE%sT 1992 Jan 19 2:00s 3:00 Russia MSK/MSD +# +# From Oscar van Vlijmen (2001-08-25): [This region consists of] +# Samarskaya oblast', Udmyrtskaya respublika Zone Europe/Samara 3:20:36 - LMT 1919 Jul 1 2:00 3:00 - KUYT 1930 Jun 21 # Kuybyshev 4:00 Russia KUY%sT 1989 Mar 26 2:00s @@ -1746,59 +1817,115 @@ Zone Europe/Samara 3:20:36 - LMT 1919 Jul 1 2:00 2:00 Russia KUY%sT 1991 Sep 29 2:00s 3:00 - KUYT 1991 Oct 20 3:00 4:00 Russia SAM%sT # Samara Time +# +# From Oscar van Vlijmen (2001-08-25): [This region consists of] +# Respublika Bashkortostan, Komi-Permyatskij avtonomnyj okrug, +# Kurganskaya oblast', Orenburgskaya oblast', Permskaya oblast', +# Sverdlovskaya oblast', Tyumenskaya oblast', +# Khanty-Manskijskij avtonomnyj okrug, Chelyabinskaya oblast', +# Yamalo-Nenetskij avtonomnyj okrug. Zone Asia/Yekaterinburg 4:02:24 - LMT 1919 Jul 15 4:00 4:00 - SVET 1930 Jun 21 # Sverdlovsk Time 5:00 Russia SVE%sT 1991 Mar 31 2:00s 4:00 Russia SVE%sT 1992 Jan 19 2:00s 5:00 Russia YEK%sT # Yekaterinburg Time +# +# From Oscar van Vlijmen (2001-08-25): [This region consists of] +# Respublika Altaj, Altajskij kraj, Omskaya oblast'. Zone Asia/Omsk 4:53:36 - LMT 1919 Nov 14 5:00 - OMST 1930 Jun 21 # Omsk TIme 6:00 Russia OMS%sT 1991 Mar 31 2:00s 5:00 Russia OMS%sT 1992 Jan 19 2:00s 6:00 Russia OMS%sT -# From Stanislaw A. Kuzikowski <S.A.Kuz@iae.nsk.su> (1994-06-29): -# But now it is some months since Novosibirsk is 3 hours ahead of Moscow! -# I do not know why they have decided to make this change; -# as far as I remember it was done exactly during winter->summer switching -# so we (Novosibirsk) simply did not switch. +# +# Novosibirskaya oblast'. Zone Asia/Novosibirsk 5:31:40 - LMT 1919 Dec 14 6:00 6:00 - NOVT 1930 Jun 21 # Novosibirsk Time 7:00 Russia NOV%sT 1991 Mar 31 2:00s 6:00 Russia NOV%sT 1992 Jan 19 2:00s 7:00 Russia NOV%sT 1993 May 23 # says Shanks 6:00 Russia NOV%sT +# +# From Oscar van Vlijmen (2001-08-25): [This region consists of] +# Kemerovskaya oblast', Krasnoyarskij kraj, +# Tajmyrskij (Dolgano-Nenetskij) avtonomnyj okrug, Tomskaya oblast', +# Respublika Tuva, Respublika Khakasiya, Evenkijskij avtonomnyj okrug. Zone Asia/Krasnoyarsk 6:11:20 - LMT 1920 Jan 6 6:00 - KRAT 1930 Jun 21 # Krasnoyarsk Time 7:00 Russia KRA%sT 1991 Mar 31 2:00s 6:00 Russia KRA%sT 1992 Jan 19 2:00s 7:00 Russia KRA%sT +# +# From Oscar van Vlijmen (2001-08-25): [This region consists of] +# Respublika Buryatiya, Irkutskaya oblast', +# Ust'-Ordynskij Buryatskij avtonomnyj okrug. Zone Asia/Irkutsk 6:57:20 - LMT 1880 6:57:20 - IMT 1920 Jan 25 # Irkutsk Mean Time 7:00 - IRKT 1930 Jun 21 # Irkutsk Time 8:00 Russia IRK%sT 1991 Mar 31 2:00s 7:00 Russia IRK%sT 1992 Jan 19 2:00s 8:00 Russia IRK%sT +# +# From Oscar van Vlijmen (2001-08-25): [This region consists of] +# Aginskij Buryatskij avtonomnyj okrug, Amurskaya oblast', +# [parts of] Respublika Sakha (Yakutiya), Chitinskaya oblast'. +# +# From Alan Pritchard (2001-08-24): [The Sakha districts are:] +# Aldansky, Amginsky, Anabarsky, Bulunsky, Churapchinsky, +# Eveno-Bytantaisky, Gorny, Khangalassky, Kobyaisky, Lensky, +# Megino-Kangalassky, Mirninsky, Namsky, Nyurbinsky, Olenyoksky, +# Olyokminsky, Srednekolymsky, Suntarsky, Tattinsky, Ust-Aldansky, +# Verkhnekolymsky, Verkhnevilyuisky, Vilyuisky, Zhigansky. Zone Asia/Yakutsk 8:38:40 - LMT 1919 Dec 15 8:00 - YAKT 1930 Jun 21 # Yakutsk Time 9:00 Russia YAK%sT 1991 Mar 31 2:00s 8:00 Russia YAK%sT 1992 Jan 19 2:00s 9:00 Russia YAK%sT +# +# From Oscar van Vlijmen (2001-08-25): [This region consists of] +# Evrejskaya avtonomnaya oblast', Khabarovskij kraj, Primorskij kraj, +# [parts of] Respublika Sakha (Yakutiya). +# +# From Alan Pritchard (2001-08-24): [The Sakha districts are:] +# Tomponsky, Ust-Maisky, Ust-Yansky, Verkhoyansky. Zone Asia/Vladivostok 8:47:44 - LMT 1922 Nov 15 9:00 - VLAT 1930 Jun 21 # Vladivostok Time 10:00 Russia VLA%sT 1991 Mar 31 2:00s 9:00 Russia VLA%sST 1992 Jan 19 2:00s 10:00 Russia VLA%sT +# +# Sakhalinskaya oblast'. +# The Zone name should be Yuzhno-Sakhalinsk, but that's too long. +Zone Asia/Sakhalin 9:30:48 - LMT 1905 Aug 23 + 9:00 - CJT 1938 + 9:00 - JST 1945 Aug 25 + 11:00 Russia SAK%sT 1991 Mar 31 2:00s # Sakhalin T. + 10:00 Russia SAK%sT 1992 Jan 19 2:00s + 11:00 Russia SAK%sT 1997 Mar lastSun 2:00s + 10:00 Russia SAK%sT +# +# From Oscar van Vlijmen (2001-08-25): [This region consists of] +# Magadanskaya oblast', Respublika Sakha (Yakutiya). +# +# From Alan Pritchard (2001-08-24): [The Sakha districts are:] +# Abyisky, Allaikhovsky, Momsky, Nizhnekolymsky, Oimyakonsky. Zone Asia/Magadan 10:03:12 - LMT 1924 May 2 10:00 - MAGT 1930 Jun 21 # Magadan Time 11:00 Russia MAG%sT 1991 Mar 31 2:00s 10:00 Russia MAG%sT 1992 Jan 19 2:00s 11:00 Russia MAG%sT -# This name should be Asia/Petropavlovsk-Kamchatski, but that's too long. +# +# From Oscar van Vlijmen (2001-08-25): [This region consists of] +# Kamchatskaya oblast', Koryakskij avtonomnyj okrug. +# +# The Zone name should be Asia/Petropavlovsk-Kamchatski, but that's too long. Zone Asia/Kamchatka 10:34:36 - LMT 1922 Nov 10 11:00 - PETT 1930 Jun 21 # P-K Time 12:00 Russia PET%sT 1991 Mar 31 2:00s 11:00 Russia PET%sT 1992 Jan 19 2:00s 12:00 Russia PET%sT +# +# Chukotskij avtonomnyj okrug Zone Asia/Anadyr 11:49:56 - LMT 1924 May 2 12:00 - ANAT 1930 Jun 21 # Anadyr Time 13:00 Russia ANA%sT 1982 Apr 1 0:00s diff --git a/timezone/leapseconds b/timezone/leapseconds index f730e48..495eb81 100644 --- a/timezone/leapseconds +++ b/timezone/leapseconds @@ -1,4 +1,4 @@ -# @(#)leapseconds 7.13 +# @(#)leapseconds 7.14 # Allowance for leapseconds added to each timezone file. @@ -43,8 +43,9 @@ Leap 1994 Jun 30 23:59:60 + S Leap 1995 Dec 31 23:59:60 + S Leap 1997 Jun 30 23:59:60 + S Leap 1998 Dec 31 23:59:60 + S -# INTERNATIONAL EARTH ROTATION SERVICE (IERS) -# SERVICE INTERNATIONAL DE LA ROTATION TERRESTRE + +# INTERNATIONAL EARTH ROTATION SERVICE (IERS) +# SERVICE INTERNATIONAL DE LA ROTATION TERRESTRE # # SERVICE DE LA ROTATION TERRESTRE # OBSERVATOIRE DE PARIS @@ -53,12 +54,26 @@ Leap 1998 Dec 31 23:59:60 + S # FAX : 33 (0) 1 40 51 22 91 # Internet : iers@obspm.fr # -# Paris, 11 January 2001 +# Paris, 25 June 2001 +# +# Bulletin C 22 +# +# To authorities responsible +# for the measurement and +# distribution of time +# +# INFORMATION ON UTC - TAI # -# Bulletin C 21 +# NO positive leap second will be introduced at the end of December 2001. +# The difference between UTC and the International Atomic Time TAI is : # -# To authorities responsible for the measurement and distribution of time +# from 1999 January 1, 0h UTC, until further notice : UTC-TAI = -32 s # -# INFORMATION ON UTC - TAI +# Leap seconds can be introduced in UTC at the end of the months of December +# or June, depending on the evolution of UT1-TAI. Bulletin C is mailed every +# six months, either to announce a time step in UTC, or to confirm that there +# will be no time step at the next possible date. # -# NO positive leap second will be introduced at the end of June 2001. +# Daniel GAMBIS +# Director +# Earth Orientation Center of IERS diff --git a/timezone/northamerica b/timezone/northamerica index 1b1447e..6821e99 100644 --- a/timezone/northamerica +++ b/timezone/northamerica @@ -1,4 +1,4 @@ -# @(#)northamerica 7.59 +# @(#)northamerica 7.60 # also includes Central America and the Caribbean # This data is by no means authoritative; if you think you know better, @@ -186,7 +186,7 @@ Rule US 1987 max - Apr Sun>=1 2:00 1:00 D # See the file "australasia". -# US Eastern time, represented by New York +# US eastern time, represented by New York # Connecticut, Delaware, District of Columbia, most of Florida, # Georgia, far southeastern Indiana, eastern Kentucky, Maine, @@ -208,7 +208,7 @@ Zone America/New_York -4:56:02 - LMT 1883 Nov 18 12:00 -5:00 NYC E%sT 1967 -5:00 US E%sT -# US Central time, represented by Chicago +# US central time, represented by Chicago # Alabama, Arkansas, Florida panhandle, Illinois, western Indiana # corners, Iowa, most of Kansas, western Kentucky, Louisiana, @@ -232,11 +232,16 @@ Zone America/Chicago -5:50:36 - LMT 1883 Nov 18 12:00 -6:00 US C%sT 1946 -6:00 Chicago C%sT 1967 -6:00 US C%sT +# Oliver County, ND switched from mountain to central time on 1992-10-25. +Zone America/North_Dakota/Center -6:45:12 - LMT 1883 Nov 18 12:00 + -7:00 US M%sT 1992 Oct 25 02:00 + -6:00 US C%sT -# US Mountain time, represented by Denver +# US mountain time, represented by Denver # # Colorado, southern Idaho, far western Kansas, Montana, western -# Nebraska, New Mexico, southwestern North Dakota, far eastern Oregon, +# Nebraska, Nevada border (Jackpot, Owyhee, and Mountain City), +# New Mexico, southwestern North Dakota, far eastern Oregon, # western South Dakota, far western Texas (El Paso County, Hudspeth County, # and Pine Springs and Nickel Creek in Culberson County), Utah, Wyoming # @@ -256,7 +261,7 @@ Zone America/Denver -6:59:56 - LMT 1883 Nov 18 12:00 # US Pacific time, represented by Los Angeles # -# California, northern Idaho, Nevada, most of Oregon, and Washington +# California, northern Idaho, most of Nevada, most of Oregon, and Washington # # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER Rule CA 1948 only - Mar 14 2:00 1:00 D @@ -511,6 +516,13 @@ Link America/Louisville America/Kentucky/Louisville # Wayne County (central Kentucky) is switching from Central (-0600) to Eastern # (-0500) time. They won't "fall back" this year. See Sara Shipley, # The difference an hour makes, Nando Times (2000-08-29 15:33 -0400). +# +# From Paul Eggert (2001-07-16): +# The final rule was published in the +# <a href="http://frwebgate.access.gpo.gov/cgi-bin/getdoc.cgi?dbname=2000_register&docid=fr17au00-22"> +# Federal Register 65, 160 (2000-08-17), page 50154-50158. +# </a> +# Zone America/Kentucky/Monticello -5:39:24 - LMT 1883 Nov 18 12:00 -6:00 US C%sT 1946 -6:00 - CST 1968 @@ -526,13 +538,20 @@ Zone America/Kentucky/Monticello -5:39:24 - LMT 1883 Nov 18 12:00 # Oliver County, ND (from MST to CST) ... 1992-10 # West Wendover, NV (from PST TO MST) ... 1999-10 # Wayne County, KY (from CST to EST) ... 2000-10 -# There is another change in the offing; Mercer County, ND is looking -# to change from MT to CT. It is possible that two other ND counties -# (Sioux and Morton) will look to change also. If made, the earliest -# a change would be effective is October 2001. # -# From Paul Eggert (2000-10-02): -# FIXME: I haven't yet had time to incorporate all the above changes. +# From Paul Eggert (2001-07-17): +# We don't know where the line used to be within Kearny County, KS, +# so omit that change for now. +# See America/Indiana/Knox for the Starke County, IN change. +# See America/North_Dakota/Center for the Oliver County, ND change. +# West Wendover, NV officially switched from Pacific to mountain time on +# 1999-10-31. See the +# <a href="http://frwebgate.access.gpo.gov/cgi-bin/getdoc.cgi?dbname=1999_register&docid=fr21oc99-15"> +# Federal Register 64, 203 (1999-10-21), page 56705-56707. +# </a> +# However, the Federal Register says that West Wendover already operated +# on mountain time, and the rule merely made this official; +# hence a separate tz entry is not needed. # Michigan # @@ -618,7 +637,7 @@ Link Pacific/Honolulu HST # Thomas G. Shanks, The International Atlas (5th edition), # San Diego: ACS Publications, Inc. (1999). # -# Gwillim Law <Gwil_Law@bridge-point.com> writes that a good source +# Gwillim Law writes that a good source # for recent time zone data is the International Air Transport # Association's Standard Schedules Information Manual (IATA SSIM), # published semiannually. Law sent in several helpful summaries @@ -1077,9 +1096,9 @@ Zone America/Dawson_Creek -8:00:56 - LMT 1884 # From Paul Eggert (1999-09-20): # <a href="http://www.nunavut.com/basicfacts/english/basicfacts_1territory.html"> # Basic Facts: The New Territory -# </a> (1999) reports that Pangnirtung operates on Eastern time, +# </a> (1999) reports that Pangnirtung operates on eastern time, # and that Coral Harbour does not observe DST. We don't know when -# Pangnirtung switched to Eastern time; we'll guess 1995. +# Pangnirtung switched to eastern time; we'll guess 1995. # We'll ignore the claim about Coral Harbour for now, # since we have no further info. @@ -1334,6 +1353,15 @@ Zone America/Dawson -9:17:40 - LMT 1900 Aug 20 # References: "Diario de Monterrey" <www.diariodemonterrey.com/index.asp> # Palabra <http://palabra.infosel.com/010331/primera/ppri3101.pdf> (2001-03-31) +# From Reuters (2001-09-04): +# Mexico's Supreme Court on Tuesday declared that daylight savings was +# unconstitutional in Mexico City, creating the possibility the +# capital will be in a different time zone from the rest of the nation +# next year.... The Supreme Court's ruling takes effect at 2:00 +# a.m. (0800 GMT) on Sept. 30, when Mexico is scheduled to revert to +# standard time. "This is so residents of the Federal District are not +# subject to unexpected time changes," a statement from the court said. + # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S Rule Mexico 1939 only - Feb 5 0:00 1:00 D Rule Mexico 1939 only - Jun 25 0:00 0 S @@ -1370,7 +1398,8 @@ Zone America/Mexico_City -6:36:36 - LMT 1922 Jan 1 0:23:24 -7:00 - MST 1931 May 1 23:00 -6:00 - CST 1931 Oct -7:00 - MST 1932 Apr 1 - -6:00 Mexico C%sT + -6:00 Mexico C%sT 2001 Sep 30 02:00 + -6:00 - CST # Chihuahua Zone America/Chihuahua -7:04:20 - LMT 1921 Dec 31 23:55:40 -7:00 - MST 1927 Jun 10 23:00 @@ -1671,7 +1700,7 @@ Zone America/Jamaica -5:07:12 - LMT 1890 # Kingston # Martinique # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone America/Martinique -4:04:20 - LMT 1890 # Fort-de-France - -4:04 - FFMT 1911 May # Fort-de-France MT + -4:04:20 - FFMT 1911 May # Fort-de-France MT -4:00 - AST 1980 Apr 6 -4:00 1:00 ADT 1980 Sep 28 -4:00 - AST @@ -1697,7 +1726,7 @@ Rule Nic 1992 only - Jan 1 4:00 1:00 D Rule Nic 1992 only - Sep 24 0:00 0 S # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone America/Managua -5:45:08 - LMT 1890 - -5:45 - MMT 1934 Jun 23 # Managua Mean Time + -5:45:12 - MMT 1934 Jun 23 # Managua Mean Time? -6:00 - CST 1973 May -5:00 - EST 1975 Feb 16 -6:00 Nic C%sT 1993 Jan 1 4:00 @@ -1707,7 +1736,7 @@ Zone America/Managua -5:45:08 - LMT 1890 # Panama # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone America/Panama -5:18:08 - LMT 1890 - -5:20 - PMT 1908 Apr 22 # Panama Mean Time + -5:19:36 - CMT 1908 Apr 22 # Colon Mean Time -5:00 - EST # Puerto Rico @@ -1726,7 +1755,7 @@ Zone America/St_Kitts -4:10:52 - LMT 1912 Mar 2 # Basseterre # St Lucia # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone America/St_Lucia -4:04:00 - LMT 1890 # Castries - -4:04 - CMT 1912 # Castries Mean Time + -4:04:00 - CMT 1912 # Castries Mean Time -4:00 - AST # St Pierre and Miquelon diff --git a/timezone/southamerica b/timezone/southamerica index 5cd58a6..4e6743c 100644 --- a/timezone/southamerica +++ b/timezone/southamerica @@ -1,4 +1,4 @@ -# @(#)southamerica 7.41 +# @(#)southamerica 7.42 # This data is by no means authoritative; if you think you know better, # go ahead and edit the file (and please send any changes to @@ -9,7 +9,7 @@ # Thomas G. Shanks, The International Atlas (5th edition), # San Diego: ACS Publications, Inc. (1999). # -# Gwillim Law <Gwil_Law@bridge-point.com> writes that a good source +# Gwillim Law writes that a good source # for recent time zone data is the International Air Transport # Association's Standard Schedules Information Manual (IATA SSIM), # published semiannually. Law sent in several helpful summaries @@ -125,6 +125,29 @@ Rule Arg 2000 only - Mar Sun>=1 0:00 0 - # de la Rua on March 2, 2000, because it would make people spend more energy # in the winter time, rather than less. The change took effect on March 3. # +# From Mariano Absatz (2001-06-06): +# one of the major newspapers here in Argentina said that the 1999 +# Timezone Law (which never was effectively applied) will (would?) be +# in effect.... The article is at +# http://ar.clarin.com/diario/2001-06-06/e-01701.htm +# ... The Law itself is "Ley No 25155", sanctioned on 1999-08-25, enacted +# 1999-09-17, and published 1999-09-21. The official publication is at: +# http://www.boletin.jus.gov.ar/BON/Primera/1999/09-Septiembre/21/PDF/BO21-09-99LEG.PDF +# Regretfully, you have to subscribe (and pay) for the on-line version.... +# +# (2001-06-12): +# the timezone for Argentina will not change next Sunday. +# Apparently it will do so on Sunday 24th.... +# http://ar.clarin.com/diario/2001-06-12/s-03501.htm +# +# (2001-06-25): +# Last Friday (yes, the last working day before the date of the change), the +# Senate annulled the 1999 law that introduced the changes later postponed. +# http://www.clarin.com.ar/diario/2001-06-22/s-03601.htm +# It remains the vote of the Deputies..., but it will be the same.... +# This kind of things had always been done this way in Argentina. +# We are still -03:00 all year round in all of the country. +# # Zone NAME GMTOFF RULES FORMAT [UNTIL] # # Buenos Aires (BA), Capital Federal (CF), Santa Cruz (SC), @@ -206,7 +229,7 @@ Zone America/Aruba -4:40:24 - LMT 1912 Feb 12 # Oranjestad # Bolivia # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone America/La_Paz -4:32:36 - LMT 1890 - -4:32:36 - LPMT 1931 Oct 15 # La Paz Mean Time + -4:32:36 - CMT 1931 Oct 15 # Calamarca MT -4:32:36 1:00 BOST 1932 Mar 21 # Bolivia ST -4:00 - BOT # Bolivia Time @@ -382,8 +405,14 @@ Rule Brazil 2000 only - Feb 27 0:00 0 - # repeals DST in PE and RR, effective 2000-10-15 00:00. # Decree <a href="http://pcdsh01.on.br/Dec3632.jpg">3,632</a> (2000-10-17) # repeals DST in SE, AL, PB, RN, CE, PI and MA, effective 2000-10-22 00:00. +# Decree <a href="http://pcdsh01.on.br/figuras/HV3916.gif">3,916</a> +# (2001-09-13) reestablishes DST in AL, CE, MA, PB, PE, PI, RN, SE. +# +# The latest decree listed above says that the following states observe DST: +# AL, BA, CE, DF, ES, GO, MA, MG, MS, MT, +# PB, PE, PI, PR, RJ, RN, RS, SC, SE, SP, TO. # -# These give only one year's rules. After that, the rules are guesses +# For dates after mid-2002, the following rules are guesses # and are quite possibly wrong, but are more likely than no DST at all. Rule Brazil 2000 max - Oct Sun>=8 0:00 1:00 S Rule Brazil 2001 max - Feb Sun>=15 0:00 0 - @@ -409,14 +438,16 @@ Zone America/Fortaleza -2:34:00 - LMT 1914 -3:00 Brazil BR%sT 1990 Sep 17 -3:00 - BRT 1999 Sep 30 -3:00 Brazil BR%sT 2000 Oct 22 - -3:00 - BRT + -3:00 - BRT 2001 Sep 13 + -3:00 Brazil BR%sT # # Pernambuco (PE) (except Atlantic islands) Zone America/Recife -2:19:36 - LMT 1914 -3:00 Brazil BR%sT 1990 Sep 17 -3:00 - BRT 1999 Sep 30 -3:00 Brazil BR%sT 2000 Oct 15 - -3:00 - BRT + -3:00 - BRT 2001 Sep 13 + -3:00 Brazil BR%sT # # Tocantins (TO) Zone America/Araguaina -3:12:48 - LMT 1914 @@ -431,7 +462,8 @@ Zone America/Maceio -2:22:52 - LMT 1914 -3:00 Brazil BR%sT 1996 Sep 4 -3:00 - BRT 1999 Sep 30 -3:00 Brazil BR%sT 2000 Oct 22 - -3:00 - BRT + -3:00 - BRT 2001 Sep 13 + -3:00 Brazil BR%sT # # Bahia (BA), Goias (GO), Distrito Federal (DF), Minas Gerais (MG), # Espirito Santo (ES), Rio de Janeiro (RJ), Sao Paulo (SP), Parana (PR), @@ -441,7 +473,7 @@ Zone America/Sao_Paulo -3:06:28 - LMT 1914 -3:00 1:00 BRST 1964 -3:00 Brazil BR%sT # -# Mato Grosso, Mato Grosso do Sul +# Mato Grosso (MT), Mato Grosso do Sul (MS) Zone America/Cuiaba -3:44:20 - LMT 1914 -4:00 Brazil AM%sT # @@ -726,7 +758,7 @@ Rule Peru 1994 only - Jan 1 0:00 1:00 S Rule Peru 1994 only - Apr 1 0:00 0 - # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone America/Lima -5:08:12 - LMT 1890 - -5:09 - LMT 1908 Jul 28 # Lima Mean Time + -5:08:36 - LMT 1908 Jul 28 # Lima Mean Time? -5:00 Peru PE%sT # Peru Time # South Georgia @@ -811,6 +843,6 @@ Zone America/Montevideo -3:44:44 - LMT 1898 Jun 28 # Venezuela # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone America/Caracas -4:27:44 - LMT 1890 - -4:27:44 - CMT 1912 Feb 12 # Caracas Mean Time + -4:27:40 - CMT 1912 Feb 12 # Caracas Mean Time? -4:30 - VET 1965 # Venezuela Time -4:00 - VET diff --git a/timezone/zone.tab b/timezone/zone.tab index dfecc73..1070f9c 100644 --- a/timezone/zone.tab +++ b/timezone/zone.tab @@ -1,4 +1,4 @@ -# @(#)zone.tab 1.23 +# @(#)zone.tab 1.24 # # TZ zone descriptions # @@ -123,10 +123,10 @@ CK -2114-15946 Pacific/Rarotonga CL -3327-07040 America/Santiago most locations CL -2710-10927 Pacific/Easter Easter Island & Sala y Gomez CM +0403+00942 Africa/Douala -CN +4545+12641 Asia/Harbin north Manchuria -CN +3114+12128 Asia/Shanghai China coast -CN +2934+10635 Asia/Chungking China mountains -CN +4348+08735 Asia/Urumqi Tibet & Xinjiang +CN +3114+12128 Asia/Shanghai most eastern locations +CN +4545+12641 Asia/Harbin Heilongjiang +CN +2934+10635 Asia/Chongqing central China +CN +4348+08735 Asia/Urumqi Tibet & most of Xinjiang CN +3929+07559 Asia/Kashgar Eastern Turkestan CO +0436-07405 America/Bogota CR +0956-08405 America/Costa_Rica @@ -168,9 +168,10 @@ GE +4143+04449 Asia/Tbilisi GF +0456-05220 America/Cayenne GH +0533-00013 Africa/Accra GI +3608-00521 Europe/Gibraltar -GL +7030-02215 America/Scoresbysund east Greenland -GL +6411-05144 America/Godthab southwest Greenland -GL +7634-06847 America/Thule northwest Greenland +GL +6411-05144 America/Godthab most locations +GL +7646-01840 America/Danmarkshavn Danmarkshavn +GL +7030-02215 America/Scoresbysund Scoresbysund / Ittoqqortoormiit +GL +7634-06847 America/Thule Thule / Pituffik and environs GM +1328-01639 Africa/Banjul GN +0931-01343 Africa/Conakry GP +1614-06132 America/Guadeloupe @@ -239,7 +240,7 @@ ML +1446-00301 Africa/Timbuktu northeast Mali MM +1647+09610 Asia/Rangoon MN +4755+10653 Asia/Ulaanbaatar most locations MN +4801+09139 Asia/Hovd Bayan-Olgiy, Govi-Altai, Hovd, Uvs, Zavkhan -#MN +4804+11430 Asia/Choibalsan Dornod, Sukhbaatar (unsure about this) +MN +4804+11430 Asia/Choibalsan Dornod, Sukhbaatar MO +2214+11335 Asia/Macao MP +1512+14545 Pacific/Saipan MQ +1436-06105 America/Martinique @@ -305,7 +306,8 @@ RU +5601+09250 Asia/Krasnoyarsk Moscow+04 - Yenisei River RU +5216+10420 Asia/Irkutsk Moscow+05 - Lake Baikal RU +6200+12940 Asia/Yakutsk Moscow+06 - Lena River RU +4310+13156 Asia/Vladivostok Moscow+07 - Amur River -RU +5934+15048 Asia/Magadan Moscow+08 - Magadan & Sakhalin +RU +4658+14242 Asia/Sakhalin Moscow+07 - Sakhalin Island +RU +5934+15048 Asia/Magadan Moscow+08 - Magadan RU +5301+15839 Asia/Kamchatka Moscow+09 - Kamchatka RU +6445+17729 Asia/Anadyr Moscow+10 - Bering Sea RW -0157+03004 Africa/Kigali @@ -363,6 +365,7 @@ US +411745-0863730 America/Indiana/Knox Eastern Standard Time - Indiana - Starke US +384452-0850402 America/Indiana/Vevay Eastern Standard Time - Indiana - Switzerland County US +415100-0873900 America/Chicago Central Time US +450628-0873651 America/Menominee Central Time - Michigan - Wisconsin border +US +470659-1011757 America/North_Dakota/Center Central Time - North Dakota - Oliver County US +394421-1045903 America/Denver Mountain Time US +433649-1161209 America/Boise Mountain Time - south Idaho & east Oregon US +364708-1084111 America/Shiprock Mountain Time - Navajo |