// file: $PDSP/class/float_8/v1.0/float_8.h // // make sure definitions are only made once // #ifndef __ISIP_FLOAT_8 #define __ISIP_FLOAT_8 // isip include files // #ifndef __ISIP_INTEGRAL #include #endif // Float_8: a class that manages 8-byte floating point numbers // class Float_8 { //--------------------------------------------------------------------------- // // protected data // //--------------------------------------------------------------------------- protected: // internal data - be careful not add anything that isn't absolutely // necessary, so that higher level classes (e.g., vector) do not waste space // float_8 value_d; // counters to keep track of computational resources // static int_4 num_mults_d; static int_4 num_adds_d; static int_4 num_data_transfers_d; static int_4 num_objs_d; static int_4 max_num_objs_d; static int_4 debug_level_d; //--------------------------------------------------------------------------- // // public methods // //--------------------------------------------------------------------------- public: // required methods // char_1* name_cc(); logical_1 debug_cc(FILE* fp, char_1* message); logical_1 set_debug_cc(int_4 value); logical_1 error_handler_cc(char_1* method_name, char_1* message); // destructors/constructors // ~Float_8(); Float_8(); Float_8(float_8 arg); Float_8(Float_8& arg); // in-line methods // inline operator float_8() { return value_d; } inline Float_8& operator= (float_8 arg) { value_d = arg; num_data_transfers_d++; return *this; } inline Float_8& operator= (Float_8 arg) { value_d = arg.value_d; num_data_transfers_d++; return *this; } // operator overloads // Float_8 operator+ (Float_8 arg); Float_8 operator+ (float_8 arg); Float_8 operator* (Float_8 arg); Float_8 operator* (float_8 arg); Float_8& operator+= (Float_8 arg); Float_8& operator+= (float_8 arg); Float_8& operator-= (Float_8 arg); Float_8& operator-= (float_8 arg); Float_8& operator*= (Float_8 arg); Float_8& operator*= (float_8 arg); // other useful methods // logical_1 reset_cc(); logical_1 get_stats_cc(int_4& num_mults, int_4& num_adds, int_4& num_objs, int_4& num_data_transfers); //--------------------------------------------------------------------------- // // private methods // //--------------------------------------------------------------------------- private: // memory counters // logical_1 modify_memory_cc(int_4 increment); }; // end of include file // #endif