37#include <l_cimath.hpp>
42 inline l_real min(
const l_real& a,
const l_real& b)
47 inline l_real max(
const l_real& a,
const l_real& b)
52 inline const l_interval& ONE_INTERVAL()
54 static const l_interval one = l_interval(1.0);
58bool disjoint(
const l_interval& x,
const l_interval& y)
60 l_real ix( Inf(x) ),iy( Inf(y) ),sx( Sup(x) ), sy( Sup(y) );
61 l_real inf( ( ix > iy )? ix : iy );
62 l_real sup( ( sx < sy )? sx : sy );
107 int stagsave = stagprec,
112 bool grob = ( (Sup(Re(dz)) > succ(succ(Inf(Re(dz))))) ||
113 (Sup(Im(dz)) > succ(succ(Inf(Im(dz))))) );
115 if (stagprec==1 || grob) y =
exp(dz);
118 if (stagprec < stagmax) stagprec++;
119 else stagprec = stagmax;
145 int stagsave = stagprec,
147 if (stagprec>stagmax) stagprec = stagmax;
159 if (h < cancl_test && cos_y < cancl_test)
179 int stagsave = stagprec,
184 bool grob = ( (Sup(Re(dz)) > succ(succ(Inf(Re(dz))))) ||
185 (Sup(Im(dz)) > succ(succ(Inf(Im(dz))))) );
187 if (stagprec==1 || grob) y =
cos(dz);
190 if (stagprec < stagmax) stagprec++;
191 else stagprec = stagmax;
204 int stagsave = stagprec,
209 bool grob = ( (Sup(Re(dz)) > succ(succ(Inf(Re(dz))))) ||
210 (Sup(Im(dz)) > succ(succ(Inf(Im(dz))))) );
212 if (stagprec==1 || grob) y =
sin(dz);
215 if (stagprec < stagmax) stagprec++;
216 else stagprec = stagmax;
229 int stagsave = stagprec,
234 bool grob = ( (Sup(Re(dz)) > succ(succ(Inf(Re(dz))))) ||
235 (Sup(Im(dz)) > succ(succ(Inf(Im(dz))))) );
237 if (stagprec==1 || grob) y =
cosh(dz);
240 if (stagprec < stagmax) stagprec++;
241 else stagprec = stagmax;
254 int stagsave = stagprec,
259 bool grob = ( (Sup(Re(dz)) > succ(succ(Inf(Re(dz))))) ||
260 (Sup(Im(dz)) > succ(succ(Inf(Im(dz))))) );
262 if (stagprec==1 || grob) y =
sinh(dz);
265 if (stagprec < stagmax) stagprec++;
266 else stagprec = stagmax;
282 imz(Im(z)), imza(
abs(imz));
290 accumulate(akku,irez,irez);
291 accumulate(akku,-simz,simz);
295 accumulate(akku,srez,srez);
296 accumulate(akku,-iimz,iimz);
322void horizontal_check(
323 const l_interval& hy,
const l_interval& cosh_2y, l_real irez, l_real srez,
324 const l_interval& hxl,
325 const l_interval& hxu, l_real& resxl, l_real& resxu )
339 bool both =
false, left =
false, right =
false;
347 res_l =
cos( 2 * hxl ) - cosh_2y,
348 res_u =
cos( 2 * hxu ) - cosh_2y;
350 if( Inf( res_l * res_u ) > 0.0 )
355 if( Sup( res_l * res_u ) < 0.0 )
359 if( Inf( res_l ) > 0.0 )
374 sin_2xl =
sin( 2 * hxl ),
375 sin_2xu =
sin( 2 * hxu );
377 if( !disjoint( l_interval(0), res_l ) )
380 if( Inf( sin_2xl ) >= 0.0 )
385 res_l = -l_interval(1);
389 if( Sup( sin_2xl ) <= 0.0 )
394 res_l = l_interval(1);
404 if( !disjoint( l_interval(0), res_u ) )
407 if( Inf( sin_2xu ) >= 0.0 )
412 res_u = l_interval(1);
416 if( Sup( sin_2xu ) <= 0.0 )
421 res_u = -l_interval(1);
433 if( Inf( res_l * res_u ) < 0.0 )
441 l_interval re_tan = 1 /
sinh( 2 *
abs( hy ) );
446 resxl = min( resxl, Inf( re_tan ) );
447 resxu = max( resxu, Sup( re_tan ) );
453 resxl = min( resxl, -Sup( re_tan ) );
454 resxu = max( resxu, -Inf( re_tan ) );
459l_cinterval Tan(
const l_cinterval& z )
noexcept
474 hxl(irez), hxu(srez), hyl(iimz), hyu(simz);
477 resxl, resxu, resyl, resyu;
481 if( ( !disjoint( l_interval(0), imz ) ) &&
482 ( !disjoint( l_interval(0),
cos( rez ) ) ) )
483 cxscthrow (STD_FKT_OUT_OF_DEF(
"l_cinterval tan( const l_cinterval& z); Pole(s) in z"));
490 cos_2rez =
cos( 2 * rez ),
491 sinh_imz_2 =
sqr(
sinh( imz ) );
494 re_tan_l=
sin( 2*hxl ) / ( 2*(
sqr(
cos( hxl ) ) + sinh_imz_2 ) ),
495 re_tan_u=
sin( 2*hxu ) / ( 2*(
sqr(
cos( hxu ) ) + sinh_imz_2 ) );
497 resxl = min( Inf( re_tan_l ), Inf( re_tan_u ) );
498 resxu = max( Sup( re_tan_l ), Sup( re_tan_u ) );
510 cosh_2yl = - 1 /
cosh( 2 * hyl ),
511 cosh_2yu = - 1 /
cosh( 2 * hyu );
513 if( !disjoint( cos_2rez, cosh_2yl ) && iimz != 0.0 )
515 horizontal_check(hyl,cosh_2yl,irez,srez,hxl,hxu,resxl,resxu);
517 if( !disjoint( cos_2rez, cosh_2yu ) && simz != 0.0 )
519 horizontal_check(hyu,cosh_2yu,irez,srez,hxl,hxu,resxl,resxu);
527 cos_rez_2 =
sqr(
cos( rez ) );
530 im_tan_l =
sinh( 2*hyl ) / (2*(cos_rez_2 +
sqr(
sinh( hyl ) ))),
531 im_tan_u =
sinh( 2*hyu ) / (2*(cos_rez_2 +
sqr(
sinh( hyu ) )));
533 resyl = min( Inf( im_tan_l ), Inf( im_tan_u ) );
534 resyu = max( Sup( im_tan_l ), Sup( im_tan_u ) );
543 cos_2xl =
cos( 2 * hxl ),
544 cos_2xu =
cos( 2 * hxu );
551 imz_h = l_interval( iimz, min( simz, l_real(0.0) ) ),
552 cosh_2imz = - 1 /
cosh( 2 * imz_h );
554 if( ( !disjoint( cosh_2imz, cos_2xl ) ) )
558 im_tan = - 1 /
abs(
sin( 2 * hxl ) );
559 resyl = min( resyl, Inf( im_tan ) );
560 resyu = max( resyu, Sup( im_tan ) );
562 if( ( !disjoint( cosh_2imz, cos_2xu ) ) )
566 im_tan = - 1 /
abs(
sin( 2 * hxu ) );
567 resyl = min( resyl, Inf( im_tan ) );
568 resyu = max( resyu, Sup( im_tan ) );
575 imz_h = l_interval( max( iimz, l_real(0.0) ), simz ),
576 cosh_2imz = - 1 /
cosh( 2 * imz_h );
578 if( ( !disjoint( cosh_2imz, cos_2xl ) ) )
582 im_tan = + 1 /
abs(
sin( 2 * hxl ) );
583 resyl = min( resyl, Inf( im_tan ) );
584 resyu = max( resyu, Sup( im_tan ) );
586 if( ( !disjoint( cosh_2imz, cos_2xu ) ) )
590 im_tan = + 1 /
abs(
sin( 2 * hxu ) );
591 resyl = min( resyl, Inf( im_tan ) );
592 resyu = max( resyu, Sup( im_tan ) );
596 y = l_cinterval( l_interval(resxl,resxu ),l_interval(resyl,resyu ) );
617 const real S = 1e-15;
618 int stagsave = stagprec,
620 if (stagprec < stagmax) stagprec++;
621 else stagprec = stagmax;
628 double dbr = _double(x), pi(3.14159265358979323);
632 k = (s>=0)? CUTINT(dbr+0.5) : CUTINT(dbr-0.5);
634 cxscthrow (STD_FKT_OUT_OF_DEF(
635 "l_cinterval tan(const l_cinterval& z); z out of range"));
638 u = Re(eps); u =
abs(u);
639 v = Im(eps); v =
abs(v);
641 if (Sup(u)<S && Sup(v)<S)
666 const real S = 1e-15;
667 int stagsave = stagprec,
669 if (stagprec < stagmax) stagprec++;
670 else stagprec = stagmax;
678 double dbr = _double(x), pi(3.14159265358979323);
682 k = (s>=0)? CUTINT(dbr+0.5) : CUTINT(dbr-0.5);
684 cxscthrow (STD_FKT_OUT_OF_DEF(
685 "l_cinterval cot(const l_cinterval& z); z out of range"));
687 u = Re(eps); u =
abs(u);
688 v = Im(eps); v =
abs(v);
689 if (Sup(u)<S && Sup(v)<S)
707 int stagsave = stagprec,
709 if (stagprec < stagmax) stagprec++;
710 else stagprec = stagmax;
730 int stagsave = stagprec,
732 if (stagprec < stagmax) stagprec++;
733 else stagprec = stagmax;
756l_interval Atan(
const l_interval& y,
const l_interval& x)
noexcept
795 signq = signx * signy;
798 else res =
atan(y/x);
804l_interval Atan(
const l_interval& y,
const l_real& x)
noexcept
848 hxl(irez), hxu(srez), hyl(iimz), hyu(simz);
855 resl = ( srez > 0.0 ? Inf( Atan( hyl,hxu ) ) :
858 resu = ( irez > 0.0 ? Sup( Atan( hyu,hxl ) ) :
868 resl = ( irez < 0.0 ? Inf( Atan( hyu,hxl ) -
Pi_l_interval() ) :
869 ( irez > 0.0 ? Inf( Atan( hyl,hxl ) ) :
871 resu = ( srez < 0.0 ? Sup( Atan( hyl,hxu ) -
Pi_l_interval() ) :
872 ( srez > 0.0 ? Sup( Atan( hyu,hxu ) ) :
883 resl = iimz < 0.0 ? Inf( Atan( hyl,hxl ) ) :
l_real(0.0);
884 return l_interval( resl, Sup( Atan( hyu,hxl ) ) );
892 cxscthrow (STD_FKT_OUT_OF_DEF(
"l_interval Arg( const l_cinterval& z ); z contains negative real numbers"));
910 if( iimz == 0.0 && simz == 0.0 )
949 if( irez < 0.0 && iimz <= 0.0 && simz >= 0.0 )
956 resu = ( ( iimz < 0.0 && simz == 0.0 ) ?
l_real(0.0) :
972 resu = ( iimz < 0.0 ?
982 resl = ( simz > 0.0 ?
985 resu = ( iimz < 0.0 ? ( simz > 0.0 ?
986 Sup( Atan( hyl,srez ) +
988 Sup( Atan( hyl,srez ) -
1017l_interval arg_inclmon(
const l_cinterval& z )
noexcept
1019 if( Inf( Re(z) ) < 0.0 && Inf( Im(z) ) <= 0.0 && Sup( Im(z) ) >= 0.0 )
1039 int stagsave = stagprec,
1041 if (stagprec < stagmax) stagprec++;
1042 else stagprec = stagmax;
1046 srez = Sup( Re(z) ),
1047 simz = Sup( Im(z) ),
1048 iimz = Inf( Im(z) );
1051 if ( Inf(a1) == 0.0 && Inf(a2) == 0.0 )
1053 cxscthrow(STD_FKT_OUT_OF_DEF(
"l_cinterval Ln( const l_cinterval& z ); z contains 0"));
1054 if ( srez<0 && iimz<0 && simz>=0 )
1055 cxscthrow(STD_FKT_OUT_OF_DEF(
"l_cinterval Ln( const l_cinterval& z ); z not allowed"));
1058 stagprec = stagsave;
1072 int stagsave = stagprec,
1074 if (stagprec < stagmax) stagprec++;
1075 else stagprec = stagmax;
1080 if ( Inf(a1) == 0.0 && Inf(a2) == 0.0 )
1082 cxscthrow(STD_FKT_OUT_OF_DEF
1083 (
"l_cinterval ln( const l_cinterval& z ); z contains 0"));
1086 stagprec = stagsave;
1098 int stagsave = stagprec,
1100 if (stagprec > stagmax)
1103 const real c1 = 1.0;
1107 srez = Sup( Re(z) ),
1108 simz = Sup( Im(z) ),
1109 iimz = Inf( Im(z) );
1112 cxscthrow(STD_FKT_OUT_OF_DEF(
1113 "l_cinterval lnp1(const l_cinterval& z); z contains -1"));
1114 if ( srez<-1 && iimz<0 && simz>=0 )
1115 cxscthrow(STD_FKT_OUT_OF_DEF(
1116 "l_cinterval lnp1(const l_cinterval& z); z not allowed"));
1118 if (Sup(abs_z) < c1)
1121 abs_z =
lnp1( abs_z*(2+abs_z) +
sqr(Im(z)) );
1127 stagprec = stagsave;
1149l_interval Sqrt_zpx(
const l_interval& x,
const l_interval& y,
int& d )
1156 const int c1 = 1021;
1157 l_real Infx(Inf(x)), Infy(Inf(y));
1159 l_interval xc(
abs(x)),yc(y),res;
1163 if ((ex_x>=c1) || (ex_y>=c1))
1181 if (ex_y>ex_x) ex_x = ex_y;
1182 if (ex_x%2 != 0) ex_x--;
1196l_interval Re_Sqrt_point(
const l_interval& rez,
const l_interval& imz )
1214 else return l_interval(0.0);
1218 res = Sqrt_zpx(rez,imz,d);
1233l_interval Im_Sqrt_point(
const l_interval& rez,
const l_interval& imz )
1249 if( irez >= 0.0 )
return l_interval(0.0);
1250 else return sqrt(-rez);
1254 res = Sqrt_zpx(rez,imz,d);
1264 if( iimz > 0.0 )
return res;
1278 int stagsave = stagprec,
1280 if (stagprec < stagmax) stagprec++;
1281 else stagprec = stagmax;
1285 irez = Inf( Re(z) ),
1286 srez = Sup( Re(z) ),
1287 iimz = Inf( Im(z) ),
1288 simz = Sup( Im(z) );
1290 hxl( irez ), hxu( srez ), hyl( iimz ), hyu( simz );
1292 resxl, resxu, resyl, resyu;
1294 if( irez < 0.0 && iimz < 0.0 && simz >= 0.0 )
1297 cxscthrow(STD_FKT_OUT_OF_DEF(
1298 "l_cinterval sqrt(const l_cinterval& z); z not in the principal branch."));
1302 resxl = Inf( Re_Sqrt_point( hxl,hyl ) );
1303 resxu = Sup( Re_Sqrt_point( hxu,hyu ) );
1305 resyl = Inf( Im_Sqrt_point( hxu,hyl ) );
1306 resyu = Sup( Im_Sqrt_point( hxl,hyu ) );
1309 resxl = Inf( Re_Sqrt_point( hxl,hyu ) );
1310 resxu = Sup( Re_Sqrt_point( hxu,hyl ) );
1312 resyl = Inf( Im_Sqrt_point( hxl,hyl ) );
1313 resyu = Sup( Im_Sqrt_point( hxu,hyu ) );
1315 resxl = Inf(
sqrt( hxl ) );
1316 resxu = ( -iimz > simz ? Sup( Re_Sqrt_point( hxu, hyl ) )
1317 : Sup( Re_Sqrt_point( hxu, hyu ) ) );
1318 resyl = Inf( Im_Sqrt_point( hxl,hyl ) );
1319 resyu = Sup( Im_Sqrt_point( hxl,hyu ) );
1323 stagprec = stagsave;
1334 const real c = 0.125;
1335 int stagsave = stagprec,
1337 if (stagprec>stagmax) stagprec = stagmax;
1341 l_real Sup_absz(Sup(absz));
1344 res = z / (
sqrt(z+1) + 1);
1346 res =
sqrt(z+1) - 1;
1348 stagprec = stagsave;
1359 int stagsave = stagprec,
1361 if (stagprec>stagmax) stagprec = stagmax;
1365 l_real Inf_absz(Inf(absz));
1370 Inf_absz = Sup(absz);
1375 res = (Inf(Re(z))>=0)? z + res : -z + res;
1380 if ( Sup(
abs(z-res))<0.5 || Sup(
abs(z+res))<0.5 )
1384 res =
sqrt( (1-res)*(1+res) );
1391 stagprec = stagsave;
1403 int stagsave = stagprec,
1405 if (stagprec>stagmax) stagprec = stagmax;
1409 l_real Inf_absz(Inf(absz));
1414 Inf_absz = Sup(absz);
1418 res = (Inf(Re(z))>=0)? z + res : -z + res;
1429 stagprec = stagsave;
1440 int stagsave = stagprec,
1442 if (stagprec>stagmax) stagprec = stagmax;
1446 l_real Inf_absz(Inf(absz));
1451 Inf_absz = Sup(absz);
1457 res = (Inf(Im(z))>=0)? -u + res : u + res;
1466 stagprec = stagsave;
1479 irez = Inf( Re(z) ),
1480 srez = Sup( Re(z) ),
1481 iimz = Inf( Im(z) ),
1482 simz = Sup( Im(z) );
1484 hxl( irez ), hxu( srez ), hyl( iimz ), hyu( simz );
1486 resxl, resxu, resyl, resyu;
1489 if( irez < 0.0 && iimz <= 0.0 && simz >= 0.0 )
1498 resxl = Inf( Re_Sqrt_point( hxl, hyl ) );
1499 resxu = Sup( Re_Sqrt_point( hxu, hyu ) );
1502 resyl = Inf( Im_Sqrt_point( hxu, hyl ) );
1503 resyu = Sup( Im_Sqrt_point( hxl, hyu ) );
1515 resxu = Sup( Re_Sqrt_point( hxu, hyl ) );
1518 resyl = Inf( Im_Sqrt_point( hxl, hyl ) );
1519 resyu = ( srez > 0.0 ?
l_real(0.0) : -Inf(
sqrt( -hxu ) ) );
1531 resxl = Inf( Im_Sqrt_point( -hxu, hyl ) );
1532 resxu = Sup( Re_Sqrt_point( hxu, hyu ) );
1535 resyl = Inf(
sqrt( -hxu ) );
1536 resyu = ( - iimz > simz ? Sup( Re_Sqrt_point( -hxl, hyl ) ) : Sup( Im_Sqrt_point( hxl, hyu ) ) );
1544 resxu = ( - iimz > simz ? Sup( Re_Sqrt_point( hxu, hyl ) ) : Sup( Re_Sqrt_point( hxu, hyu ) ) );
1547 resyl = Inf( Im_Sqrt_point( hxl, hyl ) );
1548 resyu = Sup( Im_Sqrt_point( hxl, hyu ) );
1558 std::list<l_cinterval> res;
1560 res.push_back( -w );
1569l_interval Re_Sqrt_point(
const l_interval& rez,
const l_interval& imz,
1579 l_interval abs_z_2 =
sqr( rez ) +
sqr( imz );
1580 if( Sup( abs_z_2 ) == 0.0 )
1582 return l_interval(0);
1584 return sqrt( abs_z_2, 2 * n ) *
1585 cos(
Arg( l_cinterval( rez, imz ) ) / n );
1588l_interval Im_Sqrt_point(
const l_interval& rez,
const l_interval& imz,
1598 l_interval abs_z_2 =
sqr( rez ) +
sqr( imz );
1599 if( Sup( abs_z_2 ) == 0.0 )
1601 return l_interval(0);
1603 return sqrt( abs_z_2, 2 * n ) *
1604 sin(
Arg( l_cinterval( rez, imz ) ) / n );
1622 irez = Inf( Re(z) ),
1623 srez = Sup( Re(z) ),
1624 iimz = Inf( Im(z) ),
1625 simz = Sup( Im(z) );
1627 hxl( irez ), hxu( srez ), hyl( iimz ), hyu( simz );
1629 resxl, resxu, resyl, resyu;
1631 if( irez < 0.0 && iimz <= 0.0 && simz >= 0.0 )
1634 cxscthrow(STD_FKT_OUT_OF_DEF(
"l_cinterval sqrt(const l_cinterval& z, int n ); z contains negative real values."));
1651 / ( 2 * ( n-1 ) ) );
1652 l_real tanglel = Inf( tangle ),
1653 tangleu = Sup( tangle );
1657 if ( irez >= 0.0 || Sup( hyl / irez ) <= tanglel )
1660 resxl = Inf( Re_Sqrt_point( hxl, hyl, n ) );
1663 if( srez < 0.0 && Inf( hyl / srez ) >= tangleu )
1666 resxl = Inf( Re_Sqrt_point( hxu, hyl, n ) );
1670 resxl = Inf( Re_Sqrt_point( iimz / tangle ,
1676 if ( irez >= 0.0 || Sup( hyu / irez ) <= tanglel )
1679 resxu = Sup( Re_Sqrt_point(
l_interval(srez),
1683 if ( srez < 0.0 && Inf( hyu / srez ) >= tangleu )
1686 resxu = Sup( Re_Sqrt_point( hxl, hyu, n ) );
1690 resxu = max( Sup( Re_Sqrt_point( hxl, hyu, n ) ),
1691 Sup( Re_Sqrt_point( hxu, hyu, n ) ) );
1696 if ( srez >= 0.0 || Sup( hyl / srez ) <= tanglel )
1699 resyl = Inf( Im_Sqrt_point( hxu, hyl, n ) );
1702 if( Inf( hyu / srez ) >= tangleu )
1705 resyl = Inf( Im_Sqrt_point( hxu, hyu, n ) );
1709 resyl = Inf(Im_Sqrt_point( hxu, srez * tangle, n ));
1714 if( irez >= 0.0 || Sup( hyl / irez ) <= tanglel )
1717 resyu = Sup( Im_Sqrt_point( hxl, hyu, n ) );
1720 if( Inf( hyu / irez ) >= tangleu )
1723 resyu = Sup( Im_Sqrt_point( hxl, hyl, n ) );
1727 resyu = max( Sup( Im_Sqrt_point( hxl, hyl, n ) ),
1728 Sup( Im_Sqrt_point( hxl, hyu, n ) ) );
1736 resxl = ( irez == 0.0 ?
l_real(0.0) :
1737 Inf(
sqrt( hxl, n ) ) );
1738 resxu = ( - iimz > simz ?
1739 Sup( Re_Sqrt_point( hxu, hyl, n ) ) :
1740 Sup( Re_Sqrt_point( hxu, hyu, n ) ) );
1743 resyl = Inf( Im_Sqrt_point( hxl, hyl, n ) );
1744 resyu = Sup( Im_Sqrt_point( hxl, hyu, n ) );
1776 std::list<l_cinterval> res;
1788 else if( n == 2 )
return sqrt_all( z );
1792 arg_z =
arg( z ), root_abs_z =
sqrt(
abs( z ), n );
1794 for(
int k = 0; k < n; k++)
1799 root_abs_z *
sin( arg_k ) ) );
1849 if( n < 0 && Inf( abs_z ) == 0.0 )
1851 cxscthrow (STD_FKT_OUT_OF_DEF(
"l_cinterval power_fast(const l_cinterval& z, int n ); z contains 0."));
1852 if( Sup( abs_z ) == 0.0 )
1860 abs_z_n *
sin( n * arg_z ) );
1877l_cinterval power_point(
const l_cinterval& z,
int n )
1886 if( Inf( Re(z) ) == 0.0 && Inf( Im(z) ) == 0.0 )
1888 return l_cinterval( l_interval(0) );
1892 l_interval arg_z =
arg(z);
1893 l_interval abs_z_n =
exp( n * ln_absz );
1895 return l_cinterval( abs_z_n *
cos( n * arg_z ),
1896 abs_z_n *
sin( n * arg_z ) );
1900void update_res(
const l_cinterval& res,
1901 l_real& resxl, l_real& resxu, l_real& resyl, l_real& resyu )
1905 resxl = min( resxl, Inf( Re(res) ) );
1906 resxu = max( resxu, Sup( Re(res) ) );
1907 resyl = min( resyl, Inf( Im(res) ) );
1908 resyu = max( resyu, Sup( Im(res) ) );
1911int trunc(
const l_real& x)
1913 l_real y(x); y += 0;
1917 int res = int( _double(r) );
1919 if (y[1]<0.0 && res>0) res -= 1;
1920 if (neg) res = -res;
1924void horizontal_check(
1925 const l_interval& hy, l_real hyy,
const l_interval& arg_h,
1926 l_real irez, l_real srez,
1927 l_real& resxl, l_real& resxu, l_real& resyl, l_real& resyu,
int n )
1931 int r_int, il1, il2, iu1, iu2;
1944 iu1 = n-1;
if (iu1<0) iu1 = -iu1;
1946 l_real arg_hlR = Inf( 2 * nofrays * arg_h /
Pi_l_interval() );
1947 if( arg_hlR[1] >= 0.0 )
1948 r_int = trunc(arg_hlR);
1950 r_int = trunc(arg_hlR - 1.0);
1953 l_real arg_huR = Sup( 2 * nofrays * arg_h /
Pi_l_interval() );
1954 if( arg_huR[1] >= 0.0 )
1955 r_int = trunc(arg_huR);
1957 r_int = trunc(arg_huR - 1.0);
1965 if( iu1 > il1 + 3 ) {
1987 else if( srez <= 0.0 )
2012 for(
int i = il2; i <= iu2; i++)
2016 res = power_point( l_cinterval( hy * cotangle , hy ), n );
2017 update_res( res, resxl, resxu, resyl, resyu );
2036 else if( srez <= 0.0 )
2064 il1 = ( il1 > il2 ? il1 : il2 );
2065 iu1 = ( iu1 < iu2 ? iu1 : iu2 );
2072 for(
int i = il1; i <= iu1; i++)
2076 res = power_point( l_cinterval( hy * cotangle , hy ), n );
2077 update_res( res, resxl, resxu, resyl, resyu );
2083 const l_interval& hx, l_real hxx,
const l_interval& arg_h,
2084 l_real iimz, l_real simz,
2085 l_real& resxl, l_real& resxu, l_real& resyl, l_real& resyu,
int n )
2089 int r_int, il1, il2, iu1, iu2;
2102 iu1 = n-1;
if (iu1<0) iu1 = -iu1;
2105 l_real arg_hlR = Inf( 2 * nofrays * arg_h /
Pi_l_interval() );
2106 if( arg_hlR[1] >= 0.0 )
2107 r_int = trunc(arg_hlR);
2109 r_int = trunc(arg_hlR - 1.0);
2112 l_real arg_huR = Sup( 2 * nofrays * arg_h /
Pi_l_interval() );
2113 if( arg_huR[1] >= 0.0 )
2114 r_int = trunc(arg_huR);
2116 r_int = trunc(arg_huR - 1.0);
2123 if( iu1 > il1 + 3 ) {
2145 else if( simz <= 0.0 )
2170 for(
int i = il2; i <= iu2; i++)
2174 res = power_point( l_cinterval( hx, hx * tangle ), n );
2175 update_res( res, resxl, resxu, resyl, resyu );
2194 else if( simz <= 0.0 )
2216 il2 = 2 * nofrays - 3;
2217 iu2 = 2 * nofrays + 3;
2222 il1 = ( il1 > il2 ? il1 : il2 );
2223 iu1 = ( iu1 < iu2 ? iu1 : iu2 );
2230 for(
int i = il1; i <= iu1; i++)
2234 res = power_point( l_cinterval( hx, hx * tangle ), n );
2235 update_res( res, resxl, resxu, resyl, resyu );
2265 if( n < 0 && Inf( abs_z ) == 0.0 )
2267 cxscthrow (STD_FKT_OUT_OF_DEF(
"l_cinterval power(const l_cinterval& z, int n ); z contains 0."));
2268 if( Sup( abs_z ) == 0.0 )
2278 hxl( irez ), hxu( srez ), hyl( iimz ), hyu( simz );
2280 resxl, resxu, resyl, resyu;
2289 resxl = Inf( Re(res) );
2290 resxu = Sup( Re(res) );
2291 resyl = Inf( Im(res) );
2292 resyu = Sup( Im(res) );
2294 update_res( res, resxl, resxu, resyl, resyu );
2296 update_res( res, resxl, resxu, resyl, resyu );
2298 update_res( res, resxl, resxu, resyl, resyu );
2305 if ( 0<=Re(z) && 0<=Im(z) &&
2306 (irez==0 || srez==0 || iimz==0 || simz==0 ) )
2308 resxl, resxu, resyl, resyu );
2321 horizontal_check( hyl, iimz, arg_h, irez, srez,
2322 resxl, resxu, resyl, resyu, n );
2330 horizontal_check( hyu, simz, arg_h, irez, srez,
2331 resxl, resxu, resyl, resyu, n );
2339 vertical_check( hxl, irez, arg_h, iimz, simz,
2340 resxl, resxu, resyl, resyu, n );
2348 vertical_check( hxu, srez, arg_h, iimz, simz,
2349 resxl, resxu, resyl, resyu, n );
2368 return exp( p*
Ln(z) );
2381 return exp( p*
Ln(z) );
2402 if( 0.0 < Inf( abs_z ) )
2411 std::list<l_cinterval> res;
2421 l_interval( -Sup( rad_2 ), -Inf(rad_1) ) ) );
2428 if( Inf( p ) > 0.0 )
2434 l_real rad_p = Sup( abs_z_p );
2436 std::list<l_cinterval> res;
2449 cxscthrow(STD_FKT_OUT_OF_DEF(
"pow_all(l_cinterval, l_interval); 0^p is undefined for p <= 0."));
2450 std::list<l_cinterval> res;
2477l_interval f_aux_asin(
const l_interval& x,
const l_interval& y )
2489 if (y != 0.0 || Inf(res) < 1.0)
2496 cxscthrow (STD_FKT_OUT_OF_DEF(
2497 "l_cinterval asin( const l_cinterval& z); z out of range"));
2503 l_real hlb = max( l_real(1.0),
abs( Sup( x ) ) );
2504 if( Inf( res ) < hlb )
2505 res = l_interval( hlb, Sup(res) );
2509l_interval ACOSH_f_aux(
const l_interval& x,
const l_interval& y )
2525 l_interval res,xa(
abs(x)),ya(
abs(y)),diff, diff1,S1,S2;
2526 l_real rx((Inf(xa))), ry(Inf(ya));
2527 int d,p,ex,ex1,ex2,s(0);
2529 if (rx>2.0 || ry>2.0) res =
acosh( f_aux_asin(x,y) );
2534 S1 = 0.5 + (ya/4) / (
sqrt1px2(ya/2) + 1);
2560 if (ex>=LI_maxexpo1)
2563 if (d%2 != 0) d += 1;
2565 S2 = comp(0.5,ex-d+1) / S2;
2567 S1 = comp(0.5,-d+1) / (
sqrtx2y2(diff,y) + diff);
2580 res =
lnp1( S1*(S1 +
sqrt(xa+1)) );
2588 if (ex2>ex) ex = ex2;
2590 p = -2*ex2 + 1 + ex1;
2595 if (d%2 != 0) d += 1;
2605 else S2 = l_interval(comp(0.5,-d+1));
2608 diff = xa - 1; diff1 = diff;
2610 Times2pown(S2,ex-d);
2623 S2 = S2 / (
sqrtx2y2(diff,ya) + diff);
2627 Times2pown(diff1,s);
2629 Times2pown(ya,-ex2);
2630 diff1 = diff1 / (ya*ya);
2634 res =
sqrt((res + S1)/2);
2654l_interval Asin_beta(
const l_interval& x,
const l_interval& y )
2661 const real c1 = 0.75;
2665 l_interval res,beta,abs_beta,delta,w_delta,xa,Ne,Sqrt_Ne,Kla;
2667 beta = x / ( Ne/2 );
2668 if (Inf(beta)<-1) Inf(beta) = -1;
2669 if (Sup(beta)> 1) Sup(beta) = 1;
2670 abs_beta =
abs(beta);
2671 if (Inf(abs_beta) < c1) res =
asin(beta);
2677 if (neg_x) xa = -xa;
2697 res = l_interval(comp(0.5,-ex+1));
2698 delta =
abs(y)/beta;
2700 w_delta =
sqrt(2*beta)*delta/(Sqrt_Ne *
sqrt(Kla));
2704 delta =
abs(y)/beta;
2706 w_delta =
sqrt(2*beta)*delta / (Sqrt_Ne *
sqrt(Kla));
2708 delta =
sqr(w_delta);
2714 delta = 2*
abs(y) / Ne;
2715 w_delta =
sqrt(2*
abs(y)) / Sqrt_Ne;
2722 w_delta =
sqrt(delta);
2734 res = l_interval(comp(0.5,-ex+1));
2740 delta = beta * Kla / Ne;
2741 w_delta =
sqrt(beta) *
sqrt(Kla) / Sqrt_Ne;
2745 if (neg_x) res = -res;
2752 const real gr = 6.355804e307;
2762 l_interval hxl(irez), hxu(srez), hyl(iimz), hyu(simz);
2764 l_real resxl, resxu, resyl, resyu;
2766 bool bl = iimz< 0.0 && simz>0.0,
2767 raxis = iimz==0.0 && simz==0;
2772 if( (irez<-1 && (bl || (iimz<0 && simz==0))) ||
2773 (srez >1 && (bl || (iimz==0 && simz>0))) )
2774 cxscthrow(STD_FKT_OUT_OF_DEF(
"l_cinterval asin( const l_cinterval& z ); z contains singularities."));
2779 resxl = max(
abs(irez),
abs(srez));
2780 resxu = max(
abs(iimz),
abs(simz));
2781 if (resxl>gr || resxu>gr)
2782 cxscthrow(STD_FKT_OUT_OF_DEF(
"l_cinterval asin( const l_cinterval& z ); z with too large bounds."));
2786 if( iimz < 0.0 && simz > 0.0 )
2790 resxl = Inf(
asin( hxl ) );
2793 resxl = Inf( Asin_beta(hxl,
l_interval( max(-iimz,simz) )) );
2796 resxu = Sup( Asin_beta(hxu,
l_interval( max(-iimz,simz) )) );
2798 resxu = Sup(
asin( hxu ) );
2802 if( ( iimz >= 0.0 && irez >= 0.0 ) || ( simz <= 0.0 && irez <= 0.0 ) )
2806 resxl = Inf( Asin_beta(hxl,hyu) );
2811 resxl = Inf( Asin_beta(hxl,hyl) );
2812 if( ( iimz >= 0.0 && srez >= 0.0 ) || ( simz <= 0.0 && srez <= 0.0 ) )
2816 resxu = Sup( Asin_beta(hxu,hyl) );
2821 resxu = Sup( Asin_beta(hxu,hyu) );
2829 if (srez<0.0) resyl = Inf( ACOSH_f_aux( hxu, hyu ));
2830 else resyl = -Sup( ACOSH_f_aux( hxu, hyu ));
2831 if (irez>0.0) resyu = -Inf( ACOSH_f_aux( hxl, hyu ));
2832 else resyu = Sup( ACOSH_f_aux( hxl, hyu ));
2842 resyl = - Sup( ACOSH_f_aux( hxl, hyl ) );
2844 resyu = - Inf( ACOSH_f_aux( hxu, hyu ) );
2846 resyu = - Inf( ACOSH_f_aux(
l_interval(0), hyu ) );
2851 resyl = - Sup( ACOSH_f_aux( hxu, hyl ) );
2853 resyu = - Inf( ACOSH_f_aux( hxl, hyu ) );
2855 resyu = - Inf( ACOSH_f_aux(
l_interval(0), hyu ) );
2858 else if( iimz >= 0.0 )
2866 resyu = Sup( ACOSH_f_aux( hxl, hyu ) );
2868 resyl = Inf( ACOSH_f_aux( hxu, hyl ) );
2870 resyl = Inf( ACOSH_f_aux(
l_interval(0), hyl ) );
2875 resyu = Sup( ACOSH_f_aux( hxu, hyu ) );
2877 resyl = Inf( ACOSH_f_aux( hxl, hyl ) );
2879 resyl = Inf( ACOSH_f_aux(
l_interval(0), hyl ) );
2890 resyl = - Sup( ACOSH_f_aux( hxl, hyl ) );
2891 resyu = Sup( ACOSH_f_aux( hxl, hyu ) );
2895 resyl = - Sup( ACOSH_f_aux( hxu, hyl ) );
2896 resyu = Sup( ACOSH_f_aux( hxu, hyu ) );
2906l_interval Asin_arg(
const l_interval& x,
const l_interval& y )
2914 l_interval res,Ne,Sqrt_Ne,xa,beta,delta,w_delta,Kla;
2923 if (neg_x) xa = -xa;
2939 res = l_interval(comp(0.5,-ex+1));
2940 delta =
abs(y)/beta;
2942 w_delta =
sqrt(2*beta)*delta/(Sqrt_Ne *
sqrt(Kla));
2945 delta =
abs(y)/beta;
2947 w_delta =
sqrt(2*beta)*delta / (Sqrt_Ne *
sqrt(Kla));
2949 delta =
sqr(w_delta);
2953 delta = 2*
abs(y) / Ne;
2954 w_delta =
sqrt(2*
abs(y)) / Sqrt_Ne;
2958 delta = 4*beta / Ne;
2959 w_delta = 2*
sqrt(beta) / Sqrt_Ne;
2969 res = l_interval(comp(0.5,-ex+1));
2974 delta = beta * Kla / Ne;
2975 w_delta =
sqrt(beta) *
sqrt(Kla) / Sqrt_Ne;
2978 res =
asin( w_delta*
sqrt(2-delta) );
2983l_interval Acos_beta(
const l_interval& x,
const l_interval& y )
2987 const real c1 = 0.75;
2988 l_interval res(0),beta;
2990 if (Inf(beta)<-1) Inf(beta)=-1;
2991 if (Sup(beta)> 1) Sup(beta)= 1;
2994 if (Sup(beta)<-c1) {
2996 }
else res =
acos(beta);
2998 res = Asin_arg(x,y);
3019 const real gr = 6.355804e307;
3031 hxl(irez), hxu(srez), hyl(iimz), hyu(simz);
3033 bool bl = iimz< 0.0 && simz>0.0,
3034 raxis = iimz==0.0 && simz==0;
3036 resxl, resxu, resyl, resyu;
3040 if( (irez<-1 && (bl || (iimz<0 && simz==0))) ||
3041 (srez >1 && (bl || (iimz==0 && simz>0))) )
3042 cxscthrow(STD_FKT_OUT_OF_DEF(
"l_cinterval acos( const l_cinterval& z ); z contains singularities."));
3047 resxl = max(
abs(irez),
abs(srez));
3048 resxu = max(
abs(iimz),
abs(simz));
3049 if (resxl>gr || resxu>gr)
3050 cxscthrow(STD_FKT_OUT_OF_DEF(
"l_cinterval acos( const l_cinterval& z ); z with too large bounds."));
3055 if( iimz < 0.0 && simz > 0.0 )
3058 if( irez <= 0.0 ) resxu = Sup(
acos( hxl ) );
3059 else resxu = Sup( Acos_beta(hxl,
l_interval( max(-iimz,simz) )) );
3062 resxl = Inf( Acos_beta(hxu,
l_interval(max(-iimz,simz))) );
3063 else resxl = Inf(
acos( hxu ) );
3067 if (irez<0 && srez>0)
3070 resxl = Inf( Acos_beta(hxu,hyl) );
3071 resxu = Sup( Acos_beta(hxl,hyl) );
3073 resxl = Inf( Acos_beta(hxu,hyu) );
3074 resxu = Sup( Acos_beta(hxl,hyu) );
3078 if( ( iimz >= 0.0 && irez >= 0.0 ) || ( simz <= 0.0 && irez < 0.0 ) )
3081 resxl = Inf( Acos_beta(hxu,hyl) );
3085 resxl = Inf( Acos_beta(hxu,hyu) );
3087 if( ( iimz >= 0.0 && srez > 0.0 ) || ( simz <= 0.0 && srez <= 0.0 ) )
3090 resxu = Sup( Acos_beta(hxl,hyu) );
3094 resxu = Sup( Acos_beta(hxl,hyl) );
3102 if (srez<0.0) resyl = Inf( ACOSH_f_aux( hxu, hyu ));
3103 else resyl = -Sup( ACOSH_f_aux( hxu, hyu ));
3104 if (irez>0.0) resyu = -Inf( ACOSH_f_aux( hxl, hyu ));
3105 else resyu = Sup( ACOSH_f_aux( hxl, hyu ));
3112 if( irez + srez < 0.0 )
3115 resyl = -Sup( ACOSH_f_aux( hxl, hyl ) );
3117 resyu = -Inf( ACOSH_f_aux( hxu, hyu ) );
3119 resyu = -Inf( ACOSH_f_aux(
l_interval(0), hyu ) );
3124 resyl = -Sup( ACOSH_f_aux( hxu, hyl ) );
3126 resyu = -Inf( ACOSH_f_aux( hxl, hyu ) );
3128 resyu = -Inf( ACOSH_f_aux(
l_interval(0), hyu ) );
3131 else if( iimz >= 0.0 )
3139 resyu = Sup( ACOSH_f_aux( hxl, hyu ) );
3141 resyl = Inf( ACOSH_f_aux( hxu, hyl ) );
3143 resyl = Inf( ACOSH_f_aux(
l_interval(0), hyl ) );
3148 resyu = Sup( ACOSH_f_aux( hxu, hyu ) );
3150 resyl = Inf( ACOSH_f_aux( hxl, hyl ) );
3152 resyl = Inf( ACOSH_f_aux(
l_interval(0), hyl ) );
3163 resyl = -Sup( ACOSH_f_aux( hxl, hyl ) );
3164 resyu = Sup( ACOSH_f_aux( hxl, hyu ) );
3168 resyl = -Sup( ACOSH_f_aux( hxu, hyl ) );
3169 resyu = Sup( ACOSH_f_aux( hxu, hyu ) );
3212 hxl(irez), hxu(srez), hyl(iimz), hyu(simz);
3215 resxl, resxu, resyl, resyu;
3222 if( ( iimz <= 0.0 && simz >= 0.0 ) && ( irez < 1.0 ) )
3223 cxscthrow(STD_FKT_OUT_OF_DEF(
"l_cinterval acosh( const l_cinterval& z ); z contains singularities."));
3254 resxl = Inf(
acosh( hxl ) );
3257 resxu = Sup( ACOSH_f_aux(hxu,ytilde) );
3263 resyl = -Sup( Acos_beta(hxl,hyl) );
3265 resyu = Sup( Acos_beta(hxl,hyu) );
3293void re_atan(
const l_interval& y, l_interval& x, l_interval& res )
3300 if ( x==0.0 ) res = 1.0;
3308 y1 = 1 -
sqr(y1) -
sqr(x1);
3309 if ( expo(Sup(y1))<-2 )
3311 res = 1 -
sqr(y) -
sqr(x);
3314 if (ex < -10000) res = 0;
3321 if (ex_x<d) d = ex_x;
3322 if (d>1022) d = 1022;
3327 res = comp(0.5,d+1) -
sqr(x) -
sqr(y_);
3331 else res = 1 -
sqr(y) -
sqr(x);
3335void re_vert(
const l_real& x,
const l_interval& hx,
3336 const l_real& rew_inf,
const l_real& rew_sup,
3337 l_real& resxl, l_real& resxu )
3357 resxl = rew_sup > 0.0 ? Inf( Atan( hx2,rew_sup )/2.0 )
3358 : ( rew_sup < 0.0 ? Inf( (Atan( hx2,rew_sup ) +
Pi_l_interval() )/2.0 )
3361 resxu = rew_inf > 0.0 ? Sup( Atan( hx2,rew_inf )/2.0 )
3362 : ( rew_inf < 0.0 ? Sup( (Atan( hx2,rew_inf ) +
Pi_l_interval())/2.0 )
3368 resxl = rew_inf < 0.0 ? Inf( (Atan( hx2,rew_inf ) -
Pi_l_interval())/2.0 )
3369 : ( rew_inf > 0.0 ? Inf( Atan( hx2,rew_inf )/2.0 )
3371 resxu = rew_sup < 0.0 ? Sup( (Atan( hx2,rew_sup ) -
Pi_l_interval())/2.0 )
3372 : ( rew_sup > 0.0 ? Sup( Atan( hx2,rew_sup )/2.0 )
3378l_interval Aux_1_atan(
const l_real& x)
3384 const int exOv = +510;
3408 res =
ln(t + res) - r;
3422l_interval Q_atan_UPSIGN(
const l_interval& x,
const l_interval& y)
3429 l_interval res(0.0),t,t1,t2;
3448 res =
ln(4+
sqr(x)) - t;
3457 if (ex<-100000)
return res;
3460 if (ex_x>ex) ex = ex_x;
3470 t2 =
sqr(t) +
sqr(comp(0.5,s+1)-t1);
3476 if (Inf(t)<0) SetInf(t,0.0);
3485 if (ex_x>ex) ex = ex_x;
3514 if (ex_y%2 != 0) ex_y++;
3548 hxl(irez), hxu(srez), hyl(iimz), hyu(simz);
3551 resxl, resxu, resyl, resyu;
3555 if( ( irez <= 0.0 && srez >= 0.0 ) && ( iimz <= -1.0 || simz >= 1.0 ) )
3556 cxscthrow(STD_FKT_OUT_OF_DEF(
"l_cinterval atan( const l_cinterval& z ); z contains singularities."));
3571 bool sqrImz_1 = (iimz==simz) && (iimz==1.0 || iimz==-1.0);
3583 if (ex2>ex1) ex1 = ex2;
3586 if(ex1>ex) ex = ex1;
3594 rew_l = (scf -
sqr(imz_)) -
sqr(hxl);
3597 re_atan(imz,hxl,rew_l);
3600 if(ex1>ex) ex = ex1;
3608 rew_u = (scf -
sqr(imz_)) -
sqr(hxu);
3611 re_atan(imz,hxu,rew_u);
3618 l_real rew_inf = Inf( rew_l );
3619 l_real rew_sup = Sup( rew_l );
3620 re_vert( irez, hxl, rew_inf, rew_sup, resxl, resxu );
3625 rew_inf = Inf( rew_u );
3626 rew_sup = Sup( rew_u );
3628 re_vert( srez, hxu, rew_inf, rew_sup, res_l, res_u );
3630 if (res_l<resxl) resxl = res_l;
3631 if (res_u>resxu) resxu = res_u;
3640 if( abs_y_min > 1.0 )
3647 if( Sup( abs_hxl ) > irez && Inf( abs_hxl ) < srez )
3652 else if( -Inf( abs_hxl ) > irez && -Sup( abs_hxl ) < srez )
3664 im_atan_l, im_atan_u;
3669 im_atan_l = -Q_atan_UPSIGN(abs_rez,-hyl);
3672 im_atan_l = Q_atan_UPSIGN(abs_rez,hyl);
3678 im_atan_u = -Q_atan_UPSIGN(abs_rez,-hyu);
3681 im_atan_u = Q_atan_UPSIGN(abs_rez,hyu);
3684 resyl = min( Inf( im_atan_l ), Inf( im_atan_u ) );
3685 resyu = max( Sup( im_atan_l ), Sup( im_atan_u ) );
3696 if( Inf( y_extr ) < simz && Sup( y_extr ) > iimz )
3702 rez = Aux_1_atan(abs_x_min);
3707 if( -Sup( y_extr ) < simz && -Inf( y_extr ) > iimz )
3713 rez = Aux_1_atan(abs_x_min);
3746 hxl(irez), hxu(srez), hyl(iimz), hyu(simz);
3749 resxl, resxu, resyl, resyu;
3753 if( ( irez <= 0.0 && srez >= 0.0 ) && ( iimz <= 1.0 && simz >= -1.0 ) )
3754 cxscthrow(STD_FKT_OUT_OF_DEF(
"l_cinterval acot( const l_cinterval& z ); z contains singularities."));
3771 bool sqrImz_1 = (iimz==simz) && (iimz==1.0 || iimz==-1.0);
3783 if (ex2>ex1) ex1 = ex2;
3786 if(ex1>ex) ex = ex1;
3794 rew_l = (
sqr(imz_) - scf) +
sqr(hxl);
3798 re_atan(imz,hxl,rew_l);
3803 if(ex1>ex) ex = ex1;
3811 rew_u = (
sqr(imz_) - scf) +
sqr(hxu);
3815 re_atan(imz,hxu,rew_u);
3824 l_real rew_inf = Inf( rew_l );
3825 l_real rew_sup = Sup( rew_l );
3826 re_vert( irez, hxl, rew_inf, rew_sup, resxl, resxu );
3830 rew_inf = Inf( rew_u );
3831 rew_sup = Sup( rew_u );
3833 re_vert( srez, hxu, rew_inf, rew_sup, res_l, res_u );
3835 if (res_l<resxl) resxl = res_l;
3836 if (res_u>resxu) resxu = res_u;
3845 if( abs_y_min > 1.0 )
3851 if( Sup( abs_hxl ) > irez && Inf( abs_hxl ) < srez )
3854 resxu = Sup(
atan( 1.0 / abs_hxl ) / 2.0 );
3855 if( -Inf( abs_hxl ) > irez && -Sup( abs_hxl ) < srez )
3858 resxl = -Sup(
atan( 1.0 / abs_hxl ) / 2.0 );
3869 im_atan_l, im_atan_u,
3873 im_atan_l = -Q_atan_UPSIGN(abs_rez,-hyl);
3876 im_atan_l = Q_atan_UPSIGN(abs_rez,hyl);
3881 im_atan_u = -Q_atan_UPSIGN(abs_rez,-hyu);
3884 im_atan_u = Q_atan_UPSIGN(abs_rez,hyu);
3887 resyl = min( Inf( im_atan_l ), Inf( im_atan_u ) );
3888 resyu = max( Sup( im_atan_l ), Sup( im_atan_u ) );
3898 if( Inf( y_extr ) < simz && Sup( y_extr ) > iimz )
3904 rez = Aux_1_atan(abs_x_min);
3909 if( -Sup( y_extr ) < simz && -Inf( y_extr ) > iimz )
3915 rez = Aux_1_atan(abs_x_min);
The Scalar Type cinterval.
The Data Type dotprecision.
The Scalar Type interval.
The Multiple-Precision Data Type l_cinterval.
The Multiple-Precision Data Type l_interval.
The Multiple-Precision Data Type l_real.
The namespace cxsc, providing all functionality of the class library C-XSC.
cinterval sqrtp1m1(const cinterval &z) noexcept
Calculates .
cinterval exp2(const cinterval &z) noexcept
Calculates .
cinterval sqrt1mx2(const cinterval &z) noexcept
Calculates .
const real MinReal
Smallest normalized representable floating-point number.
cinterval asinh(const cinterval &z) noexcept
Calculates .
cinterval coth(const cinterval &z) noexcept
Calculates .
cinterval log2(const cinterval &z) noexcept
Calculates .
l_interval Pi_l_interval() noexcept
Enclosure-Interval for .
cinterval power(const cinterval &z, int n) noexcept
Calculates .
cinterval log10(const cinterval &z) noexcept
Calculates .
cinterval Ln(const cinterval &z) noexcept
Calculates .
cinterval ln(const cinterval &z) noexcept
Calculates .
l_real rnd_up(const dotprecision &a)
Rounds the argument up to the next l_real value.
int expo_gr(const l_interval &x)
cinterval pow(const cinterval &z, const interval &p) noexcept
Calculates .
l_real rnd_down(const dotprecision &a)
Rounds the argument down to the next l_real value.
cinterval sinh(const cinterval &z) noexcept
Calculates .
l_interval Pid2_l_interval() noexcept
Enclosure-Interval for .
cinterval asin(const cinterval &z) noexcept
Calculates .
cinterval tan(const cinterval &z) noexcept
Calculates .
cinterval exp10(const cinterval &z) noexcept
Calculates .
interval arg(const cinterval &z) noexcept
Calculates .
std::list< cinterval > sqrt_all(const cinterval &z)
Calculates and returns all possible solutions.
cinterval acos(const cinterval &z) noexcept
Calculates .
l_interval Sqrt2r_l_interval() noexcept
Enclosure-Interval for .
cinterval sqrtx2m1(const cinterval &z) noexcept
Calculates .
cinterval acosh(const cinterval &z) noexcept
Calculates .
const real Infinity
Representation of positive infinity in floating-point format.
cinterval cosh(const cinterval &z) noexcept
Calculates .
cinterval cos(const cinterval &z) noexcept
Calculates .
l_interval Pid4_l_interval() noexcept
Enclosure-Interval for .
cinterval sqrt1px2(const cinterval &z) noexcept
Calculates .
cinterval exp(const cinterval &z) noexcept
Calculates .
cinterval tanh(const cinterval &z) noexcept
Calculates .
interval ln_sqrtx2y2(const interval &x, const interval &y) noexcept
Calculates .
std::list< cinterval > pow_all(const cinterval &z, const interval &p) noexcept
Calculates and returns all possible solutions.
cinterval expm1(const cinterval &z) noexcept
Calculates .
cinterval cot(const cinterval &z) noexcept
Calculates .
ivector abs(const cimatrix_subv &mv) noexcept
Returns the absolute value of the matrix.
cinterval sqrt(const cinterval &z) noexcept
Calculates .
cinterval power_fast(const cinterval &z, int n) noexcept
Calculates .
cinterval acot(const cinterval &z) noexcept
Calculates .
void times2pown(cinterval &x, int n) noexcept
Fast multiplication of reference parameter [z] with .
cinterval sqr(const cinterval &z) noexcept
Calculates .
l_interval Ln2_l_interval() noexcept
Enclosure-Interval for .
cinterval lnp1(const cinterval &z) noexcept
Calculates .
cvector mid(const cimatrix_subv &mv) noexcept
Returns the middle of the matrix.
cinterval atan(const cinterval &z) noexcept
Calculates .
cinterval atanh(const cinterval &z) noexcept
Calculates .
l_interval Ln10_l_interval() noexcept
Enclosure-Interval for .
interval Arg(const cinterval &z) noexcept
Calculates .
cinterval acoth(const cinterval &z) noexcept
Calculates .
interval sqrtx2y2(const interval &x, const interval &y) noexcept
Calculates .
cinterval sin(const cinterval &z) noexcept
Calculates .