|
From: Bill H. <goo...@go...> - 2009-02-11 19:21:47
|
Hi all, I've just release FLINT 1.1.1. This is a service release to fix some SERIOUS issues in FLINT 1.1.0. I strongly recommend upgrading! The issues fixed were as follows: * fmpz_poly_gcd had a serious bug in it (which was actually in the function fmpz_poly_gcd_heuristic) which caused it to return the ****WRONG ANSWER**** in certain cases, specifically when aliasing one of the inputs with the output and where the heuristic gcd was not sufficient to compute the gcd. In this case the heuristic gcd would corrupt the output (which is aliased with an input) and pass the corrupted inputs to another gcd algorithm, which would then get things wrong. This occurs rarely, as the heuristic gcd cannot compute the gcd in rare cases. I was unable to get it to return a wrong answer except in the case where the inputs both had a Gaussian content whose gcd was non-trivial. However, it may theoretically occur in other cases. * fmpz_poly_gcd_subresultant needed a special case to deal with length 1 polynomials. Actually this probably did not cause a bug, but was fixed anyway as a precaution (and for performance reasons). * _fmpz_poly_scalar_mul_fmpz could cause a segmentation fault. This was due to the fact that GMP, when multiplying integers of n1 and n2 limbs, automatically takes n1 + n2 limbs to write the result, even if they are not all needed. I changed the interface of the precached FFT multiplication some time ago to use this same semantics, but did not adjust the scalar multiplication function accordingly. * test__fmpz_poly_scalar_div_fmpz did not allocate sufficient space in the output and so could segfault in very rare cases. * test_fmpz_poly_scalar_div_fmpz did not allocate sufficient space in the output and so could segfault in very rare cases. * test_fmpz_poly_scalar_div_mpz did not allocate sufficient space in the output and so could segfault in very rare cases. Bill. |