C-XSC - A C++ Class Library for Extended Scientific Computing  2.5.4
l_cinterval.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: l_cinterval.hpp,v 1.20 2014/01/30 17:23:46 cxsc Exp $ */
25 
26 #ifndef _CXSC_L_CINTERVAL_HPP_INCLUDED
27 #define _CXSC_L_CINTERVAL_HPP_INCLUDED
28 
29 #include <iostream>
30 #include <string>
31 
32 // Headerfile for l_cinterval.
33 
34 #include "except.hpp"
35 #include "l_real.hpp"
36 #include "l_complex.hpp"
37 #include "l_interval.hpp"
38 #include "cinterval.hpp"
39 
40 namespace cxsc {
41 
42 // class civector;
43 // class cimatrix;
44 // class civector_slice;
45 // class cimatrix_slice;
46 
48 
54 {
55  private:
56  // ---- private data ----------------------------------------
57  l_interval re;
58  l_interval im;
59 
60  public:
61  // ---- implicit constructors ------------------------------
63  inline l_cinterval(void) throw () {}
65  inline l_cinterval(const interval & a,const interval &b) throw();
67  inline l_cinterval(const l_interval & a,const l_interval &b) throw();
69  inline l_cinterval(const complex & a, const complex & b)
70  throw(ERROR_CINTERVAL_EMPTY_INTERVAL);
72  inline l_cinterval(const l_complex & a, const l_complex & b)
73  throw(ERROR_CINTERVAL_EMPTY_INTERVAL);
74 
75  friend cinterval::cinterval(const l_cinterval &) throw();
76 
77  // ---- explicit constructors -------------------------------
78 
80  explicit inline l_cinterval(const real & a) throw();
82  explicit inline l_cinterval(const l_real & a) throw();
84  explicit inline l_cinterval(const interval & a) throw();
86  explicit inline l_cinterval(const l_interval & a) throw();
88  explicit inline l_cinterval(const complex & a) throw();
90  explicit inline l_cinterval(const l_complex & a) throw();
92  explicit inline l_cinterval(const cinterval & a) throw();
93 
95  explicit l_cinterval(const dotprecision &) throw();
97  explicit l_cinterval(const cdotprecision &) throw();
99  explicit l_cinterval(const idotprecision &) throw();
101  explicit l_cinterval(const cidotprecision &) throw();
102 
103  // ---- assignments -----------------------------------------
104 
106  inline l_cinterval & operator =(const real &) throw();
108  inline l_cinterval & operator =(const l_real &) throw();
110  inline l_cinterval & operator =(const interval &) throw();
112  inline l_cinterval & operator =(const l_interval &) throw();
114  inline l_cinterval & operator =(const complex &) throw();
116  inline l_cinterval & operator =(const l_complex &) throw();
118  inline l_cinterval & operator =(const cinterval &) throw();
120  inline l_cinterval & operator =(const l_cinterval &) throw();
122  l_cinterval & operator =(const lx_cinterval &) throw();
123 
125  inline l_cinterval & operator =(const dotprecision &) throw();
127  inline l_cinterval & operator =(const idotprecision &) throw();
129  inline l_cinterval & operator =(const cdotprecision &) throw();
131  inline l_cinterval & operator =(const cidotprecision &) throw();
132 
133  friend cinterval & cinterval::operator = (const l_cinterval &) throw();
134 
135  // ---- Input/Output ---------------------------------------
136 
138  friend std::ostream & operator << (std::ostream &,const l_cinterval &)
139  throw();
141  friend std::string & operator << (std::string &, const l_cinterval &)
142  throw();
144  friend std::string & operator >> (std::string &, l_cinterval &)
145  throw(EMPTY_INTERVAL);
147  friend std::istream & operator >>(std::istream &, l_cinterval &)
148  throw(EMPTY_INTERVAL);
150  friend void operator >> (const char *, l_cinterval &)
151  throw(EMPTY_INTERVAL);
153  friend void operator >> (const std::string &, l_cinterval &)
154  throw(EMPTY_INTERVAL);
155 
156 
157 // ----------------------------- Std.Operators ------------------------------
158 
160  friend inline l_cinterval operator -(const l_cinterval &) throw ();
162  friend inline l_cinterval operator +(const l_cinterval &) throw ();
164  friend inline bool operator! (const l_cinterval & a) throw ();
165 
166 // LCI <--> LCI
167 
169  friend inline l_cinterval operator +(const l_cinterval &,
170  const l_cinterval &) throw();
172  friend inline l_cinterval operator -(const l_cinterval &,
173  const l_cinterval &) throw();
175  friend l_cinterval operator *(const l_cinterval &,
176  const l_cinterval &) throw();
178  friend l_cinterval operator /(const l_cinterval &,
179  const l_cinterval &)
180  throw(DIV_BY_ZERO);
182  friend inline l_cinterval operator |(const l_cinterval &,
183  const l_cinterval &) throw();
185  friend inline l_cinterval operator &(const l_cinterval &,
186  const l_cinterval &)
187  throw(ERROR_CINTERVAL_EMPTY_INTERVAL);
188 
190  friend inline l_cinterval & operator +=(l_cinterval &,
191  const l_cinterval &) throw();
193  friend inline l_cinterval & operator -=(l_cinterval &,
194  const l_cinterval &) throw();
196  friend inline l_cinterval & operator *=(l_cinterval &,
197  const l_cinterval &) throw();
199  friend inline l_cinterval & operator /=(l_cinterval &,
200  const l_cinterval &) throw();
202  friend inline l_cinterval & operator |=(l_cinterval &,
203  const l_cinterval &) throw();
205  friend inline l_cinterval & operator &=(l_cinterval &,
206  const l_cinterval &)
207  throw(ERROR_CINTERVAL_EMPTY_INTERVAL);
208 
209  // LCI <--> R
210 
212  friend inline l_cinterval operator +(const l_cinterval &, const real &)
213  throw();
215  friend inline l_cinterval operator +(const real &, const l_cinterval &)
216  throw();
218  friend inline l_cinterval operator -(const l_cinterval &, const real &)
219  throw();
221  friend inline l_cinterval operator -(const real &, const l_cinterval &)
222  throw();
224  friend inline l_cinterval operator *(const l_cinterval &, const real &)
225  throw();
227  friend inline l_cinterval operator *(const real &, const l_cinterval &)
228  throw();
230  friend inline l_cinterval operator /(const l_cinterval &, const real &)
231  throw();
233  friend inline l_cinterval operator /(const real &, const l_cinterval &)
234  throw();
236  friend inline l_cinterval operator |(const l_cinterval &, const real &)
237  throw();
239  friend inline l_cinterval operator |(const real &, const l_cinterval &)
240  throw();
242  friend inline l_cinterval operator &(const l_cinterval &, const real &)
243  throw();
245  friend inline l_cinterval operator &(const real &, const l_cinterval &)
246  throw();
247 
249  friend inline l_cinterval & operator +=(l_cinterval &, const real &)
250  throw();
252  friend inline l_cinterval & operator -=(l_cinterval &, const real &)
253  throw();
255  friend inline l_cinterval & operator *=(l_cinterval &, const real &)
256  throw();
258  friend inline l_cinterval & operator /=(l_cinterval &, const real &)
259  throw();
261  friend inline l_cinterval & operator |=(l_cinterval &, const real &)
262  throw();
264  friend inline l_cinterval & operator &=(l_cinterval &, const real &)
265  throw();
266 
267  // LCI <--> LR
268 
270  friend inline l_cinterval operator +(const l_cinterval &, const l_real &)
271  throw();
273  friend inline l_cinterval operator +(const l_real &, const l_cinterval &)
274  throw();
276  friend inline l_cinterval operator -(const l_cinterval &, const l_real &)
277  throw();
279  friend inline l_cinterval operator -(const l_real &, const l_cinterval &)
280  throw();
282  friend inline l_cinterval operator *(const l_cinterval &, const l_real &)
283  throw();
285  friend inline l_cinterval operator *(const l_real &, const l_cinterval &)
286  throw();
288  friend inline l_cinterval operator /(const l_cinterval &, const l_real &)
289  throw();
291  friend inline l_cinterval operator /(const l_real &, const l_cinterval &)
292  throw();
294  friend inline l_cinterval operator |(const l_cinterval &, const l_real &)
295  throw();
297  friend inline l_cinterval operator |(const l_real &, const l_cinterval &)
298  throw();
300  friend inline l_cinterval operator &(const l_cinterval &, const l_real &)
301  throw();
303  friend inline l_cinterval operator &(const l_real &, const l_cinterval &)
304  throw();
305 
307  friend inline l_cinterval & operator +=(l_cinterval &, const l_real &)
308  throw();
310  friend inline l_cinterval & operator -=(l_cinterval &, const l_real &)
311  throw();
313  friend inline l_cinterval & operator *=(l_cinterval &, const l_real &)
314  throw();
316  friend inline l_cinterval & operator /=(l_cinterval &, const l_real &)
317  throw();
319  friend inline l_cinterval & operator |=(l_cinterval &, const l_real &)
320  throw();
322  friend inline l_cinterval & operator &=(l_cinterval &, const l_real &)
323  throw();
324 
325  // LCI <--> C
326 
328  friend inline l_cinterval operator +(const l_cinterval &,
329  const complex &) throw();
331  friend inline l_cinterval operator +(const complex &,
332  const l_cinterval &) throw();
334  friend inline l_cinterval operator -(const l_cinterval &,
335  const complex &) throw();
337  friend inline l_cinterval operator -(const complex &,
338  const l_cinterval &) throw();
340  friend inline l_cinterval operator *(const l_cinterval &,
341  const complex &) throw();
343  friend inline l_cinterval operator *(const complex &,
344  const l_cinterval &) throw();
346  friend inline l_cinterval operator /(const l_cinterval &,
347  const complex &) throw();
349  friend inline l_cinterval operator /(const complex &,
350  const l_cinterval &) throw();
352  friend inline l_cinterval operator |(const l_cinterval &,
353  const complex &) throw();
355  friend inline l_cinterval operator |(const complex &,
356  const l_cinterval &) throw();
358  friend inline l_cinterval operator &(const l_cinterval &,
359  const complex &) throw();
361  friend inline l_cinterval operator &(const complex &,
362  const l_cinterval &) throw();
363 
365  friend inline l_cinterval & operator +=(l_cinterval &, const complex &)
366  throw();
368  friend inline l_cinterval & operator -=(l_cinterval &, const complex &)
369  throw();
371  friend inline l_cinterval & operator *=(l_cinterval &, const complex &)
372  throw();
374  friend inline l_cinterval & operator /=(l_cinterval &, const complex &)
375  throw();
377  friend inline l_cinterval & operator |=(l_cinterval &, const complex &)
378  throw();
380  friend inline l_cinterval & operator &=(l_cinterval &, const complex &)
381  throw();
382 
383  // LCI <--> LC
384 
386  friend inline l_cinterval operator +(const l_cinterval &,
387  const l_complex &) throw();
389  friend inline l_cinterval operator +(const l_complex &,
390  const l_cinterval &) throw();
392  friend inline l_cinterval operator -(const l_cinterval &,
393  const l_complex &) throw();
395  friend inline l_cinterval operator -(const l_complex &,
396  const l_cinterval &) throw();
398  friend inline l_cinterval operator *(const l_cinterval &,
399  const l_complex &) throw();
401  friend inline l_cinterval operator *(const l_complex &,
402  const l_cinterval &) throw();
404  friend inline l_cinterval operator /(const l_cinterval &,
405  const l_complex &) throw();
407  friend inline l_cinterval operator /(const l_complex &,
408  const l_cinterval &) throw();
410  friend inline l_cinterval operator |(const l_cinterval &,
411  const l_complex &) throw();
413  friend inline l_cinterval operator |(const l_complex &,
414  const l_cinterval &) throw();
416  friend inline l_cinterval operator &(const l_cinterval &,
417  const l_complex &) throw();
419  friend inline l_cinterval operator &(const l_complex &,
420  const l_cinterval &) throw();
421 
423  friend inline l_cinterval & operator +=(l_cinterval &, const l_complex &)
424  throw();
426  friend inline l_cinterval & operator -=(l_cinterval &, const l_complex &)
427  throw();
429  friend inline l_cinterval & operator *=(l_cinterval &, const l_complex &)
430  throw();
432  friend inline l_cinterval & operator /=(l_cinterval &, const l_complex &)
433  throw();
435  friend inline l_cinterval & operator |=(l_cinterval &, const l_complex &)
436  throw();
438  friend inline l_cinterval & operator &=(l_cinterval &, const l_complex &)
439  throw();
440 
441  // LCI <--> I
442 
444  friend inline l_cinterval operator +(const l_cinterval &,
445  const interval &) throw();
447  friend inline l_cinterval operator +(const interval &,
448  const l_cinterval &) throw();
450  friend inline l_cinterval operator -(const l_cinterval &,
451  const interval &) throw();
453  friend inline l_cinterval operator -(const interval &,
454  const l_cinterval &) throw();
456  friend inline l_cinterval operator *(const l_cinterval &,
457  const interval &) throw();
459  friend inline l_cinterval operator *(const interval &,
460  const l_cinterval &) throw();
462  friend inline l_cinterval operator /(const l_cinterval &,
463  const interval &) throw();
465  friend inline l_cinterval operator /(const interval &,
466  const l_cinterval &) throw();
468  friend inline l_cinterval operator |(const l_cinterval &,
469  const interval &) throw();
471  friend inline l_cinterval operator |(const interval &,
472  const l_cinterval &) throw();
474  friend inline l_cinterval operator &(const l_cinterval &,
475  const interval &) throw();
477  friend inline l_cinterval operator &(const interval &,
478  const l_cinterval &) throw();
479 
481  friend inline l_cinterval & operator +=(l_cinterval &,
482  const interval &) throw();
484  friend inline l_cinterval & operator -=(l_cinterval &,
485  const interval &) throw();
487  friend inline l_cinterval & operator *=(l_cinterval &,
488  const interval &) throw();
490  friend inline l_cinterval & operator /=(l_cinterval &,
491  const interval &) throw();
493  friend inline l_cinterval & operator |=(l_cinterval &,
494  const interval &) throw();
496  friend inline l_cinterval & operator &=(l_cinterval &,
497  const interval &) throw();
498 
499  // LCI <--> LI
500 
502  friend inline l_cinterval operator +(const l_cinterval &,
503  const l_interval &) throw();
505  friend inline l_cinterval operator +(const l_interval &,
506  const l_cinterval &) throw();
508  friend inline l_cinterval operator -(const l_cinterval &,
509  const l_interval &) throw();
511  friend inline l_cinterval operator -(const l_interval &,
512  const l_cinterval &) throw();
514  friend inline l_cinterval operator *(const l_cinterval &,
515  const l_interval &) throw();
517  friend inline l_cinterval operator *(const l_interval &,
518  const l_cinterval &) throw();
520  friend inline l_cinterval operator /(const l_cinterval &,
521  const l_interval &) throw();
523  friend inline l_cinterval operator /(const l_interval &,
524  const l_cinterval &) throw();
526  friend inline l_cinterval operator |(const l_cinterval &,
527  const l_interval &) throw();
529  friend inline l_cinterval operator |(const l_interval &,
530  const l_cinterval &) throw();
532  friend inline l_cinterval operator &(const l_cinterval &,
533  const l_interval &) throw();
535  friend inline l_cinterval operator &(const l_interval &,
536  const l_cinterval &) throw();
537 
539  friend inline l_cinterval & operator +=(l_cinterval &,
540  const l_interval &) throw();
542  friend inline l_cinterval & operator -=(l_cinterval &,
543  const l_interval &) throw();
545  friend inline l_cinterval & operator *=(l_cinterval &,
546  const l_interval &) throw();
548  friend inline l_cinterval & operator /=(l_cinterval &,
549  const l_interval &) throw();
551  friend inline l_cinterval & operator |=(l_cinterval &,
552  const l_interval &) throw();
554  friend inline l_cinterval & operator &=(l_cinterval &,
555  const l_interval &) throw();
556 
557  // LCI <--> CI
558 
560  friend inline l_cinterval operator +(const l_cinterval &,
561  const cinterval &) throw();
563  friend inline l_cinterval operator +(const cinterval &,
564  const l_cinterval &) throw();
566  friend inline l_cinterval operator -(const l_cinterval &,
567  const cinterval &) throw();
569  friend inline l_cinterval operator -(const cinterval &,
570  const l_cinterval &) throw();
572  friend inline l_cinterval operator *(const l_cinterval &,
573  const cinterval &) throw();
575  friend inline l_cinterval operator *(const cinterval &,
576  const l_cinterval &) throw();
578  friend inline l_cinterval operator /(const l_cinterval &,
579  const cinterval &) throw();
581  friend inline l_cinterval operator /(const cinterval &,
582  const l_cinterval &) throw();
584  friend inline l_cinterval operator |(const l_cinterval &,
585  const cinterval &) throw();
587  friend inline l_cinterval operator |(const cinterval &,
588  const l_cinterval &) throw();
590  friend inline l_cinterval operator &(const l_cinterval &,
591  const cinterval &) throw();
593  friend inline l_cinterval operator &(const cinterval &,
594  const l_cinterval &) throw();
595 
597  friend inline l_cinterval & operator +=(l_cinterval &,
598  const cinterval &) throw();
600  friend inline l_cinterval & operator -=(l_cinterval &,
601  const cinterval &) throw();
603  friend inline l_cinterval & operator *=(l_cinterval &,
604  const cinterval &) throw();
606  friend inline l_cinterval & operator /=(l_cinterval &,
607  const cinterval &) throw();
609  friend inline l_cinterval & operator |=(l_cinterval &,
610  const cinterval &) throw();
612  friend inline l_cinterval & operator &=(l_cinterval &,
613  const cinterval &) throw();
614 
615 
616 
617 // Convex Hull: LC <--> R; C <--> LR; LC <--> LR; CI <--> LR; CI <--> LC;
618 
620  friend inline l_cinterval operator |(const l_complex &, const real &)
621  throw();
623  friend inline l_cinterval operator |(const real &, const l_complex &)
624  throw();
626  friend inline l_cinterval operator |(const complex &, const l_real &)
627  throw();
629  friend inline l_cinterval operator |(const l_real &, const complex &)
630  throw();
632  friend inline l_cinterval operator |(const l_complex &, const l_real &)
633  throw();
635  friend inline l_cinterval operator |(const l_real &, const l_complex &)
636  throw();
638  friend inline l_cinterval operator |(const cinterval &, const l_real &)
639  throw();
641  friend inline l_cinterval operator |(const l_real &, const cinterval &)
642  throw();
644  friend inline l_cinterval operator |(const cinterval &,
645  const l_complex &) throw();
647  friend inline l_cinterval operator |(const l_complex &,
648  const cinterval &) throw();
649 
650  // LC <--> I
651 
653  friend inline l_cinterval operator +(const l_complex &, const interval &)
654  throw();
656  friend inline l_cinterval operator +(const interval &, const l_complex &)
657  throw();
659  friend inline l_cinterval operator -(const l_complex &, const interval &)
660  throw();
662  friend inline l_cinterval operator -(const interval &, const l_complex &)
663  throw();
665  friend inline l_cinterval operator *(const l_complex &, const interval &)
666  throw();
668  friend inline l_cinterval operator *(const interval &, const l_complex &)
669  throw();
671  friend inline l_cinterval operator /(const l_complex &, const interval &)
672  throw();
674  friend inline l_cinterval operator /(const interval &, const l_complex &)
675  throw();
677  friend inline l_cinterval operator |(const l_complex &, const interval &)
678  throw();
680  friend inline l_cinterval operator |(const interval &, const l_complex &)
681  throw();
683  friend inline l_cinterval operator &(const l_complex &, const interval &)
684  throw();
686  friend inline l_cinterval operator &(const interval &, const l_complex &)
687  throw();
688 
689  // C <--> LI
690 
692  friend inline l_cinterval operator +(const complex &, const l_interval &)
693  throw();
695  friend inline l_cinterval operator +(const l_interval &, const complex &)
696  throw();
698  friend inline l_cinterval operator -(const complex &, const l_interval &)
699  throw();
701  friend inline l_cinterval operator -(const l_interval &, const complex &)
702  throw();
704  friend inline l_cinterval operator *(const complex &, const l_interval &)
705  throw();
707  friend inline l_cinterval operator *(const l_interval &, const complex &)
708  throw();
710  friend inline l_cinterval operator /(const complex &, const l_interval &)
711  throw();
713  friend inline l_cinterval operator /(const l_interval &, const complex &)
714  throw();
716  friend inline l_cinterval operator |(const complex &, const l_interval &)
717  throw();
719  friend inline l_cinterval operator |(const l_interval &, const complex &)
720  throw();
722  friend inline l_cinterval operator &(const complex &, const l_interval &)
723  throw();
725  friend inline l_cinterval operator &(const l_interval &, const complex &)
726  throw();
727 
728  // LC <--> LI
729 
731  friend inline l_cinterval operator +(const l_complex &,
732  const l_interval &) throw();
734  friend inline l_cinterval operator +(const l_interval &,
735  const l_complex &) throw();
737  friend inline l_cinterval operator -(const l_complex &,
738  const l_interval &) throw();
740  friend inline l_cinterval operator -(const l_interval &,
741  const l_complex &) throw();
743  friend inline l_cinterval operator *(const l_complex &,
744  const l_interval &) throw();
746  friend inline l_cinterval operator *(const l_interval &,
747  const l_complex &) throw();
749  friend inline l_cinterval operator /(const l_complex &,
750  const l_interval &) throw();
752  friend inline l_cinterval operator /(const l_interval &,
753  const l_complex &) throw();
755  friend inline l_cinterval operator |(const l_complex &,
756  const l_interval &) throw();
758  friend inline l_cinterval operator |(const l_interval &,
759  const l_complex &) throw();
761  friend inline l_cinterval operator &(const l_complex &,
762  const l_interval &) throw();
764  friend inline l_cinterval operator &(const l_interval &,
765  const l_complex &) throw();
766 
767 
768  // LC <--> C; LC <--> LC;
769 
771  friend inline l_cinterval operator |(const l_complex &, const complex &)
772  throw();
774  friend inline l_cinterval operator |(const complex &, const l_complex &)
775  throw();
777  friend inline l_cinterval operator |(const l_complex &,
778  const l_complex &) throw();
779 
780 // --------------------- Comp.Operat. ---------------------------------------
781  // LCI <--> LCI
783  friend inline bool operator== (const l_cinterval & a,
784  const l_cinterval & b) throw();
786  friend inline bool operator!= (const l_cinterval & a,
787  const l_cinterval & b) throw();
788 
789  // LCI <--> R
790 
792  friend inline bool operator== (const l_cinterval & a, const real & b)
793  throw();
795  friend inline bool operator== (const real & a, const l_cinterval & b)
796  throw();
798  friend inline bool operator!= (const l_cinterval & a, const real & b)
799  throw();
801  friend inline bool operator!= (const real & a, const l_cinterval & b)
802  throw();
803 
804  // LCI <--> LR
805 
807  friend inline bool operator== (const l_cinterval & a, const l_real & b)
808  throw();
810  friend inline bool operator== (const l_real & a, const l_cinterval & b)
811  throw();
813  friend inline bool operator!= (const l_cinterval & a, const l_real & b)
814  throw();
816  friend inline bool operator!= (const l_real & a, const l_cinterval & b)
817  throw();
818 
819  // LCI <--> I
820 
822  friend inline bool operator== (const l_cinterval & a,
823  const interval & b) throw();
825  friend inline bool operator== (const interval & a,
826  const l_cinterval & b) throw();
828  friend inline bool operator!= (const l_cinterval & a,
829  const interval & b) throw();
831  friend inline bool operator!= (const interval & a,
832  const l_cinterval & b) throw();
833 
834  // LCI <--> LI
835 
837  friend inline bool operator== (const l_cinterval & a,
838  const l_interval & b) throw();
840  friend inline bool operator== (const l_interval & a,
841  const l_cinterval & b) throw();
843  friend inline bool operator!= (const l_cinterval & a,
844  const l_interval & b) throw();
846  friend inline bool operator!= (const l_interval & a,
847  const l_cinterval & b) throw();
848 
849  // LCI <--> C
850 
852  friend inline bool operator== (const l_cinterval & a, const complex & b)
853  throw();
855  friend inline bool operator== (const complex & a, const l_cinterval & b)
856  throw();
858  friend inline bool operator!= (const l_cinterval & a, const complex & b)
859  throw();
861  friend inline bool operator!= (const complex & a, const l_cinterval & b)
862  throw();
863 
864  // LCI <--> LC
865 
867  friend inline bool operator== (const l_cinterval & a,
868  const l_complex & b) throw();
870  friend inline bool operator== (const l_complex & a,
871  const l_cinterval & b) throw();
873  friend inline bool operator!= (const l_cinterval & a,
874  const l_complex & b) throw();
876  friend inline bool operator!= (const l_complex & a,
877  const l_cinterval & b) throw();
878 
879  // LCI <--> CI
880 
882  friend inline bool operator== (const l_cinterval & a,
883  const cinterval & b) throw();
885  friend inline bool operator== (const cinterval & a,
886  const l_cinterval & b) throw();
888  friend inline bool operator!= (const l_cinterval & a,
889  const cinterval & b) throw();
891  friend inline bool operator!= (const cinterval & a,
892  const l_cinterval & b) throw();
893 
894  // ---- Set Operators ----
895 
897  friend inline bool operator <(const l_cinterval &, const l_cinterval &)
898  throw();
900  friend inline bool operator >(const l_cinterval &, const l_cinterval &)
901  throw();
903  friend inline bool operator <=(const l_cinterval &, const l_cinterval &)
904  throw();
906  friend inline bool operator >=(const l_cinterval &, const l_cinterval &)
907  throw();
908  // LCI <--> R
909 
911  friend inline bool operator <(const real &, const l_cinterval &)
912  throw();
914  friend inline bool operator >(const real &, const l_cinterval &)
915  throw();
917  friend inline bool operator <=(const real &, const l_cinterval &)
918  throw();
920  friend inline bool operator >=(const real &, const l_cinterval &)
921  throw();
922 
924  friend inline bool operator <(const l_cinterval &, const real &)
925  throw();
927  friend inline bool operator >(const l_cinterval &, const real &)
928  throw();
930  friend inline bool operator <=(const l_cinterval &, const real &)
931  throw();
933  friend inline bool operator >=(const l_cinterval &, const real &)
934  throw();
935 
936  // LCI <--> LR
937 
939  friend inline bool operator <(const l_real &, const l_cinterval &)
940  throw();
942  friend inline bool operator >(const l_real &, const l_cinterval &)
943  throw();
945  friend inline bool operator <=(const l_real &, const l_cinterval &)
946  throw();
948  friend inline bool operator >=(const l_real &, const l_cinterval &)
949  throw();
950 
952  friend inline bool operator <(const l_cinterval &, const l_real &)
953  throw();
955  friend inline bool operator >(const l_cinterval &, const l_real &)
956  throw();
958  friend inline bool operator <=(const l_cinterval &, const l_real &)
959  throw();
961  friend inline bool operator >=(const l_cinterval &, const l_real &)
962  throw();
963 
964  // LCI <--> I
965 
967  friend inline bool operator <(const interval &, const l_cinterval &)
968  throw();
970  friend inline bool operator >(const interval &, const l_cinterval &)
971  throw();
973  friend inline bool operator <=(const interval &, const l_cinterval &)
974  throw();
976  friend inline bool operator >=(const interval &, const l_cinterval &)
977  throw();
978 
980  friend inline bool operator <(const l_cinterval &, const interval &)
981  throw();
983  friend inline bool operator >(const l_cinterval &, const interval &)
984  throw();
986  friend inline bool operator <=(const l_cinterval &, const interval &)
987  throw();
989  friend inline bool operator >=(const l_cinterval &, const interval &)
990  throw();
991 
992  // LCI <--> LI
993 
995  friend inline bool operator <(const l_interval &, const l_cinterval &)
996  throw();
998  friend inline bool operator >(const l_interval &, const l_cinterval &)
999  throw();
1001  friend inline bool operator <=(const l_interval &, const l_cinterval &)
1002  throw();
1004  friend inline bool operator >=(const l_interval &, const l_cinterval &)
1005  throw();
1006 
1008  friend inline bool operator <(const l_cinterval &, const l_interval &)
1009  throw();
1011  friend inline bool operator >(const l_cinterval &, const l_interval &)
1012  throw();
1014  friend inline bool operator <=(const l_cinterval &, const l_interval &)
1015  throw();
1017  friend inline bool operator >=(const l_cinterval &, const l_interval &)
1018  throw();
1019 
1020  // LCI <--> C
1021 
1023  friend inline bool operator <(const complex &, const l_cinterval &)
1024  throw();
1026  friend inline bool operator >(const complex &, const l_cinterval &)
1027  throw();
1029  friend inline bool operator <=(const complex &, const l_cinterval &)
1030  throw();
1032  friend inline bool operator >=(const complex &, const l_cinterval &)
1033  throw();
1034 
1036  friend inline bool operator <(const l_cinterval &, const complex &)
1037  throw();
1039  friend inline bool operator >(const l_cinterval &, const complex &)
1040  throw();
1042  friend inline bool operator <=(const l_cinterval &, const complex &)
1043  throw();
1045  friend inline bool operator >=(const l_cinterval &, const complex &)
1046  throw();
1047 
1048  // LCI <--> LC
1049 
1051  friend inline bool operator <(const l_complex &, const l_cinterval &)
1052  throw();
1054  friend inline bool operator >(const l_complex &, const l_cinterval &)
1055  throw();
1057  friend inline bool operator <=(const l_complex &, const l_cinterval &)
1058  throw();
1060  friend inline bool operator >=(const l_complex &, const l_cinterval &)
1061  throw();
1062 
1064  friend inline bool operator <(const l_cinterval &, const l_complex &)
1065  throw();
1067  friend inline bool operator >(const l_cinterval &, const l_complex &)
1068  throw();
1070  friend inline bool operator <=(const l_cinterval &, const l_complex &)
1071  throw();
1073  friend inline bool operator >=(const l_cinterval &, const l_complex &)
1074  throw();
1075 
1076  // LCI <--> CI
1077 
1079  friend inline bool operator <(const cinterval &, const l_cinterval &)
1080  throw();
1082  friend inline bool operator >(const cinterval &, const l_cinterval &)
1083  throw();
1085  friend inline bool operator <=(const cinterval &, const l_cinterval &)
1086  throw();
1088  friend inline bool operator >=(const cinterval &, const l_cinterval &)
1089  throw();
1090 
1092  friend inline bool operator <(const l_cinterval &, const cinterval &)
1093  throw();
1095  friend inline bool operator >(const l_cinterval &, const cinterval &)
1096  throw();
1098  friend inline bool operator <=(const l_cinterval &, const cinterval &)
1099  throw();
1101  friend inline bool operator >=(const l_cinterval &, const cinterval &)
1102  throw();
1103 
1104  // ---- Others -------------------------------------------
1105 
1107  friend inline l_complex Inf(const l_cinterval &) throw();
1109  friend inline l_complex Sup(const l_cinterval &) throw();
1110 
1112  friend inline l_cinterval & SetInf(l_cinterval &, const complex &)
1113  throw(ERROR_CINTERVAL_EMPTY_INTERVAL);
1115  friend inline l_cinterval & SetSup(l_cinterval &, const complex &)
1116  throw(ERROR_CINTERVAL_EMPTY_INTERVAL);
1118  friend inline l_cinterval & SetInf(l_cinterval &, const l_complex &)
1119  throw(ERROR_CINTERVAL_EMPTY_INTERVAL);
1121  friend inline l_cinterval & SetSup(l_cinterval &, const l_complex &)
1122  throw(ERROR_CINTERVAL_EMPTY_INTERVAL);
1123 
1125  friend inline l_cinterval & SetInf(l_cinterval &, const real &)
1126  throw(ERROR_CINTERVAL_EMPTY_INTERVAL);
1127 
1129  friend inline l_cinterval & SetSup(l_cinterval &, const real &)
1130  throw(ERROR_CINTERVAL_EMPTY_INTERVAL);
1132  friend inline l_cinterval & SetInf(l_cinterval &, const l_real &)
1133  throw(ERROR_CINTERVAL_EMPTY_INTERVAL);
1134 
1136  friend inline l_cinterval & SetSup(l_cinterval &, const l_real &)
1137  throw(ERROR_CINTERVAL_EMPTY_INTERVAL);
1138 
1140  friend inline l_cinterval & UncheckedSetInf(l_cinterval &,
1141  const complex &) throw();
1143  friend inline l_cinterval & UncheckedSetInf(l_cinterval &,
1144  const real &) throw();
1146  friend inline l_cinterval & UncheckedSetSup(l_cinterval &,
1147  const complex &) throw();
1149  friend inline l_cinterval & UncheckedSetSup(l_cinterval &,
1150  const real &) throw();
1151 
1153  friend inline l_cinterval & UncheckedSetInf(l_cinterval &,
1154  const l_complex &) throw();
1156  friend inline l_cinterval & UncheckedSetInf(l_cinterval &,
1157  const l_real &) throw();
1159  friend inline l_cinterval & UncheckedSetSup(l_cinterval &,
1160  const l_complex &) throw();
1162  friend inline l_cinterval & UncheckedSetSup(l_cinterval &,
1163  const l_real &) throw();
1164 
1166  friend l_interval & Re(l_cinterval & a) throw() { return a.re; }
1168  friend l_interval Re(const l_cinterval & a) throw() { return a.re; }
1170  friend l_interval & Im(l_cinterval & a) throw() { return a.im; }
1172  friend l_interval Im(const l_cinterval & a) throw() { return a.im; }
1173 
1175  friend l_cinterval & SetRe(l_cinterval & a, const interval & b)
1176  { a.re=b; return a; }
1178  friend l_cinterval & SetIm(l_cinterval & a, const interval & b)
1179  { a.im=b; return a; }
1181  friend l_cinterval & SetRe(l_cinterval & a, const real & b)
1182  { a.re=b; return a; }
1184  friend l_cinterval & SetIm(l_cinterval & a, const real & b)
1185  { a.im=b; return a; }
1186 
1188  friend l_cinterval & SetRe(l_cinterval & a, const l_interval & b)
1189  { a.re=b; return a; }
1191  friend l_cinterval & SetIm(l_cinterval & a, const l_interval & b)
1192  { a.im=b; return a; }
1194  friend l_cinterval & SetRe(l_cinterval & a, const l_real & b)
1195  { a.re=b; return a; }
1197  friend l_cinterval & SetIm(l_cinterval & a, const l_real & b)
1198  { a.im=b; return a; }
1199 
1201  friend inline l_real InfRe(const l_cinterval &a) throw()
1202  { return Inf(a.re); }
1204  friend inline l_real InfIm(const l_cinterval &a) throw()
1205  { return Inf(a.im); }
1207  friend inline l_real SupRe(const l_cinterval &a) throw()
1208  { return Sup(a.re); }
1210  friend inline l_real SupIm(const l_cinterval &a) throw()
1211  { return Sup(a.im); }
1213  friend inline void times2pown(l_cinterval& x,
1214  const int& n) throw();
1216  friend inline void Times2pown(l_cinterval& x,
1217  const int& n) throw();
1218 
1219 
1221  friend l_interval abs (const l_cinterval &) throw();
1223  friend inline l_cinterval conj(const l_cinterval &) throw();
1225  friend inline l_complex mid (const l_cinterval &) throw();
1227  friend inline l_complex diam(const l_cinterval &) throw();
1228 
1230  friend inline l_cinterval adjust(const l_cinterval &) throw();
1231 
1232 };
1233 
1234 } // namespace cxsc
1235 
1236 #include "l_cinterval.inl"
1237 #include "l_cimath.hpp"
1238 
1239 #endif // _CXSC_L_CINTERVAL_HPP_INCLUDED
friend l_cinterval operator-(const l_cinterval &)
Implementation of standard algebraic negative sign operation.
The Multiple-Precision Data Type l_interval.
Definition: l_interval.hpp:71
cinterval(void)
Constructor of class cinterval.
Definition: cinterval.hpp:64
friend l_real InfRe(const l_cinterval &a)
Returns the infimum of the real interval of the complex interval.
The Data Type idotprecision.
Definition: idot.hpp:47
The Multiple-Precision Data Type l_real.
Definition: l_real.hpp:77
The Data Type dotprecision.
Definition: dot.hpp:111
friend l_complex mid(const l_cinterval &)
Returns the rounded middle of the complex interval.
friend l_cinterval & SetRe(l_cinterval &a, const l_interval &b)
Sets the real part of a complex interval.
l_cinterval & operator=(const real &)
Implementation of standard assigning operator.
Definition: l_cinterval.inl:82
friend l_interval Im(const l_cinterval &a)
Returns the imaginary part of the complex interval.
friend l_real SupRe(const l_cinterval &a)
Returns the supremum of the real interval of the complex interval.
friend l_cinterval & operator*=(l_cinterval &, const l_cinterval &)
Implementation of standard algebraic multiplication and allocation operation.
The namespace cxsc, providing all functionality of the class library C-XSC.
Definition: cdot.cpp:29
friend l_cinterval & SetIm(l_cinterval &a, const l_interval &b)
Sets the imaginary part of a complex interval.
friend l_real SupIm(const l_cinterval &a)
Returns the supremum of the imaginary interval of the complex interval.
l_cinterval(void)
Constructor of class l_cinterval.
Definition: l_cinterval.hpp:63
friend void Times2pown(l_cinterval &x, const int &n)
Multiplication of interval with .
friend bool operator==(const l_cinterval &a, const l_cinterval &b)
Implementation of standard equality operation.
The Multiple-Precision Data Type l_cinterval.
Definition: l_cinterval.hpp:53
The Scalar Type interval.
Definition: interval.hpp:54
friend l_interval & Im(l_cinterval &a)
Returns the imaginary part of the complex interval.
friend l_cinterval & SetIm(l_cinterval &a, const l_real &b)
Sets the imaginary part of a complex interval.
friend l_cinterval & operator-=(l_cinterval &, const l_cinterval &)
Implementation of standard algebraic subtraction and allocation operation.
friend l_cinterval & SetRe(l_cinterval &a, const interval &b)
Sets the real part of a complex interval.
friend l_cinterval & operator/=(l_cinterval &, const l_cinterval &)
Implementation of standard algebraic division and allocation operation.
friend l_cinterval & SetInf(l_cinterval &, const complex &)
Returns the interval with the new given infimum value.
friend bool operator>(const l_cinterval &, const l_cinterval &)
Implementation of standard greater-than operation.
The Data Type cidotprecision.
Definition: cidot.hpp:57
friend l_interval & Re(l_cinterval &a)
Returns the real part of the complex interval.
friend l_cinterval operator|(const l_cinterval &, const l_cinterval &)
Returns the convex hull of the arguments.
friend l_cinterval conj(const l_cinterval &)
Returns the conjugated complex interval.
friend std::ostream & operator<<(std::ostream &, const l_cinterval &)
Implementation of standard output method.
friend l_cinterval operator/(const l_cinterval &, const l_cinterval &)
Implementation of standard algebraic division operation.
The Data Type cdotprecision.
Definition: cdot.hpp:60
friend l_cinterval operator*(const l_cinterval &, const l_cinterval &)
Implementation of standard algebraic multiplication operation.
Definition: l_cinterval.cpp:60
friend l_real InfIm(const l_cinterval &a)
Returns the infimum of the imaginary interval of the complex interval.
friend l_cinterval operator&(const l_cinterval &, const l_cinterval &)
Returns the intersection of the arguments.
The Scalar Type cinterval.
Definition: cinterval.hpp:54
friend l_cinterval & SetRe(l_cinterval &a, const l_real &b)
Sets the real part of a complex interval.
friend l_cinterval & operator&=(l_cinterval &, const l_cinterval &)
Allocates the intersection of the arguments to the first argument.
friend l_cinterval & SetIm(l_cinterval &a, const interval &b)
Sets the imaginary part of a complex interval.
friend bool operator<(const l_cinterval &, const l_cinterval &)
Implementation of standard less-than operation.
friend l_cinterval & SetRe(l_cinterval &a, const real &b)
Sets the real part of a complex interval.
The Multiple-Precision Data Type l_complex.
Definition: l_complex.hpp:45
cinterval & operator=(const real &)
Implementation of standard assigning operator.
Definition: cinterval.inl:53
The Scalar Type complex.
Definition: complex.hpp:49
friend l_interval Re(const l_cinterval &a)
Returns the real part of the complex interval.
friend l_complex Sup(const l_cinterval &)
Returns the supremum of an interval.
friend l_cinterval & operator+=(l_cinterval &, const l_cinterval &)
Implementation of standard algebraic addition and allocation operation.
friend l_cinterval & SetSup(l_cinterval &, const complex &)
Returns the interval with the new given supremum value.
friend std::string & operator>>(std::string &, l_cinterval &)
Implementation of standard input method.
friend l_cinterval & SetIm(l_cinterval &a, const real &b)
Sets the imaginary part of a complex interval.
friend bool operator!=(const l_cinterval &a, const l_cinterval &b)
Implementation of standard negated equality operation.
friend bool operator<=(const l_cinterval &, const l_cinterval &)
Implementation of standard less-or-equal-than operation.
friend l_cinterval & UncheckedSetInf(l_cinterval &, const complex &)
Returns the interval with the unchecked new given infimum value.
friend l_interval abs(const l_cinterval &)
Returns the absolute value of the complex interval.
friend void times2pown(l_cinterval &x, const int &n)
Multiplication of interval with .
friend l_complex diam(const l_cinterval &)
Returns the rounded diameter of the complex interval.
friend l_cinterval adjust(const l_cinterval &)
Sets the precision of a specific long datatype value.
friend l_cinterval & UncheckedSetSup(l_cinterval &, const complex &)
Returns the interval with the unchecked new given supremum value.
The Scalar Type real.
Definition: real.hpp:113
friend l_complex Inf(const l_cinterval &)
Returns the infimum of an interval.
friend bool operator>=(const l_cinterval &, const l_cinterval &)
Implementation of standard greater-or-equal-than operation.
friend bool operator!(const l_cinterval &a)
Implementation of standard negation operation.
friend l_cinterval operator+(const l_cinterval &)
Implementation of standard algebraic positive sign operation.
friend l_cinterval & operator|=(l_cinterval &, const l_cinterval &)
Allocates the convex hull of the arguments to the first argument.