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