37 inline int StagPrec(
const lx_interval &a)
throw()
38 {
return StagPrec(a.li); }
40 inline real expo(
const lx_interval &a)
throw()
43 inline l_interval li_part(
const lx_interval &a)
throw()
46 inline int Disjoint(
const lx_interval& a,
const lx_interval& b)
47 {
return (Inf(a)>Sup(b) || Inf(b)>Sup(a)); }
49 inline int in(
const lx_interval& x,
const lx_interval& y)
50 {
return ( (Inf(y) < Inf(x)) && (Sup(x) < Sup(y)) ); }
53 {
return ( (Inf(y) < Inf(x)) && (Sup(x) < Sup(y)) ); }
56 {
return ( (Inf(y) < Inf(x)) && (Sup(x) < Sup(y)) ); }
58 inline int in(
const lx_real& x,
const lx_interval& y )
59 {
return ( (Inf(y) <= x) && (x <= Sup(y)) ); }
61 inline int in(
const l_real& x,
const lx_interval& y )
62 {
return ( (Inf(y) <= x) && (x <= Sup(y)) ); }
64 inline int in(
const real& x,
const lx_interval& y )
65 {
return ( (Inf(y) <= x) && (x <= Sup(y)) ); }
67 inline lx_interval
Blow(
const lx_interval& a)
throw()
86 res = lx_interval(Max_Int_N,al);
92 inline lx_interval
Blow(
const lx_interval& x,
const real& eps )
95 return lx_interval( expo(x),
Blow(y,eps) );
98 inline lx_real
AbsMin (
const lx_interval &x)
100 if (
in(0.0,x) )
return lx_real(0.0);
104 if (y > 0.0)
return y;
109 inline lx_real
AbsMax (
const lx_interval &x)
122 inline lx_interval & lx_interval::operator = (
const lx_interval &a)
throw()
129 inline lx_interval & lx_interval::operator = (
const lx_real &a)
throw()
136 inline lx_interval & lx_interval::operator = (
const l_interval &a)
throw()
143 inline lx_interval & lx_interval::operator = (
const l_real & a)
throw()
150 inline lx_interval & lx_interval::operator = (
const real & a)
throw()
157 inline lx_interval & lx_interval::operator = (
const interval & a)
throw()
164 inline lx_interval operator+(
const lx_interval & a)
throw() {
return a; }
165 inline lx_interval operator-(
const lx_interval & a)
throw()
166 {
return lx_interval(a.ex,-a.li); }
168 inline lx_interval operator + (
const lx_interval &a,
const l_interval &b)
throw()
169 {
return a + lx_interval(b); }
171 inline lx_interval operator + (
const l_interval &a,
const lx_interval &b)
throw()
172 {
return lx_interval(a) + b; }
174 inline lx_interval operator + (
const lx_interval &a,
const l_real &b)
throw()
175 {
return a + lx_interval(b); }
177 inline lx_interval operator + (
const l_real &a,
const lx_interval &b)
throw()
178 {
return lx_interval(a) + b; }
180 inline lx_interval operator + (
const lx_interval &a,
const lx_real &b)
throw()
181 {
return a + lx_interval(b); }
183 inline lx_interval operator + (
const lx_real &a,
const lx_interval &b)
throw()
184 {
return lx_interval(a) + b; }
186 inline lx_interval operator + (
const lx_interval &a,
const real &b)
throw()
187 {
return a + lx_interval(b); }
189 inline lx_interval operator + (
const real &a,
const lx_interval &b)
throw()
190 {
return lx_interval(a) + b; }
192 inline lx_interval operator + (
const lx_interval &a,
const interval &b)
throw()
193 {
return a + lx_interval(b); }
195 inline lx_interval operator + (
const interval &a,
const lx_interval &b)
throw()
196 {
return lx_interval(a) + b; }
198 inline lx_interval &
operator +=(lx_interval &a,
const lx_interval &b)
throw()
207 inline lx_interval &
operator +=(lx_interval &a,
const lx_real &b)
throw()
216 inline lx_interval operator - (
const lx_interval &a,
const lx_interval &b)
throw()
217 {
return a + lx_interval(-b); }
219 inline lx_interval operator - (
const lx_interval &a,
const l_interval &b)
throw()
220 {
return a + lx_interval(-b); }
222 inline lx_interval operator - (
const l_interval &a,
const lx_interval &b)
throw()
223 {
return lx_interval(a) + (-b); }
225 inline lx_interval operator - (
const lx_interval &a,
const l_real &b)
throw()
226 {
return a + lx_interval(-b); }
228 inline lx_interval operator - (
const l_real &a,
const lx_interval &b)
throw()
229 {
return lx_interval(a) + (-b); }
231 inline lx_interval operator - (
const lx_interval &a,
const lx_real &b)
throw()
232 {
return a + lx_interval(-b); }
234 inline lx_interval operator - (
const lx_real &a,
const lx_interval &b)
throw()
235 {
return lx_interval(a) + (-b); }
237 inline lx_interval operator - (
const lx_interval &a,
const real &b)
throw()
238 {
return a + lx_interval(-b); }
240 inline lx_interval operator - (
const real &a,
const lx_interval &b)
throw()
241 {
return lx_interval(a) + (-b); }
243 inline lx_interval operator - (
const lx_interval &a,
const interval &b)
throw()
244 {
return a + lx_interval(-b); }
246 inline lx_interval operator - (
const interval &a,
const lx_interval &b)
throw()
247 {
return lx_interval(a) + (-b); }
249 inline lx_interval & operator -=(lx_interval &a,
const lx_interval &b)
throw()
251 inline lx_interval & operator -=(lx_interval &a,
const l_interval &b)
throw()
253 inline lx_interval & operator -=(lx_interval &a,
const l_real &b)
throw()
255 inline lx_interval & operator -=(lx_interval &a,
const lx_real &b)
throw()
257 inline lx_interval & operator -=(lx_interval &a,
const real &b)
throw()
259 inline lx_interval & operator -=(lx_interval &a,
const interval &b)
throw()
264 {
return a * lx_interval(b); }
268 {
return lx_interval(a) * b; }
271 {
return a * lx_interval(b); }
274 {
return lx_interval(a) * b; }
276 inline lx_interval
operator * (
const lx_interval &a,
const lx_real &b)
throw()
277 {
return a * lx_interval(b); }
279 inline lx_interval
operator * (
const lx_real &a,
const lx_interval &b)
throw()
280 {
return lx_interval(a) * b; }
283 {
return a * lx_interval(b); }
286 {
return lx_interval(a) * b; }
289 {
return a * lx_interval(b); }
292 {
return lx_interval(a) * b; }
294 inline lx_interval &
operator *=(lx_interval &a,
const lx_interval &b)
throw()
300 inline lx_interval &
operator *=(lx_interval &a,
const lx_real &b)
throw()
308 throw(ERROR_LINTERVAL_DIV_BY_ZERO)
309 {
return a / lx_interval(b); }
312 throw(ERROR_LINTERVAL_DIV_BY_ZERO)
313 {
return lx_interval(a) / b; }
316 throw(ERROR_LINTERVAL_DIV_BY_ZERO)
317 {
return a / lx_interval(b); }
320 throw(ERROR_LINTERVAL_DIV_BY_ZERO)
321 {
return lx_interval(a) / b; }
324 throw(ERROR_LINTERVAL_DIV_BY_ZERO)
325 {
return a / lx_interval(b); }
328 throw(ERROR_LINTERVAL_DIV_BY_ZERO)
329 {
return lx_interval(a) / b; }
332 throw(ERROR_LINTERVAL_DIV_BY_ZERO)
333 {
return a / lx_interval(b); }
336 throw(ERROR_LINTERVAL_DIV_BY_ZERO)
337 {
return lx_interval(a) / b; }
339 inline lx_interval
operator / (
const lx_interval &a,
const lx_real &b)
340 throw(ERROR_LINTERVAL_DIV_BY_ZERO)
341 {
return a / lx_interval(b); }
343 inline lx_interval
operator / (
const lx_real &a,
const lx_interval &b)
344 throw(ERROR_LINTERVAL_DIV_BY_ZERO)
345 {
return lx_interval(a) / b; }
348 inline lx_interval &
operator /=(lx_interval &a,
const lx_interval &b)
throw()
358 inline lx_interval &
operator /=(lx_interval &a,
const lx_real &b)
throw()
363 inline bool operator ! (
const lx_interval& a)
throw()
366 inline bool operator == (
const lx_interval &a,
const lx_interval &b)
throw()
370 real na(expo(a)), nb(expo(b)), d;
371 bool a_0(exa<-100000), b_0(exb<-100000), res;
373 if (a_0 || b_0) res = (a_0 == b_0);
388 res = (na==nb && al==bl);
393 inline bool operator == (
const lx_interval &a,
const l_interval &b)
throw()
394 {
return (a == lx_interval(b)); }
396 inline bool operator == (
const l_interval &a,
const lx_interval &b)
throw()
397 {
return ( lx_interval(a) == b); }
399 inline bool operator == (
const lx_interval &a,
const interval &b)
throw()
400 {
return (a == lx_interval(b)); }
402 inline bool operator == (
const interval &a,
const lx_interval &b)
throw()
403 {
return ( lx_interval(a) == b); }
405 inline bool operator == (
const lx_interval &a,
const real &b)
throw()
406 {
return ( a == lx_interval(b)); }
408 inline bool operator == (
const lx_interval &a,
const l_real &b)
throw()
409 {
return ( a == lx_interval(b)); }
411 inline bool operator == (
const real &a,
const lx_interval &b)
throw()
412 {
return ( lx_interval(a) == b); }
414 inline bool operator == (
const l_real &a,
const lx_interval &b)
throw()
415 {
return ( lx_interval(a) == b); }
417 inline bool operator == (
const lx_interval &a,
const lx_real &b)
throw()
418 {
return ( a == lx_interval(b)); }
420 inline bool operator == (
const lx_real &a,
const lx_interval &b)
throw()
421 {
return ( lx_interval(a) == b); }
423 inline bool operator != (
const lx_interval &a,
const lx_interval &b)
throw()
426 inline bool operator != (
const lx_interval &a,
const l_interval &b)
throw()
427 {
return !(a==lx_interval(b)); }
429 inline bool operator != (
const l_interval &a,
const lx_interval &b)
throw()
430 {
return !(lx_interval(a) == b); }
432 inline bool operator != (
const lx_interval &a,
const interval &b)
throw()
433 {
return !(a==lx_interval(b)); }
435 inline bool operator != (
const interval &a,
const lx_interval &b)
throw()
436 {
return !(lx_interval(a) == b); }
438 inline bool operator != (
const lx_interval &a,
const real &b)
throw()
439 {
return !(a == lx_interval(b)); }
441 inline bool operator != (
const real &a,
const lx_interval &b)
throw()
442 {
return !(lx_interval(a) == b); }
444 inline bool operator != (
const lx_interval &a,
const l_real &b)
throw()
445 {
return !(a == lx_interval(b)); }
447 inline bool operator != (
const l_real &a,
const lx_interval &b)
throw()
448 {
return !(lx_interval(a) == b); }
450 inline bool operator != (
const lx_interval &a,
const lx_real &b)
throw()
451 {
return !(a == lx_interval(b)); }
453 inline bool operator != (
const lx_real &a,
const lx_interval &b)
throw()
454 {
return !(lx_interval(a) == b); }
461 inline bool operator < (
const lx_interval &a,
const lx_interval &b)
throw()
462 {
return( Inf(a)>Inf(b) && Sup(a)<Sup(b) ); }
463 inline bool operator <= (
const lx_interval &a,
const lx_interval &b)
throw()
464 {
return( Inf(a)>=Inf(b) && Sup(a)<=Sup(b) ); }
465 inline bool operator > (
const lx_interval& a,
const lx_interval& b)
throw()
466 {
return(Inf(a)<Inf(b) && Sup(a)>Sup(b)); }
467 inline bool operator >= (
const lx_interval& a,
const lx_interval& b)
throw()
468 {
return(Inf(a)<=Inf(b) && Sup(a)>=Sup(b)); }
471 inline bool operator < (
const lx_interval &a,
const l_interval &b)
throw()
472 {
return( Inf(a)>Inf(b) && Sup(a)<Sup(b) ); }
473 inline bool operator <= (
const lx_interval &a,
const l_interval &b)
throw()
474 {
return( Inf(a)>=Inf(b) && Sup(a)<=Sup(b) ); }
475 inline bool operator < (
const l_interval &a,
const lx_interval &b)
throw()
476 {
return( Inf(a)>Inf(b) && Sup(a)<Sup(b) ); }
477 inline bool operator <= (
const l_interval &a,
const lx_interval &b)
throw()
478 {
return( Inf(a)>=Inf(b) && Sup(a)<=Sup(b) ); }
479 inline bool operator > (
const lx_interval& a,
const l_interval& b)
throw()
480 {
return(Inf(a)<Inf(b) && Sup(a)>Sup(b)); }
481 inline bool operator >= (
const lx_interval& a,
const l_interval& b)
throw()
482 {
return(Inf(a)<=Inf(b) && Sup(a)>=Sup(b)); }
483 inline bool operator > (
const l_interval& a,
const lx_interval& b)
throw()
484 {
return(Inf(a)<Inf(b) && Sup(a)>Sup(b)); }
485 inline bool operator >= (
const l_interval& a,
const lx_interval& b)
throw()
486 {
return(Inf(a)<=Inf(b) && Sup(a)>=Sup(b)); }
489 inline bool operator < (
const lx_interval &a,
const interval &b)
throw()
490 {
return( Inf(a)>Inf(b) && Sup(a)<Sup(b) ); }
491 inline bool operator <= (
const lx_interval &a,
const interval &b)
throw()
492 {
return( Inf(a)>=Inf(b) && Sup(a)<=Sup(b) ); }
493 inline bool operator < (
const interval &a,
const lx_interval &b)
throw()
494 {
return( Inf(a)>Inf(b) && Sup(a)<Sup(b) ); }
495 inline bool operator <= (
const interval &a,
const lx_interval &b)
throw()
496 {
return( Inf(a)>=Inf(b) && Sup(a)<=Sup(b) ); }
497 inline bool operator > (
const lx_interval& a,
const interval& b)
throw()
498 {
return(Inf(a)<Inf(b) && Sup(a)>Sup(b)); }
499 inline bool operator >= (
const lx_interval& a,
const interval& b)
throw()
500 {
return(Inf(a)<=Inf(b) && Sup(a)>=Sup(b)); }
501 inline bool operator > (
const interval& a,
const lx_interval& b)
throw()
502 {
return(Inf(a)<Inf(b) && Sup(a)>Sup(b)); }
503 inline bool operator >= (
const interval& a,
const lx_interval& b)
throw()
504 {
return(Inf(a)<=Inf(b) && Sup(a)>=Sup(b)); }
507 inline bool operator < (
const real &a,
const lx_interval &b)
throw()
508 {
return( a>Inf(b) && a<Sup(b) ); }
509 inline bool operator <= (
const real &a,
const lx_interval &b)
throw()
510 {
return( a>=Inf(b) && a<=Sup(b) ); }
511 inline bool operator > (
const lx_interval &a,
const real &b)
throw()
512 {
return( b>Inf(a) && b<Sup(a) ); }
513 inline bool operator >= (
const lx_interval &a,
const real &b)
throw()
514 {
return( b>=Inf(a) && b<=Sup(a) ); }
517 inline bool operator < (
const l_real &a,
const lx_interval &b)
throw()
518 {
return( a>Inf(b) && a<Sup(b) ); }
519 inline bool operator <= (
const l_real &a,
const lx_interval &b)
throw()
520 {
return( a>=Inf(b) && a<=Sup(b) ); }
521 inline bool operator > (
const lx_interval &a,
const l_real &b)
throw()
522 {
return( b>Inf(a) && b<Sup(a) ); }
523 inline bool operator >= (
const lx_interval &a,
const l_real &b)
throw()
524 {
return( b>=Inf(a) && b<=Sup(a) ); }
527 inline bool operator < (
const lx_real &a,
const lx_interval &b)
throw()
528 {
return( a>Inf(b) && a<Sup(b) ); }
529 inline bool operator <= (
const lx_real &a,
const lx_interval &b)
throw()
530 {
return( a>=Inf(b) && a<=Sup(b) ); }
531 inline bool operator > (
const lx_interval &a,
const lx_real &b)
throw()
532 {
return( b>Inf(a) && b<Sup(a) ); }
533 inline bool operator >= (
const lx_interval &a,
const lx_real &b)
throw()
534 {
return( b>=Inf(a) && b<=Sup(a) ); }
537 inline lx_interval adjust(
const lx_interval &a)
throw()
538 {
return lx_interval(a.ex,adjust(a.li)); }
540 inline lx_interval
abs(
const lx_interval &a)
throw()
541 {
return lx_interval(a.ex,
abs(a.li)); }
543 inline bool point_intv(
const lx_interval &a)
544 {
return point_intv(a.li); }
547 { a = lx_interval(
add_real(n,a.ex),a.li); }
549 inline void times2pown_neg(lx_interval& a,
const real& n)
throw()
563 if (exa < -Max_Int_R - n)
567 d = -Max_Int_R - exa;
573 if (n_d < -2147483647)
584 k = (int) _double(n_d);
587 a = lx_interval(-Max_Int_R,lia);
591 a = lx_interval(n+a.ex,lia);
595 inline lx_real Inf(
const lx_interval &a)
throw()
596 {
return lx_real(a.ex,Inf(a.li)); }
598 inline lx_real Sup(
const lx_interval &a)
throw()
599 {
return lx_real(a.ex,Sup(a.li)); }
601 inline lx_real
RelDiam(
const lx_interval &a )
605 x = lx_real(a.ex,
RelDiam(a.li));
610 inline lx_real
diam(
const lx_interval &a)
throw()
611 {
return lx_real(a.ex,
diam(a.li)); }
613 inline lx_real
mid(
const lx_interval& a)
throw()
614 {
return lx_real(a.ex,
mid(a.li)); }
616 inline bool IsEmpty(
const lx_interval& a)
throw()
617 {
return Inf(a.li) > Sup(a.li); }
621 inline lx_interval operator |(
const lx_interval &a,
const lx_interval &b)
throw()
623 return lx_interval( (Inf(a)<Inf(b)) ? Inf(a) : Inf(b),
624 (Sup(a)>Sup(b)) ? Sup(a) : Sup(b) );
627 inline lx_interval operator |(
const lx_interval &a,
const l_interval &b)
throw()
629 lx_interval
Lb(0.0,b);
630 return lx_interval( (Inf(a)<Inf(Lb)) ? Inf(a) : Inf(Lb),
631 (Sup(a)>Sup(Lb)) ? Sup(a) : Sup(Lb) );
634 inline lx_interval operator |(
const l_interval &a,
const lx_interval &b)
throw()
636 lx_interval La(0.0,a);
637 return lx_interval( (Inf(La)<Inf(b)) ? Inf(La) : Inf(b),
638 (Sup(La)>Sup(b)) ? Sup(La) : Sup(b) );
641 inline lx_interval operator |(
const lx_interval &a,
const interval &b)
throw()
644 return lx_interval( (Inf(a)<Inf(Lb)) ? Inf(a) : Inf(Lb),
645 (Sup(a)>Sup(Lb)) ? Sup(a) : Sup(Lb) );
648 inline lx_interval operator |(
const interval &a,
const lx_interval &b)
throw()
651 return lx_interval( (Inf(La)<Inf(b)) ? Inf(La) : Inf(b),
652 (Sup(La)>Sup(b)) ? Sup(La) : Sup(b) );
655 inline lx_interval & operator |= (lx_interval &a,
const lx_interval &b)
throw()
657 Inf(a)=(Inf(a)<Inf(b))?Inf(a):Inf(b),Sup(a)=(Sup(a)>Sup(b))?Sup(a):Sup(b);
661 inline lx_interval & operator |= (lx_interval &a,
const l_interval &b)
throw()
664 Inf(a) = (Inf(a)<Inf(Lb)) ? Inf(a) : Inf(Lb),
665 Sup(a) = (Sup(a)>Sup(Lb)) ? Sup(a) : Sup(Lb);
669 inline lx_interval & operator |= (lx_interval &a,
const interval &b)
throw()
672 Inf(a) = (Inf(a)<Inf(Lb)) ? Inf(a) : Inf(Lb),
673 Sup(a) = (Sup(a)>Sup(Lb)) ? Sup(a) : Sup(Lb);
677 inline lx_interval operator | (
const lx_real &a,
const lx_interval &b)
throw()
679 return lx_interval( (a<Inf(b)) ? a : Inf(b),
680 (a>Sup(b)) ? a : Sup(b) );
683 inline lx_interval operator | (
const real &a,
const lx_interval &b)
throw()
686 return lx_interval( (La<Inf(b)) ? La : Inf(b),
687 (La>Sup(b)) ? La : Sup(b) );
690 inline lx_interval operator | (
const l_real &a,
const lx_interval &b)
throw()
693 return lx_interval( (La<Inf(b)) ? La : Inf(b),
694 (La>Sup(b)) ? La : Sup(b) );
697 inline lx_interval operator | (
const lx_interval &a,
const lx_real &b)
throw()
699 return lx_interval( (Inf(a)<b) ? Inf(a) : b,
700 (Sup(a)>b) ? Sup(a) : b );
703 inline lx_interval operator | (
const lx_interval &a,
const real &b)
throw()
706 return lx_interval( (Inf(a)<Lb) ? Inf(a) : Lb,
707 (Sup(a)>Lb) ? Sup(a) : Lb );
710 inline lx_interval operator | (
const lx_interval &a,
const l_real &b)
throw()
713 return lx_interval( (Inf(a)<Lb) ? Inf(a) : Lb,
714 (Sup(a)>Lb) ? Sup(a) : Lb );
717 inline lx_interval & operator |= (lx_interval &a,
const real &b)
throw()
720 Inf(a) = (Inf(a)<
Lb) ? Inf(a) :
Lb, Sup(a) = (Sup(a)>
Lb) ? Sup(a) :
Lb;
724 inline lx_interval & operator |= (lx_interval &a,
const l_real &b)
throw()
727 Inf(a) = (Inf(a)<
Lb) ? Inf(a) :
Lb, Sup(a) = (Sup(a)>
Lb) ? Sup(a) :
Lb;
732 inline lx_interval & operator |= (lx_interval &a,
const lx_real &b)
throw()
734 Inf(a) = (Inf(a)<b) ? Inf(a) : b, Sup(a) = (Sup(a)>b) ? Sup(a) : b;
738 inline lx_interval operator |(
const lx_real &a,
const lx_real &b)
throw()
740 if(a>b)
return lx_interval(b,a);
741 else return lx_interval(a,b);
746 inline lx_interval operator & (
const lx_interval &a,
const lx_interval &b)
747 throw(ERROR_LINTERVAL_EMPTY_INTERVAL)
749 return lx_interval( (Inf(a)>Inf(b)) ? Inf(a) : Inf(b),
750 (Sup(a)<Sup(b)) ? Sup(a) : Sup(b));
753 inline lx_interval operator & (
const lx_interval &a,
const l_interval &b)
754 throw(ERROR_LINTERVAL_EMPTY_INTERVAL)
756 lx_interval
Lb(0.0,b);
757 return lx_interval( (Inf(a)>Inf(Lb)) ? Inf(a) : Inf(Lb),
758 (Sup(a)<Sup(Lb)) ? Sup(a) : Sup(Lb));
761 inline lx_interval & operator &= (lx_interval &a,
const l_interval &b)
762 throw(ERROR_LINTERVAL_EMPTY_INTERVAL)
764 lx_interval
Lb(0.0,b);
765 Inf(a) = (Inf(a)>Inf(Lb)) ? Inf(a) : Inf(Lb),
766 Sup(a) = (Sup(a)<Sup(Lb)) ? Sup(a) : Sup(Lb);
768 cxscthrow(ERROR_LINTERVAL_EMPTY_INTERVAL(
"lx_interval & operator &=(lx_interval &a,const l_interval &b)"));
772 inline lx_interval operator & (
const l_interval &a,
const lx_interval &b)
773 throw(ERROR_LINTERVAL_EMPTY_INTERVAL)
775 lx_interval La(0.0,a);
776 return lx_interval( (Inf(La)>Inf(b)) ? Inf(La) : Inf(b),
777 (Sup(La)<Sup(b)) ? Sup(La) : Sup(b));
780 inline lx_interval operator & (
const lx_interval &a,
const interval &b)
781 throw(ERROR_LINTERVAL_EMPTY_INTERVAL)
784 return lx_interval( (Inf(a)>Inf(Lb)) ? Inf(a) : Inf(Lb),
785 (Sup(a)<Sup(Lb)) ? Sup(a) : Sup(Lb));
788 inline lx_interval & operator &= (lx_interval &a,
const interval &b)
789 throw(ERROR_LINTERVAL_EMPTY_INTERVAL)
792 Inf(a) = (Inf(a)>Inf(Lb)) ? Inf(a) : Inf(Lb),
793 Sup(a) = (Sup(a)<Sup(Lb)) ? Sup(a) : Sup(Lb);
795 cxscthrow(ERROR_LINTERVAL_EMPTY_INTERVAL(
"lx_interval & operator &=(lx_interval &a,const interval &b)"));
799 inline lx_interval operator & (
const interval &a,
const lx_interval &b)
800 throw(ERROR_LINTERVAL_EMPTY_INTERVAL)
803 return lx_interval( (Inf(La)>Inf(b)) ? Inf(La) : Inf(b),
804 (Sup(La)<Sup(b)) ? Sup(La) : Sup(b));
807 inline lx_interval & operator &= (lx_interval &a,
const lx_interval &b)
808 throw(ERROR_LINTERVAL_EMPTY_INTERVAL)
810 Inf(a)=(Inf(a)>Inf(b))?Inf(a):Inf(b),Sup(a)=(Sup(a)<Sup(b))?Sup(a):Sup(b);
812 cxscthrow(ERROR_LINTERVAL_EMPTY_INTERVAL(
"lx_interval & operator &=(lx_interval &a,const lx_interval &b)"));
816 inline lx_interval operator & (
const lx_interval &a,
const lx_real &b)
817 throw(ERROR_LINTERVAL_EMPTY_INTERVAL)
819 return lx_interval( (Inf(a)>b) ? Inf(a) : b,
820 (Sup(a)<b) ? Sup(a) : b );
823 inline lx_interval operator & (
const lx_interval &a,
const real &b)
824 throw(ERROR_LINTERVAL_EMPTY_INTERVAL)
827 return lx_interval( (Inf(a)>Lb) ? Inf(a) : Lb,
828 (Sup(a)<Lb) ? Sup(a) : Lb );
831 inline lx_interval operator & (
const lx_interval &a,
const l_real &b)
832 throw(ERROR_LINTERVAL_EMPTY_INTERVAL)
835 return lx_interval( (Inf(a)>Lb) ? Inf(a) : Lb,
836 (Sup(a)<Lb) ? Sup(a) : Lb );
839 inline lx_interval operator & (
const lx_real &a,
const lx_interval &b)
840 throw(ERROR_LINTERVAL_EMPTY_INTERVAL)
842 return lx_interval( (a>Inf(b)) ? a : Inf(b),
843 (a<Sup(b)) ? a : Sup(b) );
846 inline lx_interval operator & (
const real &a,
const lx_interval &b)
847 throw(ERROR_LINTERVAL_EMPTY_INTERVAL)
850 return lx_interval( (La>Inf(b)) ? La : Inf(b),
851 (La<Sup(b)) ? La : Sup(b) );
854 inline lx_interval operator & (
const l_real &a,
const lx_interval &b)
855 throw(ERROR_LINTERVAL_EMPTY_INTERVAL)
858 return lx_interval( (La>Inf(b)) ? La : Inf(b),
859 (La<Sup(b)) ? La : Sup(b) );
862 inline lx_interval & operator &= (lx_interval &a,
const lx_real &b)
863 throw(ERROR_LINTERVAL_EMPTY_INTERVAL)
865 Inf(a) = (Inf(a)>b) ? Inf(a) : b, Sup(a) = (Sup(a)<b) ? Sup(a) : b;
867 cxscthrow(ERROR_LINTERVAL_EMPTY_INTERVAL(
"lx_interval & operator &=(lx_interval &a,const lx_real &b)"));
871 inline lx_interval & operator &= (lx_interval &a,
const real &b)
872 throw(ERROR_LINTERVAL_EMPTY_INTERVAL)
875 Inf(a) = (Inf(a)>
Lb) ? Inf(a) :
Lb, Sup(a) = (Sup(a)<
Lb) ? Sup(a) :
Lb;
877 cxscthrow(ERROR_LINTERVAL_EMPTY_INTERVAL(
"lx_interval & operator &=(lx_interval &a,const real &b)"));
881 inline lx_interval & operator &= (lx_interval &a,
const l_real &b)
882 throw(ERROR_LINTERVAL_EMPTY_INTERVAL)
885 Inf(a) = (Inf(a)>
Lb) ? Inf(a) :
Lb, Sup(a) = (Sup(a)<
Lb) ? Sup(a) :
Lb;
887 cxscthrow(ERROR_LINTERVAL_EMPTY_INTERVAL(
"lx_interval & operator &=(lx_interval &a,const l_real &b)"));
893 inline lx_interval & SetInf(lx_interval& a,
const lx_real& b)
894 throw(ERROR_LINTERVAL_EMPTY_INTERVAL)
896 return a = lx_interval(b,Sup(a));
899 inline lx_interval & SetInf(lx_interval& a,
const l_real& b)
900 throw(ERROR_LINTERVAL_EMPTY_INTERVAL)
902 return a = lx_interval(lx_real(0.0,b),Sup(a));
905 inline lx_interval & SetInf(lx_interval& a,
const real& b)
906 throw(ERROR_LINTERVAL_EMPTY_INTERVAL)
908 return a = lx_interval(lx_real(0.0,
l_real(b)),Sup(a));
911 inline lx_interval & SetSup(lx_interval& a,
const lx_real& b)
912 throw(ERROR_LINTERVAL_EMPTY_INTERVAL)
914 return a = lx_interval(Inf(a),b);
917 inline lx_interval & SetSup(lx_interval& a,
const l_real& b)
918 throw(ERROR_LINTERVAL_EMPTY_INTERVAL)
920 return a = lx_interval(Inf(a),lx_real(0.0,b));
923 inline lx_interval & SetSup(lx_interval& a,
const real& b)
924 throw(ERROR_LINTERVAL_EMPTY_INTERVAL)
926 return a = lx_interval(Inf(a),lx_real(0.0,
l_real(b)));
cinterval Blow(cinterval x, const real &eps)
Performs an epsilon inflation.
The Multiple-Precision Data Type l_interval.
cimatrix & operator/=(cimatrix &m, const cinterval &c)
Implementation of division and allocation operation.
The Multiple-Precision Data Type l_real.
int Lb(const cimatrix &rm, const int &i)
Returns the lower bound index.
The namespace cxsc, providing all functionality of the class library C-XSC.
civector operator*(const cimatrix_subv &rv, const cinterval &s)
Implementation of multiplication operation.
int in(const cinterval &x, const cinterval &y)
Checks if first argument is part of second argument.
cvector mid(const cimatrix_subv &mv)
Returns the middle of the matrix.
The Scalar Type interval.
real AbsMin(const interval &x)
Computes the smallest absolute value .
real RelDiam(const interval &x)
Computes the relative diameter .
real add_real(const real &a, const real &b)
Returns a,b must be integers with .
const real MaxReal
Greatest representable floating-point number.
cvector diam(const cimatrix_subv &mv)
Returns the diameter of the matrix.
int Disjoint(const interval &a, const interval &b)
Checks arguments for disjointness.
real AbsMax(const interval &x)
Computes the greatest absolute value .
cdotprecision & operator+=(cdotprecision &cd, const l_complex &lc)
Implementation of standard algebraic addition and allocation operation.
void times2pown(cinterval &x, int n)
Fast multiplication of reference parameter [z] with .
int expo_gr(const l_interval &x)
const real minreal
Smallest positive denormalized representable floating-point number.
civector operator/(const cimatrix_subv &rv, const cinterval &s)
Implementation of division operation.
cimatrix & operator*=(cimatrix &m, const cinterval &c)
Implementation of multiplication and allocation operation.
ivector abs(const cimatrix_subv &mv)
Returns the absolute value of the matrix.