#12173: Update FLINT to 2.3
---------------------------------------------------------------------+------
Reporter: mhansen |
Owner: tbd
Type: enhancement |
Status: needs_work
Priority: major |
Milestone: sage-5.8
Component: packages |
Resolution:
Keywords: flint spkg | Work
issues: OS X
Report Upstream: N/A |
Reviewers: John Cremona
Authors: Mike Hansen, Fredrik Johansson, Jean-Pierre Flori |
Merged in:
Dependencies: #12433 |
Stopgaps:
---------------------------------------------------------------------+------
Comment (by jpflori):
Using a reentrant version did not solve the problem...
Replying to [comment:190 fredrik.johansson]:
> I was wondering what would show if you print them with printf("%ld",
poly[i])
I modified FLINT as follow:
* in fmpz_poly.h:
{{{
static __inline__
int fmpz_poly_print(const fmpz_poly_t poly)
{
int i = 0;
for (; i < fmpz_poly_length(poly); i++)
{
printf("exp: %d ", i);
printf("MPZ: %d ", (COEFF_IS_MPZ(*(poly->coeffs+i)))?1:0);
printf("addr: %lX ", (unsigned long) poly->coeffs+i);
printf("val: %ld ", *(poly->coeffs+i));
printf("val: %lX ", *(poly->coeffs+i));
printf("fmpz: ");
fmpz_print(poly->coeffs+i);
printf(" !! ");
}
printf("\n");
return fmpz_poly_fprint(stdout, poly);
}
}}}
* in fmpq_poly/set_fmpz_poly.c:
{{{
void fmpq_poly_set_fmpz_poly(fmpq_poly_t rop, const fmpz_poly_t op)
{
if (fmpz_poly_is_zero(op))
{
fmpq_poly_zero(rop);
}
else
{
int i = 0;
fmpz_poly_print(op);
printf("\n");
fmpq_poly_fit_length(rop, fmpz_poly_length(op));
fmpz_poly_print(op);
printf("\n");
_fmpq_poly_set_length(rop, fmpz_poly_length(op));
printf("length = %ld\n", fmpz_poly_length(op));
printf("id = %lX\n", (unsigned long)op);
fmpz_poly_print(op);
printf("\n");
for (; i < fmpz_poly_length(op); i++)
{
printf("exp: %d ", i);
printf("MPZ: %d ", (COEFF_IS_MPZ(*(op->coeffs+i)))?1:0);
printf("addr: %lX ", (unsigned long) op->coeffs+i);
printf("val: %ld ", *(op->coeffs+i));
printf("val: %lX ", *(op->coeffs+i));
printf("fmpz: ");
fmpz_print(op->coeffs+i);
printf(" !! ");
}
printf("\n");
_fmpz_vec_set(rop->coeffs, op->coeffs, rop->length);
fmpz_one(rop->den);
}
}
}}}
In Sage:
* in polynomial_integer_dense_flint.pyx:
{{{
def jprint(self):
fmpz_poly_print(self.__poly)
}}}
* in polynomial_rational_flint.pyx
{{{
elif PY_TYPE_CHECK(x, Polynomial_integer_dense_flint):
print hex(<long>((<Polynomial_integer_dense_flint>x).__poly))
printf("%X\n",(<Polynomial_integer_dense_flint>x).__poly)
print x
x.jprint()
print ""
(<Polynomial_integer_dense_flint>x).jprint()
print ""
fmpq_poly_set_fmpz_poly(self.__poly,
(<Polynomial_integer_dense_flint>x).__poly)
}}}
Here is some data after modifying Sage and FLINT:
{{{
sage: a = 2**61
sage: b = 2**62
sage: c = 2**63
sage: R.<x> = ZZ[]
sage: f = R([1,2,3,a,b,c,3,2,1])
sage: f.change_ring(QQ)
0x1152447d0
152447D0
x^8 + 2*x^7 + 3*x^6 + 9223372036854775808*x^5 + 4611686018427387904*x^4 +
2305843009213693952*x^3 + 3*x^2 + 2*x + 1
exp: 0 MPZ: 0 addr: 7FE1D1919410 val: 1 val: 1 fmpz: 1 !! exp: 1 MPZ: 0
addr: 7FE1D1919411 val: 2 val: 2 fmpz: 2 !! exp: 2 MPZ: 0 addr:
7FE1D1919412 val: 3 val: 3 fmpz: 3 !! exp: 3 MPZ: 0 addr: 7FE1D1919413
val: 2305843009213693952 val: 2000000000000000 fmpz: 2305843009213693952
!! exp: 4 MPZ: 1 addr: 7FE1D1919414 val: 4611686018427387966 val:
400000000000003E fmpz: 4611686018427387904 !! exp: 5 MPZ: 1 addr:
7FE1D1919415 val: 4611686018427387965 val: 400000000000003D fmpz:
9223372036854775808 !! exp: 6 MPZ: 0 addr: 7FE1D1919416 val: 3 val: 3
fmpz: 3 !! exp: 7 MPZ: 0 addr: 7FE1D1919417 val: 2 val: 2 fmpz: 2 !! exp:
8 MPZ: 0 addr: 7FE1D1919418 val: 1 val: 1 fmpz: 1 !!
9 1 2 3 2305843009213693952 4611686018427387904 9223372036854775808 3 2 1
exp: 0 MPZ: 0 addr: 7FE1D1919410 val: 1 val: 1 fmpz: 1 !! exp: 1 MPZ: 0
addr: 7FE1D1919411 val: 2 val: 2 fmpz: 2 !! exp: 2 MPZ: 0 addr:
7FE1D1919412 val: 3 val: 3 fmpz: 3 !! exp: 3 MPZ: 0 addr: 7FE1D1919413
val: 2305843009213693952 val: 2000000000000000 fmpz: 2305843009213693952
!! exp: 4 MPZ: 1 addr: 7FE1D1919414 val: 4611686018427387966 val:
400000000000003E fmpz: 4611686018427387904 !! exp: 5 MPZ: 1 addr:
7FE1D1919415 val: 4611686018427387965 val: 400000000000003D fmpz:
9223372036854775808 !! exp: 6 MPZ: 0 addr: 7FE1D1919416 val: 3 val: 3
fmpz: 3 !! exp: 7 MPZ: 0 addr: 7FE1D1919417 val: 2 val: 2 fmpz: 2 !! exp:
8 MPZ: 0 addr: 7FE1D1919418 val: 1 val: 1 fmpz: 1 !!
9 1 2 3 2305843009213693952 4611686018427387904 9223372036854775808 3 2 1
exp: 0 MPZ: 0 addr: 7FE1D1919410 val: 1 val: 1 fmpz: 1 !! exp: 1 MPZ: 0
addr: 7FE1D1919411 val: 2 val: 2 fmpz: 2 !! exp: 2 MPZ: 0 addr:
7FE1D1919412 val: 3 val: 3 fmpz: 3 !! exp: 3 MPZ: 0 addr: 7FE1D1919413
val: 2305843009213693952 val: 2000000000000000 fmpz: 2305843009213693952
!! exp: 4 MPZ: 1 addr: 7FE1D1919414 val: 4611686018427387966 val:
400000000000003E fmpz: 0 !! exp: 5 MPZ: 1 addr: 7FE1D1919415 val:
4611686018427387965 val: 400000000000003D fmpz: 0 !! exp: 6 MPZ: 0 addr:
7FE1D1919416 val: 3 val: 3 fmpz: 3 !! exp: 7 MPZ: 0 addr: 7FE1D1919417
val: 2 val: 2 fmpz: 2 !! exp: 8 MPZ: 0 addr: 7FE1D1919418 val: 1 val: 1
fmpz: 1 !!
9 1 2 3 2305843009213693952 0 0 3 2 1
exp: 0 MPZ: 0 addr: 7FE1D1919410 val: 1 val: 1 fmpz: 1 !! exp: 1 MPZ: 0
addr: 7FE1D1919411 val: 2 val: 2 fmpz: 2 !! exp: 2 MPZ: 0 addr:
7FE1D1919412 val: 3 val: 3 fmpz: 3 !! exp: 3 MPZ: 0 addr: 7FE1D1919413
val: 2305843009213693952 val: 2000000000000000 fmpz: 2305843009213693952
!! exp: 4 MPZ: 1 addr: 7FE1D1919414 val: 4611686018427387966 val:
400000000000003E fmpz: 0 !! exp: 5 MPZ: 1 addr: 7FE1D1919415 val:
4611686018427387965 val: 400000000000003D fmpz: 0 !! exp: 6 MPZ: 0 addr:
7FE1D1919416 val: 3 val: 3 fmpz: 3 !! exp: 7 MPZ: 0 addr: 7FE1D1919417
val: 2 val: 2 fmpz: 2 !! exp: 8 MPZ: 0 addr: 7FE1D1919418 val: 1 val: 1
fmpz: 1 !!
9 1 2 3 2305843009213693952 0 0 3 2 1
length = 9
id = 1152447D0
exp: 0 MPZ: 0 addr: 7FE1D1919410 val: 1 val: 1 fmpz: 1 !! exp: 1 MPZ: 0
addr: 7FE1D1919411 val: 2 val: 2 fmpz: 2 !! exp: 2 MPZ: 0 addr:
7FE1D1919412 val: 3 val: 3 fmpz: 3 !! exp: 3 MPZ: 0 addr: 7FE1D1919413
val: 2305843009213693952 val: 2000000000000000 fmpz: 2305843009213693952
!! exp: 4 MPZ: 1 addr: 7FE1D1919414 val: 4611686018427387966 val:
400000000000003E fmpz: 0 !! exp: 5 MPZ: 1 addr: 7FE1D1919415 val:
4611686018427387965 val: 400000000000003D fmpz: 0 !! exp: 6 MPZ: 0 addr:
7FE1D1919416 val: 3 val: 3 fmpz: 3 !! exp: 7 MPZ: 0 addr: 7FE1D1919417
val: 2 val: 2 fmpz: 2 !! exp: 8 MPZ: 0 addr: 7FE1D1919418 val: 1 val: 1
fmpz: 1 !!
9 1 2 3 2305843009213693952 0 0 3 2 1
exp: 0 MPZ: 0 addr: 7FE1D1919410 val: 1 val: 1 fmpz: 1 !! exp: 1 MPZ: 0
addr: 7FE1D1919411 val: 2 val: 2 fmpz: 2 !! exp: 2 MPZ: 0 addr:
7FE1D1919412 val: 3 val: 3 fmpz: 3 !! exp: 3 MPZ: 0 addr: 7FE1D1919413
val: 2305843009213693952 val: 2000000000000000 fmpz: 2305843009213693952
!! exp: 4 MPZ: 1 addr: 7FE1D1919414 val: 4611686018427387966 val:
400000000000003E fmpz: 0 !! exp: 5 MPZ: 1 addr: 7FE1D1919415 val:
4611686018427387965 val: 400000000000003D fmpz: 0 !! exp: 6 MPZ: 0 addr:
7FE1D1919416 val: 3 val: 3 fmpz: 3 !! exp: 7 MPZ: 0 addr: 7FE1D1919417
val: 2 val: 2 fmpz: 2 !! exp: 8 MPZ: 0 addr: 7FE1D1919418 val: 1 val: 1
fmpz: 1 !!
x^8 + 2*x^7 + 3*x^6 + 2305843009213693952*x^3 + 3*x^2 + 2*x + 1
}}}
--
Ticket URL: <http://trac.sagemath.org/sage_trac/ticket/12173#comment:191>
Sage <http://www.sagemath.org>
Sage: Creating a Viable Open Source Alternative to Magma, Maple, Mathematica,
and MATLAB
--
You received this message because you are subscribed to the Google Groups
"sage-trac" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sage-trac?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.