Hello community, here is the log from the commit of package libsemigroups for openSUSE:Factory checked in at 2020-10-05 19:36:50 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/libsemigroups (Old) and /work/SRC/openSUSE:Factory/.libsemigroups.new.4249 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libsemigroups" Mon Oct 5 19:36:50 2020 rev:3 rq:839169 version:1.3.2 Changes: -------- --- /work/SRC/openSUSE:Factory/libsemigroups/libsemigroups.changes 2020-09-25 16:34:06.316027294 +0200 +++ /work/SRC/openSUSE:Factory/.libsemigroups.new.4249/libsemigroups.changes 2020-10-05 19:36:50.593418133 +0200 @@ -1,0 +2,9 @@ +Fri Oct 2 13:58:11 UTC 2020 - Jan Engelhardt <[email protected]> + +- Update to release 1.3.2 + * Fixed: It was possible to create invalid `PBR` objects, which + caused some incorrect values to be returned by + `FroidurePin<PBR>` instances. The `to_string` implementation + for `PBR` also did not work properly in all cases. + +------------------------------------------------------------------- Old: ---- libsemigroups-1.3.1.tar.gz New: ---- libsemigroups-1.3.2.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ libsemigroups.spec ++++++ --- /var/tmp/diff_new_pack.D0q063/_old 2020-10-05 19:36:51.121418649 +0200 +++ /var/tmp/diff_new_pack.D0q063/_new 2020-10-05 19:36:51.125418652 +0200 @@ -18,7 +18,7 @@ Name: libsemigroups %define lname libsemigroups1 -Version: 1.3.1 +Version: 1.3.2 Release: 0 Summary: Library with algorithms for computing finite and finitely presented semigroups License: GPL-3.0-or-later ++++++ libsemigroups-1.3.1.tar.gz -> libsemigroups-1.3.2.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libsemigroups-1.3.1/.VERSION new/libsemigroups-1.3.2/.VERSION --- old/libsemigroups-1.3.1/.VERSION 2020-08-28 18:59:55.423653684 +0200 +++ new/libsemigroups-1.3.2/.VERSION 2020-10-02 15:54:46.336688260 +0200 @@ -1 +1 @@ -1.3.1 +1.3.2 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libsemigroups-1.3.1/Makefile.am new/libsemigroups-1.3.2/Makefile.am --- old/libsemigroups-1.3.1/Makefile.am 2020-08-28 16:26:14.441973842 +0200 +++ new/libsemigroups-1.3.2/Makefile.am 2020-10-02 14:24:21.277853546 +0200 @@ -8,8 +8,11 @@ AM_CXXFLAGS += $(WARNING_CXXFLAGS) AM_CXXFLAGS += $(FMT_CFLAGS) AM_CXXFLAGS += $(EIGEN3_CFLAGS) +if LIBSEMIGROUPS_HPCOMBI_ENABLED +AM_CXXFLAGS += $(HPCOMBI_CXXFLAGS) +endif -AM_LDFLAGS = -no-undefined -lpthread +AM_LDFLAGS = -no-undefined -lpthread $(FMT_LIBS) if LIBSEMIGROUPS_DEBUG AM_CPPFLAGS = -DDEBUG @@ -25,7 +28,7 @@ AM_CPPFLAGS += $(CODE_COVERAGE_CPPFLAGS) AM_CXXFLAGS += $(CODE_COVERAGE_CXXFLAGS) -if LIBSEMIGROUPS_FMT_ENABLED +if LIBSEMIGROUPS_WITH_INTERNAL_FMT AM_CPPFLAGS += -DFMT_HEADER_ONLY endif @@ -119,7 +122,7 @@ hpcombifallbackinclude_HEADERS += extern/HPCombi/include/fallback/seq.hpp endif ## LIBSEMIGROUPS_HPCOMBI_ENABLED -if LIBSEMIGROUPS_FMT_ENABLED +if LIBSEMIGROUPS_WITH_INTERNAL_FMT fmtincludedir = $(includedir)/libsemigroups/fmt fmtinclude_HEADERS = extern/fmt-5.3.0/include/fmt/chrono.h fmtinclude_HEADERS += extern/fmt-5.3.0/include/fmt/color.h diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libsemigroups-1.3.1/Makefile.in new/libsemigroups-1.3.2/Makefile.in --- old/libsemigroups-1.3.1/Makefile.in 2020-08-28 18:59:37.251103677 +0200 +++ new/libsemigroups-1.3.2/Makefile.in 2020-10-02 15:54:29.114608831 +0200 @@ -94,9 +94,10 @@ POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ -@LIBSEMIGROUPS_DEBUG_TRUE@am__append_1 = -g3 -O0 -fno-omit-frame-pointer -@HPCOMBI_CONSTEXPR_FUN_ARGS_TRUE@am__append_2 = -DHPCOMBI_CONSTEXPR_FUN_ARGS -@LIBSEMIGROUPS_FMT_ENABLED_TRUE@am__append_3 = -DFMT_HEADER_ONLY +@LIBSEMIGROUPS_HPCOMBI_ENABLED_TRUE@am__append_1 = $(HPCOMBI_CXXFLAGS) +@LIBSEMIGROUPS_DEBUG_TRUE@am__append_2 = -g3 -O0 -fno-omit-frame-pointer +@HPCOMBI_CONSTEXPR_FUN_ARGS_TRUE@am__append_3 = -DHPCOMBI_CONSTEXPR_FUN_ARGS +@LIBSEMIGROUPS_WITH_INTERNAL_FMT_TRUE@am__append_4 = -DFMT_HEADER_ONLY check_PROGRAMS = test_all$(EXEEXT) EXTRA_PROGRAMS = test_action$(EXEEXT) test_bitset$(EXEEXT) \ test_blocks$(EXEEXT) test_bmat8$(EXEEXT) \ @@ -1356,6 +1357,7 @@ GENHTML = @GENHTML@ GREP = @GREP@ HAVE_CXX11 = @HAVE_CXX11@ +HPCOMBI_CXXFLAGS = @HPCOMBI_CXXFLAGS@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ @@ -1459,15 +1461,15 @@ top_srcdir = @top_srcdir@ AM_CXXFLAGS = -I$(abs_top_srcdir)/include -I$(abs_top_srcdir)/extern \ -std=gnu++11 -O3 -Wall -Wextra $(WARNING_CXXFLAGS) \ - $(FMT_CFLAGS) $(EIGEN3_CFLAGS) $(am__append_1) \ + $(FMT_CFLAGS) $(EIGEN3_CFLAGS) $(am__append_1) $(am__append_2) \ $(CODE_COVERAGE_CXXFLAGS) -AM_LDFLAGS = -no-undefined -lpthread -@LIBSEMIGROUPS_DEBUG_FALSE@AM_CPPFLAGS = -DNDEBUG $(am__append_2) \ +AM_LDFLAGS = -no-undefined -lpthread $(FMT_LIBS) +@LIBSEMIGROUPS_DEBUG_FALSE@AM_CPPFLAGS = -DNDEBUG $(am__append_3) \ @LIBSEMIGROUPS_DEBUG_FALSE@ $(CODE_COVERAGE_CPPFLAGS) \ -@LIBSEMIGROUPS_DEBUG_FALSE@ $(am__append_3) -@LIBSEMIGROUPS_DEBUG_TRUE@AM_CPPFLAGS = -DDEBUG $(am__append_2) \ +@LIBSEMIGROUPS_DEBUG_FALSE@ $(am__append_4) +@LIBSEMIGROUPS_DEBUG_TRUE@AM_CPPFLAGS = -DDEBUG $(am__append_3) \ @LIBSEMIGROUPS_DEBUG_TRUE@ $(CODE_COVERAGE_CPPFLAGS) \ -@LIBSEMIGROUPS_DEBUG_TRUE@ $(am__append_3) +@LIBSEMIGROUPS_DEBUG_TRUE@ $(am__append_4) ACLOCAL_AMFLAGS = -I m4 pkgconfigdir = $(libdir)/pkgconfig pkgconfig_DATA = libsemigroups.pc @@ -1540,18 +1542,18 @@ @LIBSEMIGROUPS_HPCOMBI_ENABLED_TRUE@hpcombifallbackincludedir = $(includedir)/libsemigroups/HPCombi/include/fallback @LIBSEMIGROUPS_HPCOMBI_ENABLED_TRUE@hpcombifallbackinclude_HEADERS = extern/HPCombi/include/fallback/gcdlcm.hpp \ @LIBSEMIGROUPS_HPCOMBI_ENABLED_TRUE@ extern/HPCombi/include/fallback/seq.hpp -@LIBSEMIGROUPS_FMT_ENABLED_TRUE@fmtincludedir = $(includedir)/libsemigroups/fmt -@LIBSEMIGROUPS_FMT_ENABLED_TRUE@fmtinclude_HEADERS = extern/fmt-5.3.0/include/fmt/chrono.h \ -@LIBSEMIGROUPS_FMT_ENABLED_TRUE@ extern/fmt-5.3.0/include/fmt/color.h \ -@LIBSEMIGROUPS_FMT_ENABLED_TRUE@ extern/fmt-5.3.0/include/fmt/core.h \ -@LIBSEMIGROUPS_FMT_ENABLED_TRUE@ extern/fmt-5.3.0/include/fmt/format-inl.h \ -@LIBSEMIGROUPS_FMT_ENABLED_TRUE@ extern/fmt-5.3.0/include/fmt/format.h \ -@LIBSEMIGROUPS_FMT_ENABLED_TRUE@ extern/fmt-5.3.0/include/fmt/locale.h \ -@LIBSEMIGROUPS_FMT_ENABLED_TRUE@ extern/fmt-5.3.0/include/fmt/ostream.h \ -@LIBSEMIGROUPS_FMT_ENABLED_TRUE@ extern/fmt-5.3.0/include/fmt/posix.h \ -@LIBSEMIGROUPS_FMT_ENABLED_TRUE@ extern/fmt-5.3.0/include/fmt/printf.h \ -@LIBSEMIGROUPS_FMT_ENABLED_TRUE@ extern/fmt-5.3.0/include/fmt/ranges.h \ -@LIBSEMIGROUPS_FMT_ENABLED_TRUE@ extern/fmt-5.3.0/include/fmt/time.h +@LIBSEMIGROUPS_WITH_INTERNAL_FMT_TRUE@fmtincludedir = $(includedir)/libsemigroups/fmt +@LIBSEMIGROUPS_WITH_INTERNAL_FMT_TRUE@fmtinclude_HEADERS = extern/fmt-5.3.0/include/fmt/chrono.h \ +@LIBSEMIGROUPS_WITH_INTERNAL_FMT_TRUE@ extern/fmt-5.3.0/include/fmt/color.h \ +@LIBSEMIGROUPS_WITH_INTERNAL_FMT_TRUE@ extern/fmt-5.3.0/include/fmt/core.h \ +@LIBSEMIGROUPS_WITH_INTERNAL_FMT_TRUE@ extern/fmt-5.3.0/include/fmt/format-inl.h \ +@LIBSEMIGROUPS_WITH_INTERNAL_FMT_TRUE@ extern/fmt-5.3.0/include/fmt/format.h \ +@LIBSEMIGROUPS_WITH_INTERNAL_FMT_TRUE@ extern/fmt-5.3.0/include/fmt/locale.h \ +@LIBSEMIGROUPS_WITH_INTERNAL_FMT_TRUE@ extern/fmt-5.3.0/include/fmt/ostream.h \ +@LIBSEMIGROUPS_WITH_INTERNAL_FMT_TRUE@ extern/fmt-5.3.0/include/fmt/posix.h \ +@LIBSEMIGROUPS_WITH_INTERNAL_FMT_TRUE@ extern/fmt-5.3.0/include/fmt/printf.h \ +@LIBSEMIGROUPS_WITH_INTERNAL_FMT_TRUE@ extern/fmt-5.3.0/include/fmt/ranges.h \ +@LIBSEMIGROUPS_WITH_INTERNAL_FMT_TRUE@ extern/fmt-5.3.0/include/fmt/time.h @LIBSEMIGROUPS_EIGEN_ENABLED_TRUE@eigenincludedir = $(includedir)/libsemigroups/Eigen @LIBSEMIGROUPS_EIGEN_ENABLED_TRUE@eigeninclude_HEADERS = extern/eigen-3.3.7/Eigen/StdList \ @LIBSEMIGROUPS_EIGEN_ENABLED_TRUE@ extern/eigen-3.3.7/Eigen/Jacobi \ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libsemigroups-1.3.1/README.rst new/libsemigroups-1.3.2/README.rst --- old/libsemigroups-1.3.1/README.rst 2020-08-28 18:59:28.239008675 +0200 +++ new/libsemigroups-1.3.2/README.rst 2020-10-02 15:54:19.949765441 +0200 @@ -4,7 +4,7 @@ The full license is in the file LICENSE, distributed with this software. -libsemigroups - Version 1.3.1 +libsemigroups - Version 1.3.2 ============================= .. image:: https://readthedocs.org/projects/libsemigroups/badge/?version=master @@ -151,7 +151,7 @@ We thank the `Engineering and Physical Sciences Research Council (EPSRC)`_ for funding the PhD scholarships of `M. Torpey`_ and `F. Smith`_ when they worked -on this project (EP/M506631/1). +on this project (EP/M506631/1, EP/N509759/1). .. _OpenDreamKit: https://opendreamkit.org/ .. _Carnegie Trust for the Universities of Scotland: https://www.carnegie-trust.org/ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libsemigroups-1.3.1/configure new/libsemigroups-1.3.2/configure --- old/libsemigroups-1.3.1/configure 2020-08-28 18:59:35.695814937 +0200 +++ new/libsemigroups-1.3.2/configure 2020-10-02 15:54:27.754973843 +0200 @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for libsemigroups 1.3.1. +# Generated by GNU Autoconf 2.69 for libsemigroups 1.3.2. # # Report bugs to <[email protected]>. # @@ -590,8 +590,8 @@ # Identity of this package. PACKAGE_NAME='libsemigroups' PACKAGE_TARNAME='libsemigroups' -PACKAGE_VERSION='1.3.1' -PACKAGE_STRING='libsemigroups 1.3.1' +PACKAGE_VERSION='1.3.2' +PACKAGE_STRING='libsemigroups 1.3.2' PACKAGE_BUGREPORT='[email protected]' PACKAGE_URL='' @@ -639,6 +639,8 @@ LIBSEMIGROUPS_EIGEN_ENABLED_TRUE EIGEN3_LIBS EIGEN3_CFLAGS +LIBSEMIGROUPS_WITH_INTERNAL_FMT_FALSE +LIBSEMIGROUPS_WITH_INTERNAL_FMT_TRUE FMT_LIBS FMT_CFLAGS PKG_CONFIG_LIBDIR @@ -646,6 +648,7 @@ PKG_CONFIG LIBSEMIGROUPS_FMT_ENABLED_FALSE LIBSEMIGROUPS_FMT_ENABLED_TRUE +HPCOMBI_CXXFLAGS HPCOMBI_CONSTEXPR_FUN_ARGS_FALSE HPCOMBI_CONSTEXPR_FUN_ARGS_TRUE LIBSEMIGROUPS_HPCOMBI_ENABLED_FALSE @@ -1383,7 +1386,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 libsemigroups 1.3.1 to adapt to many kinds of systems. +\`configure' configures libsemigroups 1.3.2 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1453,7 +1456,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of libsemigroups 1.3.1:";; + short | recursive ) echo "Configuration of libsemigroups 1.3.2:";; esac cat <<\_ACEOF @@ -1592,7 +1595,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -libsemigroups configure 1.3.1 +libsemigroups configure 1.3.2 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2558,7 +2561,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by libsemigroups $as_me 1.3.1, which was +It was created by libsemigroups $as_me 1.3.2, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -3429,7 +3432,7 @@ # Define the identity of the package. PACKAGE='libsemigroups' - VERSION='1.3.1' + VERSION='1.3.2' cat >>confdefs.h <<_ACEOF @@ -19622,6 +19625,7 @@ # Check if HPCombi is enable, and available + # Check whether --enable-hpcombi was given. if test "${enable_hpcombi+set}" = set; then : enableval=$enable_hpcombi; @@ -19752,20 +19756,20 @@ $as_echo "$ax_cv_check_cxxflags___march_native" >&6; } if test "x$ax_cv_check_cxxflags___march_native" = xyes; then : -if ${CXXFLAGS+:} false; then : +if ${HPCOMBI_CXXFLAGS+:} false; then : - case " $CXXFLAGS " in #( + case " $HPCOMBI_CXXFLAGS " in #( *" -march=native "*) : - { { $as_echo "$as_me:${as_lineno-$LINENO}: : CXXFLAGS already contains -march=native"; } >&5 - (: CXXFLAGS already contains -march=native) 2>&5 + { { $as_echo "$as_me:${as_lineno-$LINENO}: : HPCOMBI_CXXFLAGS already contains -march=native"; } >&5 + (: HPCOMBI_CXXFLAGS already contains -march=native) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } ;; #( *) : - as_fn_append CXXFLAGS " -march=native" - { { $as_echo "$as_me:${as_lineno-$LINENO}: : CXXFLAGS=\"\$CXXFLAGS\""; } >&5 - (: CXXFLAGS="$CXXFLAGS") 2>&5 + as_fn_append HPCOMBI_CXXFLAGS " -march=native" + { { $as_echo "$as_me:${as_lineno-$LINENO}: : HPCOMBI_CXXFLAGS=\"\$HPCOMBI_CXXFLAGS\""; } >&5 + (: HPCOMBI_CXXFLAGS="$HPCOMBI_CXXFLAGS") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } @@ -19774,9 +19778,9 @@ else - CXXFLAGS=-march=native - { { $as_echo "$as_me:${as_lineno-$LINENO}: : CXXFLAGS=\"\$CXXFLAGS\""; } >&5 - (: CXXFLAGS="$CXXFLAGS") 2>&5 + HPCOMBI_CXXFLAGS=-march=native + { { $as_echo "$as_me:${as_lineno-$LINENO}: : HPCOMBI_CXXFLAGS=\"\$HPCOMBI_CXXFLAGS\""; } >&5 + (: HPCOMBI_CXXFLAGS="$HPCOMBI_CXXFLAGS") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } @@ -19823,20 +19827,20 @@ $as_echo "$ax_cv_check_cxxflags___flax_vector_conversions" >&6; } if test "x$ax_cv_check_cxxflags___flax_vector_conversions" = xyes; then : -if ${CXXFLAGS+:} false; then : +if ${HPCOMBI_CXXFLAGS+:} false; then : - case " $CXXFLAGS " in #( + case " $HPCOMBI_CXXFLAGS " in #( *" -flax-vector-conversions "*) : - { { $as_echo "$as_me:${as_lineno-$LINENO}: : CXXFLAGS already contains -flax-vector-conversions"; } >&5 - (: CXXFLAGS already contains -flax-vector-conversions) 2>&5 + { { $as_echo "$as_me:${as_lineno-$LINENO}: : HPCOMBI_CXXFLAGS already contains -flax-vector-conversions"; } >&5 + (: HPCOMBI_CXXFLAGS already contains -flax-vector-conversions) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } ;; #( *) : - as_fn_append CXXFLAGS " -flax-vector-conversions" - { { $as_echo "$as_me:${as_lineno-$LINENO}: : CXXFLAGS=\"\$CXXFLAGS\""; } >&5 - (: CXXFLAGS="$CXXFLAGS") 2>&5 + as_fn_append HPCOMBI_CXXFLAGS " -flax-vector-conversions" + { { $as_echo "$as_me:${as_lineno-$LINENO}: : HPCOMBI_CXXFLAGS=\"\$HPCOMBI_CXXFLAGS\""; } >&5 + (: HPCOMBI_CXXFLAGS="$HPCOMBI_CXXFLAGS") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } @@ -19845,9 +19849,9 @@ else - CXXFLAGS=-flax-vector-conversions - { { $as_echo "$as_me:${as_lineno-$LINENO}: : CXXFLAGS=\"\$CXXFLAGS\""; } >&5 - (: CXXFLAGS="$CXXFLAGS") 2>&5 + HPCOMBI_CXXFLAGS=-flax-vector-conversions + { { $as_echo "$as_me:${as_lineno-$LINENO}: : HPCOMBI_CXXFLAGS=\"\$HPCOMBI_CXXFLAGS\""; } >&5 + (: HPCOMBI_CXXFLAGS="$HPCOMBI_CXXFLAGS") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } @@ -19888,6 +19892,8 @@ if test "x$enable_hpcombi" = xyes; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _mm_blendv_epi8" >&5 $as_echo_n "checking for _mm_blendv_epi8... " >&6; } + saved_CXXFLAGS="$CXXFLAGS" + CXXFLAGS="-march=native -flax-vector-conversions" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <x86intrin.h> @@ -19911,11 +19917,14 @@ conftest$ac_exeext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_hpcombi" >&5 $as_echo "$enable_hpcombi" >&6; } + CXXFLAGS="$saved_CXXFLAGS" fi if test "x$enable_hpcombi" = xyes; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _mm_cmpeq_epi8" >&5 $as_echo_n "checking for _mm_cmpeq_epi8... " >&6; } + saved_CXXFLAGS="$CXXFLAGS" + CXXFLAGS="-march=native -flax-vector-conversions" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <x86intrin.h> @@ -19939,11 +19948,14 @@ conftest$ac_exeext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_hpcombi" >&5 $as_echo "$enable_hpcombi" >&6; } + CXXFLAGS="$saved_CXXFLAGS" fi if test "x$enable_hpcombi" = xyes; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _mm_cmpestri" >&5 $as_echo_n "checking for _mm_cmpestri... " >&6; } + saved_CXXFLAGS="$CXXFLAGS" + CXXFLAGS="-march=native -flax-vector-conversions" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <x86intrin.h> @@ -19967,11 +19979,14 @@ conftest$ac_exeext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_hpcombi" >&5 $as_echo "$enable_hpcombi" >&6; } + CXXFLAGS="$saved_CXXFLAGS" fi if test "x$enable_hpcombi" = xyes; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _mm_cmpestrm" >&5 $as_echo_n "checking for _mm_cmpestrm... " >&6; } + saved_CXXFLAGS="$CXXFLAGS" + CXXFLAGS="-march=native -flax-vector-conversions" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <x86intrin.h> @@ -19995,11 +20010,14 @@ conftest$ac_exeext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_hpcombi" >&5 $as_echo "$enable_hpcombi" >&6; } + CXXFLAGS="$saved_CXXFLAGS" fi if test "x$enable_hpcombi" = xyes; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _mm_cmplt_epi8" >&5 $as_echo_n "checking for _mm_cmplt_epi8... " >&6; } + saved_CXXFLAGS="$CXXFLAGS" + CXXFLAGS="-march=native -flax-vector-conversions" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <x86intrin.h> @@ -20023,11 +20041,14 @@ conftest$ac_exeext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_hpcombi" >&5 $as_echo "$enable_hpcombi" >&6; } + CXXFLAGS="$saved_CXXFLAGS" fi if test "x$enable_hpcombi" = xyes; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _mm_extract_epi64" >&5 $as_echo_n "checking for _mm_extract_epi64... " >&6; } + saved_CXXFLAGS="$CXXFLAGS" + CXXFLAGS="-march=native -flax-vector-conversions" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <x86intrin.h> @@ -20051,11 +20072,14 @@ conftest$ac_exeext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_hpcombi" >&5 $as_echo "$enable_hpcombi" >&6; } + CXXFLAGS="$saved_CXXFLAGS" fi if test "x$enable_hpcombi" = xyes; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _mm_max_epi8" >&5 $as_echo_n "checking for _mm_max_epi8... " >&6; } + saved_CXXFLAGS="$CXXFLAGS" + CXXFLAGS="-march=native -flax-vector-conversions" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <x86intrin.h> @@ -20079,11 +20103,14 @@ conftest$ac_exeext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_hpcombi" >&5 $as_echo "$enable_hpcombi" >&6; } + CXXFLAGS="$saved_CXXFLAGS" fi if test "x$enable_hpcombi" = xyes; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _mm_max_epu8" >&5 $as_echo_n "checking for _mm_max_epu8... " >&6; } + saved_CXXFLAGS="$CXXFLAGS" + CXXFLAGS="-march=native -flax-vector-conversions" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <x86intrin.h> @@ -20107,11 +20134,14 @@ conftest$ac_exeext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_hpcombi" >&5 $as_echo "$enable_hpcombi" >&6; } + CXXFLAGS="$saved_CXXFLAGS" fi if test "x$enable_hpcombi" = xyes; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _mm_min_epi8" >&5 $as_echo_n "checking for _mm_min_epi8... " >&6; } + saved_CXXFLAGS="$CXXFLAGS" + CXXFLAGS="-march=native -flax-vector-conversions" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <x86intrin.h> @@ -20135,11 +20165,14 @@ conftest$ac_exeext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_hpcombi" >&5 $as_echo "$enable_hpcombi" >&6; } + CXXFLAGS="$saved_CXXFLAGS" fi if test "x$enable_hpcombi" = xyes; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _mm_min_epu8" >&5 $as_echo_n "checking for _mm_min_epu8... " >&6; } + saved_CXXFLAGS="$CXXFLAGS" + CXXFLAGS="-march=native -flax-vector-conversions" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <x86intrin.h> @@ -20163,11 +20196,14 @@ conftest$ac_exeext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_hpcombi" >&5 $as_echo "$enable_hpcombi" >&6; } + CXXFLAGS="$saved_CXXFLAGS" fi if test "x$enable_hpcombi" = xyes; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _mm_movemask_epi8" >&5 $as_echo_n "checking for _mm_movemask_epi8... " >&6; } + saved_CXXFLAGS="$CXXFLAGS" + CXXFLAGS="-march=native -flax-vector-conversions" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <x86intrin.h> @@ -20191,11 +20227,14 @@ conftest$ac_exeext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_hpcombi" >&5 $as_echo "$enable_hpcombi" >&6; } + CXXFLAGS="$saved_CXXFLAGS" fi if test "x$enable_hpcombi" = xyes; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _mm_popcnt_u32" >&5 $as_echo_n "checking for _mm_popcnt_u32... " >&6; } + saved_CXXFLAGS="$CXXFLAGS" + CXXFLAGS="-march=native -flax-vector-conversions" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <x86intrin.h> @@ -20219,11 +20258,14 @@ conftest$ac_exeext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_hpcombi" >&5 $as_echo "$enable_hpcombi" >&6; } + CXXFLAGS="$saved_CXXFLAGS" fi if test "x$enable_hpcombi" = xyes; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _mm_set_epi64x" >&5 $as_echo_n "checking for _mm_set_epi64x... " >&6; } + saved_CXXFLAGS="$CXXFLAGS" + CXXFLAGS="-march=native -flax-vector-conversions" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <x86intrin.h> @@ -20247,11 +20289,14 @@ conftest$ac_exeext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_hpcombi" >&5 $as_echo "$enable_hpcombi" >&6; } + CXXFLAGS="$saved_CXXFLAGS" fi if test "x$enable_hpcombi" = xyes; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _mm_shuffle_epi8" >&5 $as_echo_n "checking for _mm_shuffle_epi8... " >&6; } + saved_CXXFLAGS="$CXXFLAGS" + CXXFLAGS="-march=native -flax-vector-conversions" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <x86intrin.h> @@ -20275,11 +20320,14 @@ conftest$ac_exeext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_hpcombi" >&5 $as_echo "$enable_hpcombi" >&6; } + CXXFLAGS="$saved_CXXFLAGS" fi if test "x$enable_hpcombi" = xyes; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _mm_slli_epi32" >&5 $as_echo_n "checking for _mm_slli_epi32... " >&6; } + saved_CXXFLAGS="$CXXFLAGS" + CXXFLAGS="-march=native -flax-vector-conversions" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <x86intrin.h> @@ -20303,6 +20351,7 @@ conftest$ac_exeext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_hpcombi" >&5 $as_echo "$enable_hpcombi" >&6; } + CXXFLAGS="$saved_CXXFLAGS" fi @@ -20365,6 +20414,9 @@ fi + if test "x$enable_hpcombi" = xyes; then : + +fi # Check if the vendored fmt should be used or not @@ -20489,22 +20541,25 @@ fi fi - # Check whether --enable-fmt was given. + # Check whether --enable-fmt was given. if test "${enable_fmt+set}" = set; then : enableval=$enable_fmt; -$as_echo "#define FMT_ENABLED 1" >>confdefs.h - else enable_fmt=no fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable fmt" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable fmt" >&5 $as_echo_n "checking whether to enable fmt... " >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_fmt" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_fmt" >&5 $as_echo "$enable_fmt" >&6; } - if test "x$enable_fmt" = xyes; then + if test "x$enable_fmt" = xyes; then : + +$as_echo "#define FMT_ENABLED 1" >>confdefs.h + +fi + if test "x$enable_fmt" = xyes; then LIBSEMIGROUPS_FMT_ENABLED_TRUE= LIBSEMIGROUPS_FMT_ENABLED_FALSE='#' else @@ -20517,9 +20572,10 @@ # Check whether --with-external-fmt was given. if test "${with_external_fmt+set}" = set; then : - withval=$with_external_fmt; with_external_fmt=yes + withval=$with_external_fmt; else with_external_fmt=no + fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to use external fmt" >&5 @@ -20628,6 +20684,15 @@ fi fi + if test "x$enable_fmt" = xyes && test "x$with_external_fmt" != xyes; then + LIBSEMIGROUPS_WITH_INTERNAL_FMT_TRUE= + LIBSEMIGROUPS_WITH_INTERNAL_FMT_FALSE='#' +else + LIBSEMIGROUPS_WITH_INTERNAL_FMT_TRUE='#' + LIBSEMIGROUPS_WITH_INTERNAL_FMT_FALSE= +fi + + # Check if the vendored eigen should be used or not, or if eigen should be # disabled altogether @@ -20752,7 +20817,7 @@ EIGEN3_LIBS=$pkg_cv_EIGEN3_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } - + eigen_enabled=yes fi else as_ac_File=`$as_echo "ac_cv_file_$srcdir/extern/eigen-3.3.7/Eigen/QR" | $as_tr_sh` @@ -21077,6 +21142,10 @@ as_fn_error $? "conditional \"LIBSEMIGROUPS_FMT_ENABLED\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi +if test -z "${LIBSEMIGROUPS_WITH_INTERNAL_FMT_TRUE}" && test -z "${LIBSEMIGROUPS_WITH_INTERNAL_FMT_FALSE}"; then + as_fn_error $? "conditional \"LIBSEMIGROUPS_WITH_INTERNAL_FMT\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi if test -z "${LIBSEMIGROUPS_EIGEN_ENABLED_TRUE}" && test -z "${LIBSEMIGROUPS_EIGEN_ENABLED_FALSE}"; then as_fn_error $? "conditional \"LIBSEMIGROUPS_EIGEN_ENABLED\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 @@ -21478,7 +21547,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by libsemigroups $as_me 1.3.1, which was +This file was extended by libsemigroups $as_me 1.3.2, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -21544,7 +21613,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -libsemigroups config.status 1.3.1 +libsemigroups config.status 1.3.2 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" Binary files old/libsemigroups-1.3.1/docs/.yml.swp and new/libsemigroups-1.3.2/docs/.yml.swp differ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libsemigroups-1.3.1/docs/source/authors.rst new/libsemigroups-1.3.2/docs/source/authors.rst --- old/libsemigroups-1.3.1/docs/source/authors.rst 2020-08-28 16:26:14.450993054 +0200 +++ new/libsemigroups-1.3.2/docs/source/authors.rst 2020-10-02 14:24:21.278979653 +0200 @@ -53,9 +53,9 @@ We thank the `Carnegie Trust for the Universities of Scotland`_ for funding the PhD scholarship of `J. Jonušas`_ when he worked on this project. -We thank the `Engineering and Physical Sciences Research Council (EPSRC)`_ -for funding the PhD scholarship of `M. Torpey`_ when he worked on this -project (EP/M506631/1). +We thank the `Engineering and Physical Sciences Research Council (EPSRC)`_ for +funding the PhD scholarships of `M. Torpey`_ and `F. Smith`_ when they worked +on this project (EP/M506631/1, EP/N509759/1). .. _OpenDreamKit: https://opendreamkit.org/ .. _Carnegie Trust for the Universities of Scotland: https://www.carnegie-trust.org/ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libsemigroups-1.3.1/docs/source/changelog.rst new/libsemigroups-1.3.2/docs/source/changelog.rst --- old/libsemigroups-1.3.1/docs/source/changelog.rst 2020-08-28 18:59:28.239388708 +0200 +++ new/libsemigroups-1.3.2/docs/source/changelog.rst 2020-10-02 15:54:19.950402289 +0200 @@ -1,6 +1,29 @@ Changelog ========= +v1.3.2 (released 02/10/2020) +---------------------------- + +This is a minor release resolving some issues in the build system, and some +issues related to PBRs. + +The issues resolved are: + +* eigen support is enabled if the configure flag `--with-external-eigen` is + given; Resolved by `J. James`_. +* the order the compile flags related to HPCombi were appended was changed, so + that they do not override user-provided `CFLAGS`. Reported by Jan Engelhardt + and fixed by `J. D. Mitchell`_ +* the macro ``LIBSEMIGROUPS_FMT_ENABLED`` was incorrectly used in ``report.cpp`` + and some weirdness ensued when ``libsemigroups`` was system installed (via + ``make install``). Resolved by `J. D. Mitchell`_. +* the configuration options ``--disable-fmt`` and ``--enable-fmt`` did the same + thing. Resolved by `J. D. Mitchell`_. +* it was possible to create invalid ``PBR`` objects, which caused some + incorrect values to be returned by ``FroidurePin<PBR>`` instances. The + ``to_string`` implementation for ``PBR``'s also didn't work properly in all + cases. Resolved by `Finn Smith`_. + v1.3.1 (released 28/08/2020) ---------------------------- diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libsemigroups-1.3.1/docs/source/index.rst new/libsemigroups-1.3.2/docs/source/index.rst --- old/libsemigroups-1.3.1/docs/source/index.rst 2020-08-28 18:59:28.240429115 +0200 +++ new/libsemigroups-1.3.2/docs/source/index.rst 2020-10-02 15:54:19.951641680 +0200 @@ -1,4 +1,4 @@ -libsemigroups - Version 1.3.1 +libsemigroups - Version 1.3.2 ============================= C++ library for semigroups and monoids diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libsemigroups-1.3.1/docs/source/install.rst new/libsemigroups-1.3.2/docs/source/install.rst --- old/libsemigroups-1.3.1/docs/source/install.rst 2020-08-28 18:59:28.240860641 +0200 +++ new/libsemigroups-1.3.2/docs/source/install.rst 2020-10-02 15:54:19.952426729 +0200 @@ -1,4 +1,4 @@ -.. |libsemigroups-version| replace:: 1.3.1 +.. |libsemigroups-version| replace:: 1.3.2 .. _Installation: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libsemigroups-1.3.1/docs/source/semigroupe.rst new/libsemigroups-1.3.2/docs/source/semigroupe.rst --- old/libsemigroups-1.3.1/docs/source/semigroupe.rst 2020-06-24 15:43:36.528960801 +0200 +++ new/libsemigroups-1.3.2/docs/source/semigroupe.rst 2020-10-02 14:24:21.279448053 +0200 @@ -1,7 +1,8 @@ Semigroupe ========== -``libsemigroups`` is partly based on `Algorithms for computing finite +The algorithm implemented in the class ``FroidurePin`` +is based on `Algorithms for computing finite semigroups <https://www.irif.fr/~jep/PDF/Rio.pdf>`__, `Expository Slides <https://www.irif.fr/~jep/PDF/Exposes/StAndrews.pdf>`__, and `Semigroupe @@ -10,7 +11,7 @@ Some of the features of `Semigroupe 2.01 <https://www.irif.fr/~jep/Logiciels/Semigroupe2.0/semigroupe2.html>`__ -are not yet implemented in ``libsemigroups``, this is a work in progress. +are not yet implemented in ``FroidurePin``, this is a work in progress. Missing features include those for: - Green’s relations, or classes @@ -27,35 +28,24 @@ 2.01 <https://www.irif.fr/~jep/Logiciels/Semigroupe2.0/semigroupe2.html>`__ when there is a known upper bound on the size of the semigroup being enumerated, and this is used to initialise the data structures for the -semigroup; see libsemigroups::Semigroup::reserve for more details. Note +semigroup; see ``libsemigroups::FroidurePin::reserve`` for more details. Note that in `Semigroupe 2.01 <https://www.irif.fr/~jep/Logiciels/Semigroupe2.0/semigroupe2.html>`__ it is always necessary to provide such an upper bound, but in ``libsemigroups`` it is not. -``libsemigroups`` also has some advantages over `Semigroupe +The ``FroidurePin`` class has some advantages over `Semigroupe 2.01 <https://www.irif.fr/~jep/Logiciels/Semigroupe2.0/semigroupe2.html>`__ - there is a (hopefully) convenient C++ API, which makes it relatively easy to create and manipulate semigroups and monoids -- there are some multithreaded methods for semigroups and their - congruences -- you do not have to know/guess the size of a semigroup or monoid - before you begin -- ``libsemigroups`` supports more types of elements than `Semigroupe - 2.01 <https://www.irif.fr/~jep/Logiciels/Semigroupe2.0/semigroupe2.html>`__ +- more types of elements are supported - it is relatively straightforward to add support for further types of - elements and semigroups + elements - it is possible to enumerate a certain number of elements of a semigroup or monoid (say if you are looking for an element with a particular property), to stop, and then to start the enumeration again at a later point -- you can instantiate as many semigroups and monoids as you can fit in - memory - it is possible to add more generators after a semigroup or monoid has been constructed, without losing or having to recompute any information that was previously known -- ``libsemigroups`` contains implementations of the Todd-Coxeter and - Knuth-Bendix algorithms for finitely presented semigroups, which can - also be used to compute congruences of a (not necessarily finitely - presented) semigroup or monoid. Binary files old/libsemigroups-1.3.1/docs/yml/.fpsemigroup.yml.swp and new/libsemigroups-1.3.2/docs/yml/.fpsemigroup.yml.swp differ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libsemigroups-1.3.1/include/libsemigroups/libsemigroups-config.hpp new/libsemigroups-1.3.2/include/libsemigroups/libsemigroups-config.hpp --- old/libsemigroups-1.3.1/include/libsemigroups/libsemigroups-config.hpp 2020-08-28 18:59:55.234810628 +0200 +++ new/libsemigroups-1.3.2/include/libsemigroups/libsemigroups-config.hpp 2020-10-02 15:54:46.132464647 +0200 @@ -178,7 +178,7 @@ /* Define to the full name and version of this package. */ #ifndef LIBSEMIGROUPS_PACKAGE_STRING -#define LIBSEMIGROUPS_PACKAGE_STRING "libsemigroups 1.3.1" +#define LIBSEMIGROUPS_PACKAGE_STRING "libsemigroups 1.3.2" #endif /* Define to the one symbol short name of this package. */ @@ -193,7 +193,7 @@ /* Define to the version of this package. */ #ifndef LIBSEMIGROUPS_PACKAGE_VERSION -#define LIBSEMIGROUPS_PACKAGE_VERSION "1.3.1" +#define LIBSEMIGROUPS_PACKAGE_VERSION "1.3.2" #endif /* Define to necessary symbol if this constant uses a non-standard name on @@ -225,7 +225,7 @@ /* Version number of package */ #ifndef LIBSEMIGROUPS_VERSION -#define LIBSEMIGROUPS_VERSION "1.3.1" +#define LIBSEMIGROUPS_VERSION "1.3.2" #endif /* Define for Solaris 2.5.1 so the uint64_t typedef from <sys/synch.h>, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libsemigroups-1.3.1/include/libsemigroups/string.hpp new/libsemigroups-1.3.2/include/libsemigroups/string.hpp --- old/libsemigroups-1.3.1/include/libsemigroups/string.hpp 2020-08-28 16:26:15.066026067 +0200 +++ new/libsemigroups-1.3.2/include/libsemigroups/string.hpp 2020-10-02 14:24:21.279714084 +0200 @@ -61,6 +61,10 @@ // A << function for vectors template <typename T> std::ostream& operator<<(std::ostream& os, std::vector<T> const& vec) { + if (vec.empty()) { + os << "{}"; + return os; + } os << "{{"; // {{ is an escaped single { for fmt for (auto it = vec.cbegin(); it < vec.cend() - 1; ++it) { os << detail::to_string(*it) << ", "; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libsemigroups-1.3.1/m4/ax_check_eigen.m4 new/libsemigroups-1.3.2/m4/ax_check_eigen.m4 --- old/libsemigroups-1.3.1/m4/ax_check_eigen.m4 2020-08-28 16:26:15.068860527 +0200 +++ new/libsemigroups-1.3.2/m4/ax_check_eigen.m4 2020-10-02 15:14:48.104009727 +0200 @@ -27,7 +27,8 @@ if test "$with_external_eigen" = yes; then m4_ifdef([PKG_CHECK_MODULES], [ PKG_CHECK_MODULES([EIGEN3], - [eigen3 >= $REQUI_EIGEN_VERSION])], + [eigen3 >= $REQUI_EIGEN_VERSION], + [eigen_enabled=yes])], [AC_MSG_ERROR([cannot use flag --with-external-eigen, the libsemigroups configure file was created on a system without m4 macros for pkg-config available...])]) else AC_CHECK_FILE( diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libsemigroups-1.3.1/m4/ax_check_fmt.m4 new/libsemigroups-1.3.2/m4/ax_check_fmt.m4 --- old/libsemigroups-1.3.1/m4/ax_check_fmt.m4 2020-08-28 16:26:15.069562821 +0200 +++ new/libsemigroups-1.3.2/m4/ax_check_fmt.m4 2020-10-02 15:17:46.886626398 +0200 @@ -4,22 +4,26 @@ dnl known to pkg-config and is new enough; otherwise use the included version dnl AC_DEFUN([AX_CHECK_FMT], [ - AC_ARG_ENABLE([fmt], - [AS_HELP_STRING([--enable-fmt], [enable fmt])], - [AC_DEFINE([FMT_ENABLED], [1], [define if building with fmt])], - [enable_fmt=no] - ) - AC_MSG_CHECKING([whether to enable fmt]) - AC_MSG_RESULT([$enable_fmt]) + AC_ARG_ENABLE( + [fmt], + [AS_HELP_STRING([--enable-fmt], [enable fmt])], + [], + [enable_fmt=no] + ) + AC_MSG_CHECKING([whether to enable fmt]) + AC_MSG_RESULT([$enable_fmt]) - AM_CONDITIONAL([LIBSEMIGROUPS_FMT_ENABLED], [test "x$enable_fmt" = xyes]) + AS_IF([test "x$enable_fmt" = xyes], + [AC_DEFINE([FMT_ENABLED], [1], [define if building with fmt])]) + AM_CONDITIONAL([LIBSEMIGROUPS_FMT_ENABLED], [test "x$enable_fmt" = xyes]) if test "x$enable_fmt" = xyes; then - AC_ARG_WITH([external-fmt], - [AC_HELP_STRING([--with-external-fmt], - [use the external fmt])], - [with_external_fmt=yes], - [with_external_fmt=no]) + AC_ARG_WITH( + [external-fmt], + [AC_HELP_STRING([--with-external-fmt], [use the external fmt])], + [], + [with_external_fmt=no] + ) AC_MSG_CHECKING([whether to use external fmt]) AC_MSG_RESULT([$with_external_fmt]) @@ -34,4 +38,7 @@ AC_SUBST(FMT_CFLAGS, ['-I$(srcdir)/extern/fmt-5.3.0/include']) fi fi + + AM_CONDITIONAL([LIBSEMIGROUPS_WITH_INTERNAL_FMT], [test "x$enable_fmt" = xyes && test "x$with_external_fmt" != xyes]) ]) + diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libsemigroups-1.3.1/m4/ax_check_hpcombi.m4 new/libsemigroups-1.3.2/m4/ax_check_hpcombi.m4 --- old/libsemigroups-1.3.1/m4/ax_check_hpcombi.m4 2020-08-28 16:26:15.070107939 +0200 +++ new/libsemigroups-1.3.2/m4/ax_check_hpcombi.m4 2020-10-02 14:24:21.281415293 +0200 @@ -2,6 +2,8 @@ AC_DEFUN([CHECK_INTRINSIC], [AC_MSG_CHECKING([for $1]) + saved_CXXFLAGS="$CXXFLAGS" + CXXFLAGS="-march=native -flax-vector-conversions" AC_LINK_IFELSE( [AC_LANG_PROGRAM( [[#include <x86intrin.h>]], @@ -12,9 +14,11 @@ [enable_hpcombi=no] ) AC_MSG_RESULT([$enable_hpcombi]) + CXXFLAGS="$saved_CXXFLAGS" ]) AC_DEFUN([AX_CHECK_HPCOMBI], [ + m4_define([ax_hpcombi_cxxflags_variable],[HPCOMBI_CXXFLAGS]) AC_ARG_ENABLE([hpcombi], [AS_HELP_STRING([--enable-hpcombi], [enable HPCombi])], [], @@ -50,13 +54,13 @@ dnl # Check if the flags required for HPCombi are supported AS_IF([test "x$enable_hpcombi" = xyes], [AX_CHECK_COMPILE_FLAG(-march=native, - AX_APPEND_FLAG(-march=native), + AX_APPEND_FLAG(-march=native, [ax_hpcombi_cxxflags_variable]), [AC_MSG_WARN([flag -march=native not supported, HPCombi is disabled]) enable_hpcombi=no])]) AS_IF([test "x$enable_hpcombi" = xyes], [AX_CHECK_COMPILE_FLAG(-flax-vector-conversions, - AX_APPEND_FLAG(-flax-vector-conversions), + AX_APPEND_FLAG(-flax-vector-conversions, [ax_hpcombi_cxxflags_variable]), [AC_MSG_WARN([flag -flax-vector-conversions not supported, HPCombi is disabled]) enable_hpcombi=no])]) @@ -110,5 +114,7 @@ AM_CONDITIONAL([HPCOMBI_CONSTEXPR_FUN_ARGS], [test "x$hpcombi_constexpr_fun_args" = xyes]) - + + AS_IF([test "x$enable_hpcombi" = xyes], + AC_SUBST(ax_hpcombi_cxxflags_variable)) ]) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libsemigroups-1.3.1/src/element.cpp new/libsemigroups-1.3.2/src/element.cpp --- old/libsemigroups-1.3.1/src/element.cpp 2020-08-28 16:26:15.072722350 +0200 +++ new/libsemigroups-1.3.2/src/element.cpp 2020-10-02 14:24:21.281967939 +0200 @@ -612,20 +612,30 @@ } std::ostringstream& operator<<(std::ostringstream& os, PBR const& pbr) { + if (pbr.degree() == 0) { + os << "{}"; + return os; + } os << "{"; for (size_t i = 0; i < pbr.degree() * 2 - 1; ++i) { os << "{"; - for (size_t j = 0; j < pbr[i].size() - 1; ++j) { - os << pbr[i][j] << ", "; + if (!pbr[i].empty()) { + for (size_t j = 0; j + 1 < pbr[i].size(); ++j) { + os << pbr[i][j] << ", "; + } + os << detail::to_string(pbr[i].back()); } - os << detail::to_string(pbr[i].back()) << "}, "; + os << "}, "; } os << "{"; - for (size_t j = 0; j < pbr[2 * pbr.degree() - 1].size() - 1; ++j) { - os << pbr[2 * pbr.degree() - 1][j] << ", "; + if (!pbr[2 * pbr.degree() - 1].empty()) { + for (size_t j = 0; j + 1 < pbr[2 * pbr.degree() - 1].size(); ++j) { + os << pbr[2 * pbr.degree() - 1][j] << ", "; + } + os << detail::to_string(pbr[2 * pbr.degree() - 1].back()); } - os << detail::to_string(pbr[2 * pbr.degree() - 1].back()) << "}}"; + os << "}}"; return os; } @@ -649,6 +659,14 @@ } } } + for (size_t u = 0; u < n; ++u) { + if (!std::is_sorted(this->_vector.at(u).cbegin(), + this->_vector.at(u).cend())) { + LIBSEMIGROUPS_EXCEPTION("the adjacencies of vertex ", + detail::to_string(u).c_str(), + " are unsorted"); + } + } } size_t PBR::complexity() const { @@ -860,13 +878,17 @@ n, x); } - if (x < 0) { - v.push_back(static_cast<uint32_t>(n - x - 1)); - } if (x > 0) { v.push_back(static_cast<uint32_t>(x - 1)); } } + // We have to go backwards through the vector to add the negative entries, + // so that users can input those negative entries in the natural order + for (auto it = vec.rbegin(); it < vec.rend(); ++it) { + if (*it < 0) { + v.push_back(static_cast<uint32_t>(n - *it - 1)); + } + } out.push_back(v); } for (std::vector<int32_t> vec : right) { @@ -881,13 +903,15 @@ n, x); } - if (x < 0) { - v.push_back(static_cast<uint32_t>(n - x - 1)); - } if (x > 0) { v.push_back(static_cast<uint32_t>(x - 1)); } } + for (auto it = vec.rbegin(); it < vec.rend(); ++it) { + if (*it < 0) { + v.push_back(static_cast<uint32_t>(n - *it - 1)); + } + } out.push_back(v); } return out; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libsemigroups-1.3.1/src/report.cpp new/libsemigroups-1.3.2/src/report.cpp --- old/libsemigroups-1.3.1/src/report.cpp 2020-08-28 16:26:15.075331968 +0200 +++ new/libsemigroups-1.3.2/src/report.cpp 2020-10-02 14:24:21.282414776 +0200 @@ -119,7 +119,7 @@ } #endif _msg[tid] = wrap(_options[tid].prefix.length(), _msg[tid]); -#ifdef LIBSEMIGROUPS_ENABLE_FMT +#ifdef LIBSEMIGROUPS_FMT_ENABLED fmt::print(fg(_options[tid].color), _msg[tid]); #else std::cout << _msg[tid]; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libsemigroups-1.3.1/tests/test-element.cpp new/libsemigroups-1.3.2/tests/test-element.cpp --- old/libsemigroups-1.3.1/tests/test-element.cpp 2020-08-28 16:26:15.080197345 +0200 +++ new/libsemigroups-1.3.2/tests/test-element.cpp 2020-10-02 14:24:21.283036101 +0200 @@ -1286,18 +1286,18 @@ Element* z = new PBR({{-3, -2, -1, 1}, {-3, -2, 3}, {-3, 2, 3}}, {{-3, -2, -1, 3}, {-3, -2, -1, 3}, {-2, 2, 3}}); - Element* xx = new PBR({{5, 3}, - {5, 4, 3, 0, 1, 2}, - {5, 4, 3, 0, 2}, - {5, 3, 0, 1, 2}, - {5, 0, 2}, - {5, 4, 3, 1, 2}}); - Element* yy = new PBR({{5, 4, 3, 0}, - {5, 4, 2}, - {5, 1, 2}, - {5, 4, 3, 2}, - {5, 4, 3, 2}, - {4, 1, 2}}); + Element* xx = new PBR({{3, 5}, + {0, 1, 2, 3, 4, 5}, + {0, 2, 3, 4, 5}, + {0, 1, 2, 3, 5}, + {0, 2, 5}, + {1, 2, 3, 4, 5}}); + Element* yy = new PBR({{0, 3, 4, 5}, + {2, 4, 5}, + {1, 2, 5}, + {2, 3, 4, 5}, + {2, 3, 4, 5}, + {1, 2, 4}}); REQUIRE(*x == *xx); REQUIRE(*y == *yy); @@ -1324,25 +1324,25 @@ "002", "universal product", "[quick][element]") { - Element* x = new PBR({{5, 3}, - {5, 4, 3, 0, 1, 2}, - {5, 4, 3, 0, 2}, - {5, 3, 0, 1, 2}, - {5, 0, 2}, - {5, 4, 3, 1, 2}}); - Element* y = new PBR({{5, 4, 3, 0}, - {5, 4, 2}, - {5, 1, 2}, - {5, 4, 3, 2}, - {5, 4, 3, 2}, - {4, 1, 2}}); - - Element* z = new PBR({{5, 4, 3, 0}, - {5, 4, 2}, - {5, 1, 2}, - {5, 4, 3, 2}, - {5, 4, 3, 2}, - {4, 1, 2}}); + Element* x = new PBR({{3, 5}, + {0, 1, 2, 3, 4, 5}, + {0, 2, 3, 4, 5}, + {0, 1, 2, 3, 5}, + {0, 2, 5}, + {1, 2, 3, 4, 5}}); + Element* y = new PBR({{0, 3, 4, 5}, + {2, 4, 5}, + {1, 2, 5}, + {2, 3, 4, 5}, + {2, 3, 4, 5}, + {1, 2, 4}}); + + Element* z = new PBR({{0, 3, 4, 5}, + {2, 4, 5}, + {1, 2, 5}, + {2, 3, 4, 5}, + {2, 3, 4, 5}, + {1, 2, 4}}); z->redefine(x, y); Element* expected = new PBR({{0, 1, 2, 3, 4, 5}, @@ -1363,20 +1363,20 @@ "003", "product [bigger than previous]", "[quick][element]") { - Element* x = new PBR({{5, 3}, - {5, 4, 3, 0, 1, 2}, - {5, 4, 3, 0, 2}, - {5, 3, 0, 1, 2}, - {5, 0, 2}, - {5, 4, 3, 1, 2}, + Element* x = new PBR({{3, 5}, + {0, 1, 2, 3, 4, 5}, + {0, 2, 3, 4, 5}, + {0, 1, 2, 3, 5}, + {0, 2, 5}, + {1, 2, 3, 4, 5}, {}, {}}); - Element* y = new PBR({{5, 3}, - {5, 4, 3, 0, 1, 2}, - {5, 4, 3, 0, 2}, - {5, 3, 0, 1, 2}, - {5, 0, 2}, - {5, 4, 3, 1, 2}, + Element* y = new PBR({{3, 5}, + {0, 1, 2, 3, 4, 5}, + {0, 2, 3, 4, 5}, + {0, 1, 2, 3, 5}, + {0, 2, 5}, + {1, 2, 3, 4, 5}, {}, {6}}); x->redefine(y, y); @@ -1457,6 +1457,8 @@ PBR({{-4, -1}, {-3, -2, -1, 1, 2, 3}, {-3, -2, -1, 1, 3}}, {{-3, -1, 1, 2, 3}, {-3, 1, 3}, {-3, -2, -1, 2, 3}, {-1, -2}}), LibsemigroupsException); + + REQUIRE_THROWS_AS(PBR({{}, {2}, {1}, {3, 0}}), LibsemigroupsException); } template <typename T> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libsemigroups-1.3.1/tests/test-froidure-pin-pbr.cpp new/libsemigroups-1.3.2/tests/test-froidure-pin-pbr.cpp --- old/libsemigroups-1.3.1/tests/test-froidure-pin-pbr.cpp 2020-08-28 16:26:15.083216006 +0200 +++ new/libsemigroups-1.3.2/tests/test-froidure-pin-pbr.cpp 2020-10-02 14:24:21.283695247 +0200 @@ -38,24 +38,24 @@ "(pbrs)", "[quick][froidure-pin][pbr]") { auto rg = ReportGuard(REPORT); - std::vector<PBR> gens = {PBR({{5, 3}, - {5, 4, 3, 0, 1, 2}, - {5, 4, 3, 0, 2}, - {5, 3, 0, 1, 2}, - {5, 0, 2}, - {5, 4, 3, 1, 2}}), - PBR({{5, 4, 3, 0}, - {5, 4, 2}, - {5, 1, 2}, - {5, 4, 3, 2}, - {5, 4, 3, 2}, - {4, 1, 2}}), - PBR({{5, 4, 3, 0}, - {5, 4, 2}, - {5, 1, 2}, - {5, 4, 3, 2}, - {5, 4, 3, 2}, - {4, 1, 2}})}; + std::vector<PBR> gens = {PBR({{3, 5}, + {0, 1, 2, 3, 4, 5}, + {0, 2, 3, 4, 5}, + {0, 1, 2, 3, 5}, + {0, 2, 5}, + {1, 2, 3, 4, 5}}), + PBR({{0, 3, 4, 5}, + {2, 4, 5}, + {1, 2, 5}, + {2, 3, 4, 5}, + {2, 3, 4, 5}, + {1, 2, 4}}), + PBR({{0, 3, 4, 5}, + {2, 4, 5}, + {1, 2, 5}, + {2, 3, 4, 5}, + {2, 3, 4, 5}, + {1, 2, 4}})}; FroidurePin<PBR> S(gens); S.reserve(4); @@ -68,47 +68,47 @@ REQUIRE(S.position(*it) == pos); pos++; } - S.add_generators({PBR({{5, 4, 3}, - {5, 4, 2}, - {4, 2, 1}, - {5, 3, 0}, - {5, 3, 2, 1}, - {3, 1, 2}})}); + S.add_generators({PBR({{3, 4, 5}, + {2, 4, 5}, + {1, 2, 4}, + {0, 3, 5}, + {1, 2, 3, 5}, + {1, 2, 3}})}); REQUIRE(S.size() == 6); - S.closure({PBR({{5, 4, 3}, - {5, 4, 2}, - {4, 2, 1}, - {5, 3, 0}, - {5, 3, 2, 1}, - {3, 1, 2}})}); + S.closure({PBR({{3, 4, 5}, + {2, 4, 5}, + {1, 2, 4}, + {0, 3, 5}, + {1, 2, 3, 5}, + {1, 2, 3}})}); REQUIRE(S.size() == 6); - REQUIRE(S.minimal_factorisation(PBR({{5, 3}, - {5, 4, 3, 0, 1, 2}, - {5, 4, 3, 0, 2}, - {5, 3, 0, 1, 2}, - {5, 0, 2}, - {5, 4, 3, 1, 2}}) - * PBR({{5, 4, 3}, - {5, 4, 2}, - {4, 2, 1}, - {5, 3, 0}, - {5, 3, 2, 1}, - {3, 1, 2}})) + REQUIRE(S.minimal_factorisation(PBR({{3, 5}, + {0, 1, 2, 3, 4, 5}, + {0, 2, 3, 4, 5}, + {0, 1, 2, 3, 5}, + {0, 2, 5}, + {1, 2, 3, 4, 5}}) + * PBR({{3, 4, 5}, + {2, 4, 5}, + {1, 2, 4}, + {0, 3, 5}, + {1, 2, 3, 5}, + {1, 2, 3}})) == word_type({0, 0})); REQUIRE(S.minimal_factorisation(5) == word_type({3, 3})); REQUIRE(S.at(5) - == PBR({{5, 4, 3}, - {5, 4, 2}, - {4, 2, 1}, - {5, 3, 0}, - {5, 3, 2, 1}, - {3, 1, 2}}) - * PBR({{5, 4, 3}, - {5, 4, 2}, - {4, 2, 1}, - {5, 3, 0}, - {5, 3, 2, 1}, - {3, 1, 2}})); + == PBR({{3, 4, 5}, + {2, 4, 5}, + {1, 2, 4}, + {0, 3, 5}, + {1, 2, 3, 5}, + {1, 2, 3}}) + * PBR({{3, 4, 5}, + {2, 4, 5}, + {1, 2, 4}, + {0, 3, 5}, + {1, 2, 3, 5}, + {1, 2, 3}})); REQUIRE_THROWS_AS(S.minimal_factorisation(1000000000), LibsemigroupsException); pos = 0;
