Main Page | Namespace List | Class Hierarchy | Alphabetical List | Data Structures | File List | Namespace Members | Data Fields | Globals

extreal.cpp

Go to the documentation of this file.
00001 #include "SdlArs.h"
00002 //#define WANT_STREAM
00003 #include "include.h"
00004 #include "extreal.h"
00005 
00006 #ifdef use_namespace
00007 namespace NEWRAN {
00008 #endif
00009 
00010 ExtReal ExtReal::operator+(const ExtReal& er) const
00011 {
00012    if (c==Finite && er.c==Finite) return ExtReal(value+er.value);
00013    if (c==Missing || er.c==Missing) return ExtReal(Missing);
00014    if (c==Indefinite || er.c==Indefinite) return ExtReal(Indefinite);
00015    if (c==PlusInfinity)
00016    {
00017       if (er.c==MinusInfinity) return ExtReal(Indefinite);
00018       return *this;
00019    }
00020    if (c==MinusInfinity)
00021    {
00022       if (er.c==PlusInfinity) return ExtReal(Indefinite);
00023       return *this;
00024    }
00025    return er;
00026 }
00027 
00028 ExtReal ExtReal::operator-(const ExtReal& er) const
00029 {
00030    if (c==Finite && er.c==Finite) return ExtReal(value-er.value);
00031    if (c==Missing || er.c==Missing) return ExtReal(Missing);
00032    if (c==Indefinite || er.c==Indefinite) return ExtReal(Indefinite);
00033    if (c==PlusInfinity)
00034    {
00035       if (er.c==PlusInfinity) return ExtReal(Indefinite);
00036       return *this;
00037    }
00038    if (c==MinusInfinity)
00039    {
00040       if (er.c==MinusInfinity) return ExtReal(Indefinite);
00041       return *this;
00042    }
00043    return er;
00044 }
00045 
00046 ExtReal ExtReal::operator*(const ExtReal& er) const
00047 {
00048    if (c==Finite && er.c==Finite) return ExtReal(value*er.value);
00049    if (c==Missing || er.c==Missing) return ExtReal(Missing);
00050    if (c==Indefinite || er.c==Indefinite) return ExtReal(Indefinite);
00051    if (c==Finite)
00052    {
00053       if (value==0.0) return ExtReal(Indefinite);
00054       if (value>0.0) return er;
00055       return (-er);
00056    }
00057    if (er.c==Finite)
00058    {
00059       if (er.value==0.0) return ExtReal(Indefinite);
00060       if (er.value>0.0) return *this;
00061       return -(*this);
00062    }
00063    if (c==PlusInfinity) return er;
00064    return (-er);
00065 }
00066 
00067 ExtReal ExtReal::operator-() const
00068 {
00069    switch (c)
00070    {
00071       case Finite:        return ExtReal(-value);
00072       case PlusInfinity:  return ExtReal(MinusInfinity);
00073       case MinusInfinity: return ExtReal(PlusInfinity);
00074       case Indefinite:    return ExtReal(Indefinite);
00075       case Missing:       return ExtReal(Missing);
00076    }
00077    return 0.0;
00078 }
00079 
00080 /*
00081 ostream& operator<<(ostream& os, const ExtReal& er)
00082 {
00083    switch (er.c)
00084    {
00085       case Finite:        os << er.value;         break;
00086       case PlusInfinity:  os << string( "plus-infinity" );  break;
00087       case MinusInfinity: os << string( "minus-infinity" ); break;
00088       case Indefinite:    os << string( "indefinite" );     break;
00089       case Missing:       os << string( "missing" );        break;
00090    }
00091    return os;
00092 }
00093 */
00094 #ifdef use_namespace
00095 }
00096 #endif
00097 

Generated on Fri Dec 5 04:05:59 2003 for Borqueror by doxygen 1.3.3