How to convert from a Double to Big<> without receiving junk in the mantissa?
Hi Tomek,
Sorry, this is a really noob question, but I can't find the answer in the samples.
I am writing a code for a finite difference piece of software. I receive my values as doubles and there is nothing that I can do about that. I sum the numbers several million times hence processor errors are a big problem. Let's say I pass my numbers to my addition function, which looks like
double highprecision(int numArgs, ...) {
ttmath::Big <1,4> sum(0.0), num[10];
double endsum;
va_list args;
va_start(args,numArgs);
cout << endl << "High Precision Code" << endl;
for (int i = 0; i < numArgs; i++) {
num[i] = va_arg(args,double);
sum += num[i];
cout << "num[" << i << "] =" << num[i] << endl;
cout << "high precision sum = " << sum << endl;
}
endsum = sum.ToDouble();
cout << "normal precison sum = " << endsum << endl;
va_end(args);
return endsum;
}
If call it in the main program with just two values such as highprecision(2, 9560.0, 0.000001) then the output that I get from this program is:
num[0] = 9560.0
num[1] = 0.0000010000000000000000000634865345...
sum = 9560.0
high precision sum = 9560.0000010000000000000000000634865
normal precision sum = 9560.00000099 <- This is the loss of precision that i'm trying to avoid.
How can I prevent this from happening?
Thanks, James