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
48namespace cxsc {
49
50class lx_interval {
51
52private:
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
59public:
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
210inline int StagPrec(const lx_interval &a) noexcept;
211inline real expo(const lx_interval &a) noexcept;
212inline l_interval li_part(const lx_interval &a) noexcept;
213
214 void scale_down(lx_interval &);
215 void scale_up (lx_interval &);
216inline bool point_intv(const lx_interval &);
217inline bool IsEmpty(const lx_interval &) noexcept;
218inline void times2pown(lx_interval &, const real &) noexcept;
219inline lx_interval Blow(const lx_interval &) noexcept;
220inline void times2pown_neg(lx_interval &, const real&) noexcept;
221inline lx_real RelDiam(const lx_interval &);
222inline lx_real Inf(const lx_interval &) noexcept;
223inline lx_real Sup(const lx_interval &) noexcept;
224inline lx_interval abs(const lx_interval &) noexcept;
225inline lx_interval adjust(const lx_interval &) noexcept;
226inline lx_real diam(const lx_interval &) noexcept;
227inline 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
243std::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
248std::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
257void Bin2Dec(const lx_interval& a, real& p, l_interval& m);
258
260lx_interval expo2zero(const lx_interval &);
262inline int Disjoint(const lx_interval &, const lx_interval &);
264inline int in (const lx_interval&, const lx_interval&);
266inline int in (const l_interval&, const lx_interval&);
268inline int in (const interval&, const lx_interval&);
269
271inline int in (const lx_real&, const lx_interval&);
273inline int in (const l_real&, const lx_interval&);
275inline int in (const real&, const lx_interval&);
276
278inline lx_interval Blow( const lx_interval&, const real& );
280inline lx_real AbsMin (const lx_interval&);
282inline lx_real AbsMax (const lx_interval&);
283
284// -----------------------------------------------------------------------
285// ------------- set comparisons -----------------------------------------
286// -----------------------------------------------------------------------
287
288// ---- lx_interval--lx_interval
289
291inline bool operator < (const lx_interval&, const lx_interval&) noexcept;
293inline bool operator <= (const lx_interval&, const lx_interval&) noexcept;
295inline bool operator > (const lx_interval&, const lx_interval&) noexcept;
297inline bool operator >= (const lx_interval&, const lx_interval&) noexcept;
298
299// ---- lx_interval--l_interval
300
302inline bool operator < (const lx_interval&, const l_interval&) noexcept;
304inline bool operator <= (const lx_interval&, const l_interval&) noexcept;
306inline bool operator < (const l_interval&, const lx_interval&) noexcept;
308inline bool operator <= (const l_interval&, const lx_interval&) noexcept;
310inline bool operator > (const lx_interval&, const l_interval&) noexcept;
311inline bool operator >= (const lx_interval&, const l_interval&) noexcept;
313inline bool operator > (const l_interval&, const lx_interval&) noexcept;
315inline bool operator >= (const l_interval&, const lx_interval&) noexcept;
316
317// ---- lx_interval--interval
318
320inline bool operator < (const lx_interval&, const interval&) noexcept;
322inline bool operator <= (const lx_interval&, const interval&) noexcept;
324inline bool operator < (const interval&, const lx_interval&) noexcept;
326inline bool operator <= (const interval&, const lx_interval&) noexcept;
328inline bool operator > (const lx_interval&, const interval&) noexcept;
330inline bool operator >= (const lx_interval&, const interval&) noexcept;
332inline bool operator > (const interval&, const lx_interval&) noexcept;
334inline bool operator >= (const interval&, const lx_interval&) noexcept;
335
336// ---- lx_interval--real
337
339inline bool operator < (const real &, const lx_interval &) noexcept;
341inline bool operator <= (const real &, const lx_interval &) noexcept;
343inline bool operator > (const lx_interval &, const real &) noexcept;
345inline bool operator >= (const lx_interval &, const real &) noexcept;
346
347// ---- lx_interval--l_real
348
350inline bool operator < (const l_real &, const lx_interval &) noexcept;
352inline bool operator <= (const l_real &, const lx_interval &) noexcept;
354inline bool operator > (const lx_interval &, const l_real &) noexcept;
356inline bool operator >= (const lx_interval &, const l_real &) noexcept;
357
358// ---- lx_interval--lx_real
359
361inline bool operator < (const lx_real &, const lx_interval &) noexcept;
363inline bool operator <= (const lx_real &, const lx_interval &) noexcept;
365inline bool operator > (const lx_interval &, const lx_real &) noexcept;
367inline bool operator >= (const lx_interval &, const lx_real &) noexcept;
368
369
370// -------------------------- comparisons --------------------------------
371
373inline bool operator ! (const lx_interval &) noexcept;
374
376inline bool operator == (const lx_interval &, const lx_interval &) noexcept;
378inline bool operator == (const lx_interval &, const l_interval &) noexcept;
380inline bool operator == (const l_interval &, const lx_interval &) noexcept;
382inline bool operator == (const lx_interval &, const interval &) noexcept;
384inline bool operator == (const interval &, const lx_interval &) noexcept;
386inline bool operator == (const lx_interval &, const real &) noexcept;
388inline bool operator == (const real &, const lx_interval &) noexcept;
390inline bool operator == (const lx_interval &, const l_real &) noexcept;
392inline bool operator == (const l_real &, const lx_interval &) noexcept;
394inline bool operator == (const lx_interval &, const lx_real &) noexcept;
396inline bool operator == (const lx_real &, const lx_interval &) noexcept;
397
399inline bool operator != (const lx_interval &, const lx_interval &) noexcept;
401inline bool operator != (const lx_interval &, const l_interval &) noexcept;
403inline bool operator != (const l_interval &, const lx_interval &) noexcept;
405inline bool operator != (const lx_interval &, const interval &) noexcept;
407inline bool operator != (const interval &, const lx_interval &) noexcept;
409inline bool operator != (const lx_interval &, const real &) noexcept;
411inline bool operator != (const real &, const lx_interval &) noexcept;
413inline bool operator != (const lx_interval &, const l_real &) noexcept;
415inline bool operator != (const l_real &, const lx_interval &) noexcept;
417inline bool operator != (const lx_interval &, const lx_real &) noexcept;
419inline bool operator != (const lx_real &, const lx_interval &) noexcept;
420
422inline lx_interval operator+(const lx_interval &) noexcept;
424inline lx_interval operator-(const lx_interval &) noexcept;
425
427lx_interval operator + (const lx_interval &, const lx_interval &) noexcept;
428
430inline lx_interval operator + (const lx_interval &, const l_interval &)
431 noexcept;
433inline lx_interval operator + (const l_interval &, const lx_interval &)
434 noexcept;
436inline lx_interval operator + (const lx_interval &, const l_real &)
437 noexcept;
439inline lx_interval operator + (const l_real &, const lx_interval &)
440 noexcept;
442inline lx_interval operator + (const lx_interval &, const lx_real &)
443 noexcept;
445inline lx_interval operator + (const lx_real &, const lx_interval &)
446 noexcept;
448inline lx_interval operator + (const lx_interval &, const real &)
449 noexcept;
451inline lx_interval operator + (const real &, const lx_interval &)
452 noexcept;
454inline lx_interval operator + (const lx_interval &, const interval &)
455 noexcept;
457inline lx_interval operator + (const interval &, const lx_interval &)
458 noexcept;
459
461inline lx_interval & operator +=(lx_interval &, const lx_interval &) noexcept;
463inline lx_interval & operator +=(lx_interval &, const l_interval &) noexcept;
465inline lx_interval & operator +=(lx_interval &, const l_real &) noexcept;
467inline lx_interval & operator +=(lx_interval &, const lx_real &) noexcept;
469inline lx_interval & operator +=(lx_interval &, const real &) noexcept;
471inline lx_interval & operator +=(lx_interval &, const interval &) noexcept;
472
474inline lx_interval operator - (const lx_interval &, const lx_interval &)
475 noexcept;
477inline lx_interval operator - (const lx_interval &, const l_interval &)
478 noexcept;
480inline lx_interval operator - (const l_interval &, const lx_interval &)
481 noexcept;
483inline lx_interval operator - (const lx_interval &, const l_real &)
484 noexcept;
486inline lx_interval operator - (const l_real &, const lx_interval &)
487 noexcept;
489inline lx_interval operator - (const lx_interval &, const lx_real &)
490 noexcept;
492inline lx_interval operator - (const lx_real &, const lx_interval &)
493 noexcept;
495inline lx_interval operator - (const lx_interval &, const real &)
496 noexcept;
498inline lx_interval operator - (const real &, const lx_interval &)
499 noexcept;
501inline lx_interval operator - (const lx_interval &, const interval &)
502 noexcept;
504inline lx_interval operator - (const interval &, const lx_interval &)
505 noexcept;
506
508inline lx_interval & operator -=(lx_interval &, const lx_interval &) noexcept;
510inline lx_interval & operator -=(lx_interval &, const l_interval &) noexcept;
512inline lx_interval & operator -=(lx_interval &, const l_real &) noexcept;
514inline lx_interval & operator -=(lx_interval &, const lx_real &) noexcept;
516inline lx_interval & operator -=(lx_interval &, const real &) noexcept;
518inline lx_interval & operator -=(lx_interval &, const interval &) noexcept;
519
521lx_interval operator * (const lx_interval &, const lx_interval &)
522 noexcept;
523
525inline lx_interval operator * (const lx_interval &, const l_interval &)
526 noexcept;
528inline lx_interval operator * (const l_interval &, const lx_interval &)
529 noexcept;
531inline lx_interval operator * (const lx_interval &, const l_real &)
532 noexcept;
534inline lx_interval operator * (const l_real &, const lx_interval &)
535 noexcept;
537inline lx_interval operator * (const lx_interval &, const lx_real &)
538 noexcept;
540inline lx_interval operator * (const lx_real &, const lx_interval &)
541 noexcept;
543inline lx_interval operator * (const lx_interval &, const real &)
544 noexcept;
546inline lx_interval operator * (const real &, const lx_interval &)
547 noexcept;
549inline lx_interval operator * (const lx_interval &, const interval &)
550 noexcept;
552inline lx_interval operator * (const interval &, const lx_interval &)
553 noexcept;
554
556inline lx_interval & operator *=(lx_interval &, const lx_interval &) noexcept;
558inline lx_interval & operator *=(lx_interval &, const l_interval &) noexcept;
560inline lx_interval & operator *=(lx_interval &, const l_real &) noexcept;
562inline lx_interval & operator *=(lx_interval &, const lx_real &) noexcept;
564inline lx_interval & operator *=(lx_interval &, const real &) noexcept;
566inline lx_interval & operator *=(lx_interval &, const interval &) noexcept;
567
569lx_interval operator / (const lx_interval &, const lx_interval &)
570 ;
571
573inline lx_interval operator / (const lx_interval &, const l_interval &)
574 ;
576inline lx_interval operator / (const l_interval &, const lx_interval &)
577 ;
579inline lx_interval operator / (const lx_interval &, const l_real &)
580 ;
582inline lx_interval operator / (const l_real &, const lx_interval &)
583 ;
585inline lx_interval operator / (const lx_interval &, const real &)
586 ;
588inline lx_interval operator / (const real &, const lx_interval &)
589 ;
591inline lx_interval operator / (const lx_interval &, const interval &)
592 ;
594inline lx_interval operator / (const interval &, const lx_interval &)
595 ;
597inline lx_interval operator / (const lx_interval &, const lx_real &)
598 ;
600inline lx_interval operator / (const lx_real &, const lx_interval &)
601 ;
602
604inline lx_interval & operator /=(lx_interval &, const lx_interval &) noexcept;
606inline lx_interval & operator /=(lx_interval &, const l_interval &) noexcept;
608inline lx_interval & operator /=(lx_interval &, const l_real &) noexcept;
610inline lx_interval & operator /=(lx_interval &, const lx_real &) noexcept;
612inline lx_interval & operator /=(lx_interval &, const real &) noexcept;
614inline 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
730inline lx_interval & SetInf(lx_interval&, const lx_real&)
731 ;
733inline lx_interval & SetInf(lx_interval&, const l_real&)
734 ;
736inline lx_interval & SetInf(lx_interval&, const real&)
737 ;
738
740inline lx_interval & SetSup(lx_interval&, const lx_real&)
741 ;
743inline lx_interval & SetSup(lx_interval&, const l_real&)
744 ;
746inline lx_interval & SetSup(lx_interval&, const real&)
747 ;
748
749// ------------------------- Help Functions: ----------------------------
750
751// ----------------- Intervals for test calculations --------------------
752
754l_interval point_max(void);
755// returns a staggered point interval with maximum exponent 1020,
756// whereby nearly all mantissa bits are set.
757
759l_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
765l_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
770l_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
The namespace cxsc, providing all functionality of the class library C-XSC.
Definition cdot.cpp:29
lx_interval Sqrt2Pi_lx_interval() noexcept
Enclosure-Interval for .
l_interval wide_max(void)
Returns a wide interval with maximum exponent 1020.
lx_interval Er_lx_interval() noexcept
Enclosure-Interval for .
cinterval sqrtp1m1(const cinterval &z) noexcept
Calculates .
Definition cimath.cpp:1054
lx_interval Catalan_lx_interval() noexcept
Enclosure-Interval for .
cinterval exp2(const cinterval &z) noexcept
Calculates .
Definition cimath.cpp:167
cinterval sqrt1mx2(const cinterval &z) noexcept
Calculates .
Definition cimath.cpp:1140
cinterval asinh(const cinterval &z) noexcept
Calculates .
Definition cimath.cpp:2718
lx_interval SqrtPi_lx_interval() noexcept
Enclosure-Interval for .
l_interval point_max(void)
Returns a point interval with maximum exponent 1020.
cinterval coth(const cinterval &z) noexcept
Calculates .
Definition cimath.cpp:578
cdotprecision & operator+=(cdotprecision &cd, const l_complex &lc) noexcept
Implementation of standard algebraic addition and allocation operation.
Definition cdot.inl:251
lx_interval expo2zero(const lx_interval &a)
b = expo2zero(a) returns with
cinterval log2(const cinterval &z) noexcept
Calculates .
Definition cimath.cpp:898
lx_interval Sqrt2r_lx_interval() noexcept
Enclosure-Interval for .
cinterval power(const cinterval &z, int n) noexcept
Calculates .
Definition cimath.cpp:1941
cinterval log10(const cinterval &z) noexcept
Calculates .
Definition cimath.cpp:903
lx_interval Ln10r_lx_interval() noexcept
Enclosure-Interval for .
lx_interval EpPid4_lx_interval() noexcept
Enclosure-Interval for .
lx_interval cos_n(const lx_interval &x, const real &n) noexcept
Calculates .
lx_interval Pir_lx_interval() noexcept
Enclosure-Interval for .
int Disjoint(const interval &a, const interval &b)
Checks arguments for disjointness.
Definition interval.cpp:288
cinterval ln(const cinterval &z) noexcept
Calculates .
Definition cimath.cpp:851
lx_interval E_lx_interval() noexcept
Enclosure-Interval for .
lx_interval Pi2r_lx_interval() noexcept
Enclosure-Interval for .
lx_interval acothp1(const lx_interval &x) noexcept
Calculates .
lx_interval Sqrt2_lx_interval() noexcept
Enclosure-Interval for .
bool Is_Integer(const real &x)
Returns 1 if x is an integer value and if .
Definition lx_real.inl:63
civector operator/(const cimatrix_subv &rv, const cinterval &s) noexcept
Implementation of division operation.
Definition cimatrix.inl:730
lx_interval Sqrt3_lx_interval() noexcept
Enclosure-Interval for .
lx_interval Ln2_lx_interval() noexcept
Enclosure-Interval for .
lx_interval Sqrt2Pir_lx_interval() noexcept
Enclosure-Interval for .
lx_interval Pid4_lx_interval() noexcept
Enclosure-Interval for .
lx_interval sqrt7_lx_interval() noexcept
Enclosure-Interval for .
cvector diam(const cimatrix_subv &mv) noexcept
Returns the diameter of the matrix.
Definition cimatrix.inl:738
lx_interval LnPi_lx_interval() noexcept
Enclosure-Interval for .
lx_interval Ln2Pi_lx_interval() noexcept
Enclosure-Interval for .
cinterval pow(const cinterval &z, const interval &p) noexcept
Calculates .
Definition cimath.cpp:2074
lx_interval EpPi_lx_interval() noexcept
Enclosure-Interval for .
lx_interval Sqrt3d2_lx_interval() noexcept
Enclosure-Interval for .
real RelDiam(const interval &x)
Computes the relative diameter .
Definition interval.cpp:316
lx_interval Ln10_lx_interval() noexcept
Enclosure-Interval for .
lx_interval EpPid2_lx_interval() noexcept
Enclosure-Interval for .
cinterval sinh(const cinterval &z) noexcept
Calculates .
Definition cimath.cpp:231
lx_interval atanh1m(const lx_interval &x) noexcept
Calculates .
cinterval asin(const cinterval &z) noexcept
Calculates .
Definition cimath.cpp:2311
interval acoshp1(const interval &x)
Calculates .
Definition imath.cpp:617
cinterval tan(const cinterval &z) noexcept
Calculates .
Definition cimath.cpp:393
lx_interval sqrt5_lx_interval() noexcept
Enclosure-Interval for .
cinterval exp10(const cinterval &z) noexcept
Calculates .
Definition cimath.cpp:172
int in(const cinterval &x, const cinterval &y)
Checks if first argument is part of second argument.
lx_interval Sqrt3r_lx_interval() noexcept
Enclosure-Interval for .
cinterval acos(const cinterval &z) noexcept
Calculates .
Definition cimath.cpp:2553
cinterval sqrtx2m1(const cinterval &z) noexcept
Calculates .
Definition cimath.cpp:1109
cinterval acosh(const cinterval &z) noexcept
Calculates .
Definition cimath.cpp:2732
lx_interval sin_n(const lx_interval &x, const real &n) noexcept
Calculates .
l_interval wide_any(int n)
Returns a wide interval with exponent n, .
lx_interval Ep2r_lx_interval() noexcept
Enclosure-Interval for .
lx_interval SqrtPir_lx_interval() noexcept
Enclosure-Interval for .
cinterval cosh(const cinterval &z) noexcept
Calculates .
Definition cimath.cpp:223
cinterval cos(const cinterval &z) noexcept
Calculates .
Definition cimath.cpp:207
lx_interval Ln2r_lx_interval() noexcept
Enclosure-Interval for .
lx_interval Ep2_lx_interval() noexcept
Enclosure-Interval for .
lx_interval One_p_lx_interval() noexcept
Enclosure-Interval for .
cinterval sqrt1px2(const cinterval &z) noexcept
Calculates .
Definition cimath.cpp:1071
cinterval exp(const cinterval &z) noexcept
Calculates .
Definition cimath.cpp:159
lx_interval Pi_lx_interval() noexcept
Enclosure-Interval for .
cinterval tanh(const cinterval &z) noexcept
Calculates .
Definition cimath.cpp:565
interval ln_sqrtx2y2(const interval &x, const interval &y) noexcept
Calculates .
Definition imath.cpp:581
cimatrix & operator*=(cimatrix &m, const cinterval &c) noexcept
Implementation of multiplication and allocation operation.
lx_interval Pid2_lx_interval() noexcept
Enclosure-Interval for .
real AbsMax(const interval &x)
Computes the greatest absolute value .
Definition interval.cpp:303
cinterval expm1(const cinterval &z) noexcept
Calculates .
Definition cimath.cpp:177
cinterval cot(const cinterval &z) noexcept
Calculates .
Definition cimath.cpp:538
lx_interval Ep2Pi_lx_interval() noexcept
Enclosure-Interval for .
ivector abs(const cimatrix_subv &mv) noexcept
Returns the absolute value of the matrix.
Definition cimatrix.inl:737
cinterval sqrt(const cinterval &z) noexcept
Calculates .
Definition cimath.cpp:1007
cinterval acot(const cinterval &z) noexcept
Calculates .
Definition cimath.cpp:3130
void times2pown(cinterval &x, int n) noexcept
Fast multiplication of reference parameter [z] with .
Definition cimath.cpp:2059
lx_interval Pid3_lx_interval() noexcept
Enclosure-Interval for .
cinterval sqr(const cinterval &z) noexcept
Calculates .
Definition cimath.cpp:3342
lx_interval atanhm1p(const lx_interval &x) noexcept
Calculates .
cinterval lnp1(const cinterval &z) noexcept
Calculates .
Definition cimath.cpp:867
cvector mid(const cimatrix_subv &mv) noexcept
Returns the middle of the matrix.
Definition cimatrix.inl:739
civector operator*(const cimatrix_subv &rv, const cinterval &s) noexcept
Implementation of multiplication operation.
Definition cimatrix.inl:731
cinterval atan(const cinterval &z) noexcept
Calculates .
Definition cimath.cpp:2938
cinterval atanh(const cinterval &z) noexcept
Calculates .
Definition cimath.cpp:3317
lx_interval acothm1m(const lx_interval &x) noexcept
Calculates .
l_interval point_any(int n)
Returns a point interval with exponent n.
cinterval acoth(const cinterval &z) noexcept
Calculates .
Definition cimath.cpp:3330
lx_interval Pi2_lx_interval() noexcept
Enclosure-Interval for .
interval sqrtx2y2(const interval &x, const interval &y) noexcept
Calculates .
Definition imath.cpp:80
lx_interval One_m_lx_interval() noexcept
Enclosure-Interval for .
lx_interval xp1_pow_y(const lx_interval &x, const lx_interval &y) noexcept
Calculates .
lx_interval Pip2_lx_interval() noexcept
Enclosure-Interval for .
cinterval sin(const cinterval &z) noexcept
Calculates .
Definition cimath.cpp:215
cinterval Blow(cinterval x, const real &eps)
Performs an epsilon inflation.
real AbsMin(const interval &x)
Computes the smallest absolute value .
Definition interval.cpp:293
cimatrix & operator/=(cimatrix &m, const cinterval &c) noexcept
Implementation of division and allocation operation.
lx_interval EulerGamma_lx_interval() noexcept
Enclosure-Interval for .