Package: linbox / 1.7.1-2

Metadata

Package Version Patches format
linbox 1.7.1-2 3.0 (quilt)

Patch series

view the series file
Patch File delta Description
example.patch | (download)

examples/Readme-make.in | 2 1 + 1 - 0 !
1 file changed, 1 insertion(+), 1 deletion(-)

---
soname.patch | (download)

linbox/Makefile.am | 2 2 + 0 - 0 !
1 file changed, 2 insertions(+)

---
fix doc path.patch | (download)

doc/mainpage.doxy | 8 5 + 3 - 0 !
1 file changed, 5 insertions(+), 3 deletions(-)

---
fix RR RecCounter.patch | (download)

linbox/algorithms/rational-reconstruction-base.h | 6 4 + 2 - 0 !
1 file changed, 4 insertions(+), 2 deletions(-)

 set reccounter=0 if rbound_==0 to avoid cast of -inf.

https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=733917

Test test-det on i386 or amd64 successfully pass after a few iterations, on
mips this test has an enormous number of iterations and build of the linbox
package on buildd breaks after 300 minutes of inactivity.

The reason for this behavior is that in:

  linbox/algorithms/rational-reconstruction-base.h

the way to calculate RecCounter is:

  RecCounter = (size_t)((double)log((double)rbound_)/log(2.));//2^RecCounter < rbound_ <=2^(RecCounter+1)

When rbound_ is equal to zero the result of log function is -inf (double[8
bytes]).

When we cast -inf to size_t (unsigned int[4 bytes]) on i386 and amd64, the
result is zero.

In the same situation on mips architecture, cast is done through TRUNC.W.D
instruction.

For this instruction, if the source value is Infinity, NaN, or rounds to an
integer outside the range -2^31 to 2^31-1, the result cannot be represented
correctly and an IEEE Invalid Operation condition exists. The result depends on
the FP exception model currently active and the default result is 2^31-1
(2147483647).


ntl zz px.patch | (download)

linbox/ring/ntl/ntl-lzz_px.h | 4 1 + 3 - 0 !
1 file changed, 1 insertion(+), 3 deletions(-)

 restrict ntl_zz_px::init to coeff vector
 The previous template allowed initializing a polynomial from any
 vector type, but on some platforms (e.g., i386) this caused ambiguous
 conversions when E is Givaro::Integer, because NTL::SetCoeff expects
 a long. This patch removes the generic template overload and keeps
 the overload specifically for std::vector<Coeff>, avoiding type
 conversion errors.