|
Bugzilla – Full Text Bug Listing |
| Summary: | Multiplication of Scalar variables does not give expected result | ||
|---|---|---|---|
| Product: | ns-3 | Reporter: | Nicola Baldo <nicola> |
| Component: | core | Assignee: | Faker Moatamri <faker.moatamri> |
| Status: | RESOLVED FIXED | ||
| Severity: | normal | CC: | mathieu.lacage, raj.b |
| Priority: | P5 | Keywords: | bug |
| Version: | ns-3-dev | ||
| Hardware: | PC | ||
| OS: | Linux | ||
| Attachments: | This is a patch to implement a general purpose 128 bits multiply operation | ||
Created attachment 425 [details]
This is a patch to implement a general purpose 128 bits multiply operation
It has the effect of correcting the bug and also it does take into account the sign of the inputs to have the sign of the outputs. I also added tests to verify that it actually works. The function fails if there is an overflow.
changeset: 7d096e399d77 |
I built and ran the following simple program: #include <iostream> #include <ns3/nstime.h> using namespace ns3; int main (int argc, char** argv) { Scalar omega = 5.0; Scalar tdivT = 0.5; Scalar result = omega * tdivT ; std::cout << " expected " << omega.GetDouble() * tdivT.GetDouble() << " actual " << result.GetDouble() << std::endl; } And the result I got is: expected 2.5 actual 0 I would expect result.GetDouble() to return the value 2.5, too.