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
36namespace 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
778std::istream& operator >> (std::istream& s, cidotprecision& a) ;
779std::ostream& operator << (std::ostream& s, const cidotprecision& a) noexcept;
780std::string& operator >> (std::string& s, cidotprecision& a) ;
781std::string& operator << (std::string& s, const cidotprecision& a) noexcept;
782void operator >> (const std::string &s,cidotprecision& a) ;
783void operator >> (const char *s ,cidotprecision& a) ;
784
785void 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
The Data Type cdotprecision.
Definition cdot.hpp:61
The Data Type cidotprecision.
Definition cidot.hpp:58
friend cidotprecision & UncheckedSetInf(cidotprecision &, const cdotprecision &) noexcept
Returns the complex dotprecison interval with the unchecked new given infimum value.
Definition cidot.inl:1669
cidotprecision()
Constructor of class cidotprecision.
Definition cidot.hpp:67
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
friend cidotprecision operator-(cidotprecision) noexcept
Implementation of standard algebraic negative sign operation.
Definition cidot.inl:440
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
friend bool operator>=(const cidotprecision &, const cidotprecision &) noexcept
Implementation of standard greater-or-equal-than operation.
Definition cidot.inl:1366
friend bool operator!=(const cidotprecision &, const cidotprecision &) noexcept
Implementation of standard negated equality operation.
Definition cidot.inl:1190
friend bool operator<=(const cidotprecision &, const cidotprecision &) noexcept
Implementation of standard less-or-equal-than operation.
Definition cidot.inl:1361
friend bool operator!(const cidotprecision &) noexcept
Implementation of standard negation operation.
Definition cidot.inl:1172
friend bool operator>(const cidotprecision &, const cidotprecision &) noexcept
Implementation of standard greater-than operation.
Definition cidot.inl:1356
friend cdotprecision Sup(const cidotprecision &) noexcept
Returns the supremum of a complex dotprecison interval.
Definition cidot.inl:1579
friend const dotprecision & InfIm(const cidotprecision &) noexcept
Returns the infimum of the imaginary part of the complex dotprecision interval.
Definition cidot.inl:1729
friend cdotprecision Inf(const cidotprecision &) noexcept
Returns the infimum of a complex dotprecison interval.
Definition cidot.inl:1578
friend cidotprecision & UncheckedSetSup(cidotprecision &, const cdotprecision &) noexcept
Returns the complex dotprecison interval with the unchecked new given supremum value.
Definition cidot.inl:1676
friend idotprecision Re(const cidotprecision &) noexcept
Returns the real part of the complex dotprecision interval.
Definition cidot.inl:1725
friend std::ostream & operator<<(std::ostream &s, const cidotprecision &a) noexcept
Implementation of standard output method.
Definition cidot.cpp:35
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
friend cidotprecision & operator+=(cidotprecision &, const cidotprecision &) noexcept
Implementation of standard algebraic addition and allocation operation.
Definition cidot.inl:510
int get_dotprec() const
Get currently set precision for computation of dot products.
Definition cidot.hpp:93
void set_dotprec(unsigned int i)
Set precision for computation of dot products.
Definition cidot.hpp:95
friend cidotprecision operator+(const cidotprecision &) noexcept
Implementation of standard algebraic positive sign operation.
Definition cidot.inl:453
friend const dotprecision & SupRe(const cidotprecision &) noexcept
Returns the supremum of the real part of the complex dotprecision interval.
Definition cidot.inl:1730
void set_k(unsigned int i)
Set precision for computation of dot products.
Definition cidot.hpp:91
friend std::istream & operator>>(std::istream &s, cidotprecision &a)
Implementation of standard input method.
Definition cidot.cpp:58
friend const dotprecision & SupIm(const cidotprecision &) noexcept
Returns the supremum of the imaginary part of the complex dotprecision interval.
Definition cidot.inl:1731
friend cidotprecision operator|(const cidotprecision &, const cidotprecision &) noexcept
Returns the convex hull of the arguments.
Definition cidot.inl:478
friend const dotprecision & InfRe(const cidotprecision &) noexcept
Returns the infimum of the real part of the complex dotprecision interval.
Definition cidot.inl:1728
friend idotprecision Im(const cidotprecision &) noexcept
Returns the imaginary part of the complex dotprecision interval.
Definition cidot.inl:1726
cidotprecision & operator=(const real &a) noexcept
Implementation of standard assigning operator.
Definition cidot.hpp:98
friend bool operator==(const cidotprecision &, const cidotprecision &) noexcept
Implementation of standard equality operation.
Definition cidot.inl:1185
friend cidotprecision & SetRe(cidotprecision &, const idotprecision &) noexcept
Sets the real part of the complex dotprecision interval.
Definition cidot.inl:1738
friend cidotprecision & operator&=(cidotprecision &, const cidotprecision &)
Allocates the intersection of the arguments to the first argument.
Definition cidot.inl:541
friend cidotprecision & SetInf(cidotprecision &, const cdotprecision &)
Returns the complex dotprecison interval with the new given infimum value.
Definition cidot.inl:1581
int get_k() const
Get currently set precision for computation of dot products.
Definition cidot.hpp:89
friend bool operator<(const cidotprecision &, const cidotprecision &) noexcept
Implementation of standard less-than operation.
Definition cidot.inl:1351
friend cidotprecision & operator|=(cidotprecision &, const cidotprecision &) noexcept
Allocates the convex hull of the arguments to the first argument.
Definition cidot.inl:528
friend cidotprecision & operator-=(cidotprecision &, const cidotprecision &) noexcept
Implementation of standard algebraic subtraction and allocation operation.
Definition cidot.inl:519
friend cidotprecision operator&(const cidotprecision &, const cidotprecision &)
Returns the intersection of the arguments.
Definition cidot.inl:492
friend cidotprecision & SetSup(cidotprecision &, const cdotprecision &)
Returns the complex dotprecison interval with the new given supremum value.
Definition cidot.inl:1592
friend cidotprecision & SetIm(cidotprecision &, const idotprecision &) noexcept
Sets the imaginary part of the complex dotprecision interval.
Definition cidot.inl:1745
The Scalar Type cinterval.
Definition cinterval.hpp:55
The Scalar Type complex.
Definition complex.hpp:50
The Data Type dotprecision.
Definition dot.hpp:112
void set_k(unsigned int i)
Set precision for computation of dot products.
Definition dot.hpp:131
The Data Type idotprecision.
Definition idot.hpp:48
The Scalar Type interval.
Definition interval.hpp:55
The Scalar Type real.
Definition real.hpp:114
The namespace cxsc, providing all functionality of the class library C-XSC.
Definition cdot.cpp:29