Base types, Collections, Diagnostics, IO, RegEx…
This has been the subject of several recent feedback e-mails we’ve received. Moreover, a few recent correspondents were kind enough to point out that not only did we remove it, but we didn’t say anything about it. I apologize for that. We weren’t trying to be sneaky about it. When I made my introductory post there were several comments about BigInteger and I’d mentioned that it would not be included in the release in a reply to one of them. It was also brought up in a comment on Inbar’s post about the .NET 3.5 Beta release. With all of the comment activity about it on the blog, I forgot that it hadn’t made it up to a regular post.
So why was BigInteger cut? The basic rationale behind making BigInteger internal was that it just wasn't ready to ship. We thought our implementation met the needs for a BigInteger type. But then we had some other teams take a look at it and they pointed out some performance and compatibility issues that we just didn't have time to fix before we shipped.
It was a really tough call, but we decided that rather than have people write a bunch of code dependent on a BigInteger class that we wanted to revamp or replace, we would pull it from 3.5 and make sure we resolved the issues before we made it available.
There’s not too much I can say about the current status of BigInteger. We do know that you want it. Since we didn’t get it into 3.5, we’re looking into how we can get it out there but we don’t yet know when we’ll be able to. We’re also looking into other possible investments in numerics.
That’s the story. If you have some scenarios or applications you definitely need a BigInteger for, I'd appreciate getting that feedback. If you’ve already posted comments to this effect on another entry or given me feedback in some other way, there’s no need to repost here. I’ve looked at what you said. But I want to make sure the type does what it needs to when we release it, so if you’ve got something new, feel free to share.
PingBack from http://geeklectures.info/2008/01/04/where-did-biginteger-go-melitta-andersen/
Not only is BigInteger cool stuff, but also BigDecimal would be neat.
BigInteger support is used a bit and BCL support for complex numbers would save us the hassle of maintaining our own library. C++ stl now has complex support, and so does C99. At this point in time BigInteger and Complex support seem almost required for any framework.
I would just be happy if there was an INumeric interface so that we could actually use generics with numeric types.
This would be especially important for types like complex numbers, which depending on your needs might be decimal or double based.
I hope for real, deep numerical support. Maybe even things like interval arithmetic? :)
Importing J#'s BigInteger class is a workaround to for not having a BigInteger class in the .NET Framework. However, J#'s BigInteger class has a bug - The last time I checked, J# hangs on x.isProbablePrime(2) when x = new BigInteger ("117137"). Do you know if J#'s BigInteger class is working now or when it will be fixed?
- Bill Ellis
And F# comes with its own BigInt etc. too.
> I would just be happy if there was
> an INumeric interface so that we
> could actually use generics with
> numeric types.
For info, I have a stable, tested, and very efficient (i.e. fast) solution for this that works for both standard and existing types.
Hopefully the code should be freely released soon:
It's always better that you wait to do it right. I've seen quite a few items in the MS Connect/Feedback that were responded to with basically, "We reallize that this behavior is bad/poor/unintuitive, but we can't change it at this point without breaking applications that depend upon it." Good luck.
Update : BigInteger was cut from the .NET 3.5 release . Have you ever needed a really huge number? So