#include "ExpenseLog.h" ExpenseModule::ExpenseModule(const char* moduleName) { chModuleName=moduleName; uiDoubleAdditions=uiDoubleMultiplications=uiIntAdditions=uiIntMultiplications=uiAssignments=uiBoolOp=0; uiMrdDA=uiMrdDM=uiMrdIA=uiMrdIM=uiMrdAssign=uiMrdBO=0; } ExpenseModule::~ExpenseModule() {}; void ExpenseModule::Clear() { uiDoubleAdditions=uiDoubleMultiplications=uiIntAdditions=uiIntMultiplications=uiAssignments=uiBoolOp=0; uiMrdDA=uiMrdDM=uiMrdIA=uiMrdIM=uiMrdAssign=uiMrdBO=0; } void ExpenseModule::AddDoubleAdditons(unsigned int number) { uiDoubleAdditions+=number; if (uiDoubleAdditions>=MRD) { uiDoubleAdditions-=MRD; ++uiMrdDA; } } void ExpenseModule::AddDoubleMultiplications(unsigned int number) { uiDoubleMultiplications+=number; if (uiDoubleMultiplications>=MRD) { uiDoubleMultiplications-=MRD; ++uiMrdDM; } } void ExpenseModule::AddIntAdditons(unsigned int number) { uiIntAdditions+=number; if (uiIntAdditions>=MRD) { uiIntAdditions-=MRD; ++uiMrdIA; } } void ExpenseModule::AddIntMultiplications(unsigned int number) { uiIntMultiplications+=number; if (uiIntMultiplications>=MRD) { uiIntMultiplications-=MRD; ++uiMrdIM; } } void ExpenseModule::AddAssignments(unsigned int number) { uiAssignments+=number; if (uiAssignments>=MRD) { uiAssignments-=MRD; ++uiMrdAssign; } } void ExpenseModule::AddBoolOperations(unsigned int number) { uiBoolOp+=number; if (uiBoolOp>=MRD) { uiBoolOp-=MRD; ++uiMrdBO; } } void ExpenseModule::AddOperations(unsigned int IntAdd, unsigned int IntMul, unsigned int DoubleAdd, unsigned int DoubleMul, unsigned int Assigns, unsigned int BoolOp) { this->AddIntAdditons(IntAdd); this->AddIntMultiplications(IntMul); this->AddDoubleAdditons(DoubleAdd); this->AddDoubleMultiplications(DoubleMul); this->AddAssignments(Assigns); this->AddBoolOperations(BoolOp); } void ExpenseModule::PrintfSelf(FILE* file) { fprintf(file,"\n***********\n Module: %s\n Additions:\n Double: %3.0d%9d\tInteger: %3.0d%9d",chModuleName,uiMrdDA,uiDoubleAdditions,uiMrdIA,uiIntAdditions); fprintf(file,"\n\n Multiplications:\n Double: %3.0d%9d\tInteger: %3.0d%9d\n",uiMrdDM,uiDoubleMultiplications,uiMrdIM,uiIntMultiplications); fprintf(file,"\n Assignments: %3.0d%9d\tBool Operations: %3.0d%9d\n",uiMrdAssign,uiAssignments,uiMrdBO,uiBoolOp); fprintf(file,"\n***********\n"); } /***********************************************************************************************************************/ ExpenseLog::ExpenseLog(void) { } ExpenseLog::~ExpenseLog(void) { for (size_t i=0;iuiIntAdditions+(double)vModules.at(i)->uiDoubleAdditions) + 1e9*((double)vModules.at(i)->uiMrdIA+(double)vModules.at(i)->uiMrdIA); totalMul+=((double)vModules.at(i)->uiIntMultiplications+(double)vModules.at(i)->uiDoubleMultiplications) + 1e9*(double)(vModules.at(i)->uiMrdIM+vModules.at(i)->uiMrdIM); totalBool+=(double)vModules.at(i)->uiBoolOp + 1e9*(double)vModules.at(i)->uiMrdBO; totalAssign+=(double)vModules.at(i)->uiAssignments + 1e9*(double)vModules.at(i)->uiMrdAssign; vModules.at(i)->PrintfSelf(file); } fprintf(stderr," Total:\n Additions: %e Multiplications: %e\n Bool Operations: %e Assignments: %e\n",totalAdd,totalMul,totalBool,totalAssign); fprintf(stderr,"\n ----------------\n"); } void ExpenseLog::ClearAll() { for (size_t i=0;iClear(); } }