C-XSC - A C++ Class Library for Extended Scientific Computing
2.5.4
|
00001 /* 00002 ** CXSC is a C++ library for eXtended Scientific Computing (V 2.5.4) 00003 ** 00004 ** Copyright (C) 1990-2000 Institut fuer Angewandte Mathematik, 00005 ** Universitaet Karlsruhe, Germany 00006 ** (C) 2000-2014 Wiss. Rechnen/Softwaretechnologie 00007 ** Universitaet Wuppertal, Germany 00008 ** 00009 ** This library is free software; you can redistribute it and/or 00010 ** modify it under the terms of the GNU Library General Public 00011 ** License as published by the Free Software Foundation; either 00012 ** version 2 of the License, or (at your option) any later version. 00013 ** 00014 ** This library is distributed in the hope that it will be useful, 00015 ** but WITHOUT ANY WARRANTY; without even the implied warranty of 00016 ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00017 ** Library General Public License for more details. 00018 ** 00019 ** You should have received a copy of the GNU Library General Public 00020 ** License along with this library; if not, write to the Free 00021 ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 00022 */ 00023 00024 /* CVS $Id: cidot.hpp,v 1.33 2014/01/30 17:23:43 cxsc Exp $ */ 00025 00026 #ifndef _CXSC_CIDOT_HPP_INCLUDED 00027 #define _CXSC_CIDOT_HPP_INCLUDED 00028 00029 #include <iostream> 00030 #include <string> 00031 #include "dot.hpp" 00032 #include "idot.hpp" 00033 #include "cdot.hpp" 00034 #include "cinterval.hpp" 00035 00036 namespace cxsc { 00037 00038 // --------------------------------------------------------------------------- 00039 // ---- ---- 00040 // ---- class cidotprecision (declaration) ---- 00041 // ---- ---- 00042 // --------------------------------------------------------------------------- 00043 00045 00057 class cidotprecision 00058 { 00059 private: 00060 // ---- Datenelemente --------------------------------------- 00061 dotprecision reinf,resup,iminf,imsup; 00062 int k; 00063 00064 public: 00065 // ---- Constructors --------------------------------------- 00067 cidotprecision() : k(0) {} 00069 inline cidotprecision(const cidotprecision &) throw(); 00070 00072 explicit inline cidotprecision(const real &) throw(); 00074 explicit inline cidotprecision(const dotprecision &) throw(); 00076 explicit inline cidotprecision(const interval &) throw(); 00078 explicit inline cidotprecision(const idotprecision &) throw(); 00080 explicit inline cidotprecision(const complex &) throw(); 00082 explicit inline cidotprecision(const cdotprecision &) throw(); 00084 explicit inline cidotprecision(const cinterval &) throw(); 00086 explicit inline cidotprecision(const idotprecision &, const idotprecision &) throw(); 00087 00089 inline int get_k() const { return k; } 00091 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);} 00093 inline int get_dotprec() const { return k; } 00095 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);} 00096 00098 inline cidotprecision & operator= (const real & a) throw() { reinf=resup=a; iminf=imsup=0.0; return *this; } 00100 inline cidotprecision & operator= (const complex & a) throw() { reinf=resup=Re(a); iminf=imsup=Im(a); return *this; } 00102 inline cidotprecision & operator= (const interval & a) throw() { reinf=Inf(a),resup=Sup(a),iminf=imsup=0.0; return *this; } 00104 inline cidotprecision & operator= (const cinterval & a) throw() { reinf=Inf(Re(a)),resup=Sup(Re(a)),iminf=Inf(Im(a)),imsup=Sup(Im(a)); return *this; } 00106 inline cidotprecision & operator= (const dotprecision & a) throw() { reinf=resup=a; iminf=imsup=0.0; return *this; } 00108 inline cidotprecision & operator= (const cdotprecision & a)throw() { reinf=resup=Re(a),iminf=imsup=Im(a); return *this; } 00110 inline cidotprecision & operator= (const idotprecision & a)throw() { reinf=Inf(a),resup=Sup(a),iminf=imsup=0.0; return *this; } 00112 inline cidotprecision & operator= (const cidotprecision& a)throw() { reinf=a.reinf,resup=a.resup,iminf=a.iminf,imsup=a.imsup; return *this; } 00113 00114 // ---- Destruktor ---- 00115 // ~cidotprecision() {} unnoetig 00116 00117 // ---- Typwandlungen ---- 00119 friend inline cidotprecision _cidotprecision(const complex &,const complex &) throw(); 00121 friend inline cidotprecision _cidotprecision(const complex &,const real &) throw(); 00123 friend inline cidotprecision _cidotprecision(const real &,const complex &) throw(); 00125 friend inline cidotprecision _cidotprecision(const interval &,const interval &) throw(); 00127 friend inline cidotprecision _cidotprecision(const interval &,const real &) throw(); 00129 friend inline cidotprecision _cidotprecision(const real &,const interval &) throw(); 00131 friend inline cidotprecision _cidotprecision(const real &) throw(); 00133 friend inline cidotprecision _cidotprecision(const complex &) throw(); 00135 friend inline cidotprecision _cidotprecision(const interval &) throw(); 00137 friend inline cidotprecision _cidotprecision(const cinterval &) throw(); 00138 00140 friend inline cidotprecision _cidotprecision(const idotprecision &,const idotprecision &) throw(); 00142 friend inline cidotprecision _cidotprecision(const cdotprecision &,const cdotprecision &) throw(ERROR_CIDOTPRECISION_EMPTY_INTERVAL); 00144 friend inline cidotprecision _cidotprecision(const idotprecision &,const dotprecision &) throw(); 00146 friend inline cidotprecision _cidotprecision(const cdotprecision &,const dotprecision &) throw(ERROR_CIDOTPRECISION_EMPTY_INTERVAL); 00148 friend inline cidotprecision _cidotprecision(const dotprecision &,const idotprecision &) throw(); 00150 friend inline cidotprecision _cidotprecision(const dotprecision &,const cdotprecision&) throw(ERROR_CIDOTPRECISION_EMPTY_INTERVAL); 00152 friend inline cidotprecision _cidotprecision(const cdotprecision &) throw(); 00154 friend inline cidotprecision _cidotprecision(const idotprecision &) throw(); 00156 friend inline cidotprecision _cidotprecision(const dotprecision &) throw(); 00157 00158 00160 friend inline cidotprecision _unchecked_cidotprecision(const complex &, const complex &) throw(); 00162 friend inline cidotprecision _unchecked_cidotprecision(const complex &, const real &) throw(); 00164 friend inline cidotprecision _unchecked_cidotprecision(const real &, const complex &) throw(); 00165 00167 friend inline cidotprecision _unchecked_cidotprecision(const cdotprecision &, const cdotprecision &) throw(); 00169 friend inline cidotprecision _unchecked_cidotprecision(const cdotprecision &, const dotprecision &) throw(); 00171 friend inline cidotprecision _unchecked_cidotprecision(const dotprecision &, const cdotprecision &) throw(); 00172 00173 // ---- Ausgabefunkt. --------------------------------------- 00175 friend std::istream& operator >> (std::istream& s, cidotprecision& a) throw(ERROR_CIDOTPRECISION_EMPTY_INTERVAL); 00177 friend std::ostream& operator << (std::ostream& s, const cidotprecision& a) throw(); 00179 friend std::string& operator >> (std::string& s, cidotprecision& a) throw(ERROR_CIDOTPRECISION_EMPTY_INTERVAL); 00181 friend std::string& operator << (std::string& s, const cidotprecision& a) throw(); 00183 friend void operator >> (const std::string &s,cidotprecision& a) throw(ERROR_CIDOTPRECISION_EMPTY_INTERVAL); 00185 friend void operator >> (const char *s ,cidotprecision& a) throw(ERROR_CIDOTPRECISION_EMPTY_INTERVAL); 00186 00187 // ---- Standardfunkt ---- (arithmetische Operatoren) 00189 friend inline cidotprecision operator -(cidotprecision) throw(); 00191 friend inline cidotprecision operator +(const cidotprecision &) throw(); 00192 00194 friend inline cidotprecision operator +(const cidotprecision &,const cidotprecision &) throw(); 00196 friend inline cidotprecision operator -(const cidotprecision &,const cidotprecision &) throw(); 00198 friend inline cidotprecision operator |(const cidotprecision &,const cidotprecision &) throw(); 00200 friend inline cidotprecision operator &(const cidotprecision &,const cidotprecision &) throw(ERROR_CIDOTPRECISION_EMPTY_INTERVAL); 00201 00203 friend inline cidotprecision operator |(const cdotprecision &,const cdotprecision &) throw(); 00204 00206 friend inline cidotprecision & operator +=(cidotprecision &, const cidotprecision &) throw(); 00208 friend inline cidotprecision & operator -=(cidotprecision &, const cidotprecision &) throw(); 00210 friend inline cidotprecision & operator |=(cidotprecision &, const cidotprecision &) throw(); 00212 friend inline cidotprecision & operator &=(cidotprecision &, const cidotprecision &) throw(ERROR_CIDOTPRECISION_EMPTY_INTERVAL); 00213 00214 // CID-R 00215 00217 friend inline cidotprecision operator +(const cidotprecision &,const real &) throw(); 00219 friend inline cidotprecision operator +(const real &,const cidotprecision &) throw(); 00221 friend inline cidotprecision operator -(const cidotprecision &,const real &) throw(); 00223 friend inline cidotprecision operator -(const real &,const cidotprecision &) throw(); 00225 friend inline cidotprecision operator |(const cidotprecision &,const real &) throw(); 00227 friend inline cidotprecision operator |(const real &,const cidotprecision &) throw(); 00229 friend inline cidotprecision operator &(const cidotprecision &,const real &) throw(ERROR_CIDOTPRECISION_EMPTY_INTERVAL); 00231 friend inline cidotprecision operator &(const real &,const cidotprecision &) throw(ERROR_CIDOTPRECISION_EMPTY_INTERVAL); 00232 00234 friend inline cidotprecision & operator +=(cidotprecision &, const real &) throw(); 00236 friend inline cidotprecision & operator -=(cidotprecision &, const real &) throw(); 00238 friend inline cidotprecision & operator |=(cidotprecision &, const real &) throw(); 00240 friend inline cidotprecision & operator &=(cidotprecision &, const real &) throw(ERROR_CIDOTPRECISION_EMPTY_INTERVAL); 00241 00242 // CID-C 00243 00245 friend inline cidotprecision operator +(const cidotprecision &,const complex &) throw(); 00247 friend inline cidotprecision operator +(const complex &,const cidotprecision &) throw(); 00249 friend inline cidotprecision operator -(const cidotprecision &,const complex &) throw(); 00251 friend inline cidotprecision operator -(const complex &,const cidotprecision &) throw(); 00253 friend inline cidotprecision operator |(const cidotprecision &,const complex &) throw(); 00255 friend inline cidotprecision operator |(const complex &,const cidotprecision &) throw(); 00257 friend inline cidotprecision operator &(const cidotprecision &,const complex &) throw(ERROR_CIDOTPRECISION_EMPTY_INTERVAL); 00259 friend inline cidotprecision operator &(const complex &,const cidotprecision &) throw(ERROR_CIDOTPRECISION_EMPTY_INTERVAL); 00260 00261 00263 friend inline cidotprecision & operator +=(cidotprecision &, const complex &) throw(); 00265 friend inline cidotprecision & operator -=(cidotprecision &, const complex &) throw(); 00267 friend inline cidotprecision & operator |=(cidotprecision &, const complex &) throw(); 00269 friend inline cidotprecision & operator &=(cidotprecision &, const complex &) throw(ERROR_CIDOTPRECISION_EMPTY_INTERVAL); 00270 00271 // CID-I 00272 00274 friend inline cidotprecision operator +(const cidotprecision &,const interval &) throw(); 00276 friend inline cidotprecision operator +(const interval &,const cidotprecision &) throw(); 00278 friend inline cidotprecision operator -(const cidotprecision &,const interval &) throw(); 00280 friend inline cidotprecision operator -(const interval &,const cidotprecision &) throw(); 00282 friend inline cidotprecision operator |(const cidotprecision &,const interval &) throw(); 00284 friend inline cidotprecision operator |(const interval &,const cidotprecision &) throw(); 00286 friend inline cidotprecision operator &(const cidotprecision &,const interval &) throw(ERROR_CIDOTPRECISION_EMPTY_INTERVAL); 00288 friend inline cidotprecision operator &(const interval &,const cidotprecision &) throw(ERROR_CIDOTPRECISION_EMPTY_INTERVAL); 00289 00291 friend inline cidotprecision & operator +=(cidotprecision &, const interval &) throw(); 00293 friend inline cidotprecision & operator -=(cidotprecision &, const interval &) throw(); 00295 friend inline cidotprecision & operator |=(cidotprecision &, const interval &) throw(); 00297 friend inline cidotprecision & operator &=(cidotprecision &, const interval &) throw(ERROR_CIDOTPRECISION_EMPTY_INTERVAL); 00298 00299 // CID-CI 00300 00302 friend inline cidotprecision operator +(const cidotprecision &,const cinterval &) throw(); 00304 friend inline cidotprecision operator +(const cinterval &,const cidotprecision &) throw(); 00306 friend inline cidotprecision operator -(const cidotprecision &,const cinterval &) throw(); 00308 friend inline cidotprecision operator -(const cinterval &,const cidotprecision &) throw(); 00310 friend inline cidotprecision operator |(const cidotprecision &,const cinterval &) throw(); 00312 friend inline cidotprecision operator |(const cinterval &,const cidotprecision &) throw(); 00314 friend inline cidotprecision operator &(const cidotprecision &,const cinterval &) throw(ERROR_CIDOTPRECISION_EMPTY_INTERVAL); 00316 friend inline cidotprecision operator &(const cinterval &,const cidotprecision &) throw(ERROR_CIDOTPRECISION_EMPTY_INTERVAL); 00317 00319 friend inline cidotprecision & operator +=(cidotprecision &, const cinterval &) throw(); 00321 friend inline cidotprecision & operator -=(cidotprecision &, const cinterval &) throw(); 00323 friend inline cidotprecision & operator |=(cidotprecision &, const cinterval &) throw(); 00325 friend inline cidotprecision & operator &=(cidotprecision &, const cinterval &) throw(ERROR_CIDOTPRECISION_EMPTY_INTERVAL); 00326 00327 // CID-D 00328 00330 friend inline cidotprecision operator +(const cidotprecision &,const dotprecision &) throw(); 00332 friend inline cidotprecision operator +(const dotprecision &,const cidotprecision &) throw(); 00334 friend inline cidotprecision operator -(const cidotprecision &,const dotprecision &) throw(); 00336 friend inline cidotprecision operator -(const dotprecision &,const cidotprecision &) throw(); 00338 friend inline cidotprecision operator |(const cidotprecision &,const dotprecision &) throw(); 00340 friend inline cidotprecision operator |(const dotprecision &,const cidotprecision &) throw(); 00342 friend inline cidotprecision operator &(const cidotprecision &,const dotprecision &) throw(ERROR_CIDOTPRECISION_EMPTY_INTERVAL); 00344 friend inline cidotprecision operator &(const dotprecision &,const cidotprecision &) throw(ERROR_CIDOTPRECISION_EMPTY_INTERVAL); 00345 00347 friend inline cidotprecision & operator +=(cidotprecision &, const dotprecision &) throw(); 00349 friend inline cidotprecision & operator -=(cidotprecision &, const dotprecision &) throw(); 00351 friend inline cidotprecision & operator |=(cidotprecision &, const dotprecision &) throw(); 00353 friend inline cidotprecision & operator &=(cidotprecision &, const dotprecision &) throw(ERROR_CIDOTPRECISION_EMPTY_INTERVAL); 00354 00355 // CID-CD 00356 00358 friend inline cidotprecision operator +(const cidotprecision &,const cdotprecision &) throw(); 00360 friend inline cidotprecision operator +(const cdotprecision &,const cidotprecision &) throw(); 00362 friend inline cidotprecision operator -(const cidotprecision &,const cdotprecision &) throw(); 00364 friend inline cidotprecision operator -(const cdotprecision &,const cidotprecision &) throw(); 00366 friend inline cidotprecision operator |(const cidotprecision &,const cdotprecision &) throw(); 00368 friend inline cidotprecision operator |(const cdotprecision &,const cidotprecision &) throw(); 00370 friend inline cidotprecision operator &(const cidotprecision &,const cdotprecision &) throw(ERROR_CIDOTPRECISION_EMPTY_INTERVAL); 00372 friend inline cidotprecision operator &(const cdotprecision &,const cidotprecision &) throw(ERROR_CIDOTPRECISION_EMPTY_INTERVAL); 00373 00374 00376 friend inline cidotprecision & operator +=(cidotprecision &, const cdotprecision &) throw(); 00378 friend inline cidotprecision & operator -=(cidotprecision &, const cdotprecision &) throw(); 00380 friend inline cidotprecision & operator |=(cidotprecision &, const cdotprecision &) throw(); 00382 friend inline cidotprecision & operator &=(cidotprecision &, const cdotprecision &) throw(ERROR_CIDOTPRECISION_EMPTY_INTERVAL); 00383 00384 // CID-ID 00385 00387 friend inline cidotprecision operator +(const cidotprecision &,const idotprecision &) throw(); 00389 friend inline cidotprecision operator +(const idotprecision &,const cidotprecision &) throw(); 00391 friend inline cidotprecision operator -(const cidotprecision &,const idotprecision &) throw(); 00393 friend inline cidotprecision operator -(const idotprecision &,const cidotprecision &) throw(); 00395 friend inline cidotprecision operator |(const cidotprecision &,const idotprecision &) throw(); 00397 friend inline cidotprecision operator |(const idotprecision &,const cidotprecision &) throw(); 00399 friend inline cidotprecision operator &(const cidotprecision &,const idotprecision &) throw(ERROR_CIDOTPRECISION_EMPTY_INTERVAL); 00401 friend inline cidotprecision operator &(const idotprecision &,const cidotprecision &) throw(ERROR_CIDOTPRECISION_EMPTY_INTERVAL); 00402 00404 friend inline cidotprecision & operator +=(cidotprecision &, const idotprecision &) throw(); 00406 friend inline cidotprecision & operator -=(cidotprecision &, const idotprecision &) throw(); 00408 friend inline cidotprecision & operator |=(cidotprecision &, const idotprecision &) throw(); 00410 friend inline cidotprecision & operator &=(cidotprecision &, const idotprecision &) throw(ERROR_CIDOTPRECISION_EMPTY_INTERVAL); 00411 00412 // ---- Vergleichsop. ---- 00414 friend inline bool operator !(const cidotprecision &) throw(); 00415 // inline operator void *() const throw(); 00416 00418 friend inline bool operator ==(const cidotprecision &,const cidotprecision &) throw(); 00420 friend inline bool operator !=(const cidotprecision &,const cidotprecision &) throw(); 00421 00422 // CID-R 00423 00425 friend inline bool operator== (const cidotprecision & a, const real & b) throw(); 00427 friend inline bool operator== (const real & a, const cidotprecision & b) throw(); 00429 friend inline bool operator!= (const cidotprecision & a, const real & b) throw(); 00431 friend inline bool operator!= (const real & a, const cidotprecision & b) throw(); 00432 00433 // CID-C 00434 00436 friend inline bool operator== (const cidotprecision & a, const complex & b) throw(); 00438 friend inline bool operator== (const complex & a, const cidotprecision & b) throw(); 00440 friend inline bool operator!= (const cidotprecision & a, const complex & b) throw(); 00442 friend inline bool operator!= (const complex & a, const cidotprecision & b) throw(); 00443 00444 // CID-I 00445 00447 friend inline bool operator== (const cidotprecision & a, const interval & b) throw(); 00449 friend inline bool operator== (const interval & a, const cidotprecision & b) throw(); 00451 friend inline bool operator!= (const cidotprecision & a, const interval & b) throw(); 00453 friend inline bool operator!= (const interval & a, const cidotprecision & b) throw(); 00454 00455 // CID-CI 00456 00458 friend inline bool operator== (const cidotprecision & a, const cinterval & b) throw(); 00460 friend inline bool operator== (const cinterval & a, const cidotprecision & b) throw(); 00462 friend inline bool operator!= (const cidotprecision & a, const cinterval & b) throw(); 00464 friend inline bool operator!= (const cinterval & a, const cidotprecision & b) throw(); 00465 00466 // CID-D 00467 00469 friend inline bool operator== (const cidotprecision & a, const dotprecision & b) throw(); 00471 friend inline bool operator== (const dotprecision & a, const cidotprecision & b) throw(); 00473 friend inline bool operator!= (const cidotprecision & a, const dotprecision & b) throw(); 00475 friend inline bool operator!= (const dotprecision & a, const cidotprecision & b) throw(); 00476 00477 // CID-CD 00478 00480 friend inline bool operator== (const cidotprecision & a, const cdotprecision & b) throw(); 00482 friend inline bool operator== (const cdotprecision & a, const cidotprecision & b) throw(); 00484 friend inline bool operator!= (const cidotprecision & a, const cdotprecision & b) throw(); 00486 friend inline bool operator!= (const cdotprecision & a, const cidotprecision & b) throw(); 00487 00488 // CID-ID 00489 00491 friend inline bool operator== (const cidotprecision & a, const idotprecision & b) throw(); 00493 friend inline bool operator== (const idotprecision & a, const cidotprecision & b) throw(); 00495 friend inline bool operator!= (const cidotprecision & a, const idotprecision & b) throw(); 00497 friend inline bool operator!= (const idotprecision & a, const cidotprecision & b) throw(); 00498 00499 // ---- Set Operators ---- 00501 friend inline bool operator <(const cidotprecision &,const cidotprecision &) throw(); 00503 friend inline bool operator >(const cidotprecision &,const cidotprecision &) throw(); 00505 friend inline bool operator <=(const cidotprecision &,const cidotprecision &) throw(); 00507 friend inline bool operator >=(const cidotprecision &,const cidotprecision &) throw(); 00508 00509 // CID-R 00510 00512 friend inline bool operator <(const real &,const cidotprecision &) throw(); 00514 friend inline bool operator >(const real &,const cidotprecision &) throw(); 00516 friend inline bool operator <=(const real &,const cidotprecision &) throw(); 00518 friend inline bool operator >=(const real &,const cidotprecision &) throw(); 00519 00521 friend inline bool operator <(const cidotprecision &,const real &) throw(); 00523 friend inline bool operator >(const cidotprecision &,const real &) throw(); 00525 friend inline bool operator <=(const cidotprecision &,const real &) throw(); 00527 friend inline bool operator >=(const cidotprecision &,const real &) throw(); 00528 00529 // CID-C 00530 00532 friend inline bool operator <(const complex &,const cidotprecision &) throw(); 00534 friend inline bool operator >(const complex &,const cidotprecision &) throw(); 00536 friend inline bool operator <=(const complex &,const cidotprecision &) throw(); 00538 friend inline bool operator >=(const complex &,const cidotprecision &) throw(); 00539 00541 friend inline bool operator <(const cidotprecision &,const complex &) throw(); 00543 friend inline bool operator >(const cidotprecision &,const complex &) throw(); 00545 friend inline bool operator <=(const cidotprecision &,const complex &) throw(); 00547 friend inline bool operator >=(const cidotprecision &,const complex &) throw(); 00548 00549 // CID-I 00550 00552 friend inline bool operator <(const interval &,const cidotprecision &) throw(); 00554 friend inline bool operator >(const interval &,const cidotprecision &) throw(); 00556 friend inline bool operator <=(const interval &,const cidotprecision &) throw(); 00558 friend inline bool operator >=(const interval &,const cidotprecision &) throw(); 00559 00561 friend inline bool operator <(const cidotprecision &,const interval &) throw(); 00563 friend inline bool operator >(const cidotprecision &,const interval &) throw(); 00565 friend inline bool operator <=(const cidotprecision &,const interval &) throw(); 00567 friend inline bool operator >=(const cidotprecision &,const interval &) throw(); 00568 00569 // CID-CI 00570 00572 friend inline bool operator <(const cinterval &,const cidotprecision &) throw(); 00574 friend inline bool operator >(const cinterval &,const cidotprecision &) throw(); 00576 friend inline bool operator <=(const cinterval &,const cidotprecision &) throw(); 00577 friend inline bool operator >=(const cinterval &,const cidotprecision &) throw(); 00578 00580 friend inline bool operator <(const cidotprecision &,const cinterval &) throw(); 00582 friend inline bool operator >(const cidotprecision &,const cinterval &) throw(); 00584 friend inline bool operator <=(const cidotprecision &,const cinterval &) throw(); 00586 friend inline bool operator >=(const cidotprecision &,const cinterval &) throw(); 00587 00588 // CID-D 00589 00591 friend inline bool operator <(const dotprecision &,const cidotprecision &) throw(); 00593 friend inline bool operator >(const dotprecision &,const cidotprecision &) throw(); 00595 friend inline bool operator <=(const dotprecision &,const cidotprecision &) throw(); 00597 friend inline bool operator >=(const dotprecision &,const cidotprecision &) throw(); 00598 00600 friend inline bool operator <(const cidotprecision &,const dotprecision &) throw(); 00602 friend inline bool operator >(const cidotprecision &,const dotprecision &) throw(); 00604 friend inline bool operator <=(const cidotprecision &,const dotprecision &) throw(); 00606 friend inline bool operator >=(const cidotprecision &,const dotprecision &) throw(); 00607 00608 // CID-CD 00609 00611 friend inline bool operator <(const cdotprecision &,const cidotprecision &) throw(); 00613 friend inline bool operator >(const cdotprecision &,const cidotprecision &) throw(); 00615 friend inline bool operator <=(const cdotprecision &,const cidotprecision &) throw(); 00617 friend inline bool operator >=(const cdotprecision &,const cidotprecision &) throw(); 00618 00620 friend inline bool operator <(const cidotprecision &,const cdotprecision &) throw(); 00622 friend inline bool operator >(const cidotprecision &,const cdotprecision &) throw(); 00624 friend inline bool operator <=(const cidotprecision &,const cdotprecision &) throw(); 00626 friend inline bool operator >=(const cidotprecision &,const cdotprecision &) throw(); 00627 00628 // CID-ID 00629 00631 friend inline bool operator <(const idotprecision &,const cidotprecision &) throw(); 00633 friend inline bool operator >(const idotprecision &,const cidotprecision &) throw(); 00635 friend inline bool operator <=(const idotprecision &,const cidotprecision &) throw(); 00637 friend inline bool operator >=(const idotprecision &,const cidotprecision &) throw(); 00638 00640 friend inline bool operator <(const cidotprecision &,const idotprecision &) throw(); 00642 friend inline bool operator >(const cidotprecision &,const idotprecision &) throw(); 00644 friend inline bool operator <=(const cidotprecision &,const idotprecision &) throw(); 00646 friend inline bool operator >=(const cidotprecision &,const idotprecision &) throw(); 00647 00648 00649 // ---- Funktionen ---- 00650 00652 friend inline cdotprecision Inf(const cidotprecision&) throw(); 00654 friend inline cdotprecision Sup(const cidotprecision&) throw(); 00656 friend inline cidotprecision& SetInf(cidotprecision&, const cdotprecision&) throw(ERROR_CIDOTPRECISION_EMPTY_INTERVAL); 00658 friend inline cidotprecision& SetSup(cidotprecision&, const cdotprecision&) throw(ERROR_CIDOTPRECISION_EMPTY_INTERVAL); 00660 friend inline cidotprecision& SetInf(cidotprecision&, const dotprecision&) throw(ERROR_CIDOTPRECISION_EMPTY_INTERVAL); 00662 friend inline cidotprecision& SetSup(cidotprecision&, const dotprecision&) throw(ERROR_CIDOTPRECISION_EMPTY_INTERVAL); 00664 friend inline cidotprecision& SetInf(cidotprecision&, const complex&) throw(ERROR_CIDOTPRECISION_EMPTY_INTERVAL); 00666 friend inline cidotprecision& SetSup(cidotprecision&, const complex&) throw(ERROR_CIDOTPRECISION_EMPTY_INTERVAL); 00668 friend inline cidotprecision& SetInf(cidotprecision&, const real&) throw(ERROR_CIDOTPRECISION_EMPTY_INTERVAL); 00670 friend inline cidotprecision& SetSup(cidotprecision&, const real&) throw(ERROR_CIDOTPRECISION_EMPTY_INTERVAL); 00672 friend inline cidotprecision& UncheckedSetInf(cidotprecision&, const cdotprecision&) throw(); 00674 friend inline cidotprecision& UncheckedSetSup(cidotprecision&, const cdotprecision&) throw(); 00676 friend inline cidotprecision& UncheckedSetInf(cidotprecision&, const dotprecision&) throw(); 00678 friend inline cidotprecision& UncheckedSetSup(cidotprecision&, const dotprecision&) throw(); 00680 friend inline cidotprecision& UncheckedSetInf(cidotprecision&, const complex&) throw(); 00682 friend inline cidotprecision& UncheckedSetSup(cidotprecision&, const complex&) throw(); 00684 friend inline cidotprecision& UncheckedSetInf(cidotprecision&, const real&) throw(); 00686 friend inline cidotprecision& UncheckedSetSup(cidotprecision&, const real&) throw(); 00687 00689 friend inline idotprecision Re(const cidotprecision &) throw(); 00691 friend inline idotprecision Im(const cidotprecision &) throw(); 00692 00694 friend inline const dotprecision & InfRe(const cidotprecision &) throw(); 00696 friend inline const dotprecision & InfIm(const cidotprecision &) throw(); 00698 friend inline const dotprecision & SupRe(const cidotprecision &) throw(); 00700 friend inline const dotprecision & SupIm(const cidotprecision &) throw(); 00701 00703 friend inline dotprecision & InfRe(cidotprecision &) throw(); 00705 friend inline dotprecision & InfIm(cidotprecision &) throw(); 00707 friend inline dotprecision & SupRe(cidotprecision &) throw(); 00709 friend inline dotprecision & SupIm(cidotprecision &) throw(); 00710 00712 friend inline cidotprecision& SetRe(cidotprecision&, const idotprecision&) throw(); 00714 friend inline cidotprecision& SetIm(cidotprecision&, const idotprecision&) throw(); 00716 friend inline cidotprecision& SetRe(cidotprecision&, const dotprecision&) throw(); 00718 friend inline cidotprecision& SetIm(cidotprecision&, const dotprecision&) throw(); 00720 friend inline cidotprecision& SetRe(cidotprecision&, const interval&) throw(); 00722 friend inline cidotprecision& SetIm(cidotprecision&, const interval&) throw(); 00724 friend inline cidotprecision& SetRe(cidotprecision&, const real&) throw(); 00726 friend inline cidotprecision& SetIm(cidotprecision&, const real&) throw(); 00727 00728 00729 friend inline void rnd(const cidotprecision &,cinterval &) throw(); 00730 friend inline cinterval rnd(const cidotprecision &) throw(); 00731 00733 friend void accumulate (cidotprecision&, const cinterval&, const cinterval&) throw(); 00734 00736 friend inline void accumulate (cidotprecision&, const cinterval&, const interval&) throw(); 00738 friend inline void accumulate (cidotprecision&, const cinterval&, const complex&) throw(); 00740 friend inline void accumulate (cidotprecision&, const cinterval&, const real&) throw(); 00741 00743 friend inline void accumulate (cidotprecision&, const interval &,const cinterval &) throw(); 00745 friend inline void accumulate (cidotprecision&, const complex &,const cinterval &) throw(); 00747 friend inline void accumulate (cidotprecision&, const real &,const cinterval&) throw(); 00748 00750 friend inline void accumulate (cidotprecision&, const complex &,const interval &) throw(); 00752 friend inline void accumulate (cidotprecision&, const interval &,const complex &) throw(); 00753 00755 friend inline void accumulate (cidotprecision&, const interval &,const interval &) throw(); 00757 friend inline void accumulate (cidotprecision&, const interval &,const real &) throw(); 00759 friend inline void accumulate (cidotprecision&, const real &,const interval &) throw(); 00760 00762 friend inline void accumulate (cidotprecision&, const complex &,const complex &) throw(); 00764 friend inline void accumulate (cidotprecision&, const real &,const complex &) throw(); 00766 friend inline void accumulate (cidotprecision&, const complex &,const real &) throw(); 00767 00769 friend inline void accumulate (cidotprecision&, const real &,const real &) throw(); 00770 }; 00771 00772 // --------------------------------------------------------------------------- 00773 // ---- ---- 00774 // ---- friend functions of class cdotprecision (not inline) ---- 00775 // ---- ---- 00776 // --------------------------------------------------------------------------- 00777 00778 std::istream& operator >> (std::istream& s, cidotprecision& a) throw(ERROR_CIDOTPRECISION_EMPTY_INTERVAL); 00779 std::ostream& operator << (std::ostream& s, const cidotprecision& a) throw(); 00780 std::string& operator >> (std::string& s, cidotprecision& a) throw(ERROR_CIDOTPRECISION_EMPTY_INTERVAL); 00781 std::string& operator << (std::string& s, const cidotprecision& a) throw(); 00782 void operator >> (const std::string &s,cidotprecision& a) throw(ERROR_CIDOTPRECISION_EMPTY_INTERVAL); 00783 void operator >> (const char *s ,cidotprecision& a) throw(ERROR_CIDOTPRECISION_EMPTY_INTERVAL); 00784 00785 void accumulate (cidotprecision&, const cinterval&, const cinterval&) throw(); 00786 00787 // --------------------------------------------------------------------------- 00788 // ---- ---- 00789 // ---- global CIDotprecision Akku's ---- 00790 // ---- ---- 00791 // --------------------------------------------------------------------------- 00792 00793 //#define MAXCIDOTAKKU (MAXDOTAKKU / 2) 00794 //extern cidotprecision cidotakku[MAXCIDOTAKKU]; 00795 00796 //---------------------------------------------------------------------- 00797 } // namespace cxsc 00798 00799 #include "cidot.inl" 00800 00801 #endif // _CXSC_CIDOT_HPP_INCLUDED 00802