C-XSC - A C++ Class Library for Extended Scientific Computing  2.5.4
lx_interval.hpp
1 /*
2 ** CXSC is a C++ library for eXtended Scientific Computing (V 2.5.4)
3 **
4 ** Copyright (C) 1990-2000 Institut fuer Angewandte Mathematik,
5 ** Universitaet Karlsruhe, Germany
6 ** (C) 2000-2014 Wiss. Rechnen/Softwaretechnologie
7 ** Universitaet Wuppertal, Germany
8 **
9 ** This library is free software; you can redistribute it and/or
10 ** modify it under the terms of the GNU Library General Public
11 ** License as published by the Free Software Foundation; either
12 ** version 2 of the License, or (at your option) any later version.
13 **
14 ** This library is distributed in the hope that it will be useful,
15 ** but WITHOUT ANY WARRANTY; without even the implied warranty of
16 ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17 ** Library General Public License for more details.
18 **
19 ** You should have received a copy of the GNU Library General Public
20 ** License along with this library; if not, write to the Free
21 ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
22 */
23 
24 /* CVS $Id: lx_interval.hpp,v 1.10 2014/01/30 17:23:47 cxsc Exp $ */
25 
26 
27 /*
28 ** F. Blomquist, University of Wuppertal, 19.09.2007;
29 */
30 
31 /*
32 ** Implementation of the classes
33 **
34 ** lx_interval with all tools and elementary functions for real
35 ** point and interval aruments
36 **
37 */
38 
39 #ifndef _CXSC_LX_INTERVAL_HPP_INCLUDED
40 #define _CXSC_LX_INTERVAL_HPP_INCLUDED
41 
42 #include <l_imath.hpp>
43 #include <lx_real.hpp>
44 #include <sstream>
45 #include <cmath>
46 #include <iostream>
47 
48 namespace cxsc {
49 
50 class lx_interval {
51 
52 private:
53  // ------------- Data Elements -------------------------------------------
54  real ex;
55  l_interval li;
56  // The mathematical value of an object of type lx_interval is
57  // interpreted as: 2^(ex) * li;
58 
59 public:
60  // ------------- Constructors --------------------------------------------
61 
63  lx_interval(void) noexcept {}
64 
66  lx_interval(const real& n, const l_interval& a) noexcept
67  {
68  if ( !(Is_Integer(n)) )
69  cxscthrow(REAL_NOT_ALLOWED("lx_interval(const real&, const l_interval&)"));
70  else
71  {
72  ex = n; li = a;
73  }
74  }
75 
77  lx_interval(const real& n, const l_real& a) noexcept
78  {
79  if ( !(Is_Integer(n)) )
80  cxscthrow(REAL_NOT_ALLOWED("lx_interval(const real& n, const l_real& a)"));
81  else
82  {
83  ex = n; li = a;
84  }
85  }
86 
88  lx_interval(const real& n, const interval& a) noexcept
89  {
90  if ( !(Is_Integer(n)) )
91  cxscthrow(REAL_NOT_ALLOWED("lx_interval(const real&, const interval&)"));
92  else
93  {
94  ex = n; li = a;
95  }
96  }
97 
99  explicit lx_interval(const real& n, const real& a) noexcept
100  {
101  if ( !(Is_Integer(n)) )
102  cxscthrow(REAL_NOT_ALLOWED("lx_interval(const real&, const real&)"));
103  else
104  {
105  ex = n; li = a;
106  }
107  }
109  explicit lx_interval(const l_interval& a) noexcept : ex(0), li(a) { }
111  explicit lx_interval(const l_real& a) noexcept : ex(0), li(a) { }
113  lx_interval(const l_real& a, const l_real& b) noexcept : ex(0),li(a,b) { }
115  explicit lx_interval(const interval& a) noexcept : ex(0), li(a) { }
117  explicit lx_interval(const real& a) noexcept : ex(0), li(a) { }
119  lx_interval(const lx_real&, const lx_real&) noexcept;
121  explicit lx_interval(const lx_real& a)
122  noexcept : ex(expo(a)), li(lr_part(a)) { }
124  lx_interval(const real&, const string&) noexcept;
125 
126  // ------------- Assignments ---------------------------------------------
127 
129  inline lx_interval & operator = (const lx_interval & a) noexcept;
131  inline lx_interval & operator = (const l_interval & a) noexcept;
133  inline lx_interval & operator = (const l_real & a) noexcept;
135  inline lx_interval & operator = (const real & a) noexcept;
137  inline lx_interval & operator = (const interval & a) noexcept;
139  inline lx_interval & operator = (const lx_real & a) noexcept;
140 
141  // l_interval & operator = (const lx_interval &a) noexcept; declared
142  // in l_interval.hpp and implemented in lx_interval.cpp;
143 
144  // interval & operator = (const lx_interval &a) noexcept; declared
145  // in interval.hpp and implemented in lx_interval.cpp;
146 
147  // ------------- Functions -----------------------------------------------
148 
150  friend inline int StagPrec(const lx_interval&) noexcept;
152  friend inline real expo(const lx_interval&) noexcept;
154  friend inline l_interval li_part(const lx_interval&) noexcept;
156  friend void scale_down(lx_interval &a);
158  friend void scale_up (lx_interval &a);
159 
161  friend inline lx_interval adjust(const lx_interval &) noexcept;
163  friend inline lx_interval abs(const lx_interval &) noexcept;
165  friend inline bool point_intv(const lx_interval &);
167  friend inline bool operator ! (const lx_interval &) noexcept;
169  friend inline bool IsEmpty(const lx_interval &) noexcept;
171  friend inline void times2pown(lx_interval &, const real &) noexcept;
173  friend inline lx_interval Blow(const lx_interval &) noexcept;
175  friend inline void times2pown_neg(lx_interval &, const real&) noexcept;
177  friend inline lx_real RelDiam( const lx_interval &);
179  friend inline lx_real diam(const lx_interval &) noexcept;
181  friend inline lx_real mid(const lx_interval &) noexcept;
183  friend inline lx_real Inf(const lx_interval &) noexcept;
185  friend inline lx_real Sup(const lx_interval &) noexcept;
186 
187  // ---------------- Monadic arithmetic operator ---------------------
188 
190  friend inline lx_interval operator-(const lx_interval & a) noexcept;
191 
192 
193  // ----------------------- Output -----------------------------------
194 
196  friend std::ostream& operator << (std::ostream&, const lx_interval&)
197  noexcept;
198 
200  friend std::string & operator << (std::string&, const lx_interval&)
201  noexcept;
202 
203 }; // end of class lx_interval
204 
205 
206 // -------------------------------------------------------------------
207 // Declaration of friend functions outside the class lx_interval
208 // -------------------------------------------------------------------
209 
210 inline int StagPrec(const lx_interval &a) noexcept;
211 inline real expo(const lx_interval &a) noexcept;
212 inline l_interval li_part(const lx_interval &a) noexcept;
213 
214  void scale_down(lx_interval &);
215  void scale_up (lx_interval &);
216 inline bool point_intv(const lx_interval &);
217 inline bool IsEmpty(const lx_interval &) noexcept;
218 inline void times2pown(lx_interval &, const real &) noexcept;
219 inline lx_interval Blow(const lx_interval &) noexcept;
220 inline void times2pown_neg(lx_interval &, const real&) noexcept;
221 inline lx_real RelDiam(const lx_interval &);
222 inline lx_real Inf(const lx_interval &) noexcept;
223 inline lx_real Sup(const lx_interval &) noexcept;
224 inline lx_interval abs(const lx_interval &) noexcept;
225 inline lx_interval adjust(const lx_interval &) noexcept;
226 inline lx_real diam(const lx_interval &) noexcept;
227 inline lx_real mid(const lx_interval &) noexcept;
228 
229 // ------------------------ Input --------------------------------------
230 
232  std::string & operator >> (std::string &s, lx_interval &a) noexcept;
234  void operator >> (const std::string &s, lx_interval &a) noexcept;
236  void operator >> (const char *s, lx_interval&) noexcept;
237 
239  std::istream & operator >> (std::istream&, lx_interval&) noexcept;
240 
241 // ------------------------ Output --------------------------------------
242 
243 std::ostream& operator << (std::ostream& s,const lx_interval& a) noexcept;
244 // A value a of type lx_interval is written to the
245 // output channel as decimal number in the form:
246 // { exponent p to base 10, interval mantissa m } = 10^p * m;
247 
248 std::string & operator << (std::string &s,const lx_interval& a) noexcept;
249 // The value of a variable a of type lx_interval is copied to a string s.
250 // s has the form: {2**(ex), li} = 2^ex * li;
251 
252 
253 // -------------------------------------------------------------------
254 // ------- Function declarations outside the class lx_interval --------
255 // -------------------------------------------------------------------
256 
257 void Bin2Dec(const lx_interval& a, real& p, l_interval& m);
258 
260 lx_interval expo2zero(const lx_interval &);
262 inline int Disjoint(const lx_interval &, const lx_interval &);
264 inline int in (const lx_interval&, const lx_interval&);
266 inline int in (const l_interval&, const lx_interval&);
268 inline int in (const interval&, const lx_interval&);
269 
271 inline int in (const lx_real&, const lx_interval&);
273 inline int in (const l_real&, const lx_interval&);
275 inline int in (const real&, const lx_interval&);
276 
278 inline lx_interval Blow( const lx_interval&, const real& );
280 inline lx_real AbsMin (const lx_interval&);
282 inline lx_real AbsMax (const lx_interval&);
283 
284 // -----------------------------------------------------------------------
285 // ------------- set comparisons -----------------------------------------
286 // -----------------------------------------------------------------------
287 
288 // ---- lx_interval--lx_interval
289 
291 inline bool operator < (const lx_interval&, const lx_interval&) noexcept;
293 inline bool operator <= (const lx_interval&, const lx_interval&) noexcept;
295 inline bool operator > (const lx_interval&, const lx_interval&) noexcept;
297 inline bool operator >= (const lx_interval&, const lx_interval&) noexcept;
298 
299 // ---- lx_interval--l_interval
300 
302 inline bool operator < (const lx_interval&, const l_interval&) noexcept;
304 inline bool operator <= (const lx_interval&, const l_interval&) noexcept;
306 inline bool operator < (const l_interval&, const lx_interval&) noexcept;
308 inline bool operator <= (const l_interval&, const lx_interval&) noexcept;
310 inline bool operator > (const lx_interval&, const l_interval&) noexcept;
311 inline bool operator >= (const lx_interval&, const l_interval&) noexcept;
313 inline bool operator > (const l_interval&, const lx_interval&) noexcept;
315 inline bool operator >= (const l_interval&, const lx_interval&) noexcept;
316 
317 // ---- lx_interval--interval
318 
320 inline bool operator < (const lx_interval&, const interval&) noexcept;
322 inline bool operator <= (const lx_interval&, const interval&) noexcept;
324 inline bool operator < (const interval&, const lx_interval&) noexcept;
326 inline bool operator <= (const interval&, const lx_interval&) noexcept;
328 inline bool operator > (const lx_interval&, const interval&) noexcept;
330 inline bool operator >= (const lx_interval&, const interval&) noexcept;
332 inline bool operator > (const interval&, const lx_interval&) noexcept;
334 inline bool operator >= (const interval&, const lx_interval&) noexcept;
335 
336 // ---- lx_interval--real
337 
339 inline bool operator < (const real &, const lx_interval &) noexcept;
341 inline bool operator <= (const real &, const lx_interval &) noexcept;
343 inline bool operator > (const lx_interval &, const real &) noexcept;
345 inline bool operator >= (const lx_interval &, const real &) noexcept;
346 
347 // ---- lx_interval--l_real
348 
350 inline bool operator < (const l_real &, const lx_interval &) noexcept;
352 inline bool operator <= (const l_real &, const lx_interval &) noexcept;
354 inline bool operator > (const lx_interval &, const l_real &) noexcept;
356 inline bool operator >= (const lx_interval &, const l_real &) noexcept;
357 
358 // ---- lx_interval--lx_real
359 
361 inline bool operator < (const lx_real &, const lx_interval &) noexcept;
363 inline bool operator <= (const lx_real &, const lx_interval &) noexcept;
365 inline bool operator > (const lx_interval &, const lx_real &) noexcept;
367 inline bool operator >= (const lx_interval &, const lx_real &) noexcept;
368 
369 
370 // -------------------------- comparisons --------------------------------
371 
373 inline bool operator ! (const lx_interval &) noexcept;
374 
376 inline bool operator == (const lx_interval &, const lx_interval &) noexcept;
378 inline bool operator == (const lx_interval &, const l_interval &) noexcept;
380 inline bool operator == (const l_interval &, const lx_interval &) noexcept;
382 inline bool operator == (const lx_interval &, const interval &) noexcept;
384 inline bool operator == (const interval &, const lx_interval &) noexcept;
386 inline bool operator == (const lx_interval &, const real &) noexcept;
388 inline bool operator == (const real &, const lx_interval &) noexcept;
390 inline bool operator == (const lx_interval &, const l_real &) noexcept;
392 inline bool operator == (const l_real &, const lx_interval &) noexcept;
394 inline bool operator == (const lx_interval &, const lx_real &) noexcept;
396 inline bool operator == (const lx_real &, const lx_interval &) noexcept;
397 
399 inline bool operator != (const lx_interval &, const lx_interval &) noexcept;
401 inline bool operator != (const lx_interval &, const l_interval &) noexcept;
403 inline bool operator != (const l_interval &, const lx_interval &) noexcept;
405 inline bool operator != (const lx_interval &, const interval &) noexcept;
407 inline bool operator != (const interval &, const lx_interval &) noexcept;
409 inline bool operator != (const lx_interval &, const real &) noexcept;
411 inline bool operator != (const real &, const lx_interval &) noexcept;
413 inline bool operator != (const lx_interval &, const l_real &) noexcept;
415 inline bool operator != (const l_real &, const lx_interval &) noexcept;
417 inline bool operator != (const lx_interval &, const lx_real &) noexcept;
419 inline bool operator != (const lx_real &, const lx_interval &) noexcept;
420 
422 inline lx_interval operator+(const lx_interval &) noexcept;
424 inline lx_interval operator-(const lx_interval &) noexcept;
425 
427 lx_interval operator + (const lx_interval &, const lx_interval &) noexcept;
428 
430 inline lx_interval operator + (const lx_interval &, const l_interval &)
431  noexcept;
433 inline lx_interval operator + (const l_interval &, const lx_interval &)
434  noexcept;
436 inline lx_interval operator + (const lx_interval &, const l_real &)
437  noexcept;
439 inline lx_interval operator + (const l_real &, const lx_interval &)
440  noexcept;
442 inline lx_interval operator + (const lx_interval &, const lx_real &)
443  noexcept;
445 inline lx_interval operator + (const lx_real &, const lx_interval &)
446  noexcept;
448 inline lx_interval operator + (const lx_interval &, const real &)
449  noexcept;
451 inline lx_interval operator + (const real &, const lx_interval &)
452  noexcept;
454 inline lx_interval operator + (const lx_interval &, const interval &)
455  noexcept;
457 inline lx_interval operator + (const interval &, const lx_interval &)
458  noexcept;
459 
461 inline lx_interval & operator +=(lx_interval &, const lx_interval &) noexcept;
463 inline lx_interval & operator +=(lx_interval &, const l_interval &) noexcept;
465 inline lx_interval & operator +=(lx_interval &, const l_real &) noexcept;
467 inline lx_interval & operator +=(lx_interval &, const lx_real &) noexcept;
469 inline lx_interval & operator +=(lx_interval &, const real &) noexcept;
471 inline lx_interval & operator +=(lx_interval &, const interval &) noexcept;
472 
474 inline lx_interval operator - (const lx_interval &, const lx_interval &)
475  noexcept;
477 inline lx_interval operator - (const lx_interval &, const l_interval &)
478  noexcept;
480 inline lx_interval operator - (const l_interval &, const lx_interval &)
481  noexcept;
483 inline lx_interval operator - (const lx_interval &, const l_real &)
484  noexcept;
486 inline lx_interval operator - (const l_real &, const lx_interval &)
487  noexcept;
489 inline lx_interval operator - (const lx_interval &, const lx_real &)
490  noexcept;
492 inline lx_interval operator - (const lx_real &, const lx_interval &)
493  noexcept;
495 inline lx_interval operator - (const lx_interval &, const real &)
496  noexcept;
498 inline lx_interval operator - (const real &, const lx_interval &)
499  noexcept;
501 inline lx_interval operator - (const lx_interval &, const interval &)
502  noexcept;
504 inline lx_interval operator - (const interval &, const lx_interval &)
505  noexcept;
506 
508 inline lx_interval & operator -=(lx_interval &, const lx_interval &) noexcept;
510 inline lx_interval & operator -=(lx_interval &, const l_interval &) noexcept;
512 inline lx_interval & operator -=(lx_interval &, const l_real &) noexcept;
514 inline lx_interval & operator -=(lx_interval &, const lx_real &) noexcept;
516 inline lx_interval & operator -=(lx_interval &, const real &) noexcept;
518 inline lx_interval & operator -=(lx_interval &, const interval &) noexcept;
519 
521 lx_interval operator * (const lx_interval &, const lx_interval &)
522  noexcept;
523 
525 inline lx_interval operator * (const lx_interval &, const l_interval &)
526  noexcept;
528 inline lx_interval operator * (const l_interval &, const lx_interval &)
529  noexcept;
531 inline lx_interval operator * (const lx_interval &, const l_real &)
532  noexcept;
534 inline lx_interval operator * (const l_real &, const lx_interval &)
535  noexcept;
537 inline lx_interval operator * (const lx_interval &, const lx_real &)
538  noexcept;
540 inline lx_interval operator * (const lx_real &, const lx_interval &)
541  noexcept;
543 inline lx_interval operator * (const lx_interval &, const real &)
544  noexcept;
546 inline lx_interval operator * (const real &, const lx_interval &)
547  noexcept;
549 inline lx_interval operator * (const lx_interval &, const interval &)
550  noexcept;
552 inline lx_interval operator * (const interval &, const lx_interval &)
553  noexcept;
554 
556 inline lx_interval & operator *=(lx_interval &, const lx_interval &) noexcept;
558 inline lx_interval & operator *=(lx_interval &, const l_interval &) noexcept;
560 inline lx_interval & operator *=(lx_interval &, const l_real &) noexcept;
562 inline lx_interval & operator *=(lx_interval &, const lx_real &) noexcept;
564 inline lx_interval & operator *=(lx_interval &, const real &) noexcept;
566 inline lx_interval & operator *=(lx_interval &, const interval &) noexcept;
567 
569 lx_interval operator / (const lx_interval &, const lx_interval &)
570  ;
571 
573 inline lx_interval operator / (const lx_interval &, const l_interval &)
574  ;
576 inline lx_interval operator / (const l_interval &, const lx_interval &)
577  ;
579 inline lx_interval operator / (const lx_interval &, const l_real &)
580  ;
582 inline lx_interval operator / (const l_real &, const lx_interval &)
583  ;
585 inline lx_interval operator / (const lx_interval &, const real &)
586  ;
588 inline lx_interval operator / (const real &, const lx_interval &)
589  ;
591 inline lx_interval operator / (const lx_interval &, const interval &)
592  ;
594 inline lx_interval operator / (const interval &, const lx_interval &)
595  ;
597 inline lx_interval operator / (const lx_interval &, const lx_real &)
598  ;
600 inline lx_interval operator / (const lx_real &, const lx_interval &)
601  ;
602 
604 inline lx_interval & operator /=(lx_interval &, const lx_interval &) noexcept;
606 inline lx_interval & operator /=(lx_interval &, const l_interval &) noexcept;
608 inline lx_interval & operator /=(lx_interval &, const l_real &) noexcept;
610 inline lx_interval & operator /=(lx_interval &, const lx_real &) noexcept;
612 inline lx_interval & operator /=(lx_interval &, const real &) noexcept;
614 inline lx_interval & operator /=(lx_interval &, const interval &) noexcept;
615 
616 // ----------------------------- Convex hull -------------------------------
617 
619  inline lx_interval operator | (const lx_interval&, const lx_interval&)
620  noexcept;
622  inline lx_interval operator | (const lx_interval&, const l_interval&)
623  noexcept;
625  inline lx_interval operator | (const l_interval&, const lx_interval&)
626  noexcept;
628  inline lx_interval operator | (const lx_interval&, const interval&)
629  noexcept;
631  inline lx_interval operator | (const interval&, const lx_interval&)
632  noexcept;
634  inline lx_interval & operator |= (lx_interval&, const lx_interval&)
635  noexcept;
637  inline lx_interval & operator |= (lx_interval&, const l_interval&)
638  noexcept;
640  inline lx_interval & operator |= (lx_interval&, const interval&)
641  noexcept;
643  inline lx_interval operator | (const lx_real&, const lx_interval&)
644  noexcept;
646  inline lx_interval operator | (const real&, const lx_interval&)
647  noexcept;
649  inline lx_interval operator | (const lx_interval&, const lx_real&)
650  noexcept;
652  inline lx_interval operator | (const lx_interval&, const real&)
653  noexcept;
655  inline lx_interval operator | (const lx_interval&, const l_real&)
656  noexcept;
658  inline lx_interval operator | (const l_real&, const lx_interval&)
659  noexcept;
661  inline lx_interval & operator |= (lx_interval&, const real&)
662  noexcept;
664  inline lx_interval & operator |= (lx_interval&, const l_real&)
665  noexcept;
667  inline lx_interval & operator |= (lx_interval&, const lx_real&)
668  noexcept;
670  inline lx_interval operator | (const lx_real&, const lx_real&)
671  noexcept;
672 
673 // --------------------------- Intersection -----------------------------
674 
676  inline lx_interval operator & (const lx_interval&, const lx_interval&)
677 ;
679  inline lx_interval operator & (const lx_interval&, const l_interval&)
680 ;
682  inline lx_interval & operator &= (lx_interval&, const l_interval&)
683 ;
685  inline lx_interval operator & (const l_interval&, const lx_interval&)
686 ;
688  inline lx_interval operator & (const lx_interval&, const interval&)
689 ;
691  inline lx_interval & operator &= (lx_interval &a, const interval &b)
692 ;
694  inline lx_interval operator & (const interval&, const lx_interval&)
695 ;
697  inline lx_interval & operator &= (lx_interval&, const lx_interval&)
698 ;
700  inline lx_interval operator & (const lx_interval&, const lx_real&)
701 ;
703  inline lx_interval operator & (const lx_interval&, const l_real&)
704 ;
706  inline lx_interval operator & (const lx_interval&, const real&)
707 ;
709  inline lx_interval operator & (const lx_real&, const lx_interval&)
710 ;
712  inline lx_interval operator & (const l_real&, const lx_interval&)
713 ;
715  inline lx_interval operator & (const real&, const lx_interval&)
716 ;
718  inline lx_interval & operator &= (lx_interval&, const lx_real&)
719 ;
721  inline lx_interval & operator &= (lx_interval&, const l_real&)
722 ;
724  inline lx_interval & operator &= (lx_interval&, const real&)
725 ;
726 
727 // ------------------------- SetInf, SetSup -----------------------------
728 
730 inline lx_interval & SetInf(lx_interval&, const lx_real&)
731  ;
733 inline lx_interval & SetInf(lx_interval&, const l_real&)
734  ;
736 inline lx_interval & SetInf(lx_interval&, const real&)
737  ;
738 
740 inline lx_interval & SetSup(lx_interval&, const lx_real&)
741  ;
743 inline lx_interval & SetSup(lx_interval&, const l_real&)
744  ;
746 inline lx_interval & SetSup(lx_interval&, const real&)
747  ;
748 
749 // ------------------------- Help Functions: ----------------------------
750 
751 // ----------------- Intervals for test calculations --------------------
752 
754 l_interval point_max(void);
755 // returns a staggered point interval with maximum exponent 1020,
756 // whereby nearly all mantissa bits are set.
757 
759 l_interval point_any(int n);
760 // returns a staggered point interval with exponent n,
761 // whereby nearly all mantissa bits are set.
762 // -1074 <= n <= +1020;
763 
765 l_interval wide_max(void);
766 // returns a staggered interval a with maximum exponent 1020
767 // and diam(a)>0, whereby nearly all mantissa bits are set.
768 
770 l_interval wide_any(int n);
771 // returns a wide staggered interval a with exponent n,
772 // and diam(a)>0, whereby nearly all mantissa bits are set.
773 // -1074 <= n <= +1020;
774 
775 
776 // --------------------------------------------------------------------
777 // ----------------- lx_interval Constants ----------------------------
778 // --------------------------------------------------------------------
779 
781  lx_interval Pi_lx_interval() noexcept; // pi
783  lx_interval Pip2_lx_interval() noexcept; // pi^2
785  lx_interval Pi2_lx_interval() noexcept; // 2*pi
787  lx_interval Pi2r_lx_interval() noexcept; // 1/(2*pi)
789  lx_interval Pid4_lx_interval() noexcept; // pi/4
791  lx_interval Pid2_lx_interval() noexcept; // pi/2
793  lx_interval Ln2_lx_interval() noexcept; // ln(2)
795  lx_interval Ln10_lx_interval() noexcept; // ln(10)
797  lx_interval Ln10r_lx_interval() noexcept; // 1/ln(10)
799  lx_interval Pir_lx_interval() noexcept; // 1/pi
801  lx_interval SqrtPi_lx_interval() noexcept; // sqrt(pi)
803  lx_interval Sqrt2Pi_lx_interval() noexcept; // sqrt(2pi)
805  lx_interval Sqrt2_lx_interval() noexcept; // sqrt(2)
807  lx_interval Sqrt2r_lx_interval() noexcept; // sqrt(2)
809  lx_interval Sqrt3_lx_interval() noexcept; // sqrt(3)
811  lx_interval Sqrt3d2_lx_interval() noexcept; // sqrt(3)/2
813  lx_interval Sqrt3r_lx_interval() noexcept; // 1/sqrt(3)
815  lx_interval Ln2r_lx_interval() noexcept; // 1/ln(2)
817  lx_interval Pid3_lx_interval() noexcept; // pi/3
819  lx_interval SqrtPir_lx_interval() noexcept; // 1/sqrt(pi)
821  lx_interval Sqrt2Pir_lx_interval() noexcept; // 1/sqrt(2pi)
823  lx_interval LnPi_lx_interval() noexcept; // ln(pi)
825  lx_interval Ln2Pi_lx_interval() noexcept; // ln(2pi)
827  lx_interval E_lx_interval() noexcept; // e
829  lx_interval Ep2_lx_interval() noexcept; // e^2
831  lx_interval Ep2r_lx_interval() noexcept; // 1/e^2
833  lx_interval Er_lx_interval() noexcept; // 1/e
835  lx_interval EpPi_lx_interval() noexcept; // e^pi
837  lx_interval EpPid2_lx_interval() noexcept; // e^(pi/2)
839  lx_interval EpPid4_lx_interval() noexcept; // e^(pi/4)
841  lx_interval Ep2Pi_lx_interval() noexcept; // e^(2*pi)
843  lx_interval EulerGamma_lx_interval() noexcept;
845  lx_interval Catalan_lx_interval() noexcept;
847  lx_interval sqrt5_lx_interval() noexcept; // sqrt(5)
849  lx_interval sqrt7_lx_interval() noexcept; // sqrt(7)
851  lx_interval One_m_lx_interval() noexcept;
853  lx_interval One_p_lx_interval() noexcept;
854 
855 // -------------------------------------------------------------------------
856 // ---------------- lx_interval: elementary functions ----------------------
857 // -------------------------------------------------------------------------
858 
860  lx_interval sqrt(const lx_interval&) noexcept;
862  lx_interval sqr(const lx_interval&) noexcept;
864  lx_interval ln(const lx_interval &) noexcept;
866  lx_interval log2(const lx_interval &) noexcept;
868  lx_interval log10(const lx_interval &) noexcept;
870  lx_interval lnp1(const lx_interval &) noexcept;
872  lx_interval exp(const lx_interval &) noexcept;
874  lx_interval exp2(const lx_interval &) noexcept; // 2^x
876  lx_interval exp10(const lx_interval &) noexcept; // 10^x
878  lx_interval expm1(const lx_interval &x) noexcept;
880  lx_interval power(const lx_interval &, const real &) noexcept;
882  lx_interval pow(const lx_interval &, const lx_interval &) noexcept;
884  lx_interval xp1_pow_y(const lx_interval &, const lx_interval &) noexcept;
886  lx_interval sin(const lx_interval &)throw();
888  lx_interval sin_n(const lx_interval &x, const real& n) noexcept;
890  lx_interval cos(const lx_interval &) noexcept;
892  lx_interval cos_n(const lx_interval &x, const real& n) noexcept;
894  lx_interval tan(const lx_interval &) noexcept;
896  lx_interval cot(const lx_interval &) noexcept;
898  lx_interval sqrt1px2(const lx_interval &) noexcept;
900  lx_interval atan(const lx_interval &) noexcept;
902  lx_interval sqrt1mx2(const lx_interval &) noexcept;
904  lx_interval sqrtx2m1(const lx_interval &) noexcept;
906  lx_interval asin(const lx_interval & ) noexcept;
908  lx_interval acos(const lx_interval &) noexcept;
910  lx_interval acot(const lx_interval &) noexcept;
912  lx_interval sinh(const lx_interval &) noexcept;
914  lx_interval cosh(const lx_interval &) noexcept;
916  lx_interval tanh(const lx_interval &) noexcept;
918  lx_interval coth(const lx_interval &) noexcept;
920  lx_interval sqrtp1m1(const lx_interval &) noexcept;
922  lx_interval asinh(const lx_interval &) noexcept;
924  lx_interval acosh(const lx_interval &) noexcept;
926  lx_interval acoshp1(const lx_interval &) noexcept;
928  lx_interval atanh(const lx_interval &) noexcept;
930  lx_interval atanh1m(const lx_interval &) noexcept;
932  lx_interval atanhm1p(const lx_interval &) noexcept;
934  lx_interval acoth(const lx_interval &) noexcept;
936  lx_interval acothp1(const lx_interval &) noexcept;
938  lx_interval acothm1m(const lx_interval &) noexcept;
940  lx_interval sqrtx2y2(const lx_interval &, const lx_interval &) noexcept;
942  lx_interval ln_sqrtx2y2(const lx_interval &, const lx_interval &) noexcept;
944  lx_interval sqrt(const lx_interval &, int) noexcept;
945 
946 } // end namespace cxsc
947 
948 #include "lx_interval.inl"
949 
950 #endif // _CXSC_LX_INTERVAL_HPP_INCLUDED
cxsc::Ln10r_lx_interval
lx_interval Ln10r_lx_interval() noexcept
Enclosure-Interval for .
Definition: lx_interval.cpp:6334
cxsc::Sqrt2_lx_interval
lx_interval Sqrt2_lx_interval() noexcept
Enclosure-Interval for .
Definition: lx_interval.cpp:4720
cxsc::AbsMax
real AbsMax(const interval &x)
Computes the greatest absolute value .
Definition: interval.cpp:303
cxsc::Pid3_lx_interval
lx_interval Pid3_lx_interval() noexcept
Enclosure-Interval for .
Definition: lx_interval.cpp:5050
cxsc::power
cinterval power(const cinterval &z, int n) noexcept
Calculates .
Definition: cimath.cpp:1941
cxsc::mid
cvector mid(const cimatrix_subv &mv) noexcept
Returns the middle of the matrix.
Definition: cimatrix.inl:739
cxsc::lnp1
cinterval lnp1(const cinterval &z) noexcept
Calculates .
Definition: cimath.cpp:867
cxsc::asinh
cinterval asinh(const cinterval &z) noexcept
Calculates .
Definition: cimath.cpp:2718
cxsc::sqrt1px2
cinterval sqrt1px2(const cinterval &z) noexcept
Calculates .
Definition: cimath.cpp:1071
cxsc::One_p_lx_interval
lx_interval One_p_lx_interval() noexcept
Enclosure-Interval for .
Definition: lx_interval.cpp:6297
cxsc::coth
cinterval coth(const cinterval &z) noexcept
Calculates .
Definition: cimath.cpp:578
cxsc::sin
cinterval sin(const cinterval &z) noexcept
Calculates .
Definition: cimath.cpp:215
cxsc::Sqrt3_lx_interval
lx_interval Sqrt3_lx_interval() noexcept
Enclosure-Interval for .
Definition: lx_interval.cpp:4830
cxsc::cot
cinterval cot(const cinterval &z) noexcept
Calculates .
Definition: cimath.cpp:538
cxsc::Pir_lx_interval
lx_interval Pir_lx_interval() noexcept
Enclosure-Interval for .
Definition: lx_interval.cpp:4389
cxsc::exp10
cinterval exp10(const cinterval &z) noexcept
Calculates .
Definition: cimath.cpp:172
cxsc::Ln2r_lx_interval
lx_interval Ln2r_lx_interval() noexcept
Enclosure-Interval for .
Definition: lx_interval.cpp:4940
cxsc::Is_Integer
bool Is_Integer(const real &x)
Returns 1 if x is an integer value and if .
Definition: lx_real.inl:63
cxsc::log10
cinterval log10(const cinterval &z) noexcept
Calculates .
Definition: cimath.cpp:903
cxsc::atanhm1p
lx_interval atanhm1p(const lx_interval &x) noexcept
Calculates .
Definition: lx_interval.cpp:3640
cxsc::tan
cinterval tan(const cinterval &z) noexcept
Calculates .
Definition: cimath.cpp:393
cxsc::E_lx_interval
lx_interval E_lx_interval() noexcept
Enclosure-Interval for .
Definition: lx_interval.cpp:5600
cxsc::operator*=
cimatrix & operator*=(cimatrix &m, const cinterval &c) noexcept
Implementation of multiplication and allocation operation.
Definition: cimatrix.inl:1605
cxsc::operator/
civector operator/(const cimatrix_subv &rv, const cinterval &s) noexcept
Implementation of division operation.
Definition: cimatrix.inl:730
cxsc::Ep2r_lx_interval
lx_interval Ep2r_lx_interval() noexcept
Enclosure-Interval for .
Definition: lx_interval.cpp:7566
cxsc::Ln10_lx_interval
lx_interval Ln10_lx_interval() noexcept
Enclosure-Interval for .
Definition: lx_interval.cpp:4279
cxsc::Pi_lx_interval
lx_interval Pi_lx_interval() noexcept
Enclosure-Interval for .
Definition: lx_interval.cpp:4058
cxsc::xp1_pow_y
lx_interval xp1_pow_y(const lx_interval &x, const lx_interval &y) noexcept
Calculates .
Definition: lx_interval.cpp:2007
cxsc::tanh
cinterval tanh(const cinterval &z) noexcept
Calculates .
Definition: cimath.cpp:565
cxsc::sqrt
cinterval sqrt(const cinterval &z) noexcept
Calculates .
Definition: cimath.cpp:1007
cxsc::ln
cinterval ln(const cinterval &z) noexcept
Calculates .
Definition: cimath.cpp:851
cxsc::log2
cinterval log2(const cinterval &z) noexcept
Calculates .
Definition: cimath.cpp:898
cxsc::sqrt7_lx_interval
lx_interval sqrt7_lx_interval() noexcept
Enclosure-Interval for .
Definition: lx_interval.cpp:6150
cxsc::abs
ivector abs(const cimatrix_subv &mv) noexcept
Returns the absolute value of the matrix.
Definition: cimatrix.inl:737
cxsc::operator/=
cimatrix & operator/=(cimatrix &m, const cinterval &c) noexcept
Implementation of division and allocation operation.
Definition: cimatrix.inl:1623
cxsc::acothp1
lx_interval acothp1(const lx_interval &x) noexcept
Calculates .
Definition: lx_interval.cpp:3730
cxsc::Blow
cinterval Blow(cinterval x, const real &eps)
Performs an epsilon inflation.
Definition: cinterval.cpp:665
cxsc::Pid4_lx_interval
lx_interval Pid4_lx_interval() noexcept
Enclosure-Interval for .
Definition: lx_interval.cpp:6446
cxsc::point_any
l_interval point_any(int n)
Returns a point interval with exponent n.
Definition: lx_interval.cpp:810
cxsc::LnPi_lx_interval
lx_interval LnPi_lx_interval() noexcept
Enclosure-Interval for .
Definition: lx_interval.cpp:5380
cxsc::EpPid2_lx_interval
lx_interval EpPid2_lx_interval() noexcept
Enclosure-Interval for .
Definition: lx_interval.cpp:7790
cxsc::sqrtx2m1
cinterval sqrtx2m1(const cinterval &z) noexcept
Calculates .
Definition: cimath.cpp:1109
cxsc::in
int in(const cinterval &x, const cinterval &y)
Checks if first argument is part of second argument.
Definition: cinterval.cpp:654
cxsc::sqrt5_lx_interval
lx_interval sqrt5_lx_interval() noexcept
Enclosure-Interval for .
Definition: lx_interval.cpp:6040
cxsc::SqrtPi_lx_interval
lx_interval SqrtPi_lx_interval() noexcept
Enclosure-Interval for .
Definition: lx_interval.cpp:4499
cxsc::EulerGamma_lx_interval
lx_interval EulerGamma_lx_interval() noexcept
Enclosure-Interval for .
Definition: lx_interval.cpp:5820
cxsc::Er_lx_interval
lx_interval Er_lx_interval() noexcept
Enclosure-Interval for .
Definition: lx_interval.cpp:7342
cxsc::acoshp1
interval acoshp1(const interval &x)
Calculates .
Definition: imath.cpp:617
cxsc::exp
cinterval exp(const cinterval &z) noexcept
Calculates .
Definition: cimath.cpp:159
cxsc::acos
cinterval acos(const cinterval &z) noexcept
Calculates .
Definition: cimath.cpp:2553
cxsc::operator*
civector operator*(const cimatrix_subv &rv, const cinterval &s) noexcept
Implementation of multiplication operation.
Definition: cimatrix.inl:731
cxsc::One_m_lx_interval
lx_interval One_m_lx_interval() noexcept
Enclosure-Interval for .
Definition: lx_interval.cpp:6260
cxsc::Sqrt3d2_lx_interval
lx_interval Sqrt3d2_lx_interval() noexcept
Enclosure-Interval for .
Definition: lx_interval.cpp:7118
cxsc::Ep2Pi_lx_interval
lx_interval Ep2Pi_lx_interval() noexcept
Enclosure-Interval for .
Definition: lx_interval.cpp:7678
cxsc::cosh
cinterval cosh(const cinterval &z) noexcept
Calculates .
Definition: cimath.cpp:223
cxsc::Sqrt2r_lx_interval
lx_interval Sqrt2r_lx_interval() noexcept
Enclosure-Interval for .
Definition: lx_interval.cpp:7006
cxsc::EpPi_lx_interval
lx_interval EpPi_lx_interval() noexcept
Enclosure-Interval for .
Definition: lx_interval.cpp:5710
cxsc::sinh
cinterval sinh(const cinterval &z) noexcept
Calculates .
Definition: cimath.cpp:231
cxsc::Sqrt2Pi_lx_interval
lx_interval Sqrt2Pi_lx_interval() noexcept
Enclosure-Interval for .
Definition: lx_interval.cpp:4609
cxsc::ln_sqrtx2y2
interval ln_sqrtx2y2(const interval &x, const interval &y) noexcept
Calculates .
Definition: imath.cpp:581
cxsc::sin_n
lx_interval sin_n(const lx_interval &x, const real &n) noexcept
Calculates .
Definition: lx_interval.cpp:2344
cxsc::pow
cinterval pow(const cinterval &z, const interval &p) noexcept
Calculates .
Definition: cimath.cpp:2074
cxsc::Pi2r_lx_interval
lx_interval Pi2r_lx_interval() noexcept
Enclosure-Interval for .
Definition: lx_interval.cpp:6782
cxsc::acothm1m
lx_interval acothm1m(const lx_interval &x) noexcept
Calculates .
Definition: lx_interval.cpp:3769
cxsc::exp2
cinterval exp2(const cinterval &z) noexcept
Calculates .
Definition: cimath.cpp:167
cxsc::acoth
cinterval acoth(const cinterval &z) noexcept
Calculates .
Definition: cimath.cpp:3330
cxsc
The namespace cxsc, providing all functionality of the class library C-XSC.
Definition: cdot.cpp:29
cxsc::operator+=
cdotprecision & operator+=(cdotprecision &cd, const l_complex &lc) noexcept
Implementation of standard algebraic addition and allocation operation.
Definition: cdot.inl:251
cxsc::sqrtp1m1
cinterval sqrtp1m1(const cinterval &z) noexcept
Calculates .
Definition: cimath.cpp:1054
cxsc::point_max
l_interval point_max(void)
Returns a point interval with maximum exponent 1020.
Definition: lx_interval.cpp:797
cxsc::expm1
cinterval expm1(const cinterval &z) noexcept
Calculates .
Definition: cimath.cpp:177
cxsc::wide_any
l_interval wide_any(int n)
Returns a wide interval with exponent n, .
Definition: lx_interval.cpp:833
cxsc::diam
cvector diam(const cimatrix_subv &mv) noexcept
Returns the diameter of the matrix.
Definition: cimatrix.inl:738
cxsc::atanh
cinterval atanh(const cinterval &z) noexcept
Calculates .
Definition: cimath.cpp:3317
cxsc::SqrtPir_lx_interval
lx_interval SqrtPir_lx_interval() noexcept
Enclosure-Interval for .
Definition: lx_interval.cpp:5160
cxsc::Ep2_lx_interval
lx_interval Ep2_lx_interval() noexcept
Enclosure-Interval for .
Definition: lx_interval.cpp:7454
cxsc::times2pown
void times2pown(cinterval &x, int n) noexcept
Fast multiplication of reference parameter [z] with .
Definition: cimath.cpp:2059
cxsc::cos
cinterval cos(const cinterval &z) noexcept
Calculates .
Definition: cimath.cpp:207
cxsc::RelDiam
real RelDiam(const interval &x)
Computes the relative diameter .
Definition: interval.cpp:316
cxsc::Sqrt2Pir_lx_interval
lx_interval Sqrt2Pir_lx_interval() noexcept
Enclosure-Interval for .
Definition: lx_interval.cpp:5270
cxsc::wide_max
l_interval wide_max(void)
Returns a wide interval with maximum exponent 1020.
Definition: lx_interval.cpp:825
cxsc::atan
cinterval atan(const cinterval &z) noexcept
Calculates .
Definition: cimath.cpp:2938
cxsc::Pi2_lx_interval
lx_interval Pi2_lx_interval() noexcept
Enclosure-Interval for .
Definition: lx_interval.cpp:6670
cxsc::Pip2_lx_interval
lx_interval Pip2_lx_interval() noexcept
Enclosure-Interval for .
Definition: lx_interval.cpp:6894
cxsc::AbsMin
real AbsMin(const interval &x)
Computes the smallest absolute value .
Definition: interval.cpp:293
cxsc::EpPid4_lx_interval
lx_interval EpPid4_lx_interval() noexcept
Enclosure-Interval for .
Definition: lx_interval.cpp:7902
cxsc::acot
cinterval acot(const cinterval &z) noexcept
Calculates .
Definition: cimath.cpp:3130
cxsc::Pid2_lx_interval
lx_interval Pid2_lx_interval() noexcept
Enclosure-Interval for .
Definition: lx_interval.cpp:6558
cxsc::Ln2_lx_interval
lx_interval Ln2_lx_interval() noexcept
Enclosure-Interval for .
Definition: lx_interval.cpp:4169
cxsc::Disjoint
int Disjoint(const interval &a, const interval &b)
Checks arguments for disjointness.
Definition: interval.cpp:288
cxsc::Catalan_lx_interval
lx_interval Catalan_lx_interval() noexcept
Enclosure-Interval for .
Definition: lx_interval.cpp:5930
cxsc::sqrt1mx2
cinterval sqrt1mx2(const cinterval &z) noexcept
Calculates .
Definition: cimath.cpp:1140
cxsc::Sqrt3r_lx_interval
lx_interval Sqrt3r_lx_interval() noexcept
Enclosure-Interval for .
Definition: lx_interval.cpp:7230
cxsc::atanh1m
lx_interval atanh1m(const lx_interval &x) noexcept
Calculates .
Definition: lx_interval.cpp:3603
cxsc::acosh
cinterval acosh(const cinterval &z) noexcept
Calculates .
Definition: cimath.cpp:2732
cxsc::cos_n
lx_interval cos_n(const lx_interval &x, const real &n) noexcept
Calculates .
Definition: lx_interval.cpp:2400
cxsc::expo2zero
lx_interval expo2zero(const lx_interval &a)
b = expo2zero(a) returns with
Definition: lx_interval.cpp:216
cxsc::sqr
cinterval sqr(const cinterval &z) noexcept
Calculates .
Definition: cimath.cpp:3342
cxsc::Ln2Pi_lx_interval
lx_interval Ln2Pi_lx_interval() noexcept
Enclosure-Interval for .
Definition: lx_interval.cpp:5490
cxsc::sqrtx2y2
interval sqrtx2y2(const interval &x, const interval &y) noexcept
Calculates .
Definition: imath.cpp:80
cxsc::asin
cinterval asin(const cinterval &z) noexcept
Calculates .
Definition: cimath.cpp:2311