C-XSC - A C++ Class Library for Extended Scientific Computing  2.5.4
cidot.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: cidot.hpp,v 1.33 2014/01/30 17:23:43 cxsc Exp $ */
25 
26 #ifndef _CXSC_CIDOT_HPP_INCLUDED
27 #define _CXSC_CIDOT_HPP_INCLUDED
28 
29 #include <iostream>
30 #include <string>
31 #include "dot.hpp"
32 #include "idot.hpp"
33 #include "cdot.hpp"
34 #include "cinterval.hpp"
35 
36 namespace cxsc {
37 
38 // ---------------------------------------------------------------------------
39 // ---- ----
40 // ---- class cidotprecision (declaration) ----
41 // ---- ----
42 // ---------------------------------------------------------------------------
43 
45 
58 {
59  private:
60  // ---- Datenelemente ---------------------------------------
61  dotprecision reinf,resup,iminf,imsup;
62  int k;
63 
64  public:
65  // ---- Constructors ---------------------------------------
67  cidotprecision() : k(0) {}
69  inline cidotprecision(const cidotprecision &) noexcept;
70 
72  explicit inline cidotprecision(const real &) noexcept;
74  explicit inline cidotprecision(const dotprecision &) noexcept;
76  explicit inline cidotprecision(const interval &) noexcept;
78  explicit inline cidotprecision(const idotprecision &) noexcept;
80  explicit inline cidotprecision(const complex &) noexcept;
82  explicit inline cidotprecision(const cdotprecision &) noexcept;
84  explicit inline cidotprecision(const cinterval &) noexcept;
86  explicit inline cidotprecision(const idotprecision &, const idotprecision &) noexcept;
87 
89  inline int get_k() const { return k; }
91  inline void set_k(unsigned int i) { k=i; reinf.set_k(i); resup.set_k(i); iminf.set_k(i); imsup.set_k(i);}
93  inline int get_dotprec() const { return k; }
95  inline void set_dotprec(unsigned int i) { k=i; reinf.set_k(i); resup.set_k(i); iminf.set_k(i); imsup.set_k(i);}
96 
98  inline cidotprecision & operator= (const real & a) noexcept { reinf=resup=a; iminf=imsup=0.0; return *this; }
100  inline cidotprecision & operator= (const complex & a) noexcept { reinf=resup=Re(a); iminf=imsup=Im(a); return *this; }
102  inline cidotprecision & operator= (const interval & a) noexcept { reinf=Inf(a),resup=Sup(a),iminf=imsup=0.0; return *this; }
104  inline cidotprecision & operator= (const cinterval & a) noexcept { reinf=Inf(Re(a)),resup=Sup(Re(a)),iminf=Inf(Im(a)),imsup=Sup(Im(a)); return *this; }
106  inline cidotprecision & operator= (const dotprecision & a) noexcept { reinf=resup=a; iminf=imsup=0.0; return *this; }
108  inline cidotprecision & operator= (const cdotprecision & a)throw() { reinf=resup=Re(a),iminf=imsup=Im(a); return *this; }
110  inline cidotprecision & operator= (const idotprecision & a)throw() { reinf=Inf(a),resup=Sup(a),iminf=imsup=0.0; return *this; }
112  inline cidotprecision & operator= (const cidotprecision& a)throw() { reinf=a.reinf,resup=a.resup,iminf=a.iminf,imsup=a.imsup; return *this; }
113 
114  // ---- Destruktor ----
115  // ~cidotprecision() {} unnoetig
116 
117  // ---- Typwandlungen ----
119  friend inline cidotprecision _cidotprecision(const complex &,const complex &) noexcept;
121  friend inline cidotprecision _cidotprecision(const complex &,const real &) noexcept;
123  friend inline cidotprecision _cidotprecision(const real &,const complex &) noexcept;
125  friend inline cidotprecision _cidotprecision(const interval &,const interval &) noexcept;
127  friend inline cidotprecision _cidotprecision(const interval &,const real &) noexcept;
129  friend inline cidotprecision _cidotprecision(const real &,const interval &) noexcept;
131  friend inline cidotprecision _cidotprecision(const real &) noexcept;
133  friend inline cidotprecision _cidotprecision(const complex &) noexcept;
135  friend inline cidotprecision _cidotprecision(const interval &) noexcept;
137  friend inline cidotprecision _cidotprecision(const cinterval &) noexcept;
138 
140  friend inline cidotprecision _cidotprecision(const idotprecision &,const idotprecision &) noexcept;
142  friend inline cidotprecision _cidotprecision(const cdotprecision &,const cdotprecision &);
144  friend inline cidotprecision _cidotprecision(const idotprecision &,const dotprecision &) noexcept;
146  friend inline cidotprecision _cidotprecision(const cdotprecision &,const dotprecision &);
148  friend inline cidotprecision _cidotprecision(const dotprecision &,const idotprecision &) noexcept;
150  friend inline cidotprecision _cidotprecision(const dotprecision &,const cdotprecision&);
152  friend inline cidotprecision _cidotprecision(const cdotprecision &) noexcept;
154  friend inline cidotprecision _cidotprecision(const idotprecision &) noexcept;
156  friend inline cidotprecision _cidotprecision(const dotprecision &) noexcept;
157 
158 
160  friend inline cidotprecision _unchecked_cidotprecision(const complex &, const complex &) noexcept;
162  friend inline cidotprecision _unchecked_cidotprecision(const complex &, const real &) noexcept;
164  friend inline cidotprecision _unchecked_cidotprecision(const real &, const complex &) noexcept;
165 
167  friend inline cidotprecision _unchecked_cidotprecision(const cdotprecision &, const cdotprecision &) noexcept;
169  friend inline cidotprecision _unchecked_cidotprecision(const cdotprecision &, const dotprecision &) noexcept;
171  friend inline cidotprecision _unchecked_cidotprecision(const dotprecision &, const cdotprecision &) noexcept;
172 
173  // ---- Ausgabefunkt. ---------------------------------------
175  friend std::istream& operator >> (std::istream& s, cidotprecision& a) ;
177  friend std::ostream& operator << (std::ostream& s, const cidotprecision& a) noexcept;
179  friend std::string& operator >> (std::string& s, cidotprecision& a) ;
181  friend std::string& operator << (std::string& s, const cidotprecision& a) noexcept;
183  friend void operator >> (const std::string &s,cidotprecision& a) ;
185  friend void operator >> (const char *s ,cidotprecision& a) ;
186 
187  // ---- Standardfunkt ---- (arithmetische Operatoren)
189  friend inline cidotprecision operator -(cidotprecision) noexcept;
191  friend inline cidotprecision operator +(const cidotprecision &) noexcept;
192 
194  friend inline cidotprecision operator +(const cidotprecision &,const cidotprecision &) noexcept;
196  friend inline cidotprecision operator -(const cidotprecision &,const cidotprecision &) noexcept;
198  friend inline cidotprecision operator |(const cidotprecision &,const cidotprecision &) noexcept;
200  friend inline cidotprecision operator &(const cidotprecision &,const cidotprecision &);
201 
203  friend inline cidotprecision operator |(const cdotprecision &,const cdotprecision &) noexcept;
204 
206  friend inline cidotprecision & operator +=(cidotprecision &, const cidotprecision &) noexcept;
208  friend inline cidotprecision & operator -=(cidotprecision &, const cidotprecision &) noexcept;
210  friend inline cidotprecision & operator |=(cidotprecision &, const cidotprecision &) noexcept;
212  friend inline cidotprecision & operator &=(cidotprecision &, const cidotprecision &);
213 
214  // CID-R
215 
217  friend inline cidotprecision operator +(const cidotprecision &,const real &) noexcept;
219  friend inline cidotprecision operator +(const real &,const cidotprecision &) noexcept;
221  friend inline cidotprecision operator -(const cidotprecision &,const real &) noexcept;
223  friend inline cidotprecision operator -(const real &,const cidotprecision &) noexcept;
225  friend inline cidotprecision operator |(const cidotprecision &,const real &) noexcept;
227  friend inline cidotprecision operator |(const real &,const cidotprecision &) noexcept;
229  friend inline cidotprecision operator &(const cidotprecision &,const real &);
231  friend inline cidotprecision operator &(const real &,const cidotprecision &);
232 
234  friend inline cidotprecision & operator +=(cidotprecision &, const real &) noexcept;
236  friend inline cidotprecision & operator -=(cidotprecision &, const real &) noexcept;
238  friend inline cidotprecision & operator |=(cidotprecision &, const real &) noexcept;
240  friend inline cidotprecision & operator &=(cidotprecision &, const real &);
241 
242  // CID-C
243 
245  friend inline cidotprecision operator +(const cidotprecision &,const complex &) noexcept;
247  friend inline cidotprecision operator +(const complex &,const cidotprecision &) noexcept;
249  friend inline cidotprecision operator -(const cidotprecision &,const complex &) noexcept;
251  friend inline cidotprecision operator -(const complex &,const cidotprecision &) noexcept;
253  friend inline cidotprecision operator |(const cidotprecision &,const complex &) noexcept;
255  friend inline cidotprecision operator |(const complex &,const cidotprecision &) noexcept;
257  friend inline cidotprecision operator &(const cidotprecision &,const complex &);
259  friend inline cidotprecision operator &(const complex &,const cidotprecision &);
260 
261 
263  friend inline cidotprecision & operator +=(cidotprecision &, const complex &) noexcept;
265  friend inline cidotprecision & operator -=(cidotprecision &, const complex &) noexcept;
267  friend inline cidotprecision & operator |=(cidotprecision &, const complex &) noexcept;
269  friend inline cidotprecision & operator &=(cidotprecision &, const complex &);
270 
271  // CID-I
272 
274  friend inline cidotprecision operator +(const cidotprecision &,const interval &) noexcept;
276  friend inline cidotprecision operator +(const interval &,const cidotprecision &) noexcept;
278  friend inline cidotprecision operator -(const cidotprecision &,const interval &) noexcept;
280  friend inline cidotprecision operator -(const interval &,const cidotprecision &) noexcept;
282  friend inline cidotprecision operator |(const cidotprecision &,const interval &) noexcept;
284  friend inline cidotprecision operator |(const interval &,const cidotprecision &) noexcept;
286  friend inline cidotprecision operator &(const cidotprecision &,const interval &);
288  friend inline cidotprecision operator &(const interval &,const cidotprecision &);
289 
291  friend inline cidotprecision & operator +=(cidotprecision &, const interval &) noexcept;
293  friend inline cidotprecision & operator -=(cidotprecision &, const interval &) noexcept;
295  friend inline cidotprecision & operator |=(cidotprecision &, const interval &) noexcept;
297  friend inline cidotprecision & operator &=(cidotprecision &, const interval &);
298 
299  // CID-CI
300 
302  friend inline cidotprecision operator +(const cidotprecision &,const cinterval &) noexcept;
304  friend inline cidotprecision operator +(const cinterval &,const cidotprecision &) noexcept;
306  friend inline cidotprecision operator -(const cidotprecision &,const cinterval &) noexcept;
308  friend inline cidotprecision operator -(const cinterval &,const cidotprecision &) noexcept;
310  friend inline cidotprecision operator |(const cidotprecision &,const cinterval &) noexcept;
312  friend inline cidotprecision operator |(const cinterval &,const cidotprecision &) noexcept;
314  friend inline cidotprecision operator &(const cidotprecision &,const cinterval &);
316  friend inline cidotprecision operator &(const cinterval &,const cidotprecision &);
317 
319  friend inline cidotprecision & operator +=(cidotprecision &, const cinterval &) noexcept;
321  friend inline cidotprecision & operator -=(cidotprecision &, const cinterval &) noexcept;
323  friend inline cidotprecision & operator |=(cidotprecision &, const cinterval &) noexcept;
325  friend inline cidotprecision & operator &=(cidotprecision &, const cinterval &);
326 
327  // CID-D
328 
330  friend inline cidotprecision operator +(const cidotprecision &,const dotprecision &) noexcept;
332  friend inline cidotprecision operator +(const dotprecision &,const cidotprecision &) noexcept;
334  friend inline cidotprecision operator -(const cidotprecision &,const dotprecision &) noexcept;
336  friend inline cidotprecision operator -(const dotprecision &,const cidotprecision &) noexcept;
338  friend inline cidotprecision operator |(const cidotprecision &,const dotprecision &) noexcept;
340  friend inline cidotprecision operator |(const dotprecision &,const cidotprecision &) noexcept;
342  friend inline cidotprecision operator &(const cidotprecision &,const dotprecision &);
344  friend inline cidotprecision operator &(const dotprecision &,const cidotprecision &);
345 
347  friend inline cidotprecision & operator +=(cidotprecision &, const dotprecision &) noexcept;
349  friend inline cidotprecision & operator -=(cidotprecision &, const dotprecision &) noexcept;
351  friend inline cidotprecision & operator |=(cidotprecision &, const dotprecision &) noexcept;
353  friend inline cidotprecision & operator &=(cidotprecision &, const dotprecision &);
354 
355  // CID-CD
356 
358  friend inline cidotprecision operator +(const cidotprecision &,const cdotprecision &) noexcept;
360  friend inline cidotprecision operator +(const cdotprecision &,const cidotprecision &) noexcept;
362  friend inline cidotprecision operator -(const cidotprecision &,const cdotprecision &) noexcept;
364  friend inline cidotprecision operator -(const cdotprecision &,const cidotprecision &) noexcept;
366  friend inline cidotprecision operator |(const cidotprecision &,const cdotprecision &) noexcept;
368  friend inline cidotprecision operator |(const cdotprecision &,const cidotprecision &) noexcept;
370  friend inline cidotprecision operator &(const cidotprecision &,const cdotprecision &);
372  friend inline cidotprecision operator &(const cdotprecision &,const cidotprecision &);
373 
374 
376  friend inline cidotprecision & operator +=(cidotprecision &, const cdotprecision &) noexcept;
378  friend inline cidotprecision & operator -=(cidotprecision &, const cdotprecision &) noexcept;
380  friend inline cidotprecision & operator |=(cidotprecision &, const cdotprecision &) noexcept;
382  friend inline cidotprecision & operator &=(cidotprecision &, const cdotprecision &);
383 
384  // CID-ID
385 
387  friend inline cidotprecision operator +(const cidotprecision &,const idotprecision &) noexcept;
389  friend inline cidotprecision operator +(const idotprecision &,const cidotprecision &) noexcept;
391  friend inline cidotprecision operator -(const cidotprecision &,const idotprecision &) noexcept;
393  friend inline cidotprecision operator -(const idotprecision &,const cidotprecision &) noexcept;
395  friend inline cidotprecision operator |(const cidotprecision &,const idotprecision &) noexcept;
397  friend inline cidotprecision operator |(const idotprecision &,const cidotprecision &) noexcept;
399  friend inline cidotprecision operator &(const cidotprecision &,const idotprecision &);
401  friend inline cidotprecision operator &(const idotprecision &,const cidotprecision &);
402 
404  friend inline cidotprecision & operator +=(cidotprecision &, const idotprecision &) noexcept;
406  friend inline cidotprecision & operator -=(cidotprecision &, const idotprecision &) noexcept;
408  friend inline cidotprecision & operator |=(cidotprecision &, const idotprecision &) noexcept;
410  friend inline cidotprecision & operator &=(cidotprecision &, const idotprecision &);
411 
412  // ---- Vergleichsop. ----
414  friend inline bool operator !(const cidotprecision &) noexcept;
415 // inline operator void *() const noexcept;
416 
418  friend inline bool operator ==(const cidotprecision &,const cidotprecision &) noexcept;
420  friend inline bool operator !=(const cidotprecision &,const cidotprecision &) noexcept;
421 
422  // CID-R
423 
425  friend inline bool operator== (const cidotprecision & a, const real & b) noexcept;
427  friend inline bool operator== (const real & a, const cidotprecision & b) noexcept;
429  friend inline bool operator!= (const cidotprecision & a, const real & b) noexcept;
431  friend inline bool operator!= (const real & a, const cidotprecision & b) noexcept;
432 
433  // CID-C
434 
436  friend inline bool operator== (const cidotprecision & a, const complex & b) noexcept;
438  friend inline bool operator== (const complex & a, const cidotprecision & b) noexcept;
440  friend inline bool operator!= (const cidotprecision & a, const complex & b) noexcept;
442  friend inline bool operator!= (const complex & a, const cidotprecision & b) noexcept;
443 
444  // CID-I
445 
447  friend inline bool operator== (const cidotprecision & a, const interval & b) noexcept;
449  friend inline bool operator== (const interval & a, const cidotprecision & b) noexcept;
451  friend inline bool operator!= (const cidotprecision & a, const interval & b) noexcept;
453  friend inline bool operator!= (const interval & a, const cidotprecision & b) noexcept;
454 
455  // CID-CI
456 
458  friend inline bool operator== (const cidotprecision & a, const cinterval & b) noexcept;
460  friend inline bool operator== (const cinterval & a, const cidotprecision & b) noexcept;
462  friend inline bool operator!= (const cidotprecision & a, const cinterval & b) noexcept;
464  friend inline bool operator!= (const cinterval & a, const cidotprecision & b) noexcept;
465 
466  // CID-D
467 
469  friend inline bool operator== (const cidotprecision & a, const dotprecision & b) noexcept;
471  friend inline bool operator== (const dotprecision & a, const cidotprecision & b) noexcept;
473  friend inline bool operator!= (const cidotprecision & a, const dotprecision & b) noexcept;
475  friend inline bool operator!= (const dotprecision & a, const cidotprecision & b) noexcept;
476 
477  // CID-CD
478 
480  friend inline bool operator== (const cidotprecision & a, const cdotprecision & b) noexcept;
482  friend inline bool operator== (const cdotprecision & a, const cidotprecision & b) noexcept;
484  friend inline bool operator!= (const cidotprecision & a, const cdotprecision & b) noexcept;
486  friend inline bool operator!= (const cdotprecision & a, const cidotprecision & b) noexcept;
487 
488  // CID-ID
489 
491  friend inline bool operator== (const cidotprecision & a, const idotprecision & b) noexcept;
493  friend inline bool operator== (const idotprecision & a, const cidotprecision & b) noexcept;
495  friend inline bool operator!= (const cidotprecision & a, const idotprecision & b) noexcept;
497  friend inline bool operator!= (const idotprecision & a, const cidotprecision & b) noexcept;
498 
499  // ---- Set Operators ----
501  friend inline bool operator <(const cidotprecision &,const cidotprecision &) noexcept;
503  friend inline bool operator >(const cidotprecision &,const cidotprecision &) noexcept;
505  friend inline bool operator <=(const cidotprecision &,const cidotprecision &) noexcept;
507  friend inline bool operator >=(const cidotprecision &,const cidotprecision &) noexcept;
508 
509  // CID-R
510 
512  friend inline bool operator <(const real &,const cidotprecision &) noexcept;
514  friend inline bool operator >(const real &,const cidotprecision &) noexcept;
516  friend inline bool operator <=(const real &,const cidotprecision &) noexcept;
518  friend inline bool operator >=(const real &,const cidotprecision &) noexcept;
519 
521  friend inline bool operator <(const cidotprecision &,const real &) noexcept;
523  friend inline bool operator >(const cidotprecision &,const real &) noexcept;
525  friend inline bool operator <=(const cidotprecision &,const real &) noexcept;
527  friend inline bool operator >=(const cidotprecision &,const real &) noexcept;
528 
529  // CID-C
530 
532  friend inline bool operator <(const complex &,const cidotprecision &) noexcept;
534  friend inline bool operator >(const complex &,const cidotprecision &) noexcept;
536  friend inline bool operator <=(const complex &,const cidotprecision &) noexcept;
538  friend inline bool operator >=(const complex &,const cidotprecision &) noexcept;
539 
541  friend inline bool operator <(const cidotprecision &,const complex &) noexcept;
543  friend inline bool operator >(const cidotprecision &,const complex &) noexcept;
545  friend inline bool operator <=(const cidotprecision &,const complex &) noexcept;
547  friend inline bool operator >=(const cidotprecision &,const complex &) noexcept;
548 
549  // CID-I
550 
552  friend inline bool operator <(const interval &,const cidotprecision &) noexcept;
554  friend inline bool operator >(const interval &,const cidotprecision &) noexcept;
556  friend inline bool operator <=(const interval &,const cidotprecision &) noexcept;
558  friend inline bool operator >=(const interval &,const cidotprecision &) noexcept;
559 
561  friend inline bool operator <(const cidotprecision &,const interval &) noexcept;
563  friend inline bool operator >(const cidotprecision &,const interval &) noexcept;
565  friend inline bool operator <=(const cidotprecision &,const interval &) noexcept;
567  friend inline bool operator >=(const cidotprecision &,const interval &) noexcept;
568 
569  // CID-CI
570 
572  friend inline bool operator <(const cinterval &,const cidotprecision &) noexcept;
574  friend inline bool operator >(const cinterval &,const cidotprecision &) noexcept;
576  friend inline bool operator <=(const cinterval &,const cidotprecision &) noexcept;
577  friend inline bool operator >=(const cinterval &,const cidotprecision &) noexcept;
578 
580  friend inline bool operator <(const cidotprecision &,const cinterval &) noexcept;
582  friend inline bool operator >(const cidotprecision &,const cinterval &) noexcept;
584  friend inline bool operator <=(const cidotprecision &,const cinterval &) noexcept;
586  friend inline bool operator >=(const cidotprecision &,const cinterval &) noexcept;
587 
588  // CID-D
589 
591  friend inline bool operator <(const dotprecision &,const cidotprecision &) noexcept;
593  friend inline bool operator >(const dotprecision &,const cidotprecision &) noexcept;
595  friend inline bool operator <=(const dotprecision &,const cidotprecision &) noexcept;
597  friend inline bool operator >=(const dotprecision &,const cidotprecision &) noexcept;
598 
600  friend inline bool operator <(const cidotprecision &,const dotprecision &) noexcept;
602  friend inline bool operator >(const cidotprecision &,const dotprecision &) noexcept;
604  friend inline bool operator <=(const cidotprecision &,const dotprecision &) noexcept;
606  friend inline bool operator >=(const cidotprecision &,const dotprecision &) noexcept;
607 
608  // CID-CD
609 
611  friend inline bool operator <(const cdotprecision &,const cidotprecision &) noexcept;
613  friend inline bool operator >(const cdotprecision &,const cidotprecision &) noexcept;
615  friend inline bool operator <=(const cdotprecision &,const cidotprecision &) noexcept;
617  friend inline bool operator >=(const cdotprecision &,const cidotprecision &) noexcept;
618 
620  friend inline bool operator <(const cidotprecision &,const cdotprecision &) noexcept;
622  friend inline bool operator >(const cidotprecision &,const cdotprecision &) noexcept;
624  friend inline bool operator <=(const cidotprecision &,const cdotprecision &) noexcept;
626  friend inline bool operator >=(const cidotprecision &,const cdotprecision &) noexcept;
627 
628  // CID-ID
629 
631  friend inline bool operator <(const idotprecision &,const cidotprecision &) noexcept;
633  friend inline bool operator >(const idotprecision &,const cidotprecision &) noexcept;
635  friend inline bool operator <=(const idotprecision &,const cidotprecision &) noexcept;
637  friend inline bool operator >=(const idotprecision &,const cidotprecision &) noexcept;
638 
640  friend inline bool operator <(const cidotprecision &,const idotprecision &) noexcept;
642  friend inline bool operator >(const cidotprecision &,const idotprecision &) noexcept;
644  friend inline bool operator <=(const cidotprecision &,const idotprecision &) noexcept;
646  friend inline bool operator >=(const cidotprecision &,const idotprecision &) noexcept;
647 
648 
649  // ---- Funktionen ----
650 
652  friend inline cdotprecision Inf(const cidotprecision&) noexcept;
654  friend inline cdotprecision Sup(const cidotprecision&) noexcept;
656  friend inline cidotprecision& SetInf(cidotprecision&, const cdotprecision&);
658  friend inline cidotprecision& SetSup(cidotprecision&, const cdotprecision&);
660  friend inline cidotprecision& SetInf(cidotprecision&, const dotprecision&);
662  friend inline cidotprecision& SetSup(cidotprecision&, const dotprecision&);
664  friend inline cidotprecision& SetInf(cidotprecision&, const complex&);
666  friend inline cidotprecision& SetSup(cidotprecision&, const complex&);
668  friend inline cidotprecision& SetInf(cidotprecision&, const real&);
670  friend inline cidotprecision& SetSup(cidotprecision&, const real&);
672  friend inline cidotprecision& UncheckedSetInf(cidotprecision&, const cdotprecision&) noexcept;
674  friend inline cidotprecision& UncheckedSetSup(cidotprecision&, const cdotprecision&) noexcept;
676  friend inline cidotprecision& UncheckedSetInf(cidotprecision&, const dotprecision&) noexcept;
678  friend inline cidotprecision& UncheckedSetSup(cidotprecision&, const dotprecision&) noexcept;
680  friend inline cidotprecision& UncheckedSetInf(cidotprecision&, const complex&) noexcept;
682  friend inline cidotprecision& UncheckedSetSup(cidotprecision&, const complex&) noexcept;
684  friend inline cidotprecision& UncheckedSetInf(cidotprecision&, const real&) noexcept;
686  friend inline cidotprecision& UncheckedSetSup(cidotprecision&, const real&) noexcept;
687 
689  friend inline idotprecision Re(const cidotprecision &) noexcept;
691  friend inline idotprecision Im(const cidotprecision &) noexcept;
692 
694  friend inline const dotprecision & InfRe(const cidotprecision &) noexcept;
696  friend inline const dotprecision & InfIm(const cidotprecision &) noexcept;
698  friend inline const dotprecision & SupRe(const cidotprecision &) noexcept;
700  friend inline const dotprecision & SupIm(const cidotprecision &) noexcept;
701 
703  friend inline dotprecision & InfRe(cidotprecision &) noexcept;
705  friend inline dotprecision & InfIm(cidotprecision &) noexcept;
707  friend inline dotprecision & SupRe(cidotprecision &) noexcept;
709  friend inline dotprecision & SupIm(cidotprecision &) noexcept;
710 
712  friend inline cidotprecision& SetRe(cidotprecision&, const idotprecision&) noexcept;
714  friend inline cidotprecision& SetIm(cidotprecision&, const idotprecision&) noexcept;
716  friend inline cidotprecision& SetRe(cidotprecision&, const dotprecision&) noexcept;
718  friend inline cidotprecision& SetIm(cidotprecision&, const dotprecision&) noexcept;
720  friend inline cidotprecision& SetRe(cidotprecision&, const interval&) noexcept;
722  friend inline cidotprecision& SetIm(cidotprecision&, const interval&) noexcept;
724  friend inline cidotprecision& SetRe(cidotprecision&, const real&) noexcept;
726  friend inline cidotprecision& SetIm(cidotprecision&, const real&) noexcept;
727 
728 
729  friend inline void rnd(const cidotprecision &,cinterval &) noexcept;
730  friend inline cinterval rnd(const cidotprecision &) noexcept;
731 
733  friend void accumulate (cidotprecision&, const cinterval&, const cinterval&) noexcept;
734 
736  friend inline void accumulate (cidotprecision&, const cinterval&, const interval&) noexcept;
738  friend inline void accumulate (cidotprecision&, const cinterval&, const complex&) noexcept;
740  friend inline void accumulate (cidotprecision&, const cinterval&, const real&) noexcept;
741 
743  friend inline void accumulate (cidotprecision&, const interval &,const cinterval &) noexcept;
745  friend inline void accumulate (cidotprecision&, const complex &,const cinterval &) noexcept;
747  friend inline void accumulate (cidotprecision&, const real &,const cinterval&) noexcept;
748 
750  friend inline void accumulate (cidotprecision&, const complex &,const interval &) noexcept;
752  friend inline void accumulate (cidotprecision&, const interval &,const complex &) noexcept;
753 
755  friend inline void accumulate (cidotprecision&, const interval &,const interval &) noexcept;
757  friend inline void accumulate (cidotprecision&, const interval &,const real &) noexcept;
759  friend inline void accumulate (cidotprecision&, const real &,const interval &) noexcept;
760 
762  friend inline void accumulate (cidotprecision&, const complex &,const complex &) noexcept;
764  friend inline void accumulate (cidotprecision&, const real &,const complex &) noexcept;
766  friend inline void accumulate (cidotprecision&, const complex &,const real &) noexcept;
767 
769  friend inline void accumulate (cidotprecision&, const real &,const real &) noexcept;
770 };
771 
772 // ---------------------------------------------------------------------------
773 // ---- ----
774 // ---- friend functions of class cdotprecision (not inline) ----
775 // ---- ----
776 // ---------------------------------------------------------------------------
777 
778 std::istream& operator >> (std::istream& s, cidotprecision& a) ;
779 std::ostream& operator << (std::ostream& s, const cidotprecision& a) noexcept;
780 std::string& operator >> (std::string& s, cidotprecision& a) ;
781 std::string& operator << (std::string& s, const cidotprecision& a) noexcept;
782 void operator >> (const std::string &s,cidotprecision& a) ;
783 void operator >> (const char *s ,cidotprecision& a) ;
784 
785 void accumulate (cidotprecision&, const cinterval&, const cinterval&) noexcept;
786 
787 // ---------------------------------------------------------------------------
788 // ---- ----
789 // ---- global CIDotprecision Akku's ----
790 // ---- ----
791 // ---------------------------------------------------------------------------
792 
793 //#define MAXCIDOTAKKU (MAXDOTAKKU / 2)
794 //extern cidotprecision cidotakku[MAXCIDOTAKKU];
795 
796 //----------------------------------------------------------------------
797 } // namespace cxsc
798 
799 #include "cidot.inl"
800 
801 #endif // _CXSC_CIDOT_HPP_INCLUDED
802 
cxsc::cidotprecision::SupIm
friend const dotprecision & SupIm(const cidotprecision &) noexcept
Returns the supremum of the imaginary part of the complex dotprecision interval.
Definition: cidot.inl:1731
cxsc::cidotprecision::UncheckedSetSup
friend cidotprecision & UncheckedSetSup(cidotprecision &, const cdotprecision &) noexcept
Returns the complex dotprecison interval with the unchecked new given supremum value.
Definition: cidot.inl:1676
cxsc::cidotprecision::set_k
void set_k(unsigned int i)
Set precision for computation of dot products.
Definition: cidot.hpp:91
cxsc::cidotprecision::accumulate
friend void accumulate(cidotprecision &, const cinterval &, const cinterval &) noexcept
The accurate scalar product of the last two arguments added to the value of the first argument.
Definition: cidot.cpp:133
cxsc::cidotprecision::cidotprecision
cidotprecision()
Constructor of class cidotprecision.
Definition: cidot.hpp:67
cxsc::cidotprecision::SetRe
friend cidotprecision & SetRe(cidotprecision &, const idotprecision &) noexcept
Sets the real part of the complex dotprecision interval.
Definition: cidot.inl:1738
cxsc::cidotprecision::get_k
int get_k() const
Get currently set precision for computation of dot products.
Definition: cidot.hpp:89
cxsc::cidotprecision::operator-
friend cidotprecision operator-(cidotprecision) noexcept
Implementation of standard algebraic negative sign operation.
Definition: cidot.inl:440
cxsc::cidotprecision::operator+=
friend cidotprecision & operator+=(cidotprecision &, const cidotprecision &) noexcept
Implementation of standard algebraic addition and allocation operation.
Definition: cidot.inl:510
cxsc::cidotprecision::Sup
friend cdotprecision Sup(const cidotprecision &) noexcept
Returns the supremum of a complex dotprecison interval.
Definition: cidot.inl:1579
cxsc::cidotprecision::operator&
friend cidotprecision operator&(const cidotprecision &, const cidotprecision &)
Returns the intersection of the arguments.
Definition: cidot.inl:492
cxsc::cidotprecision::operator!
friend bool operator!(const cidotprecision &) noexcept
Implementation of standard negation operation.
Definition: cidot.inl:1172
cxsc::cidotprecision::operator<<
friend std::ostream & operator<<(std::ostream &s, const cidotprecision &a) noexcept
Implementation of standard output method.
Definition: cidot.cpp:35
cxsc::interval
The Scalar Type interval.
Definition: interval.hpp:55
cxsc::cidotprecision::Re
friend idotprecision Re(const cidotprecision &) noexcept
Returns the real part of the complex dotprecision interval.
Definition: cidot.inl:1725
cxsc::cidotprecision::operator<
friend bool operator<(const cidotprecision &, const cidotprecision &) noexcept
Implementation of standard less-than operation.
Definition: cidot.inl:1351
cxsc::cidotprecision::operator>
friend bool operator>(const cidotprecision &, const cidotprecision &) noexcept
Implementation of standard greater-than operation.
Definition: cidot.inl:1356
cxsc::cidotprecision::InfRe
friend const dotprecision & InfRe(const cidotprecision &) noexcept
Returns the infimum of the real part of the complex dotprecision interval.
Definition: cidot.inl:1728
cxsc::cidotprecision::operator==
friend bool operator==(const cidotprecision &, const cidotprecision &) noexcept
Implementation of standard equality operation.
Definition: cidot.inl:1185
cxsc::cidotprecision::SetInf
friend cidotprecision & SetInf(cidotprecision &, const cdotprecision &)
Returns the complex dotprecison interval with the new given infimum value.
Definition: cidot.inl:1581
cxsc::idotprecision
The Data Type idotprecision.
Definition: idot.hpp:48
cxsc::cidotprecision::operator+
friend cidotprecision operator+(const cidotprecision &) noexcept
Implementation of standard algebraic positive sign operation.
Definition: cidot.inl:453
cxsc::cidotprecision::operator-=
friend cidotprecision & operator-=(cidotprecision &, const cidotprecision &) noexcept
Implementation of standard algebraic subtraction and allocation operation.
Definition: cidot.inl:519
cxsc::cidotprecision::SetSup
friend cidotprecision & SetSup(cidotprecision &, const cdotprecision &)
Returns the complex dotprecison interval with the new given supremum value.
Definition: cidot.inl:1592
cxsc::cidotprecision::_cidotprecision
friend cidotprecision _cidotprecision(const complex &, const complex &) noexcept
Deprecated typecast, which only exist for the reason of compatibility with older versions of C-XSC.
Definition: cidot.inl:113
cxsc::cidotprecision::Im
friend idotprecision Im(const cidotprecision &) noexcept
Returns the imaginary part of the complex dotprecision interval.
Definition: cidot.inl:1726
cxsc::cidotprecision::Inf
friend cdotprecision Inf(const cidotprecision &) noexcept
Returns the infimum of a complex dotprecison interval.
Definition: cidot.inl:1578
cxsc::cidotprecision::_unchecked_cidotprecision
friend cidotprecision _unchecked_cidotprecision(const complex &, const complex &) noexcept
Deprecated typecast, which only exist for the reason of compatibility with older versions of C-XSC.
Definition: cidot.inl:352
cxsc::dotprecision
The Data Type dotprecision.
Definition: dot.hpp:112
cxsc::cidotprecision::operator&=
friend cidotprecision & operator&=(cidotprecision &, const cidotprecision &)
Allocates the intersection of the arguments to the first argument.
Definition: cidot.inl:541
cxsc::cidotprecision::SupRe
friend const dotprecision & SupRe(const cidotprecision &) noexcept
Returns the supremum of the real part of the complex dotprecision interval.
Definition: cidot.inl:1730
cxsc::cidotprecision
The Data Type cidotprecision.
Definition: cidot.hpp:58
cxsc::cidotprecision::operator|
friend cidotprecision operator|(const cidotprecision &, const cidotprecision &) noexcept
Returns the convex hull of the arguments.
Definition: cidot.inl:478
cxsc::dotprecision::set_k
void set_k(unsigned int i)
Set precision for computation of dot products.
Definition: dot.hpp:131
cxsc
The namespace cxsc, providing all functionality of the class library C-XSC.
Definition: cdot.cpp:29
cxsc::cidotprecision::operator>>
friend std::istream & operator>>(std::istream &s, cidotprecision &a)
Implementation of standard input method.
Definition: cidot.cpp:58
cxsc::cidotprecision::operator>=
friend bool operator>=(const cidotprecision &, const cidotprecision &) noexcept
Implementation of standard greater-or-equal-than operation.
Definition: cidot.inl:1366
cxsc::cidotprecision::operator=
cidotprecision & operator=(const real &a) noexcept
Implementation of standard assigning operator.
Definition: cidot.hpp:98
cxsc::cidotprecision::operator<=
friend bool operator<=(const cidotprecision &, const cidotprecision &) noexcept
Implementation of standard less-or-equal-than operation.
Definition: cidot.inl:1361
cxsc::cidotprecision::get_dotprec
int get_dotprec() const
Get currently set precision for computation of dot products.
Definition: cidot.hpp:93
cxsc::cdotprecision
The Data Type cdotprecision.
Definition: cdot.hpp:61
cxsc::cidotprecision::UncheckedSetInf
friend cidotprecision & UncheckedSetInf(cidotprecision &, const cdotprecision &) noexcept
Returns the complex dotprecison interval with the unchecked new given infimum value.
Definition: cidot.inl:1669
cxsc::cidotprecision::operator!=
friend bool operator!=(const cidotprecision &, const cidotprecision &) noexcept
Implementation of standard negated equality operation.
Definition: cidot.inl:1190
cxsc::cinterval
The Scalar Type cinterval.
Definition: cinterval.hpp:55
cxsc::complex
The Scalar Type complex.
Definition: complex.hpp:50
cxsc::cidotprecision::InfIm
friend const dotprecision & InfIm(const cidotprecision &) noexcept
Returns the infimum of the imaginary part of the complex dotprecision interval.
Definition: cidot.inl:1729
cxsc::cidotprecision::set_dotprec
void set_dotprec(unsigned int i)
Set precision for computation of dot products.
Definition: cidot.hpp:95
cxsc::cidotprecision::SetIm
friend cidotprecision & SetIm(cidotprecision &, const idotprecision &) noexcept
Sets the imaginary part of the complex dotprecision interval.
Definition: cidot.inl:1745
cxsc::cidotprecision::operator|=
friend cidotprecision & operator|=(cidotprecision &, const cidotprecision &) noexcept
Allocates the convex hull of the arguments to the first argument.
Definition: cidot.inl:528
cxsc::real
The Scalar Type real.
Definition: real.hpp:114