I’m writing an app which involves arithmetic with humongous numbers, with very many digits. I’ve previously written a class that simplifies handling big numbers by defining them as strings and then using slow arithmetic string functions. Is this the best way to do it? If not, how should I approach this problem? Does C# have anything built-in for such situations?
I’m writing an app which involves arithmetic with humongous numbers, with very many digits.
Share
.NET 4 will have this built in via the BigInteger type. This is claimed to be pretty well tuned and should perform very well.
For 3.5 and earlier, you can grab an implementation of BigInteger from the Dynamic Language Runtime sources. (See e.g. http://dlr.codeplex.com/sourcecontrol/changeset/view/40021?projectName=dlr#694008 and drill down into Src / Runtime / Microsoft.Dynamic / Math.) I don’t know if this has been tuned as highly as the .NET 4 BigInteger type, but it should still be more efficient than your string version because it internally represents the big numbers using integral types and performs arithmetic using integer operations.