00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #include "imath.hpp"
00027 #include "rmath.hpp"
00028
00029
00030
00031 #undef LINT_ARGS
00032 #define CXSC_INCLUDE
00033 #include <fi_lib.hpp>
00034
00035 extern "C" {
00036 #ifndef rfcth_included
00037 #define rfcth_included
00038 #include "r_fcth.h"
00039 #endif
00040 }
00041
00042 namespace cxsc {
00043
00044
00045 interval sqr (const interval &a) throw()
00046 {
00047 interval res;
00048 res= a*a;
00049 if (Inf(res)<0) Inf(res)=0;
00050 return res;
00051 }
00052
00053 interval sqrt (const interval &a, int n) throw(STD_FKT_OUT_OF_DEF)
00054 {
00055 if ( ((n>0) && (Inf(a)>=0.0)) || ((n<0) && (Inf(a)>0.0)) )
00056 return pow(a,interval(1.0,1.0)/n);
00057 else {
00058 cxscthrow(STD_FKT_OUT_OF_DEF("interval sqrt (const interval &a, int n)"));
00059 return interval(-1.0);
00060 }
00061 }
00062
00063 interval sqrt1px2(const interval& x) throw()
00064
00065 {
00066 interval t = abs(x),y;
00067 if (expo(Inf(t)) > 33)
00068 {
00069 y = t;
00070 Sup(y) = succ(Sup(y));
00071 } else if (expo(Sup(t)) > 33)
00072 {
00073 y = interval(Inf(t));
00074 y = sqrt(1+y*y);
00075 y = interval(Inf(y),succ(Sup(t)));
00076 } else y = sqrt(1+sqr(t));
00077 return y;
00078 }
00079
00080 interval sqrtx2y2(const interval& x, const interval& y) throw()
00081
00082 {
00083 interval a=abs(x), b=abs(y), r;
00084 int exa=expo(Sup(a)), exb=expo(Sup(b)), ex;
00085 if (exb > exa)
00086 {
00087 r = a; a = b; b = r;
00088 ex = exa; exa = exb; exb = ex;
00089 }
00090 ex = 511 - exa;
00091 times2pown(a,ex);
00092 times2pown(b,ex);
00093 r = sqrt(a*a + b*b);
00094 times2pown(r,-ex);
00095 return r;
00096 }
00097
00098
00099
00100
00101 const real Delta_f = 2*minreal;
00102 const real q_sqrtp1m1m = 9007199254740984.0 / 9007199254740992.0;
00103 const real q_sqrtp1m1p = 4503599627370502.0 / 4503599627370496.0;
00104
00105 interval sqrtp1m1(const interval& x) throw()
00106
00107
00108 {
00109 real a=0,b=0,ix=Inf(x),sx=Sup(x);
00110 int ex_ix,ex_sx,sgn_ix,sgn_sx;
00111
00112
00113 ex_ix = expo(ix); sgn_ix = sign(ix);
00114 if (ex_ix<=-1021)
00115 { if (sgn_ix) a = sqrtp1m1(ix) - Delta_f; }
00116 else
00117 if (ex_ix<=-51)
00118 {
00119 times2pown(ix,-1);
00120 a = pred(ix);
00121 }
00122 else
00123 if (sgn_ix>0) a = (ix>0.67) ?
00124 Inf( sqrt(interval(ix)+1)-1 ) : sqrtp1m1(ix)*q_sqrtp1m1m;
00125 else a = (ix<-0.25) ?
00126 Inf( sqrt(interval(ix)+1)-1 ) : sqrtp1m1(ix)*q_sqrtp1m1p;
00127
00128 if (ix == sx) { ex_sx = ex_ix; sgn_sx = sgn_ix; }
00129 else { ex_sx = expo(sx); sgn_sx = sign(sx); }
00130 if (ex_sx<=-1021)
00131 { if (sgn_sx) b = sqrtp1m1(sx) + Delta_f; }
00132 else
00133 if (ex_sx<=-47) { b = sx; times2pown(b,-1); }
00134 else
00135 if (sgn_sx>0) b = (sx>0.58) ?
00136 Sup( sqrt(interval(sx)+1)-1 ) : sqrtp1m1(sx)*q_sqrtp1m1p;
00137 else b = (sx<-0.32) ?
00138 Sup( sqrt(interval(sx)+1)-1 ) : sqrtp1m1(sx)*q_sqrtp1m1m;
00139 return interval(a,b);
00140 }
00141
00142
00143
00144 real q_sqrtx2m1p(4503599627370501.0/4503599627370496.0);
00145 real q_sqrtx2m1m(9007199254740986.0/9007199254740992.0);
00146
00147
00148 interval sqrtx2m1(const interval& x)
00149
00150 {
00151 interval z = abs(x);
00152 real r1,r2;
00153 r1 = sqrtx2m1(Inf(z)) * q_sqrtx2m1m;
00154 r2 = Sup(z);
00155 if (expo(r2)<26)
00156 r2 = sqrtx2m1(r2) * q_sqrtx2m1p;
00157
00158 return interval(r1,r2);
00159 }
00160
00161
00162
00163
00164 real q_sqrt1mx2p(4503599627370501.0/4503599627370496.0);
00165 real q_sqrt1mx2m(9007199254740985.0/9007199254740992.0);
00166
00167
00168 interval sqrt1mx2(const interval& x)
00169
00170 {
00171 interval z = abs(x);
00172 real r1,r2,sz,iz;
00173 sz = Sup(z); iz = Inf(z);
00174
00175 r2 = sqrt1mx2(sz);
00176 r1 = (sz==0)? 1 : r2 * q_sqrt1mx2m;
00177
00178 if (iz<4.81e-8) r2 = 1;
00179 else r2 = (sz==iz)? r2*q_sqrt1mx2p : sqrt1mx2(iz)*q_sqrt1mx2p;
00180 return interval(r1,r2);
00181
00182 }
00183
00184
00185
00186 const real q_exp_x2p = 4503599627370502.0 / 4503599627370496.0;
00187 const real q_exp_x2m = 9007199254740984.0 / 9007199254740992.0;
00188
00189 const real expmx2_UB = 2.225073858507447856659E-308;
00190 const real expmx2_x0 = 7491658466053896.0 / 281474976710656.0;
00191
00192 interval expmx2(const interval& x)
00193
00194 {
00195 real y,r1,r2,Sz,Iz;
00196 interval z = abs(x);
00197
00198 Sz = Sup(z); Iz = Inf(z);
00199 y = expmx2(Sz);
00200 r1 = y;
00201 if (Sz<=expmx2_x0) r1 = r1 * q_exp_x2m;
00202 if (Sz==0) r1 = y;
00203
00204 if (Iz>expmx2_x0) r2 = expmx2_UB;
00205 else r2 = (Sz==Iz)? y * q_exp_x2p : expmx2(Iz) * q_exp_x2p;
00206 if (r2>1) r2 = 1.0;
00207 return interval(r1,r2);
00208
00209 }
00210
00211
00212 interval expm1(const interval& x)
00213
00214 {
00215 real y,r1,r2,Sx,Ix;
00216 Sx = Sup(x); Ix = Inf(x);
00217 y = expm1(Ix);
00218
00219 r1 = (y>0)? y*q_exmm : y*q_exmp;
00220 if (r1<-1) r1 = -1;
00221
00222 if (Sx!=Ix) y = expm1(Sx);
00223 r2 = (y>0)? y*q_exmp : y*q_exmm;
00224
00225 return interval(r1,r2);
00226 }
00227
00228
00229
00230
00231 const real q_expx2_p = 4503599627370500.0 / 4503599627370496.0;
00232 const real q_expx2_m = 9007199254740985.0 / 9007199254740992.0;
00233
00234 interval expx2(const interval& x)
00235
00236 {
00237 real y,r1,r2,Sz,Iz;
00238 interval z = abs(x);
00239 Sz = Sup(z); Iz = Inf(z);
00240
00241 y = expx2(Iz);
00242 r1 = y;
00243 r1 = r1 * q_expx2_m;
00244 if (r1<1.0) r1 = 1.0;
00245
00246 r2 = (Sz==Iz)? y * q_expx2_p : expx2(Sz) * q_expx2_p;
00247 if (Sz==0) r2 = 1.0;
00248
00249 return interval(r1,r2);
00250 }
00251
00252
00253
00254
00255 const real q_expx2m1_p = 4503599627370500.0 / 4503599627370496.0;
00256 const real q_expx2m1_m = 9007199254740985.0 / 9007199254740992.0;
00257 const real expx2m1_0 = comp(0.5,-510);
00258
00259 void sqr2uv(const real&, real&, real&);
00260
00261 real expx2m1_intv(const real& x)
00262
00263
00264
00265
00266
00267
00268
00269 {
00270 real t(x),u,v,y,res(0);
00271 int ex;
00272 if (t<0) t = -t;
00273
00274 if (t>=6.5) res = expx2(t);
00275 else
00276 {
00277 ex = expo(t);
00278 sqr2uv(x,u,v);
00279 if (ex>=2)
00280 {
00281 y = exp(u);
00282 res = 1 - v*y;
00283 res = y - res;
00284 }
00285 else
00286 if (ex>=-8) res = expm1(u) + v*exp(u);
00287 else
00288 if (ex>=-25) {
00289 y = u*u;
00290 times2pown(y,-1);
00291 res = (1+u/3)*y + u;
00292 }
00293 else
00294 if(ex>=-510) res = u;
00295 }
00296
00297 return res;
00298 }
00299
00300 interval expx2m1(const interval& x)
00301
00302 {
00303 real y,r1,r2,Sz,Iz;
00304 interval z = abs(x);
00305 Sz = Sup(z); Iz = Inf(z);
00306
00307 y = expx2m1_intv(Iz);
00308 r1 = y;
00309 r1 = r1 * q_expx2m1_m;
00310
00311 if (Sz < expx2m1_0)
00312 {
00313 r2 = MinReal;
00314 if (Sz==0) r2 = 0.0;
00315 }
00316 else r2 = (Sz==Iz)? y * q_expx2m1_p : expx2m1_intv(Sz) * q_expx2m1_p;
00317
00318 return interval(r1,r2);
00319 }
00320
00321
00322
00323 static real q_lnp1m = 9007199254740986.0 / 9007199254740992.0;
00324 static real q_lnp1p = 4503599627370501.0 / 4503599627370496.0;
00325
00326
00327 interval lnp1(const interval& x) throw()
00328
00329 {
00330 real ix=Inf(x), sx=Sup(x),a,b;
00331
00332 int sgn_ix = sign(ix), ex_ix = expo(ix), sgn_sx,ex_sx;
00333 if (!sgn_ix) a = 0;
00334 else if (sgn_ix>0)
00335 a = (ex_ix<=-53) ? pred(ix) : lnp1(ix) * q_lnp1m;
00336 else
00337 a = (ex_ix<=-54) ? pred(ix) : lnp1(ix) * q_lnp1p;
00338
00339 if (ix == sx) { sgn_sx = sgn_ix; ex_sx = ex_ix; }
00340 else { sgn_sx = sign(sx); ex_sx = expo(sx); }
00341 if (sgn_sx>=0)
00342 b = (ex_sx<=-49) ? sx : lnp1(sx) * q_lnp1p;
00343 else
00344 b = (ex_sx<=-50) ? sx : lnp1(sx) * q_lnp1m;
00345 return interval(a,b);
00346 }
00347
00354 interval erf (const interval &a) { return j_erf(a); }
00361 interval erfc (const interval &a) { return j_erfc(a); }
00362
00363
00364
00365
00366
00367
00368
00369
00370
00371
00372
00373
00374
00375
00376
00377
00378
00379
00380
00381 inline a_intv _a_intv(const interval &x)
00382 {
00383 return *((const a_intv *)(&x));
00384 }
00385 inline interval _interval(const a_intv &x)
00386 {
00387 return *((const interval *)(&x));
00388 }
00389
00390 interval pow (const interval &a, const interval &b) throw()
00391 {
00392 interval res;
00393 if(Inf(a)==0 && Inf(b)>=0)
00394 {
00395 if(Sup(a)>=1)
00396 res=interval(0,pow(Sup(a),Sup(b)));
00397 else
00398 res=interval(0,pow(Sup(a),Inf(b)));
00399 }
00400 else res = _interval(i_pow(_a_intv(a),_a_intv(b)));
00401
00402 if (Inf(res) <= Sup(res))
00403 return res;
00404 else
00405 return interval(Sup(res),Inf(res));
00406 }
00407
00408 interval power(const interval& a, int n)
00409
00410
00411 {
00412 bool neg(n<0);
00413 int N(n),k(-1),r;
00414 interval res,h;
00415 if (neg) N = -N;
00416 if (N==0) res = 1;
00417 else if (N==1) res = a;
00418 else
00419 if (Inf(a)>=MinReal) res = exp(N*ln(a));
00420 else if (Sup(a)<=-MinReal) {
00421 h = interval(-Sup(a),-Inf(a));
00422 res = exp(N*ln(h));
00423 if (N%2 == 1) res = -res;
00424 }
00425 else
00426 {
00427 h = abs(a);
00428 while(N>0)
00429 {
00430 k++;
00431 r = N % 2;
00432 if (k==0)
00433 if (r==1) res=a; else res=1;
00434 else {
00435 h = h*h;
00436 if (r==1) res *= h;
00437 }
00438 N = N / 2;
00439 }
00440 }
00441 if (neg) res = 1/res;
00442 return res;
00443 }
00444
00445
00446
00447
00448
00449
00450
00451
00452
00453
00454
00455
00456
00457
00458
00459
00460
00461
00462
00463
00464
00465
00466
00467
00468
00469
00470
00471
00472
00473
00474
00475
00476
00477
00478
00479
00480
00481
00482
00483
00484
00485
00486
00487
00488
00489
00490
00491
00492
00493
00494
00495
00496
00497
00498
00499
00500
00501 static real Power (const real & x, int n, int RndMode )
00502 {
00503 int ChangeRndMode;
00504 real p, z;
00505
00506 ChangeRndMode = ( (x < 0.0) && (n % 2 == 1) );
00507
00508 if (ChangeRndMode) {
00509 z = -x;
00510 RndMode = -RndMode;
00511 }
00512 else
00513 z = x;
00514
00515 p = 1.0;
00516 switch (RndMode) {
00517 case -1 : while (n > 0) {
00518 if (n % 2 == 1) p = muld(p,z);
00519 n = n / 2;
00520 if (n > 0) z = muld(z,z);
00521 }
00522 break;
00523 case +1 : while (n > 0) {
00524 if (n % 2 == 1) p = mulu(p,z);
00525 n = n / 2;
00526 if (n > 0) z = mulu(z,z);
00527 }
00528 break;
00529 }
00530
00531 if (ChangeRndMode)
00532 return -p;
00533 else
00534 return p;
00535 }
00536
00537
00538
00539
00540
00541
00542
00543
00544
00545
00546
00547
00548
00549
00550
00551
00552
00553 interval Power (const interval & x, int n )
00554 {
00555 int m;
00556 real Lower, Upper;
00557
00558 if (n == 0) return(_interval(1.0,1.0));
00559
00560 if (n > 0) m = n; else m = -n;
00561
00562 if ( (0.0 < Inf(x)) || (m % 2 == 1) ) {
00563 Lower = Power(Inf(x),m,-1);
00564 Upper = Power(Sup(x),m,+1);
00565 }
00566 else if (0.0 > Sup(x)) {
00567 Lower = Power(Sup(x),m,-1);
00568 Upper = Power(Inf(x),m,+1);
00569 }
00570 else {
00571 Lower = 0.0;
00572 Upper = Power(AbsMax(x),m,+1);
00573 }
00574
00575 if (n > 0)
00576 return(_interval(Lower,Upper));
00577 else
00578 return(1.0/_interval(Lower,Upper));
00579 }
00580
00581 interval Pi ( )
00582 { return(4.0*atan(_interval(1.0,1.0))); }
00583
00584
00585 real ln_x2y2_abs(2.225076E-308);
00586 real q_lnx2y2p(4503599627370502.0 / 4503599627370496.0);
00587 real q_lnx2y2m(9007199254740984.0 / 9007199254740992.0);
00588
00589
00590 real b0 = MakeHexReal(0,1022-510,0x0016A09E,0x667F3BCD);
00591
00592
00593
00594
00595
00596 interval ln_sqrtx2y2(const interval& x, const interval& y) throw()
00597
00598 {
00599 interval ax=abs(x), ay=abs(y);
00600 real Ix=Inf(ax), Sx=Sup(ax), Iy=Inf(ay), Sy=Sup(ay),f,u1,u2;
00601
00602 f = ln_sqrtx2y2(Ix,Iy);
00603 if ((Ix==1 && Iy<b0) || (Iy==1 && Ix<b0)) {
00604
00605 u1 = f - ln_x2y2_abs;
00606 if (sign(u1)<0) u1 = 0;
00607 } else u1 = (sign(f)<0) ? f*q_lnx2y2p : f*q_lnx2y2m;
00608
00609 if (Ix==Sx && Iy==Sy)
00610 if ((Sx==1 && Sy<b0) || (Sy==1 && Sx<b0)) {
00611
00612 u2 = (Sy==0 || Sx==0) ? f : f+ln_x2y2_abs;
00613 } else u2 = (sign(f)<0) ? f*q_lnx2y2m : f*q_lnx2y2p;
00614 else
00615 {
00616 f = ln_sqrtx2y2(Sx,Sy);
00617 if ((Sx==1 && Sy<b0) || (Sy==1 && Sx<b0))
00618
00619 u2 = (sign(Sy)==0 || sign(Sx)==0) ? f : f+ln_x2y2_abs;
00620 else u2 = (sign(f)<0) ? f*q_lnx2y2m : f*q_lnx2y2p;
00621 }
00622 return interval(u1,u2);
00623 }
00624
00625
00626
00627
00628 static const real q_acoshp1p(4503599627370503.0/4503599627370496.0);
00629
00630 static const real q_acoshp1m(9007199254740981.0/9007199254740992.0);
00631
00632 interval acoshp1(const interval& x)
00633
00634 {
00635 real r1,r2,sx,ix;
00636 sx = Sup(x); ix = Inf(x);
00637
00638 r2 = acoshp1(ix);
00639 r1 = r2 * q_acoshp1m;
00640
00641 r2 = (sx==ix)? r2*q_acoshp1p : acoshp1(sx)*q_acoshp1p;
00642 return interval(r1,r2);
00643
00644 }
00645
00646
00647
00648
00649
00650
00651
00652
00653 const real q_sinpix_p = 4503599627370499.0 / 4503599627370496.0;
00654 const real q_sinpix_m = 9007199254740986.0 / 9007199254740992.0;
00655
00656 real rounded_up(const real& x)
00657 {
00658 real y;
00659 y = (x>=0)? x*q_sinpix_p : x*q_sinpix_m;
00660 return y;
00661 }
00662
00663 real rounded_down(const real& x)
00664 {
00665 real y;
00666 y = (x>=0)? x*q_sinpix_m : x*q_sinpix_p;
00667 return y;
00668 }
00669
00670 interval sinpix_pi(const interval& x)
00671 {
00672 const real Pir = Sup(Pir_interval);
00673 interval y;
00674 int ma,mb;
00675 real y1,y2,a(Inf(x)),b(Sup(x)),ya,yb;
00676 bool bl, ya_klg_yb;
00677
00678 ma = Round(a); mb = Round(b);
00679 bl = (ma%2 != 0);
00680 if (mb-ma>1)
00681 {
00682 y1 = -Pir; y2 = Pir;
00683 }
00684 else
00685 if (mb==ma)
00686 if (a==b)
00687 {
00688 ya = sinpix_pi(a);
00689 y1 = rounded_down(ya);
00690 y2 = rounded_up(ya);
00691 }
00692 else
00693 {
00694 ya = sinpix_pi(a);
00695 yb = sinpix_pi(b);
00696 if (!bl)
00697 {
00698 y1 = rounded_down(ya);
00699 y2 = rounded_up(yb);
00700 }
00701 else
00702 {
00703 y1 = rounded_down(yb);
00704 y2 = rounded_up(ya);
00705 }
00706 }
00707 else
00708 {
00709 ya = sinpix_pi(a);
00710 yb = sinpix_pi(b);
00711 ya_klg_yb = (ya <= yb);
00712
00713 if (bl)
00714 {
00715 if (!ya_klg_yb)
00716 yb = ya;
00717 ya = -Pir;
00718 }
00719 else
00720 {
00721 if (!ya_klg_yb)
00722 ya = yb;
00723 yb = Pir;
00724 }
00725 y1 = rounded_down(ya);
00726 if (y1<-Pir)
00727 y1 = -Pir;
00728 y2 = rounded_up(yb);
00729 if (y2>Pir)
00730 y2 = Pir;
00731 }
00732
00733 y = interval(y1,y2);
00734 return y;
00735 }
00736
00737
00738
00739
00740
00741
00742
00743
00744 const real q_gammarm = 9007199254740964.0 / 9007199254740992.0;
00745
00746 const real q_gammarp = 4503599627370510.0 / 4503599627370496.0;
00747
00748
00749 interval pow2(const interval& x, int ex)
00750 {
00751 interval y(x);
00752 times2pown(y,ex);
00753 return y;
00754 }
00755
00756 const real Ne = 9007199254740992.0;
00757 const real Ne1 = 1125899906842624.0;
00758 const real Ne2 = 562949953421312.0;
00759 const real Ne3 = 281474976710656.0;
00760 const real Ne4 = 140737488355328.0;
00761 const real Ne5 = 70368744177664.0;
00762 const real Ne6 = 35184372088832.0;
00763
00764 const interval gam_rxi[171] =
00765 {
00766 interval( 6582605572834349.0 / 4503599627370496.0,6582606400588712.0 /
00767 4503599627370496.0 ),
00768 interval( -4540376432147063.0 / 9007199254740992.0,-4540375772996112.0 /
00769 9007199254740992.0 ),
00770 interval( -7086407292338520.0 / 4503599627370496.0,-7086406981597106.0 /
00771 4503599627370496.0 ),
00772 interval( -5878820838740338.0 / 2251799813685248.0,-5878820690102701.0 /
00773 2251799813685248.0 ),
00774 interval( -8185952996852629.0 / 2251799813685248.0,-8185952850644519.0 /
00775 2251799813685248.0 ),
00776 interval( -5239079997162568.0 / Ne1,-5239079928185648.0 /
00777 Ne1 ),
00778 interval( -6380657697812205.0 / Ne1,-6380657632438250.0 /
00779 Ne1 ),
00780 interval( -7519230477777525.0 / Ne1,-7519230410301402.0 /
00781 Ne1 ),
00782 interval( -8655680190901081.0 / Ne1,-8655680125714323.0 /
00783 Ne1 ),
00784 interval( -4895280046470312.0 / Ne2,-4895280015191181.0 /
00785 Ne2 ),
00786 interval( -5462119069950045.0 / Ne2,-5462119039144308.0 /
00787 Ne2 ),
00788 interval( -6028485171921533.0 / Ne2,-6028485140574985.0 /
00789 Ne2 ),
00790 interval( -6594470676196825.0 / Ne2,-6594470646005838.0 /
00791 Ne2 ),
00792 interval( -7160144161412306.0 / Ne2,-7160144131821972.0 /
00793 Ne2 ),
00794 interval( -7725557826948019.0 / Ne2,-7725557796923813.0 /
00795 Ne2 ),
00796 interval( -8290752238810453.0 / Ne2,-8290752208368199.0 /
00797 Ne2 ),
00798 interval( -8855759486553113.0 / Ne2,-8855759457969009.0 /
00799 Ne2 ),
00800 interval( -4710302676530551.0 / Ne3,-4710302661730969.0 /
00801 Ne3 ),
00802 interval( -4992655414739558.0 / Ne3,-4992655400196254.0 /
00803 Ne3 ),
00804 interval( -5274946608174960.0 / Ne3,-5274946594248303.0 /
00805 Ne3 ),
00806 interval( -5557183461054268.0 / Ne3,-5557183446978818.0 /
00807 Ne3 ),
00808 interval( -5839372030862353.0 / Ne3,-5839372016359958.0 /
00809 Ne3 ),
00810 interval( -6121517453741464.0 / Ne3,-6121517439898965.0 /
00811 Ne3 ),
00812 interval( -6403624121061720.0 / Ne3,-6403624107245033.0 /
00813 Ne3 ),
00814 interval( -6685695811452843.0 / Ne3,-6685695797850064.0 /
00815 Ne3 ),
00816 interval( -6967735798799276.0 / Ne3,-6967735784842353.0 /
00817 Ne3 ),
00818 interval( -7249746935136834.0 / Ne3,-7249746921647546.0 /
00819 Ne3 ),
00820 interval( -7531731721183113.0 / Ne3,-7531731707547301.0 /
00821 Ne3 ),
00822 interval( -7813692357395941.0 / Ne3,-7813692343778691.0 /
00823 Ne3 ),
00824 interval( -8095630791428232.0 / Ne3,-8095630778040390.0 /
00825 Ne3 ),
00826 interval( -8377548753853165.0 / Ne3,-8377548740538224.0 /
00827 Ne3 ),
00828 interval( -8659447788741678.0 / Ne3,-8659447775645579.0 /
00829 Ne3 ),
00830 interval( -8941329278863280.0 / Ne3,-8941329265761967.0 /
00831 Ne3 ),
00832 interval( -4611597233397515.0 / Ne4,-4611597226897947.0 /
00833 Ne4 ),
00834 interval( -4752522236545681.0 / Ne4,-4752522230097182.0 /
00835 Ne4 ),
00836 interval( -4893440155674552.0 / Ne4,-4893440149271021.0 /
00837 Ne4 ),
00838 interval( -5034351450592848.0 / Ne4,-5034351444042898.0 /
00839 Ne4 ),
00840 interval( -5175256539394880.0 / Ne4,-5175256533033078.0 /
00841 Ne4 ),
00842 interval( -5316155803584886.0 / Ne4,-5316155797241740.0 /
00843 Ne4 ),
00844 interval( -5457049591969558.0 / Ne4,-5457049585698186.0 /
00845 Ne4 ),
00846 interval( -5597938224227692.0 / Ne4,-5597938218047102.0 /
00847 Ne4 ),
00848 interval( -5738821993949958.0 / Ne4,-5738821987610287.0 /
00849 Ne4 ),
00850 interval( -5879701171316002.0 / Ne4,-5879701164978161.0 /
00851 Ne4 ),
00852 interval( -6020576005634620.0 / Ne4,-6020575999374578.0 /
00853 Ne4 ),
00854 interval( -6161446727231484.0 / Ne4,-6161446721061003.0 /
00855 Ne4 ),
00856 interval( -6302313549465809.0 / Ne4,-6302313543147939.0 /
00857 Ne4 ),
00858 interval( -6443176669927728.0 / Ne4,-6443176663720294.0 /
00859 Ne4 ),
00860 interval( -6584036272403005.0 / Ne4,-6584036266213061.0 /
00861 Ne4 ),
00862 interval( -6724892527807298.0 / Ne4,-6724892521515390.0 /
00863 Ne4 ),
00864 interval( -6865745595463323.0 / Ne4,-6865745589218114.0 /
00865 Ne4 ),
00866 interval( -7006595624078029.0 / Ne4,-7006595617954995.0 /
00867 Ne4 ),
00868 interval( -7147442752315627.0 / Ne4,-7147442746313355.0 /
00869 Ne4 ),
00870 interval( -7288287110549528.0 / Ne4,-7288287104399241.0 /
00871 Ne4 ),
00872 interval( -7429128820262002.0 / Ne4,-7429128814290427.0 /
00873 Ne4 ),
00874 interval( -7569967996009183.0 / Ne4,-7569967989919521.0 /
00875 Ne4 ),
00876 interval( -7710804744971319.0 / Ne4,-7710804738911590.0 /
00877 Ne4 ),
00878 interval( -7851639168099204.0 / Ne4,-7851639162048862.0 /
00879 Ne4 ),
00880 interval( -7992471360380410.0 / Ne4,-7992471354478088.0 /
00881 Ne4 ),
00882 interval( -8133301411685542.0 / Ne4,-8133301405639704.0 /
00883 Ne4 ),
00884 interval( -8274129406251900.0 / Ne4,-8274129400330745.0 /
00885 Ne4 ),
00886 interval( -8414955423947592.0 / Ne4,-8414955418025784.0 /
00887 Ne4 ),
00888 interval( -8555779540237542.0 / Ne4,-8555779534343191.0 /
00889 Ne4 ),
00890 interval( -8696601826519818.0 / Ne4,-8696601820560983.0 /
00891 Ne4 ),
00892 interval( -8837422350374443.0 / Ne4,-8837422344547779.0 /
00893 Ne4 ),
00894 interval( -8978241175812537.0 / Ne4,-8978241170031881.0 /
00895 Ne4 ),
00896 interval( -4559529181955286.0 / Ne5,-4559529178973419.0 /
00897 Ne5 ),
00898 interval( -4629936985962592.0 / Ne5,-4629936983062621.0 /
00899 Ne5 ),
00900 interval( -4700344027557972.0 / Ne5,-4700344024658010.0 /
00901 Ne5 ),
00902 interval( -4770750332748164.0 / Ne5,-4770750329806175.0 /
00903 Ne5 ),
00904 interval( -4841155926312136.0 / Ne5,-4841155923514622.0 /
00905 Ne5 ),
00906 interval( -4911560831959402.0 / Ne5,-4911560829205074.0 /
00907 Ne5 ),
00908 interval( -4981965072279533.0 / Ne5,-4981965069314643.0 /
00909 Ne5 ),
00910 interval( -5052368668591817.0 / Ne5,-5052368665644419.0 /
00911 Ne5 ),
00912 interval( -5122771641448337.0 / Ne5,-5122771638497776.0 /
00913 Ne5 ),
00914 interval( -5193174010445884.0 / Ne5,-5193174007591888.0 /
00915 Ne5 ),
00916 interval( -5263575794318673.0 / Ne5,-5263575791488264.0 /
00917 Ne5 ),
00918 interval( -5333977010931459.0 / Ne5,-5333977008101358.0 /
00919 Ne5 ),
00920 interval( -5404377677505176.0 / Ne5,-5404377674566742.0 /
00921 Ne5 ),
00922 interval( -5474777810213221.0 / Ne5,-5474777807391522.0 /
00923 Ne5 ),
00924 interval( -5545177424917448.0 / Ne5,-5545177422065289.0 /
00925 Ne5 ),
00926 interval( -5615576536591204.0 / Ne5,-5615576533728944.0 /
00927 Ne5 ),
00928 interval( -5685975159660620.0 / Ne5,-5685975156829327.0 /
00929 Ne5 ),
00930 interval( -5756373307993982.0 / Ne5,-5756373305121310.0 /
00931 Ne5 ),
00932 interval( -5826770994840416.0 / Ne5,-5826770992034928.0 /
00933 Ne5 ),
00934 interval( -5897168232948637.0 / Ne5,-5897168230130823.0 /
00935 Ne5 ),
00936 interval( -5967565034702908.0 / Ne5,-5967565031698652.0 /
00937 Ne5 ),
00938 interval( -6037961411567024.0 / Ne5,-6037961408739972.0 /
00939 Ne5 ),
00940 interval( -6108357375160195.0 / Ne5,-6108357372312820.0 /
00941 Ne5 ),
00942 interval( -6178752936267084.0 / Ne5,-6178752933424618.0 /
00943 Ne5 ),
00944 interval( -6249148105390399.0 / Ne5,-6249148102629437.0 /
00945 Ne5 ),
00946 interval( -6319542892697349.0 / Ne5,-6319542889886519.0 /
00947 Ne5 ),
00948 interval( -6389937307844225.0 / Ne5,-6389937305053873.0 /
00949 Ne5 ),
00950 interval( -6460331360217357.0 / Ne5,-6460331357417915.0 /
00951 Ne5 ),
00952 interval( -6530725058889375.0 / Ne5,-6530725056107292.0 /
00953 Ne5 ),
00954 interval( -6601118412624317.0 / Ne5,-6601118409842826.0 /
00955 Ne5 ),
00956 interval( -6671511429748937.0 / Ne5,-6671511426971253.0 /
00957 Ne5 ),
00958 interval( -6741904118401788.0 / Ne5,-6741904115722630.0 /
00959 Ne5 ),
00960 interval( -6812296486576567.0 / Ne5,-6812296483762819.0 /
00961 Ne5 ),
00962 interval( -6882688541678557.0 / Ne5,-6882688538949795.0 /
00963 Ne5 ),
00964 interval( -6953080291125250.0 / Ne5,-6953080288362282.0 /
00965 Ne5 ),
00966 interval( -7023471742013192.0 / Ne5,-7023471739228496.0 /
00967 Ne5 ),
00968 interval( -7093862901097948.0 / Ne5,-7093862898353711.0 /
00969 Ne5 ),
00970 interval( -7164253775147266.0 / Ne5,-7164253772348037.0 /
00971 Ne5 ),
00972 interval( -7234644370421069.0 / Ne5,-7234644367656947.0 /
00973 Ne5 ),
00974 interval( -7305034693228153.0 / Ne5,-7305034690493625.0 /
00975 Ne5 ),
00976 interval( -7375424749560875.0 / Ne5,-7375424746816433.0 /
00977 Ne5 ),
00978 interval( -7445814545246703.0 / Ne5,-7445814542529259.0 /
00979 Ne5 ),
00980 interval( -7516204085881418.0 / Ne5,-7516204083182192.0 /
00981 Ne5 ),
00982 interval( -7586593377039902.0 / Ne5,-7586593374291972.0 /
00983 Ne5 ),
00984 interval( -7656982423878545.0 / Ne5,-7656982421139464.0 /
00985 Ne5 ),
00986 interval( -7727371231629585.0 / Ne5,-7727371228950751.0 /
00987 Ne5 ),
00988 interval( -7797759805243431.0 / Ne5,-7797759802601748.0 /
00989 Ne5 ),
00990 interval( -7868148149631789.0 / Ne5,-7868148146919441.0 /
00991 Ne5 ),
00992 interval( -7938536269389156.0 / Ne5,-7938536266702540.0 /
00993 Ne5 ),
00994 interval( -8008924169145439.0 / Ne5,-8008924166482991.0 /
00995 Ne5 ),
00996 interval( -8079311853288492.0 / Ne5,-8079311850638146.0 /
00997 Ne5 ),
00998 interval( -8149699326208468.0 / Ne5,-8149699323496057.0 /
00999 Ne5 ),
01000 interval( -8220086591946405.0 / Ne5,-8220086589180599.0 /
01001 Ne5 ),
01002 interval( -8290473654625668.0 / Ne5,-8290473651911160.0 /
01003 Ne5 ),
01004 interval( -8360860518207539.0 / Ne5,-8360860515490326.0 /
01005 Ne5 ),
01006 interval( -8431247186492146.0 / Ne5,-8431247183838485.0 /
01007 Ne5 ),
01008 interval( -8501633663256230.0 / Ne5,-8501633660616442.0 /
01009 Ne5 ),
01010 interval( -8572019952114999.0 / Ne5,-8572019949515073.0 /
01011 Ne5 ),
01012 interval( -8642406056614155.0 / Ne5,-8642406053936017.0 /
01013 Ne5 ),
01014 interval( -8712791980171444.0 / Ne5,-8712791977516241.0 /
01015 Ne5 ),
01016 interval( -8783177726114270.0 / Ne5,-8783177723474143.0 /
01017 Ne5 ),
01018 interval( -8853563297747803.0 / Ne5,-8853563295082565.0 /
01019 Ne5 ),
01020 interval( -8923948698211540.0 / Ne5,-8923948695603642.0 /
01021 Ne5 ),
01022 interval( -8994333930651793.0 / Ne5,-8994333928013544.0 /
01023 Ne5 ),
01024 interval( -4532359499005981.0 / Ne6,-4532359497669548.0 /
01025 Ne6 ),
01026 interval( -4567551951590474.0 / Ne6,-4567551950297444.0 /
01027 Ne6 ),
01028 interval( -4602744324609335.0 / Ne6,-4602744323253914.0 /
01029 Ne6 ),
01030 interval( -4637936619312858.0 / Ne6,-4637936618035482.0 /
01031 Ne6 ),
01032 interval( -4673128837201202.0 / Ne6,-4673128835890259.0 /
01033 Ne6 ),
01034 interval( -4708320979539414.0 / Ne6,-4708320978220509.0 /
01035 Ne6 ),
01036 interval( -4743513047586994.0 / Ne6,-4743513046289186.0 /
01037 Ne6 ),
01038 interval( -4778705042649671.0 / Ne6,-4778705041357978.0 /
01039 Ne6 ),
01040 interval( -4813896965939740.0 / Ne6,-4813896964638916.0 /
01041 Ne6 ),
01042 interval( -4849088818685547.0 / Ne6,-4849088817383583.0 /
01043 Ne6 ),
01044 interval( -4884280602023663.0 / Ne6,-4884280600723731.0 /
01045 Ne6 ),
01046 interval( -4919472317096448.0 / Ne6,-4919472315799988.0 /
01047 Ne6 ),
01048 interval( -4954663965077128.0 / Ne6,-4954663963749440.0 /
01049 Ne6 ),
01050 interval( -4989855546965370.0 / Ne6,-4989855545671197.0 /
01051 Ne6 ),
01052 interval( -5025047063935622.0 / Ne6,-5025047062637366.0 /
01053 Ne6 ),
01054 interval( -5060238516963350.0 / Ne6,-5060238515663821.0 /
01055 Ne6 ),
01056 interval( -5095429907060327.0 / Ne6,-5095429905761378.0 /
01057 Ne6 ),
01058 interval( -5130621235251224.0 / Ne6,-5130621233930590.0 /
01059 Ne6 ),
01060 interval( -5165812502482099.0 / Ne6,-5165812501185488.0 /
01061 Ne6 ),
01062 interval( -5201003709724055.0 / Ne6,-5201003708430144.0 /
01063 Ne6 ),
01064 interval( -5236194857910350.0 / Ne6,-5236194856593808.0 /
01065 Ne6 ),
01066 interval( -5271385947936424.0 / Ne6,-5271385946609048.0 /
01067 Ne6 ),
01068 interval( -5306576980681870.0 / Ne6,-5306576979376506.0 /
01069 Ne6 ),
01070 interval( -5341767957039505.0 / Ne6,-5341767955734187.0 /
01071 Ne6 ),
01072 interval( -5376958877810379.0 / Ne6,-5376958876528096.0 /
01073 Ne6 ),
01074 interval( -5412149743940434.0 / Ne6,-5412149742614602.0 /
01075 Ne6 ),
01076 interval( -5447340556059975.0 / Ne6,-5447340554811246.0 /
01077 Ne6 ),
01078 interval( -5482531315163654.0 / Ne6,-5482531313857339.0 /
01079 Ne6 ),
01080 interval( -5517722021905912.0 / Ne6,-5517722020635122.0 /
01081 Ne6 ),
01082 interval( -5552912677100886.0 / Ne6,-5552912675823002.0 /
01083 Ne6 ),
01084 interval( -5588103281480912.0 / Ne6,-5588103280171229.0 /
01085 Ne6 ),
01086 interval( -5623293835745456.0 / Ne6,-5623293834493516.0 /
01087 Ne6 ),
01088 interval( -5658484340702630.0 / Ne6,-5658484339399074.0 /
01089 Ne6 ),
01090 interval( -5693674796958315.0 / Ne6,-5693674795683212.0 /
01091 Ne6 ),
01092 interval( -5728865205222665.0 / Ne6,-5728865203973973.0 /
01093 Ne6 ),
01094 interval( -5764055566229013.0 / Ne6,-5764055564966520.0 /
01095 Ne6 ),
01096 interval( -5799245880597279.0 / Ne6,-5799245879305275.0 /
01097 Ne6 ),
01098 interval( -5834436148937784.0 / Ne6,-5834436147684294.0 /
01099 Ne6 ),
01100 interval( -5869626371953711.0 / Ne6,-5869626370690622.0 /
01101 Ne6 ),
01102 interval( -5904816550239413.0 / Ne6,-5904816548965896.0 /
01103 Ne6 ),
01104 interval( -5940006684383290.0 / Ne6,-5940006683093915.0 /
01105 Ne6 ),
01106 interval( -5975196775000579.0 / Ne6,-5975196773734016.0 /
01107 Ne6 ) };
01108
01109 const interval gam_ryi[171] = {
01110 pow2( interval( 5085347089749720.0 / Ne,5085347089749823.0 / Ne ) , 1 ) ,
01111 pow2( interval( -5082146609264467.0 / Ne,-5082146609264314.0 / Ne ) , -1 ) ,
01112 pow2( interval( 7824158147621733.0 / Ne,7824158147621966.0 / Ne ) , -1 ) ,
01113 pow2( interval( -5070842539852372.0 / Ne,-5070842539852221.0 / Ne ) , 1 ) ,
01114 pow2( interval( 4593118780547419.0 / Ne,4593118780547576.0 / Ne ) , 3 ) ,
01115 pow2( interval( -5333021955274733.0 / Ne,-5333021955274575.0 / Ne ) , 5 ) ,
01116 pow2( interval( 7546574203185105.0 / Ne,7546574203185319.0 / Ne ) , 7 ) ,
01117 pow2( interval( -6294628859031764.0 / Ne,-6294628859031469.0 / Ne ) , 10 ) ,
01118 pow2( interval( 6045310252810166.0 / Ne,6045310252811273.0 / Ne ) , 13 ) ,
01119 pow2( interval( -6568078652156336.0 / Ne,-6568078652156148.0 / Ne ) , 16 ) ,
01120 pow2( interval( 7963169065060572.0 / Ne,7963169065060801.0 / Ne ) , 19 ) ,
01121 pow2( interval( -5328217018030122.0 / Ne,-5328217018029960.0 / Ne ) , 23 ) ,
01122 pow2( interval( 7800142897041864.0 / Ne,7800142897042089.0 / Ne ) , 26 ) ,
01123 pow2( interval( -6199437664213474.0 / Ne,-6199437664213297.0 / Ne ) , 30 ) ,
01124 pow2( interval( 5316470282961123.0 / Ne,5316470282961284.0 / Ne ) , 34 ) ,
01125 pow2( interval( -4892929765135337.0 / Ne,-4892929765135165.0 / Ne ) , 38 ) ,
01126 pow2( interval( 4810107119289947.0 / Ne,4810107119290088.0 / Ne ) , 42 ) ,
01127 pow2( interval( -5030373421375086.0 / Ne,-5030373421374834.0 / Ne ) , 46 ) ,
01128 pow2( interval( 5576144001185310.0 / Ne,5576144001185479.0 / Ne ) , 50 ) ,
01129 pow2( interval( -6530685487420963.0 / Ne,-6530685487420774.0 / Ne ) , 54 ) ,
01130 pow2( interval( 8057940169576582.0 / Ne,8057940169576818.0 / Ne ) , 58 ) ,
01131 pow2( interval( -5223648494045513.0 / Ne,-5223648494045349.0 / Ne ) , 63 ) ,
01132 pow2( interval( 7099855957135674.0 / Ne,7099855957135885.0 / Ne ) , 67 ) ,
01133 pow2( interval( -5047359382236272.0 / Ne,-5047359382236084.0 / Ne ) , 72 ) ,
01134 pow2( interval( 7492585872478835.0 / Ne,7492585872479188.0 / Ne ) , 76 ) ,
01135 pow2( interval( -5795835662380422.0 / Ne,-5795835662380242.0 / Ne ) , 81 ) ,
01136 pow2( interval( 4664800910382651.0 / Ne,4664800910382790.0 / Ne ) , 86 ) ,
01137 pow2( interval( -7801058080117709.0 / Ne,-7801058080117472.0 / Ne ) , 90 ) ,
01138 pow2( interval( 6767162072327001.0 / Ne,6767162072327282.0 / Ne ) , 95 ) ,
01139 pow2( interval( -6082121514218736.0 / Ne,-6082121514218554.0 / Ne ) , 100 ) ,
01140 pow2( interval( 5656800000052189.0 / Ne,5656800000052359.0 / Ne ) , 105 ) ,
01141 pow2( interval( -5438268378952110.0 / Ne,-5438268378951951.0 / Ne ) , 110 ) ,
01142 pow2( interval( 5398375606367166.0 / Ne,5398375606367329.0 / Ne ) , 115 ) ,
01143 pow2( interval( -5527713447587841.0 / Ne,-5527713447587674.0 / Ne ) , 120 ) ,
01144 pow2( interval( 5833125895912623.0 / Ne,5833125895912799.0 / Ne ) , 125 ) ,
01145 pow2( interval( -6337936184674347.0 / Ne,-6337936184674153.0 / Ne ) , 130 ) ,
01146 pow2( interval( 7084743510515278.0 / Ne,7084743510515501.0 / Ne ) , 135 ) ,
01147 pow2( interval( -8141214882701327.0 / Ne,-8141214882701088.0 / Ne ) , 140 ) ,
01148 pow2( interval( 4804968547193877.0 / Ne,4804968547194018.0 / Ne ) , 146 ) ,
01149 pow2( interval( -5822137580509526.0 / Ne,-5822137580509355.0 / Ne ) , 151 ) ,
01150 pow2( interval( 7236772755227956.0 / Ne,7236772755228162.0 / Ne ) , 156 ) ,
01151 pow2( interval( -4610758665056508.0 / Ne,-4610758665056369.0 / Ne ) , 162 ) ,
01152 pow2( interval( 6019530845699084.0 / Ne,6019530845699266.0 / Ne ) , 167 ) ,
01153 pow2( interval( -8047036389398365.0 / Ne,-8047036389398123.0 / Ne ) , 172 ) ,
01154 pow2( interval( 5504580189086749.0 / Ne,5504580189086968.0 / Ne ) , 178 ) ,
01155 pow2( interval( -7703001513324420.0 / Ne,-7703001513324183.0 / Ne ) , 183 ) ,
01156 pow2( interval( 5510183009440391.0 / Ne,5510183009440581.0 / Ne ) , 189 ) ,
01157 pow2( interval( -8055535954952413.0 / Ne,-8055535954952173.0 / Ne ) , 194 ) ,
01158 pow2( interval( 6014315232803007.0 / Ne,6014315232803294.0 / Ne ) , 200 ) ,
01159 pow2( interval( -4584378555360492.0 / Ne,-4584378555360260.0 / Ne ) , 206 ) ,
01160 pow2( interval( 7132212380084113.0 / Ne,7132212380084326.0 / Ne ) , 211 ) ,
01161 pow2( interval( -5659549393054692.0 / Ne,-5659549393054526.0 / Ne ) , 217 ) ,
01162 pow2( interval( 4579461117155838.0 / Ne,4579461117155977.0 / Ne ) , 223 ) ,
01163 pow2( interval( -7554216840666713.0 / Ne,-7554216840666493.0 / Ne ) , 228 ) ,
01164 pow2( interval( 6348787715758027.0 / Ne,6348787715758222.0 / Ne ) , 234 ) ,
01165 pow2( interval( -5434979980476367.0 / Ne,-5434979980476204.0 / Ne ) , 240 ) ,
01166 pow2( interval( 4737681191908824.0 / Ne,4737681191908967.0 / Ne ) , 246 ) ,
01167 pow2( interval( -8407842664867513.0 / Ne,-8407842664867267.0 / Ne ) , 251 ) ,
01168 pow2( interval( 7592052521188700.0 / Ne,7592052521188935.0 / Ne ) , 257 ) ,
01169 pow2( interval( -6974119252551297.0 / Ne,-6974119252551090.0 / Ne ) , 263 ) ,
01170 pow2( interval( 6515520808385677.0 / Ne,6515520808385874.0 / Ne ) , 269 ) ,
01171 pow2( interval( -6188946869743481.0 / Ne,-6188946869743300.0 / Ne ) , 275 ) ,
01172 pow2( interval( 5975502808844840.0 / Ne,5975502808845020.0 / Ne ) , 281 ) ,
01173 pow2( interval( -5862842897072874.0 / Ne,-5862842897072704.0 / Ne ) , 287 ) ,
01174 pow2( interval( 5843967448508660.0 / Ne,5843967448508828.0 / Ne ) , 293 ) ,
01175 pow2( interval( -5916517001341501.0 / Ne,-5916517001341321.0 / Ne ) , 299 ) ,
01176 pow2( interval( 6082464626325325.0 / Ne,6082464626325503.0 / Ne ) , 305 ) ,
01177 pow2( interval( -6348157530347044.0 / Ne,-6348157530346858.0 / Ne ) , 311 ) ,
01178 pow2( interval( 6724699799057619.0 / Ne,6724699799057843.0 / Ne ) , 317 ) ,
01179 pow2( interval( -7228705737680202.0 / Ne,-7228705737679999.0 / Ne ) , 323 ) ,
01180 pow2( interval( 7883493269720206.0 / Ne,7883493269720561.0 / Ne ) , 329 ) ,
01181 pow2( interval( -8720834785364833.0 / Ne,-8720834785364561.0 / Ne ) , 335 ) ,
01182 pow2( interval( 4891722644546351.0 / Ne,4891722644546502.0 / Ne ) , 342 ) ,
01183 pow2( interval( -5564236710028970.0 / Ne,-5564236710028799.0 / Ne ) , 348 ) ,
01184 pow2( interval( 6416191129172903.0 / Ne,6416191129173091.0 / Ne ) , 354 ) ,
01185 pow2( interval( -7498890927628704.0 / Ne,-7498890927628487.0 / Ne ) , 360 ) ,
01186 pow2( interval( 8881515552460572.0 / Ne,8881515552460999.0 / Ne ) , 366 ) ,
01187 pow2( interval( -5328950915550370.0 / Ne,-5328950915550206.0 / Ne ) , 373 ) ,
01188 pow2( interval( 6478093314396794.0 / Ne,6478093314397089.0 / Ne ) , 379 ) ,
01189 pow2( interval( -7976303366065662.0 / Ne,-7976303366065426.0 / Ne ) , 385 ) ,
01190 pow2( interval( 4972846688449830.0 / Ne,4972846688450017.0 / Ne ) , 392 ) ,
01191 pow2( interval( -6278401907481090.0 / Ne,-6278401907480879.0 / Ne ) , 398 ) ,
01192 pow2( interval( 8024854758356088.0 / Ne,8024854758356345.0 / Ne ) , 404 ) ,
01193 pow2( interval( -5191277948909595.0 / Ne,-5191277948909444.0 / Ne ) , 411 ) ,
01194 pow2( interval( 6797621462551740.0 / Ne,6797621462551941.0 / Ne ) , 417 ) ,
01195 pow2( interval( -4503636668393666.0 / Ne,-4503636668393518.0 / Ne ) , 424 ) ,
01196 pow2( interval( 6037997262493341.0 / Ne,6037997262493523.0 / Ne ) , 430 ) ,
01197 pow2( interval( -8189485306115383.0 / Ne,-8189485306115130.0 / Ne ) , 436 ) ,
01198 pow2( interval( 5617805845426844.0 / Ne,5617805845427124.0 / Ne ) , 443 ) ,
01199 pow2( interval( -7795192616785187.0 / Ne,-7795192616784477.0 / Ne ) , 449 ) ,
01200 pow2( interval( 5469175405734180.0 / Ne,5469175405734422.0 / Ne ) , 456 ) ,
01201 pow2( interval( -7759929987383324.0 / Ne,-7759929987383086.0 / Ne ) , 462 ) ,
01202 pow2( interval( 5565727978288701.0 / Ne,5565727978288876.0 / Ne ) , 469 ) ,
01203 pow2( interval( -8070914994857895.0 / Ne,-8070914994857635.0 / Ne ) , 475 ) ,
01204 pow2( interval( 5914931467943193.0 / Ne,5914931467943373.0 / Ne ) , 482 ) ,
01205 pow2( interval( -8762204548045716.0 / Ne,-8762204548045455.0 / Ne ) , 488 ) ,
01206 pow2( interval( 6558513517606168.0 / Ne,6558513517606353.0 / Ne ) , 495 ) ,
01207 pow2( interval( -4960305627886271.0 / Ne,-4960305627886120.0 / Ne ) , 502 ) ,
01208 pow2( interval( 7580642983583672.0 / Ne,7580642983583897.0 / Ne ) , 508 ) ,
01209 pow2( interval( -5851844804194595.0 / Ne,-5851844804194367.0 / Ne ) , 515 ) ,
01210 pow2( interval( 4563038858728436.0 / Ne,4563038858728577.0 / Ne ) , 522 ) ,
01211 pow2( interval( -7187477492053316.0 / Ne,-7187477492052964.0 / Ne ) , 528 ) ,
01212 pow2( interval( 5716852908386950.0 / Ne,5716852908387214.0 / Ne ) , 535 ) ,
01213 pow2( interval( -4591808630269563.0 / Ne,-4591808630269411.0 / Ne ) , 542 ) ,
01214 pow2( interval( 7448102539955649.0 / Ne,7448102539955986.0 / Ne ) , 548 ) ,
01215 pow2( interval( -6098770429791387.0 / Ne,-6098770429791204.0 / Ne ) , 555 ) ,
01216 pow2( interval( 5041550443966798.0 / Ne,5041550443966946.0 / Ne ) , 562 ) ,
01217 pow2( interval( -8413996086583072.0 / Ne,-8413996086582821.0 / Ne ) , 568 ) ,
01218 pow2( interval( 7086939987269423.0 / Ne,7086939987269731.0 / Ne ) , 575 ) ,
01219 pow2( interval( -6024570065319942.0 / Ne,-6024570065319682.0 / Ne ) , 582 ) ,
01220 pow2( interval( 5168535487082451.0 / Ne,5168535487082609.0 / Ne ) , 589 ) ,
01221 pow2( interval( -8949051953781375.0 / Ne,-8949051953781115.0 / Ne ) , 595 ) ,
01222 pow2( interval( 7817344426895164.0 / Ne,7817344426895996.0 / Ne ) , 602 ) ,
01223 pow2( interval( -6889843867972878.0 / Ne,-6889843867972674.0 / Ne ) , 609 ) ,
01224 pow2( interval( 6126229646423302.0 / Ne,6126229646423484.0 / Ne ) , 616 ) ,
01225 pow2( interval( -5495122334906381.0 / Ne,-5495122334906222.0 / Ne ) , 623 ) ,
01226 pow2( interval( 4971972094727164.0 / Ne,4971972094727314.0 / Ne ) , 630 ) ,
01227 pow2( interval( -4537480959802395.0 / Ne,-4537480959802254.0 / Ne ) , 637 ) ,
01228 pow2( interval( 8352835047353300.0 / Ne,8352835047353555.0 / Ne ) , 643 ) ,
01229 pow2( interval( -7753443787904532.0 / Ne,-7753443787904298.0 / Ne ) , 650 ) ,
01230 pow2( interval( 7257653550749169.0 / Ne,7257653550749382.0 / Ne ) , 657 ) ,
01231 pow2( interval( -6850281165773769.0 / Ne,-6850281165773570.0 / Ne ) , 664 ) ,
01232 pow2( interval( 6519305845448896.0 / Ne,6519305845449168.0 / Ne ) , 671 ) ,
01233 pow2( interval( -6255266499085062.0 / Ne,-6255266499084872.0 / Ne ) , 678 ) ,
01234 pow2( interval( 6050802311308162.0 / Ne,6050802311308350.0 / Ne ) , 685 ) ,
01235 pow2( interval( -5900304762620398.0 / Ne,-5900304762620223.0 / Ne ) , 692 ) ,
01236 pow2( interval( 5799657649647993.0 / Ne,5799657649648165.0 / Ne ) , 699 ) ,
01237 pow2( interval( -5746047975553302.0 / Ne,-5746047975553134.0 / Ne ) , 706 ) ,
01238 pow2( interval( 5737835419331524.0 / Ne,5737835419331693.0 / Ne ) , 713 ) ,
01239 pow2( interval( -5774471890994117.0 / Ne,-5774471890993944.0 / Ne ) , 720 ) ,
01240 pow2( interval( 5856465763387432.0 / Ne,5856465763387600.0 / Ne ) , 727 ) ,
01241 pow2( interval( -5985387992102590.0 / Ne,-5985387992102406.0 / Ne ) , 734 ) ,
01242 pow2( interval( 6163919695584074.0 / Ne,6163919695584257.0 / Ne ) , 741 ) ,
01243 pow2( interval( -6395943042753787.0 / Ne,-6395943042753502.0 / Ne ) , 748 ) ,
01244 pow2( interval( 6686679647283150.0 / Ne,6686679647283350.0 / Ne ) , 755 ) ,
01245 pow2( interval( -7042883260256940.0 / Ne,-7042883260256730.0 / Ne ) , 762 ) ,
01246 pow2( interval( 7473096566380533.0 / Ne,7473096566380749.0 / Ne ) , 769 ) ,
01247 pow2( interval( -7987985534527481.0 / Ne,-7987985534527243.0 / Ne ) , 776 ) ,
01248 pow2( interval( 8600769311605383.0 / Ne,8600769311605633.0 / Ne ) , 783 ) ,
01249 pow2( interval( -4663884705694464.0 / Ne,-4663884705694325.0 / Ne ) , 791 ) ,
01250 pow2( interval( 5094554684614484.0 / Ne,5094554684614634.0 / Ne ) , 798 ) ,
01251 pow2( interval( -5604802840349871.0 / Ne,-5604802840349701.0 / Ne ) , 805 ) ,
01252 pow2( interval( 6209951739735886.0 / Ne,6209951739736072.0 / Ne ) , 812 ) ,
01253 pow2( interval( -6928963530888061.0 / Ne,-6928963530887851.0 / Ne ) , 819 ) ,
01254 pow2( interval( 7785368708274196.0 / Ne,7785368708274423.0 / Ne ) , 826 ) ,
01255 pow2( interval( -8808459126256481.0 / Ne,-8808459126256060.0 / Ne ) , 833 ) ,
01256 pow2( interval( 5017412797579486.0 / Ne,5017412797579638.0 / Ne ) , 841 ) ,
01257 pow2( interval( -5755173329981532.0 / Ne,-5755173329981361.0 / Ne ) , 848 ) ,
01258 pow2( interval( 6646385258439176.0 / Ne,6646385258439444.0 / Ne ) , 855 ) ,
01259 pow2( interval( -7727539896552529.0 / Ne,-7727539896552294.0 / Ne ) , 862 ) ,
01260 pow2( interval( 4522473425691912.0 / Ne,4522473425692052.0 / Ne ) , 870 ) ,
01261 pow2( interval( -5328812572761788.0 / Ne,-5328812572761623.0 / Ne ) , 877 ) ,
01262 pow2( interval( 6320558000502691.0 / Ne,6320558000502885.0 / Ne ) , 884 ) ,
01263 pow2( interval( -7546265781200776.0 / Ne,-7546265781200489.0 / Ne ) , 891 ) ,
01264 pow2( interval( 4534316912522546.0 / Ne,4534316912522688.0 / Ne ) , 899 ) ,
01265 pow2( interval( -5484491485989575.0 / Ne,-5484491485989407.0 / Ne ) , 906 ) ,
01266 pow2( interval( 6676632315202014.0 / Ne,6676632315202302.0 / Ne ) , 913 ) ,
01267 pow2( interval( -8180074398476253.0 / Ne,-8180074398476014.0 / Ne ) , 920 ) ,
01268 pow2( interval( 5042989707083422.0 / Ne,5042989707083666.0 / Ne ) , 928 ) ,
01269 pow2( interval( -6257379418480333.0 / Ne,-6257379418480019.0 / Ne ) , 935 ) ,
01270 pow2( interval( 7813097673618694.0 / Ne,7813097673619043.0 / Ne ) , 942 ) ,
01271 pow2( interval( -4908325621754370.0 / Ne,-4908325621754217.0 / Ne ) , 950 ) ,
01272 pow2( interval( 6205346227418363.0 / Ne,6205346227418597.0 / Ne ) , 957 ) ,
01273 pow2( interval( -7893590972392525.0 / Ne,-7893590972392227.0 / Ne ) , 964 ) ,
01274 pow2( interval( 5051411882876310.0 / Ne,5051411882876506.0 / Ne ) , 972 ) ,
01275 pow2( interval( -6504655602059905.0 / Ne,-6504655602059583.0 / Ne ) , 979 ) ,
01276 pow2( interval( 8426810051054742.0 / Ne,8426810051054986.0 / Ne ) , 986 ) ,
01277 pow2( interval( -5491407534973626.0 / Ne,-5491407534973452.0 / Ne ) , 994 ) ,
01278 pow2( interval( 7199960218142557.0 / Ne,7199960218142768.0 / Ne ) , 1001 ) ,
01279 pow2( interval( -4748178637044143.0 / Ne,-4748178637044000.0 / Ne ) , 1009 ) ,
01280 pow2( interval( 6299691458188962.0 / Ne,6299691458189149.0 / Ne ) , 1016 ) };
01281
01282
01283
01284
01285
01286 inline int round_g(const real& x) throw()
01287
01288
01289
01290
01291
01292
01293
01294
01295
01296
01297
01298
01299 {
01300 int n = ifloor(_double(x));
01301 n = (n>=0)? 0:-n;
01302
01303 return n;
01304 }
01305
01306 real gamr_even_Ma(const real& x1, const real& x2, int n1)
01307 {
01308 real y;
01309
01310 if ( x2<Inf(gam_rxi[n1]) || Sup(gam_rxi[n1])<x1 )
01311 {
01312 y = (x1<Inf(gam_rxi[n1]))? gammar(x2) : gammar(x1);
01313 y *= q_gammarp;
01314 }
01315 else
01316 y = Sup(gam_ryi[n1]);
01317
01318 return y;
01319 }
01320
01321 real gamr_even_Mi(const real& x1, const real& x2, int n1)
01322 {
01323 real y,y1;
01324
01325 if ( x2<Inf(gam_rxi[n1]) || Sup(gam_rxi[n1])<x1 )
01326 {
01327 std::cout << "Leere Menge:" << std::endl;
01328 y = (x1<Inf(gam_rxi[n1]))? gammar(x1) : gammar(x2);
01329 y *= q_gammarm;
01330 }
01331 else
01332 {
01333 y1 = gammar(x1)*q_gammarm;
01334 y = gammar(x2)*q_gammarm;
01335 if (y1<y) y=y1;
01336 }
01337
01338 return y;
01339 }
01340
01341 real gamr_odd_Mi(const real& x1, const real& x2, int n1)
01342 {
01343 real y;
01344
01345 if ( x2<Inf(gam_rxi[n1]) || Sup(gam_rxi[n1])<x1 )
01346 {
01347 y = (x1<Inf(gam_rxi[n1]))? gammar(x2) : gammar(x1);
01348 y *= q_gammarp;
01349 }
01350 else
01351 y = Inf(gam_ryi[n1]);
01352
01353 return y;
01354 }
01355
01356 real gamr_odd_Ma(const real& x1, const real& x2, int n1)
01357 {
01358 real y,y1;
01359
01360 if ( x2<Inf(gam_rxi[n1]) || Sup(gam_rxi[n1])<x1 )
01361 {
01362 std::cout << "Leere Menge:" << std::endl;
01363 y = (x1<Inf(gam_rxi[n1]))? gammar(x1) : gammar(x2);
01364 y *= q_gammarm;
01365 }
01366 else
01367 {
01368 y1 = gammar(x1)*q_gammarm;
01369 y = gammar(x2)*q_gammarm;
01370 if (y1>y) y=y1;
01371 }
01372
01373 return y;
01374 }
01375
01376 interval gammar(const interval& x)
01377
01378
01379 {
01380 interval y;
01381 real x0, x1(Inf(x)), x2(Sup(x)), y0,y1(0),y2;
01382 int n1,n2;
01383
01384 n1 = round_g(x1);
01385 n2 = round_g(x2);
01386 if (x1==x2)
01387 if (x1==-n1) y2 = y1;
01388 else
01389 {
01390 y1 = gammar(x1);
01391 y2 = y1;
01392
01393 if (y1<0)
01394 {
01395 y1 = y1*q_gammarp;
01396 y2 = y2*q_gammarm;
01397 }
01398 else
01399 {
01400 y1 = y1*q_gammarm;
01401 y2 = y2*q_gammarp;
01402 }
01403 }
01404 else
01405 {
01406 if (n1%2==0)
01407 {
01408 if (n1==n2)
01409 {
01410 y1 = gamr_even_Mi(x1,x2,n1);
01411 y2 = gamr_even_Ma(x1,x2,n1);
01412 }
01413 else
01414 if (n2==n1-1)
01415 {
01416 y1 = gamr_odd_Mi(-n2,x2,n2);
01417 y2 = gamr_even_Ma(x1,-n2,n1);
01418 }
01419 else
01420 {
01421 y1 = Inf(gam_ryi[n1-1]);
01422 y2 = gamr_even_Ma(x1,-n1+1,n1);
01423 x0 = x2;
01424 if (x2>n1-3 && x2<0)
01425 x0 = n1-3;
01426 y0 = gamr_even_Ma(-n1+2,x0,n1-2);
01427 if (y0>y2) y2 = y0;
01428
01429 if (n1==4 && n2==0)
01430 {
01431 y0 = gamr_even_Ma(0,x2,0);
01432 if (y0>y2) y2=y0;
01433 }
01434 }
01435 }
01436 else
01437 {
01438 if (n1==n2)
01439 {
01440 y1 = gamr_odd_Mi(x1,x2,n1);
01441 y2 = gamr_odd_Ma(x1,x2,n1);
01442 }
01443 else
01444 if (n2==n1-1)
01445 {
01446 y1 = gamr_odd_Mi(x1,-n2,n1);
01447 y2 = gamr_even_Ma(-n2,x2,n2);
01448 }
01449 else
01450 if (n2==n1-2)
01451 {
01452 y1 = gamr_odd_Mi(x1,n1-1,n1);
01453 y2 = gamr_odd_Mi(-n1+2,x2,n1-2);
01454 if (y2<y1) y1 = y2;
01455 y2 = Sup( gam_ryi[n1-1] );
01456 }
01457 else
01458 {
01459 y1 = gamr_odd_Mi(x1,n1-1,n1);
01460 y2 = Inf( gam_ryi[n1-2] );
01461 if (y2<y1) y1 = y2;
01462
01463 if (n1==3)
01464 {
01465 y2 = Sup( gam_ryi[n1-1]);
01466 y0 = gamr_even_Ma(0,x2,0);
01467 if (y0>y2) y2=y0;
01468 }
01469 else
01470 y2 = Sup( gam_ryi[n1-1] );
01471 }
01472
01473 }
01474 }
01475
01476 y = interval(y1,y2);
01477 return y;
01478 }
01479
01480 interval gamma(const interval& x)
01481
01482
01483 {
01484 return 1/gammar(x);
01485 }
01486
01487
01488 }
01489