Listing 1 Definition of class sfloat

#if !defined ( SFLOAT_DEFINED )
#define SFLOAT_DEFINED

union conv
   {
   float f;
   long l;
   unsigned short s[2];
   };

class sfloat
   {

private:
   // class data
   static unsigned long fManSignMask;
   static unsigned long fExpMask;
   static unsigned long fManMask;
   static unsigned short sfManSignMask;
   static unsigned short ManSign;
   static unsigned short Exp;
   static unsigned short Man;
   static unsigned short fBias;
   static unsigned short sfBias;
   static unsigned short fsfBias;
   static unsigned short Signed;
   static unsigned short fExpBits;
   static unsigned short sfExpBits;
   static unsigned short fManBits;
   static unsigned short sfManBits;
   static unsigned short fManSignBits;
   static unsigned short sfManSignBits;
   static unsigned short sfBits;
   static unsigned short fManShift1;
   static unsigned short fManShift2;
   static unsigned short sfManShift;
   static unsigned short fExpShift;
   static unsigned short sfExpShift;
   static unsigned short sfExpBitsMin;
   static unsigned short sfExpBitsMax;
   static union conv u;

protected:
   // object instance data
   unsigned short s;

public:
   // constructors
   sfloat();
   sfloat( float );
   sfloat( sfloat& sf );

   // conversion
   operator float();

   // member function assignment operators
   sfloat &operator+=( sfloat sf );
   sfloat &operator-=( sfloat sf );
   sfloat &operator*=( sfloat sf );
   sfloat &operator/=( sfloat sf );

   // member function unary operators
   sfloat operator+();
   sfloat operator-();
   sfloat operator++();
   sfloat operator--();
   sfloat operator++( int );
   sfloat operator--( int );

   // friend function relational operators
   friend int operator==( sfloat sf1, sfloat sf2 );
   friend int operator>=( sfloat sf1, sfloat sf2 );
   friend int operator<=( sfloat sf1, sfloat sf2 );
   friend int operator>( sfloat sf1, sfloat sf2 );
   friend int operator<( sfloat sf1, sfloat sf2 );
   friend int operator!=( sfloat sf1, sfloat sf2 );

   // utility function
   friend void sfloatrange(
        unsigned short sfNumExpBits,
        unsigned short sfSigned );

   };   // class sfloat

// non-member function math operators
sfloat operator+( sfloat sf1, sfloat sf2 );
sfloat operator-( sfloat sf1, sfloat sf2 );
sfloat operator*( sfloat sf1, sfloat sf2 );
sfloat operator/( sfloat sf1, sfloat sf2 );

#include <sfloat.inl>

#endif

// End of SFLOAT.HPP