| Karim BELABAS on Thu, 3 Apr 2003 15:43:01 +0200 (MEST) |
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
| Re: polredabs(,16) bug |
On Thu, 3 Apr 2003, Bill Allombert wrote:
> On Thu, Apr 03, 2003 at 12:13:12PM +0200, Karim BELABAS wrote:
> > On Thu, 3 Apr 2003, Igor Schein wrote:
> > > ? polredabs(x^4+9670527181567158504671*x^2+4840282594390812607599424249,16);
> > > *** impossible concatenation in concat
> >
> > I can't reproduce this [ CHANGES-1.724, ix86 kernel, gcc-2.96 20000731 ].
> >
> > Any special setting I should be aware of ?
> Strange, it seems easy to reproduce (on a2x1 for example).
Sorry, I had changed my default primelimit setting (to investigate another
problem) and forgot to test using 'gp -f'. Now I can reproduce it :0).
Fixed.
> /* prototype of positive small ints */
> static long pos_s[] = {
> evaltyp(t_INT) | _evallg(3), evalsigne(1) | evallgefint(3), 0 };
>
> /* prototype of negative small ints */
> static long neg_s[] = {
> evaltyp(t_INT) | _evallg(3), evalsigne(-1) | evallgefint(3), 0 };
>
> should probably be moved to add.C or mp_indep.c
Actually, they're legacy stuff, which I wanted to remove completely.
In order to add a C long to a t_REAL, it's rather inefficient to start by
padding it with lots of 0 words first, then add two t_REALs of huge accuracy.
[ besides, it adds a spurious precision word to the result with high
probability ]
I've moved the addition routines to add.c to be able to do such things
conveniently:
* write a dedicated addsr (kill pos_s / neg_s)
* remove the 'subtraction' hacks (change the sign in place, call 'add',
restore sign). It was a mistake to mix both signed / unsigned arithmetic
and low level (limbs) / high level (GEN) data in a single kernel.
[ There's also the old project of changing the format of t_REAL so that they
use the same normalization as t_INT (currently, t_REALs are shifted so that
high bit is set): would speed up conversion and addition (a lot), slow down
division (a little), and remove most of the "growing accuracy" problems. ]
Karim.
--
Karim Belabas Tel: (+33) (0)1 69 15 57 48
Dép. de Mathématiques, Bât. 425 Fax: (+33) (0)1 69 15 60 19
Université Paris-Sud http://www.math.u-psud.fr/~belabas/
F-91405 Orsay (France) http://www.parigp-home.de/ [PARI/GP]