Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package fplll for openSUSE:Factory checked in at 2023-01-06 17:05:40 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/fplll (Old) and /work/SRC/openSUSE:Factory/.fplll.new.1563 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "fplll" Fri Jan 6 17:05:40 2023 rev:13 rq:1056249 version:5.4.4 Changes: -------- --- /work/SRC/openSUSE:Factory/fplll/fplll.changes 2022-12-21 16:06:44.198585571 +0100 +++ /work/SRC/openSUSE:Factory/.fplll.new.1563/fplll.changes 2023-01-06 17:06:29.240495294 +0100 @@ -1,0 +2,6 @@ +Thu Jan 5 17:40:57 UTC 2023 - Jan Engelhardt <[email protected]> + +- Update to release 5.4.4 + * Make Babai test more robust for PPC + +------------------------------------------------------------------- Old: ---- fplll-5.4.3.tar.gz New: ---- fplll-5.4.4.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ fplll.spec ++++++ --- /var/tmp/diff_new_pack.nJchNG/_old 2023-01-06 17:06:30.320501358 +0100 +++ /var/tmp/diff_new_pack.nJchNG/_new 2023-01-06 17:06:30.324501381 +0100 @@ -1,7 +1,7 @@ # # spec file for package fplll # -# Copyright (c) 2022 SUSE LLC +# Copyright (c) 2023 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -17,8 +17,8 @@ Name: fplll -%define lname libfplll7 -Version: 5.4.3 +%define lname libfplll8 +Version: 5.4.4 Release: 0 Summary: Lenstra-Lovász Lattice Basis Reduction Algorithm Library License: LGPL-2.1-or-later @@ -60,7 +60,7 @@ Obsoletes: libfplll-devel < %version-%release Provides: libfplll-devel = %version-%release -%description -n fplll-devel +%description devel fplll contains several algorithms on lattices that rely on floating-point computations. This includes implementations of the floating-point LLL reduction algorithm, offering different @@ -72,7 +72,7 @@ applications that want to make use of libfplll. %prep -%setup -q +%autosetup %build %limit_build -m 1700 @@ -96,7 +96,7 @@ %files -n %lname %_libdir/libfplll.so.* -%files -n fplll-devel +%files devel %_includedir/fplll* %_libdir/libfplll.so %_libdir/pkgconfig/*.pc ++++++ fplll-5.4.3.tar.gz -> fplll-5.4.4.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fplll-5.4.3/README.md new/fplll-5.4.4/README.md --- old/fplll-5.4.3/README.md 2022-12-20 22:23:09.000000000 +0100 +++ new/fplll-5.4.4/README.md 2023-01-05 16:04:12.000000000 +0100 @@ -17,8 +17,8 @@ @unpublished{fplll, author = {The {FPLLL} development team}, - title = {{fplll}, a lattice reduction library, {Version}: 5.4.3}, - year = 2022, + title = {{fplll}, a lattice reduction library, {Version}: 5.4.4}, + year = 2023, note = {Available at \url{https://github.com/fplll/fplll}}, url = {https://github.com/fplll/fplll} } @@ -198,7 +198,7 @@ * `s` `d` `b` `b2` : generates a d x d matrix of a form similar to that is involved when trying to find rational approximations to reals with the same small denominator (see, e.g., [[LLL82](#LLL82)]): the first vector starts with a random integer of bit-length <=b2 and continues with d-1 independent integers of bit-lengths <=b; the i-th vector for i>1 is the i-th canonical unit vector scaled by a factor 2^b. * `u` `d` `b` : generates a d x d matrix whose entries are independent integers of bit-lengths <=b. * `n` `d` `b` `c` : generates an ntru-like matrix. If char is 'b', then it first samples an integer q of bit-length <=b, whereas if char is 'q', then it sets q to the provided value. Then it samples a uniform h in the ring Z_q[x]/(x^n-1). It finally returns the 2 x 2 block matrix [[I, Rot(h)], [0, q*I]], where each block is d x d, the first row of Rot(h) is the coefficient vector of h, and the i-th row of Rot(h) is the shift of the (i-1)-th (with last entry put back in first position), for all i>1. Warning: this does not produce a genuine ntru lattice with h a genuine public key (see [[HPS98](#HPS98)]). -* `N` `d` `b` `c` : as the previous option, except that the contructed matrix is [[q*I, 0], [Rot(h), I]]. +* `N` `d` `b` `c` : as the previous option, except that the constructed matrix is [[q*I, 0], [Rot(h), I]]. * `q` `d` `k` `b` `c` : generates a q-ary matrix. If char is 'b', then it first samples an integer q of bit-length <=b; if char is 'p', it does the same and updates q to the smallest (probabilistic) prime that is greater; if char is 'q', then it sets q to the provided value. It returns a 2 x 2 block matrix [[I, H], [0, q*I]], where H is (d-k) x k and uniformly random modulo q. These bases correspond to the SIS/LWE q-ary lattices (see [[MR09](#MR09)]). Goldstein-Mayer lattices correspond to k=1 and q prime (see [[GM03](#GM03)]). * `t` `d` `f` : generates a d x d lower-triangular matrix B with B_ii = 2^(d-i+1)^f for all i, and B_ij is uniform between -B_jj/2 and B_jj/2 for all j<i. * `T` `d` : also takes as input a d-dimensional vector vec read from a file. It generates a d x d lower-triangular matrix B with B_ii = vec[i] for all i and B_ij is uniform between -B_jj/2 and B_jj/2 for all j<i. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fplll-5.4.3/configure new/fplll-5.4.4/configure --- old/fplll-5.4.3/configure 2022-12-20 22:23:24.000000000 +0100 +++ new/fplll-5.4.4/configure 2023-01-05 16:04:29.000000000 +0100 @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.71 for fplll 5.4.3. +# Generated by GNU Autoconf 2.71 for fplll 5.4.4. # # # Copyright (C) 1992-1996, 1998-2017, 2020-2021 Free Software Foundation, @@ -618,8 +618,8 @@ # Identity of this package. PACKAGE_NAME='fplll' PACKAGE_TARNAME='fplll' -PACKAGE_VERSION='5.4.3' -PACKAGE_STRING='fplll 5.4.3' +PACKAGE_VERSION='5.4.4' +PACKAGE_STRING='fplll 5.4.4' PACKAGE_BUGREPORT='' PACKAGE_URL='' @@ -1402,7 +1402,7 @@ # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures fplll 5.4.3 to adapt to many kinds of systems. +\`configure' configures fplll 5.4.4 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1474,7 +1474,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of fplll 5.4.3:";; + short | recursive ) echo "Configuration of fplll 5.4.4:";; esac cat <<\_ACEOF @@ -1619,7 +1619,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -fplll configure 5.4.3 +fplll configure 5.4.4 generated by GNU Autoconf 2.71 Copyright (C) 2021 Free Software Foundation, Inc. @@ -2194,7 +2194,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by fplll $as_me 5.4.3, which was +It was created by fplll $as_me 5.4.4, which was generated by GNU Autoconf 2.71. Invocation command line was $ $0$ac_configure_args_raw @@ -3310,9 +3310,9 @@ # cf http://comments.gmane.org/gmane.comp.sysutils.autoconf.general/15737 # First extract pieces from the version number string -FPLLL_MAJOR_VERSION=`echo 5.4.3 | awk -F. '{print $1}'` -FPLLL_MINOR_VERSION=`echo 5.4.3 | awk -F. '{print $2}'` -FPLLL_MICRO_VERSION=`echo 5.4.3 | awk -F. '{print $3}'` +FPLLL_MAJOR_VERSION=`echo 5.4.4 | awk -F. '{print $1}'` +FPLLL_MINOR_VERSION=`echo 5.4.4 | awk -F. '{print $2}'` +FPLLL_MICRO_VERSION=`echo 5.4.4 | awk -F. '{print $3}'` FPLLL_VERSION=$FPLLL_MAJOR_VERSION.$FPLLL_MINOR_VERSION.$FPLLL_MICRO_VERSION$FPLLL_MICRO_VERSION_SUFFIX FPLLL_VERSION_NUMBER=`expr $FPLLL_MAJOR_VERSION \* 1000000 + $FPLLL_MINOR_VERSION \* 1000 + $FPLLL_MICRO_VERSION` @@ -3830,7 +3830,7 @@ # Define the identity of the package. PACKAGE='fplll' - VERSION='5.4.3' + VERSION='5.4.4' printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h @@ -13223,7 +13223,7 @@ FPLLL_LT_CURRENT=8 FPLLL_LT_REVISION=0 -FPLLL_LT_AGE=1 +FPLLL_LT_AGE=0 @@ -21162,7 +21162,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by fplll $as_me 5.4.3, which was +This file was extended by fplll $as_me 5.4.4, which was generated by GNU Autoconf 2.71. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -21230,7 +21230,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config='$ac_cs_config_escaped' ac_cs_version="\\ -fplll config.status 5.4.3 +fplll config.status 5.4.4 configured by $0, generated by GNU Autoconf 2.71, with options \\"\$ac_cs_config\\" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fplll-5.4.3/configure.ac new/fplll-5.4.4/configure.ac --- old/fplll-5.4.3/configure.ac 2022-12-20 22:23:09.000000000 +0100 +++ new/fplll-5.4.4/configure.ac 2023-01-05 16:04:12.000000000 +0100 @@ -2,7 +2,7 @@ # Process this file with autoconf to produce a configure script. AC_PREREQ([2.69]) -AC_INIT([fplll],[5.4.3]) +AC_INIT([fplll],[5.4.4]) AC_CONFIG_SRCDIR([fplll/fplll.cpp]) AM_MAINTAINER_MODE([enable]) AC_CANONICAL_TARGET @@ -42,7 +42,7 @@ FPLLL_LT_CURRENT=8 FPLLL_LT_REVISION=0 -FPLLL_LT_AGE=1 +FPLLL_LT_AGE=0 AC_SUBST(FPLLL_LT_CURRENT) AC_SUBST(FPLLL_LT_REVISION) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fplll-5.4.3/fplll/gso.h new/fplll-5.4.4/fplll/gso.h --- old/fplll-5.4.3/fplll/gso.h 2022-12-20 22:23:09.000000000 +0100 +++ new/fplll-5.4.4/fplll/gso.h 2023-01-05 16:04:12.000000000 +0100 @@ -230,7 +230,7 @@ * @param gso if true then input `v` is considered to be expressed wrt `B*` */ - void virtual babai(vector<ZT> &w, const vector<FT> &v, int start = 0, int dimension = 1, + void virtual babai(vector<ZT> &w, const vector<FT> &v, int start = 0, int dimension = -1, bool gso = false); private: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fplll-5.4.3/tests/test_babai.cpp new/fplll-5.4.4/tests/test_babai.cpp --- old/fplll-5.4.3/tests/test_babai.cpp 2022-12-20 22:23:09.000000000 +0100 +++ new/fplll-5.4.4/tests/test_babai.cpp 2023-01-05 16:04:12.000000000 +0100 @@ -16,6 +16,8 @@ #include "fplll/fplll.h" #include <vector> +#include <cfloat> // Needed for precision macros. + using namespace fplll; template <class ZT, class FT> @@ -68,8 +70,9 @@ } else { - std::cerr << "n:" << n << ", bits: " << bits << std::endl; - std::cerr << w << std::endl; + std::cerr << "n:" << n << ", bits: " << bits << ", shouldfail:" << shouldfail << std::endl; + std::cerr << "t:" << t << std::endl; + std::cerr << "w:" << w << std::endl; return 1; } } @@ -83,15 +86,39 @@ status += test_intrel<mpz_t, double>(10, 40); status += test_intrel<mpz_t, double>(10, 50); status += test_intrel<mpz_t, double>(10, 60, true); - status += test_intrel<mpz_t, long double>(10, 60); + #ifdef FPLLL_WITH_LONG_DOUBLE - status += test_intrel<mpz_t, long double>(10, 70, true); + // long double has various types of platform and compiler specific behaviour. + // This makes this test case platform specific. + // These cases are (at least): + // (1) Some platforms have sizeof(double) == sizeof(long double), because the C standard + // only requires long double to be at least as big as double. This means that + // in some situations long double may simply alias double (e.g MSVC). + // (2) Some platforms make long double an alias for IEEE quadruple precision types. This + // may mean that long double is actually rather accurate (more than, say, 60 bits of + // precision). + // (3) On x86-64, some compilers may treat long double as the 80-bit extended precision + // x87 type. This means that there's more precision than a regular double. In this situation, + // the compiler may also make sizeof(long double) == 16, meaning that we cannot detect this + // easily based on the size of long double alone. + // + // To circumvent these issues, we check how many elements are in the mantissa of long double, + // using LDBL_MANT_DIG. Specifically, if LDBL_MANT_DIG == DBL_MANT_DIG, then we are in case (1). + // If they are different, then if LDBL_MANT_DIG < 70 then the second test should also fail. + status += test_intrel<mpz_t, long double>(10, 60, LDBL_MANT_DIG == DBL_MANT_DIG); + status += test_intrel<mpz_t, long double>(10, 70, LDBL_MANT_DIG < 70); #endif #ifdef FPLLL_WITH_QD + // QD needs to have the round-to-double flag set on x86 systems. This function + // does nothing on non-x86 machines (see the readme for the QD library for more). + // This is also already done in the wrapper. + unsigned old_cw; + fpu_fix_start(&old_cw); status += test_intrel<mpz_t, dd_real>(10, 110); status += test_intrel<mpz_t, dd_real>(10, 120, true); // status += test_intrel<mpz_t, qd_real>(10, 100); // status += test_intrel<mpz_t, qd_real>(10, 230, true); + fpu_fix_end(&old_cw); #endif FP_NR<mpfr_t>::set_prec(100); status += test_intrel<mpz_t, mpfr_t>(10, 100);
