On 22 Apr, 01:57, David Harvey <dmhar...@cims.nyu.edu> wrote:

> And whatever happened to "not reinventing the wheel"? I suppose that's
> a Sage motto but not an MPIR one?

The same argument applied to FLINT and zn_poly leads to curious
conclusions.

So which are you arguing MPIR should do.

1) Try and reuse as much code out there that is already written, i.e.
port other people's code to the MPIR code base (which you complained
about).

2) Do all the work from scratch and come up with our own new
algorithms to improve the same functionality.

You can't have this both ways.

With regard to 1, we have so far reused:

* Moller's GCD patches
* Originally we used Jason Martin's and Pierrick Gaudry's patches
(admittedly we found better code since then)
* Some assembly code of a Japanese hacker
* Bodrato and Zimmermann's Toom code (at least the LGPL components of
this work)
* Brian's MSVC port of GMP
* Numerous patches available online for various build issues on
various platforms

We intend to use:

* Paul Zimmermann's FFT code
* More of Bodrato's LGPL Toom code

With regard to 2 we have:

* Written our own Toom sequence generator
* Written our own assembly optimiser
* Come up with a number of new innovations at the assembly level
especially with regard to division by constants and combining
functions together to push more bits through the CPU
* Found an interesting way of tuning the asymptotically fast GCD code

With regard to matching GMP feature for feature we need to:

* Improve speed of assembly language code on systems other than K8
* Write a new optimised mul_basecase for K8 based on the optimal
addmul_2 code we included in MPIR 1.1.0 - currently it is not used at
all
* Speed up the FFT
* Add square and unbalanced Toom variants
* Implement faster division by 1 and 2 limbs
* Asymptotically fast XGCD
* Asymptotically fast division
* Optimise Toom 4 code

Now, given that code for some of the above has been available for
*years* under the GPL or LGPL v2+ and now appears in GMP 4.3.0 then I
am sure you'll allow that it is not unreasonable to allow 6 months for
us to catch up in all these areas.

But tell me, would you rather have us:

1) Do all this stuff completely from scratch coming up with new
algorithms for all the above
2) Port everyone's code that we can't use by rewriting it and make use
of the new algorithms exposed in GMP, e.g. Montgomery's algorithm for
division by < 1 limb
3) Issue a GPL v3+ version of MPIR which just includes the various
bits of GMP that do the above

You seem to be after a 4th option

4) Go away and stop developing MPIR.

Sorry, that is not going to happen, ever!!

So which is it going to be? And are you going to help?

Bill.


--~--~---------~--~----~------------~-------~--~----~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to 
sage-devel-unsubscr...@googlegroups.com
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://www.sagemath.org
-~----------~----~----~----~------~----~------~--~---

Reply via email to