Solved

I need to manage more than 15 digits of precision in my Visual C++ program and libraries

Posted on 2011-02-28
7
365 Views
Last Modified: 2012-05-11
Hi,

I have a program and libraries written in Visual C++ 2005 where i use variables of type double. So far i have been working with this data type with the maximum 15 digits of precision but now i have a request from my customer for supporting 16, 17 and more digits of precision. I don't know how to do this or even if that is possible.

What can i do?
Should i use the boost libraries?
Write my own type and change the data types all over the code (thousands of lines involved) ?

Thanks and regards,

Johann
0
Comment
Question by:JohannRamon
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
7 Comments
 
LVL 86

Accepted Solution

by:
jkr earned 500 total points
ID: 35002856
It's definitely possible - check out e.g.

NTL (http://www.shoup.net/ntl/): arbitrary length integers, vectors/matrices/polynomials over integers and over finite fields.
Apfloat (http://www.apfloat.org/apfloat/): a C++ High Performance Arbitrary Precision Arithmetic Package
MUNTL (http://sourceforge.net/projects/muntl/): Multiprecision unsigned number template library
LiDIA (http://www.cdc.informatik.tu-darmstadt.de/TI/LiDIA/): A library for computational number theory. Provides a collection of highly optimized implementations of various multiprecision data types and time-intensive algorithms.
0
 
LVL 34

Expert Comment

by:sarabande
ID: 35005249
it would be not so difficult to use own type highdouble instead of double in your code. you can do such a substitution in very short time with case sensitive and full-word replacement. then make a central typedef double highdouble; and your programs should build. you then can decide how to implement highdouble, either made by your own for example based on 64-bit integer or using an appropriate type of a foreign library as base.

Sara
0
 
LVL 2

Author Comment

by:JohannRamon
ID: 35017500
Hi,

Thanks for the prompt answers!

jkr: I have checked the libraries and so far NTL types (xdouble or RR) look like my best solution. It looks like the library i already have "boost" doesn't have an appropriate data type.

Sara: It looks like the best path for this large amount of code is the search-replace of the data type. If i include the foreign library it would still be necessary to make the "typedef double highdouble"?

Thanks again and regards,

Johann
0
Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
LVL 34

Expert Comment

by:sarabande
ID: 35019713
you probably then would replace the typedef by

   typedef  long_double_from_library highdouble;

or in case the new (class) type would not provide an interface so that it could substitute a double, you would implement the type highdouble yourself taking the type from the library as a base.

Sara
0
 
LVL 2

Author Comment

by:JohannRamon
ID: 35060797
Hi,

Funny as it sounds, my management wants a "commercial" solution because they feel it is necessary to have a "provider" which can give us support and warranties backed up with a contract (the perceived risk of precision errors is too high for us to assume it alone).

I´m sorry for this added condition. Any suggested option?

Thanks again and regards,

Johann
0
 
LVL 53

Expert Comment

by:Dhaest
ID: 35321646
This question has been classified as abandoned and is being closed as part of the Cleanup Program. See my comment at the end of the question for more details.
0

Featured Post

Announcing the Most Valuable Experts of 2016

MVEs are more concerned with the satisfaction of those they help than with the considerable points they can earn. They are the types of people you feel privileged to call colleagues. Join us in honoring this amazing group of Experts.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

A short article about problems I had with the new location API and permissions in Marshmallow
In this post we will learn how to connect and configure Android Device (Smartphone etc.) with Android Studio. After that we will run a simple Hello World Program.
With the power of JIRA, there's an unlimited number of ways you can customize it, use it and benefit from it. With that in mind, there's bound to be things that I wasn't able to cover in this course. With this summary we'll look at some places to go…
In this seventh video of the Xpdf series, we discuss and demonstrate the PDFfonts utility, which lists all the fonts used in a PDF file. It does this via a command line interface, making it suitable for use in programs, scripts, batch files — any pl…

726 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question