C-XSC - A C++ Class Library for Extended Scientific Computing  2.5.4
cidot.hpp
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