[GiNaC-devel] Code for distinct degree factorization fails to compile.

Alexei Sheplyakov varg at theor.jinr.ru
Wed Nov 5 18:51:15 CET 2008


> > commit e989719ca767691eb75b34785baaaed716ea2624
> > Author: Jens Vollinga <jensv at balin.nikhef.nl>
> > Date:   Mon Nov 3 15:50:31 2008 +0100
> > 
> >     Added code for distinct degree factorization.
> 
> Thanks to stupid^W standard floating-integral conversions it fails to compile:
[snipped]

I've "fixed" it in the following way:

diff --git a/ginac/factor.cpp b/ginac/factor.cpp
index 19549a2..8ca39c3 100644
--- a/ginac/factor.cpp
+++ b/ginac/factor.cpp
@@ -900,7 +900,8 @@ static void distinct_degree_factor_BSGS(const umodpoly& a, upvec& result)
 
        int m = std::ceil(((double)n)/2/l);
        upvec H(m);
-       int ql = std::pow(q, l);
+       // XXX: what happens if we have an overflow here?
+       int ql = cl_I_to_int(expt_pos(cl_I(q), l));
        H[0] = h[l];
        for ( int i=1; i<m; ++i ) {
                expt_pos(H[i-1], ql, qk);


Best regards,
	Alexei

-- 
All science is either physics or stamp collecting.

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 827 bytes
Desc: Digital signature
URL: <http://www.ginac.de/pipermail/ginac-devel/attachments/20081105/c9e56ef9/attachment.sig>


More information about the GiNaC-devel mailing list