BigNumber Discussions Rss Feedhttp://bignumber.codeplex.com/Thread/List.aspxBigNumber Discussions Rss DescriptionNew Post: Release Planhttp://bignumber.codeplex.com/Thread/View.aspx?ThreadId=57270<div style="line-height: normal;"><p>Hello BigNumber users and fans worldwide.</p>
<p>As you have already noticed I will try to make the release plan a little more sparse (about one a month). This is mainly because I have less time to work on the project and the changes I make are not substantial.</p>
<p>If you find a bug the needs to be fixed or need a feature please post an issue and I will address it as quickly as possible.</p></div>ZBZZNSat, 23 May 2009 14:09:59 GMTNew Post: Release Plan 20090523020959PNew Post: FastBigNumberhttp://bignumber.codeplex.com/Thread/View.aspx?ThreadId=54301<div style="line-height: normal;">I don't think anyone reads these posts but....<br>
<br>
I just checked in some changes to the FastBigNumber to make it compliant with the framework.<br>
There is still some work to be done but in most part it works.<br>
The missing things are completeness issues which I will resolve later on.
</div>ZBZZNFri, 24 Apr 2009 15:09:58 GMTNew Post: FastBigNumber 20090424030958PNew Post: FastBigNumberhttp://bignumber.codeplex.com/Thread/View.aspx?ThreadId=54301<div style="line-height: normal;">Good News!<br>
<br>
I was about to implement the FastBigNumber when I found another codeplex project by Scott Garland that already implemented it exactly as I wanted. Scott was also kind enough to allow me to incorperate his work into this project! Thanks Scott.<br>
<br>
The FastBigNumber uses the simple idea that you don't need to store your number in base 10 (like the StdBigNumber) but instead you can save it in the native base of the computer such as 2^32. This simple adjustment makes all the computation alot faster but makes presenting the number alot slower. The latest Commit to the SVN contains the FastBigNumber but it still does not pass the NUnit tests against the StdBigNumber (throws exception). <br>
<br>
Once I fully incorperate this new number type I will probably release a new Beta.<br>
<br>
Good Night.<br>
Boris.
</div>ZBZZNThu, 23 Apr 2009 19:02:54 GMTNew Post: FastBigNumber 20090423070254PNew Post: FactoringBigNumber Q&Ahttp://bignumber.codeplex.com/Thread/View.aspx?ThreadId=53513<div style="line-height: normal;"><strong>What is FactoringBigNumber?</strong><br>
The FactoringBigNumber is an implementation of a big integer number by factoring the original number into its prime factors. <br>
<br>
<strong>Are you crazy? If you know a fast method of factoring you should break RSA and not write .NET libraries.<br>
</strong>No, I did not find a fast method of factoring. In fact, I currently use the slowest method possible just to test the concept.<br>
<br>
<strong>What is the concept behind the FactoringBigNumber?<br>
</strong>The
concept is simple. I relies on a mathematical fact and some
observations that may or may not be true (the goal of the
implementation is to find out :)<br>
<ol>
<li>Every integer number can be written as a product of prime factors. This is a fact.</li>
<li>Many algorithms make long intermediate calculations that don't make use of all the numeric data all at once.</li>
<li>Usually we don't need numbers infinitely long, just longer than 64bit (maybe 50 - 100 digits).</li>
</ol>
This
leads to the following idea: given a big number we first try to find
the small factors using mathematical laws (that take O(1) or O(n) time
to check). Clearly, most integer numbers are divisible by 2,3,5,7 or
11, which are easy to check.<br>
We can represent an integer number by
stating how many of each prime factor the number contains in the
product and the remainder (the part we didn't factor yet). <br>
For example : The number 587820 = 2^2*3^1*5^1*9797 or in our representation ([2,2][3,1][5,1],9797)<br>
Now the number is ready to be factored!<br>
If the number is one of a much larger calculation, it will now be stored in some Array / List / Dictionary / DCEL. This is where the <em>FactoringManager </em>steps in. When a FactoringBigNumber changes its factoring mode to "Full", the FactoringManager
tries to assign it a calculation background thread. In the this thread
the remainder (in our example 9797) will be factored and added to the
factors table. So after not so long you will get the final number which
is :<br>
([2,2][3,1][5,1][97,1][101,1],1) which is fully factored.<br>
<br>
<strong>But what if the remainder is really long and can't be factored so easily?<br>
</strong>Thats OK. Absolutely nowhere in the implementation do we assume that you have a full factorization.<br>
Here
is an example of the easiest operator * : when you multiply two
factoring numbers you simply merge their tables and multiply the
remainders lets say we multiply 587820 =
([2,2][3,1][5,1][97,1],[101,1],1) by 780850 =
([2,1][5,2][7,1][23,1],97) {note that 97 is still in the remainder
waiting to be factored) , we add the primes and multiply the remainders
([2,3][3,1][5,3][7,1][23,1][97,1],[101,1],97*1). Now we have a newFactoringBigNumber eligible for factoring and in fact we are going to do so, in the background. <br>
<br>
<strong>So what you are saying is that I am getting a multi-threaded parallel computation without changing my algorithm?<br>
</strong>Sort of. There are still many assumptions made here and the implementation is still very primary <strong> </strong>but the idea could work.<br>
<br>
I hope this helped to demystify the FactoringBigNumber<br>
As usual, idea, comments and help programming will be appriciated.<br>
<strong><br>
</strong> <br>
</div>ZBZZNThu, 16 Apr 2009 14:04:40 GMTNew Post: FactoringBigNumber Q&A 20090416020440PNew Post: Development planhttp://bignumber.codeplex.com/Thread/View.aspx?ThreadId=53073<div style="line-height: normal;">The current development plan is as follows :<br>
<ol>
<li>Finish the Full factoring mode in the FactoringBigNumber</li>
<li>Finish the FactoringBigNumber to have all the functionality</li>
<li>Implement FastBigNumber - as you probably realized, the Stibine is good for AI applications but not for mathematical applications because it is store in a very inefficient way for calculations - in base 10. The FastBigNumber will be in base 2^32 thus faster to manipulate but much slower to display.</li>
<li>Implement Rationalizer<T> </li>
<li>Implement the CalculatingBigNumber - a big number that performs all mathematical operations in the background.</li>
</ol>
<p>If you want another feature or change the order of these features please post a reply.<br>
<br>
Also keep in mind that I am working full time and finishing my MSc degree part time so without help this may take a while.</p>
</div>ZBZZNMon, 13 Apr 2009 06:50:39 GMTNew Post: Development plan 20090413065039A