void ViewWidget::connectSignalsAndSlots() { bool connected; connected = connect(mIG, SIGNAL(nameChanged(QString)), this, SLOT(on_nameChanged(QString))); OS_ASSERT(connected); connected = connect(this, SIGNAL(commentsShow(bool)), mIG, SLOT(commentConfig(bool))); OS_ASSERT(connected); connected = connect(this, SIGNAL(precisionDlgShow()), mIGPrecisionDlg, SLOT(show())); OS_ASSERT(connected); connected = connect(this, SIGNAL(precisionDlgHide()), mIGPrecisionDlg, SLOT(hide())); OS_ASSERT(connected); connected = connect(mIGPrecisionDlg, SIGNAL(accepted()), mIG, SLOT(setPrec())); OS_ASSERT(connected); connected = connect(mIGPrecisionDlg, SIGNAL(accepted()), this, SIGNAL(precisionDlgFinished())); OS_ASSERT(connected); connected = connect(mIGPrecisionDlg, SIGNAL(rejected()), this, SIGNAL(precisionDlgFinished())); OS_ASSERT(connected); connected = connect(mIGPrecisionDlg, SIGNAL(finished(int)), this, SIGNAL(precisionDlgFinished())); OS_ASSERT(connected); connected = connect(mIG, SIGNAL(dirty()), this, SIGNAL(modelDirty())); OS_ASSERT(connected); }
BigNumberBase BigNumberBase::operator = (const BigNumberBase& num) { mpz_set(m_gmp->m_integer, num.m_gmp->m_integer); m_prec = num.m_prec; if (m_fixedPrec != -1) { setPrec(m_fixedPrec, m_fixedPrecFlag); } return *this; }
void BigNumberBase::setFixedPrec(int32_t fixedPrec, PrecFlag fixedPrecFlag) { if (fixedPrec == -1) { fixedPrec = Calc::PRECISE; } m_fixedPrec = fixedPrec; m_fixedPrecFlag = fixedPrecFlag; setPrec(m_fixedPrec, m_fixedPrecFlag); }
void BigNumberBase::setPrec(int32_t prec, PrecFlag flag) { if (prec == -1) { prec = Calc::PRECISE; } if (m_prec == prec) { return; } if (m_prec < prec) { GmpInt::TenExp(m_gmp->m_integer, (prec - m_prec)); m_prec = prec; return; } if (flag == BigNumberBase::HALF_ADJUST) { std::string result = toString(); if (result[result.size() - (m_prec - prec)] < '5') { setPrec(prec, BigNumberBase::ROUND_OFF); return; } if (BigNumberBase::Compare(*this, "0") == BigNumberCompare::BIG) { setPrec(prec, BigNumberBase::ROUND_UP); return; } setPrec(prec, BigNumberBase::ROUND_DOWN); return; } int32_t exp = m_prec - prec; char* szExp = (char*)malloc(exp + 2); memset(szExp, 48, exp + 1); szExp[exp + 1] = 0; szExp[0] = 49; mpz_t mpzExp; mpz_init_set_str(mpzExp, szExp, 10); switch (flag) { case BigNumberBase::ROUND_OFF: { mpz_tdiv_q(m_gmp->m_integer, m_gmp->m_integer, mpzExp); break; } case BigNumberBase::ROUND_UP: { mpz_cdiv_q(m_gmp->m_integer, m_gmp->m_integer, mpzExp); break; } case BigNumberBase::ROUND_DOWN: { mpz_fdiv_q(m_gmp->m_integer, m_gmp->m_integer, mpzExp); break; } default: break; } mpz_clear(mpzExp); ::free(szExp); m_prec = prec; }