Functions and class for high precision Q64.64 fixed point arithmetic. More...
Classes | |
class | ns3::int64x64_t |
High precision numerical type, implementing Q64.64 fixed precision. More... | |
Functions | |
int64x64_t | ns3::Abs (const int64x64_t &value) |
Absolute value. More... | |
int64x64_t | ns3::Max (const int64x64_t &a, const int64x64_t &b) |
Maximum. More... | |
int64x64_t | ns3::Min (const int64x64_t &a, const int64x64_t &b) |
Minimum. More... | |
int64x64_t | ns3::operator! (const int64x64_t &lhs) |
Logical not operator. More... | |
bool | ns3::operator!= (const int64x64_t &lhs, const int64x64_t &rhs) |
Inequality operator. More... | |
int64x64_t | ns3::operator* (const int64x64_t &lhs, const int64x64_t &rhs) |
Multiplication operator. More... | |
int64x64_t & | ns3::operator*= (int64x64_t &lhs, const int64x64_t &rhs) |
Compound multiplication operator. More... | |
int64x64_t | ns3::operator+ (const int64x64_t &lhs, const int64x64_t &rhs) |
Addition operator. More... | |
int64x64_t | ns3::operator+ (const int64x64_t &lhs) |
Unary plus operator. More... | |
int64x64_t & | ns3::operator+= (int64x64_t &lhs, const int64x64_t &rhs) |
Compound addition operator. More... | |
int64x64_t | ns3::operator- (const int64x64_t &lhs, const int64x64_t &rhs) |
Subtraction operator. More... | |
int64x64_t | ns3::operator- (const int64x64_t &lhs) |
Unary negation operator (change sign operator) More... | |
int64x64_t & | ns3::operator-= (int64x64_t &lhs, const int64x64_t &rhs) |
Compound subtraction operator. More... | |
int64x64_t | ns3::operator/ (const int64x64_t &lhs, const int64x64_t &rhs) |
Division operator. More... | |
int64x64_t & | ns3::operator/= (int64x64_t &lhs, const int64x64_t &rhs) |
Compound division operator. More... | |
bool | ns3::operator< (const int64x64_t &lhs, const int64x64_t &rhs) |
Less than operator. More... | |
std::ostream & | ns3::operator<< (std::ostream &os, const int64x64_t &val) |
Output streamer for int64x64_t. More... | |
bool | ns3::operator<= (const int64x64_t &lhs, const int64x64_t &rhs) |
Less or equal operator. More... | |
bool | ns3::operator== (const int64x64_t &lhs, const int64x64_t &rhs) |
Equality operator. More... | |
bool | ns3::operator> (const int64x64_t &lhs, const int64x64_t &rhs) |
Greater operator. More... | |
bool | ns3::operator>= (const int64x64_t &lhs, const int64x64_t &rhs) |
Greater or equal operator. More... | |
std::istream & | ns3::operator>> (std::istream &is, int64x64_t &val) |
Input streamer for int64x64_t. More... | |
Functions and class for high precision Q64.64 fixed point arithmetic.
|
inline |
Absolute value.
Definition at line 183 of file int64x64.h.
Referenced by ns3::int64x64::test::Int64x64InputOutputTestCase::Check(), ns3::int64x64::test::Int64x64ArithmeticTestCase::Check(), ns3::int64x64::test::Int64x64DoubleTestCase::Check(), ns3::int64x64::test::Int64x64InvertTestCase::CheckCase(), ns3::RttMeanDeviation::Measurement(), and ns3::DelayJitterEstimation::RecordRx().
|
inline |
Maximum.
Definition at line 204 of file int64x64.h.
Referenced by ns3::int64x64::test::Int64x64HiLoTestCase::Check(), ns3::int64x64::test::Int64x64InputTestCase::Check(), ns3::AarfWifiManager::DoReportDataFailed(), ns3::AarfcdWifiManager::DoReportDataFailed(), ns3::WifiPhyStateHelper::GetDelayUntilIdle(), ns3::WifiPhyStateHelper::LogPreviousIdleAndCcaBusyStates(), ns3::DcfManager::MostRecent(), ns3::WifiPhyStateHelper::SwitchToChannelSwitching(), ns3::WifiPhyStateHelper::SwitchToRx(), and ns3::WifiPhyStateHelper::SwitchToTx().
|
inline |
Minimum.
Definition at line 194 of file int64x64.h.
Referenced by ns3::RemoteChannelBundle::AddChannel(), ns3::NullMessageSimulatorImpl::CalculateGuaranteeTime(), ns3::int64x64::test::Int64x64HiLoTestCase::Check(), ns3::int64x64::test::Int64x64InputTestCase::Check(), ns3::AarfWifiManager::DoGetDataTxVector(), ns3::ConstantRateWifiManager::DoGetDataTxVector(), ns3::CaraWifiManager::DoGetDataTxVector(), ns3::AmrrWifiManager::DoGetDataTxVector(), ns3::OnoeWifiManager::DoGetDataTxVector(), ns3::ArfWifiManager::DoGetDataTxVector(), ns3::IdealWifiManager::DoGetDataTxVector(), ns3::RraaWifiManager::DoGetDataTxVector(), ns3::AarfcdWifiManager::DoGetDataTxVector(), ns3::MinstrelWifiManager::DoGetDataTxVector(), ns3::AarfWifiManager::DoGetRtsTxVector(), ns3::ConstantRateWifiManager::DoGetRtsTxVector(), ns3::CaraWifiManager::DoGetRtsTxVector(), ns3::AmrrWifiManager::DoGetRtsTxVector(), ns3::OnoeWifiManager::DoGetRtsTxVector(), ns3::ArfWifiManager::DoGetRtsTxVector(), ns3::IdealWifiManager::DoGetRtsTxVector(), ns3::RraaWifiManager::DoGetRtsTxVector(), ns3::AarfcdWifiManager::DoGetRtsTxVector(), ns3::MinstrelWifiManager::DoGetRtsTxVector(), ns3::AarfWifiManager::DoReportDataFailed(), ns3::AarfcdWifiManager::DoReportDataFailed(), ns3::RemoteChannelBundleManager::GetSafeTime(), and ns3::NullMessageSimulatorImpl::NullMessageEventHandler().
|
inline |
Logical not operator.
Definition at line 397 of file int64x64-128.h.
References ns3::int64x64_t::_v.
|
inline |
Inequality operator.
Definition at line 138 of file int64x64.h.
|
inline |
Multiplication operator.
Definition at line 117 of file int64x64.h.
|
inline |
Compound multiplication operator.
Definition at line 362 of file int64x64-128.h.
References ns3::int64x64_t::Mul().
|
inline |
Addition operator.
Definition at line 95 of file int64x64.h.
|
inline |
Unary plus operator.
Definition at line 381 of file int64x64-128.h.
|
inline |
Compound addition operator.
Definition at line 344 of file int64x64-128.h.
References ns3::int64x64_t::_v.
|
inline |
Subtraction operator.
Definition at line 106 of file int64x64.h.
|
inline |
Unary negation operator (change sign operator)
Definition at line 389 of file int64x64-128.h.
References ns3::int64x64_t::_v.
|
inline |
Compound subtraction operator.
Definition at line 353 of file int64x64-128.h.
References ns3::int64x64_t::_v.
|
inline |
Division operator.
Definition at line 128 of file int64x64.h.
|
inline |
Compound division operator.
Definition at line 371 of file int64x64-128.h.
References ns3::int64x64_t::Div().
|
inline |
std::ostream & ns3::operator<< | ( | std::ostream & | os, |
const int64x64_t & | value | ||
) |
Output streamer for int64x64_t.
Proper rounding turns out to be surprisingly hard. In y.xxxx5|6
, where the |
marks follows the last output digit, rounding the 5|6
to 6|
is straightforward. However, rounding y.xxx99|6
should result in y.xx100|
. Notice the effect of rounding percolates to higher digits. We accumulate the output digits in a string, then carry out the rounding in the string directly.
Values are printed with the following format flags (independent of the the stream flags):
showpos
left
The stream width
is ignored. If floatfield
is set, precision
decimal places are printed. If floatfield
is not set, all digits of the fractional part are printed, up to the representation limit of 20 digits; trailing zeros are omitted.
Definition at line 30 of file int64x64.cc.
References ns3::int64x64_t::GetHigh(), ns3::int64x64_t::GetLow(), HEXHILOW, NS_ASSERT_MSG, and NS_LOG_LOGIC.
|
inline |
Less or equal operator.
Definition at line 146 of file int64x64.h.
|
inline |
|
inline |
|
inline |
Greater or equal operator.
Definition at line 154 of file int64x64.h.
std::istream & ns3::operator>> | ( | std::istream & | is, |
int64x64_t & | value | ||
) |
Input streamer for int64x64_t.
Definition at line 170 of file int64x64.cc.
References ns3::ReadHiDigits(), and ns3::ReadLoDigits().