Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package mpfrcx for openSUSE:Factory checked in at 2022-04-21 15:43:30 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/mpfrcx (Old) and /work/SRC/openSUSE:Factory/.mpfrcx.new.1538 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "mpfrcx" Thu Apr 21 15:43:30 2022 rev:3 rq:971620 version:0.6.3 Changes: -------- --- /work/SRC/openSUSE:Factory/mpfrcx/mpfrcx.changes 2021-05-08 22:08:37.645428248 +0200 +++ /work/SRC/openSUSE:Factory/.mpfrcx.new.1538/mpfrcx.changes 2022-04-21 15:49:26.176366076 +0200 @@ -1,0 +2,11 @@ +Thu Apr 21 10:48:09 UTC 2022 - Jan Engelhardt <jeng...@inai.de> + +- Update to release 0.6.3 + * Correct a bug that prevented the reconstruction of real towers + when no real conjugate is present. + * Correct a memory leak in mpcx_tower_clear. + * Correct a bug that prevented the reconstruction of real + towers when a supposedly complex conjugate pair of roots has + become the same real root. + +------------------------------------------------------------------- Old: ---- mpfrcx-0.6.1.tar.gz mpfrcx-0.6.1.tar.gz.asc New: ---- mpfrcx-0.6.3.tar.gz mpfrcx-0.6.3.tar.gz.asc ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ mpfrcx.spec ++++++ --- /var/tmp/diff_new_pack.cfNM8t/_old 2022-04-21 15:49:26.584366512 +0200 +++ /var/tmp/diff_new_pack.cfNM8t/_new 2022-04-21 15:49:26.588366516 +0200 @@ -1,7 +1,7 @@ # # spec file for package mpfrcx # -# Copyright (c) 2021 SUSE LLC +# Copyright (c) 2022 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -18,7 +18,7 @@ Name: mpfrcx %define lname libmpfrcx1 -Version: 0.6.1 +Version: 0.6.3 Release: 0 Summary: Multi-precision floating-point arithmetic of univariate polynomials License: LGPL-3.0-or-later ++++++ mpfrcx-0.6.1.tar.gz -> mpfrcx-0.6.3.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mpfrcx-0.6.1/Makefile.in new/mpfrcx-0.6.3/Makefile.in --- old/mpfrcx-0.6.1/Makefile.in 2021-04-29 12:18:12.000000000 +0200 +++ new/mpfrcx-0.6.3/Makefile.in 2021-09-10 15:47:49.000000000 +0200 @@ -202,8 +202,8 @@ $(top_srcdir)/build-aux/missing AUTHORS COPYING.LESSER \ ChangeLog INSTALL NEWS README build-aux/ar-lib \ build-aux/compile build-aux/config.guess build-aux/config.sub \ - build-aux/depcomp build-aux/install-sh build-aux/ltmain.sh \ - build-aux/mdate-sh build-aux/missing build-aux/texinfo.tex + build-aux/install-sh build-aux/ltmain.sh build-aux/mdate-sh \ + build-aux/missing build-aux/texinfo.tex DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) distdir = $(PACKAGE)-$(VERSION) top_distdir = $(distdir) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mpfrcx-0.6.1/NEWS new/mpfrcx-0.6.3/NEWS --- old/mpfrcx-0.6.1/NEWS 2021-04-26 17:21:19.000000000 +0200 +++ new/mpfrcx-0.6.3/NEWS 2021-07-07 17:27:19.000000000 +0200 @@ -1,3 +1,15 @@ +Changes in version 0.6.3: + - Bugs + * Correct a bug that prevented the reconstruction of real towers + when a supposedly complex conjugate pair of roots has become + the same real root. + +Changes in version 0.6.2: + - Bugs + * Correct a bug that prevented the reconstruction of real towers + when no real conjugate is present. + * Correct a memory leak in mpcx_tower_clear. + Changes in version 0.6.1: - Bugs * In mpfrcx_tower_decomposition, correct the check whether a relative diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mpfrcx-0.6.1/README new/mpfrcx-0.6.3/README --- old/mpfrcx-0.6.1/README 2020-08-18 16:03:49.000000000 +0200 +++ new/mpfrcx-0.6.3/README 2021-06-21 16:23:19.000000000 +0200 @@ -18,8 +18,8 @@ 1. In the directory of the MPFRCX archive, type - tar xzf mpfrcx-0.6.1.tar.gz - cd mpfrcx-0.6.1 + tar xzf mpfrcx-0.6.3.tar.gz + cd mpfrcx-0.6.3 ./configure make diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mpfrcx-0.6.1/build-aux/config.guess new/mpfrcx-0.6.3/build-aux/config.guess --- old/mpfrcx-0.6.1/build-aux/config.guess 2021-04-29 12:09:03.000000000 +0200 +++ new/mpfrcx-0.6.3/build-aux/config.guess 2021-09-10 15:52:20.000000000 +0200 @@ -1,4 +1,4 @@ -#!/gnu/store/pwcp239kjf7lnj5i4lkdzcfcxwcfyk72-bash-minimal-5.0.16/bin/sh +#!/bin/sh # Attempt to guess a canonical system name. # Copyright 1992-2021 Free Software Foundation, Inc. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mpfrcx-0.6.1/build-aux/config.sub new/mpfrcx-0.6.3/build-aux/config.sub --- old/mpfrcx-0.6.1/build-aux/config.sub 2021-04-29 12:09:03.000000000 +0200 +++ new/mpfrcx-0.6.3/build-aux/config.sub 2021-09-10 15:52:26.000000000 +0200 @@ -1,4 +1,4 @@ -#!/gnu/store/pwcp239kjf7lnj5i4lkdzcfcxwcfyk72-bash-minimal-5.0.16/bin/sh +#!/bin/sh # Configuration validation subroutine script. # Copyright 1992-2021 Free Software Foundation, Inc. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mpfrcx-0.6.1/build-aux/install-sh new/mpfrcx-0.6.3/build-aux/install-sh --- old/mpfrcx-0.6.1/build-aux/install-sh 2021-04-29 12:09:03.000000000 +0200 +++ new/mpfrcx-0.6.3/build-aux/install-sh 2021-09-10 15:52:11.000000000 +0200 @@ -1,4 +1,4 @@ -#!/gnu/store/pwcp239kjf7lnj5i4lkdzcfcxwcfyk72-bash-minimal-5.0.16/bin/sh +#!/bin/sh # install - install a program, script, or datafile scriptversion=2020-11-14.01; # UTC diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mpfrcx-0.6.1/configure new/mpfrcx-0.6.3/configure --- old/mpfrcx-0.6.1/configure 2021-04-29 12:18:12.000000000 +0200 +++ new/mpfrcx-0.6.3/configure 2021-09-10 15:47:49.000000000 +0200 @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.71 for mpfrcx 0.6.1. +# Generated by GNU Autoconf 2.71 for mpfrcx 0.6.3. # # Report bugs to <andreas.e...@inria.fr>. # @@ -621,8 +621,8 @@ # Identity of this package. PACKAGE_NAME='mpfrcx' PACKAGE_TARNAME='mpfrcx' -PACKAGE_VERSION='0.6.1' -PACKAGE_STRING='mpfrcx 0.6.1' +PACKAGE_VERSION='0.6.3' +PACKAGE_STRING='mpfrcx 0.6.3' PACKAGE_BUGREPORT='andreas.e...@inria.fr' PACKAGE_URL='' @@ -1357,7 +1357,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 mpfrcx 0.6.1 to adapt to many kinds of systems. +\`configure' configures mpfrcx 0.6.3 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1428,7 +1428,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of mpfrcx 0.6.1:";; + short | recursive ) echo "Configuration of mpfrcx 0.6.3:";; esac cat <<\_ACEOF @@ -1546,7 +1546,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -mpfrcx configure 0.6.1 +mpfrcx configure 0.6.3 generated by GNU Autoconf 2.71 Copyright (C) 2021 Free Software Foundation, Inc. @@ -1807,7 +1807,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by mpfrcx $as_me 0.6.1, which was +It was created by mpfrcx $as_me 0.6.3, which was generated by GNU Autoconf 2.71. Invocation command line was $ $0$ac_configure_args_raw @@ -3086,7 +3086,7 @@ # Define the identity of the package. PACKAGE='mpfrcx' - VERSION='0.6.1' + VERSION='0.6.3' printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h @@ -14229,85 +14229,6 @@ - flag=`echo "-Werror" | $SED 'y% .=/+-(){}<>:*,%_______________%'` - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C compiler accepts the -Werror flag" >&5 -printf %s "checking whether the C compiler accepts the -Werror flag... " >&6; } -if eval test \${ax_cv_c_check_flag_$flag+y} -then : - printf %s "(cached) " >&6 -else $as_nop - - - ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - - save_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS -Werror" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -int -main (void) -{ - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - - eval "ax_cv_c_check_flag_$flag=yes" - -else $as_nop - - eval "ax_cv_c_check_flag_$flag=no" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - - CFLAGS="$save_CFLAGS" - - ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - - -fi -eval ac_res=\$ax_cv_c_check_flag_$flag - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -printf "%s\n" "$ac_res" >&6; } - - if eval "test \"`echo '$ax_cv_c_check_flag_'$flag`\" = yes" -then : - - : - CFLAGS="$CFLAGS -Werror" - -else $as_nop - - : - - -fi - - - - - - - - flag=`echo "-Wdeclaration-after-statement" | $SED 'y% .=/+-(){}<>:*,%_______________%'` { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C compiler accepts the -Wdeclaration-after-statement flag" >&5 @@ -15774,7 +15695,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by mpfrcx $as_me 0.6.1, which was +This file was extended by mpfrcx $as_me 0.6.3, which was generated by GNU Autoconf 2.71. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -15842,7 +15763,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config='$ac_cs_config_escaped' ac_cs_version="\\ -mpfrcx config.status 0.6.1 +mpfrcx config.status 0.6.3 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/mpfrcx-0.6.1/configure.ac new/mpfrcx-0.6.3/configure.ac --- old/mpfrcx-0.6.1/configure.ac 2021-04-29 12:17:11.000000000 +0200 +++ new/mpfrcx-0.6.3/configure.ac 2021-09-10 15:44:33.000000000 +0200 @@ -23,12 +23,12 @@ AC_PREREQ(2.61) -AC_INIT(mpfrcx, 0.6.1, andreas.e...@inria.fr) +AC_INIT(mpfrcx, 0.6.3, andreas.e...@inria.fr) AC_CONFIG_SRCDIR([src/mpfrcx-impl.h]) AC_CONFIG_AUX_DIR([build-aux]) AC_CONFIG_HEADER([config.h]) -AM_INIT_AUTOMAKE([1.9 -Wall -Werror]) +AM_INIT_AUTOMAKE AM_MAINTAINER_MODE AM_PROG_AR diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mpfrcx-0.6.1/doc/mpfrcx.info new/mpfrcx-0.6.3/doc/mpfrcx.info --- old/mpfrcx-0.6.1/doc/mpfrcx.info 2021-04-29 12:13:02.000000000 +0200 +++ new/mpfrcx-0.6.3/doc/mpfrcx.info 2021-09-10 15:49:40.000000000 +0200 @@ -2,7 +2,7 @@ This manual is for MPFRCX, a library for the arithmetic of polynomials with multiple precision real or complex floating point coefficients, -version 0.6.1 of April 2021. +version 0.6.3 of June 2021. Copyright ?? 2007, 2008, 2009, 2010, 2011, 2012, 2017, 2018, 2020, 2021 Andreas Enge @@ -23,7 +23,7 @@ ****** This manual documents how to install and use the Multiple Precision Real -and Complex Polynomial Library, version 0.6.1 as of April 2021. +and Complex Polynomial Library, version 0.6.3 as of June 2021. * Menu: @@ -81,9 +81,9 @@ Here are the steps needed to install the library on Unix systems: - 1. ???tar xzf mpfrcx-0.6.1.tar.gz??? + 1. ???tar xzf mpfrcx-0.6.3.tar.gz??? - 2. ???cd mpfrcx-0.6.1??? + 2. ???cd mpfrcx-0.6.3??? 3. ???./configure??? @@ -1685,28 +1685,28 @@ Tag Table: -Node: Top798 -Node: Copying1534 -Node: Introduction to MPFRCX2210 -Node: Installing MPFRCX2567 -Node: Reporting Bugs6008 -Node: MPFRCX Basics7082 -Node: Functions10230 -Node: Initialisation Functions10913 -Node: Assignment Functions12383 -Node: Simultaneous Init & Assign13484 -Node: Access Functions13916 -Node: Comparison and Miscellaneous Functions15938 -Node: I/O Functions17665 -Node: Basic Polynomial Arithmetic18813 -Node: Higher Level Functions21198 -Node: Tree Based Functions22126 -Node: Functions for Galois Field Towers33462 -Node: Contributors42733 -Node: References42982 -Node: Concept Index44142 -Node: Function Index46636 -Node: GNU Free Documentation License59981 +Node: Top797 +Node: Copying1532 +Node: Introduction to MPFRCX2208 +Node: Installing MPFRCX2565 +Node: Reporting Bugs6006 +Node: MPFRCX Basics7080 +Node: Functions10228 +Node: Initialisation Functions10911 +Node: Assignment Functions12381 +Node: Simultaneous Init & Assign13482 +Node: Access Functions13914 +Node: Comparison and Miscellaneous Functions15936 +Node: I/O Functions17663 +Node: Basic Polynomial Arithmetic18811 +Node: Higher Level Functions21196 +Node: Tree Based Functions22124 +Node: Functions for Galois Field Towers33460 +Node: Contributors42731 +Node: References42980 +Node: Concept Index44140 +Node: Function Index46634 +Node: GNU Free Documentation License59979 End Tag Table diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mpfrcx-0.6.1/doc/stamp-vti new/mpfrcx-0.6.3/doc/stamp-vti --- old/mpfrcx-0.6.1/doc/stamp-vti 2021-04-29 12:26:23.000000000 +0200 +++ new/mpfrcx-0.6.3/doc/stamp-vti 2021-09-10 15:49:39.000000000 +0200 @@ -1,4 +1,4 @@ -@set UPDATED 29 April 2021 -@set UPDATED-MONTH April 2021 -@set EDITION 0.6.1 -@set VERSION 0.6.1 +@set UPDATED 21 June 2021 +@set UPDATED-MONTH June 2021 +@set EDITION 0.6.3 +@set VERSION 0.6.3 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mpfrcx-0.6.1/doc/version.texi new/mpfrcx-0.6.3/doc/version.texi --- old/mpfrcx-0.6.1/doc/version.texi 2021-04-29 12:13:02.000000000 +0200 +++ new/mpfrcx-0.6.3/doc/version.texi 2021-09-10 15:49:39.000000000 +0200 @@ -1,4 +1,4 @@ -@set UPDATED 29 April 2021 -@set UPDATED-MONTH April 2021 -@set EDITION 0.6.1 -@set VERSION 0.6.1 +@set UPDATED 21 June 2021 +@set UPDATED-MONTH June 2021 +@set EDITION 0.6.3 +@set VERSION 0.6.3 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mpfrcx-0.6.1/m4/mpfrcx.m4 new/mpfrcx-0.6.3/m4/mpfrcx.m4 --- old/mpfrcx-0.6.1/m4/mpfrcx.m4 2017-07-10 17:53:28.000000000 +0200 +++ new/mpfrcx-0.6.3/m4/mpfrcx.m4 2021-04-29 13:11:30.000000000 +0200 @@ -38,7 +38,6 @@ MPC_C_CHECK_FLAG(-Wno-long-long) MPC_C_CHECK_FLAG(-Wall) MPC_C_CHECK_FLAG(-Wextra) - MPC_C_CHECK_FLAG(-Werror) MPC_C_CHECK_FLAG(-Wdeclaration-after-statement) MPC_C_CHECK_FLAG(-Wshadow) MPC_C_CHECK_FLAG(-Wstrict-prototypes) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mpfrcx-0.6.1/src/Makefile.am new/mpfrcx-0.6.3/src/Makefile.am --- old/mpfrcx-0.6.1/src/Makefile.am 2021-04-29 12:08:46.000000000 +0200 +++ new/mpfrcx-0.6.3/src/Makefile.am 2021-09-10 15:46:15.000000000 +0200 @@ -1,6 +1,6 @@ ## src/Makefile.am -- Process this file with automake to produce Makefile.in lib_LTLIBRARIES = libmpfrcx.la -libmpfrcx_la_LDFLAGS = -version-info 3:1:2 +libmpfrcx_la_LDFLAGS = -version-info 3:3:2 F_COPYSOURCES = \ f_init.c f_clear.c f_realloc.c f_set.c f_init_set.c f_mv.c f_swap.c \ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mpfrcx-0.6.1/src/Makefile.in new/mpfrcx-0.6.3/src/Makefile.in --- old/mpfrcx-0.6.1/src/Makefile.in 2021-04-29 12:18:12.000000000 +0200 +++ new/mpfrcx-0.6.3/src/Makefile.in 2021-09-10 15:47:49.000000000 +0200 @@ -367,7 +367,7 @@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ lib_LTLIBRARIES = libmpfrcx.la -libmpfrcx_la_LDFLAGS = -version-info 3:1:2 +libmpfrcx_la_LDFLAGS = -version-info 3:3:2 F_COPYSOURCES = \ f_init.c f_clear.c f_realloc.c f_set.c f_init_set.c f_mv.c f_swap.c \ f_set_prec.c f_set_deg.c f_set_coeff.c f_get_coeff.c \ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mpfrcx-0.6.1/src/c_tower.c new/mpfrcx-0.6.3/src/c_tower.c --- old/mpfrcx-0.6.1/src/c_tower.c 2021-04-26 17:21:19.000000000 +0200 +++ new/mpfrcx-0.6.3/src/c_tower.c 2021-05-07 18:42:46.000000000 +0200 @@ -105,7 +105,7 @@ of their bits; since in the algorithms we have a large choice of generators, it is better to err by declaring distinct numbers as equal than the other way around. */ - if (mpc_coinciding_bits (embeddings [0], embeddings [1]) > min_prec) + if (mpc_coinciding_bits (embeddings [0], embeddings [i]) > min_prec) return (0); return (1); @@ -154,6 +154,7 @@ mpcx_clear (twr->W [i][j]); free (twr->W [i]); } + mpcx_clear (twr->W [0][0]); free (twr->W [0]); free (twr->W); free (twr->d); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mpfrcx-0.6.1/src/f_tower.c new/mpfrcx-0.6.3/src/f_tower.c --- old/mpfrcx-0.6.1/src/f_tower.c 2021-04-26 17:21:19.000000000 +0200 +++ new/mpfrcx-0.6.3/src/f_tower.c 2021-07-07 17:25:43.000000000 +0200 @@ -26,40 +26,46 @@ #include "mpfrcx-impl.h" -static int mpfrcx_is_generator (mpc_t *roots, int *conjugates, int n); +static int mpfrcx_is_galois_generator (mpc_t *embeddings, int *conjugates, + int n); static void mpfrcx_tower_decomposition_rec (int levels, int *d, mpfrx_t **W, mpfrx_ptr V, mpc_t *roots, int *conjugates); /**************************************************************************/ -static int mpfrcx_is_generator (mpc_t *roots, int *conjugates, int n) - /* Given in roots the n complex embeddings of an algebraic number in a - real subfield of a ray class field of an imaginary-quadratic number - field, the function returns 1 if the number is (modulo rounding +static int mpfrcx_is_galois_generator (mpc_t *embeddings, int *conjugates, + int n) + /* Given the n complex embeddings of a real algebraic number in a Galois + number field, the function returns 1 if the number is (modulo rounding errors) a generator of the field and 0 otherwise. The meaning of conjugates is as usual to keep track of real and pairs of complex - roots. In fact the implementation only uses the real roots. */ + roots. + The implementation is copied over from mpcx_is_galois_generator + in c_tower.c; but we must make sure to consider only roots that + have been set following conjugates. + Additionally, it may happen that two embeddings marked as a complex + conjugate pair have in fact become the same real number; we consider + that this is the case when the imaginary part is sufficiently small + compared to the real part. */ { - int i, j; + int i; mpfr_prec_t prec, min_prec; - /* Look for the first real embedding. */ - for (i = 0; conjugates [i] != i; i++); - - /* Check if there is another real embedding with the same value. */ - prec = mpc_get_prec (roots [0]); + prec = mpc_get_prec (embeddings [0]); min_prec = prec / 2; - for (j = i+1; j < n; j++) - /* We consider two numbers as equal if they coincide in at least half - of their bits; since in the algorithms we have a large choice of - generators, it is better to err by declaring distinct numbers as - equal than the other way around. */ - if (conjugates [j] == j - && mpfr_coinciding_bits (mpc_realref (roots [i]), - mpc_realref (roots [j])) > min_prec) - return (0); - return (1); + for (i = 1; i < n; i++) + if (conjugates [i] >= i && + mpc_coinciding_bits (embeddings [0], embeddings [i]) > min_prec) + return 0; + + for (i = 0; i < n; i++) + if (conjugates [i] > i && + mpfr_get_exp (mpc_realref (embeddings [i])) + - mpfr_get_exp (mpc_imagref (embeddings [i])) > min_prec) + return 0; + + return 1; } /**************************************************************************/ @@ -107,6 +113,7 @@ mpfrx_clear (twr->W [i][j]); free (twr->W [i]); } + mpfrx_clear (twr->W [0][0]); free (twr->W [0]); free (twr->W); free (twr->d); @@ -190,7 +197,7 @@ for (i = 0; i < n; i++) if (conjugates [i] >= i) mpc_set (roots [i], mpcx_get_coeff (U [i], j), MPC_RNDNN); - if (mpfrcx_is_generator (roots, conjugates, n)) + if (mpfrcx_is_galois_generator (roots, conjugates, n)) found = 1; else j--; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mpfrcx-0.6.1/src/get_version.c new/mpfrcx-0.6.3/src/get_version.c --- old/mpfrcx-0.6.1/src/get_version.c 2021-04-29 12:26:01.000000000 +0200 +++ new/mpfrcx-0.6.3/src/get_version.c 2021-09-10 15:44:59.000000000 +0200 @@ -26,5 +26,5 @@ #include "mpfrcx-impl.h" const char * mpfrcx_get_version (void) { - return "0.6.1"; + return "0.6.3"; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mpfrcx-0.6.1/src/mpfrcx.h new/mpfrcx-0.6.3/src/mpfrcx.h --- old/mpfrcx-0.6.1/src/mpfrcx.h 2021-04-29 12:24:33.000000000 +0200 +++ new/mpfrcx-0.6.3/src/mpfrcx.h 2021-09-10 15:46:27.000000000 +0200 @@ -38,8 +38,8 @@ #define MPFRCX_VERSION_MAJOR 0 #define MPFRCX_VERSION_MINOR 6 -#define MPFRCX_VERSION_PATCHLEVEL 1 -#define MPFRCX_VERSION_STRING "0.6.1" +#define MPFRCX_VERSION_PATCHLEVEL 3 +#define MPFRCX_VERSION_STRING "0.6.3" typedef struct { int size;