Test: construct from floating point. More...
Inheritance diagram for ns3::int64x64::test::Int64x64DoubleTestCase:
Collaboration diagram for ns3::int64x64::test::Int64x64DoubleTestCase:Public Member Functions | |
| Int64x64DoubleTestCase () | |
| void | Check (const int64_t intPart) |
| Check the int64x64 for correctness. More... | |
| void | Check (const long double dec, const long double frac, const int64_t intPart, const uint64_t lo) |
| Check the int64x64 for correctness. More... | |
| virtual void | DoRun (void) |
| Implementation to actually run this TestCase. More... | |
Public Member Functions inherited from ns3::TestCase | |
| TestCase (const TestCase &)=delete | |
| virtual | ~TestCase () |
| Destructor. More... | |
| std::string | GetName (void) const |
| TestCase & | operator= (const TestCase &)=delete |
Private Attributes | |
| int | m_deltaCount |
| The number of times a delta was recorded. More... | |
| int64x64_t | m_deltaMax |
| The maximum observed difference between expected and computed values. More... | |
| long double | m_last |
| The last value tested. More... | |
Static Private Attributes | |
| static constexpr long double | MIN_LOW = 1 << MISS_MANT_DIG |
| The smallest low word we expect to get from a conversion. More... | |
| static const long double | MIN_MANT |
| Smallest mantissa we expect to convert to a non-zero low word. More... | |
| static constexpr int | MISS_MANT_DIG = std::max (0, 64 - LDBL_MANT_DIG) |
| Compute a multiplier to match the mantissa size on this platform. More... | |
Additional Inherited Members | |
Public Types inherited from ns3::TestCase | |
| enum | TestDuration { QUICK = 1 , EXTENSIVE = 2 , TAKES_FOREVER = 3 } |
| How long the test takes to execute. More... | |
Protected Member Functions inherited from ns3::TestCase | |
| TestCase (std::string name) | |
| Constructor. More... | |
| void | AddTestCase (TestCase *testCase, TestDuration duration=QUICK) |
| Add an individual child TestCase to this test suite. More... | |
| TestCase * | GetParent () const |
| Get the parent of this TestCsse. More... | |
| bool | IsStatusFailure (void) const |
| Check if any tests failed. More... | |
| bool | IsStatusSuccess (void) const |
| Check if all tests passed. More... | |
| void | SetDataDir (std::string directory) |
| Set the data directory where reference trace files can be found. More... | |
| void | ReportTestFailure (std::string cond, std::string actual, std::string limit, std::string message, std::string file, int32_t line) |
| Log the failure of this TestCase. More... | |
| bool | MustAssertOnFailure (void) const |
| Check if this run should assert on failure. More... | |
| bool | MustContinueOnFailure (void) const |
| Check if this run should continue on failure. More... | |
| std::string | CreateDataDirFilename (std::string filename) |
| Construct the full path to a file in the data directory. More... | |
| std::string | CreateTempDirFilename (std::string filename) |
| Construct the full path to a file in a temporary directory. More... | |
Test: construct from floating point.
Definition at line 1123 of file int64x64-test-suite.cc.
| ns3::int64x64::test::Int64x64DoubleTestCase::Int64x64DoubleTestCase | ( | ) |
Definition at line 1205 of file int64x64-test-suite.cc.
| void ns3::int64x64::test::Int64x64DoubleTestCase::Check | ( | const int64_t | intPart | ) |
Check the int64x64 for correctness.
| intPart | The expected integer part value of the int64x64. |
Definition at line 1375 of file int64x64-test-suite.cc.
References ns3::TestCase::GetName(), ns3::TestCase::GetParent(), m_deltaCount, m_deltaMax, m_last, and ns3::Max().
Referenced by DoRun().
Here is the call graph for this function:
Here is the caller graph for this function:| void ns3::int64x64::test::Int64x64DoubleTestCase::Check | ( | const long double | dec, |
| const long double | frac, | ||
| const int64_t | intPart, | ||
| const uint64_t | lo | ||
| ) |
Check the int64x64 for correctness.
| dec | The integer part of the value to test. |
| frac | The fractional part of the value to test.x |
| intPart | The expected integer part value of the int64x64. |
| lo | The expected low part value of the int64x64. |
Definition at line 1213 of file int64x64-test-suite.cc.
References ns3::Abs(), epsilon, ns3::TestCase::GetName(), ns3::TestCase::GetParent(), ns3::int64x64_t::implementation, ns3::int64x64_t::ld_impl, m_deltaCount, m_deltaMax, m_last, max, MIN_LOW, MIN_MANT, NS_TEST_ASSERT_MSG_EQ_TOL, test-ns3::result, and RUNNING_ON_VALGRIND.
Here is the call graph for this function:
|
virtual |
Implementation to actually run this TestCase.
Subclasses should override this method to conduct their tests.
Implements ns3::TestCase.
Definition at line 1499 of file int64x64-test-suite.cc.
References Check(), ns3::TestCase::GetName(), ns3::TestCase::GetParent(), m_deltaCount, m_deltaMax, MIN_LOW, MIN_MANT, and MISS_MANT_DIG.
Here is the call graph for this function:
|
private |
The number of times a delta was recorded.
Definition at line 1196 of file int64x64-test-suite.cc.
|
private |
The maximum observed difference between expected and computed values.
Definition at line 1195 of file int64x64-test-suite.cc.
|
private |
The last value tested.
Definition at line 1194 of file int64x64-test-suite.cc.
Referenced by Check().
|
staticconstexprprivate |
The smallest low word we expect to get from a conversion.
MIN_LOW = 2^MISS_MANT_DIG
which will be in [1, 2^64].
Definition at line 1174 of file int64x64-test-suite.cc.
|
staticprivate |
Smallest mantissa we expect to convert to a non-zero low word.
MIN_MANT = MIN_LOW / 2^64
= 2^(MISS_MANT_DIG - 64)
= 2^(-EFF_MANT_DIG)
We scale and round this value to match the hard-coded fractional values in Check(intPart) which have 22 decimal digits.
Since we use std::round() which isn't constexpr, just declare this const and initialize below.
Definition at line 1190 of file int64x64-test-suite.cc.
|
staticconstexprprivate |
Compute a multiplier to match the mantissa size on this platform.
Since we will store the fractional part of a double in the low word (64 bits) of our Q64.64 the most mantissa bits we can take advantage of is
EFF_MANT_DIG = std::min (64, LDBL_MANT_DIG)
We have to bound this for platforms with LDBL_MANT_DIG > 64.
The number of "missing" bits in the mantissa is
MISS_MANT_DIG = 64 - EFF_MANT_DIG = std::max (0, 64 - LDBL_MANT_DIG)
This will lie in the closed interval [0, 64]
Definition at line 1165 of file int64x64-test-suite.cc.
Referenced by DoRun().