void IncomeTaxObject::calculate()
{
	bool isAnnualIncomeOk;
	QString lAnnualIncome = getAnnualIncome();
	double lAnnualIncomeDouble = lAnnualIncome.toDouble(&isAnnualIncomeOk);
	double lFederalIncomeTaxDouble = calculateFederalTax(lAnnualIncomeDouble, getProvince());
	double lProvincialIncomeTaxDouble = calculateProvincialTax(lAnnualIncomeDouble, getProvince());

	bool isRrspContributionOk;
	QString lRrspContribution = getRrspContribution();
	double lRrspContributionDouble = lRrspContribution.toDouble(&isRrspContributionOk);
	double lAnnualIncomeDoubleRrspDeducted = lAnnualIncomeDouble - lRrspContributionDouble;


	double lAfterTaxIncome = lAnnualIncomeDouble - lFederalIncomeTaxDouble - lProvincialIncomeTaxDouble;
	double lTotalIncomeTax = lFederalIncomeTaxDouble+lProvincialIncomeTaxDouble;
	double lAverageTaxRate = 0.0;
	if (lAnnualIncomeDouble != 0.0)
	{
	    lAverageTaxRate = (lTotalIncomeTax/lAnnualIncomeDouble)*100;
	}
    double lTaxSavings = lTotalIncomeTax - calculateFederalTax(lAnnualIncomeDoubleRrspDeducted ,getProvince())
            - calculateProvincialTax(lAnnualIncomeDoubleRrspDeducted, getProvince());
    if (lTaxSavings < 0.00)
    {
        lTaxSavings = 0.00;
    }

	setAfterTaxIncome(QString("$")+formatCommas(QString::number(lAfterTaxIncome,'f',2)));
	setTotalIncomeTax(QString("$"+formatCommas(QString::number(lTotalIncomeTax, 'f', 2))));
	setAverageTaxRate(QString(QString::number(lAverageTaxRate, 'f', 2))+"%");
    setTaxSavings(QString("$")+formatCommas(QString::number(lTaxSavings, 'f', 2)));
}
void SharedData::printStats(UINT64& prevProcessed, double timeDifference)
{
	double percentageProcessed = (double)currentProcessed / (double)wikiFile->getFileSize() * 100.0;
	double searchRate = (double)(currentProcessed - prevProcessed) / timeDifference / MEBI;
	unsigned int eta = searchRate == 0 ? 0 : 
		(wikiFile->getFileSize() - currentProcessed) / searchRate / MEBI;

	char etaString[5] = "N/A";
	if (eta < 1000 && searchRate != 0) 
		sprintf_s(etaString, "%u", eta);
	if (percentageProcessed >= 100)
		sprintf_s(etaString, "0");

	char currentTotalString[64];
	ZeroMemory(currentTotalString, 64);
	formatCommas(currentTotal, currentTotalString);

	char stats[128];
	ZeroMemory(stats, 128);
	sprintf_s(stats, "%.2f%% ETA %s, %.2f MB/s, %d*, found %s, CPU %.f%% RAM %d MB\r\n",
		percentageProcessed, etaString, searchRate, activeThreads, currentTotalString,
		cpu.GetCpuUtilization(NULL), cpu.GetProcessRAMUsage(true));

	printf("%s", stats);
	resultFile->writeLine(stats, strlen(stats));
	prevProcessed = currentProcessed;
}
Exemple #3
0
int main(int argc, char** argv)
{
	if (argc != 3) {
		printf("Error: Invalid number of arguments\n");
		exit(-1);
	}
	char* keywordFileName = argv[1];
	char* enwikiFileName = argv[2];

	SYSTEM_INFO si;
	GetSystemInfo(&si);
	const DWORD numberOfProcessors = si.dwNumberOfProcessors;

	char wikiFileType[32] = "0";
	auto index = strcspn(enwikiFileName, "-");
	sprintf_s(wikiFileType, "%s", enwikiFileName + index + 1);
	ResultFile* resultFile = new ResultFile;
	resultFile->setWikiFileType(wikiFileType);

	DWORD startTime = timeGetTime();

	ThreadManager threadManager(numberOfProcessors, enwikiFileName, keywordFileName, resultFile);

	threadManager.startThreads();

	double execution_time = (double)(timeGetTime() - startTime) / CLOCKS_PER_SEC;
	
	char totalString[64];
	ZeroMemory(totalString, 64);
	formatCommas(threadManager.totalFound(), totalString);
	char finalStats[64];
	ZeroMemory(finalStats, 64);
	sprintf_s(finalStats, "\r\nTotal delay %.2f sec, total found %s\r\n", execution_time, totalString);
	printf("%s", finalStats);
	
	resultFile->writeLine(finalStats, strlen(finalStats));
	resultFile->closeFile();

	resultFile->popFileWindow();
}
/** Sets the field's data string */
void MFieldObject::setText(const QString txt)
{
  QDate d;
  int pos, ret;
  QString month, day, year;
  QRegExp regexp("[0-9][0-9](-|//)[0-9][0-9](-|//)[0-9][0-9][0-9][0-9]");
  double val;

  // Set the data
  switch (dataType) {
    case MFieldObject::String:
      if (aqApp->multiLangEnabled() && !txt.isEmpty()) {
        text = trUtf8(txt.utf8());
        if (text == txt)
          text = tr(txt);
      } else
        text = txt;
      break;
    case MFieldObject::Integer:
      val = txt.toDouble();
      if ((val < 0.5) && (val > -0.5) && blankZero) {
        text = QString::null;
      } else {
        text.setNum(val, 'f', 0);
        formatNegValue();
        if (comma)
          formatCommas();
      }
      break;
    case MFieldObject::Float:
      val = txt.toDouble();
      if ((val < 0.0000001) && (val > -0.0000001) && blankZero) {
        text = QString::null;
      } else {
        text.setNum(val, 'f', precision);
        formatNegValue();
        if (comma)
          formatCommas();
      }
      break;
    case MFieldObject::Date:
      if (txt.isEmpty())
        text = QString::null;
      else {
        // Check if we can read the date and if so, reformat it ...
        pos = regexp.search(txt.mid(0));
        ret = regexp.matchedLength();

        if (ret == -1) {
          year = txt.left(4);
          day = txt.right(2);
          month = txt.mid(5, 2);

          if (year.toInt() != 0 && month.toInt() != 0 && day.toInt() != 0) {
            d.setYMD(year.toInt(), month.toInt(), day.toInt());
            text = MUtil::formatDate(d, format);
          } else {
            text = QString::null;
          }
        } else
          text = txt;
      }
      break;
    case MFieldObject::Currency:
      val = txt.toDouble();
      if ((val < 0.01) && (val > -0.01) && blankZero) {
        text = QString::null;
      } else {
        text.setNum(val, 'f', 2);
        formatNegValue();
        if (comma)
          formatCommas();
        text.append(currency);
      }
      break;
    case MFieldObject::Pixmap:
      if (!txt.isEmpty() && paintFunction.isEmpty()) {
        if (!pixmap)
          pixmap = new QPixmap();
        QCString cs(txt);
        if (!QPixmapCache::find(cs.left(100), *pixmap)) {
          if (QFile::exists(txt))
            pixmap->load(txt);
          else
            pixmap->loadFromData(cs);
          if (!pixmap->isNull())
            QPixmapCache::insert(cs.left(100), *pixmap);
        }
        if (pixmap->isNull()) {
          delete pixmap;
          pixmap = 0;
        }
      } else {
        if (pixmap) {
          delete pixmap;
          pixmap = 0;
        }
      }
      break;
    case MFieldObject::Codbar: {
      if (!txt.isEmpty() && paintFunction.isEmpty()) {
        FLCodBar cb(txt, codbarType, 10, 1, 0, 0, true, Qt::black, Qt::white, codbarRes);
        if (!pixmap)
          pixmap = new QPixmap();
        if (!cb.pixmap().isNull())
          *pixmap = cb.pixmap();
        else {
          delete pixmap;
          pixmap = 0;
        }
      } else {
        if (pixmap) {
          delete pixmap;
          pixmap = 0;
        }
      }
    }
    break;
    case MFieldObject::Bool:
      bool ok;
      double d = txt.toDouble(&ok);
      if (txt.upper() == "FALSE" || txt.upper() == "F" || (d == 0 && ok))
        text = tr("No");
      else
        text = tr("Sí");
      break;
  }
}