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
40namespace 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
The Data Type cdotprecision.
Definition cdot.hpp:61
The Data Type cidotprecision.
Definition cidot.hpp:58
The Scalar Type cinterval.
Definition cinterval.hpp:55
cinterval(void) noexcept
Constructor of class cinterval.
Definition cinterval.hpp:64
cinterval & operator=(const real &) noexcept
Implementation of standard assigning operator.
Definition cinterval.inl:53
The Scalar Type complex.
Definition complex.hpp:50
The Data Type dotprecision.
Definition dot.hpp:112
The Data Type idotprecision.
Definition idot.hpp:48
The Scalar Type interval.
Definition interval.hpp:55
The Multiple-Precision Data Type l_cinterval.
friend l_cinterval & operator+=(l_cinterval &, const l_cinterval &) noexcept
Implementation of standard algebraic addition and allocation operation.
friend l_cinterval operator-(const l_cinterval &) noexcept
Implementation of standard algebraic negative sign operation.
friend l_cinterval operator/(const l_cinterval &, const l_cinterval &)
Implementation of standard algebraic division operation.
friend l_cinterval & operator/=(l_cinterval &, const l_cinterval &) noexcept
Implementation of standard algebraic division and allocation operation.
friend bool operator!(const l_cinterval &a) noexcept
Implementation of standard negation operation.
friend l_cinterval & SetIm(l_cinterval &a, const l_interval &b)
Sets the imaginary part of a complex interval.
friend l_interval Im(const l_cinterval &a) noexcept
Returns the imaginary part of the complex interval.
friend bool operator!=(const l_cinterval &a, const l_cinterval &b) noexcept
Implementation of standard negated equality operation.
friend l_cinterval operator|(const l_cinterval &, const l_cinterval &) noexcept
Returns the convex hull of the arguments.
friend l_cinterval & SetIm(l_cinterval &a, const l_real &b)
Sets the imaginary part of a complex interval.
friend bool operator<=(const l_cinterval &, const l_cinterval &) noexcept
Implementation of standard less-or-equal-than operation.
friend l_cinterval operator+(const l_cinterval &) noexcept
Implementation of standard algebraic positive sign operation.
friend l_complex Inf(const l_cinterval &) noexcept
Returns the infimum of an interval.
friend l_complex mid(const l_cinterval &) noexcept
Returns the rounded middle of the complex interval.
friend l_cinterval & UncheckedSetSup(l_cinterval &, const complex &) noexcept
Returns the interval with the unchecked new given supremum value.
friend l_cinterval & SetRe(l_cinterval &a, const l_interval &b)
Sets the real part of a complex interval.
friend l_real SupIm(const l_cinterval &a) noexcept
Returns the supremum of the imaginary interval of the complex interval.
friend l_real InfRe(const l_cinterval &a) noexcept
Returns the infimum of the real interval of the complex interval.
friend l_cinterval & SetIm(l_cinterval &a, const interval &b)
Sets the imaginary part of a complex interval.
friend l_cinterval & UncheckedSetInf(l_cinterval &, const complex &) noexcept
Returns the interval with the unchecked new given infimum value.
friend l_complex diam(const l_cinterval &) noexcept
Returns the rounded diameter of the complex interval.
friend l_cinterval & SetRe(l_cinterval &a, const interval &b)
Sets the real part of a complex interval.
friend l_complex Sup(const l_cinterval &) noexcept
Returns the supremum of an interval.
friend l_cinterval adjust(const l_cinterval &) noexcept
Sets the precision of a specific long datatype value.
friend l_cinterval & SetIm(l_cinterval &a, const real &b)
Sets the imaginary part of a complex interval.
friend l_real InfIm(const l_cinterval &a) noexcept
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.
friend l_cinterval & operator*=(l_cinterval &, const l_cinterval &) noexcept
Implementation of standard algebraic multiplication and allocation operation.
friend l_cinterval & SetRe(l_cinterval &a, const l_real &b)
Sets the real part of a complex interval.
friend l_interval abs(const l_cinterval &) noexcept
Returns the absolute value of the complex interval.
friend l_cinterval & operator|=(l_cinterval &, const l_cinterval &) noexcept
Allocates the convex hull of the arguments to the first argument.
friend l_real SupRe(const l_cinterval &a) noexcept
Returns the supremum of the real interval of the complex interval.
friend l_interval & Im(l_cinterval &a) noexcept
Returns the imaginary part of the complex interval.
friend l_interval Re(const l_cinterval &a) noexcept
Returns the real part of the complex interval.
friend bool operator==(const l_cinterval &a, const l_cinterval &b) noexcept
Implementation of standard equality operation.
friend l_cinterval & SetInf(l_cinterval &, const complex &)
Returns the interval with the new given infimum value.
friend l_cinterval & SetSup(l_cinterval &, const complex &)
Returns the interval with the new given supremum value.
friend l_cinterval & operator-=(l_cinterval &, const l_cinterval &) noexcept
Implementation of standard algebraic subtraction and allocation operation.
friend std::ostream & operator<<(std::ostream &, const l_cinterval &) noexcept
Implementation of standard output method.
l_cinterval(void) noexcept
Constructor of class l_cinterval.
friend void times2pown(l_cinterval &x, const int &n) noexcept
Multiplication of interval with .
friend l_cinterval & SetRe(l_cinterval &a, const real &b)
Sets the real part of a complex interval.
friend bool operator>=(const l_cinterval &, const l_cinterval &) noexcept
Implementation of standard greater-or-equal-than operation.
friend l_cinterval conj(const l_cinterval &) noexcept
Returns the conjugated complex interval.
friend bool operator<(const l_cinterval &, const l_cinterval &) noexcept
Implementation of standard less-than operation.
friend bool operator>(const l_cinterval &, const l_cinterval &) noexcept
Implementation of standard greater-than operation.
friend l_interval & Re(l_cinterval &a) noexcept
Returns the real part of the complex interval.
friend void Times2pown(l_cinterval &x, const int &n) noexcept
Multiplication of interval with .
friend l_cinterval operator*(const l_cinterval &, const l_cinterval &) noexcept
Implementation of standard algebraic multiplication operation.
friend l_cinterval & operator&=(l_cinterval &, const l_cinterval &)
Allocates the intersection of the arguments to the first argument.
friend std::string & operator>>(std::string &, l_cinterval &)
Implementation of standard input method.
The Multiple-Precision Data Type l_complex.
Definition l_complex.hpp:46
The Multiple-Precision Data Type l_interval.
The Multiple-Precision Data Type l_real.
Definition l_real.hpp:78
The Scalar Type real.
Definition real.hpp:114
The namespace cxsc, providing all functionality of the class library C-XSC.
Definition cdot.cpp:29