[GiNaC-devel] Volunteer to continue the work on NTL factorisation bindings

Remco Bloemen remco.bloemen at gmail.com
Thu Sep 6 14:20:08 CEST 2007


Alexei,

First of all, thank you very much for looking at my code and giving good 
pointers! It really makes a newcomer feel appreciated.

On Wednesday 05 September 2007 15:07:36 Sheplyakov Alexei wrote:
> On Tue, Aug 28, 2007 at 06:02:08PM +0200, Remco Bloemen wrote:
> > I have created a simple factorisation for polynomials in Q[x] with real
> > roots (source attached, based on [2]) but it's really slow.
>
> I _think_ there are two reasons for that. First, GiNaC::add and GiNaC::mul
> are way to abstract to repersent polynomials (especially univariate ones)
> efficiently.

Your suggestion of using std::vector was already on my mind, I will certainly 
implement it. It's just that I wanted to evaluate the NTL way before I would 
spent time improving my own humble factorizer.

> Secondly, your implementation of  mod 2^n arithmetic is really
> far from optimal.

Yes, I am aware of that. I wrote the *2n functions as a temporary solution, 
mainly because I did not know how to do it efficiently using CLN. Your 
examples teach me that this can be easily done.

> > An NTL based implementation would be very powerfull and feasible, as said
> > in [1]. I would like to volunteer to continue this work.
>
> IMHO, using two different bignum libraries and converting expressions (and
> numbers) between them is a bad idea. Much better option is to port NTL's
> algorithms to CLN.

I also looked at Singular and I came to the same conclusion that it would be 
best to port the algorithms. The main reasons was that NTL only supports 
univariate integer factorization and that is only a fairly small (though 
performance-wise important) part of full multivariate polynomial 
factorization over extension fields.

Kind regards,
Remco


More information about the GiNaC-devel mailing list