// ** Duesseldorf, den 20.12.1994 // ******* // ** interval.C // ****** #include #include #include #include #include "interval.h" #include "fpu_ctrl.h" // Include-Datei fuer Einstellung der Rundungsrichtung. #include "tools.h" // Definition von min, max. /*---------------------------------------------------------------------------- Funktion : Show Ausgabe des Intervalls in den String c. ----------------------------------------------------------------------------*/ char *interval::Show(char *c) { sprintf(c,"[%1.16e, %1.16e]",inf,sup); return c; } /*---------------------------------------------------------------------------- Funktion : operator+=, -=, *=, /=, +, -, *, / Definition der Operatoren auf Intervallen. ----------------------------------------------------------------------------*/ interval &interval::operator+=(interval iv) { RmDn(); inf+= iv.inf; RmUp(); sup+= iv.sup; return *this; } interval &interval::operator-=(interval iv) { RmDn(); inf-= iv.sup; RmUp(); sup-= iv.inf; return *this; } interval &interval::operator*=(interval iv) { float _inf,a,b; RmDn(); a= min(iv.inf*inf,iv.inf*sup); b= min(iv.sup*inf,iv.sup*sup); _inf= min(a,b); RmUp(); a= max(iv.inf*inf,iv.inf*sup); b= max(iv.sup*inf,iv.sup*sup); sup= max(a,b); inf= _inf; return *this; } interval &interval::operator/=(interval iv) { interval tmp(*this); if (!(0<=iv.inf && d.sup<=iv.sup; } /*---------------------------------------------------------------------------- Funktion : operator&& Test, ob der Schnitt zweier Intervalle nicht leer ist. ----------------------------------------------------------------------------*/ int interval::operator&&(interval v) { if (v<<*this) return 1; if (*this<