Bugzilla – Bug 533
Multiplication of Scalar variables does not give expected result
Last modified: 2009-04-23 03:36:06 UTC
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.
Sounds a lot like bug 455...
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