// ** Duesseldorf, den 20.12.1994 // ******* // ** interval.h (float) // ****** /*---------------------------------------------------------------------------- Das Modul interval: Bereitstellung einer Intervall-Arithmetik. Unter Ausnutzung der voraussgesetzten Faehigkeit des Prozessors bei arithmetischen Operatrionen wahlweise zu naechsten darstellbaren Zahl auf- oder abzurunden, wird garantiert, dass das Ergebnis-Intervall einer Operation das tatsächliche Ergebnis enthält. Um einen besseren Zugang zu der systemabhaengigen Implementierung der Rundung zu gewaehrleisten, wurde diese in das Modul "fpu_ctrl" ausgelagert. ----------------------------------------------------------------------------*/ #ifndef _INTERVAL_H_ #define _INTERVAL_H_ #include #include class interval { public: interval() {inf=sup=0;} interval(interval &v) {inf= v.inf; sup= v.sup;} interval(float d) {inf=sup=d;} interval(float _inf, float _sup) {inf= _inf; sup= _sup; if (inf>sup) exit(1);} //** Methoden zum Initialisieren. void Set(float _inf, float _sup) {inf= _inf; sup= _sup; if (inf>sup) exit(1);} void Set(float d) {inf=sup=d;} //** Arithmetik-Operatoren interval &operator=(interval iv) {inf= iv.inf; sup= iv.sup; return *this;} interval &operator+=(interval); interval &operator-=(interval); interval &operator*=(interval); interval &operator/=(interval); interval operator-(){return interval(-sup,-inf);} friend interval operator+(interval,interval); friend interval operator-(interval,interval); friend interval operator*(interval,interval); friend interval operator/(interval,interval); //** Test, ob ein Intervall im anderen enthalten ist. friend int operator<<(interval, interval); //** Test, ob Schnittmenge zwischen *this und einem Intervall nicht leer ist. int operator&&(interval); //** Berechnung der Schnittmenge von *this und einem Intervall. interval operator&(interval); //** Mittelpunkt von *this. float Mid(void); //** Durchmesser von *this. float Diam(void) {return sup-inf;} //** Zugriff auf die Intervallgrenzen float Inf(void) {return inf;} float Sup(void) {return sup;} //** Ausgabe des Intervalls in einen String. char *Show(char*); float inf,sup; }; #endif